-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
前言第一部分 语言篇第1章 基本语言要素建议1:正确操作字符串建议2:使用默认转型方法建议3:区别对待强制转型与as和is建议4:TryParse比Parse好建议5:使用int?来确保值类型也可以为null建议6:区别readonly和const的使用方法建议7:将0值作为枚举的默认值建议8:避免给枚举类型的元素提供显式的值建议9:习惯重载运算符建议10:创建对象时需要考虑是否实现比较器建议11:区别对待==和Equals建议12:重写Equals时也要重写GetHashCode建议13:为类型输出格式化字符串建议14:正确实现浅拷贝和深拷贝建议15:使用dynamic来简化反射实现第2章 集合和LINQ建议16:元素数量可变的情况下不应使用数组建议17:多数情况下使用foreach进行循环遍历建议18:foreach不能代替for建议19:使用更有效的对象和集合初始化建议20:使用泛型集合代替非泛型集合建议21:选择正确的集合建议22:确保集合的线程安全建议23:避免将List作为自定义集合类的基类建议24:迭代器应该是只读的建议25:谨慎集合属性的可写操作建议26:使用匿名类型存储LINQ查询结果建议27:在查询中使用Lambda表达式建议28:理解延迟求值和主动求值之间的区别建议29:区别LINQ查询中的IEnumerable和IQueryable建议30:使用LINQ取代集合中的比较器和迭代器建议31:在LINQ查询中避免不必要的迭代第3章 泛型、委托和事件建议32:总是优先考虑泛型建议33:避免在泛型类型中声明静态成员建议34:为泛型参数设定约束建议35:使用default为泛型类型变量指定初始值建议36:使用FCL中的委托声明建议37:使用Lambda表达式代替方法和匿名方法建议38:小心闭包中的陷阱建议39:了解委托的实质建议40:使用event关键字为委托施加保护建议41:实现标准的事件模型建议42:使用泛型参数兼容泛型接口的不可变性建议43:让接口中的泛型参数支持协变建议44:理解委托中的协变建议45:为泛型类型参数指定逆变第4章 资源管理和序列化建议46:显式释放资源需继承接口IDisposable建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理建议48:Dispose方法应允许被多次调用建议49:在Dispose模式中应提取一个受保护的虚方法建议50:在Dispose模式中应区别对待托管资源和非托管资源建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的建议52:及时释放资源建议53:必要时应将不再使用的对象引用赋值为null建议54:为无用字段标注不可序列化建议55:利用定制特性减少可序列化的字段建议56:使用继承ISerializable接口更灵活地控制序列化过程建议57:实现ISerializable的子类型应负责父类的序列化第5章 异常与自定义异常建议58:用抛出异常代替返回错误代码建议59:不要在不恰当的场合下引发异常建议60:重新引发异常时使用Inner Exception建议61:避免在finally内撰写无效代码建议62:避免嵌套异常建议63:避免“吃掉”异常建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内建议65:总是处理未捕获的异常建议66:正确捕获多线程中的异常建议67:慎用自定义异常建议68:从System.Exception或其他常见的基本异常中派生异常建议69:应使用finally避免资源泄漏建议70:避免在调用栈较低的位置记录异常第6章 异步、多线程、任务和并行建议71:区分异步和多线程应用场景建议72:在线程同步中使用信号量建议73:避免锁定不恰当的同步对象建议74:警惕线程的IsBackground建议75:警惕线程不会立即启动建议76:警惕线程的优先级建议77:正确停止线程建议78:应避免线程数量过多建议79:使用ThreadPool或BackgroundWorker代替Thread建议80:用Task代替ThreadPool建议81:使用Parallel简化同步状态下Task的使用建议82:Parallel简化但不等同于Task默认行为建议83:小心Parallel中的陷阱建议84:使用PLINQ建议85:Task中的异常处理建议86:Parallel中的异常处理建议87:区分WPF和WinForm的线程模型建议88:并行并不总是速度更快建议89:在并行方法体中谨慎使用锁第二部分 架构篇第7章 成员设计建议90:不要为抽象类提供公开的构造方法建议91:可见字段应该重构为属性建议92:谨慎将数组或集合作为属性建议93:构造方法应初始化主要属性和字段建议94:区别对待override和new建议95:避免在构造方法中调用虚成员建议96:成员应优先考虑公开基类型或接口建议97:优先考虑将基类型或接口作为参数传递建议98:用params减少重复参数建议99:重写时不应使用子类参数建议100:静态方法和实例方法没有区别建议101:使用扩展方法,向现有类型“添加”方法第8章 类型设计建议102:区分接口和抽象类的应用场合建议103:区分组合和继承的应用场合建议104:用多态代替条件语句建议105:使用私有构造函数强化单例建议106:为静态类添加静态构造函数建议107:区分静态类和单例建议108:将类型标识为sealed建议109:谨慎使用嵌套类建议110:用类来代替enum建议111:避免双向耦合建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间第9章 安全性设计建议113:声明变量前考虑最大值建议114:MD5不再安全建议115:通过HASH来验证文件是否被篡改建议116:避免用非对称算法加密文件建议117:使用SSL确保通信中的数据安全建议118:使用SecureString保存密钥等机密字符串建议119:不要使用自己的加密算法建议120:为程序集指定强名称建议121:为应用程序设定运行权限第三部分 编码规范及习惯第10章 命名规范建议122:以.为命名空间命名建议123:程序集不必与命名空间同名建议124:考虑在命名空间中使用复数建议125:避免用FCL的类型名称命名自己的类型建议126:用名词和名词组给类型命名建议127:用形容词组给接口命名建议128:考虑让派生类的名字以基类名字作为后缀建议129:泛型类型参数要以T作为前缀建议130:以复数命名枚举类型,以单数命名枚举元素建议131:用PascalCasing命名公开元素建议132:考虑用类名作为属性名建议133:用camelCasing命名私有字段和局部变量建议134:有条件地使用前缀建议135: 考虑使用肯定性的短语命名布尔属性建议136:优先使用后缀表示已有类型的新版本建议137:委托和事件类型应添加上级后缀建议138:事件和委托变量使用动词或形容词短语命名建议139:事件处理器命名采用组合方式第11章 代码整洁建议140:使用默认的访问修饰符建议141:不知道该不该用大括号时,就用建议142:总是提供有意义的命名建议143:方法抽象级别应在同一层次建议144:一个方法只做一件事建议145:避免过长的方法和过长的类建议146:只对外公布必要的操作建议147:重构多个相关属性为一个类建议148:不重复代码建议149:使用表驱动法避免过长的if和switch分支建议150:使用匿名方法、Lambda表达式代替方法建议151:使用事件访问器替换公开的事件成员变量建议152:最少,甚至是不要注释建议153:若抛出异常,则必须要注释第12章 规范开发行为建议154:不要过度设计,在敏捷中体会重构的乐趣建议155:随生产代码一起提交单元测试代码建议156:利用特性为应用程序提供多个版本建议157:从写第一个界面开始,就进行自动化测试 内容推荐 本书是C#程序员进阶修炼的必读之作,包含的全部都是C#编码的最佳实践,从语言本身、程序的设计和架构、编码规范和编程习惯等三大方面对C#程序员遇到的经典问题给出了经验性的解决方案,为C#程序员如何编写更高质量的C#代码提供了157条极为宝贵的建议。对于每一个问题,不仅以建议的方式给出了被实践证明为十分优秀的解决方案,而且还给出了经常被误用或被错误理解的不好的解决方案,从正反两个方面进行了分析和对比。 全书一共三个部分,第一部分专注于C#语言本身,一共89条建议,涵盖了C#语言基本要素、集合、LINQ、泛型、委托、事件、资源管理、序列化、异常处理、异步、多线程、任务和并行编程等与C#语法相关的核心内容;第二部分重点讲解了C#程序的设计和架构,一共32条建议,涉及成员设计、面向对象的类型设计、安全性设计等重要方面的内容;第三部分探讨了C#的编码规范及编程习惯,一共36条建议,包含C#命名规范、如何使代码更整洁以及如何规范开发行为等方面的内容。 本书是一本关于如何编写高质量C#代码的工具书,列举的问题非常典型,给出的建议也非常实用,其中的每一条建议都有可能在我们编写下一行代码的时候被用到。你可以将此书搁置在案头,以便有需要的时候随时查阅。内容截图 ...
-
分类:C/C++ 语言:简体中文 大小:未知 发布时间:13-06-22
前 言第一部分 语法篇第1章 从c继承而来的建议0:不要让main函数返回void建议1:区分0的4种面孔建议2:避免那些由运算符引发的混乱建议3:对表达式计算顺序不要想当然建议4:小心宏#define使用中的陷阱建议5:不要忘记指针变量的初始化建议6:明晰逗号分隔表达式的奇怪之处建议7:时刻提防内存溢出建议8:拒绝晦涩难懂的函数指针建议9:防止重复包含头文件建议10:优化结构体中元素的布局建议11:将强制转型减到最少建议12:优先使用前缀操作符建议13:掌握变量定义的位置与时机建议14:小心typedef使用中的陷阱建议15:尽量不要使用可变参数建议16:慎用goto建议17:提防隐式转换带来的麻烦建议18:正确区分void与void*第2章 从c到c++,需要做出一些改变建议19:明白在c++中如何使用c建议20:使用memcpy()系列函数时要足够小心建议21:尽量用newdelete代替mallocfree建议22:灵活地使用不同风格的注释建议23:尽量使用c++标准的iostream建议24:尽量采用c++风格的强制转型建议25:尽量用const、enum、inline替换#define建议26:用引用代替指针第3章 说一说“内存管理”的那点事儿建议27:区分内存分配的方式建议28:newdelete与new[]delete[]必须配对使用建议29:区分new的三种形态建议30:new内存失败后的正确处理建议31:了解new_handler的所作所为建议32:借助工具监测内存泄漏问题建议33:小心翼翼地重载operator new operator delete建议34:用智能指针管理通过new创建的对象建议35:使用内存池技术提高内存申请效率与性能第4章 重中之重的类建议36:明晰class与struct之间的区别建议37:了解c++悄悄做的那些事建议38:首选初始化列表实现类成员的初始化建议39:明智地拒绝对象的复制操作建议40:小心,自定义拷贝函数建议41:谨防因构造函数抛出异常而引发的问题建议42:多态基类的析构函数应该为虚建议43:绝不让构造函数为虚建议44:避免在构造析构函数中调用虚函数建议45:默认参数在构造函数中给你带来的喜与悲建议46:区分overloading、overriding及hiding之间的差异建议47:重载operator=的标准三步走建议48:运算符重载,是成员函数还是友元函数建议49:有些运算符应该成对实现建议50:特殊的自增自减运算符重载建议51:不要重载operator&&、operator……第二部分 编码习惯和规范篇第三部分 程序架构和思想篇 内容推荐 《编写高质量代码:改善c++程序的150个建议》是c++程序员进阶修炼的必读之作,包含的全部都是c++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对c++程序和设计中的疑难问题给出了经验性的解决方案,为c++程序员编写更高质量的c++代码提供了150条极为宝贵的建议。每个问题都来自于实践,都极具代表性,本书不仅以建议的方式正面为每个问题给出了被实践证明为十分优秀的解决方案,而且还从反面给出了被实践证明为不好的解决方案,从正反两个方面进行了分析和对比。 《编写高质量代码:改善c++程序的150个建议》在逻辑上一共分为三个部分:语法部分涵盖c++从c语言继承而来的一些极为重要但又极容易被误解和误用的一些语法特性,从c语言到c++的改变,以及内存管理、类、模板、异常处理、stl等方面的内容;编码习惯和编程规范部分则主要讨论了如何提高程序的正确性、可读性、程序性能和编码效率方面的问题;程序架构和思想部分则从更高的高度对c++程序设计思维和方法进行了审视,给出了一些颇具价值的观点和最佳实践。 这是一本关于如何提高c++程序设计效率与质量的工具书,希望书中的每条建议都能引起你的思考,对于有难度的内容,建议大家消化理解,切勿死记硬背,同时也希望大家能悟出更好的解决方案。希望本书中的每条建议所传递的思想和理念能够渗透到大家的编码实践中,进而帮助大家真正具备编写高质量c++代码的能力。封面截图 ...
-
分类:平面设计 语言:简体中文 大小:未知 发布时间:13-06-22
第1章 认识CoreIDRAWX4绘图大师1.1 CorelDRAW.X4的应用1.1.1 绘制插图1.1.2 编修与美化位图1.1.3 版面设计1.1.4 描摹1.2 CorelDRAWX4新增功能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.1 0对引号提供更好的支持1.2.1 1欢迎屏幕1.3 全新的CorelDRAWX4操作界面1.3.1 CorelDRAWX4的工作界面1.3.2 菜单栏与标准工具栏1.3.3 工具箱与属性栏1.3.4 标尺与绘图区1.3.5 调色板1.3.6 泊坞窗1.3.7 导航栏1.3.8 状态栏1.4 自定义操作环境1.4.1 自定义命令栏1.4.2 自定义命令1.4.3 自定义调色板1.4.4 自定义应用程序1.5 本章小结1.6 本章习题第2章 CoreIDRAWX4的入门操作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.2.3 使用辅助线2.2.4 管理视窗2.3 管理文件2.3.1 新建空白文件2.3.2 保存文件2.3.3 打开旧文件2.3.4 导入与导出绘图文件2.3.5 将绘图导出到Office2.4 使用模板创建实用文件2.4.1 从模板新建文件2.4.2 创建模板2.4.3 使用保存的模板创建文件2.5 页面与打印设置2.5.1 设置页面尺寸和方向2.5.2 设置页面背景2.5.3 添加、再制、重命名和删除页面2.6 打印输出2.6.1 打印预览2.6.2 打印设置2.7 本章小结2.8 本章习题第3章 绘制与编辑线条3.1 手绘工具3.1.1 绘制直线与箭头3.1.2 绘制曲线与虚线3.1.3 绘制封闭曲线与连续线段3.2 贝塞尔工具3.2.1 绘制直线与折线3.2.2 绘制任意曲线3.3 艺术笔工具3.3.1 使用预设模式绘图3.3.2 使用画笔模式绘图3.3.3 使用喷灌模式绘图3.3.4 使用书法模式绘图3.3.5 使用压力工具绘图3.4 钢笔工具3.4.1 绘制直线、折线与曲线3.4.2 使用钢笔勾画图形3.5 折线工具3.6 3点曲线工具3.7 交互式连线工具3.8 编辑线条3.8.1 选择与移动节点3.8.2 添加与删除节点3.8.3 连接与分割线条3.8.4 转换直线和曲线3.8.5 编辑节点3.8.6 提取子路径3.9 本章小结3.1 0本章习题第4章 绘制图形对象4.1 绘制矩形4.1.1 绘制矩形与正方形4.1.2 使用3点矩形工具4.1.3 绘制圆角矩形4.2 绘制椭圆4.2.1 绘制椭圆与正圆形4.2.2 使用3点椭圆工具4.2 _3绘制饼形与弧形4.3 绘制多边形4.3.1 绘制自定的多边形4.3.2 绘制星形4.3.3 绘制复杂星形4.4 绘制图纸4.4.1 绘制网格图纸4.4.2 绘制正方形网格的技巧4.5 绘制螺旋形4.6 使用智能绘图工具4.7 使用“完美形状”集4.7.1 预设形状4.7.2 绘制与修改预设形状4.8 本章小结4.9 本章习题第5章 图形填充与设置轮廓线5.1 单色填充5.1.1 使用调色板填充5.1.2 使用泊坞窗填充5.1.3 将填充复制到另一个对象5.1.4 使用智能填充工具填充5.1.5 使用【均匀填充】对话框填充5.2 渐变填充5.2.1 双色与多色渐变填充5.2.2 编辑渐变效果5.3 图案填充5.3.1 双色填充:5.3.2 全色填充5.3.3 位图填充5.4 纹理填充5.4.1 设置与填充底纹5.4.2 PostScript底纹填充5.5 交互式网状填充5.6 设置轮廓线5.6.1 设置轮廓线颜色5.6.2 设置轮廓线的宽度与样式5.6.3 清除轮廓线5.6.4 转换轮廓线5.7 本章小结5.8 本章习题第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.2.4 精确变换对象6.3 编辑对象6.3.1 旋转对象6.3.2 倾斜对象6.3.3 自由变形对象6.3.4 裁切对象6.3.5 擦除对象6.4 排列与对齐对象6.4.1 置顶与置底6.4.2 前移与后移一位6.4.3 编排对象顺序6.4.4 对齐对象6.4.5 分布对象6.5 群组、结合与锁定对象6.5.1 群组与取消群组6.5.2 结合与拆分对象6.5.3 锁定与解锁对象6.6 修整对象6.6.1 焊接对象6.6.2 修剪对象6.6.3 相交对象6.6.4 简化对象6.6.5 移除后面对象6.6.6 移除前面对象6.7 精确剪裁图框6.7.1 将图片放在容器中6.7.2 编辑剪裁内容6.8 查找与替换对象6.8.1 查找对象6.8.2 替换对象6.9 本章小结6.10 本章习题第7章 图层与符号的应用7.1 认识与创建图层7.1.1 局部图层和主图层7.1.2 创建与删除图层7.1.3 默认的图层结构7.2 更改图层属性7.2.1 显示与隐藏图层7.2.2 启用,禁止打印和导出7.2.3 设置图层的编辑属性7.3 移动或复制图层和对象7.3.1 移动图层7.3.2 复制图层7.3.3 移动或复制对象至图层7.4 符号的使用7.4.1 创建、编辑和删除符号7.4.2 在绘图之间共享符号7.5 本章小结7.6 本章习题第8章 对象的交互式效果8.1 交互式调和效果8.1.1 直线调和效果8.1.2 沿路径调和效果8.1.3 复合调和效果8.1.4 设置调和属性8.1.5 拆分调和对象8.2 交互式轮廓效果8.2.1 勾划对象轮廓图8.2.2 设置轮廓图属性8.3 交互式变形效果8.3.1 推拉变形8.3.2 拉链变形8.3.3 扭曲变形8.4 交互式阴影效果8.4.1 添加阴影效果8.4.2 设置阴影属性8.5 交互式封套效果8.5.1 使用封套为对象造形8.5.2 设置封套属性8.6 交互式立体化效果8.6.1 创建立体模型8.6.2 设置立体属性8.7 交互式透明效果8.7.1 制作对象透明效果8.7.2 设置透明属性8.8 本章小结8.9 本章习题第9章 文本编排与效果制作9.1 输入文本9.1.1 输入与编辑美术字9.1.2 输入与调整段落文本9.1 _3美术字与段落的转换9.2 设置文本属性9.2.1 文本属性栏9.2.2 文本属性设置9.3 设置段落文本9.3.1 制作首字下沉9.3.2 制作文绕图效果9.3.3 段落的分栏处理9.4 制作文字效果9.4.1 制作弯曲文字效果9.4.2 制作透视文字效果9.4.3 制作双色文字效果9.5 本章小结9.6 本章习题第10章 位图的编辑与特效制作10.1 转换为位图10.2 调整和编辑位图10.2.1 自动调整10.2.2 图像调整实验室10.2.3 矫正图像10.2.4 编辑位图10.3 位图的描摹处理10.3.1 快速描摹10.3.2 中心线描摹10.3.3 轮廓描摹10.4 制作位图特效10.4.1 艺术笔触效果10.4.2 轮廓图效果10.4.3 创造性效果10.5 本章小结10.6 本章习题第11章 表格的绘制与格式化11.1 创建表格11.1.1 创建新表格11.1.2 将文本转换为表格11.2 编辑表格11.2.1 选择表格组件11.2.2 合并与拆分单元格11.2.3 插入与删除行和列11.2.4 调整单元格的大小11.3 格式化表格和单元格11.3.1 设置表格边框11.3.2 设置表格与单元格背景色11.4 本章小结11.5 本章习颢第12章 综合实例设计12.1 书籍封面设计12.1.1 设计规格及要求12.1.2 制作构思及流程图12.1.3 具体操作步骤12.1.4 印前突破和专业经验总结12.1.5 本例出彩点12.1.6 举一反三,发挥创意12.2 企业名片设计12.2.1 设计规格及要求12.2.2 制作构思及流程图12.2.3 具体操作步骤12.2.4 印前突破和专业经验总结12.2.5 本例出彩点12.2.6 举一反三,发挥创意12.3 CD包装设计12.3.1 设计规格及要求12.3.2 制作构思及流程图12.3.3 具体操作步骤12.3.4 印前突破和专业经验总结12.3.5 本例出彩点12.3.6 举一反三,发挥创意12.4 宣传海报设计12.4.1 设计规格及要求12.4.2 制作构思及流程图12.4.3 具体操作步骤12.4.4 印前突破和专业经验总结12.4.5 本例出彩点12.4.6 举一反三,发挥创意12.5 杂志版式设计12.5.1 设计规格及要求12.5.2 制作构思及流程图12.5.3 具体操作步骤12.5.4 印前突破和专业经验总结12.5.5 本例出彩点12.5.6 举一反三,发挥创意12.6 本章小结12.7 本章习题部分习题参考答案 内容介绍:《新编中文版CorelDRAW X4标准教程》是专为想在短期内通过课堂教学或自学快速掌握中文版CorelDRAW X4的使用方法和技巧而编写的标准教程。作者从自学与教学的实用性、易用性出发,用典型的实例边讲解边操作,并配备设计流程图详细生动地展示了CorelDRAW X4的强大功能。《新编中文版CorelDRAW X4标准教程》内容:全书由12章构成,通过精心设计的丰富典型实例和课堂实训的实际制作,形象直观地介绍了中文版CoreIDRAW X4的具体应用。详细讲解CorelDRAW X4的应用领域与新增功能;电脑平面设计的基础知识;各种线条工具的使用方法及技巧:为图形对象与轮廓上色的方法:常用的绘图技巧;管理和应用图层与符号的方法;图形的交互式效果的制作以及相关工具的属性设置与对比;文本的编排和各种文本特效的制作;位图的编辑和特效制作的方法;表格绘制于编辑的方法:最后通过设计书籍封面、企业名片、CD包装、宣传海报以及杂志版式五个实例,综合介绍了CorelDRAW X4在图像处理与矢量图形绘制上的设计理念与制作方法。《新编中文版CorelDRAW X4标准教程》特点:1.基础知识讲解与范例操作紧密结合贯穿全书,边讲解边操练,学习轻松、上手容易;2.提供重点实例设计流程图纸和设计思路,激发读者动手欲望,注重学生动手能力和实际应用能力的培养;3.实例典型,任务明确,活学活用:4.每章后都配有练习题和上机实训,利于巩固所学知识和创新。内容截图:电子书www.minxue.net分流地址:新编中文版CorelDRAW-X4标准教程.pdf ...
-
分类:网络应用 语言:简体中文 大小:未知 发布时间:13-06-22
楔子:网络整合营销兵器谱,惊现江湖!第一章 网络硬广告,七星碧玉刀第一节 网络硬广告的产生和发展第二节 网络硬广告分类第三节 各类网络硬广告形式详解第四节 网洛硬广告“创意大法”第五节 网络环境媒体互动创意第六节 网络硬广告计费模式第二章 网络视频营销,风火流星锤第一节 视频迷途,希望不灭第二节 网络视频营销的优势第三节 网络视频营销模式详解第三章 im营销,绵绵多情环第一节 im定义第二节 “疯狂”的im硬广告第三节 im沟通营销第四节 im信息营销第五节 im签名营销第六节 im表情营销第七节 网络虚拟机器人营销.第四章 widget营销,多彩孔雀翎第一节 widget定义第二节 widget的产生和发展历程第三节 widget的创新营销方式第四节 widget在其他平台上的应用第五章 博客营销,清秋如意钩第一节 认识博客第二节 不可不知的博客营销秘籍第六章 iga,六脉神剑第一节 iga的五架马车第二节 iga的六大应用第三节 快马加鞭iga第七章 搜索引擎营销,生死判官笔第一节 sem的定义和分类第二节 竞价排名——向左走,向右走第三节 sem的升级和拓展第八章 网络社区营销,达摩五指第一节 网络社区营销的三块基石第二节 网络社区营销的五大利器第九章 网站建设,不老霸王枪第一节 企业官网第二节 minisite微型网站第十章 无线营销,锁人柔情鞭第一节 无线营销,为营销“打补丁”第二节 电子优惠券营销第三节 信息定制营销第四节 电子商务,闭环销售第五节 无线营销的跨界整合第六节 无线营销的新应用与实例分析 ...
-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
出版者的话专家指导委员会译者序代序第2版前言第1版前言第1章 欢迎阅读本书1.1 我们的目标1.2 怎么才能做到1.3 两个反复出现的理念1.3.1 抽象之理念1.3.2 硬件与软件1.4 计算机系统简述1.5 两个非常重要的思想1.6 计算机:通用计算设备1.7 从问题描述到电子运转1.7.1 问题的提出1.7.2 算法1.7.3 程序.1.7.4 指令集结构1.7.5 微结构1.7.6 逻辑电路1.7.7 器件1.7.8 小结1.8 习题第2章 bit、数据类型及其运算2.1 bit和数据类型2.1.1 bit——信息的基本单位2.1.2 数据类型2.2 整数数据类型2.2.1 无符号整数2.2.2 有符号整数2.3 补码2.4 二进制数与十进制数之间的转换2.4.1 二进制数转换为十进制数2.4.2 十进制数转换为二进制数2.5 bit运算之一:算术运算2.5.1 加法和减法2.5.2 符号扩展2.5.3 溢出2.6 bit运算之二:逻辑运算2.6.1 “与”运算2.6.2 “或”运算2.6.3 “非”运算2.6.4 “异或”运算2.7 其他类型2.7.1 位矢量2.7.2 浮点数2.7.3 ascⅱ码2.7.4 十六进制计数法2.8 习题第3章 数字逻辑3.1 mos晶体管3.2 逻辑门3.2.1 非门3.2.2 或门、或非门3.2.3 与门、与非门3.2.4 摩根定律3.2.5 多输入门3.3 组合逻辑3.3.1 译码器3.3.2 多路复用器3.3.3 全加器3.3.4 可编程逻辑阵列3.3.5 逻辑完备性3.4 存储单元3.4.1 r-s锁存器3.4.2 门控d锁存器3.4.3 寄存器3.5 内存的概念3.5.1 寻址空间3.5.2 寻址能力3.5.3 例子:22x3内存3.6 时序电路3.6.1 组合密码锁3.6.2 状态的概念3.6.3 有限状态机3.6.4 有限状态机的实现3.7 lc-3计算机的数据通路3.8 习题第4章 冯·诺伊曼模型4.1 基本部件4.1.1 内存4.1.2 处理单元4.1.3 输入和输出单元4.1.4 控制单元4.2 lc-3:一台冯·诺伊曼机器4.3 指令处理4.3.1 指令4.3.2 指令周期4.4 改变执行顺序4.5 停机操作4.6 习题第5章 lc-3结构5.1 isa概述5.1.1 内存组织5.1.2 寄存器5.1.3 指令集5.1.4 操作码5.1.5 数据类型5.1.6 寻址模式5.1.7 条件码5.2 操作指令5.3 数据搬移指令5.3.1 pc相对寻址5.3.2 间接寻址5.3.3 基址偏移寻址5.3.4 立即数寻址5.3.5 一个例子5.4 控制指令5.4.1 条件跳转指令5.4.2 一个例子5.4.3 循环控制的两种方法5.4.4 例子:哨兵法数组求和5.4.5 jmp指令5.4.6 trap指令5.5 例子:字符数统计5.6 总结:数据通路(lc-3)5.6.1 数据通路的基本部件5.6.2 指令周期5.7 习题第6章 编程6.1 问题求解6.1.1 系统分解6.1.2 三种结构:顺序、条件、循环6.1.3 实现三种结构的lc-3指令6.1.4 回顾字符数统计例子6.2 调试6.2.1 调试的基本操作6.2.2 交互式调试器的使用6.3 习题第7章 汇编语言7.1 汇编语言编程——更上一层7.2 一个汇编程序7.2.1 指令7.2.2 伪操作7.2.3 例子:字符数统计程序7.3 汇编过程7.3.1 概述7.3.2 两遍扫描7.3.3 第1遍:创建符号表7.3.4 第2遍:生成机器语言程序7.4 相关知识7.4.1 可执行映像7.4.2 多目标文件7.5 习题第8章 输入/输出8.1 输入/输出的基本概念8.1.1 设备寄存器8.1.2 内存映射i/o与专用i/o指令8.1.3 异步i/o与同步i/o8.1.4 中断驱动与轮询8.2 键盘输入8.2.1 基本输入寄存器8.2.2 基本输入服务程序8.2.3 内存映射输入的实现8.3 显示器输出8.3.1 基本输出寄存器(ddr和dsr)8.3.2 基本输出服务程序8.3.3 内存映射输出的实现8.3.4 例子:键盘回显8.4 一个更复杂的输入程序8.5 中断驱动i/o8.5.1 什么是中断驱动i/o8.5.2 为什么要引入中断驱动i/o8.5.3 中断信号的产生8.6 内存映射i/o的回顾8.7 习题第9章 trap程序和子程序9.1 lc-3 trap程序9.1.1 概述9.1.2 trap机制9.1.3 trap指令9.1.4 完整机制9.1.5 i/o中断处理程序9.1.6 halt中断程序9.1.7 寄存器内容的保存和恢复9.2 子程序9.2.1 调用/返回机制9.2.2 jsr®指令9.2.3 字符输入的trap程序9.2.4 puts:写字符串9.2.5 库程序9.3 习题第10章 栈10.1 栈的基本结构10.1.1 抽象数据类型:栈10.1.2 两个实现例子10.1.3 内存中的实现10.1.4 小结10.2 中断驱动i/o(第二部分)10.2.1 启动和执行10.2.2 中断返回10.2.3 例子:嵌套中断10.3 基于栈的算术运算10.3.1 栈的临时存储作用10.3.2 例子:算术表达式10.3.3 加、乘和取反10.4 数据类型转换10.4.1 一个错误结果的例子:2+3=e10.4.2 ascⅱ/二进制转换10.4.3 二进制/ascⅱ转换10.5 模拟计算器10.6 习题第11章 c语言编程概述11.1 我们的目标11.2 软硬件结合11.3 高级语言翻译11.3.1 解释执行11.3.2 编译执行11.3.3 两种方法的优缺点11.4 c编程语言11.5 一个简单的c程序11.5.1 main函数11.5.2 编程风格11.5.3 c预处理器11.5.4 输入和输出11.6 小结11.7 习题第12章 变量和运算符12.1 概述12.2 变量12.2.1 三种基本数据类型:int、char、double12.2.2 标识符的选择12.2.3 局部变量和全局变量12.2.4 更多的例子12.3 运算符12.3.1 表达式和语句12.3.2 赋值运算符12.3.3 算术运算符12.3.4 算术优先级12.3.5 位运算符12.3.6 关系运算符12.3.7 逻辑运算符12.3.8 递增/递减运算符12.3.9 运算符混合表达式12.4 基于运算符的问题求解12.5 编译器处理12.5.1 符号表12.5.2 变量的空间分配12.5.3 完整的例子12.6 补充话题12.6.1 三种基本类型的变种12.6.2 文字常量、常量和符号值12.6.3 存储类型12.6.4 更多的c运算符12.7 小结12.8 习题第13章 控制结构13.1 概述13.2 条件结构13.2.1 if语句13.2.2 ifelse语句13.3 循环结构13.3.1 while语句13.3.2 for语句13.3ac电脑的选择 252.3.1 最小系统需求 252.3.2 选择操作系统 262.3.3 了解电脑配件 262.4 电脑配件的选择 292.4.1 硬盘的选择 292?e-mail地址13.5 其他c语言控制结构13.5.1 switch语句13.5.2 break和continue语句13.5.3 简单计算器的例子13.6 小结13.7 习题第14章 函数14.1 概述14.2 c语言中的函数14.2.1 带参数的函数14.2.2 求解圆面积14.3 c语言中函数的实现14.3.1 运行时栈14.3.2 实现机制14.3.3 汇总14.4 问题求解14.4.1 例1:大小写转换14.4.2 例2:毕达哥拉斯三角形14.5 小结14.6 习题第15章 测试与调试技术15.1 概述15.2 错误类型15.2.1 语法错误15.2.2 语义错误15.2.3 算法错误15.3 测试15.3.1 黑盒测试15.3.2 白盒测试15.4 调试15.4.1 特定方法15.4.2 源码级调试工具15.4.3 断点15.5 正确的编程方法15.5.1 明确规格说明15.5.2 模块化设计15.5.3 预防错误式编程15.6 小结15.7 习题第16章 指针和数组16.1 概述16.2 指针16.2.1 声明指针变量16.2.2 指针运算符16.2.3 指针传递一个引用16.2.4 空指针16.2.5 语法16.2.6 指针例程16.3 数组16.3.1 数组声明16.3.2 数组应用16.3.3 数组参数16.3.4 c语言的字符串16.3.5 数组与指针的关系16.3.6 实例:插入排序16.3.7 c语言数组的不足16.4 小结16.5 习题第17章 递归17.1 概述17.2 什么是递归17.3 递归与循环17.4 汉诺塔17.5 斐波纳契数列17.6 二分查找17.7 整数转换为ascⅱ字符串17.8 小结17.9 习题笫18章 c语言中的i/o18.1 概述18.2 c标准库函数18.3 字符i/o操作18.3.1 i/o流18.3.2 putchar函数18.3.3 getchai函数18.3.4 缓冲i/o18.4 格式化i/o18.4.1 printf18.4.2 scanf18.4.3 可变长参数18.5 文件i/o18.6 小结18.7 习题第19章 数据结构19.1 概述19.2 结构体19.2.1 typedef19.2.2 结构体在c中的实现19.3 结构体数组19.4 动态内存分配19.5 链表19.6 小结19.7 习题附录a lc-3指令集结构附录b 从lc-3到x86附录c lc-3的微结构附录d c编程语言附录e 常用表附录f 部分习题答案 ...
-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
译者序前言关于本书结构和布局的说明作者简介第一部分 基础知识第1章 一个样例测试系列 31.1 第一个测试周期 31.1.1 第1步:从一个显而易见的简单测试开始 31.1.2 第一次测试产生的问题报告 41.1.3 第2步:对还需要测试什么做一些记录 41.1.4 寻找边界条件 61.1.5 第3步:检查有效用例并观察发生了什么 71.1.6 第4步:做一些“快速的”测试 71.1.7 第5步:总结对程序及其问题的认识 91.1.8 第一个测试周期的总结 121.2 第二个测试周期 12.1.2.1 第1步:在进行任何测试之前应仔细评审对问题报告的反馈,以确定哪些需求必须满足,哪些无须满足 131.2.2 第2步:评审对不进行改正的问题的意见,它们可能暗示着进行进一步的测试 131.2.3 第3步:找出上次的记录,补充新记录,然后开始测试 141.3 后续测试周期中可能会发生的事情 15第2章 测试的目标和局限 172.1 不可能完全测试一个程序 182.1.1 不可能测试到程序对任何可能输入的响应 182.1.2 不可能测试到程序每一条可能的执行路径 202.1.3 无法找出所有的设计错误 222.1.4 不能采用逻辑来证明程序的正确性 222.2 测试人员的目标是验证程序吗 222.2.1 无法验证程序运行正确 222.2.2 程序不能正确地运行 232.2.3 既然程序不能正确地工作,那么测试是不是个失败呢 232.2.4 测试人员不应该试图验证一个程序运行正确 232.3 那么,为什么要进行测试呢 242.3.1 测试一个程序的目的是为了发现它的问题 242.3.2 发现问题的目的是为了改正问题 25第3章 测试的类型及其在软件开发过程中的地位 263.1 软件开发阶段综述 293.2 规划阶段 303.2.1 目标阐述 303.2.2 需求分析 313.2.3 功能定义 313.3 规划阶段进行的测试 313.3.1 产品对照评价 323.3.2 重点问题小组 323.3.3 任务分析 333.4 设计阶段 333.4.1 外部设计 333.4.2 内部设计 343.4.3 原型开发 353.5 设计阶段的测试 363.5.1 评审会议 373.5.2 伪代码分析 373.6 白盒代码测试是编码阶段的组成部分 383.6.1 结构测试与功能测试 393.6.2 路径测试:覆盖准则 393.6.3 增长测试与崩溃测试 413.6.4 自顶向下测试与自底向上测试 423.6.5 静态测试与动态测试 423.6.6 标准符合性 433.6.7 软件度量 433.6.8 刻意的错误:调试与变异 443.6.9 性能测试 453.7 回归测试 453.8 黑盒测试 463.8.1 常用的黑盒测试事件序列 463.8.2 功能测试和系统测试中需要进行的测试 493.9 维护 51第4章 软件错误 544.1 质量 544.2 什么是软件错误 554.3 软件错误的分类 554.3.1 用户界面错误 554.3.2 错误处理 564.3.3 与边界相关的错误 564.3.4 计算错误 574.3.5 最初阶段与后续阶段 574.3.6 控制流错误 574.3.7 数据处理或解释中的错误 574.3.8 竞争条件 574.3.9 负载条件 584.3.10 硬件 584.3.11 源程序和版本控制 584.3.12 文档 584.3.13 测试中的错误 58第5章 缺陷的报告与分析 595.1 即时填写问题报告 605.2 问题报告的内容 605.2.1 问题报告编号 605.2.2 程序名 605.2.3 版本标识:发布号和版本号 605.2.4 报告类型 625.2.5 严重性 625.2.6 附件 635.2.7 问题概要 635.2.8 问题能否重现 635.2.9 问题描述及如何重现 645.2.10 建议的改正措施 645.2.11 报告人 645.2.12 日期 645.2.13 功能域 645.2.14 承办人 655.2.15 注释 655.2.16 状态 655.2.17 优先级 655.2.18 处理状态与处理版本 665.2.19 签名 665.2.20 暂缓处理 665.3 问题报告的特点 675.3.1 书面的 675.3.2 已编号的 685.3.3 简单的 685.3.4 易于理解的 685.3.5 可重现的 685.3.6 易读的 685.3.7 不做判断的 695.4 重现缺陷的分析 695.4.1 找出最严重的后果 705.4.2 找出最简单和最常见的条件 705.4.3 找出产生相同问题的其他路径 715.4.4 找出相关的问题 715.5 可重现缺陷的分析技术 715.5.1 寻找最关键的步骤 715.5.2 最大程度地提高程序运行的可见性 725.5.3 一旦找出了关键步骤,就改变你的做法 735.5.4 查找后续错误 735.5.5 渐进地省略或改变步骤 735.5.6 在程序以前的版本中查找错误 745.5.7 查找配置依赖 745.6 让缺陷可重现 745.6.1 竞争条件 755.6.2 被遗忘的细节 755.6.3 用户的错误:所做的并非是以为做到的 755.6.4 缺陷造成的影响会导致其无法重现 755.6.5 缺陷是依赖于内存的 765.6.6 仅会在初次运行时出现的缺陷 765.6.7 因数据错误导致的缺陷 765.6.8 由于一些其他问题附带引起的缺陷 765.6.9 间断性硬件故障 775.6.10 缺陷依赖于时间 775.6.11 缺陷依赖于资源 775.6.12 缺陷由长期积累形成 775.6.13 代码中的特殊分支 785.6.14 有人动了你的计算机 78第二部分 特殊的测试技巧第6章 问题跟踪系统 816.1 问题跟踪系统的主要目标 846.2 问题跟踪系统的任务 846.3 问题跟踪概述 846.3.1 问题被上报 846.3.2 报告提交给项目经理 856.3.3 报告由项目经理转交给程序员 866.3.4 当问题已经改正 876.3.5 无法重现的问题 876.3.6 问题暂缓与申诉过程 886.3.7 未被处理的问题 896.3.8 项目状态报告 896.4 跟踪系统的使用者 906.4.1 主任测试员 906.4.2 其他测试人员 906.4.3 项目经理 906.4.4 程序员 926.4.5 产品经理 926.4.6 技术支持 926.4.7 文档编写人员 936.4.8 测试经理 936.4.9 高级经理 946.4.10 律师 976.5 数据库的技术细节 986.5.1 报告新的问题 986.5.2 每周状态报告 986.5.3 测试周期的结束 996.5.4 已处理的问题和未处理的问题 1006.5.5 暂缓处理的问题 1016.5.6 进展总结 1016.5.7 开发结束时 1026.5.8 为下一个发布版本重新打开暂缓处理的缺陷 1036.5.9 跟踪补丁 1046.6 关于问题报告的进一步思考 1046.6.1 进行判断 1046.6.2 相似的报告 1066.6.3 允许不同的观点存在 1076.6.4 内部细节 1086.6.5 问题报告单的一些注意事项 1096.7 术语表 109第7章 测试用例设计 1117.1 良好测试具备的特点 1127.1.1 它有相当的可能找出软件错误 1127.1.2 它不是冗余的 1137.1.3 它是本类用例中最佳的选择 1137.1.4 它既不过于复杂,又不过于简单 1137.1.5 它使程序失效显而易见 1137.2 等价类与边界值 1137.2.1 等价类 1137.2.2 找出等价类 1147.2.3 等价类的边界 1187.3 可见的状态转换 1197.4 竞争条件与其他时间依赖关系 1197.5 负载测试 1207.6 错误猜测 1217.7 函数等价测试:自动执行、敏感度分析与随机输入 1217.7.1 函数等价测试的自动执行 1217.7.2 敏感度分析 1227.7.3 随机输入 1237.7.4 通用等价测试 1247.8 回归测试:检查缺陷是否有效改正 1247.9 回归测试:标准测试库 1257.10 执行测试 126第8章 打印机及其他设备的测试 1278.1 配置测试的一般性问题 1288.2 打印机测试 1308.2.1 打印机综述 1308.2.2 打印机驱动策略 1328.2.3 打印机测试的总体策略 1338.2.4 打印机测试矩阵 1378.2.5 保存、分享及重用你的打印机知识 1408.2.6 自动测试的一些技巧 1408.2.7 建立一个打印机测试实验室 145第9章 本地化测试 1489.1 基本的代码改变了吗 1499.2 与熟悉当地语言的人一起工作 1499.3 文本与代码相互独立吗 1499.4 翻译文本的空间膨胀 1509.5 字符集 1509.6 键盘 1519.7 文本过滤 1519.8 载入、保存、导入和导出高ascii字符和低ascii字符 1519.9 操作系统的语言 1529.10 热键 1529.11 翻译中的断章取义 1529.12 错误信息辨识器 1529.13 连词规则 1529.14 拼写规则 1529.15 排序规则 1539.16 大小写转换 1539.17 下划线规则 1539.18 打印机 1539.19 纸张尺寸 1539.20 cpu与视频卡 1539.21 鼠标 1549.22 数据格式及设置选项 1549.23 测量标准 1549.24 与当地文化相抵触的图形 1549.25 与当地文化相抵触的输出 1549.26 欧洲产品的兼容性 1549.27 内存可用性 1559.28 图形用户界面能解决问题吗 1559.29 自动测试 155第10章 用户手册的测试 15610.1 有效的文档 15610.2 文档测试人员的目标 15710.3 文档测试如何有助于提高软件可靠性 15810.4 成为技术编辑 15910.5 用户手册编制阶段一览 15910.5.1 第一稿 16010.5.2 第二稿 16010.5.3 经修订的第二稿 16110.5.4 b测试稿 16210.5.5 制作阶段 16210.5.6 后期制作阶段 16310.6 在线帮助 164第11章 测试工具 16511.1 基本工具 16511.2 自动验收测试与自动回归测试 16711.2.1 回归测试用例的出处 16811.2.2 为程序提供输入 16811.2.3 捕获程序的输出 17011.2.4 对输出的评价 17011.2.5 自动验收测试 17211.3 标准 17211.4 半透明盒测试 17411.4.1 插装代码以监视代码覆盖率 17411.4.2 断言检查 17511.4.3 内存有效性及占用检查 176第12章 测试计划与测试文档 17712.1 测试计划的总体目标:作为产品还是作为工具 17812.1.1 作为产品的测试计划 17812.1.2 作为工具的测试计划 17812.2 测试计划和测试文档的具体目标 17912.2.1 测试文档有助于测试技术任务的完成 17912.2.2 测试文档增进了测试任务和测试过程之间的交流 18112.2.3 测试文档提供了组织、安排以及管理测试项目的结构 18212.3 测试计划文档中需要覆盖的测试类型 18412.3.1 遗漏了什么样的白盒测试 18412.3.2 重要的黑盒测试类型 18512.4 开发测试计划文档的组成部分的策略 18612.4.1 测试材料的演化开发 18612.4.2 测试材料的初始开发 18712.4.3 下一步集中于何处,在何处增加深度 18812.4.4 增加测试计划深度的技巧 18912.5 测试计划文档的组成部分 19012.5.1 清单 19112.5.2 表 19512.5.3 大纲—功能清单 20112.5.4 矩阵 20512.6 测试材料的归档 20912.6.1 谁会使用这种文档 20912.6.2 测试文档的类型 21312.7 结束时的思考 218第三部分 测试项目和测试小组的管理第13章 连接起来 22113.1 软件开发权衡 22313.2 软件开发模型 22413.2.1 传统的瀑布方法 22413.2.2 演化方法 22513.2.3 开发模型对测试的建议 22713.3 与质量相关的成本 22913.4 开发时间基线 23013.5 产品设计 23313.5.1 产品设计期间的编程活动 23313.5.2 产品设计期间的营销活动 23313.5.3 产品设计期间的文档活动 23313.5.4 产品设计期间的测试活动 23413.6 分段编码:首要功能 23713.6.1 首要功能之后的编程活动 23713.6.2 首要功能之后的测试活动 23713.7 准a测试阶段 23813.7.1 准a测试阶段的编程活动 23813.7.2 准a测试阶段的文档活动 23813.7.3 准a测试阶段的测试活动 23813.8 a测试阶段 23913.8.1 a测试阶段后的编程活动 24013.8.2 a测试阶段后的营销活动 24013.8.3 a测试阶段后的文档活动 24013.8.4 a测试阶段后的测试活动 24013.8.5 测试的深度与广度的比较 24413.8.6 关于测试周期的记录 24613.9 预b测试阶段 24713.10 b测试阶段 24713.10.1 b测试阶段后的编程活动 24813.10.2 b测试阶段后的营销活动 24913.10.3 b测试阶段后的文档活动 24913.10.4 b测试阶段后的测试活动 24913.10.5 外部b测试 25113.11 用户界面确定 25313.11.1 用户界面确定后的编程活动 25413.11.2 用户界面确定后的营销活动 25413.11.3 用户界面确定后的文档活动 25413.11.4 用户界面确定后的测试活动 25413.12 预最终测试阶段 25513.12.1 预最终测试期间的编程活动 25513.12.2 预最终测试期间的文档活动 25613.12.3 预最终测试期间的测试活动 25613.12.4 估计产品的可靠性 25713.13 最终的完整性测试 25913.13.1 最终测试阶段的编程活动 25913.13.2 最终测试阶段的测试活动 25913.14 发布 26013.15 项目总结 260第14章 有缺陷软件的法律后果 26214.1 违约 26414.1.1 u.c.c与软件合同 26414.1.2 违反保证 26514.1.3 明确保证 26614.1.4 适销性的暗示保证 26714.1.5 特殊目的适当性的暗示保证 26714.1.6 合同与瀑布模型的暗示保证 26814.1.7 赔偿金 26914.1.8 收缩性薄膜包装保证的不承担责任声明 27014.2 侵权行为:涉及过错的诉讼 27414.2.1 非法占有 27414.2.2 过失 27714.2.3 严格产品责任 28814.2.4 渎职 28914.2.5 欺诈 29014.3 揭发 291第15章 管理一个测试小组 29315.1 测试小组的职责 29515.1.1 质量控制组 29515.1.2 质量保证组 29615.1.3 测试服务组 29715.1.4 开发服务组 29815.1.5 建议 29815.2 测试小组并不纯粹是件好事 29815.3 另一种选择?独立测试机构 29915.4 进度制定技巧 30115.4.1 度量业绩和生产率 30215.4.2 确定并估计每个任务 30315.4.3 把项目分等级 30415.4.4 把任务确定为与循环相对的固定任务 30515.5 你的职员 30615.5.1 雇用谁 30715.5.2 士气 30815.5.3 事业发展 309附录 常见的软件错误 311参考文献 385 ...
-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
第1章 谁编写软件,谁制造bug(为什么需要本书) 1第2章 系统性调试方法 32.1 为什么要遵循结构化的过程 32.2 充分利用机会 32.3 13条黄金规则 52.3.1 理解需求 52.3.2 制造失败 62.3.3 简化测试用例 62.3.4 读取恰当的错误消息 62.3.5 检查显而易见的问题 62.3.6 从解释中分离出事实 72.3.7 分而治之 72.3.8 工具要与bug匹配 82.3.9 一次只做一项更改 92.3.10 保持审计跟踪 92.3.11 获得全新观点 92.3.12 bug不会自己修复 92.3.13 用回归测试来检查bug修复 102.4 构建一个好的工具包 102.4.1 工具箱 11.2.4.2 每天运行测试,防止出现bug 112.5 认清敌人——遇到bug家族 132.5.1 常见bug 132.5.2 偶发性bug 132.5.3 heisenbug 132.5.4 隐藏在bug背后的bug 142.5.5 秘密bug——调试与机密性 142.5.6 更多读物 15第3章 查找根源——源代码调试器 173.1 可视化程序行为 173.2 准备简单的可预测的示例 183.3 使调试器与程序一起运行 183.4 学习在程序崩溃时执行栈跟踪 213.5 学习使用断点 213.6 学习在程序中导航 223.7 学习检查数据:变量和表达式 223.8 一个简单示例的调试会话 23第4章 修复内存问题 274.1 c/c++中的内存管理——功能强大但很危险 274.1.1 内存泄漏 274.1.2 内存管理的错误使用 284.1.3 缓冲区溢出 284.1.4 未初始化的内存bug 284.2 有效的内存调试器 284.3 示例1:检测内存访问错误 294.3.1 检测无效的写访问 304.3.2 检测对未初始化的内存的读取操作 304.3.3 检测内存泄漏 314.4 示例2:对内存分配/释放的不完整调用 314.5 结合使用内存调试器和源代码测试器 334.6 减少干扰,排查错误 334.7 何时使用内存调试器 344.8 约束 344.8.1 测试用例应该有很好的代码覆盖率 344.8.2 提供更多计算机资源 354.8.3 可能不支持多线程 354.8.4 对非标准内存处理程序的支持 35第5章 剖析内存的使用 375.1 基本策略——主要步骤 375.2 示例:分配数组 385.3 第1步:查找泄漏 385.4 第2步:设置期望值 385.5 第3步:测量内存使用 395.5.1 使用多个输入 395.5.2 在固定时间间隔停止程序 395.5.3 用简单工具测量内存使用 405.5.4 使用top 405.5.5 使用windows task manager 415.5.6 为testmalloc选择相关输入值 425.5.7 确定机器上的内存是如何被释放的 425.5.8 使用内存剖析工具 435.6 第4步:查明大部分内存被哪些数据结构占用了 445.7 综合练习——genindex示例 455.7.1 核实没有大的内存泄漏 465.7.2 估计内存使用 465.7.3 测量内存使用 465.7.4 查找使用内存的数据结构 47第6章 解决性能问题 516.1 分步查找性能bug 516.1.1 执行前期分析 516.1.2 使用简单的时间测量方法 526.1.3 创建测试用例 526.1.4 使测试用例具有可再现性 536.1.5 检查程序的正确性 536.1.6 创建可扩展的测试用例 536.1.7 排除对测试用例的干扰 546.1.8 用time命令测量时可能会发生错误和偏差 546.1.9 选择一个能够揭示运行时间瓶颈的测试用例 556.1.10 算法与实现之间的差异 566.2 使用剖析工具 586.2.1 不要编写自己的剖析工具 586.2.2 剖析工具的工作原理 586.2.3 了解gprof 596.2.4 了解quantify 636.2.5 了解callgrind 646.2.6 了解vtune 666.3 分析i/o性能 68第7章 调试并行程序 717.1 用c/c++编写并行程序 717.2 调试竞争条件 727.2.1 使用基本调试器功能来查找竞争条件 737.2.2 使用日志文件来查找竞争条件 747.3 调试死锁 767.3.1 如何确定正在运行的是哪个线程 777.3.2 分析程序的线程 787.4 了解线程分析工具 787.5 异步事件和中断处理程序 80第8章 查找环境和编译器问题 838.1 环境变更——问题的根源 838.1.1 环境变量 838.1.2 本地安装依赖 848.1.3 当前工作目录依赖 848.1.4 进程id依赖 848.2 如何查看程序正在做什么 848.2.1 用top来查看进程 848.2.2 用ps来查找应用程序的多个进程 858.2.3 使用/proc/[pid]来访问进程 858.2.4 使用strace跟踪对操作系统的调用 858.3 编译器和调试器也有bug 878.3.1 编译器bug 878.3.2 调试器和编译器兼容性问题 88第9章 处理链接问题 899.1 链接器的工作原理 899.2 构建并链接对象 899.3 解析未定义的符号 919.3.1 丢失链接器参数 919.3.2 搜索丢失的符号 919.3.3 链接顺序问题 929.3.4 c++符号和名称改编 939.3.5 符号的反改编 949.3.6 链接c和c++代码 949.4 具有多个定义的符号 959.5 信号冲突 969.6 识别编译器和链接器版本不匹配 969.6.1 系统库不匹配 979.6.2 对象文件不匹配 979.6.3 运行时崩溃 989.6.4 确定编译器版本 989.7 解决动态链接问题 1009.7.1 链接或载入dll 1009.7.2 无法找到dll文件 1019.7.3 分析载入器问题 1029.7.4 在dll中设置断点 1039.7.5 提供dll问题的错误消息 104第10章 高级调试 10710.1 在c++函数、方法和操作符中设置断点 10710.2 在模板化的函数和c++类中设置断点 10910.3 进入c++方法 11010.3.1 用step-into命令进入到隐式函数中 11210.3.2 用step-out命令跳过隐式函数 11210.3.3 利用临时断点跳过隐式函数 11310.3.4 从隐式函数调用返回 11310.4 条件断点和断点命令 11410.5 调试静态构造/析构函数 11610.5.1 由静态初始化程序的顺序依赖性引起的bug 11710.5.2 识别静态初始化程序的栈跟踪 11810.5.3 在静态初始化之前连接调试器 11810.6 使用观察点 11910.7 捕捉信号 12010.8 捕获异常 12210.9 读取栈跟踪 12410.9.1 带调试信息编译的源代码的栈跟踪 12410.9.2 不带调试信息编译的源代码的栈跟踪 12410.9.3 不带任何调试信息的帧 12510.9.4 实际工作中的栈跟踪 12510.9.5 改编后的函数名称 12610.9.6 被破坏的栈跟踪 12610.9.7 核心转储 12710.10 操纵正在运行的程序 12810.10.1 修改变量 13010.10.2 调用函数 13110.10.3 修改函数的返回值 13210.10.4 中止函数调用 13210.10.5 跳过或重复执行个别语句 13310.10.6 输出和修改内存内容 13310.11 在没有调试信息时进行调试 13510.11.1 从栈读取函数参数 13710.11.2 读取局部/全局变量和用户定义的数据类型 13810.11.3 在源代码中查找语句的大概位置 13910.11.4 走查汇编代码 140第11章 编写可调试的代码 14311.1 注释的重要性 14311.1.1 函数签名的注释 14411.1.2 对折中办法的注释 14411.1.3 为不确定的代码加注释 14411.2 采用一致的编码风格 14411.2.1 仔细选择名称 14511.2.2 不要使用“聪明过头”的结构 14511.2.3 不要压缩代码 14511.2.4 为复杂表达式使用临时变量 14511.3 避免使用预处理器宏 14611.3.1 使用常量或枚举来替代宏 14611.3.2 使用函数来替代预处理器宏 14811.3.3 调试预处理器输出 14911.3.4 使用功能更强的预处理器 15011.4 提供更多调试函数 15111.4.1 显示用户定义的数据类型 15111.4.2 自检查代码 15211.4.3 为操作符创建一个函数,以便帮助调试 15311.5 为事后调试做准备 153第12章 静态检查的作用 15512.1 使用编译器作为调试工具 15512.1.1 不要认为警告是无害的 15612.1.2 使用多个编译器来检查代码 15812.2 使用lint 15812.3 使用静态分析工具 15812.3.1 了解静态检查器 15812.3.2 将静态检查器检测到的错误减至(接近)零 16012.3.3 完成代码清理后重新运行所有测试用例 16012.4 静态分析的高级应用 161第13章 结束语 163附录a 调试命令 165附录b 工具资源 167附录c 源代码 179参考文献 189 ...
-
分类:平面设计 语言:简体中文 大小:未知 发布时间:13-06-22
1.1 什么是标志设计1.2 学校院系标志1.2.1 项目背景1.2.2 设计构思1.2.3 制作方法1.2.4 客户为什么满意1.2.5 标志的分类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.6 标志的表现手法1.4.7 优秀案例欣赏 Chapter 02 VI——品牌文化战略的视觉体系2.1 什么是VI设计2.2 主题标志确立2.2.1 项目背景2.2.2 设计构思2.2.3 制作方法2.2.4 客户为什么满意2.2.5 媒介介绍2.2.6 优秀案例欣赏2.3 标志应用规范2.3.1 项目背景2.3.2 设计构思2.3.3 制作方法2.3.4 应用规范介绍2.3.5 优秀案例欣赏2.4 办公应用系统——以名片设计为例2.4.1 项目背景2.4.2 设计构思2.4.3 制作方法2.4.4 客户为什么满意2.4.5 优秀案例欣赏 Chapter 03 DM单——版式和内容的创新3.1 什么是DM单设计3.2 项目DM单3.2.1 项目背景3.2.2 设计构思3.2.3 制作方法3.2.4 客户为什么满意3.2.5 优秀案例欣赏3.3 会员卡3.3.1 项目背景3.3.2 设计构思3.3.3 制作方法3.3.4 客户为什么满意3.3.5 常见分类介绍3.3.6 优秀案例欣赏 Chaptew04 海报设计4.1 什么是海报设计4.2 商业宣传海报4.2.1 项目背景4.2.2 设计构思4.2.3 制作方法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.5 企业招商类海报广告4.5.1 制作方法4.5.2 优秀案例欣赏4.5.3 优秀海报欣赏 Chapter 05 报纸广告——高效的版式设计5.1 什么是报纸广告5.2 房地产报纸广告5.2.1 项目背景 5.2.2 设计构思5.2.3 制作方法5.2.4 客户为什么满意5.2.5 版面大小介绍5.3 商场报纸广告5.3.1 页目背景5.3.2 设计构思5.3.3 制作方法5.3.4 客户为什么满意5.3.5 报纸广告的媒介特征5.3.6 优秀案例欣赏 Chapter 06 书籍与画册——像电影一样“起、承、转、合”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.2.4 制作方法6.2.5 客户为什么满意6.2.6 纸张版纹介绍6.2.7 画册纸张的识别性与防伪介绍6.2.8 优秀案例欣赏 Chapter 07 产品设计——三维的视觉传达 7.1 什么是产品设计 7.1.1 产品设计的意义7.1.2 产品设计的要求7.2 玻璃质感产品设计7.2.1 制作方法7.2.2 客户为什么满意7.2.3 优秀案例欣赏7.3 金属质感产品设计7.3.1 制作方法7.3.2 客户为什么满意7.3.3 优秀案例欣赏 Chapter 08 展示空间设计——平面与立体化的结合8.1 什么是展示空间8.2 展场设计8.2.1 制作方法8.2.2 客户为什么满意8.2.3 优秀案例欣赏Chapter 09 网页界面设计9.1 什么是网页界面设计9.2 图标设计 9.2.1 项目背景9.2.2 设计构思 9.2.3 制作方法9.2.4 客户为什么满意9.2.5 图标的像素介绍9.3 网页界面设计9.3.1 项目背景9.3.2 设计构思9.3.3 制作方法9.3.4 客户为什么满意9.3.5 优秀界面欣赏 内容介绍:《CorelDRAW X5平面艺术设计》针对具有一定软件基础和行业认识的读者群、从事设计行业的在职人员研发,结合不同领域必备的IT技能,对设计行业涉及的专业知识进行系统、全面的讲解。本书的目的是给从业于设计行业的广大读者提供一个全新的、能动的学习方式。不仅仅是单一的技术讲解,而是根据市场的需要,从行业知识、专业技能,到综合素质的全面展示,由此激发读者的创造力——商业的最终价值。《CorelDRAW X5平面艺术设计》采用分篇的方式,详细介绍了CorelDRAW X5在各种设计类型中的应用。全书内容包括CorelDRAW X5新增功能详解、标志——象征性的大众传播符号、VI——品牌文化战略的视觉体系、DM单——版式和内容的创新、海报设计、报纸广告——高效的版式设计、书籍与画册——像电影一样“起、承、转、合”、产品设计——三维的视觉传达、展示空间设计——平面与立体化的结合、网页界面设计。《CorelDRAW X5平面艺术设计》定位于平面设计的中、高级读者,也可以作为公司在职人员和大中专院校师生的参考书籍。内容截图:电子书www.minxue.net分流地址:CorelDRAW X5平面艺术设计.pdf ...
-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
出版者的话专家指导委员会译者序前言第一部分 基础篇第1章 全景图1.1 计算系统1.1.1 计算系统的分层1.1.2 抽象1.2 计算的历史1.2.1 计算硬件的简史1.2.2 计算软件的简史1.2.3 预言1.3 计算工具和计算学科小结练习思考题第二部分 信息层第2章 二进制数值和记数系统2.1 数字分类. 2.2 自然数2.2.1 位置记数法2.2.2 二进制、八进制和十六进制2.2.3 其他记数系统中的运算2.2.4 以2的幂为基数的记数系统2.2.5 把十进制数转换成其他数制的数2.2.6 二进制数值和计算机小结练习思考题第3章 数据表示法3.1 数据和计算机3.1.1 模拟信息和数字信息3.1.2 二进制表示法3.2 数字数据的表示法3.2.1 负数表示法3.2.2 实数表示法3.3 文本表示法3.3.1 ascii字符集3.3.2 unicode字符集3.3.3 文本压缩3.4 音频信息表示法3.4.1 音频格式3.4.2 mp3音频格式3.5 图像和图形的表示法3.5.1 颜色表示法3.5.2 数字化图像和图形3.5.3 图形的矢量表示法3.6 视频表示法小结练习思考题第三部分 硬件层第4章 门和电路4.1 计算机和电学4.2 门4.2.1 非门4.2.2 与门4.2.3 或门4.2.4 异或门4.2.5 与非门和或非门4.2.6 门处理回顾4.2.7 具有更多输入的门4.3 门的构造4.4 电路……第5章 计算部件第四部分 程序设计层第6章 问题求解和算法设计第7章 低级程序设计语言第8章 高级程序设计语言第9章 抽象数据类型和算法第五部分 操作系统层第10章 操作系统第11章 文件系统和目录第六部分 应用程序层第12章 信息系统第13章 人工智能第14章 模拟和其他应用程序第七部分 通信层第15章 网络第16章 万维网第17章 计算的限制术语表参考文献 ...
-
分类:编程开发 语言:简体中文 大小:未知 发布时间:13-06-22
第1章pe文件概述及预备知识1.1pe文件格式概述1.2各种块的描述1.3import table(引入表)1.4export table(引出表)1.5pe文件格式中的结构及其作用1.6小结第2章软件的加密技术2.1壳的认识2.2加密保护壳简介2.3压缩保护壳简介2.4小结第3章调试工具的使用3.1静态文件类型分析3.2静态调试分析工具3.3动态调试分析工具3.4 ollydbg 1.10简介第4章win32 api调试原理及相关函数4.1 windows消息.4.2win32api函数4.3逆向分析常用断点设置第5章汇编语言基础5.1汇编语言基础知识5.2汇编语言的特点5.3程序可见寄存器组5.4常用的汇编指令5.5转移指令第6章逆向工程技术6.1逆向工程技术的基本实现方式6.2两种文本编码6.3常见编程语言的入口及区段特征6.4还原压缩程序6.5手动还原压缩程序6.6还原压缩壳的各种方法6.7动态、静态分析6.8小结6.9综述第7章抗逆向工程技术7.1逆向分析工程7.2抗逆向工程技术的基本实现方式7.3分析程序的弱点7.4anti-debuggers技术探讨附录a函数索引参考文献结束语 ...