计算机系统解密从理解计算机到编写高效代码
更新日期:2024-07-11 00:59:58
书店:文轩网旗舰店
出版时间:2021-09
浏览量:1094
价格:0.0¥

书籍下载

内容介绍

作  者:(美)乔纳森·E.斯坦哈特 著 张开元,张淼 译
定  价:129
出 版 社:机械工业出版社
出版日期:2021年09月01日
页  数:408
装  帧:平装
ISBN:9787111689874
主编推荐
许多程序员对使程序运行的底层技术并不熟悉。但是,如果希望程序运行良好,而不是充满了难以发现的bug,就要关心代码是如何正常运行的。谁都不希望自己因为代码安全问题而成为新闻的主角。网上有很多技术细节,但都没有整理或收集到一个方便的地方。在本书中,工程师Jonathan E. Steinhart深入探讨了计算机背后的基础概念,比如计算机硬件,软件在硬件上的行为,以及随着时间的推移,人们如何解决问题等主题。你将学到:- 现实世界是如何转换成计算机能理解的形式的,比如位、逻辑、数字、文本和颜色。- 组成等
目录
译者序
前言
致谢
作者简介
审校者简介
引言
章 计算机的内部语言
1.1 什么是语言
1.2 书面语言
1.3 比特
1.4 逻辑运算
1.4.1 布尔代数
1.4.2 德摩根定律
1.5 用比特表示整数
1.5.1 表示正数
1.5.2 二进制加法
1.5.3 表示负数
1.6 表示实数
1.6.1 定点表示法
1.6.2 浮点表示法
1.6.3 IEEE浮点标准
1.7 二进制编码的十进制系统
1.8 处理二进制数的简单方法
1.8.1 八进制表示法
1.8.2 十六进制表示法
1.8.3 表示语境
1.9 命名位组
1.10 表示文本
1.10.1 ASCII
1.10.2 其他标准的演变
1.10.3 UTF-8
1.11 用字符表示数字
1.11.1 可打印字符引用编码
1.11.2 Base编码
1.11.3 URL编码
1.12 表示颜色
1.12.1 增加透明度
1.12.2 编码颜色
1.13 本章小结
第2章 组合逻辑
2.1 数字计算机的案例
2.1.1 模拟和数字之间的区别
2.1.2 为什么尺寸对硬件很重要
2.1.3 数字使设备更加稳定
2.1.4 模拟世界中的数字
2.1.5 为什么使用位而不是数字
2.2 电学的简单入门
2.2.1 用管道理解电
2.2.2 电源开关
2.3 为位构建硬件
2.3.1 继电器
2.3.2 真空管
2.3.3 晶体管
2.3.4 集成电路
2.4 逻辑门
2.4.1 利用迟滞现象提高抗噪声能力
2.4.2 差分信号
2.4.3 传播延迟
2.4.4 输出的变化
2.5 构建更复杂的电路
2.5.1 制作加法器
2.5.2 制作解码器
2.5.3 制作多路输出选择器
2.5.4 制作选择器
2.6 本章小结
第3章 时序逻辑
3.1 表示时间
3.1.1 振荡器
3.1.2 时钟
3.1.3 锁存器
3.1.4 锁存器组成的门电路
3.1.5 触发器
3.1.6 计数器
3.1.7 寄存器
3.2 内存组织和寻址
3.2.1 随机存取存储器
3.2.2 只读存储器
3.3 块设备
3.4 闪存和固态磁盘驱动器
3.5 检错和纠错
3.6 硬件和软件
3.7 本章小结
第4章 计算机剖析
4.1 内存
4.2 输入输出
4.3 中央处理器
4.3.1 算术逻辑单元
4.3.2 移位寄存器
4.3.3 执行单元
4.4 指令集
4.4.1 指令
4.4.2 寻址方式
4.4.3 条件码指令
4.4.4 分支
4.4.5 终指令集
4.5 终设计
4.5.1 指令寄存器
4.5.2 数据通路和控制信号
4.5.3 流量控制
4.6 RISC和CISC指令集
4.7 图形处理单元
4.8 本章小结
第5章 计算机架构
5.1 基本架构元素
5.1.1 处理器核心
5.1.2 微处理器和微型计算机
5.2 过程、子程序和函数
5.3 堆栈
5.4 中断
5.5 相对寻址
5.6 内存管理单元
5.7 虚拟内存
5.8 系统和用户空间
5.9 存储器层次和性能
5.10 协处理器
5.11 在内存中排列数据
5.12 运行程序
5.13 内存功耗
5.14 本章小结
第6章 通信故障
6.1 低电平I/O
6.1.1 I/O端口
6.1.2 按下按钮
6.1.3 让灯光亮起
6.1.4 灯光,动作……
6.1.5 奇思妙想
6.1.6 2n种灰色
6.1.7 正交
6.1.8 并行通信
6.1.9 串行通信
6.1.10 捕捉一个波
6.1.11 通用串行总线
6.2 网络
6.2.1 现代局域网
6.2.2 因特网
6.3 数字世界中的模拟
6.3.1 数模转换
6.3.2 模数转换
6.3.3 数字音频
6.3.4 数字图像
6.3.5
人机界面设备
.1 终端
.2 图形终端
.3 矢量图
.4 光栅图
.5 键盘和鼠标
6.5 本章小结
第7章 组织数据
7.1 原始数据类型
7.2 数组
7.3 位图
7.4 字符串
7.5 复合数据类型
7.6 单链表
7.7 动态内存分配
7.8 更有效的内存分配
7.9 垃圾收集
7.10 双链表
7.11 层次数据结构
7.12 块存储
7.13 数据库
7.14 索引
7.15 移动数据
7.16 矢量I/O
7.17 面向对象存在的问题
7.18 排序
7.19 哈希算法
7.20 效率与性能
7.21 本章小结
第8章 语言处理
8.1 汇编语言
8.2 不错语言
8.3 结构化程序设计
8.4 词法分析
8.4.1 状态机
8.4.2 正则表达式
8.5 从单词到句子
8.6 每日语言俱乐部
8.7 语法树
8.8 解释器
8.9 编译器
8.10 优化
8.11 小心硬件
8.12 本章小结
第9章 Web浏览器
9.1 标记语言
9.2 统一资源定位符
9.3 HTML文档
9.4 文档对象模型
9.4.1 树结构解析
9.4.2 文档对象模型解释
9.5 串联样式表
9.6 XML和它的朋友们
9.7 JavaScript
9.8 jQuery
9.9 SVG
9.10 HTML5
9.11 JSON
9.12 本章小结
0章 应用程序和系统程序设计
10.1 猜动物程序版本1:HTML和JavaScript
10.1.1 应用程序级框架
10.1.2 Web页面主体
10.1.3 JavaScript程序
10.1.4 CSS
10.2 猜动物程序版本2:C语言
10.2.1 终端和命令行
10.2.2 构建程序
10.2.3 终端和设备驱动程序
10.2.4 上下文切换
10.2.5 标准I/O
10.2.6 循环缓冲区
10.2.7 通过合适的抽象实现更好的代码
10.2.8 一些技术细节
10.2.9 缓冲区溢出
10.2.10 C语言程序
10.2.11 训练
10.3 本章小结
1章 捷径和近似法
11.1 表格查找
11.1.1 转换
11.1.2 纹理映射
11.1.3 字符分类
11.2 整数方法
11.2.1 直线
11.2.2 曲线
11.2.3 多项式
11.3 递归细分
11.3.1 螺旋线
11.3.2 构造几何学
11.3.3 移位和屏蔽
11.4 更多地回避数学运算
11.4.1 幂级数近似
11.4.2 CORDIC算法
11.5 随机事物
11.5.1 空间填充曲线
11.5.2 L系统
11.5.3 随机
11.5.4 量化
11.6 本章小结
2章 死锁和竞态条件
12.1 竞态条件是什么
12.2 共享资源
12.3 进程和线程
12.4 锁
12.4.1 事务和粒度
12.4.2 等待锁
12.4.3 死锁
12.4.4 短期锁的实现
12.4.5 长期锁的实现
12.5 浏览器JavaScript
12.6 异步函数和承诺
12.7 本章小结
3章 安全性
13.1 安全和隐私概述
13.1.1 威胁模型
13.1.2 信任
13.1.3 物理安全
13.1.4 通信安全
13.1.5 现代社会
13.1.6 元数据和监控
13.1.7 社会背景
13.1.8 身份验证与授权
13.2 密码学
13.2.1 隐写术
13.2.2 替代密码
13.2.3 换位密码
13.2.4 更复杂的密码
13.2.5 一次一密
13.2.6 密钥交换问题
13.2.7 公钥密码
13.2.8 前向加密
13.2.9 加密哈希函数
13.2.10 数字签名
13.2.11 公钥基础设施
13.2.12 区块链
13.2.13 密码管理
13.3 软件卫生
13.3.1 保护好正确的东西
13.3.2 仔细检查你的逻辑
13.3.3 检查错误
13.3.4 小化攻击面
13.3.5 待在界内
13.3.6 生成合适的随机数是有难度的
13.3.7 了解代码
13.3.8 极端聪明是你的敌人
13.3.9 明白什么是可见的
13.3.10 不要过度收集
13.3.11 不要一直存储
13.3.12 动态内存分配不是你的朋友
13.3.13 内存垃圾回收也不是你的朋友
13.3.14 数据作为代码
13.4 本章小结
4章 机器智能
14.1 概述
14.2 机器学习
14.2.1 贝叶斯
14.2.2 高斯
14.2.3 索贝尔
14.2.4 Canny
14.2.5 特征提取
14.2.6 神经网络
14.2.7 使用机器学习数据
14.3 人工智能
14.4 大数据
14.5 本章小结
5章 现实世界的考虑
15.1 价值主张
15.2 来龙去脉
15.2.1 短暂的历史
15.2.2 开源软件
15.2.3 创意共享
15.2.4 可移植性的兴起
15.2.5 软件包管理
15.2.6 容器
15.2.7 Java
15.2.8 Node.js
15.2.9 云计算
15.2.10 虚拟机
15.2.11 便携式设备
15.3 编程环境
15.3.1 你有工作经验吗
15.3.2 学会估计
15.3.3 调度项目
15.3.4 决策
15.3.5 与不同个性的人一起工作
15.3.6 了解职场文化
15.3.7 做出明智的选择
15.4 开发方法
15.5 项目设计
15.5.1 把想法写下来
15.5.2 快速原型发展法
15.5.3 接口设计
15.5.4 重用代码或编写自己的代码
15.6 项目开发
15.6.1 谈话
15.6.2 成年人与计算机的关系
15.6.3 终端和脚本
15. 文本编辑器
15.6.5 可移植的代码
15.6.6 源控制
15.6.7 测试
15.6.8 bug报告和跟踪
15.6.9 重构
15.6.10 维护
15.7 与时俱进
15.8 修复,不要再创造
15.9 本章小结
内容简介
本书分为三部分。分探讨了计算机硬件,包括内部语言、组合逻辑、顺序逻辑、组成原理、系统结构、通信接口等。第二部分研究了在硬件上运行的软件的行为和表现。第三部分涉及编程的艺术--与他人合作写出好的程序。