DL : 0
目 录
译者序
前言
第1章 概论 1
1.1 为什么要用编译器 2
1.2 与编译器相关的程序 3
1.3 翻译步骤 5
1.4 编译器中的主要数据结构 8
1.5 编译器结构中的其他问题 10
1.6 自举与移植 12
1.7 TINY样本语言与编译器 14
1.7.1 TINY语言 15
1.7.2 TINY编译器 15
1.7.3 TM机 17
1.8 C-Minus:编译器项目的一种语言 18
练习 19
注意与参考 20
第2章 词法分析 21
2.1 扫描处理 21
2.2 正则表达式 23
2.2.1 正则表达式的定义 23
2.2.2 正则表达式的扩展 27
2.2.3 程序设计语言记号的正则表达式 29
2.3 有穷自动机 32
2.3.1 确定性有穷自动机的定义 32
2.3.2 先行、回溯和非确定性自动机 36
2.3.3 用代码实现有穷自动机 41
2.4 从正则表达式到DFA 45
2.4.1 从正则表达式到NFA 45
2.4.2 从NFA到DFA 48
2.4.3 利用子集构造模拟NFA 50
2.4.4 将DFA中的状态数最小化 51
2.5 TINY扫描程序的实现 52
2.5.1 为样本语言TINY实现一个扫描
程序 53
2.5.2 保留字与标识符 56
2.5.3 为标识符分配空间 57
2.6 利用Lex 自动生成扫描程序 57
2.6.1 正则表达式的Lex 约定 58
2.6.2 Lex输入文件的格式 59
2.6.3 使用Lex的TINY扫描程序 64
练习 65
编程练习 67
注意与参考 67
第3章 上下文无关文法及分析 69
3.1 分析过程 69
3.2 上下文无关文法 70
3.2.1 与正则表达式比较 70
3.2.2 上下文无关文法规则的说明 71
3.2.3 推导及由文法定义的语言 72
3.3 分析树与抽象语法树 77
3.3.1 分析树 77
3.3.2 抽象语法树 79
3.4 二义性 83
3.4.1 二义性文法 83
3.4.2 优先权和结合性 85
3.4.3 悬挂else问题 87
3.4.4 无关紧要的二义性 89
3.5 扩展的表示法:EBNF和语法图 89
3.5.1 EBNF表示法 89
3.5.2 语法图 91
3.6 上下文无关语言的形式特性 93
3.6.1 上下文无关语言的形式定义 93
3.6.2 文法规则和等式 94
3.6.3 乔姆斯基层次和作为上下文无关
规则的语法局限 95
3.7 TINY语言的语法 97
3.7.1 TINY的上下文无关文法 97
3.7.2 TINY编译器的语法树结构 98
练习 101
注意与参考 104
第4章 自顶向下的分析 105
4.1 使用递归下降分析算法进行自顶向下
的分析 105
4.1.1 递归下降分析的基本方法 105
4.1.2 重复和选择:使用EBNF 107
4.1.3 其他决定问题 112
4.2 LL(1)分析 113
4.2.1 LL(1)分析的基本方法 113
4.2.2 LL(1)分析与算法 114
4.2.3 消除左递归和提取左因子 117
4.2.4 在LL(1)分析中构造语法树 124
4.3 First集合和Follow集合 125
4.3.1 First 集合 125
4.3.2 Follow 集合 130
4.3.3 构造LL(1)分析表 134
4.3.4 再向前:LL(k)分析程序 135
4.4 TINY语言的递归下降分析程序 136
4.5 自顶向下分析程序中的错误校正 137
4.5.1 在递归下降分析程序中的错误
校正 138
4.5.2 在LL(1)分析程序中的错误校正 140
4.5.3 在TINY分析程序中的错误校正 141
练习 143
编程练习 146
注意与参考 148
第5章 自底向上的分析 150
5.1 自底向上分析概览 151
5.2 LR(0)项的有穷自动机与LR(0)分析 153
5.2.1 LR(0)项 153
5.2.2 项目的有穷自动机 154
5.2.3 LR(0)分析算法 157
5.3 SLR(1)分析 160
5.3.1 SLR(1)分析算法 160
5.3.2 用于分析冲突的消除二义性
规则 163
5.3.3 SLR(1)分析能力的局限性 164
5.3.4 SLR(k)文法 165
5.4 一般的LR(1)和LALR(1)分析 166
5.4.1 LR(1)项的有穷自动机 166
5.4.2 LR(1)分析算法 169
5.4.3 LALR(1)分析 171
5.5 Yacc:一个LALR(1)分析程序的
生成器 173
5.5.1 Yacc基础 173
5.5.2 Yacc选项 176
5.5.3 分析冲突与消除二义性的规则 180
5.5.4 描述Yacc分析程序的执行 183
5.5.5 Yacc中的任意值类型 184
5.5.6 Yacc中嵌入的动作 185
5.6 使用Yacc生成TINY分析程序 186
5.7 自底向上分析程序中的错误校正 188
5.7.1 自底向上分析中的错误检测 188
5.7.2 应急方式错误校正 188
5.7.3 Yacc中的错误校正 189
5.7.4 TINY中的错误校正 192
练习 192
编程练习 195
注意与参考 197
第6章 语义分析 198
6.1 属性和属性文法 199
6.1.1 属性文法 200
6.1.2 属性文法的简化和扩充 206
6.2 属性计算算法 207
6.2.1 相关图和赋值顺序 208
6.2.2 合成和继承属性 212
6.2.3 作为参数和返回值的属性 219
6.2.4 使用扩展数据结构存储属性值 221
6.2.5 语法分析时属性的计算 223
6.2.6 语法中属性计算的相关性 226
6.3 符号表 227
6.3.1 符号表的结构 228
6.3.2 说明 230
6.3.3 作用域规则和块结构 232
6.3.4 同层说明的相互作用 236
6.3.5 使用符号表的属性文法的一个
扩充例子 237
6.4 数据类型和类型检查 241
6.4.1 类型表达式和类型构造器 242
6.4.2 类型名、类型说明和递归类型 246
6.4.3 类型等价 248
6.4.4 类型推论和类型检查 253
6.4.5 类型检查的其他主题 255
6.5 TINY语言的语义分析 257
6.5.1 TINY的符号表 258
6.5.2 TINY语义分析程序 259
练习 260
编程练习 264
注意与参考 264
第7章 运行时环境 266
7.1 程序执行时的存储器组织 266
7.2 完全静态运行时环境 269
7.3 基于栈的运行时环境 271
7.3.1 没有局部过程的基于栈的环境 271
7.3.2 带有局部过程的基于栈的环境 281
7.3.3 带有过程参数的基于栈的环境 284
7.4 动态存储器 286
7.4.1 完全动态运行时环境 286
7.4.2 面向对象的语言中的动态存储器 287
7.4.3 堆管理 289
7.4.4 堆的自动管理 292
7.5 参数传递机制 292
7.5.1 值传递 293
7.5.2 引用传递 294
7.5.3 值结果传递 295
7.5.4 名字传递 295
7.6 TINY语言的运行时环境 296
练习 297
编程练习 303
注意与参考 304
第8章 代码生成 305
8.1 中间代码和用于代码生成的数据
结构 305
8.1.1 三地址码 306
8.1.2 用于实现三地址码的数据结构 308
8.1.3 P-代码 310
8.2 基本的代码生成技术 312
8.2.1 作为合成属性的中间代码或目标
代码 312
8.2.2 实际的代码生成 314
8.2.3 从中间代码生成目标代码 317
8.3 数据结构引用的代码生成 319
8.3.1 地址计算 319
8.3.2 数组引用 320
8.3.3 栈记录结构和指针引用 325
8.4 控制语句和逻辑表达式的代码生成 328
8.4.1 if 和while 语句的代码生成 328
8.4.2 标号的生成和回填 330
8.4.3 逻辑表达式的代码生成 330
8.4.4 if 和while 语句的代码生成过程
样例 331
8.5 过程和函数调用的代码生成 334
8.5.1 过程和函数的中间代码 334
8.5.2 函数定义和调用的代码生成过程 336
8.6 商用编译器中的代码生成:两个案
例研究 339
8.6.1 对于80×86的Borland 3.0版C编
译器 339
8.6.2 Sun SparcStation的Sun 2.0 C编
译器 343
8.7 TM:简单的目标机器 346
8.7.1 Tiny Machine的基本结构 347
8.7.2 TM模拟器 349
8.8 TINY语言的代码生成器 351
8.8.1 TINY代码生成器的TM接口 351
8.8.2 TINY代码生成器 352
8.8.3 用TINY编译器产生和使用TM
代码文件 354
8.8.4 TINY编译器生成的TM代码文
件示例 355
8.9 代码优化技术考察 357
8.9.1 代码优化的主要来源 358
8.9.2 优化分类 360
8.9.3 优化的数据结构和实现技术 362
8.10 TINY代码生成器的简单优化 366
8.10.1 将临时变量放入寄存器 366
8.10.2 在寄存器中保存变量 367
8.10.3 优化测试表达式 367
练习 368
编程练习 371
注意与参考 372
附录A 编译器设计方案 373
附录B 小型编译器列表 381
附录C Tiny Machine模拟器列表 417
Update : 2008-04-25
Size : 7.26mb
Publisher : wesong
DL : 0
ASN.1 (抽象语法符号)
A Layman s Guide to a Subset of ASN.1, BER, and DER. 对理解报文传输有一定帮助
Update : 2008-10-13
Size : 79.1kb
Publisher : Jason
DL : 0
本文简单介绍了OSI 抽象语法符号(ASN.1)的子集——基本编码规则(BER)和可辨别编码规则(DER)。
Update : 2008-10-13
Size : 408.53kb
Publisher : 林嘉
DL : 2
目录
第一篇 技术基础总结
第1章 .NET,你真的知道了吗
1.1 搞清自己是干什么的
1.2 .NET的几个特性
1.3 万丈高楼平地起:面试者必会
1.3.1 C#介绍
1.3.2 命名空间
1.3.3 C#语法格式要点
1.3.4 变量
1.3.5 类型推断
1.3.6 变量的作用域
1.3.7 常量
1.3.8 流程控制
1.3.9 字符串常见操作
1.3.10 几个常用的数学函数
1.4 .NET的面向对象之门
1.4.1 继承——“子承父业”
1.4.2 委托——“任务书”
1.4.3 事件——“年终分红”
1.4.4 反射——“解剖”
1.5 .NET开发几把小刀
1.5.1 using之多变身
1.5.2 @符号的妙用
1.5.3 预处理指令,有你更轻松
1.6 Visual Studio.NET 2008 实战
1.6.1 如何创建ASP.NET项目
1.6.2 如何创建Windows项目
1.6.3 Visual Studio.NET 2008操作与使用技巧
1.6.4 常见开发调试技巧
1.6.5 错误异常处理方法
本章常见技术面试题
常见面试技巧之面试前的准备
本章小结
第2章 细节决定成败
2.1 Equals()和运算符==的区别
2.2 const和readonly的区别
2.3 private、protected、public和internal的区别
2.4 sealed、new、virtual、abstract与override
2.5 abstract class与interface
2.6 公共变量与属性的区别
2.7 参数修饰符params、out和ref的区别
2.8 值类型和引用类型的区别
2.9 结构与类的区别
2.10 Dispose()和Close()、Finalize()的区别
2.11 string和StringBuilder有什么区别
2.12 Debug版本和Release版本的区别
本章常见技术面试题
常见面试技巧之细节决定成败
本章小结
第3章 ASP.NET开发大杂烩
3.1 页面生命周期
3.1.1 独立页面生命周期事件顺序
3.1.2 具有Master页的生命周期事件顺序
3.1.3 ASP.NET生命周期详解
3.2 页面状态管理
3.2.1 Cookie
3.2.2 HtmlInputHidden隐藏域
3.2.3 ViewState
3.2.4 查询字符串Request
3.2.5 Aplication对象
3.2.6 Session对象
3.2.7 示例项目:在线用户列表统计
3.3 服务器和客户端数据交互
3.3.1 页面数据绑定全攻略
3.3.2 Bind和Eval的区别
3.4 ASP.NET编程中的技巧
3.4.1 页面之间传值的7种方法
3.4.2 get与post方法的区别
3.4.3 ASP.NET服务器控件和HTML控件的区别
3.4.4 Server.Transfer和Response.Redirect的区别
3.4.5 刷新页面的方法汇总
3.4.6 页面事件控制
3.4.7 在URL中传递中文的解决方案
3.4.8 增强用户体验的一些技巧
3.4.9 XHTML与HTML的区别
3.5 打造自己的页面基类PageBase
本章常见技术面试题
常见面试技巧之如何做好自我介绍
本章小结
第4章 Windows窗体编程你也行
4.1 创建简单的WinForm项目
4.2 创建MDI窗体应用
4.3 获取应用程序路径信息
4.4 回车跳转控件焦点
4.5 窗体间传递复杂数据
4.5.1 构造传递
4.5.2 公有字段传递
4.5.3 委托与事件传递
4.6 实现个性化窗体界面
4.7 无标题窗体拖动的两种方法
4.8 让程序只启动一次——单实例运行
4.9 实现系统托盘和热键呼出
4.10 进程与多线程的区别
4.11 创建多线程应用程序
4.12 WinForm开发常见问题
4.12.1 如何设置运行时窗体的起始位置
4.12.2 如何使一个窗体在屏幕的最顶端
4.12.3 实现窗体渐显效果
4.12.4 设置窗口背景为渐变色
4.12.5 模态窗口和非模态窗口
4.12.6 屏蔽窗口右上角的关闭操作
4.12.7 调用执行外部的程序
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第5章 数据库开发
5.1 ADO.NET与抽水的故事
5.1.1 ADO.NET的定义
5.1.2 趣味理解ADO.NET对象模型
5.1.3 进水笼头——建立Connection
5.1.4 抽水机——Command
5.1.5 输水管——DataAdapter
5.1.6 输水管——DataReader
5.1.7 随用随关,释放资源
5.1.8 水库管理——DataSet
5.1.9 水池子——DataTable
5.2 数据库操作类的封装详解
5.2.1 执行命令方法的封装
5.2.2 查询数据方法的封装
5.2.3 数据统计方法的封装
5.2.4 实现SqlParameter方式
5.2.5 实现多数据库的访问
5.3 常用经典SQL语句
5.4 事务处理
5.4.1 SQL和存储过程级别的事务
5.4.2 ADO.NET级别的事务
5.4.3 ASP.NET页面级别的事务
5.4.4 企业级服务COM+事务
5.4.5 System.Transactions 事务处理
5.5 Oracle开发常见问题
5.5.1 Oracle和SQL Server的常用函数对比
5.5.2 Oracle和SQL Server的语句区别
5.5.3 ASP.NET连接Oracle失败的解决方法
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第6章 关于XML
6.1 XML概述
6.1.1 XML和HTML有什么区别
6.1.2 XML的优势
6.2 文档结构与基本语法
6.3 XML操作
6.3.1 XmlDocument创建XML文档
6.3.2 XmlTextWriter创建XML文档
6.3.3 XmlDocument读取XML文档
6.3.4 XmlTextReader读取XML文档
6.3.5 在HTML中显示XML中的数据
6.3.6 JavaScript获取XML内容
6.3.7 项目案例:通用自定义XML配置类
6.4 ADO.NET与XML
6.4.1 读XML文档到DataSet
6.4.2 DataSet转为XML文档
6.5 项目案例1:实现网站的RSS应用
6.6 项目案例2:在线实现RSS阅读器
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第7章 Web Service开发详解
7.1 Web Service基本概念
7.2 Web Service的应用场景
7.3 创建简单的Web Service项目应用
7.4 Web Service属性介绍
7.5 ASP.NET如何调用Web Service
7.6 JavaScript如何调用Web Service
7.6.1 通过webbehavior.htc调用Web Service
7.6.2 通过Microsoft.XMLDOM调用Web Service
7.6.3 XMLHTTP POST调用Web Service
7.6.4 SOAP调用Web Service
7.7 WinForm如何调用Web Service
7.7.1 .NET的WinForm调用Web Service
7.7.2 手动发送HTTP请求调用Web Service
7.8 实现异步调用Web Service
7.9 如何保证Web Service的安全
7.9.1 通过SoapHeader来增强Web Service的安全性
7.9.2 采用SSL实现加密传输
7.9.3 访问IP限制
7.10 Web Service开发中需要注意的 问题
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第8章 用户体验的杀手锏——Ajax
8.1 Ajax概述
8.1.1 什么是Ajax
8.1.2 Ajax技术的核心
8.1.3 Ajax的工作原理
8.1.4 Ajax的优点
8.1.5 Ajax的问题
8.1.6 Ajax适用场景
8.1.7 Ajax不适用场景
8.1.8 XMLHttpRequest开发实例
8.2 微软VS.NET的Ajax开发
8.2.1 安装ASP.NET 2.0 Ajax Extensions
8.2.2 创建ASP.NET Ajax应用程序
8.2.3 ScriptManager控件使用技巧
8.2.4 UpdaetPanel控件使用技巧
8.2.5 AsyncPostBackTrigger实现外部控件引发局部刷新
8.2.6 Ajax错误处理
8.2.7 告诉用户你正在做什么——UpdateProgress控件
8.2.8 ASP.NET AjaxControToolKit简介
8.3 使用第三方组件 Ajax.dll 开发
8.4 使用第三方组件AjaxPro的开发
8.5 使用第三方组件MagicAjax的开发
8.6 Ajax开发原则
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第9章 系统与文件操作
9.1 获取系统信息
9.1.1 用SystemInformation类获取系统信息
9.1.2 用Environment 类获取系统信息
9.1.3 通过WMI获取系统信息
9.1.4 用RegistryKey 类读取系统信息
9.1.5 用API函数获取系统信息
9.1.6 获取系统服务信息
9.2 文件操作
9.2.1 StreamWriter类实现写文件
9.2.2 通过File类创建文件
9.2.3 通过FileStream类创建文件
9.2.4 通过FileInfo类创建文件
9.2.5 追加文本
9.2.6 读取文本文件
9.2.7 读写二进制文件
9.2.8 文件复制、移动、删除
9.3 文件夹目录操作
9.4 读写INI文件
9.5 读写注册表
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第10章 网络应用开发
10.1 Socket基本编程
10.1.1 Socket基本知识
10.1.2 Socket服务端开发步骤
10.1.3 Socket客户端开发步骤
10.2 异步Socket通信——实现MSN机器人
10.2.1 机器人服务端
10.2.2 客户端实现步骤
10.3 基于TCP协议的客户端和服务端
10.3.1 TcpListener 实现网络服务端
10.3.2 TcpClient实现网络客户端
本章常见技术面试题
常见面试技巧之经典问题巧回答
本章小结
第11章 Windows Service开发
11.1 什么是Windows服务
11.2 创建Windows服务
11.3 Windows服务开发常见问题
11.4 安装/卸载Windows服务
11.4.1 安装Windows服务
11.4.2 卸载Windows服务
11.4.3 Windows服务应用程序体系结构
11.5 调试Windows服务
11.5.1 日志调试法
11.5.2 附加进程断点调试法
本章常见技术面试题
职场智慧之初入江湖
本章小结
第12章 新技术初探
12.1 WPF 421
12.1.1 WPF简介 421
12.1.2 WPF何以令人佩服 422
12.1.3 XAML概述 422
12.1.4 WPF开发环境配置 423
12.1.5 项目示例:开发一个简单的WPF应用程序 424
12.2 WCF 427
12.2.1 SOA是什么 427
12.2.2 WCF是什么 428
12.2.3 WCF的优势是什么 428
12.2.4 WCF开发环境 431
12.2.5 项目示例:订票服务WCF开发步骤 431
12.3 LINQ 440
12.3.1 LINQ的架构 441
12.3.2 传统的查询 441
12.3.3 LINQ查询实例 444
12.3.4 LINQ查询语法 448
本章常见技术面试题 449
职场智慧之学习方法 449
本章小结 450
第二篇 系统架构设计思想
第13章 面向对象思想
13.1 为什么要面向对象 454
13.2 什么是面向对象 456
13.3 面向对象的特点 458
13.3.1 封装 459
13.3.2 继承 459
13.3.3 多态 460
13.4 面向对象设计和开发实例 466
13.4.1 传统过程化设计实现播放器功能 466
13.4.2 基于面向对象设计实现播放器功能 467
13.4.3 面向对象封装、继承、多态的应用 468
13.4.4 设计模式、条件外置及反射技术的应用 471
13.5 面向对象分析(OOA)的方法 475
13.6 面向对象设计的原则 478
13.6.1 优先使用(对象)组合,而非(类)继承 478
13.6.2 针对接口编程,而非(接口的)实现 481
13.6.3 开放-封闭法则(OCP) 482
13.6.4 Liskov替换法则(LSP) 485
13.6.5 单一职责原则(SRP) 486
13.6.6 依赖倒置原则(DIP) 486
13.6.7 接口分离原则(ISP) 489
13.6.8 面向对象设计时需要注意的问题 490
本章常见技术面试题 491
本章小结 491
第14章 三层架构项目开发
14.1 什么是三层架构 494
14.1.1 常用的三层架构设计 494
14.1.2 趣味理解:三层架构与养猪 496
14.2 为什么要用三层架构 497
14.3 三层架构项目开发示例 500
14.3.1 数据库设计 500
14.3.2 创建整体解决方案 501
14.3.3 业务实体Model的实现 502
14.3.4 数据访问层的实现 504
14.3.5 业务逻辑层的实现 509
14.3.6 表示层的实现 510
14.4 实现基于工厂模式的三层架构 512
14.4.1 扩展新增数据访问层 512
14.4.2 IDAL抽象接口的实现 513
14.4.3 创建DAL对象的封装 517
14.4.4 实现抽象工厂模式 519
14.4.5 工厂模式的三层架构图 521
本章常见技术面试题 522
职场智慧之程序员的职业规划 523
本章小结 524
第15章 大型网站的性能优化与安全
15.1 高效C#编码优化 526
15.2 页面(HTML)优化的方法 534
15.3 ASP.NET开发性能优化 540
15.3.1 如没必要,尽量使用静态HTML页面 540
15.3.2 避免不必要的回送操作 541
15.3.3 尽量在客户端进行用户输入验证 541
15.3.4 关闭不必要的Session状态 542
15.3.5 优先使用HTML控件,而非服务器控件 542
15.3.6 不必要时关闭ViewState 542
15.3.7 禁用调试模式 543
15.4 系统缓存管理 543
15.4.1 缓存的分类 544
15.4.2 传统缓存方式 545
15.4.3 页面输出缓存 545
15.4.4 页面输出缓存API 548
15.4.5 页面局部缓存 549
15.4.6 应用程序数据缓存 554
15.4.7 文件缓存依赖 555
15.4.8 数据库缓存依赖 557
15.4.9 Memcached——分布式缓存系统 560
15.4.10 Cacheman——.NET架构下的分布式缓存项目 561
15.5 数据库访问性能优化 562
15.5.1 选择合适的.NET数据供应器 563
15.5.2 及时地关闭数据库连接 563
15.5.3 跟踪监视SQL Server当前链接池状态 564
15.5.4 善用数据库的存储过程 567
15.5.5 SqlDataRead和Dataset的选择 567
15.5.6 ExecuteNonQuery和ExecuteScalar的选择 568
15.5.7 数据的绑定DataBinder 568
15.5.8 使用DataReader的注意事项 568
15.5.9 Command对象的使用 569
15.5.10 反复地执行SQL语句用 Prepare() 569
15.5.11 分页的数据访问 570
15.5.12 SQL命令的优化 570
15.5.13 tempdb的使用技巧 572
15.5.14 使用视图代替跨库操作 572
15.5.15 尽量避免大事务操作 572
15.5.16 尽量避免使用游标 573
15.5.17 为你的表建立适当的索引 573
15.6 网站安全防护 573
15.6.1 什么是SQL注入式攻击 573
15.6.2 如何防范SQL注入式攻击 574
15.6.3 实现页面验证码 575
15.6.4 实现文件防盗链 579
15.6.5 采用HTTPS进行访问 584
15.7 IIS优化 584
15.7.1 如何监测IIS服务器并发数 584
15.7.2 采用Gzip压缩页面优化 585
15.7.3 网站应用程序池配置 588
15.8 网站架构优化策略 593
本章常见技术面试题 596
职场智慧之独善其身 596
本章小结 599
第16章 系统设计的原则和技巧
16.1 系统设计的一些原则 602
16.1.1 最适合的才是最好的 602
16.1.2 以不变应万变 603
16.1.3 可扩展性 603
16.1.4 可复用性 604
16.2 系统设计的常用方法 604
16.3 敏捷软件开发12条原则 608
16.4 系统架构师成长之路 611
本章常见技术面试题 615
职场智慧之职场政治 615
本章小结 616
第三篇 项目实战解析
第17章 权限角色管理项目解析
17.1 权限角色管理概述 620
17.2 项目概述 623
17.3 数据库设计 624
17.3.1 数据库实体关系模型 624
17.3.2 表结构设计 625
17.4 数据访问层 627
17.4.1 类设计 627
17.4.2 代码实现 629
17.5 业务逻辑层 629
17.5.1 类设计 630
17.5.2 扩展.NET Framework用户处理机制 632
17.6 接口调用与Web管理实现 638
17.6.1 Web.config配置 638
17.6.2 用户身份和权限验证 638
17.6.3 用户验证接口方式:权限验证用户控件 640
17.6.4 用户验证接口方式:页面基类 642
17.6.5 用户和角色权限的后台管理 644
职场智慧之如何提升自己在公司的价值 652
本章小结 653
第18章 单点登录系统的设计与实现
18.1 项目概述 656
18.1.1 名词定义 656
18.1.2 项目需求描述 656
18.2 业务流程设计 657
18.2.1 用户认证流程 657
18.2.2 安全验证流程 658
18.3 功能与接口设计 659
18.3.1 接*互设计 659
18.3.2 应用系统接口 660
18.3.3 认证服务器功能和接口 660
18.4 数据库设计 660
18.4.1 数据库实体关系模型 661
18.4.2 表结构设计 661
18.5 实现认证服务器 662
18.5.1 SSO解决方案 663
18.5.2 系统管理后台 664
18.5.3 用户通行证管理中心 665
18.5.4 认证服务器接口开发 673
18.6 应用系统接入接口开发 675
18.6.1 用户身份认证 675
18.6.2 接收状态同步 676
18.6.3 用户注销 678
18.6.4 更新认证服务器状态 679
18.7 接口封装及调用 679
职场智慧之晋升之道 682
本章小结 684
第19章 常用.NET开发工具介绍
19.1 源码版本管理:Visual SourceSafe 2005 686
19.1.1 安装和配置VSS 2005服务端 686
19.1.2 安装和配置VSS客户端 691
19.1.3 将项目加入VSS版本控制 692
19.1.4 客户端连接VSS 服务器获取源代码 694
19.1.5 设置VSS支持通过Internet访问 696
19.1.6 版本控制的几个概念 701
19.1.7 VSS项目权限管理 703
19.1.8 VSS数据备份 705
19.1.9 VSS 2005的使用规范 707
19.2 单元测试工具:NUnit 708
19.2.1 NUnit简介 708
19.2.2 手把手教你在.NET中应用NUnit 708
19.3 日志工具——Log4net 714
19.3.1 Log4net简介 714
19.3.2 使用步骤 717
19.3.3 单独配置文件的使用 719
19.4 代码规范检查工具:Microsoft Source Analysis for C# 721
19.5 生成文档注释工具:GhostDoc 723
19.6 反编译工具:Reflector for .NET 732
19.7 动软.NET代码生成器 733
19.8 帮助文档生成工具:Sandcastle 737
19.8.1 Sandcastle介绍 737
19.8.2 生成方式 738
19.8.3 具体生成步骤 740
本章小结 748
附录A 软件编码规范
A.1 概述 750
A.1.1 规范基本原则 750
A.1.2 术语定义 750
A.1.3 文件命名组织 750
A.2 代码外观 751
A.2.1 列宽 751
A.2.2 换行 751
A.2.3 缩进 751
A.2.4 空行 751
A.2.5 空格 752
A.2.6 括号——() 753
A.2.7 花括号——{} 753
A.3 程序注释 754
A.3.1 注释概述 754
A.3.2 文档型注释 755
A.3.3 类注释 755
A.3.4 单行注释 755
A.3.5 注释标签 756
A.4 声明 758
A.4.1 每行声明数 758
A.4.2 初始化 758
A.4.3 位置 758
A.4.4 类和接口的声明 759
A.4.5 字段的声明 759
A.5 命名规范 759
A.5.1 命名概述 759
A.5.2 大写规则 760
A.5.3 缩写 761
A.5.4 命名空间 761
A.5.5 类 762
A.5.6 接口 762
A.5.7 属性(Attribute) 763
A.5.8 枚举(Enum) 763
A.5.9 参数 763
A.5.10 方法 764
A.5.11 属性(property) 764
A.5.12 事件 765
A.5.13 常量(const) 766
A.5.14 字段 767
A.5.15 静态字段 768
A.5.16 集合 768
A.5.17 措词 768
A.6 语句 769
A.6.1 每行一个语句 769
A.6.2 复合语句 769
A.6.3 return语句 769
A.6.4 if、if-else、if else-if语句 770
A.6.5 for、foreach 语句 770
A.6.6 while语句 771
A.6.7 do-while语句 771
A.6.8 switch-case语句 771
A.6.9 try-catch语句 772
A.6.10 using块语句 772
A.6.11 goto语句 772
A.7 其他 773
A.7.1 表达式 773
A.7.2 类型转换 773
A.8 匈牙利命名法 773
A.9 控件命名规则 774
A.9.1 一般命名方法 774
A.9.2 主要控件名简写对照表 774
Update : 2009-08-29
Size : 7.11mb
Publisher : jackws@tom.comjackws
DL : 0
本文简单介绍了OSI 抽象语法符号(ASN.1)的子集——基本编码规则(BER)和可辨别编码规则(DER)。本文的主要目的是为理解和实现PKCS协议族提供足够的背景材料。
Update : 2010-11-05
Size : 408.32kb
Publisher : cloudfw
DL : 0
ASN.1 (抽象语法符号)
A Layman s Guide to a Subset of ASN.1, BER, and DER. 对理解报文传输有一定帮助-ASN.1 (abstract syntax symbols) A Layman s Guide to a Subset of ASN.1, BER, and DER. To understand the message transmission has a certain extent, help
Update : 2025-02-17
Size : 79kb
Publisher : Jason
DL : 0
本文简单介绍了OSI 抽象语法符号(ASN.1)的子集——基本编码规则(BER)和可辨别编码规则(DER)。-This article briefly introduced symbols OSI abstract syntax (ASN.1) subset- Basic Encoding Rules (BER) and the identifiable coding rules (DER).
Update : 2025-02-17
Size : 408kb
Publisher : 林嘉
DL : 0
asn1 ber der 编码子集入门指南说明文档
RSA实验室的一份技术笔记本文简单介绍了OSI 抽象语法符号(ASN.1)的子集——基本编码规则(BER)和可辨别编码规则(DER)。本文的主要目的是为理解和实现PKCS协议族提供足够的背景材料。-asn1 ber der encoding a subset of the Getting Started documentation RSA Laboratories Technical notebook paper a brief introduction of the OSI Abstract Syntax Notation (ASN.1) a subset of- Basic Encoding Rules (BER) and identifiable Encoding Rules (DER) . The main purpose of this paper is to understand and implement PKCS protocol suite to provide sufficient background material.
Update : 2025-02-17
Size : 406kb
Publisher : 张乾亮
DL : 0
对tiny语义分析器的阅读和分析,理解符号表的定义(栏目设置)与基于抽象语法树的类型检查/推论的实现方法(树遍历)。完成C-语言的符号表的定义设计。规划类型检查/推论的实现方法。实现一种语言的语义分析器-Type checking/inference realization tiny semantic analyzer reading and analysis, to understand the definition of the symbol table (part set) based on the abstract syntax tree (tree traversal). Completion of the C-language definition of the symbol table design. The planning type checking/inference realization. A language semantic analyzer
Update : 2025-02-17
Size : 222kb
Publisher : 时雨
CodeBus is one of the largest source code repositories on the Internet!
Contact us :
1999-2046
CodeBus All Rights Reserved.