自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (90)
  • 收藏
  • 关注

原创 VS Code使用

VSCode代码缩进快捷键先选中需要缩进的代码块,然后使用下面的快捷键:Ctrl + [ 和 Ctrl + ]可以实现代码的向左移动或者向右移动。如果是macOS,对应快捷键如下:command + [ 和 command + ]...

2021-10-05 13:33:47 76

原创 LTE资源调度

物理层的上一层MAC层传下来的数据叫作传输块(TB,Transport Blocks),物理层以1ms的调度周期对TB进行处理,最终通过天线发射出去。物理层处理流程与典型通信系统发射机和接收机处理流程类似,具体到4G LTE中,对TB处理包括CRC、信道编码、交织(对抗衰落)、调制、层映射(MIMO)、资源映射等。这些参数物理层需要提前知道才能开工,这些参数都是由上一层MAC层决定的,基站中有一个资源调取器逻辑上属于MAC层,它从物理层获取一些关键信息(如无线信道质量),通过算法得出各种参数,再告诉

2021-03-21 15:23:44 31093 6

原创 Git学习笔记

sudo su 切换到root用户查看某个文件的修改记录git log [查看该分支提交记录]git log --stat [查看该分支详细提交记录,仅仅显示修改的文件名]git log filename [可以查看该文件的commit记录,不显示提交详情]git log -p filename [可以显示每次提交的diff]git blame filename [...

2020-03-03 13:53:56 145

转载 c++: size_type与 size_t一些概念

转载自:https://blog.csdn.net/lzx_bupt/article/details/6558566size_type:由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::...

2018-07-24 19:13:30 672

转载 GNU as汇编语法

转载自:http://www.cnblogs.com/elvalad/p/4248375.htmlGNU as汇编语法GNU汇编语法使用的是AT&T汇编它和Intel汇编的语法主要有以下一些不同:AT&T汇编中的立即操作数前面要加上'$',寄存器操作数名前要加上百分号'%',绝对跳转操作数前要加上'*',Intel的语法均不包含这些符号;AT&T语法与Intel语法中使用的

2018-02-02 20:21:49 6375 1

转载 异或的性质及运用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。性质1、交换律2、结合律(即(a^b)^c == a^(b^c))3

2018-01-14 14:31:09 1194

《妙趣横生的算法(C语言实现)》(杨峰 编著)

《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。可以使读者开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力。 目录: 第1部分 基础篇 第1章 数据结构基础 1.1 什么是数据结构 1.2 顺序表 1.2.1 顺序表的定义 1.2.2 向顺序表中插入元素 1.2.3 从顺序表中删除元素 1.2.4 实例与分析 1.3 链表 1.3.1 创建一个链表 1.3.2 向链表中插入结点 1.3.3 从链表中删除结点 1.3.4 销毁一个链表 1.3.5 实例与分析 1.4 栈 1.4.1 栈的定义 1.4.2 创建一个栈 1.4.3 入栈操作 1.4.4 出栈操作 1.4.5 栈的其他操作 1.4.实例与分析 1.5 队列 1.5.1 队列的定义 1.5.2 创建一个队列 1.5.3 入队列操作 1.5.4 出队列操作 1.5.5 销毁一个队列 1.5.6 循环队列的概念 1.5.7 循环队列的实现 1.5.8 实例与分析 1.6 树结构 1.6.1 树的概念 1.6.2 树结构的计算机存储形式 1.6.3 二叉树的定义 1.6.4.二叉树的遍历 1.6.5 创建二叉树 1.6.6 实例与分析 1.7 图结构 1.7.1 图的概念 1.7.2 图的存储形式 1.7.3 邻接表的定义 1.7.4.图的创建 1.7.5 图的遍历(1)——深度优先搜索 1.7.6 图的遍历(2)——广度优先搜索 1.7.7 实例与分析 第2章 常用的查找与排序方法 2.1 顺序查找 2.2 折半查找 2.3 排序的概述 2.4 直接插入排序 2.5 选择排序 2.6 冒泡排序 2.7 希尔排序 2.8 快速排序 第3章 常用的算法思想 3.1 什么是算法 3.2 算法的分类表示及测评 3.2.1 算法的分类 3.2.2 算法的表示 3.2.3 算法性能的测评 3.3 穷举法思想 3.3.1 基本概念 3.3.2 寻找给定区间的素数 3.3.3 TOM的借书方案 3.4 递归与分治思想 3.4..1 基本概念 3.4.2 计算整数的划分数 3.4.3 递归的折半查找算法 3.5 贪心算法思想 3.5.1 基本概念 3.5.2 最优装船问题 3.6 回溯法 3.6.1 基本概念 3.6.2 四皇后问题求解 3.7 数值概率算法 3.7.1 基本概念 3.7.2 计算定积分 第2部分 编程实例解析 第4章 编程基本功 4.1 字符类型统计器 4.2 计算字符的ASCII码 4.3 嵌套if.else语句的妙用 4.4 基于switch语句的译码器 4.5 判断闰年 4.6 指针变量作参数 4.7 矩阵的转置运算 4.8 矩阵的乘法运算 4.9 巧用位运算 4.10 文件的读写 4.11 计算文件的大小 4.12 记录程序的运行时间 4.13 十进制/二进制转化器 4.14 打印特殊图案 4.15 打印杨辉三角 4.16 复杂级数的前n项和 4.17 寻找矩阵中的“鞍点” 4.18 n阶勒让德多项式求解 4.19 递归反向输出字符串 4.20 一年中的第几天 第5章 数学趣题(一) 5.1 舍罕王的失算 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 常胜将军 5.15 求兀的近似值 5.16 魔幻方阵 5.17 移数字游戏 5.18 数字的全排列 5.19 完全数 5.20 亲密数 5.21 数字翻译器 5.22 递归实现数制转换 5.23 谁在说谎 第6章 数学趣题(二) 6.1 连续整数固定和问题 6.2 表示成两个数的平方和 6.3 具有特殊性质的数 6.4 验证角谷猜想 6.5 验证四方定理 6.6 递归法寻找最小值 6.7 寻找同构数 6.8 验证尼科彻斯定理 6.9 三重回文数字 6.10 马克思手稿中的数学题 6.11 渔夫捕鱼问题 6.12 寻

2018-01-22

《算法新解》(刘新宇 编著)

《算法新解》同时用函数式方法和传统方法介绍了主要的基本算法和数据结构,数据结构部分包括二叉树、红黑树、AVL树、Trie、Patricia、后缀树、B树、二叉堆、二项式堆、斐波那契堆、Pairing堆、队列、序列等;基本算法部分包括各种排序算法、序列搜索算法,字符串匹配算法(KMP等),深度优先、广度有限搜索算法、贪心算法以及动态规划。 伪代码与多语言实现并存,充分发挥语言特性理论与实例结合,轻松学习算法与数据结构内含ACM竞赛趣题和传统趣题,发现算法的乐趣七年磨一剑,亚马逊中国高级研发人员重磅力作。 刘新宇,1999年和2001年分别获得清华大学自动化系学士和硕士学位,之后长期从事软件研发工作。他关注基本算法和数据结构,尤其是函数式算法,目前就职于亚马逊中国仓储和物流技术团队。

2018-01-22

《计算机网络自顶向下方法(原书第6版)》(James F.Kurose[美]、Keith W.Ross[美] 著,陈鸣 译)

库罗斯、罗斯编著的《计算机网络:自顶向下方法(原书第6版)》是当前世界上*为流行的计算机网络教科书之一,采用作者独创的自顶向下方法讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下讲解,让读者从实现、应用的角度明白各层的意义,强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和“创造”。 本书第1—6章适合作为高等院校计算机、电子工程等相关专业本科生“计算机网络”课程的教材,第7—9章可用于硕士研究生“高级计算机网络”课程教学。对网络从业者、有一定网络基础的人员甚至专业网络研究人员,本书也是一本优秀的参考书。 目录: 出版者的话 作译者简介 译者序 前言 第1章 计算机网络和因特网  1.1 什么是因特网   1.1.1 具体构成描述   1.1.2 服务描述   1.1.3 什么是协议  1.2 网络边缘   1.2.1 接入网   1.2.2 物理媒体  1.3 网络核心   1.3.1 分组交换   1.3.2 电路交换   1.3.3 网络的网络  1.4 分组交换网中的时延、丢包和吞吐量   1.4.1 分组交换网中的时延概述   1.4.2 排队时延和丢包   1.4.3 端到端时延   1.4.4 计算机网络中的吞吐量  1.5 协议层次及其服务模型   1.5.1 分层的体系结构   1.5.2 封装  1.6 面对攻击的网络  1.7 计算机网络和因特网的历史   1.7.1 分组交换的发展:1961~1972   1.7.2 专用网络和网络互联:1972~1980   1.7.3 网络的激增:1980~1990   1.7.4 因特网爆炸:20世纪90年代   1.7.5 最新发展  1.8 小结  课后习题和问题   复习题   习题  Wireshark实验  人物专访 第2章 应用层  2.1 应用层协议原理   2.1.1 网络应用程序体系结构   2.1.2 进程通信   2.1.3 可供应用程序使用的运输服务   2.1.4 因特网提供的运输服务   2.1.5 应用层协议   2.1.6 本书涉及的网络应用  2.2 Web和HTTP   2.2.1 HTTP概况   2.2.2 非持续连接和持续连接   2.2.3 HTTP报文格式   2.2.4 用户与服务器的交互:cookie   2.2.5 Web缓存   2.2.6 条件GET方法  2.3 文件传输协议:FTP  2.4 因特网中的电子邮件   2.4.1 SMTP   2.4.2 与HTTP的对比   2.4.3 邮件报文格式和MIME   2.4.4 邮件访问协议  2.5 DNS:因特网的目录服务   2.5.1 DNS提供的服务   2.5.2 DNS工作机理概述   2.5.3 DNS记录和报文  2.6 P2P应用   2.6.1 P2P文件分发   2.6.2 分布式散列表  2.7 TCP套接字编程   2.7.1 UDP套接字编程   2.7.2 TCP套接字编程  2.8 小结  …… 第3章 运输层 第4章 网络层 第5章 链路层:链路、接入网和局域网 第6章 无线网络和移动网络 第7章 多媒体网络 第8章 计算机网络中的安全 第9章 网络管理 参考文献

2018-01-19

《深入理解C++11:C++11新特性解析与应用》(Michael Wong[加]、IBM XL编译器中国开发团队 编著)

《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。 目录: 免责声明 序 前言 第1章 新标准的诞生 1.1 曙光:c++11标准的诞生 1.1.1 c++11/c++0x(以及c11/c1x)—新标准诞生 1.1.2 什么是c++11/c++0x 1.1.3 新c++语言的设计目标 1.2 今时今日的c++ 1.2.1 c++的江湖地位 1.2.2 c++11语言变化的领域 1.3 c++11特性的分类 1.4 c++特性一览 1.4.1 稳定性与兼容性之间的抉择 1.4.2 更倾向于使用库而不是扩展语言来实现特性 1.4.3 更倾向于通用的而不是特殊的手段来实现特性 1.4.4 专家新手一概支持 1.4.5 增强类型的安全性 1.4.6 与硬件紧密合作 1.4.7 开发能够改变人们思维方式的特性 1.4.8 融入编程现实 1.5 本书的约定 1.5.1 关于一些术语的翻译 1.5.2 关于代码中的注释 1.5.3 关于本书中的代码示例与实验平台 第2章 保证稳定性和兼容性 2.1 保持与c99兼容 2.1.1 预定义宏 2.1.2 __func__预定义标识符 2.1.3 _pragma操作符 2.1.4 变长参数的宏定义以及__va_args__ 2.1.5 宽窄字符串的连接 2.2 long long整型 2.3 扩展的整型 2.4 宏__cplusplus 2.5 静态断言 2.5.1 断言:运行时与预处理时 2.5.2 静态断言与static_assert 2.6 noexcept修饰符与noexcept操作符 2.7 快速初始化成员变量 2.8 非静态成员的sizeof 2.9 扩展的friend语法 2.10 final/override控制 2.11 模板函数的默认模板参数 2.12 外部模板 2.12.1 为什么需要外部模板 2.12.2 显式的实例化与外部模板的声明 2.13 局部和匿名类型作模板实参 2.14 本章小结 第3章 通用为本,专用为末 3.1 继承构造函数 3.2 委派构造函数 3.3 右值引用:移动语义和完美转发 3.3.1 指针成员与拷贝构造 3.3.2 移动语义 3.3.3 左值、右值与右值引用 3.3.4 std::move:强制转化为右值 3.3.5 移动语义的一些其他问题 3.3.6 完美转发 3.4 显式转换操作符 3.5 列表初始化 3.5.1 初始化列表 3.5.2 防止类型收窄 3.6 pod类型 3.7 非受限联合体 3.8 用户自定义字面量 3.9 内联名字空间 3.10 模板的别名 3.11 一般化的sfinea规则 3.12 本章小结 第4章 新手易学,老兵易用 4.1 右尖括号>的改进 4.2 auto类型推导 4.2.1 静态类型、动态类型与类型推导 4.2.2 auto的优势 4.2.3 auto的使用细则 4.3 decltype 4.3.1 typeid与decltype 4.3.2 decltype的应用 4.3.3 decltype推导四规则 4.3.4 cv限制符的继承与冗余的符号 4.4 追踪返回类型 4.4.1 追踪返回类型的引入 4.4.2 使用追踪返回类型的函数 4.5 基于范围的for循环 4.6 本章小结 第5章 提高类型安全 5.1 强类型枚举 5.1.1 枚举:分门别类与数值的名字 5.1.2 有缺陷的枚举类型 5.1.3 强类型枚举以及c++11对原有枚举类型的扩展 5.2 堆内存管理:智能指针与垃圾回收 5.2.1 显式内存管理 5.2.2 c++11的智能指针 5.2.3 垃圾回收的分类 5.2.4 c++与垃圾回收 5.2.5 c++11与最小垃圾回收支持 5.2.6 垃圾回收的兼容性 5.3 本章小结 第6章 提高性能及操作硬件的能力 6.1 常量表达式 6.1.1 运行时常量性与编译时常量性 6.1.2 常量表达式函数 6.1.3 常量表达式值 6.1.4 常量表达式的其他应用 6.2 变长模板 6.2.1 变长函数和变长的模板参数 6.2.2 变长模板:模板参数包和函数参数包 6.2.3 变长模板:进阶 6.3 原子类型与原子操作 6.3.1 并行编程、多线程与c++11 6.3.2 原子操作与c++11原子类型 6.3.3 内存模型,顺序一致性与memory_order 6.4 线程局部存储 6.5 快速退出:quick_exit与at_quick_exit 6.6 本章小结 第7章 为改变思考方式而改变 7.1 指针空值—nullptr 7.1.1 指针空值:从0到null,再到nullptr 7.1.2 nullptr和nullptr_t 7.1.3 一些关于nullptr规则的讨论 7.2 默认函数的控制 7.2.1 类与默认函数 7.2.2 “= default”与“= deleted” 7.3 lambda函数 7.3.1 lambda的一些历史 7.3.2 c++11中的lambda函数 7.3.3 lambda与仿函数 7.3.4 lambda的基础使用 7.3.5 关于lambda的一些问题及有趣的实验 7.3.6 lambda与stl 7.3.7 更多的一些关于lambda的讨论 7.4 本章小结 第8章 融入实际应用 8.1 对齐支持 8.1.1 数据对齐 8.1.2 c++11的alignof和alignas 8.2 通用属性 8.2.1 语言扩展到通用属性 8.2.2 c++11的通用属性 8.2.3 预定义的通用属性 8.3 unicode支持 8.3.1 字符集、编码和unicode 8.3.2 c++11中的unicode支持 8.3.3 关于unicode的库支持 8.4 原生字符串字面量 8.5 本章小结 附录a c++11对其他标准的不兼容项目 附录b 弃用的特性 附录c 编译器支持 附录d 相关资源 ——《豆瓣读书》

2018-01-19

《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

本书重点:探索“对象导向程序所支持的C++对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。 C++成山似海的书籍堆中,这一本不是婴幼儿奶粉,也不是较大婴儿奶粉,它是成人专用的低脂高钙特殊奶粉。 对于C++底层机制感兴趣的读者,这本书会给你“漫卷诗书喜欲狂”的感觉。 了解C++ Object Model,是学习Component ObjectModel的最短路线。 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象(Object Lessons) 加上封装后的布局成本(Layout Costs for Adding Encapsulation) 1.1 C++模式模式(The C++ Object Model) 简单对象模型(A Simple Object Model) 表格驱动对象模型(A Table-driven Object Model) C++对象模型(The C++ Object Model) 对象模型如何影响程序(How the Object Model Effects Programs) 1.2 关键词所带来的差异(A Keyword Distinction) 关键词的困扰 策略性正确的struct(The Politically Correct Struct) 1.3 对象的差异(An Object Distinction) 指针的类型(The Type of a Pointer) 加上多态之后(Adding Polymorphism) 第2章 构造函数语意学(The Semantics of constructors) 2.1 Default Constructor的建构操作 “带有Default Constructor”的Member Class Object “带有Default Constructor”的Base Class “带有一个Virual Function”的Class “带有一个virual Base class”的Class 总结 2.2 Copy Constructor的建构操作 Default Memberwise Initialization Bitwise Copy Semantics(位逐次拷贝) 不要Bitwise Copy Semantics! 重新设定的指针Virtual Table 处理Virtual Base Class Subobject 2.3 程序转换语意学(Program Transformation Semantics) 明确的初始化操作(Explicit Initialization) 参数的初始化(Argument Initialization) 返回值的初始化(Return Value Initialization) 在使用者层面做优化(Optimization at the user Level) 在编译器层面做优化(Optimization at the Compiler Level) Copy Constructor:要还是不要? 摘要 2.4 成员们的初始化队伍(Member Initialization List) 第3章 Data语意学(The Semantics of Data) 3.1 Data Member的绑定(The Binding of a Data Member) 3.2 Data Member的布局(Data Member Layout) 3.3 Data Member的存取 Static Data Members Nonstatic Data Member 3.4 “继承”与Data Member 只要继承不要多态(Inheritance without Polymorphism) 加上多态(Adding Polymorphism) 多重继承(Multiple Inheritance) 虚拟继承(Virtual Inheritance) 3.5 对象成员的效率(Object Member Efficiency) 3.6 指向Data Members的指针(Pointer to Data Members) “指向Members的指针”的效率问题 第4章 Function语意学(The Semantics of Function) 4.1 Member的各种调用方式 Nonstatic Member Functions(非静态成员函数) Virtual Member Functions(虚拟成员函数) Static Member Functions(静态成员函数) 4.2 Virtual Member Functions(虚拟成员函数) 多重继承下的Virtual Functions 虚拟继承下的Virtual Functions 4.3 函数的效能 4.4 指向Member Functions的指针(Pointer-to-Member Functions) 支持“指向Virtual Member Functions”之指针 在多重继承之下,指向Member Functions的指针 “指向Member Functions之指针”的效率 4.5 Inline Functions 形式对数(Formal Arguments) 局部变量(Local Variables) 第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,andCopy) 纯虚拟函数的存在(Presence of a Pure Virtual Function) 虚拟规格的存在(Presence of a Virtual Specification) 虚拟规格中const的存在 重新考虑class的声明 5.1 无继承情况下的对象构造 抽象数据类型(Abstract Data Type) 为继承做准备 5.2 继承体系下的对象构造 虚拟继承(Virtual Inheritance) 初始化语意学(The Semantics of the vptr Initialization) 5.3 对象复制语意学(Object Copy Semantics) 5.4 对象的功能(Object Efficiency) 5.5 解构语意学(Semantics of Destruction) 第6章 执行期语意学(Runting Semantics) 6.1 对象的构造和解构(Object Construction and Destruction) 全局对象(Global Objects) 局部静态对象(Local Static Objects) 对象数组(Array of Objects) Default Constructors和数组 6.2 new和delete运算符 针对数组的new语意 Placement Operator new的语意 6.3 临时性对象(Temporary Objects) 临时性对象的迷思(神话、传说) 第7章 站在对象模型的类端(On the Cusp of the Object Model) 7.1 Template Template的“具现”行为(Template Instantiation) Template的错误报告(Error Reporting within a Template) Template中的名称决议方式(Name Resolution within a Template) Member Function的具现行为(Member Function Instantiation) 7.2 异常处理(Exception Handling) Exception Handling快速检阅 对Exception Handling的支持 7.3 执行期类型识别(Runtime Type Identification,RTTI) Type-Safe Downcast(保证安全的向下转型操作) Type-Safe Dynamic Cast(保证安全的动态转型) References并不是Pointers Typeid运算符 7.4 效率有了,弹性呢? 动态共享函数库(Dynamic Shared Libraries) 共享内存(Shared Memory)

2018-01-19

《面向对象的C++数据结构算法实现与解析》(高一凡 编著)

《面向对象的C++数据结构算法实现与解析》是采用面向对象的c++语言数据结构教材的学习辅导书,主要内容包括采用c++语言的类、模板、虚函数、友元、友类编写的各种主要数据存储结构的算法、基本操作成员函数、调用这些成员函数的主程序和程序运行结果以及各主要数据存储结构的图示。《面向对象的C++数据结构算法实现与解析》还介绍了STL模板的应用。《面向对象的C++数据结构算法实现与解析》结合存储结构和算法,配合大量的图示,对于一些较难理解的算法,还配有文字说明。《面向对象的C++数据结构算法实现与解析》所有程序均在计算机上运行通过,《面向对象的C++数据结构算法实现与解析》适用于高等学校学生和自学者,同时也是很好的考研参考书。 目录: 第1章线性表  1.1顺序存储结构  1.2链式存储结构   1.2.1单链表   1.2.2单循环链表   1.2.3向循环链表   1.2.4不设头结点的链表。  1.3静态链表存储结构 第2章栈和队列  2.1栈   2.1.1栈的顺序存储结构   2.1.2栈的链式存储结构  2.2栈的应用与递归   2.2.1数制转换   2.2.2表达式求值   2.2.3汉诺塔问题与递归的实现   2.2.4迷宫问题   2.2.5皇后问题   2.2.6马踏棋盘问题   2.2.7背包问题  2.3队列   2.3.1队列的链式存储结构   2.3.2队列的顺序存储结构  2.4队列的应用——排队和排队机的模拟 第3章字符串和矩阵  3.1字符串   3.1.1字符串的按需(堆)存储结构   3.1.2字符串的模式匹配算法  3.2矩阵   3.2.1多维数组的顺序存储结构   3.2.2矩阵的压缩存储 第4章树与二叉树  4.1二叉树的顺序存储结构  4.2二叉树的链式存储结构  4.3二叉树的遍历  4.4线索二叉树  4.5二叉排序树  4.6平衡二叉树  4.7红黑树  4.8伸展树  4.9树的存储结构  4.10赫夫曼树和赫夫曼编码 第5章图  5.1图的邻接矩阵存储结构  5.2图的邻接表存储结构  5.3图的深度优先遍历和广度优先遍历  5.4图的应用   5.4.1无向图的连通分量和生成树   5.4.2最小生成树   5.4.3关节点和重连通分量   5.4.4拓扑排序和关键路径   5.4.5最短路径 第6章查找  6.1静态查找表  6.2静态树表  6.3哈希表的插入、删除及查找  6.4动态查找表   6.4.1 b树   6.4.2 键树 第7章内部排序  7.1插入排序  7.2冒泡排序  7.3简单选择排序  7.4希尔排序  7.5快速排序  7.6堆排序  7.7二路归并排序  7.8静态链表排序  7.9基数排序 第8章外部排序  8.1多路平衡归并  8.2置换-选择排序 第9章动态存储管理  9.1边界标识法  9.2伙伴系统 参考文献

2018-01-19

《高质量程序设计指南:C/C++语言(第3版)》(林锐、韩永泉 编著)

《高质量程序设计指南:C++、C语言》(第3版)以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范。它是作者多年从事软件开发工作的经验总结。《高质量程序设计指南:C++、C语言》(第3版)共17章,第1章到第4章重点介绍软件质量和基本的程序设计方法;第5章到第16章重点阐述 C++/C编程风格、面向对象程序设计方法和一些技术专题;第17章阐述STL 的原理和使用方法。《高质量程序设计指南:C++、C语言》(第3版)第1版和第2版部分章节曾经在Internet上广泛流传,被国内IT企业的不少软件开发人员采用。《高质量程序设计指南:C++、C语言》(第3版)的附录C《大学十年》是作者在网上发表的一个短篇传记,文中所描述的充满激情的学习和生活态度,感染了大批莘莘学子。 第1章 高质量软件开发之道 1.1 软件质量基本概念 1.1.1 如何理解软件的质量 1.1.2 提高软件质量的基本方法 1.1.3 “零缺陷”理念 1.2 细说软件质量属性 1.2.1 正确性 1.2.2 健壮性 1.2.3 可靠性 1.2.4 性能 1.2.5 易用性 1.2.6 清晰性 1.2.7 安全性 1.2.8 可扩展性 1.2.9 兼容性 1.2.10 可移植性 1.3 人们关注的不仅仅是质量 1.3.1 质量、生产率和成本之间的关系 1.3.2 软件过程改进的基本概念 1.4 高质量软件开发的基本方法 1.4.1 建立软件过程规范 1.4.2 复用 1.4.3 分而治之 1.4.4 优化与折中 1.4.5 技术评审 1.4.6 测试 1.4.7 质量保证 1.4.8 改错  1.5 关于软件开发的些常识和思考 1.5.1 有最好的编程语言吗 1.5.2 编程是一门艺术吗 1.5.3 编程时应该多使用技巧吗 1.5.4 换更快的计算机还是换更快的算法 1.5.5 错误是否应该分等级 1.5.6 一些错误的观念 1.6 小结 第2章 编程语言发展简史 2.1 编程语言大事记 2.2 Ada的故事 2.3 C/C++发展简史 2.4 Borland与Microsorft之争 2.5 Java阵营与MicrosoR的较量 2.6 小结 第3章 程序的基本概念 3.1 程序设计语言 3.2 语言实现 3.3 程序库 3.4 开发环境 3.5 程序的工作原理 3.6 良好的编程习惯 第4章 C++/C程序设计入门 4.1 C++/C程序的基本概念 4.1.1 启动函数maino 4.1.2 命令行参数 4.1.3 内部名称 4.1.4 连接规范 4.1.5 变量及其初始化 4.1.6 CRuntime Library 4.1.7 编译时和运行时的不同 4.1.8 编译单元和独立编译技术 4.2 基本数据类型和内存映像 4.3 类型转换 4.3.1 隐式转换 4.3.2 强制转换  4.4 标识符  4.5 转义序列 4.6 运算符 4.7 表达式 4.8 基本控制结构 4.9 选择(判断)结构 …… 第5章 C++/C常量 第6章 C++/C函数设计基础 第7章 C++/C指针、数控和字符串 第8章 C++/C高级数据类型 第9章 C++/C编译预处理 第10章 C++/C文件结构和程序版式 第11章 C++/C应用程序命名规划 第12章 C++面向对象程序设计方法概述 第13章 对象的初始化、拷贝和析构 第14章 C++函数的高级特性 第15章 C++异常处理和RTTI 第16章 内存管理 第17章 学习和使用STL 附录A C++/C试题 附录B C++/C试题答案与评分标准 附录C 大学十年 附录D 《大学十年》后记 附录E 术语与缩写解释 参考文献

2018-01-19

《泛型编程与STL》(Matthew H. Austern[美] 著,侯捷 译)

《泛型编程与STL》阐述了泛型编程的中心思想:concepts、modeling、refinement,并为你展示这些思想如何导出STL的基础概念:iterators、containers、functionobjects.循此路线,你可以把STL想像为一个由concepts组成的程序库。你将学习真正式结构并因此获得其潜在威力所带来的完整优势。

2018-01-19

《Effective C++中文版(第三版)》(Scott Meyers[美] 著,侯捷 译)

Effective C++:改善程序与设计的55个具体做法》(中文版)(第3版)一共组织55个准则,每一条准则描述一个编写出更好的C++的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。 《Effective C++》的重要特征包括: ·高效的 classes、functions、templates 和inheritance hierarchies(继承体系)方面的专家级指导。 ·崭新的 TR1 标准程序库功能应用,以及与既有标准程序库组件的比较。 ·洞察 C++和其他语言(例如Java、C#、C)之间的不同。此举有助于那些来自其他语言阵营的开发人员消化吸收 C++ 式的各种解法。 ——《豆瓣读书》

2018-01-19

《C++程序设计原理与实践》(Bjarne Stroustrup[美] 著,王刚 等 译)

本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。 Bjarne Stroustrup 英国剑桥大学计算机科学博士,C++的设计者和最初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了ACM的 Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他在AT&T贝尔实验室工作,是ISO C++标准委员会的创始人之一。 目录: 前言 第0章 致读者 第1章 计算机、人与程序设计 第一部分 基本知识 第2章 Hello,World! 第3章 对象、类型和值 第4章 计算 第5章 错误 第6章 编写一个程序 第7章 完成一个程序 第8章 函数相关的技术细节 第9章 类相关的技术细节 第二部分 输入和输出 第10章 输入/输出流 第11章 定制输入/输出 第12章 一个显示模型 第13章 图形类 第14章 设计图形类 第15章 绘制函数图和数据图 第16章 图形用户界面 第三部分 数据结构和算法 第17章 向量和自由空间 第18章 向量和数组 第19章 向量、模板和异常 第20章 容器和迭代器 第21章 算法和映射 第四部分 拓宽视野 第22章 理念和历史 第23章 文本处理 第24章 数值计算 第25章 嵌入式系统程序设计 第26章 测试 第27章 C语言 术语表 参考书目 第五部分 附录? 附录A C++语言概要 附录B 标准库概要 附录C Visual Studio简要入门教程 附录D 安装FLTK 附录E GUI实现

2018-01-19

《C++编程思想(第1卷)(第2版)》(Bruce Eckel[美] 著,刘宗田 等 译)

《C++编程思考》第2版与第1版相比,在章节安排上有以下改变。增加了两章:“对象的创建与使用”和“C++中的C”,前者与“对象导言”实际上是第1版“对象的演化”一章的彻底重写,增加了近几年面向对象方法和编程方法的最瓣研究与实践的有效成果,后者的添加使不熟悉C的读者可以直接使用这本书。删去了四章:“输入输出流介绍”、“多重继承”、“异常处理”和“运行时类型识别”,删去的内容属于C++中较复杂的主题,作者将它们连同C++标准完成后又增加的一些内容放到第2卷中,使得第1卷的内容更加集中,供不同程度的读者选择阅读。需要强调的是,第2版的改变不仅体现在这些章节的调整上,更多的改变体现在每一章的字里行间中,包括例子的调整和练习的补充。与众不同的精心选材和认真推敲的叙述使得第2版更趋成熟。这本书是C++领域的一本权威著作,书中的内容、讲授方法、选用例子和跟随练习既适合课堂教学,又适合读者自学。 目录: 第一章 对象导言 第二章 对象的创建于使用 第三章 C++中的C 第四章 数据抽象 第五章 隐藏实现 第六章 初始化与清除 第七章 函数重载于默认参数 第八章 常量 第九章 内联函数 第十章 名字控制 ——《豆瓣读书》

2018-01-19

《C++ Primer 中文版(第 5 版)习题集》(Stanley B. Lippman[美] 等 著,王刚 等 译)

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。非常难能可贵的是,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在 C++ 领域的权威地位更加不可动摇。无论是初学者入门,或是中、高级程序员提升,本书均为不容置疑的首选。 ——《豆瓣读书》

2018-01-19

《C++ Primer中文版(第3版)》(Stanley B. Lippman[美]、Josee Lajoie[美] 著,潘爱民、张丽 译)

C++ Primer结合了Stanley Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C++的深入理解,此第三版被重新改写,以便更加精确地讲述标准C++的特性和用法。对于C++初学者特别有价值的是一些来自真实世界中的程序例子,它们说明了泛型程序(generic program)的设计、面向对象程序的设计、模板的用法,以及使用标准C++进行程序设计的方方面面,并且在适当的地方还讲到一些习惯用法以及效率指导。 目录: 译序 前言 第一篇 C++概述 第一章 开始 第二章 C++浏览 第二篇 基本语言 第三章 C++数据类型 第四章 表达式 第五章 语句 …… 第三篇 基于过程的程序设计 第七章 函数 第八章 域和生命期 …… 第四篇 基于对象的程序设计 第十三章 类 第十四章 类的初始化、赋值和析构 …… 第五篇 面向对象的程序设计 第十七章 类继承和子类型 …… 英汉对照索引 ——《豆瓣读书》

2018-01-19

《C++编程思想》(Bruce Eckel[美] 著,刘宗田 等 译)

目录: 第1章 对象的演化 1.1基本概念 1.1.1对象:特性十行为 1.1.2继承:类型关系 1.1.3多态性 1.1.4操作概念:OOP程序像什么 1.2为什么C++会成功 1.2.1较好的C 1.2.2采用渐进的学习方式 1.2.3运行效率 1.2.4系统更容易表达和理解 1.2.5“库”使你事半功倍 1.2.6错误处理 1.2.7大程序设计 1.3方法学介绍 1.3.1复杂性 1.3.2内部原则 1.3.3外部原则 1.3.4对象设计的五个阶段 1.3.5方法承诺什么 1.3.6方法应当提供什么 1.4起草:最小的方法 1.4.1前提 1.4.2高概念 1.4.3论述(treatment) 1.4.4结构化 1.4.5开发 1.4.6重写 1.4.7逻辑 1.5其他方法 1.5.1Booch 1.5.2责任驱动的设计(RDD) 1.5.3对象建模技术(OMT) 1.6为向OOP转变而采取的策略 1.6.1逐步进入OOP 1.6.2管理障碍 1.7小结 第2章 数据抽象 2.1声明与定义 2.2一个袖珍C库 2.3放在一起:项目创建工具 2.4什么是非正常 2.5基本对象 2.6什么是对象 2.7抽象数据类型 2.8对象细节 2.9头文件形式 2.10嵌套结构 2.11小结 2.12练习 第3章 隐藏实现 3.1设置限制 3.2C++的存取控制 3.3友元 3.3.1嵌套友元 3.3.2它是纯的吗 3.4对象布局 3.5类 3.5.1用存取控制来修改stash 3.5.2用存取控制来修改stack 3.6句柄类(handleclasses) 3.6.1可见的实现部分 3.6.2减少重复编译 3.7小结 3.8练习 第4章 初始化与清除 4.1用构造函数确保初始化 4.2用析构函数确保清除 4.3清除定义块 4.3.1for循环 4.3.2空间分配 4.4含有构造函数和析构函数的stash 4.5含有构造函数和析构函数的stack 4.6集合初始化 4.7缺省构造函数 4.8小结 4.9练习 第5章 函数重载与缺省参数 5.1范围分解 5.1.1用返回值重载 5.1.2安全类型连接 5.2重载的例子 5.3缺省参数 5.4小结 5.5练习 第6章 输入输出流介绍 6.1为什么要用输入输出流 6.2解决输入输出流问题 6.2.1预先了解操作符重载 6.2.2插入符与提取符 6.2.3通常用法 6.2.4面向行的输入 6.3文件输入输出流 6.4输入输出流缓冲 6.5在输入输出流中查找 6.6strstreams 6.6.1为用户分配的存储 6.6.2自动存储分配 6.7输出流格式化 6.7.1内部格式化数据 6.7.2例子 6.8格式化操纵算子 6.9建立操纵算子 6.10输入输出流实例 6.10.1代码生成 6.10.2一个简单的数据记录 6.11小结 6.12练习 第7章 常量 7.1值替代 7.1.1头文件里的const 7.1.2const的安全性 7.1.3集合 7.1.4与C语言的区别 7.2指针 7.2.1指向const的指针 7.2.2const指针 7.2.3赋值和类型检查 7.3函数参数和返回值 7.3.1传递const值 7.3.2返回const值 7.3.3传递和返回地址 7.4类 7.4.1类里的const和enum 7.4.2编译期间类里的常量 7.4.3const对象和成员函数 7.4.4只读存储能力 7.5可变的(volatile) 7.6小结 7.7练习 第8章 内联函数 8.1预处理器的缺陷 8.2内联函数 8.2.1类内部的内联函数 8.2.2存取函数 8.3内联函数和编译器 8.3.1局限性 8.3.2赋值顺序 8.3.3在构造函数和析构函数里隐藏行为 8.4减少混乱 8.5预处理器的特点 8.6改进的错误检查 8.7小结 8.8练习 第9章 命名控制 9.1来自C语言中的静态成员 9.1.1函数内部的静态变量 9.1.2控制连接 9.1.3其他的存储类型指定符 9.2名字空间 9.2.1产生一个名字空间 9.2.2使用名字空间 9.3C++中的静态成员 9.3.1定义静态数据成员的存储 9.3.2嵌套类和局部类 9.3.3静态成员函数 9.4静态初始化的依赖因素 9.5转换连接指定 9.6小结 9.7练习 第10章 引用和拷贝构造函数 10.1C++中的指针 10.2C+十中的引用 10.2.1函数中的引用 10.2.2参数传递准则 10.3拷贝构造函数 10.3.1传值方式传递和返回 10.3.2拷贝构造函数 10.3.3缺省拷贝构造函数 10.3.4拷贝构造函数方法的选择 10.4指向成员的指针(简称成员指针) 10.5小结 10.6练习 第11章 运算符重载 11.1警告和确信 11.2语法 11.3可重载的运算符 11.3.1一元运算符 11.3.2二元运算符 11.3.3参数和返回值 11.3.4与众不同的运算符 11.3.5不能重载的运算符 11.4非成员运算符 11.5重载赋值符 11.6自动类型转换 11.6.1构造函数转换 11.6.2运算符转换 11.6.3一个理想的例子:strings 11.6.4自动类型转换的缺陷 11.7小结 11.8练习 第12章 动态对象创建 12.1对象创建 12.1.1C从堆中获取存储单元的方法 12.1.2运算符new 12.1.3运算符delete 12.1.4一个简单的例子 12.1.5内存管理的开销 12.2重新设计前面的例子 12.2.1仅从堆中创建string类 12.2.2stash指针 12.2.3stack例子 12.3用于数组的new和delete 12.4用完内存 12.5重载new和de1ete 12.5.1重载全局new和delete 12.5.2为一个类重载new和delete 12.5.3为数组重载new和delete 12.5.4构造函数调用 12.5.5对象放置 12.6小结 12.7练习 第13章 继承和组合 13.1组合语法 13.2继承语法 13.3构造函数的初始化表达式表 13.3.1成员对象初始化 13.3.2在初始化表达式表中的内置类型 13.4组合和继承的联合 13.4.1构造函数和析构函数的次序 13.4.2名字隐藏 13.4.3非自动继承的函数 13.5组合与继承的选择 13.5.1子类型设置 13.5.2专门化 13.5.3私有继承 13.6保护 13.7多重继承 13.8渐增式开发 13.9向上映射 13.9.1为什么“向上映射” 13.9.2组合与继承 13.9.3指针和引用的向上映射 13.9.4危机 13.10小结 13.11练习 第14章 多态和虚函数 14.1向上映射 14.2问题 14.3虚函数 14.4C++如何实现晚捆绑 14.4.1存放类型信息 14.4.2对虚函数作图 14.4.3撩开面纱 14.4.4安装vpointer 14.4.5对象是不同的 14.5为什么需要虚函数 14.6抽象基类和纯虚函数 14.7继承和VTABLE 14.8虚函数和构造函数 14.8.1构造函数调用次序 14.8.2虚函数在构造函数中的行为 14.9析构函数和虚拟析构函数 14.10小结 14.11练习 第15章 模板和包容器类 15.1包容器和循环子 15.2模板综述 15.2.1C方法 15.2.2Smalltalk方法 15.2.3模板方法 15.3模板的语法 15.3.1非内联函数定义 15.3.2栈模板(thestackasatemplate) 15.3.3模板中的常量 15.4stash&stack;模板 15.4.1所有权问题 15.4.2stash模板 15.4.3stack模板 15.5字符串和整型 15.5.1栈上的字符串 15.5.2整型 15.6向量 15.6.1“无穷”向量 15.6.2集合 15.6.3关联数组 15.7模板和继承 15.7.1设计和效率 15.7.2防止模板膨胀 15.8多态性和包容器 15.9包容器类型 15.10函数模板 15.10.1存储分配系统 15.10.2为tstack提供函数 15.10.3成员函数模板 15.11控制实例 15.12小结 15.13练习 第16章 多重继承 16.1概述 16.2子对象重叠 16.3向上映射的二义性 16.4虚基类 16.4.1“最晚辈派生”类和虚基初始化 16.4.2使用缺省构造函数向虚基“警告” 16.5开销 16.6向上映射 16.7避免MI 16.8修复接口 16.9小结 16.10练习 第17章 异常处理 17.1C语言的出错处理 17.2抛出异常 17.3异常捕获 17.3.1try块 17.3.2异常处理器 17.3.3异常规格说明 17.3.4更好的异常规格说明 17.3.5捕获所有异常 17.3.6异常的重新抛出 17.3.7未被捕获的异常 17.4清除 17.5构造函数 17.6异常匹配 17.7标准异常 17.8含有异常的程序设计 17.8.1何时避免异常 17.8.2异常的典型使用 17.9开销 17.10小结 17.11练习 第18章 运行时类型识别 18.1例子――shape 18.2什么是RTTI 18.3语法细节 18.3.1对于内部类型的typeid() 18.3.2产生合适的类型名字 18.3.3非多态类型 18.3.4映射到中间级 18.3.5void指针 18.3.6 用模板来使用RTTI 18.4引用 18.5多重继承 18.6合理使用RTTI 18.7RTTI的机制及花费 18.8创建我们自己的RTTI 18.9新的映射语法 18.9.1staticcast 18.9.2constcast 18.9.3reinterpret_cast 18.10小结 18.11练习 附录A 其他性能 附录B 编程准则 附录C 模拟虚构造函数 ——《豆瓣读书》

2018-01-19

《P2P网络技术原理与C++开发案例》(张文、赵子铭 主编)

《P2P网络技术原理与C++开发案例》通过基础理论篇与C++开发案例篇两个部分的讲解,使读者对P2P网络技术有全面的理解。随着P2P网络的飞速发展,P2P网络技术已经成为当今IT技术领域研究与应用的热点。基础理论篇对P2P网络的定义、典型的网络拓扑结构、应用与研究现状以及当今5种主流的P2P系统分别进行了介绍;通过与传统的搜索技术相比较,分析了P2P搜索技术的原理;对P2P技术所涉及的安全问题逐一进行了分析;对P2P应用的相关技术进行了深入剖析。C++开发案例篇介绍了P2P应用开发的两个平台,然后针对5个具体的P2P系统进行了详细的系统介绍和源码分析,包括P2P文件共享系统、P2P即时通信系统、P2P流媒体系统和P2P视频点播系统。 ——《豆瓣读书》

2018-01-18

《P2P技术全面解析》(张春红 等 编著)

《P2P技术全面解析》对P2P技术进行了全面而又深入的讲解,内容涵盖了P2P的基础知识:P2P概述、无结构的P2P系统、有结构的P2P系统、负载均衡以及可靠性等;目前P2P技术的应用:P2P网络中的NAT穿越技术、内容分发技术、P2P VoIP技术等;P2P与电信网的结合和应用:P2PSIP、P2P与IMS的结合;P2P领域中一些高级问题:P2P安全、P2P QoS、移动P2P等。 《P2P技术全面解析》适合从事P2P技术研发、应用、产业管理以及信息通信产业界关心P2P技术的相关从业人员阅读,也可供高等院校通信、计算机等相关专业师生参考。《P2P技术全面解析》也适合作为相关培训班的教材。 ——《豆瓣读书》

2018-01-18

《P2P技术揭秘P2P网络技术原理与典型系统开发》(管磊 编著)

《P2P技术揭秘:P2P网络技术原理与典型系统开发》从一个全新的视角向读者展示了从P2P初步入门到应用实践的学习之路。《P2P技术揭秘:P2P网络技术原理与典型系统开发》从理论到实践,从基础到项目,循序渐进地讲解了P2P技术的基本知识体系,同时配合开发案例引导读者进行P2P应用实战开发。书中对每一个知识点、原理思想、应用方法及实例都进行了深入浅出的阐述和分析,力求让读者读完《P2P技术揭秘:P2P网络技术原理与典型系统开发》后有所学、有所悟、有所得。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》共14章,分为3篇。主要内容包括P2P概述、P2P网络拓扑结构、P2P网络搜索技术、P2P关键技术及应用、P2P网络中的nat穿透技术、基于P2P的bittorrent(后文简称bt)技术、基于P2P的emule文件共享技术、基于P2P的skype即时通信技术、基于P2P的流媒体技术、基于java的P2P开发平台搭建、sloape的开发包及插件开发技术、基于P2P的即时通信系统的开发与实现、bt系统分析及客户端开发、jxta技术等。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》配书光盘中收录了专门为《P2P技术揭秘:P2P网络技术原理与典型系统开发》录制的多媒体教学视频及书中涉及的源代码,便于读者更加直观、高效地学习。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》适合P2P技术入门人员及网络视频、网络电话、多线程下载等网络软件开发人员。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》对于大中专院校相关专业的学生和老师也有很好的借鉴意义。 ——《豆瓣读书》

2018-01-18

《C程序设计(第三版)》(谭浩强 编著)

C程序设计(第3版)》作者具有丰富的教学经验和编写教材的经验,并针对初学者的特点,精心策划、准确定位,使得《C程序设计(第3版)》概念清晰、例题丰富、深入浅出,受到专家和读者的一致好评。《C程序设计(第3版)》被普遍认为是学习C语言的好教材,并被全国大多数高校选用。十多年来《C程序设计(第3版)》累计发行了800多万册,刨同类书的全国最高记录,是学习C语言的主流用书。《C程序设计(第3版)》曾荣获原电子工业部优秀教材一等奖、高校出版社优秀畅销书特等奖、全国高等院校计算机基础教育研究会优秀教材一等奖。 目录: 1 C语言概述 1.1 C语言出现的历史背景 1.2 C语言的特点 1.3 简单的C语言程序介绍 1.4 运行C程序的步骤与方法 1.4.1 运行C程序的步骤 1.4.2 上机运行C程序的方法 习题 2 程序的灵魂--算法 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.4.1 用自然语言表示算法 2.4.2 用流程图表示算法 2.4.3 3种基本结构和改进的流程图 2.4.4 用N-S流程图表示算法 2.4.5 用伪代码表示算法 2.4.6 用计算机语言表示算法 2.5 结构化程序设计方法 习题 3 数据类型、运算符与表达式 3.1 C语言的数据类型 3.2 常量与变量 3.2.1 常量和符号常量 3.2.2 变量 3.3 整型数据 3.3.1 整型常量的表示方法 3.3.2 整型变量 3.3.3 整型常量的类型 3.4 浮点型数据 3.4.1 浮点型常量的表示方法 3.4.2 浮点型变量 3.4.3 浮点型常量的类型 3.5 字符型数据 3.5.1 字符常量 3.5.2 字符变量 3.5.3 字符数据在内存中的存储形式及其使用方法 3.5.4 字符串常量 3.6 变量赋初值 3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.8.1 C语言运算符简介 3.8.2 算术运算符和算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式 习题 4 最简单的C程序设计--顺序程序设计 4.1 C语句概述 4.2 赋值语句 4.3 数据输入输出的概念及在C语言中的实现 4.4 字符数据的输入输出 4.4.1 putchar函数 4.4.2 getchar函数 4.5 格式输入与输出 4.5.1 printf函数 4.5.2 scanf函数 4.6 顺序结构程序设计举例 习题 5 选择结构程序设计 5.1 关系运算符和关系表达式 5.1.1 关系运算符及其优先次序 5.1.2 关系表达式 5.2 逻辑运算符和逻辑表达式 5.2.1 逻辑运算符及其优先次序 5.2.2 逻辑表达式 5.3 if语句 5.3.1 if语句的3种形式 5.3.2 if语句的嵌套 5.3.3 条件运算符 5.4 switch语句 5.5 程序举例 习题 6 循环控制 6.1 概述 6.2 goto语句以及用goto语句构成循环 6.3 用while语句实现循环 6.4 用do…while语句实现循环 6.5 用for语句实现循环 6.6 循环的嵌套 6.7 几种循环的比较 6.8 break语句和continue语句 6.8.1 break语句 6.8.2 continue语句 6.9 程序举例 习题 7 数组 7.1 一维数组的定义和引用 7.1.1 一维数组的定义 7.1.2 一维数组元素的引用 7.1.3 一维数组的初始化 7.1.4 一维数组程序举例 7.2 二维数组的定义和引用 7.2.1 二维数组的定义 7.2.2 二维数组的引用 7.2.3 二维数组的初始化 7.2.4 二维数组程序举例 7.3 字符数组 7.3.1 字符数组的定义 7.3.2 字符数组的初始化 7.3.3 字符数组的引用 7.3.4 字符串和字符串结束标志 7.3.5 字符数组的输入输出 7.3.6 字符串处理函数 7.3.7 字符数组应用举例 习题 8 函数 8.1 概述 8.2 函数定义的一般形式 8.2.1 无参函数定义的一般形式 8.2.2 有参函数定义的一般形式 8.2.3 空函数 8.3 函数参数和函数的值 8.3.1 形式参数和实际参数 8.3.2 函数的返回值 8.4 函数的调用 8.4.1 函数调用的一般形式 …… 9 预处理命令 10 指针 11 结构体与共用体 12 位运算 13 文件 14 常见错误和程序调试 附录A 常用字符与ASCⅡ代码对照表 附录B C语言中的关键字 附录C 运算符和结合性 附录D C语言常用语法提要 附录E C库函数 参考文献 ——《豆瓣读书》

2018-01-18

《算法导论(原书第2版)》(Thomas H.Cormen[美] 等 著,潘金贵 等 译)

这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。 ——《豆瓣读书》

2018-01-16

《算法导论(原书第3版)》(Thomas H.Cormen[美] 等 著,殷建平 等 译)

在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。 第3版的主要变化: 新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。 修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 移除两章很少讲授的内容:二项堆和排序网络。 修订了动态规划和贪心算法相关内容。 流网络相关材料现在基于边上的全部流。 由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。 新增100道练习和28道思考题,还更新并补充了参考文献。 目录: 出版者的话 译者序 前言 第一部分 基础知识 第1章 算法在计算中的作用 3 1.1 算法 3 1.2 作为一种技术的算法 6 思考题 8 本章注记 8 第2章 算法基础 9 2.1 插入排序 9 2.2 分析算法 13 2.3 设计算法 16 2.3.1 分治法 16 2.3.2 分析分治算法 20 思考题 22 本章注记 24 第3章 函数的增长 25 3.1 渐近记号 25 3.2 标准记号与常用函数 30 思考题 35 本章注记 36 第4章 分治策略 37 4.1 最大子数组问题 38 4.2 矩阵乘法的Strassen算法 43 4.3 用代入法求解递归式 47 4.4 用递归树方法求解递归式 50 4.5 用主方法求解递归式 53 4.6 证明主定理 55 4.6.1 对b的幂证明主定理 56 4.6.2 向下取整和向上取整 58 思考题 60 本章注记 62 第5章 概率分析和随机算法 65 5.1 雇用问题 65 5.2 指示器随机变量 67 5.3 随机算法 69 5.4 概率分析和指示器随机变量的进一步使用 73 5.4.1 生日悖论 73 5.4.2 球与箱子 75 5.4.3 特征序列 76 5.4.4 在线雇用问题 78 思考题 79 本章注记 80 第二部分 排序和顺序统计量 第6章 堆排序 84 6.1 堆 84 6.2 维护堆的性质 85 6.3 建堆 87 6.4 堆排序算法 89 6.5 优先队列 90 思考题 93 本章注记 94 第7章 快速排序 95 7.1 快速排序的描述 95 7.2 快速排序的性能 97 7.3 快速排序的随机化版本 100 7.4 快速排序分析 101 7.4.1 最坏情况分析 101 7.4.2 期望运行时间 101 思考题 103 本章注记 106 第8章 线性时间排序 107 8.1 排序算法的下界 107 8.2 计数排序 108 8.3 基数排序 110 8.4 桶排序 112 思考题 114 本章注记 118 第9章 中位数和顺序统计量 119 9.1 最小值和最大值 119 9.2 期望为线性时间的选择算法 120 9.3 最坏情况为线性时间的选择算法 123 思考题 125 本章注记 126 第三部分 数据结构 第10章 基本数据结构 129 10.1 栈和队列 129 10.2 链表 131 10.3 指针和对象的实现 134 10.4 有根树的表示 137 思考题 139 本章注记 141 第11章 散列表 142 11.1 直接寻址表 142 11.2 散列表 143 11.3 散列函数 147 11.3.1 除法散列法 147 11.3.2 乘法散列法 148 11.3.3 全域散列法 148 11.4 开放寻址法 151 11.5 完全散列 156 思考题 158 本章注记 160 第12章 二叉搜索树 161 12.1 什么是二叉搜索树 161 12.2 查询二叉搜索树 163 12.3 插入和删除 165 12.4 随机构建二叉搜索树 169 思考题 171 本章注记 173 第13章 红黑树 174 13.1 红黑树的性质 174 13.2 旋转 176 13.3 插入 178 13.4 删除 183 思考题 187 本章注记 191 第14章 数据结构的扩张 193 14.1 动态顺序统计 193 14.2 如何扩张数据结构 196 14.3 区间树 198 思考题 202 本章注记 202 第四部分 高级设计和分析技术 第15章 动态规划 204 15.1 钢条切割 204 15.2 矩阵链乘法 210 15.3 动态规划原理 215 15.4 最长公共子序列 222 15.5 最优二叉搜索树 226 思考题 231 本章注记 236 第16章 贪心算法 237 16.1 活动选择问题 237 16.2 贪心算法原理 242 16.3 赫夫曼编码 245 16.4 拟阵和贪心算法 250 16.5 用拟阵求解任务调度问题 253 思考题 255 本章注记 257 第17章 摊还分析 258 17.1 聚合分析 258 17.2 核算法 261 17.3 势能法 262 17.4 动态表 264 17.4.1 表扩张 265 17.4.2 表扩张和收缩 267 思考题 270 本章注记 273 第五部分 高级数据结构 第18章 B树 277 18.1 B树的定义 279 18.2 B树上的基本操作 281 18.3 从B树中删除关键字 286 思考题 288 本章注记 289 第19章 斐波那契堆 290 19.1 斐波那契堆结构 291 19.2 可合并堆操作 292 19.3 关键字减值和删除一个结点 298 19.4 最大度数的界 300 思考题 302 本章注记 305 第20章 van Emde Boas树 306 20.1 基本方法 306 20.2 递归结构 308 20.2.1 原型van Emde Boas结构 310 20.2.2 原型van Emde Boas结构上的操作 311 20.3 van Emde Boas树及其操作 314 20.3.1 van Emde Boas树 315 20.3.2 van Emde Boas树的操作 317 思考题 322 本章注记 323 第21章 用于不相交集合的数据结构 324 21.1 不相交集合的操作 324 21.2 不相交集合的链表表示 326 21.3 不相交集合森林 328 21.4 带路径压缩的按秩合并的分析 331 思考题 336 本章注记 337 第六部分 图算法 第22章 基本的图算法 341 22.1 图的表示 341 22.2 广度优先搜索 343 22.3 深度优先搜索 349 22.4 拓扑排序 355 22.5 强连通分量 357 思考题 360 本章注记 361 第23章 最小生成树 362 23.1 最小生成树的形成 362 23.2 Kruskal算法和Prim算法 366 思考题 370 本章注记 373 第24章 单源最短路径 374 24.1 Bellman-Ford算法 379 24.2 有向无环图中的单源最短路径问题 381 24.3 Dijkstra算法 383 24.4 差分约束和最短路径 387 24.5 最短路径性质的证明 391 思考题 395 本章注记 398 第25章 所有结点对的最短路径问题 399 25.1 最短路径和矩阵乘法 400 25.2 Floyd-Warshall算法 404 25.3 用于稀疏图的Johnson算法 409 思考题 412 本章注记 412 第26章 最大流 414 26.1 流网络 414 26.2 Ford\Fulkerson方法 418 26.3 最大二分匹配 428 26.4 推送重贴标签算法 431 26.5 前置重贴标签算法 438 思考题 446 本章注记 449 第七部分 算法问题选编 第27章 多线程算法 453 27.1 动态多线程基础 454 27.2 多线程矩阵乘法 465 27.3 多线程归并排序 468 思考题 472 本章注记 476 第28章 矩阵运算 478 28.1 求解线性方程组 478 28.2 矩阵求逆 486 28.3 对称正定矩阵和最小二乘逼近 489 思考题 493 本章注记 494 第29章 线性规划 495 29.1 标准型和松弛型 499 29.2 将问题表达为线性规划 504 29.3 单纯形算法 507 29.4 对偶性 516 29.5 初始基本可行解 520 思考题 525 本章注记 526 第30章 多项式与快速傅里叶变换 527 30.1 多项式的表示 528 30.2 DFT与FFT 531 30.3 高效FFT实现 536 思考题 539 本章注记 541 第31章 数论算法 543 31.1 基础数论概念 543 31.2 最大公约数 547 31.3 模运算 550 31.4 求解模线性方程 554 31.5 中国余数定理 556 31.6 元素的幂 558 31.7 RSA公钥加密系统 561 31.8 素数的测试 565 31.9 整数的因子分解 571 思考题 574 本章注记 576 第32章 字符串匹配 577 32.1 朴素字符串匹配算法 578 32.2 Rabin\Karp算法 580 32.3 利用有限自动机进行字符串匹配 583 32.4 Knuth-Morris-Pratt算法 588 思考题 594 本章注记 594 第33章 计算几何学 595 33.1 线段的性质 595 33.2 确定任意一对线段是否相交 599 33.3 寻找凸包 604 33.4 寻找最近点对 610 思考题 613 本章注记 615 第34章 NP完全性 616 34.1 多项式时间 619 34.2 多项式时间的验证 623 34.3 NP完全性与可归约性 626 34.4 NP完全性的证明 633 34.5 NP完全问题 638 34.5.1 团问题 638 34.5.2 顶点覆盖问题 640 34.5.3 哈密顿回路问题 641 34.5.4 旅行商问题 644 34.5.5 子集和问题 645 思考题 647 本章注记 649 第35章 近似算法 651 35.1 顶点覆盖问题 652 35.2 旅行商问题 654 35.2.1 满足三角不等式的旅行商问题 654 35.2.2 一般旅行商问题 656 35.3 集合覆盖问题 658 35.4 随机化和线性规划 661 35.5 子集和问题 663 思考题 667 本章注记 669 第八部分 附录:数学基础知识 附录A 求和 672 A.1 求和公式及其性质 672 A.2 确定求和时间的界 674 思考题 678 附录注记 678 附录B 集合等离散数学内容 679 B.1 集合 679 B.2 关系 682 B.3 函数 683 B.4 图 685 B.5 树 687 B.5.1 自由树 688 B.5.2 有根树和有序树 689 B.5.3 二叉树和位置树 690 思考题 691 附录注记 692 附录C 计数与概率 693 C.1 计数 693 C.2 概率 696 C.3 离散随机变量 700 C.4 几何分布与二项分布 702 C.5 二项分布的尾部 705 思考题 708 附录注记 708 附录D 矩阵 709 D.1 矩阵与矩阵运算 709 D.2 矩阵基本性质 712 思考题 714 附录注记 715 参考文献 716 索引 732 ——《豆瓣读书》

2018-01-16

C++帮助手册

C++帮助手册,可以快速查询C++与C标准库函数以及STL容器的声明。 包含中文版和英文版,但是中文版的内容没有英文版的全面。

2018-08-21

《Python网络编程基础》(John Goerzen 著,莫迟 等 译)

《Python网络编程基础》是2007年电子工业出版社出版的图书,作者是(美)高森。本书全面介绍了使用Python语言进行网络编程的基础知识,主要内容包括网络基础知识、高级网络操作、Web Services、解析HTML和XHTML、XML、E-mail服务、FTP、使用Python操作数据库、SSL、几种服务器端框架(包括Socket服务器、SimpleXMLRPCServer、CGI和mod_python),以及多任务处理(包括Forking、线程和异步通信)等。 目录: 关于作者 关于技术审校 致谢 简介 第1部分 底层网络 第1章 客户/服务器网络介绍 第2章 网络客户端 第3章 网络服务器 第4章 域名系统 第5章 域名系统 第2部分 Web Service 第6章 Web客户端访问 第7章 解析HTML和XHTML 第8章 XML和XML-RPC 第3部分 E-mail服务 第9章 E-mail的编写和编码 第10章 简单邮件传输协议(SMTP) 第11章 POP 第12章 IMAP 第4部分 多用途的客户端协议 第13章 FTP 第14章 数据库客户端 第15章 SSL 第5部分 服务器端框架 第16章 SocketSever 第17章 SimpleXMLRPCServer 第18章 CGI 第19章 Mod_python 第6部分 多任务处理 第20章 forking 第21章 线程 第22章 异步通信 索引

2018-05-14

《计算机程序设计艺术》(1,2,3卷)([美]Donald E·Knuth)

第1卷首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。 第2卷对半数值算法领域做了全面介绍,分“随机数”和“算术”两章。本卷总结了主要算法范例及这些算法的基本理论,广泛剖析了计算机程序设计与数值分析间的相互联系,其中特别值得注意的是作者对随机数生成程序的重新处理和对形式幂级数计算的讨论。 本书附有大量习题和答案,标明了难易程度及数学概念的使用。 本书内容精辟,语言流畅,引人入胜,可供从事计算机科学、计算数学、计算技术诸方面的工作人员参考、研究和借鉴,也是相关专业高等院校的理想教材和教学参考书。 《计算机程序设计艺术排序和查找(第3卷)(第2版)》内容简介:这是对第3卷的头一次修订,不仅是对经典计算机排序和查找技术的最全面介绍,而且还对第1卷中的数据结构处理技术作了进一步的扩充,通盘考虑了将大小型数据库和内外存储器。它遴选了一些经过反复检验的计算机方法,并对其效率做了定量分析。第3卷的突出特点是对“最优排序”一节作了修订,对排列论原理与通用散列法作了全新讨论。 ——《豆瓣读书》

2018-05-04

《代码大全(第2版)》(史蒂夫·迈克康奈尔[美],金戈 等译)

第2版的《代码大全》是著名IT畅销书作者史蒂夫·迈克康奈尔11年前的经典著作的全新演绎:第2版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。 目录: 第 1 章 欢迎进入软件构建的世界  3 第 2 章 用隐喻来更充分地理解软件开发  9 第 3 章 三思而后行:前期准备  23 第 4 章 关键的“构建”决策  61 第 5 章 软件构建中的设计  73 第 6 章 可以工作的类  125 第 7 章 高质量的子程序  161 第 8 章 防御式编程  187 第 9 章 伪代码编程过程  215 第 10 章 使用变量的一般事项  237 第 11 章 变量名的力量  259 第 12 章 基本数据类型  291 第 13 章 不常见的数据类型  319 第 14 章 组织直线型代码  347 第 15 章 使用条件语句  355 第 16 章 控制循环  367 第 17 章 不常见的控制结构  391 第 18 章 表驱动法  411 第 19 章 一般控制问题  431 第 20 章 软件质量概述  463 第 21 章 协同构建  479 第 22 章 开发者测试  499 第 23 章 调试  535 第 24 章 重构  563 第 25 章 代码调整策略  587 第 26 章 代码调整技术  609 第 27 章 程序规模对构建的影响  649 第 28 章 管理构建  661 第 29 章 集成  689 第 30 章 编程工具  709 第 31 章 布局与风格  729 第 32 章 自说明代码  777 第 33 章 个人性格  819 第 34 章 软件工艺的话题  837 第 35 章 何处有更多信息  855 参考文献   863 索引 883 ——《豆瓣读书》

2018-05-04

《Linux内核设计与实现(原书第3版)》(Robert Love 著;陈莉君、康华 译)

《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的设计与实现。内核代码的编写者、开发者以及程序开发人员都可以通过阅读本书受益,他们可以更好理解操作系统原理,并将其应用在自己的编码中以提高效率和生产率。 《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的主要子系统和特点,包括Linux内核的设计、实现和接口。从理论到实践涵盖了Linux内核的方方面面,可以满足读者的各种兴趣和需求。 作者Robert Love是一位Linux内核核心开发人员,他分享了在开发Linux 2.6内核过程中颇具价值的知识和经验。本书的主题包括进程管理、进程调度、时间管理和定时器、系统调用接口、内存寻址、内存管理和页缓存、VFS、内核同步、移植性相关的问题以及调试技术。同时本书也涵盖了Linux 2.6内核中颇具特色的内容,包括CFS调度程序、抢占式内核、块I/O层以及I/O调度程序。 《Linux内核设计与实现(原书第3版)》新增内容包括: 增加一章专门描述内核数据结构 详细描述中断处理程序和下半部机制 扩充虚拟内存和内存分配的内容 调试Linux内核的技巧 内核同步和锁机制的深度描述 提交内核补丁以及参与Linux内核社区的建设性建议 目录: 译者序 序言 前言 作者简介 第1章 Linux内核简介 1.1 Unix的历史 1.2 追寻Linus足迹:Linux简介 1.3 操作系统和内核简介 1.4 Linux内核和传统Unix内核的比较 1.5 Linux内核版本 1.6 Linux内核开发者社区 1.7 小结 第2章 从内核出发 第3章 进程管理 第4章 进程调度 第5章 系统调用 第6章 内核数据结构 第7章 中断和中断处理 第8章 下半部和推后执行的工作 第9章 内核同步介绍 第10章 内核同步方法 第11章 定时器和时间管理 第12章 内存管理 第13章 虚拟文件系统 第14章 块I/O层 第15章 进程地址空间 第16章 页高速缓存和页回写 第17章 设备与模块 第18章 调试 第19章 可移植性 第20章 补丁、开发和社区参考资料 ——《豆瓣读书》

2018-04-14

《原则》(瑞·达利欧 [美],刘波、綦相 译)

瑞·达利欧(Ray Dalio),对冲基金公司桥水创始人。他出生于纽约长岛一个非常普通的中产阶级家庭,26岁时在自己的两居室公寓内创办了桥水。经过42年的发展,桥水位列美国最重要的私营公司榜单第五位(《财富》杂志)。他入选《时代周刊》世界100位最具影响力人物,并跻身《福布斯》世界前100名富豪行列。由于他独到的投资准则改变了基金业,美国CIO经理人杂志称其为“投资界的史蒂夫·乔布斯”。 目录: 导言 第一部分 我的历程 1 我的探险召唤(1949—1967年) 2 跨越门槛(1967—1979年) 3 我的低谷(1979—1982年) 4 我的试炼之路(1983—1994年) 5 终极恩惠(1995—2010年) 6 回报恩惠(2011—2015年) 7 最后的一年和最大的挑战(2016—2017年) 8 从更高的层面回顾 第二部分 生活原则 1 拥抱现实,应对现实 2 用五步流程实现你的人生愿望 3 做到头脑极度开放 4 理解人与人大不相同 5 学习如何有效决策 生活原则总结 生活原则概要与列表 第三部分 工作原则 工作原则概要与列表 打造良好的文化…… 1 相信极度求真和极度透明 2 做有意义的工作,发展有意义的人际关系 3 打造允许犯错,但不容忍罔顾教训、一错再错的文化 4 求取共识并坚持 5 做决策时要从观点的可信度出发 6 知道如何超越分歧 用对人…… 7 比做什么事更重要的是找对做事的人 8 要用对人,因为用人不当的代价高昂 9 持续培训、测试、评估和调配员工 建造并进化你的机器…… 10 像操作一部机器那样进行管理以实现目标 11 发现问题,不容忍问题 12 诊断问题,探究根源 13 改进机器,解决问题 14 按既定计划行事 15 运用工具和行为准则指导工作 16 千万别忽视了公司治理 将工作原则融会贯通 结 语 附 录 参考文献 致 谢 审校后记

2018-03-29

《C++数据结构与算法(第4版)》(Adam Drozdek[美] 著,徐丹、吴伟敏 译)

本书全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。 目录: 第1章 C++面向对象程序设计 1 1.1 抽象数据类型 1 1.2 封装 1 1.3 继承 5 1.4 指针 7 1.4.1 指针与数组 10 1.4.2 指针与复制构造函数 12 1.4.3 指针与析构函数 14 1.4.4 指针和引用变量 14 1.4.5 函数指针 17 1.5 多态性 18 1.6 C++和面向对象程序设计 20 1.7 标准模板库 20 1.7.1 容器 21 1.7.2 迭代器 21 1.7.3 算法 21 1.7.4 函数对象 22 1.8 标准模板库中的向量 24 1.9 数据结构与面向对象编程 29 1.10 案例分析:随机访问文件 30 1.11 习题 38 1.12 编程练习 40 参考书目 42 第2章 复杂度分析 43 2.1 计算复杂度以及渐近复杂度 43 2.2 大O表示法 44 2.3 大O表示法的性质 46 2.4 Ω表示法与Θ表示法 47 2.5 可能存在的问题 48 2.6 复杂度示例 49 2.7 确定渐近复杂度示例 50 2.8 最好、平均和最坏情况 51 2.9 摊销复杂度(amortized complexity) 54 2.10 NP完整性 57 2.11 习题 59 参考书目 61 第3章 链表 63 3.1 单向链表 63 3.1.1 插入 68 3.1.2 删除 70 3.1.3 查找 74 3.2 双向链表 74 3.3 循环链表 78 3.4 跳跃链表(skip list) 79 3.5 自组织链表 83 3.6 稀疏表 87 3.7 标准模板库中的链表 89 3.8 小结 92 3.9 案例分析:图书馆 93 3.10 习题 101 3.11 编程练习 102 参考书目 105 第4章 栈与队列 107 4.1 栈 107 4.2 队列 113 4.3 优先队列 119 4.4 标准模板库中的栈 119 4.5 标准模板库中的队列 120 4.6 标准模板库中的优先队列 121 4.7 标准模版库中的双端队列 123 4.8 案例分析:迷宫问题 127 4.9 习题 131 4.10 编程练习 133 参考书目 134 第5章 递归 135 5.1 递归定义 135 5.2 函数调用与递归实现 137 5.3 分析递归调用 139 5.4 尾递归 142 5.5 非尾递归 142 5.6 间接递归 147 5.7 嵌套递归 148 5.8 不合理递归 149 5.9 回溯 152 5.10 小结 157 5.11 案例分析:递归下降解释器 158 5.12 习题 165 5.13 编程练习 167 参考书目 169 第6章 二叉树 171 6.1 树、二叉树和二叉查找树 171 6.2 二叉树的实现 174 6.3 二叉查找树的查找 176 6.4 树的遍历 179 6.4.1 广度优先遍历 179 6.4.2 深度优先遍历 180 6.4.3 不使用栈的深度优先遍历 186 6.5 插入 191 6.6 删除 193 6.6.1 合并删除 194 6.6.2 复制删除 196 6.7 树的平衡 198 6.7.1 DSW算法 200 6.7.2 AVL树 202 6.8 自适应树(self-adjusting tree) 207 6.8.1 自重新构造树(self-restructuring tree) 207 6.8.2 “张开”策略(splaying) 208 6.9 堆 212 6.9.1 将堆作为优先队列 213 6.9.2 用数组实现堆 215 6.10 treap树 218 6.11 k-d树 221 6.12 波兰表示法和表达式树 225 6.13 案例分析:计算单词出现的频率 229 6.14 习题 235 6.15 编程练习 239 参考书目 242 第7章 多叉树 245 7.1 B树家族 245 7.1.1 B树 247 7.1.2 B*树 254 7.1.3 B+树 255 7.1.4 前缀B+树 257 7.1.5 k-d B树 259 7.1.6 位树 264 7.1.7 R树 265 7.1.8 2-4树 267 7.1.9 标准模板库中的集合(set)以及多重集合(multiset) 278 7.1.10 标准模板库中的映射(map)和多映射(multimap) 282 7.2 trie 286 7.3 小结 292 7.4 案例分析:拼写检查器 292 7.5 习题 300 7.6 编程练习 301 参考书目 304 第8章 图 307 8.1 图的表示法 308 8.2 图的遍历 309 8.3 最短路径 312 8.4 环的检测 319 8.5 生成树 322 8.6 连通性 324 8.6.1 无向图中的连通性 324 8.6.2 有向图中的连通性 326 8.7 拓扑排序 328 8.8 网络 329 8.8.1 最大流 329 8.8.2 成本最低的最大流 337 8.9 匹配 340 8.9.1 稳定匹配问题 344 8.9.2 分配问题 346 8.9.3 非二分图中的匹配集合 348 8.10 欧拉(Eulerian)图与汉密尔顿 (Hamiltonian)图 349 8.10.1 欧拉图 349 8.10.2 汉密尔顿图 352 8.11 图的上色问题 356 8.12 图论中的NP完整性问题 359 8.12.1 派系问题 359 8.12.2 三色问题 360 8.12.3 顶点覆盖问题 361 8.12.4 汉密尔顿环问题 361 8.13 案例分析:唯一代表 363 8.14 习题 372 8.15 编程练习 376 参考书目 377 第9章 排序 381 9.1 基本的排序算法 382 9.1.1 插入排序 382 9.1.2 选择排序 384 9.1.3 冒泡排序 386 9.1.4 梳排序 388 9.2 决策树 389 9.3 高效排序算法 392 9.3.1 希尔排序 392 9.3.2 堆排序 395 9.3.3 快速排序 397 9.3.4 归并排序 402 9.3.5 基数排序 405 9.3.6 计数排序 408 9.4 标准模板库中的排序 410 9.5 小结 414 9.6 案例分析:多项式相加 414 9.7 习题 420 9.8 编程练习 422 参考书目 423 第10章 散列 427 10.1 散列函数 427 10.1.1 除余法 428 10.1.2 折叠法 428 10.1.3 平方取中法 429 10.1.4 提取法 429 10.1.5 基数转换法 429 10.1.6 全域散列法 429 10.2 冲突解决方法 430 10.2.1 开放定址法 430 10.2.2 链接法 435 10.2.3 桶定址 436 10.3 删除 437 10.4 理想散列函数 438 10.4.1 Cichelli方法 438 10.4.2 FHCD算法 440 10.5 再散列 442 10.6 可扩展文件的散列函数 444 10.6.1 可扩展散列 445 10.6.2 线性散列 446 10.7 案例分析:使用桶的散列 449 10.8 习题 456 10.9 编程练习 457 参考书目 458 第11章 数据压缩 461 11.1 数据压缩的条件 461 11.2 Huffman编码 463 11.3 Run-Length编码方式 473 11.4 Ziv-Lempel编码方式 474 11.5 案例分析:Huffman方法和Run-Length编码方式 476 11.6 习题 485 11.7 编程练习 486 参考书目 487 第12章 内存管理 489 12.1 sequential-fit方法 490 12.2 nonsequential-fit方法 491 12.3 垃圾回收 497 12.3.1 标记和清除 498 12.3.2 复制方法 504 12.3.3 递增的垃圾回收 505 12.3.4 分代垃圾回收 510 12.4 小结 513 12.5 案例分析 514 12.6 习题 521 12.7 编程练习 522 参考书目 524 第13章 字符串匹配 527 13.1 字符串的精确匹配 527 13.1.1 简单的算法 527 13.1.2 Knuth-Morris-Pratt算法 530 13.1.3 Boyer-Moore算法 536 13.1.4 多次搜索 545 13.1.5 面向位的方法 546 13.1.6 单词集合的匹配 550 13.1.7 正则表达式的匹配 555 13.1.8 后缀trie和树 558 13.1.9 后缀数组 563 13.2 字符串的模糊匹配 564 13.2.1 字符串的近似性 565 13.2.2 有k个错误的字符串匹配 570 13.3 案例分析:最长的共有子字符串 573 13.4 习题 580 13.5 编程练习 581 参考书目 582 附录A 计算大O 585 附录B 标准模板库中的算法 591 附录C NP完整性 599 ——《豆瓣读书》

2018-02-27

《图解性能优化》(小田圭二[日] 等 著,苏祎 译)

本书由有着丰富的系统开发和运维经验的Oracle高级顾问执笔,详细解说了系统性能的相关知识。从性能的概念讲起,由浅入深,全面介绍了性能分析的基础知识、实际系统的性能分析、性能调优、性能测试、虚拟化环境下的性能分析、云计算环境下的性能分析等内容。书中列举了丰富的实例,并结合直观的插图,向读者传授了有用的实战技巧。另外,因为系统性能和系统架构密切相关,所以读者在学习系统性能的过程中还能有效地学到系统架构的相关知识。 目录: 第1章 性能的基础知识 1   1.1 学习性能所必需的知识 2   1.2 算法的优缺点与学习方法 4   1.2.1 什么是算法 4   1.2.2 算法的基础 5   1.2.3 学习算法的窍门 7   1.3 算法的应用实例及性能的差异 8   1.3.1 日常生活中算法的例子 8   1.3.2 对性能的影响程度 9   1.3.3 评价算法的指标 11   学习信息科学的重要性 13   1.4 响应与吞吐的区别 14   系统工程师学习编程的重要性 16   1.5 算法的具体例子 16   1.5.1 数组与循环处理 16   1.5.2 链表与循环处理 19   1.5.3 树与查找 21   1.5.4 散列算法 25   1.5.5 队列 28   1.5.6 栈 32   1.5.7 排序(快速排序) 34   1.5.8 缓存①(回写) 36   1.5.9 缓存②(直写) 38   DMBS是数据结构与算法的宝库 38   1.5.10 锁与性能 40   【高级篇】锁的机制是如何实现的 42   【高级篇】性能优劣不能只看正常情况 44 第2章 性能分析的基础 45   2.1 性能分析从测量开始 46   2.2 什么是必要的性能信息 46   2.2.1 “分段查找”原则 46   2.2.2 性能信息的3种类型 48   2.2.3 系统的模型与性能故障时的运作情况 50   2.2.4 数据的种类及分析的窍门 53   2.3 性能分析中的重要理论 54   2.3.1 等待队列理论的术语 55   2.3.2 计算等待队列的平均等待时间 56   2.3.3 使用率和等待队列的例子 57   2.3.4  实际上可以获取哪些信息 59   需要定期确认性能吗? 61   2.4 OS的命令 61   2.4.1  sar 62   2.4.2 vmstat 64   时间同步非常重要 66   2.4.3 ps 66   2.4.4 netstat 68   2.4.5 iostat 70   2.4.6 top 73   2.4.7 数据包转储(wireshark、tcpdump等) 74   2.4.8 pstack 76   2.4.9 系统调用(strace等) 78   2.4.10 Profiler 80   2.4.11 Windows环境 81 第3章 实际系统的性能分析 85   3.1 Web/AP服务器与Java/C应用程序 86   3.1.1 Web服务器的访问日志 86   3.1.2 应用程序、AP服务器的日志 87   3.2 DB服务器的性能测量 90   3.2.1 DBMS的性能测量的原理 90   3.2.2 性能分析告一段落 92   批处理的性能测量 93   3.3 存储性能分析的思路 94   3.3.1 存储的相关术语 94   3.3.2 存储性能分析的思路:重视IOPS 96   3.4 网络性能分析的思路 100   性能故障数据应该保存多久? 102   3.5 调查原因 102   3.5.1 初学者容易掉入的陷阱 103   3.5.2 应有的态度 106   获取各种性能信息的时间要吻合吗? 108   3.5.3 实际的调查流程 108   性能分析的理想工具 111 第4章 性能调优 113   4.1 性能与调优 114   4.1.1 现实中的性能 114   4.1.2 在现场要保持“大局观” 117   4.2 性能调优的准则 118   4.2.1 设定既不能太粗也不能太细,要刚刚好 119   4.2.2 调优要循序渐进 120   4.2.3 通过重复使用来提速 121   4.2.4 汇总处理(集中、Piggyback) 121   4.2.5 提高速度与实现并行 123   4.2.6 纵向扩展与横向扩展 124   4.2.7 局部性 124   编译器会与RDBMS走上同一条道路吗? 125   4.3 现场可以使用的技巧 126   4.3.1 省略循环,减少投接球 126   4.3.2 访问频率高的数据存放入键值存储或散列表中 127   4.3.3 访问频率高的数据放在使用位置附近 127   4.3.4 把同步变成异步 128   4.3.5 带宽控制 130   4.3.6 LRU算法 131   4.3.7 分割处理或者细化锁的粒度 131   4.3.8 使用不丢失的回写缓存 132   4.3.9 使用多层缓存 132   4.3.10 使用巨帧和高速网络 132   4.3.11 负载均衡、轮询 133   4.3.12 关联性、绑定、粘滞会话 134   4.3.13  写时复制 135   4.3.14 日志 136   4.3.15 压缩 137   4.3.16 乐观锁 137   4.3.17 列式数据库 138   4.3.18 服务器的性能设置中,初始值=最大值? 139   4.4 实际业务中碰到的性能问题 139   4.4.1 性能比较的参考数据 139   4.4.2 缓存命中率并不一定要高 140   4.4.3 存储的调优方针 141   4.4.4 虽然容量足够,但还是添加磁盘 141   4.4.5 从性能角度看文件分割 142   4.4.6  90百分位 143   4.4.7 读取与写入的比例 143   4.5 调优的例子 144   4.5.1 例1:2层循环中select语句的执行 144   4.5.2 例2:偶尔出现性能下降 147   等待队列的前面发生了什么? 149 第5章 性能测试 151   5.1 性能测试的概要 152   5.1.1  项目工程中的性能测试 152   5.1.2 不同职责的性能测试相关人员 153   5.2 常见的失败情况:9种反面模式 156   5.2.1 不能在期限内完成 156   5.2.2 性能很差!解决不了性能问题 157   5.2.3 由于没有考虑到环境差异而导致发生问题 158   5.2.4 压力场景设计不完备导致发生问题 159   5.2.5 没有考虑到缓冲、缓存的使用而导致发生问题 159   5.2.6 没有考虑到思考时间而导致发生问题 160   5.2.7 报告内容难以理解导致客户不能认同 162   5.2.8 客户因为存在不信任感而不能认同 163   5.2.9 测试很花时间 164   5.3 性能测试的种类 167   5.3.1 实施的周期 168   5.3.2 狭义的性能测试 169   5.3.3 临界测试(临界性能、回退性能、故障测试) 169   5.3.4 基础设施性能测试 174   5.3.5 应用程序单元性能测试 178   5.3.6 耐久测试 179   5.3.7 关联领域 180   5.4 项目工程中考虑的性能测试 181   5.4.1 需求定义 181   5.4.2 项目规划 186   5.4.3 【基本设计】选择系统 187   5.4.4 【基本设计】性能测试环境 188   5.4.5 【基本设计】其他与性能设计相关的事项 191   5.4.6 【性能测试设计】测试计划的细节 192   5.4.7 【性能测试设计】人员配备与联络体制 194   5.4.8 【基础设施集成测试】基础设施性能测试 195   5.4.9 【集成测试】多并发运行测试 197   5.4.10 【系统测试】压力测试、临界测试、耐久测试 197   5.4.11 【运维测试】性能监控测试、故障测试 198   5.4.12 【交付】性能测试结果的验收报告 198   5.4.13 【运维】初期运行确认 199   5.5 性能测试的课题与必要的技巧 200   5.5.1 性能预估能力 200   5.5.2 高效的反复实施能力 202   5.5.3 Oracle Application Testing Suite的使用效果 203 第6章 虚拟化环境下的性能 209   6.1 虚拟化与性能 210   6.2 虚拟化的概要 211   6.2.1 什么是服务器虚拟化 211   6.2.2 虚拟化的种类 212   硬件辅助虚拟化 214   6.3 服务器虚拟化的主要技术(过载使用) 215   6.3.1 CPU的虚拟化技术 215   6.3.2 内存的虚拟化技术 218   6.4 虚拟化环境下性能的相关知识与分析方法 225   6.4.1 性能分析的工具 225   6.4.2 CPU的性能管理 226   6.4.3 内存的性能管理 231   6.4.4 存储的性能管理 234   还没使用DRS吗? 237   6.4.5 网络的性能管理 240   延迟灵敏度功能 243 第7章 云计算环境下的性能 245   7.1 云计算环境下性能的相关知识 246   7.1.1 云计算环境下性能会变差吗 246   7.2 云计算与本地部署的差异 247   7.2.1 云计算的定义 248   7.2.2 从云计算的特点来看与本地部署环境的不同 248   云计算实现的终极全球化 251   7.2.3 云计算的实现形态 251   混合结构的成本管理就是使用实物期权实现的投资组合管理 252   7.2.4 从云计算的服务模式来看其与本地部署的差别 253   云计算环境中可以把盈亏平衡点图形化(独自SaaS提供的最优费用模型) 254   7.2.5 把握资源的变动因素与固定因素 254   7.3 云计算环境的内部结构与最佳应用程序架构 262   7.3.1 集中式?分布式? 262   7.3.2 紧耦合?松耦合? 264   7.3.3 SOAP?REST? 265   能够把握抽象化的云计算环境的美国人——图与想象的重要性 268   7.3.4 前端的分布式处理:网络的访问方法 269   7.3.5 后端的分布式处理:数据存储的知识(从ACID到BASE) 271   7.3.6 提高TCP通信的速度 272   7.3.7 提高对象存储的速度 272   7.3.8 C语言?Java语言?还是脚本语言? 273   7.3.9 云计算环境下高性能服务的架构 274   7.3.10 开放迁移与云计算迁移 277   7.3.11 推测云计算的内部结构 278   7.4 云计算环境下性能分析的方法 278   7.4.1 获得云计算环境的基准数据的价值与不断进化的性能值 278   性能领域是理科工程师的特权? 280   7.4.2 Web系统的基本分析方法 281   7.4.3 批处理系统的基本分析方法 282   7.4.4 云计算的自动扩展功能 283   7.4.5 解析云计算环境中的复杂信息的统计方法 284   7.5 云计算环境中开发阶段的思维方式 285   7.5.1 估算(基本设计) 286   7.5.2 性能测试(系统测试) 287   7.5.3 项目管理 287   云计算环境下,经营者也需要关注详细的性能数据吗? 288   7.6 云计算环境中运维阶段的思维方式 289   7.6.1 容量管理 289   阈值设置与系统安全系数、标准化的价值 290   7.6.2 故障发生时的降规模容量运维 292   7.6.3 生命周期与更新 293 云计算实现的DevOps中性能调优的高效化 294 参考文献 296 作者简介 297

2018-02-17

《算法图解》(Aditya Bhargava[美] 著,袁国忠 译)

本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。 目录: 第1章 算法简介  1 1.1 引言  1 1.1.1 性能方面  1 1.1.2 问题解决技巧  2 1.2 二分查找  2 1.2.1 更佳的查找方式  4 1.2.2 运行时间  8 1.3 大O表示法  8 1.3.1 算法的运行时间以不同的速度增加  9 1.3.2 理解不同的大O运行时间  10 1.3.3 大O表示法指出了最糟情况下的运行时间  12 1.3.4 一些常见的大O运行时间  12 1.3.5 旅行商  13 1.4 小结  15 第2章 选择排序  16 2.1 内存的工作原理  16 2.2 数组和链表  18 2.2.1 链表  19 2.2.2 数组  20 2.2.3 术语  21 2.2.4 在中间插入  22 2.2.5 删除  23 2.3 选择排序  25 2.4 小结  28 第3章 递归  29 3.1 递归  29 3.2 基线条件和递归条件  32 3.3 栈  33 3.3.1 调用栈  34 3.3.2 递归调用栈  36 3.4 小结  40 第4章 快速排序  41 4.1 分而治之  41 4.2 快速排序  47 4.3 再谈大O表示法  52 4.3.1 比较合并排序和快速排序  53 4.3.2 平均情况和最糟情况  54 4.4 小结  57 第5章 散列表  58 5.1 散列函数  60 5.2 应用案例  63 5.2.1 将散列表用于查找  63 5.2.2 防止重复  64 5.2.3 将散列表用作缓存  66 5.2.4 小结   68 5.3 冲突  69 5.4 性能  71 5.4.1 填装因子  72 5.4.2 良好的散列函数  74 5.5 小结  75 第6章 广度优先搜索  76 6.1 图简介  77 6.2 图是什么  79 6.3 广度优先搜索  79 6.3.1 查找最短路径  82 6.3.2 队列   83 6.4 实现图  84 6.5 实现算法  86 6.6 小结  93 第7章 狄克斯特拉算法  94 7.1 使用狄克斯特拉算法  95 7.2 术语  98 7.3 换钢琴  100 7.4 负权边  105 7.5 实现  108 7.6 小结  116 第8章 贪婪算法  117 8.1 教室调度问题  117 8.2 背包问题  119 8.3 集合覆盖问题  121 8.4 NP 完全问题  127 8.4.1 旅行商问题详解  127 8.4.2 如何识别NP完全问题  131 8.5 小结  133 第9章 动态规划  134 9.1 背包问题  134 9.1.1 简单算法  135 9.1.2 动态规划  136 9.2 背包问题FAQ  143 9.2.1 再增加一件商品将如何呢  143 9.2.2 行的排列顺序发生变化时结果将如何  145 9.2.3 可以逐列而不是逐行填充网格吗  146 9.2.4 增加一件更小的商品将如何呢  146 9.2.5 可以偷商品的一部分吗  146 9.2.6 旅游行程最优化  147 9.2.7 处理相互依赖的情况  148 9.2.8 计算最终的解时会涉及两 个以上的子背包吗  148 9.2.9 最优解可能导致背包没装满吗  149 9.3 最长公共子串  149 9.3.1 绘制网格  150 9.3.2 填充网格  151 9.3.3 揭晓答案  152 9.3.4 最长公共子序列  153 9.3.5 最长公共子序列之解决方案  154 9.4 小结  155 第10章 K最近邻算法  156 10.1 橙子还是柚子  156 10.2 创建推荐系统  158 10.2.1 特征抽取  159 10.2.2 回归  162 10.2.3 挑选合适的特征  164 10.3 机器学习简介  165 10.3.1 OCR  165 10.3.2 创建垃圾邮件过滤器  166 10.3.3 预测股票市场  167 10.4 小结  167 第11章 接下来如何做  168 11.1 树  168 11.2 反向索引  171 11.3 傅里叶变换   171 11.4 并行算法  172 11.5 MapReduce  173 11.5.1 分布式算法为何很有用  173 11.5.2 映射函数  173 11.5.3 归并函数  174 11.6 布隆过滤器和HyperLogLog  174 11.6.1 布隆过滤器  175 11.6.2 HyperLogLog  176 11.7 SHA算法  176 11.7.1 比较文件  177 11.7.2 检查密码  178 11.8 局部敏感的散列算法  178 11.9 Diffie-Hellman密钥交换  179 11.10 线性规划  180 11.11 结语  180 练习答案   181 ——《豆瓣读书》

2018-02-17

《C语言深度解剖:解开程序员面试笔试的秘密》(陈正冲 编著)

学习 C 语言,这几本书如果真正啃透了,水平不会差到哪。与其说本书是我授课的经验与心得,不如说本书是我对这些大师们智慧的解读。本书并不是从头到尾讲解 C 语言的基础知识,所以,本书并不适用于 C 语言零基础的人。本书的知识要比一般的 C 语言书说讲的深的多,其中有很多问题是各大公司的面试或笔试题。所以本书的读者应该是中国广大的计算机系的学生和初级程序员。如果本书上面的问题能真正明白 80%,作为一个应届毕业生,肯怕没有一家大公司会拒绝你。当然,书内很多知识也值得计算机教师或是中高级程序员参考。尤其书内的一些例子或比方,如果能被广大教师用于课堂,我想对学生来说是件非常好的事情。有人说电影是一门遗憾的艺术,因为在编辑完成之后总能或多或少的发现一些本来可以做得更好的缺陷。——陈正冲

2018-02-14

《Wireshark网络分析的艺术》(林沛满 编著)

作为网络工程师的你,想摆脱给别人留下的木讷、沉闷、呆板、不善言谈……的印象么?作为高校伟大人民教师的你,想在枯燥乏味的课堂中添加一些乐趣,换回学生的注意力么?作为公司IT部门的老好人,想在给美女同事露一手的同时,并通过渊博的学识来征服她们么? 如果以上答案都为Yes,那么《Wireshark网络分析的艺术》是你的读物,这本诙谐幽默轻松易读……的IT技术图书可以解决上述的所有问题。《Wireshark网络分析的艺术》广度与深度齐备,诙谐幽默的文笔背后是作者多年以来的技术积淀的厚积薄发。 另外,《Wireshark网络分析的艺术》不同于其他枯燥的技术类图书,《Wireshark网络分析的艺术》不务虚,不注水,无阅读尿点,页页干货,篇篇精华,而这一切,均以给读者提供阅读体验为出发点和宗旨。 Wireshark是当前流行的网络包分析工具。它上手简单,无需培训就可入门。很多棘手的网络问题遇到Wireshark都能迎刃而解。 《Wireshark网络分析的艺术》挑选的网络包来自真实场景,经典且接地气。讲解时采用了生活化的语言,力求通俗易懂,以使读者在轻松阅读的过程中,既可以学到实用的网络知识,又能形成解决问题的思路。 与大多网络图书的课堂式体验不同,阅读《Wireshark网络分析的艺术》的感觉更像在听技术圈的朋友分享经验,除了知识,还有心情和想法。本书的覆盖范围从日常使用的手机App,到企业级的数据中心;从对付运营商的网络劫持,到开发自己的分析工具,不一而足。无论你是系统管理员、实施工程师、技术支持、网管、培训教师,还是开发和测试人员,都适合阅读本书。 目录: 答读者问 /1 Linux为什么卡住了? /3 像福尔摩斯一样思考 /7 一篇关于VMware的文章 /12 来点有深度的 /18 三次握手的小知识 /22 被误解的TCP /27 最经典的网络问题 /30 为什么丢了单子? /36 受损的帧 /42 虚惊一场 /45 NTLM协议分析 /49 Wireshark的提示 /54 工作中的Wireshark /61 书上错了吗? /63 计算“在途字节数” /68 估算网络拥塞点 /71 顺便说说LSO /74 熟读RFC /77 一个你本该能解决的问题 /82 几个关于分片的问题 /87 MTU导致的悲剧 /92 迎刃而解 /97 昙花一现的协议 /100 另一种流控 /105 过犹不及 /109 治疗强迫症 /114 技术与工龄 /119 如何科学地推卸责任 /123 一个面试建议 /126 生活中的Wireshark /129 假宽带真相 /131 手机抓包 /138 微博为什么会卡 /145 寻找HttpDNS /148 谁动了我的网络 /155 一个协议的进化 /161 假装产品经理 /168 自学的窍门 /172 两个项目 /177 打造自己的分析工具 /179 一个创业点子 /189

2018-02-03

《Wireshark网络分析就这么简单》(林沛满 编著)

Wireshark可能是世界上最好的开源网络包分析器,能在多种平台上(比如Windows、Linux和Mac)抓取和分析网络包,在IT业界有着广泛的应用。 《Wireshark网络分析就这么简单》采用诙谐风趣的手法,由浅入深地用Wireshark分析了常见的网络协议,读者在学习Wireshark的同时,也会在不知不觉中理解这些协议。作者还通过身边发生的一些真实案例,分享了Wireshark的实战技巧。 《Wireshark网络分析就这么简单》不务虚,不注水,几乎页页干货,篇篇精华,力求为读者提供最佳阅读体验,使读者在一个轻松愉悦的阅读氛围中,潜移默化地掌握Wireshark的使用技巧和网络知识,为你的工程师生涯加油助力。 无论你是技术支持工程师、系统管理员、现场工程师、公司IT部门的老好人,还是高校网络相关专业的教师,无论你是CCNA、CCNP、CCIE,还是MCSE,《Wireshark网络分析就这么简单》都是迅速了解、掌握Wireshark技巧的绝佳读物。 作为网络工程师的你,想摆脱给别人留下的木讷、沉闷、呆板、不善言谈……的印象么?作为高校伟大人民教师的你,想在枯燥乏味的课堂中添加一些乐趣,换回学生的注意力么?作为公司IT部门的老好人,想在给美女同事露一手的同时,并通过渊博的学识来征服她们么?   如果以上答案都为Yes,那么本书是你的首选读物,这本有史以来最NB的IT技术图书可以解决上述的所有问题。本书广度与深度齐备,诙谐幽默的文笔背后是作者多年以来的技术积淀的厚积薄发。   另外,与其他图书最大的不同是,本书不务虚,不注水,无阅读尿点,字字珠玑,页页干货,篇篇精华,而这一切,均以给读者提供最佳阅读体验为出发点和宗旨。   最后,也是最重要的,在掌握了本书的内容之后,您可以自信地去要求领导加薪啦! 目录: 初试锋芒 1   从一道面试题开始说起 3   小试牛刀:一个简单的应用实例 10   Excel文件的保存过程 13   你一定会喜欢的技巧 17   Patrick的故事 29   Wireshark的前世今生 32   庖丁解牛 35   NFS协议的解析 37   从Wireshark看网络分层 52   TCP的连接启蒙 57   快递员的工作策略——TCP窗口 64   重传的讲究 70   延迟确认与Nagle算法 80   百家争鸣 84   简单的代价——UDP 90   剖析CIFS协议 93   网络江湖 104   DNS小科普 111   一个古老的协议——FTP 118   上网的学问——HTTP 126   无懈可击的Kerberos 132   TCPIP的故事 141   举重若轻 145   “一小时内给你答复” 147   午夜铃声 151   深藏功与名 157   棋逢对手 162   学无止境 167   一个技术男的自白 174

2018-02-03

《CPU自制入门》(水头一寿[日]、米泽辽[日]、藤田裕士[日] 著,赵谦 译)

一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层——芯片设计。而近年来FPGA芯片产品的发展与普及打破了这一阻碍,利用内部电路可重编程的FPGA,我们几乎可以实现任何逻辑电路,自然也包括CPU。 本书就是在这样一个背景下孕育而生的。本书利用FPGA,为读者开启了一个崭新的自制CPU的世界。全书分为3章,分别介绍计算机系统最底层的3个部分:CPU设计制作、电路板设计制造以及汇编编程。将如此广泛的技术内容以实践的方式融合成一册,该书可谓首屈一指。本书可以帮助软件工程师深入了解硬件与底层,开发出高效代码。硬件工程师可以在本书基础上设计定制硬件,开发高速计算机系统。相信所有读者都可以在本书的阅读过程中,体会到自制计算机系统的乐趣与热情。 目录: 第1章 CPU的设计与实现  1 1.1   序  2 1.2   计算机系统  4 1.2.1  什么是计算机  4 1.2.2  什么是CPU  5 专栏  CPU的位宽  8 1.2.3  什么是内存  8 1.2.4  什么是I/O  9 专栏  字节序  10 1.2.5  什么是总线  12 专栏  总线的优缺点  14 1.2.6  小结  14 专栏  计算机相关书籍  14 1.3   数字电路基础  15 1.3.1  什么是数字电路  15 1.3.2  数值表达  15 1.3.3  有符号二进制数  16 专栏  比特和字节  17 专栏  1K字节有多大  17 1.3.4  MOSFET的结构  17 1.3.5  逻辑运算  19 1.3.6  CMOS基本逻辑门电路  20 1.3.7  存储元件  21 专栏  建立时间与保持时间  24 1.3.8  组合电路和时序电路  25 1.3.9  时钟同步设计  25 1.3.10  小结  25 专栏  数字电路相关书籍  25 1.4   Verilog HDL语言  26 1.4.1  什么是Verilog HDL  26 1.4.2  电路描述  27 专栏  默认网络类型  32 专栏  组合电路描述中锁存器的推定与Don’t care  37 专栏  正逻辑与负逻辑  42 1.4.3  电路仿真  43 专栏  同步电路中信号变化的时序  45 1.4.4  Verilog HDL的仿真环境  50 1.4.5  小结  56 专栏  Verilog HDL相关书籍  56 1.5   系统蓝图  57 1.5.1  目标系统整体介绍  57 1.5.2  关于本章中的代码  58 专栏  字编址与字节位移  62 1.6   总线的设计与实现  63 1.6.1  总线的设计  63 1.6.2  总线的实现  66 1.6.3  小结  78 1.7   存储器的设计与实现  79 1.7.1  FPGA的RAM区域  79 1.7.2  ROM的设计与实现  81 1.7.3  小结  83 专栏  存储器相关书籍  83 1.8   AZ Processor的设计与实现  84 1.8.1  关于CPU  84 专栏  CPI和MIPS值  93 1.8.2  AZ Processor的设计  93 专栏  指令集架构与微架构  105 1.8.3  AZ Processor的实现  106 1.8.4  小结  159 专栏  计算机架构相关书籍  159 1.9   I/O的设计与实现  162 1.9.1  定时器  162 1.9.2  UART  167 专栏  UART实例  168 1.9.3  GPIO  181 1.9.4  小结  188 专栏  I/O相关书籍  188 1.10   AZPR  SoC整体连接  189 1.10.1  各模块的连接  189 1.10.2  时钟模块的实现  191 1.10.3  顶层模块的实现  193 1.10.4  小结  193 1.11   AZPR SoC的仿真  194 1.11.1  仿真模型的编写  194 1.11.2  Testbench的编写  197 1.11.3  执行仿真  200 1.11.4  小结  201 1.12   本章总结  202 第2章   电路板的设计与制作  203 2.1   序  204 2.2   电路板规格206 2.2.1  电路板名称  206 2.2.2  电路板的构成  206 2.2.3  电路板尺寸  206 2.2.4  电路板层数  207 2.2.5  FPGA选型  207 2.2.6  外围电路的选定  208 专栏  关于FPGA  209 专栏  关于JTAG  211 2.3   元件选型  212 2.3.1  元件选型标准  212 2.3.2  元件选型  212 2.3.3  元件的选购  218 2.4   电路设计  221 2.4.1  下载规格书  222 2.4.2  配置电路  223 2.4.3  外围电路  228 2.4.4  电源电路  232 2.4.5  电路板设计环境  234 2.4.6  使用Eagle设计电路图  236 专栏  关于ULP  241 专栏  Eagle使用方法相关的书籍/说明书  241 2.4.7  完成的电路图  241 2.5   布局设计  247 2.5.1  电路板设计约束条件及布线策略  247 2.5.2  FPGA板的布局设计  248 2.5.3  电源板的布局设计  252 2.5.4  使用Eagle布局  254 2.5.5  完成的布局  259 2.6   制作元件库261 2.6.1  制作Symbol  261 2.6.2  制作Package  263 2.6.3  制作Device  264 2.7   电路板3D模型  269 2.7.1  软件使用说明  269 2.7.2  准备3D模型库  271 专栏  关于3D模型库的管理  278 2.7.3  制作电路板模型  279 2.8   制作感光板电路板  280 2.8.1  整体流程  280 2.8.2  制作光罩  282 2.8.3  粘合光罩  284 2.8.4  曝光  285 2.8.5  显像  288 2.8.6  蚀刻  289 2.8.7  阻焊剂  291 2.8.8  开孔  296 2.8.9  在背面安装VPort接头时的处理  298 2.8.10  制作通孔  299 2.8.11  飞线  300 2.9   使用电路板制造服务  302 2.9.1  电路板制造服务  302 2.9.2  DRC  302 2.9.3  输出Gerber数据  305 2.9.4  检查Gerber数据  306 专栏  执行DFM检查的方法  309 专栏  阻焊层遮罩的印刷设置  312 2.9.5  向P板.com公司下单制板  312 专栏  拼板数据的准备  314 2.9.6  向OLIMEX公司下单制板  318 2.10   组装电路板  321 2.10.1  电源板  321 2.10.2  组装FPGA板  321 2.11   功能测试  323 2.11.1  识别FPGA  323 2.11.2  诊断程序  323 2.12   本章总结  326 第3章   编程  327 3.1   序  328 3.2   开发环境  329 3.2.1  准备工作  329 3.2.2  FPGA开发环境  330 3.2.3  ISE WebPACK  331 3.2.4  UrJTAG  359 专栏  cblsrv-0.1_ft2232  370 3.2.5  交叉汇编程序  370 3.2.6  第一个程序  376 3.3   串口通信  381 3.3.1  安装Tera  Term  381 3.3.2  编写程序  382 专栏  子程序  388 专栏  ASCII码  389 3.3.3  执行程序  390 3.4   程序加载器  391 3.4.1  XMODEM协议  391 3.4.2  编写程序  393 3.4.3  编写加载测试程序  402 3.4.4  执行程序  403 3.5   中断与异常  406 3.5.1  什么是中断  406 3.5.2  编写程序  410 3.5.3  执行程序  414 3.5.4  什么是异常  415 3.5.5  编写程序  415 3.5.6  执行程序  419 3.6   七段数码管  420 3.6.1  什么是七段数码管  420 3.6.2  七段数码管的控制  420 3.6.3  七段数码管计数器概要  422 3.6.4  编写程序  423 3.6.5  执行程序  428 3.7   制作一个实用程序  429 3.7.1  功能概要  429 3.7.2  制作程序  433 3.7.3  执行程序  446 3.8   结语  447 谢辞  448 后记  449 版权声明  450 ——《豆瓣读书》

2018-02-01

《程序员健康指南》(Joe Kutner[美] 著,陈少芸 译)

众所周知,程序员工作压力大、无暇照顾自己,去健身房更是奢侈行为。颈椎病、手腕疼痛、干眼症等问题困扰着几乎所有程序员和长期伏案的工作人员。在久坐不动的室内工作中,在没有大块时间去健身的客观条件下,如何保持身体健康?本书在科学研究和实践的基础上,总结了一些简单易行的健康指导,帮助读者从周身病痛、病弱且极有可能脾气暴躁的黑客,蜕变为快乐、高效的程序员。保持健康没有想象的那么难,更不需要放弃现在的生活。重构健康,从本书开始。 本书是为程序员量身制作的健康指南,针对头痛、眼部疲劳、背部疼痛和手腕疼痛等常见的问题,简要介绍了其成因、测试方法,并列出了每天的行动计划,从运动、饮食等方面给出详细指导,帮助程序员在不改变工作方式的情况下轻松拥有健康。本书适合程序员、长期伏案工作的其他人群以及所有关心健康的人士阅读。 作者简介: Joe Kutner 运动员和健身教练出身的资深程序员,住在美国的火箭城亨茨维尔。Joe从事软件开发十余年,专业特长有Ruby、Java以及iOS等。他曾服务于IBM等国际知名公司,也曾在创业公司打拼,现在是一位Ruby独立开发者,不仅为各种规模的公司构建Ruby和JRuby的应用,而且还向很多开源项目贡献代码,其中包括TorqueBox和Warbler。 目录: 第1章 做出改变   1.1  对健康进行单元测试   1.2  身与心的联系   1.3  迭代式升级健康   1.4  习惯背后的科学   1.5  改编“习惯”程序   目标1  改掉一个习惯   1.6  回顾   第2章 努力健康起来吧   2.1  不要犹豫,走起来   2.2  步向更健康的自己   目标2  买一个计步器   2.3  为健康腾出时间   目标3  测量静息心率   2.4  学会正确步行   2.5  到户外去   2.6  回顾   第3章 永别了,椅子?   3.1  坐,是有害的   3.2  为真理挺身而站   目标4  测量血压   3.3  升级办公桌   目标5  升级办公桌   3.4  回顾   第4章 灵活的饮食方案   4.1  饮食方案的迭代方法   4.2  均衡的营养胜于特殊的饮食   4.3  为了吃,要费尽心思   4.4  别盲目跟风,按照自身需求摄入热量   目标6  计算一天的摄入热量   4.5  调节热量摄入   4.6  个人喜好比预设的餐单更重要   4.7  回顾   第5章 预防头痛和眼部疲劳   5.1  对视力进行单元测试   目标7  进行一次眼部检查   5.2  避免电脑视觉综合征   5.3  避免头痛诱因   5.4  对抗头痛症状   5.5  回顾   第6章 预防背部疼痛   6.1  对核心肌肉群进行单元测试   目标8  通过K-W测试   6.2  认识背部解剖图   6.3  能量源大补给   6.4  根据人体工程学改良办公室   6.5  回顾   第7章 预防手腕疼痛   7.1  对手腕进行单元测试   目标9  在反向屈腕测试中获得阴性结果   7.2  了解手腕疼痛的诱因   7.3  通过锻炼预防手腕疼痛   目标10  参加瑜伽课程   7.4  用亚历山大疗法舒缓身体紧张   7.5  用护腕限制身体动作   7.6  回顾   第8章 让锻炼贴近生活   8.1  锻炼大脑   8.2  来个健康的番茄锻炼法吧   目标11  进行一次番茄锻炼法   8.3  记录锻炼日志   8.4  与健康进行游戏互动   8.5  让健身走向网络   目标12  在健身网站注册一个账号   8.6  回顾   第9章 到户外来思考   9.1  摄入维生素D   9.2  透视维生素D的炒作   目标13  了解家族病史   9.3  增强免疫系统   9.4  对抗感冒   9.5  到树林里思考   目标14  安排一次户外的短途旅行   9.6  回顾   第10章 重构健康   10.1  热身运动   目标15  参加攀岩课程   10.2  多维度认识健康   10.3  对健康进行单元测试   目标16  在成人版总统体能测试中,要让自己的表现达到平均水平   10.4  升级身体硬件   10.5  回顾   第11章 组起队来   11.1  传递信息   目标17  主持一次午餐研讨会   11.2  为健康投资   11.3  和同伴们好好玩   目标18  与同事一起成立或加入一个运动小组   11.4  成立更棒的运动小组   11.5  回顾   第12章 继续行动吧,健康的程序员   12.1  持续取得进步   目标19  不断制定新目标   12.2  建立群体习惯   12.3  保持身心健康的快乐   附录A  目标   附录B  示例   附录C  延伸阅读   译后记   图灵访谈之Joe Kutner: 在运动中工作

2018-02-01

《菜鸟也能防黑客之非技术攻击》(Johnny Long、Scott Pinzon 著,李立新 等 译)

想知道黑客怎样从电脑中获取数据而不留痕迹吗?如何不用碰键盘就能侵入邮件服务器吗?这不是魔幻大片,而是真真正正发生在我们身边。 我们都知道信息的重要性。随着计算机时代的来临,大量的信息以电子的形式存储。而用高科技的电子保护系统来保护信息也就是自然而然的事情。作为一名职业黑客,作者的主要工作就是发现这些系统的弱点。在一次又一次的入侵后,作者发现了可以绕开那些所谓高科技防御系统的方法。本书就是向大家介绍这种方法。正如书名所述,这些方法并不是多么高深的技米,你也一样可以做到。看过本书之后,你会发现在非技术攻击面前,那些所谓的高科技设备是多么的脆弱。 你和你身边的人很可能现在就正在受到此种攻击,你准备好了吗? 目录: 序 前言 第1章 垃圾箱潜伏 垃圾箱潜伏简介 第2章 尾随 引言 乔装打扮 尾随训练 第3章 背后偷窥 什么是背后偷窥 机器外部标签 背后偷窥的理想地点 电子推理 偷窥实战 军事机密 航班间谍 抢银行 在乌干达抢劫银行 第4章 物理安全 引言 撬锁 填塞挂锁 Master号码锁 厕纸与管状锁 电动开锁器:低科技含量的杰作 啤酒打败笔记本计算机锁 TSA锁 枪锁与吸管 进入技术:万能锁卡 入侵技术:激活动作传感器 绕过主动式红外探测器 摄像机闪光 现实世界:机场禁区单锁破解 第5章 社会工程 引言 就这么简单? 人的本性与弱点 你好,进展如何? 受害人的思维 “社会工程永远不可能攻击我们公司!” 我从玛丽那里得到了什么呢? 最后一击 这种诡计为什么能够成功? 应对社会工程攻击 主动提问 安全意识训练 证书 第6章 Google hacking解密 引言的引言 引言 极客的工具(Geek Stuff) 设备 开放型网络设备 开放的应用项目 …… 第7章 P2P攻击 第8章 对人进行观察 第9章 电子自助服务终端 第10章 车辆监视 第11章 证件监视 结语 十大方法应对非技术攻击

2018-02-01

《计算机组成与体系结构:性能设计(原书第8版)》(William Stallings[美] 著,彭蔓蔓 等 译)

William Stallings 拥有美国麻省理工学院计算机科学博士学位,现任教于澳大利亚新南威尔士大学国防学院(堪培拉)信息技术与电子工程系。他是世界知名计算机学者和畅销教材作者,出版了40多本书籍,内容涉及计算机安全、计算机网络和计算机体系结构等方面,堪称计算机界的全才。他曾十次荣获美国“教材和学术专著作者协会”颁发的“年度最佳计算机科学教材”奖。 本书(作者斯托林斯)以IntelX86和ARM两个处理器系列为例,结合当代计算机系统性能设计问题,介绍了计算机体系结构的主流技术和最新技术。本书共18章,分5个部分,部分(第1-2章)概述计算机组成与体系结构,并讨论计算机的演变和性能;第二部分(第3-8章)讨论计算机的主要部件及其互连;第三部分(第9-14章)讨论处理器的内部结构和组织;第四部分(第15-16章)讨论处理器中控制器的内部结构和微程序设计的使用;第五部分(第17-18章)讨论并行组织,包括对称多处理器、集群系统和多核体系结构。本书可作为计算机及相关专业的计算机体系结构课程教材或教学参考书,同时也可以作为从事计算机研究与开发的技术人员的参考书。 目录: 出版者的话 译者序 前言 第0章 读者指南 第一部分 概论  第1章 导论  第2章 计算机的演变和性能 第二部分 计算机系统  第3章 计算机功能和互连的顶层视图  第4章 CACHE存储器  第5章 内部存储器  第6章 外部存储器  第7章 输入/输出  第8章 操作系统支持 第三部分 中央处理器  第9章 计算机算术  第10章 指令集:特征和功能  第11章 指令集:寻址方式和指令格式  第12章 CPU结构和功能  第13章 精简指令集计算机  第14章 指令级并行性和超标量处理器 第四部分 控制器  第15章 控制器操作  第16章 微程序控制 第五部分 并行组织  第17章 并行处理  第18章 多核计算机 附录 术语表 参考文献

2018-01-23

《计算机的心智:操作系统之哲学原理》(邹恒明 编著)

本书集中精力对操作系统的核心内容进行分析,包括操作系统发展的历史背景、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容,而放弃了对操作系统核心以外内容,如安全、多媒体系统、虚拟机技术、光盘技术等的论述。本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容。. 本书层次丰富、涵盖操作系统的所有核心内容,适合作为国内高校计算机及相关专业本科生操作系统课程的教材,也是了解计算机操作系统原理不可多得的参考书。 这是一个瞬息万变的时代。.. 分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储正慢慢揭开面纱……在所有的变化中,不变的是这些计算的支柱:操作系统!能否深刻理解它也许会决定云时代的“浮沉”。 本书从生活哲学的视角对操作系统的原理进行阐述,通过逻辑推理演绎操作系统核心技术的奥秘,讨论范围包括操作系统的所有基础内容:背景与历史。进程与线程、通信与同步、调度与死锁,分页与分段。磁盘与文件。输入与输出等。此外,作者以新颖的组织方式讲解了锁的实现、同步机制的发展逻辑。从分段到段页式的演变、多核环境下的同步与调度、操作系统设计的原则。 本书对操作系统原理的讨论充满趣味性:每一章都力求细致地阐明一个主题,将通俗的哲学原理和逻辑推理贯穿于每一个主题,构成全书的有机整体,并适当地引入计算机组成和编译器知识,揭示操作系统在程序运行中发挥的作用,把读者对操作系统的理解带到一个崭新的境界。 目录: 前言 第一篇 基础原理篇  第1章 操作系统导论  第2章 操作系统历史  第3章 操作系统基本概念 第二篇 进程原理篇  第4章 进程  第5章 线程  第6章 线程通信  第7章 进程同步   第8章 进程调度  第9章 锁的实现  第10章 死锁应对 第三篇 内存原理篇  第11章 基本内存管理  第12章 页式内存管理  第13章 页面更换算法  第14章 段式内存管理 第四篇 文件原理篇  第15章 磁盘操作  第16章 文件基础  第17章 文件系统实现  第18章 文件系统 第五篇 I/O原理篇  第19章 输入输出 第六篇 多核原理篇  第20章 多核结构与内存  第21章 多核环境下的进程同步与调度 第七篇 操作系统设计原理篇  第22章 操作系统设计之原理 结语 参考文献

2018-01-23

《30天自制操作系统》(川合秀实[日] 著,周自恒 等 译)

自己编写一个操作系统,是许多程序员的梦想。也许有人曾经挑战过,但因为太难而放弃了。其实你错了,你的失败并不是因为编写操作系统太难,而是因为没有人告诉你那其实是一件很简单的事。那么,你想不想再挑战一次呢?这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、C语言开始解说,让你在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位多任务操作系统。本书以课题为主导,边做边玩,抛开晦涩难懂的语言,行文风格十分随性,还充满了各种欢乐的吐槽,适合操作系统爱好者和程序设计人员阅读。 作者: 川合秀实(Hidemi Kawai)生于1975年,是一位以“轻量化”编程思想见长的“非主流”开发者。2000年因自行开发的OSASK项目而名声大噪。OSASK是一个开源的32位微型操作系统,它并非以Linux等内核为基础,而是完全从零开始开发,在一张软盘的容量下实现了GUI、多任务、多语言等高级特性,启动时间只需1秒。本书的内容可以看成是作者以OSASK为蓝本,教会读者从零开始开发一个操作系统,同时可以让初学者在编写操作系统的过程中,了解操作系统背后更多的知识。 目录: 第0天  着手开发之前  1 1  前言  1 2  何谓操作系统  3 3  开发操作系统的各种方法  4 4  无知则无畏  4 5  如何开发操作系统  6 6  操作系统开发中的困难  7 7  学习本书时的注意事项(重要!)  9 8  各章内容摘要  11 第1天  从计算机结构到汇编程序入门  13 1  先动手操作  13 2  究竟做了些什么  19 3  初次体验汇编程序  22 4  加工润色  24 第2天  汇编语言学习与Makefile入门  28 1  介绍文本编辑器  28 2  继续开发  29 3  先制作启动区  40 4  Makefile入门  41 第3天  进入32位模式并导入C语言  45 1  制作真正的IPL  45 2  试错  50 3  读到18扇区  51 4  读入10个柱面  52 5  着手开发操作系统  54 6  从启动区执行操作系统  55 7  确认操作系统的执行情况  56 8  32位模式前期准备  57 9  开始导入C语言  59 10  实现HLT(harib00j)  62 第4天  C语言与画面显示的练习  64 1  用C语言实现内存写入(harib01a)  64 2  条纹图案(harib01b)  67 3  挑战指针(harib01c)  69 4  指针的应用(1)(harib01d)  74 5  指针的应用(2)(harib01e)  74 6  色号设定(harib01f)  75 7  绘制矩形(harib01g)  84 8  今天的成果(harib01h)  86 第5天  结构体、文字显示与GDT/IDT初始化  88 1  接收启动信息(harib02a)  88 2  试用结构体(harib02b)  89 3  试用箭头记号(harib02c)  91 4  显示字符(harib02d)  91 5  增加字体(harib02e)  94 6  显示字符串(harib02f)  96 7  显示变量值(harib02g)  97 8  显示鼠标指针(harib02h)  99 9  GDT与IDT的初始化(harib02i)  101 第6天  分割编译与中断处理  108 1  分割源文件(harib03a)  108 2  整理Makefile(harib03b)  109 3  整理头文件(harib03c)  110 4  意犹未尽  112 5  初始化PIC(harib03d)  115 6  中断处理程序的制作(harib03e)  119 第7天  FIFO与鼠标控制  125 1  获取按键编码(hiarib04a)  125 2  加快中断处理(hiarib04b)  127 3  制作FIFO缓冲区(hiarib04c)  130 4  改善FIFO缓冲区(hiarib04d)  133 5  整理FIFO缓冲区(hiarib04e)  135 6  总算讲到鼠标了(harib04f)  138 7  从鼠标接受数据(harib04g)  141 第8天  鼠标控制与32位模式切换  144 1  鼠标解读(1)(harib05a)  144 2  稍事整理(harib05b)  146 3  鼠标解读(2)(harib05c)  148 4  移动鼠标指针(harib05d)  151 5  通往32位模式之路  153 第9天  内存管理  162 1  整理源文件(harib06a)  162 2  内存容量检查(1)(harib06b)  163 3  内存容量检查(2)(harib06c)  168 4  挑战内存管理(harib06d)  172 第10天  叠加处理  181 1  内存管理(续)(harib07a)  181 2  叠加处理(harib07b)  184 3  提高叠加处理速度(1)(harib07c)  194 4  提高叠加处理速度(2)(harib07d)  197 第11天  制作窗口  201 1  鼠标显示问题(harib08a)  201 2  实现画面外的支持(harib08b)  202 3  shtctl的指定省略(harib08c)  203 4  显示窗口(harib08d)  206 5  小实验(harib08e)  208 6  高速计数器(harib08f)  209 7  消除闪烁(1)(harib08g)  211 8  消除闪烁(2)(harib08h)  214 第12天  定时器(1)  220 1  使用定时器(harib09a)  220 2  计量时间(harib09b)  224 3  超时功能(harib09c)  225 4  设定多个定时器(harib09d)  228 5  加快中断处理(1)(harib09e)  232 6  加快中断处理(2)(harib09f)  234 7  加快中断处理(3)(harib09g)  236 第13天  定时器(2)  240 1  简化字符串显示(harib10a)  240 2  重新调整FIFO缓冲区(1)(harib10b)  241 3  测试性能(harib10c~harib10f)  243 4  重新调整FIFO缓冲区(2)(harib10g)  246 5  加快中断处理(4)(harib10h)  253 6  使用“哨兵”简化程序(harib10i)  257 第14天  高分辨率及键盘输入  262 1  继续测试性能(harib11a~harib11c)  262 2  提高分辨率(1)(harib11d)  266 3  提高分辨率(2)(harib11e)  269 4  键盘输入(1)(harib11f)  272 5  键盘输入(2)(harib11g)  275 6  追记内容(1)(harib11h)  277 7  追记内容(2)(harib11i)  279 第15天  多任务(1)  282 1  挑战任务切换(harib12a)  282 2  任务切换进阶(harib12b)  289 3  做个简单的多任务(1)(harib12c)  291 4  做个简单的多任务(2)(harib12d)  293 5  提高运行速度(harib12e)  294 6  测试运行速度(harib12f)  297 7  多任务进阶(harib12g)  299 第16天  多任务(2)  304 1  任务管理自动化(harib13a)  304 2  让任务休眠(harib13b)  308 3  增加窗口数量(harib13c)  313 4  设定任务优先级(1)(harib13d)  317 5  设定任务优先级(2)(harib13e)  320 第17天  命令行窗口  329 1  闲置任务(harib14a)  329 2  创建命令行窗口(harib14b)  331 3  切换输入窗口(harib14c)  334 4  实现字符输入(harib14d)  337 5  符号的输入(harib14e)  341 6  大写字母与小写字母(harib14f)  343 7  对各种锁定键的支持(harib14g)  346 第18天  dir命令  350 1  控制光标闪烁(1)(harib15a)  350 2  控制光标闪烁(2)(harib15b)  352 3  对回车键的支持(harib15c)  355 4  对窗口滚动的支持(harib15d)  357 5  mem命令(harib15e)  359 6  cls命令(harib15f)  363 7  dir命令(harib15g)  366 第19天  应用程序  371 1  type命令(harib16a)  371 2  type命令改良(harib16b)  378 3  对FAT的支持(harib16c)  382 4  代码整理(harib16d)  387 5  第一个应用程序(harib16e)  387 第20天  API  392 1  程序整理(harib17a)  392 2  显示单个字符的API(1)(harib17b)  399 3  显示单个字符的API(2)(harib17c)  402 4  结束应用程序(harib17d)  403 5  不随操作系统版本而改变的API(harib17e)  405 6  为应用程序自由命名(harib17f)  408 7  当心寄存器(harib17g)  410 8  用API显示字符串(harib17h)  412 第21天  保护操作系统  418 1  攻克难题——字符串显示API(harib18a)  418 2  用C语言编写应用程序(harib18b)  420 3  保护操作系统(1)(harib18c)  424 4  保护操作系统(2)(harib18d)  426 5  对异常的支持(harib18e)  431 6  保护操作系统(3)(harib18f)  434 7  保护操作系统(4)(harib18g)  435 第22天  用C语言编写应用程序  443 1  保护操作系统(5)(harib19a)  443 2  帮助发现bug(harib19b)  448 3  强制结束应用程序(harib19c)  452 4  用C语言显示字符串(1)(harib19d)  455 5  用C语言显示字符串(2)(harib19e)  457 6  显示窗口(harib19f)  462 7  在窗口中描绘字符和方块(harib19g)  465 第23天  图形处理相关  468 1  编写malloc(harib20a)  468 2  画点(harib20b)  472 3  刷新窗口(harib20c)  475 4  画直线(harib20d)  478 5  关闭窗口(harib20e)  483 6  键盘输入API(harib20f)  484 7  用键盘输入来消遣一下(harib20g)  488 8  强制结束并关闭窗口(harib20h)  489 第24天  窗口操作  493 1  窗口切换(1)(harib21a)  493 2  窗口切换(2)(harib21b)  495 3  移动窗口(harib21c)  496 4  用鼠标关闭窗口(harib21d)  498 5  将输入切换到应用程序窗口(harib21e)  500 6  用鼠标切换输入窗口(harib21f)  506 7  定时器API(harib21g)  507 8  取消定时器(harib21h)  511 第25天  增加命令行窗口  515 1  蜂鸣器发声(harib22a)  515 2  增加更多的颜色(1)(harib22b)  518 3  增加更多的颜色(2)(harib22c)  520 4  窗口初始位置(harib22d)  523 5  增加命令行窗口(1)(harib22e)  524 6  增加命令行窗口(2)(harib22f)  528 7  增加命令行窗口(3)(harib22g)  531 8  增加命令行窗口(4)(harib22h)  532 9  变得更像真正的操作系统(1)(harib22i)  534 10  变得更像真正的操作系统(2)(harib22j)  538 第26天  为窗口移动提速  541 1  提高窗口移动速度(1)(harib23a)  541 2  提高窗口移动速度(2)(harib23b)  543 3  提高窗口移动速度(3)(harib23c)  547 4  提高窗口移动速度(4)(harib23d)  549 5  启动时只打开一个命令行窗口(harib23e)  551 6  增加更多的命令行窗口(harib23f)  554 7  关闭命令行窗口(1)(harib23g)  555 8  关闭命令行窗口(2)(harib23h)  561 9  start命令(harib23i)  563 10  ncst命令(harib23j)  564 第27天  LDT与库  571 1  先来修复bug(harib24a)  571 2  应用程序运行时关闭命令行窗口(harib24b)  573 3  保护应用程序(1)(harib24c)  577 4  保护应用程序(2)(harib24d)  580 5  优化应用程序的大小(harib24e)  583 6  库(harib24f)  587 7  整理make环境(harib24g)  590 第28天  文件操作与文字显示  598 1  alloca(1)(harib25a)  598 2  alloca(2)(harib25b)  601 3  文件操作API(harib25c)  605 4  命令行API(harib25d)  612 5  日文文字显示(1)(harib25e)  615 6  日文文字显示(2)(harib25f)  624 7  日文文字显示(3)(harib25g)  629 第29天  压缩与简单的应用程序  635 1  修复bug(harib26a)  635 2  文件压缩(harib26b)  636 3  标准函数  644 4  非矩形窗口(harib26c)  647 5  bball(harib26d)  648 6  外星人游戏(harib26e)  651 第30天  高级的应用程序  659 1  命令行计算器(harib27a)  659 2  文本阅览器(harib27b)  664 3  MML播放器(harib27c)  671 4  图片阅览器(harib27d)  679 5  IPL的改良(harib27e)  683 6  光盘启动(harib27f)  688 第31天  写在开发完成之后  690 1  继续开发要靠大家的努力  690 2  关于操作系统的大小  692 3  操作系统开发的诀窍  693 4  分享给他人使用  694 5  关于光盘中的软件  695 6  关于开源的建议  696 7  后记  698 8  毕业典礼  703 9  附录  704 ——《豆瓣读书》

2018-01-23

《计算机科学的基础》(Al Aho、Jeff Ullman 著,傅尔也 译)

1.本书是计算机科学领域的名著 2.从后台算法到实际应用,全部例子均为C语言 3.内容全面,讲解清晰 本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想贯穿各个主题,很好地兼顾了学科广度和主题深度,帮助读者培养计算机领域的大局观,学习真正的计算机科学。 我们相信,在1992年,本书适合用来介绍计算机科学理论,今天仍然是。——Al Aho 和 Jeffrey Ullman 目录: 第 1 章 计算机科学:将抽象机械化 第 2 章 迭代、归纳和递归 第 3 章 程序的运行时间 第 4 章 组合与概率 第 5 章 树 第 6 章 表数据模型 第 7 章 集合数据模型 第 8 章 关系数据模型 第 9 章 图数据模型 第 10 章 模式、自动机和正则表达式 第 11 章 模式的递归描述 第 12 章 命题逻辑 第 13 章 利用逻辑设计计算机元件 第 14 章 谓词逻辑

2018-01-23

《现代操作系统(第3版)》(Andrew S·Tanenbaum[美] 著,陈向群、马洪兵 译)

本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、Windows Vista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。此外,还在第2版的基础上对部分习题进行了增删,更有助于读者学习和对知识的理解及掌握。本书适合作为高等院校计算机专业操作系统课程教材,也是设计、开发操作系统的重要参考书。Tanenbaum教授作为三个操作系统的设计师或联合设计师,具有长期设计开发操作系统的经验,从而把其对理论的深入理解和具体实践融入书中,使本书成为操作系统领域的经典之作。在本书第3版中,作者深入讨论了许多主题,包括:进程、线程、存储管理、文件系统、I/O、死锁、接口设计、多媒体、性能权衡,以及有关操作系统设计的最新趋势。书中不仅涵盖了现代操作系统的原理和实践,而且特别关注了Linux操作系统、Windows Vista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统。 目录: 出版者的话 译者充 前言 第1章 引论 1.1 什么是操作系统 1.1.1 作为扩展机器的操作系统 1.1.2 作为资源管理者的操作系统 1.2 操作系统的历史 1.2.1 第一代(1945~1955):真空管和穿孔卡片 1.2.2 第二代(1955~1965):晶体管和批处理系统 1.2.3 第三代(1965~1980):集成电路芯片和多道程序设计 l.2.4第四代(1980年至今):个人 计算机 1.3 计算机硬件介绍 1.3.1 处理器 1.3.2 存储器 1.3.3 磁盘 1.3.4 磁带 1.3.5 I/O设备 1.3.6 总线 1.3.7 启动计算机 1.4 操作系统大观园 1.4.1 大型机操作系统 1.4.2 服务器操作系统 1.4.3 多处理器操作系统 1.4.4 个人计算机操作系统 1.4.5 掌上计算机操作系统 1.4.6 嵌入式操作系统 1.4.7 传感器节点操作系统 1.4.8 实时操作系统 1.4.9 智能卡操作系统 1.5 操作系统概念 1.5.1 进程 1.5.2 地址空间 1.5.3 文件 1.5.4 输入/输出 1.5.5 保护 1.5.6 shell 1.5.7 个体重复系统发育 1.6 系统调用 1.6.1 用于进程管理的系统调用 1.6.2 用于文件管理的系统调用 1.6.3 用于目录管理的系统调用 1.6.4 各种系统调用 1.6.5 WindowsWin32API 1.7 操作系统结构 1.7.1 单体系统 1.7.2 层次式系统 1.7.3 微内核 1.7.4 客户机-服务器模式 1.7.5 虚拟机 1.7.6 外核 1.8 依靠C的世界 1.8.1 C语言 1.8.2 头文件 1.8.3 大型编程项目 1.8.4 运行模型 1.9 有关操作系统的研究 1.10 本书其他部分概要 1.11 公制单位 1.12 小结 习题 第2章 进程与线程 2.1 进程 2.1.1 进程模型 2.1.2 创建进程 2.1.3 进程的终止 2.1.4 进程的层次结构 2.1.5 进程的状态 2.1.6 进程的实现 2.1.7 多道程序设计模型 2.2 线程 2.2.1 线程的使用 2.2.2 经典的线程模型 2.2.3 POSIX线程 2.2.4 在用户空间中实现线程 2.2.5 在内核中实现线程 2.2.6 混合实现 2.2.7 调度程序激活机制 2.2.8 弹出式线程 2.2.9 使单线程代码多线程化 2.3 进程间通信 2.3.1 竞争条件 2.3.2 临界区 2.3.3 忙等待的互斥 2.3.4 睡眠与唤醒 2.3.5 信号量 2.3.6 互斥量 2.3.7 管程 2.3.8 消息传递 2.3.9 屏障 2.4 调度 2.4.1 调度介绍 2.4.2 批处理系统中的调度 2.4.3 交互式系统中的调度 2.4.4 实时系统中的调度 2.4.5 策略和机制 2.4.6 线程调度 2.5 经典的IPC问题 2.5.1 哲学家就餐问题 2.5.2 读者一写者问题 2.6 有关进程和线程的研究 2.7 小结 习题 第3章 存储管理 3.1 无存储器抽象 3.2 一种存储器抽象:地址空间 3.2.1 地址空间的概念 3.2.2 交换技术 3.2.3 空闲内存管理 3.3 虚拟内存 3.3.1 分页 3.3.2 页表 3.3.3 加速分页过程 3.3.4 针对大内存的页表 3.4 页面置换算法 3.4.1 最优页面置换算法 3.4.2 最近未使用页面置换算法 3.4.3 先进先出页面置换算法 3.4.4 第二次机会页面置换算法 3.4.5 时钟页面置换算法 3.4.6 最近最少使用页面置换算法 3.4.7 用软件模拟LRU 3.4.8 工作集页面置换算法 3.4.9 工作集时钟页面置换算法 3.4.10 页面置换算法小结 3.5 分页系统中的设计问题 3.5.1 局部分配策略与全局分配策略 3.5.2 负载控制 3.5.3 页面大小 3.5.4 分离的指令空间和数据空间 3.5.5 共享页面 3.5.6 共享库 3.5.7 内存映射文件 3.5.8 清除策略 3.5.9 虚拟内存接口 3.6 有关实现的问题._ 3.6.1 与分页有关的工作 3.6.2 缺页中断处理 3.6.3 指令备份__ 3.6.4 锁定内存中的页面 3.6.5 后备存储 3.6.6 策略和机制的分离 3.7 分段 3.7.1 纯分段的实现 3.7.2 分段和分页结合:MULTICS 3.7.3 分段和分页结合:Intel Pentium 3.8 有关存储管理的研究 3.9 小结 习题 第4章 文件系统 4.1 文件 4.1.1 文件命名 4.1.2 文件结构 4.1.3 文件类型 4.1.4 文件存取 4.1.5 文件属性 4.1.6 文件操作 4.1.7 使用文件系统调用的一个示例程序 4.2 目录 4.2.1 一级目录系统 4.2.2 层次目录系统 4.2.3 路径名 4.2.4 目录操作 4.3 文件系统的实现 4.3.1 文件系统布局 4.3.2 文件的实现 4.3.3 目录的实现 4.3.4 共享文件 4.3.5 日志结构文件系统 4.3.6 日志文件系统 4.3.7 虚拟文件系统 4.4 文件系统管理和优化 4.4.1 磁盘空间管理 4.4.2 文件系统备份 4.4.3 文件系统的一致性 4.4.4 文件系统性能 4.4.5 磁盘碎片整理 4.5 文件系统实例 4.5.1 CD-ROM文件系统 4.5.2 MS-DOS文件系统 4.5.3 UNIXV7文件系统 4.6 有关文件系统的研究 4.7 小结 习题 第5章 输入/输出 5.1 I/O硬件原理 5.1.1 I/O设备 5.1.2 设备控制器 5.1.3 内存映射I/O 5.1.4 直接存储器存取 5.1.5 重温中断 5.2 I/O软件原理 5.2.1 I/O软件的目标 5.2.2 程序控制I/O 5.2.3 中断驱动I/O 5.2.4 使用DMA的I/O 5.3 I/O软件层次 5.3.1 中断处理程序 5.3.2 设备驱动程序 5.3.3 与设备无关的I/O软件 5.3.4 用户空间的I/O软件 5.4 盘 5.4.1 盘的硬件 5.4.2 磁盘格式化 5.4.3 磁盘臂调度算法 5.4.4 错误处理 5.4.5 稳定存储器 5.5 时钟 5.5.1 时钟硬件 5.5.2 时钟软件 5.5.3 软定时器 5.6 用户界面:键盘、鼠标和监视器 5.6.1 输入软件 5.6.2 输出软件 5.7 瘦客户机 5.8 电源管理 5.8.1 硬件问题 5.8.2 操作系统问题 5.8.3 应用程序问题 5.9 有关输入/输出的研究 5.10 小结 习题 第6章 死锁 6.1 资源 6.1.1 可抢占资源和不可抢占资源 6.1.2 资源获取 6.2 死锁概述 6.2.1 资源死锁的条件 6.2.2 死锁建模 6.3 鸵鸟算法 6.4 死锁检测和死锁恢复 6.4.1 每种类型一个资源的死锁检测 6.4.2 每种类型多个资源的死锁检测 6.4.3 从死锁中恢复 6.5 死锁避免 6.5.1 资源轨迹图 6.5.2 安全状态和不安全状态 6.5.3 单个资源的银行家算法 6.5.4 多个资源的银行家算法 6.6 死锁预防 6.6.1 破坏互斥条件 6.6.2 破坏占有和等待条件 6.6.3 破坏不可抢占条件 6.6.4 破坏环路等待条件 6.7 其他问题 6.7.1 两阶段加锁 6.7.2 通信死锁 6.7.3 活锁 6.7 -4饥饿 6.8.有关死锁的研究 6.9 小结 习题 第7章 多媒体操作系统 7.1 多媒体简介 7.2 多媒体文件 7.2.1 视频编码 7.2.2 音频编码 7.3 视频压缩 7.3.1 JPEG标准 7.3.2 MPEG标准 7.4 音频压缩 7.5 多媒体进程调度 7.5.1 调度同质进程 7.5.2 一般实时调度 7.5.3 速率单调调度 7.5.4 最早最终时限优先调度 7.6 多媒体文件系统范型 7.6.1 VCR控制功能 7.6.2 近似视频点播 7.6.3 具有VCR功能的近似视频点播 7.7 文件存放 7.7.1 在单个磁盘上存放文件 7.7.2 两个替代的文件组织策略 7.7.3 近似视频点播的文件存放 7.7.4 在单个磁盘上存放多个文件 7.7.5 在多个磁盘上存放文件 7.8 高速缓存 7.8.1 块高速缓存 7.8.2 文件高速缓存 7.9 多媒体磁盘调度 7.9.1 静态磁盘调度 7.9.2 动态磁盘调度 7.10 有关多媒体的研究 7.11 小结 习题 第8章 多处理机系统 8.1 多处理机 8.1.1 多处理机硬件 8.1.2 多处理机操作系统类型 8.1.3 多处理机同步 8.1.4 多处理机调度 8.2 多计算机 8.2.1 多计算机硬件 8.2.2 低层通信软件 8.2.3 用户层通信软件 8.2.4 远程过程调用 8.2.5 分布式共享存储器 8.2.6 多计算机调度 8.2.7 负载平衡 8.3 虚拟化 8.3.1 虚拟化的条件 8.3.2 Ⅰ型管理程序 8.3.3 Ⅱ型管理程序 8.3.4 准虚拟化 8.3.5 内存的虚拟化 8.3.6 I/0设备的虚拟化 8.3.7 虚拟工具 8.3.8 多核处理机上的虚拟机 8.3.9 授权问题 8.4 分布式系统 8.4.1 网络硬件 8.4.2 网络服务和协议 8.4.3 基于文档的中间件 8.4.4 基于文件系统的中间件 8.4.5 基于对象的中间件 8.4.6 基于协作的中间件 8.4.7 网格 8.5 有关多处理机系统的研究 8.6 小结 习题 第9章 安全 第10章 实例研究1:Linux 第11章 实例研究2:Windows Visa 第12章 实例研究3:Symbian操作系统 第13章 操作系统设计 第14章 阅读材料及参考文献 ——《豆瓣读书》

2018-01-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除