- 目录 一 软件测试 从零开始 5 1.1 引言 5 1.2 测试准备工作 5 1.2.1 向有经验的测试人员学习 5 1.2.2 阅读软件测试的相关书籍 6 1.2.3 走读缺陷跟踪库中的问题报告单 6 1.2.4 走读相关产品的历史测试用例 6 1.2.5 学习产品相关的业务知识 6 1.3 识别测试需求 7 1.3.1 主动获取需求 7 1.3.2 确认需求的优先级 8 1.3.3 加入开发小组的邮件群组 8 1.3.4 与开发人员为邻 8 1.4 测试用例设计 8 1.4.1 测试用例的基本格式 8 1.4.2 重用同类型项目的测试用例 9 1.4.3 利用已有的软件 Checklist 9 1.4.4 加强测试用例的评审 10 1.4.5 定义测试用例的执行顺序 10 1.5 测试用例执行 10 1.5.1 搭建软件测试环境,执行测试用例 10 1.5.2 测试执行过程应注意的问题 11 1.5.3 及时更新测试用例 11 1.5.4 提交一份优秀的问题报告单 12 1.6 测试结果分析 12 1.7 总结 13 二 软件测试的常识 13 2.1 引言 13 2.2 软件测试常识 13 2.2.1 测试是不完全的(测试不完全) 13 2.2.2 测试具有免疫性(软件缺陷免疫性) 14 2.2.3 测试是 “ 泛型概念 ” (全程测试) 14 2.2.4 80-20 原则 14 2.2.5 为效益而测试 15 2.2.6 缺陷的必然性 15 2.2.7 软件测试必须有预期结果 15 2.2.8 软件测试的意义 - 事后分析 15 2.2.9 结论: 15 三 浅谈软件开发中的注意事项 16 3.1 项目设计 16 3.2 设计变化和需求变化 16 3.3 代码编写 17 3.3.1 源程序文件结构 17 3.3.2 界面设计风格的一致性 17 3.3.3 编辑风格 17 3.3.4 命名规范 18 3.4 BUG修补 18 3.5 开发人员的测试 18 四 软件测试的若干问题 19 4.1 前言 19 4.2 博弈的各方 19 4.3 测试的过程 20 4.4 测试所具备的素质 20 4.5 自动化测试 20 4.6 测试的误区 21 五 浅谈功能测试用例模板设计 21 5.1 Excel 模版 21 5.2 测试用例状态转换分析 23 六 如何提高软件质量 23 6.1 什么是质量 24 6.2 流程对质量的贡献 25 6.3 流程与技术 27 6.4 全面质量管理 28 6.5 关注测试 29 6.6 成功的铁三角 30 6.7 国际上流行的质量标准 30 6.8 如何起步 32 七 ISO和CMM,我们该选择谁 32 7.1 管理水平的适用性 33 7.2 复杂度的适用性 33 7.2.1何谓研发过程复杂度 34 7.2.2 何谓组织机构复杂度 34 7.3 量化管理的适用性上 35 7.4 结论 36 八 如何做好单元测试 36 8.1 前言 36 8.2 组织结构应该保证测试组参与单元测试 36 8.3 加强单元测试流程规范性 37 8.3.1 制订单元测试的过程定义 37 8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能培训 39 8.4.2 必须引入工具进行辅助 40 8.4.3 单元测试者加强对被测软件的全面了解 40 8.5 结尾 40 九 漫谈人机界面测试 41 9.1 一致性测试 41 9.2 信息反馈测试 42 9.3 界面简洁性测试 42 9.4 界面美观度测试 42 9.5 用户动作性测试 43 9.6 行业标准测试 43 9.7 小结 44 十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 46 10.2.2 负载测试 46 10.2.3 压力测试 46 10.3 可用性测试 47 10.3.1 导航测试 47 10.3.2 图形测试 47 10.3.3 内容测试 47 10.3.4 整体界面测试 47 10.4 客户端兼容性测试 48 10.4.1 平台测试 48 10.4.2 浏览器测试 48 10.5 安全性测试 48 10.6 总结 49 十一 为盈利而测试 49 11.1 引言 49 11.2 什么是软件测试 50 11.3 六个误区 50 11.3.1 误区一:忽视对正常输入的测试 50 11.3.2 误区二:忽视设计阶段的参与与评估 50 11.3.3 误区三:忽视测试计划与测试文档的建立及维护 51 11.3.4 误区四:忽视缺陷的分析,报告及跟踪 51 11.3.5 误区五:错误的测试目标及测试终止条件 51 11.3.6 误区六:不懂得合理调配使用测试人员的知识技能结构 51 11.4 软件质量与软件测试 52 11.5 软件测试的经济目的 54 11.5.1 满足用户需求,提高产品的竞争力,最终提高产品的销售量 54 11.5.2 尽早发现缺陷,降低后继质量成本 54 11.6 何时应当停止测试 56 十二 整体性能测试剖析 57 十三 性能测试工具之研究 62 13.1 性能测试的意义 62 13.2 性能测试工具综述 63 13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术要点 72 13.10 数据分析工具 Analysis 72 13.11 结束语 72 十四 性能测试原理及性能测试实例分析 73 14.1 软件测试中的性能测试 73 14.1.1 性能测试的含义 73 14.1.2 性能测试的分解 73 14.2 一个性能测试实例 74 14.2.1 被测系统 74 14.2.2 对被测系统进行性能测试 75 14.5 总结 80 十五 软件GUI测试中的关注点 80 15.1 不能不说的二个问题 81 15.1.1 软件测试中的“二八”原则 81 15.1.2 软件黑盒测试解决的问题 81 15.2 软件黑盒测试常见错误类型及说明 81 15.2.1 用户界面错误 81 15.2.2 功能性 81 15.2.3 人机交互 82 15.3 命令结构和录入 87 15.3.1 不一致性 87 15.3.2 “最优化” 87 15.3.3 菜单 89 15.4 遗漏的命令 90 15.4.1 状态转换 90 15.4.2 危机预防 90 15.4.3 由用户进行的错误处理 91 15.4.4 其他问题 91 15.5 程序僵化 92 15.5.1 用户可调整性 92 15.5.2 控制方式 93 15.6 性能 94 15.6.1 降低程序速度 94 15.6.2 缓慢回应 94 15.6.3 如何减少用户吞吐量 94 15.6.4 反应拙劣 94 15.6.5 没有提前输入 95 15.6.6 没有给出某个操作会花很长时间的警告 95 15.6.7 程序太多提示和询问 95 15.6.8 尽量使用简单命令和提示 95 15.7 输出 95 15.7.1 不能输出某种数据 95 15.7.2 不能重定向输出 95 15.7.3 与一个后续过程不兼容的格式 96 15.7.4 必须输出的很少或很多 96 15.7.5 不能控制输出布局 96 15.7.6 荒谬的精度输出级别 96 15.7.7 不能控制表或图的标记 96 15.7.8 不能控制图形的缩放比例 96 15.8 错误处理 96 15.8.1 错误预防 96 15.8.2 错误检测 97 15.8.3 错误恢复 98 15.8.4 边界相关的错误 99 15.8.5 计算错误 100 15.9 小结 100 十六 软件测试技术 100 16.1 软件测试基础 101 16.1.1 测试目标 101 16.1.2 测试原则 101 16.1.3 可测试性 102 16.2 测试用例设计 104 16.3 白盒测试 104 16.4 基本路径测试 105 16.4.1 流图符号 105 16.4.2 环形复杂性 106 16.4.3 导出测试用例 106 16.4.4 图矩阵 108 16.5 控制结构测试 108 16.5.1 条件测试 108 16.5.2 数据流测试 110 16.5.3 循环测试 111 16.6 黑盒测试 1125 862浏览会员免费
- 基于 Jenkins 快速搭建持续集成环境 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境。5 1195浏览会员免费
- 目录 一 软件测试 从零开始 5 1.1 引言 5 1.2 测试准备工作 5 1.2.1 向有经验的测试人员学习 5 1.2.2 阅读软件测试的相关书籍 6 1.2.3 走读缺陷跟踪库中的问题报告单 6 1.2.4 走读相关产品的历史测试用例 6 1.2.5 学习产品相关的业务知识 6 1.3 识别测试需求 7 1.3.1 主动获取需求 7 1.3.2 确认需求的优先级 8 1.3.3 加入开发小组的邮件群组 8 1.3.4 与开发人员为邻 8 1.4 测试用例设计 8 1.4.1 测试用例的基本格式 8 1.4.2 重用同类型项目的测试用例 9 1.4.3 利用已有的软件 Checklist 9 1.4.4 加强测试用例的评审 10 1.4.5 定义测试用例的执行顺序 10 1.5 测试用例执行 10 1.5.1 搭建软件测试环境,执行测试用例 10 1.5.2 测试执行过程应注意的问题 11 1.5.3 及时更新测试用例 11 1.5.4 提交一份优秀的问题报告单 12 1.6 测试结果分析 12 1.7 总结 13 二 软件测试的常识 13 2.1 引言 13 2.2 软件测试常识 13 2.2.1 测试是不完全的(测试不完全) 13 2.2.2 测试具有免疫性(软件缺陷免疫性) 14 2.2.3 测试是 “ 泛型概念 ” (全程测试) 14 2.2.4 80-20 原则 14 2.2.5 为效益而测试 15 2.2.6 缺陷的必然性 15 2.2.7 软件测试必须有预期结果 15 2.2.8 软件测试的意义 - 事后分析 15 2.2.9 结论: 15 三 浅谈软件开发中的注意事项 16 3.1 项目设计 16 3.2 设计变化和需求变化 16 3.3 代码编写 17 3.3.1 源程序文件结构 17 3.3.2 界面设计风格的一致性 17 3.3.3 编辑风格 17 3.3.4 命名规范 18 3.4 BUG修补 18 3.5 开发人员的测试 18 四 软件测试的若干问题 19 4.1 前言 19 4.2 博弈的各方 19 4.3 测试的过程 20 4.4 测试所具备的素质 20 4.5 自动化测试 20 4.6 测试的误区 21 五 浅谈功能测试用例模板设计 21 5.1 Excel 模版 21 5.2 测试用例状态转换分析 23 六 如何提高软件质量 23 6.1 什么是质量 24 6.2 流程对质量的贡献 25 6.3 流程与技术 27 6.4 全面质量管理 28 6.5 关注测试 29 6.6 成功的铁三角 30 6.7 国际上流行的质量标准 30 6.8 如何起步 32 七 ISO和CMM,我们该选择谁 32 7.1 管理水平的适用性 33 7.2 复杂度的适用性 33 7.2.1何谓研发过程复杂度 34 7.2.2 何谓组织机构复杂度 34 7.3 量化管理的适用性上 35 7.4 结论 36 八 如何做好单元测试 36 8.1 前言 36 8.2 组织结构应该保证测试组参与单元测试 36 8.3 加强单元测试流程规范性 37 8.3.1 制订单元测试的过程定义 37 8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能培训 39 8.4.2 必须引入工具进行辅助 40 8.4.3 单元测试者加强对被测软件的全面了解 40 8.5 结尾 40 九 漫谈人机界面测试 41 9.1 一致性测试 41 9.2 信息反馈测试 42 9.3 界面简洁性测试 42 9.4 界面美观度测试 42 9.5 用户动作性测试 43 9.6 行业标准测试 43 9.7 小结 44 十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 46 10.2.2 负载测试 46 10.2.3 压力测试 46 10.3 可用性测试 47 10.3.1 导航测试 47 10.3.2 图形测试 47 10.3.3 内容测试 47 10.3.4 整体界面测试 47 10.4 客户端兼容性测试 48 10.4.1 平台测试 48 10.4.2 浏览器测试 48 10.5 安全性测试 48 10.6 总结 49 十一 为盈利而测试 49 11.1 引言 49 11.2 什么是软件测试 50 11.3 六个误区 50 11.3.1 误区一:忽视对正常输入的测试 50 11.3.2 误区二:忽视设计阶段的参与与评估 50 11.3.3 误区三:忽视测试计划与测试文档的建立及维护 51 11.3.4 误区四:忽视缺陷的分析,报告及跟踪 51 11.3.5 误区五:错误的测试目标及测试终止条件 51 11.3.6 误区六:不懂得合理调配使用测试人员的知识技能结构 51 11.4 软件质量与软件测试 52 11.5 软件测试的经济目的 54 11.5.1 满足用户需求,提高产品的竞争力,最终提高产品的销售量 54 11.5.2 尽早发现缺陷,降低后继质量成本 54 11.6 何时应当停止测试 56 十二 整体性能测试剖析 57 十三 性能测试工具之研究 62 13.1 性能测试的意义 62 13.2 性能测试工具综述 63 13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术要点 72 13.10 数据分析工具 Analysis 72 13.11 结束语 72 十四 性能测试原理及性能测试实例分析 73 14.1 软件测试中的性能测试 73 14.1.1 性能测试的含义 73 14.1.2 性能测试的分解 73 14.2 一个性能测试实例 74 14.2.1 被测系统 74 14.2.2 对被测系统进行性能测试 75 14.5 总结 80 十五 软件GUI测试中的关注点 80 15.1 不能不说的二个问题 81 15.1.1 软件测试中的“二八”原则 81 15.1.2 软件黑盒测试解决的问题 81 15.2 软件黑盒测试常见错误类型及说明 81 15.2.1 用户界面错误 81 15.2.2 功能性 81 15.2.3 人机交互 82 15.3 命令结构和录入 87 15.3.1 不一致性 87 15.3.2 “最优化” 87 15.3.3 菜单 89 15.4 遗漏的命令 90 15.4.1 状态转换 90 15.4.2 危机预防 90 15.4.3 由用户进行的错误处理 91 15.4.4 其他问题 91 15.5 程序僵化 92 15.5.1 用户可调整性 92 15.5.2 控制方式 93 15.6 性能 94 15.6.1 降低程序速度 94 15.6.2 缓慢回应 94 15.6.3 如何减少用户吞吐量 94 15.6.4 反应拙劣 94 15.6.5 没有提前输入 95 15.6.6 没有给出某个操作会花很长时间的警告 95 15.6.7 程序太多提示和询问 95 15.6.8 尽量使用简单命令和提示 95 15.7 输出 95 15.7.1 不能输出某种数据 95 15.7.2 不能重定向输出 95 15.7.3 与一个后续过程不兼容的格式 96 15.7.4 必须输出的很少或很多 96 15.7.5 不能控制输出布局 96 15.7.6 荒谬的精度输出级别 96 15.7.7 不能控制表或图的标记 96 15.7.8 不能控制图形的缩放比例 96 15.8 错误处理 96 15.8.1 错误预防 96 15.8.2 错误检测 97 15.8.3 错误恢复 98 15.8.4 边界相关的错误 99 15.8.5 计算错误 100 15.9 小结 100 十六 软件测试技术 100 16.1 软件测试基础 101 16.1.1 测试目标 101 16.1.2 测试原则 101 16.1.3 可测试性 102 16.2 测试用例设计 104 16.3 白盒测试 104 16.4 基本路径测试 105 16.4.1 流图符号 105 16.4.2 环形复杂性 106 16.4.3 导出测试用例 106 16.4.4 图矩阵 108 16.5 控制结构测试 108 16.5.1 条件测试 108 16.5.2 数据流测试 110 16.5.3 循环测试 111 16.6 黑盒测试 1125 1173浏览会员免费
- TCP单边加速原理 核心部分就是对拥塞算法做优化。如慢启动,拥塞避免,快速重传,快速恢复等。5 538浏览会员免费
- 在Win7下对WCF服务的发布。各种错误的解决办法4 177浏览会员免费
- DHCP协议解析,完全掌握DHCP协议包3 1045浏览会员免费
- sip RFC3261 中文版 1、SIP协议介绍 10 2、SIP协议功能概况 10 3、术语 12 4、实施概览 12 5、协议的结构 22 6、协议的定义 24 7、SIP消息: 32 7.1 请求 33 7.2应答 34 7.3 头域 35 7.3.1 头域格式。 35 7.3.2 头域分类。 39 7.3.3 缩写格式 39 7.4包体 39 7.4.1 消息正文类型(MessageBodyType) 39 7.4.2 消息体长度 40 7.5 分帧的SIP消息(Framing SIP Messages) 40 8 一般用户代理行为 40 8.1 UAC特性 41 8.1.1 产生一个请求 41 8.1.1.1 Request-URI 42 8.1.1.2 TO 42 8.1.1.3 From 43 8.1.1.4 Call-ID 44 8.1.1.5 Cseq 45 8.1.1.6 Max-Forwards 45 8.1.1.7 Via 45 8.1.1.8 Contact 46 8.1.1.9 Supported 和 Require 47 8.1.1.10 附加信息部分 47 8.1.2 发送一个请求 47 8.1.3 处理应答 48 8.1.3.1: transaction 层的错误 49 8.1.3.2 未知的应答 49 8.1.3.3 Vias 49 8.1.3.4 处理3xx应答 49 8.1.3.5 处理4xx应答 51 8.2 UAS特性 52 8.2.1 方法判定 53 8.2.2 包头判断 53 8.2.2.1 TO 和Request-URI 53 8.2.2.2 合并的请求 54 8.2.2.3 Require 54 8.2.3 内容处理 55 8.2.4 应用扩展 55 8.2.5 处理请求 56 8.2.6 产生应答 56 8.2.6.1 发送一个临时应答 56 8.2.6.2 包头和Tags 57 8.2.7 无状态UAS行为 57 8.3 重定向服务器 58 9 取消一个请求(Cancel) 60 9.1 客户行为(Client Behavior) 60 9.2 服务端行为(Server Behavior) 62 10 注册(Registrations) 63 10.1 概览 63 10.2 构造一个REGISTER请求 64 10.2.1 增加绑定 66 10.2.1.1 设置Contact地址的过期参数 67 10.2.2 删除绑定 68 10.2.3 访问绑定 68 10.2.4 刷新绑定 69 10.2.5 设置内部时钟 69 10.2.6 寻找注册服务器 69 10.2.7 传送一个请求 70 10.2.8 错误响应 70 10.3 处理REGISTER请求 70 11 查询能力 73 11.1 构造OPTIONS请求 74 11.2 处理OPTIONS请求 75 12 对话(Dialog) 77 12.1 创建一个对话 78 12.1.1 UAS行为 78 12.1.2 UAC行为 79 12.2 对话中的请求 80 12.2.1 UAC行为 81 12.1.1.1 产生请求 81 12.2.1.2 处理应答 83 12.2.2 UAS行为 84 12.3 终止对话 85 13 初始化一个会话 85 13.1 概览 85 13.2 UAC处理 86 13.2.1 创建一个初始化的INVITE 86 13.2.2 处理INVITE应答 89 13.2.2.1 1xx应答 89 13.2.2.2 3xx应答 89 13.2.2.3 4xx,5xx,6xx应答 90 13.2.2.4 2xx 应答 90 13.3 UAS处理 91 13.3.1 处理INVITE 91 13.3.1.1 提示进度 92 13.3.1.2 INVITE请求转发 93 13.3.1.3 INVITE请求的拒绝 93 13.3.1.4 接受INVITE请求 93 14 更改已经存在的会话 94 14.1 UAC行为 95 14.2 UAS行为 96 15 结束一个会话 98 15.1 使用BYE请求终止一个会话 99 15.1.1 UAC行为 99 15.1.2 UAS行为 100 16 proxy行为 100 16.1 概述 100 16.2 有状态的proxy 101 16.3 验证请求 103 16.4 路由信息预处理 105 16.5 确定请求的目的 106 16.6 请求转发 108 16.7 应答的处理 117 16.8 处理定时器C 125 16.9 处理通讯层的错误 126 16.10 CANCEL处理 126 16.11 无状态的proxy 127 16.12 Proxy Route处理的总结 129 16.12.1例子 130 16.12.1.1 基本SIP四边形 130 16.12.1.2 穿越一个严格路由proxy 132 17事务 134 17.1 客户端事务 136 17.1.1 INVITE客户事务 137 17.1.1.1 INVITE事务概述 137 17.1.1.2 正式的描述 138 17.1.1.3 构造ACK请求 142 17.1.2 非INVITE客户端事务 143 17.1.2.2 正式的描述 143 17.1.3 客户端事务匹配应答 145 17.1.4 处理通讯错误 145 17.2 服务端事务 147 17.2.1 INVITE服务端事务 147 17.2.2 非INVITE服务端事务 150 17.2.3 为服务端事务匹配请求。 151 17.2.4 处理通讯错误 154 18 通讯(transport) 154 18.1 客户Clients 155 18.1.1 发送请求 155 18.1.2 接收应答 157 18.2 服务端 158 18.2.1 接收请求 158 18.2.2 发送应答 159 18.3 分块 160 18.4 错误处理 161 19 常见消息部件(Common Message Components) 161 19.1 SIP和SIPS统一资源标记 161 19.1.1 SIP和SIPS部件 162 19.1.2 Character Escaping Requirements(字符转码要求) 166 19.1.3 SIP和SIPS URI例子 168 19.1.4 URI比较 168 19.1.5 从URI中产生请求 171 19.1.6 关联SIP URI和tel URL 173 19.2 Option Tags 175 19.3 Tags 175 20 头域 176 20.1 Accept 178 20.2 Accept-Encoding 181 20.3 Accept-Language 182 20.4 Alert-Info 182 20.5 Allow 183 20.6 Authentication-Info 183 20.7 Authorization 183 20.8 Call-ID 184 20.9 Call-Info 184 20.10 Contact 185 20.11 Content-Disposition 186 20.12 Content-Encoding 187 20.13 Content-Language 188 20.14 Content-Length 188 20.15 Content-Type 189 20.16 Cseq 189 20.17 Date 190 20.18 Error-Info 190 20.19 Expires 191 20.20 From 191 20.21 In-Reply-To 192 20.22 Max-Forwards 193 20.23 Min-Expires 193 20.24 MIME-Version 193 20.25 Organization 194 20.26 Priority 194 20.27 Proxy-Authenticate 195 20.28 Proxy-Authorization 195 20.29 Proxy-Require 196 20.30 Record-Route 196 20.31 Reply-To 196 20.32 Require 197 20.33 Retry-After 197 20.34 Route 198 20.35 Server 198 20.36 Subject 198 20.37 Supported 199 20.38 Timestamp 199 20.39 To 199 20.40 Unsupported 200 20.41 User-Agent 200 20.42 Via 200 20.43 警告 202 20.44 WWW-Authenticate 204 21 应答代码 205 21.1 临时应答1xx 205 21.1.1 100 Trying 205 21.1.2 180 Ringing 205 21.1.3 818 Call is Being Forwarded(呼叫被转发) 205 21.1.4 182 Queued 206 21.1.5 183 会话进度 206 21.2 成功信息2xx 206 21.2.1 200 OK 206 21.3 转发请求3XX 206 21.3.1 300 Multiple Choices 206 21.3.2 301 Moved Permanently 207 21.3.3 302 Moved Temporarily 207 21.3.4 305 Use Proxy 208 21.3.5 380 Alternative Service 208 21.4 请求失败4xx 208 21.4.1 400 Bad Request 208 21.4.2 401 Unauthorized 208 21.4.3 402 Payment Required 209 21.4.4 403 Forbidden 209 21.4.5 404 Not Found 209 21.4.6 405 Method Not Allowed 209 21.4.7 406 Not Acceptable 209 21.4.8 407 Proxy Authentication Required 209 21.4.9 408 Request Timeout 210 21.4.10 410 Gone 210 21.4.11 413请求实体过大。 210 21.4.12 414 Request-URI Too Long 210 21.4.13 415 Unsupported Media Type 211 21.4.14 416 Unsupported URI Scheme 211 21.4.15 Bad Extension 211 21.4.16 421Extension Required 211 21.4.17 423 Interval Too Brief 211 21.4.18 480 Temporarily Unavailable 212 21.4.19 481 Call/Transaction Does Not Exist 212 21.4.20 482 Loop Detected 212 21.4.21 483 Too Many Hops 212 21.4.22 484 Address InComplete 213 21.4.23 485 Ambiguous 213 21.4.24 486 Busy Here 213 21.4.25 487 Request Terminated 214 21.4.26 488 Not Acceptable Here 214 21.4.27 491 Request Pending 214 21.4.28 493 Undecipherable 214 21.5 Server Failure 5xx 214 21.5.1 500 Server Internal Error 215 21.5.2 501 Not Implemented 215 21.5.3 502 Bad Gateway 215 21.5.4 503 Service Unavailable 215 21.5.5 504 Server Time-out 216 21.5.6 505 Version Not Supported 216 21.5.7 Message To Large 216 21.6 Global Failures 6xx 216 21.6.1 600 Busy Everywhere 216 21.6.2 603 Decline 217 21.6.3 604 Does Not Exists Anywhere 217 21.6.4 606 Not Acceptable 217 22 使用HTTP认证 218 22.1 框架 218 22.2 用户到用户的认证。 221 22.3 Proxy到用户的认证 222 22.4 Digest 认证方案 225 23 S/MIME 227 23.1 S/MIME 认证 227 23.2 S/MIME 密钥交换 228 23.3 加密MIME 包体 231 23.4 SIP头隐私和用S/MIME的完整性:SIP地道 233 23.4.1 SIP头的完整性和机密属性 234 23.4.1.1 完整性 234 23.4.1.2 机密性 234 23.4.2 隧道的完整性和身份认证 236 23.4.3 隧道加密 239 24 例子 242 24.1 注册 242 24.2 建立会话 244 25 SIP协议的BNF范式 251 25.1 基本规则 252 26 安全考虑:威胁模式和安全应用建议。 273 26.1 攻击和威胁模式 274 26.1.1 注册服务 Hijacking。 274 26.1.2 模仿一个服务器 275 26.1.3 修改消息包体 276 26.1.4 破坏会话 277 26.2 安全机制 278 26.2.1 通讯和网络层的安全 279 26.2.2 SIPS URI方案 281 26.2.3 HTTP Authentication 282 26.2.4 S/MIME 282 26.3 安全机制的实现 283 26.3.1 对SIP实现者的要求 283 26.3.2 安全解决方案 284 26.3.2.1 注册 284 26.3.2.2 在域之间的请求 286 26.3.2.3 点对点请求 288 26.3.2.4 DoS 防护 289 26.4 限制 290 26.4.1 HTTP Digest 290 26.4.2 S/MIME 291 26.4.3 TLS 292 26.4.4 SIPS URI 293 26.5 Privacy(隐私) 295 27 IANA 认证 295 27.1 Option Tags 296 27.2 Warn-Codes 296 27.3 头域名 297 27.4 方法和应答码 297 27.6 新Content-Disposition 参数注册 299 28 同RFC 2543的改变 299 28.1 主要的功能改变 300 28.2 小功能性的变更 304 29 标准索引 304 30 信息索引: 307 定时器值的表格: 308 感谢书 310 版权声明 3135 806浏览会员免费
- linux下的proxy软件源码<br>经典~5 130浏览会员免费
- 主要完成Opensips公网环境的搭建,详细介绍各个步骤及配置,并附带完成客户端的调测工作。 根据自己的网络架构要求,进行内网公网配置工作。4 1329浏览会员免费
- 好多都不能用了,请勿浪费时间!5 2230浏览会员免费
- Windows 7下使用VMware vSphere Client ESXi4安装好后,通过http://191.168.15.101进去下载了VMWare vSphere Client,安装后连接ESXi服务器的IP 192.168.15.101,居然连不通,系统提示“分析服务器"192.168.15.101"的"clients.xml"文件时出错。登录将继续,请联系系统管理员。”,点出确定之后继续报错“"VirtualInfrastructure.Utils.HttpWebRequestProxy”的类型初始值设定项引发异常。”,进而无法田连接到ESXi4。经过多方努力,这一问题终得解决。原来是Win7下的Dotnet是3.5版本,而VMWARE 的vShpere用的是2.0。5 600浏览会员免费
- 用haproxy实现RDP会话负载均衡 这篇文章主要针对 thinstation 方案来做测试。5 775浏览会员免费
- java图书管理系统毕业论文 欢迎下载 哈哈 哈哈 哈哈 哈哈 哈哈5 695浏览会员免费
- 用java开发短信的必备文档,很难找这个东东。0 98浏览会员免费
- OpenSIPs大小:20KB该文档介绍了基于OpenSIPs的模块化编程技术,包括OpenSIPs开发软件各模块中各组成部分的介绍,数据库的连接与释放、模块的编译及调用等知识。该文档介绍了基于OpenSIPs的模块化编程技术,包括OpenSIPs开发软件各模块中各组成部分的介绍,数据库的连接与释放、模块的编译及调用等知识。4 251浏览会员免费
- Nginx配置文件的对应模块及模块属性详细说明。此外,还有一个实例帮助更好的了解Nginx配置0 5404浏览会员免费
- DNS轮循 F5 BIG-IP LVS(Linux Virtual Server) L7SW(Layer7 switching) HAProxy Nginx4 90浏览会员免费
- squide server,sockets 客户端代理教程0 1427浏览会员免费
- JAVA高级特性 1.静态导入:先举个离例子 。 import java.lang.Integer.parseInt; public class StaticImport { int x = parseInt("123"); System.out.println(x); } 这样的程序如果不在IDE 工具中输入,是很难看出这个程序代码会出现问题,可它偏偏就出问题了,这是为什么呢?因为程序里面有个静态方法,如果导入import static java.lang.Integer.parseInt;这样的程序就可以运行了。 2.可变参数与for循环增强 这个是一般的用法: public static void loop(String[] args){ for(int i=0;i<args.length;i++) { System.out.println(args[i]); } } 这个是JDK 增加的新特性的用法! public static void loop(int x,int... args ) { //这里的参数一定要以这样的形式输入 for(int i:args) { System.out.println(i); } } 3.枚举 写枚举技巧: 1. enum Gender{MALE,FEMALE,BOTH} 2. enum Gender{MALE,FEMALE,BOTH;public abstract getTitle();} 3.enum Gender{MALE{},FEMALE{},BOTH{};public abstract getTitle();} 4.填充各个{}中的getTitle方法。 下面是个红绿黄灯的例子: public enum TrafficLamp { RED(30){ public TrafficLamp next() { return GREEN; } }, GREEN(50){ public TrafficLamp next() { return YELLOW; } }, YELLOW(5){ public TrafficLamp next() { return RED; } }; public abstract TrafficLamp next(); private int time; private TrafficLamp(int time) { this.time = time; } 4.反射. 这个知识点,真是费了我好大劲才理解。当真正理解了,其实也就不难了。先举例子来理解什么是反射。 先建这样的一个类,带会下面有个类里面有反射成员变量的方法的! public class ReflectPoint { private int x; public int y; public ReflectPoint(int x, int y) { super(); this.x = x; this.y = y; } } public class Test{ String obj = (String)Class.forName("java.lang.String").newInstance(); 这是制造另一个章:Class.forName("java.lang.Integer") --------------------- 讲Constructor://构造方法 Constructor constructors[] = Class.forName("java.lang.String").getConstructors(); Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class); String str = (String)constructor.newInstance(new StringBuffer("abc")); System.out.println(str); class.newInstance()内部其实就是在用默认的构造方法 ----------------------- 讲Method //方法 Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class); System.out.println(charAt.invoke(str, 1)); ------------------------- 讲Field //成员变量 ReflectPoint point = new ReflectPoint(1,7); Field y = Class.forName("cn.itcast.corejava.ReflectPoint").getDeclaredField("y"); y.setAccessible(true); System.out.println(y.get(point)); Field x = Class.forName("cn.itcast.corejava.ReflectPoint").getDeclaredField("x"); x.setAccessible(true); System.out.println(x.get(point)); } 在这里我们运行的时候可以看出,ReflectPoint类里面的x和y 都可以打印出来了! 学习心得:先从这四个知识点来看,张老师的确很让人敬佩!以上的一些程序代码均为张老师课堂即兴发挥所写,也可以看出,张老师对JAVA特性的深刻理解能力!现在说说我对这些程序代码的理解,说实话,才开始听张老师讲的时候,我感觉很模糊的,但是当我真正理解了之后,觉得这些程序写的真是太好了。象以后我门在学习JAVA 的时候,一定要对每个知识点要慢慢的消化吃透,切不能走马观花。一个知识点必须要反复的动手练习,不然很难理解其中的奥秘所在的! 5.在JAVA的程序中,我经常性的看到字符前面有@这种标志的符号.这个就叫做注解! 下面是使用 @SuppressWarnings 来取消 deprecation 警告的一个例子: public class Test { @Deprecated //在eclipse下运行的时候,方法名上会加一横线 public static void sayHello() { } } public class Test2 { @SuppressWarnings("deprecation") //在mian方法内调用一个没有定义的方法时,运行的时候将会出现这一注解! public static void main(String [] args) { Test.sayHello(); } } @SuppressWarnings 批注允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加一个 @SuppressWarnings 批注,以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止您对警告无动于衷 — 您看到的每一个警告都将值得注意。 由如下代码引出@Override的讲解: User类中的方法: public boolean equals(User other) { return name.equals(other.name); } 下面的代码执行时将有问题: User user1 = new User(); User user2 = new User(); user1.setName("abc"); user2.setName("abc"); System.out.println(user1.equals(user2)); HashSet set = new HashSet(); set.add(user1); set.add(user2); System.out.println(set.size());//期望结果为1,但实际为2 这时候在User类的equals方法上加上@Override,发现了问题。 再看看这个代码:一看就知道有问题, 这里 就有个很好的解决办法,在写public @interface MyAnnotation {}这样的类的时候,下面的代码上的错误提示就是结束的! public class dsds { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub System.out.println(User.class.isAnnotationPresent(MyAnnotation.class) ); System.out.println( User.class.getAnnotation(MyAnnotation.class) ); } } 运行的结果为:false null 下面演示了一下@Target和@Retention import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE}) //用于构造方法 @Retention(RetentionPolicy.RUNTIME) //在运行是加载Annotation到JVM中 public @interface MyAnnotation { public String value() default "yellow"; public int[] array() default {1,2}; public MetaAnnotation annotation() ; } 注解最主要的就是这么多,其实注解真正的,我们都很少留心的,但是有的注解会给你在写程序和查找错误的时,会有很大的帮助的! 6.泛型: 1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。 2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。 3、泛型的类型参数可以有多个。 4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。 5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String); 例子: a..使用?通配符可以引用其他各种参数化的类型,但不能调用与参数化有关的方法; Collection<?> c = new Vector<String>(); c.add("abc");//报错 c.size();//正确 所以,?通配符定义的变量主要用作引用,调用与参数化无关的方法,如果要调用与参数化相关的方法,那么必须在使用?通配符引用之前调用,否则就与java 5提供泛型的目的背道而驰了。 b..向下限定通配符: 正确:Vector<? extends Number> x = new Vector<Integer>(); 错误:Vector<? extends Number> x = new Vector<String>(); 向上限定通配符: 正确:Vector<? super Integer> x = new Vector<Number>(); 错误:Vector<? super Integer> x = new Vector<Byte>(); 7.代理 这里就直接先应用张老师写的代码然后再讲清其原理吧! package cn.itcast.corejava; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Collection; import java.util.Vector; public class ProxyTest { public static void main(String[] args) { System.out.println(Integer.class.getClassLoader()); //System.out.println(ProxyTest.class.getClassLoader().getParent().getClass().getName()); System.out.println(ProxyTest.class.getClassLoader().getClass().getName()); //test1(); //test2(); } private static void test3() { Vector v = new Vector(); class MyInvocationHandler implements InvocationHandler { Collection target = null; public Collection bind(Collection target) { this.target = target; Collection proxy1 = (Collection)Proxy.newProxyInstance( ProxyTest.class.getClassLoader(), new Class[]{Collection.class} , this); return proxy1; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("begin " + method.getName()); Object retval = method.invoke(target, args); System.out.println("end" + method.getName()); return retval; } } MyInvocationHandler handler = new MyInvocationHandler(); Collection proxy1 = handler.bind(v); System.out.println(proxy1.getClass().getName()); proxy1.add("abc"); proxy1.add("xyz"); System.out.println(proxy1.size()); } private static void test2() { Vector v = new Vector(); class MyInvocationHandler implements InvocationHandler { Collection target = null; public MyInvocationHandler(){} public MyInvocationHandler(Collection target){this.target = target;} public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("begin " + method.getName()); Object retval = method.invoke(target, args); System.out.println("end" + method.getName()); return retval; } } Collection proxy1 = (Collection)Proxy.newProxyInstance( ProxyTest.class.getClassLoader(), new Class[]{Collection.class} , new MyInvocationHandler(v)); System.out.println(proxy1.getClass().getName()); proxy1.add("abc"); proxy1.add("xyz"); System.out.println(proxy1.size()); } private static void test1() { Collection proxy = (Collection)Proxy.newProxyInstance( ProxyTest.class.getClassLoader(),//first parameter new Class[]{Collection.class} , //second parameter new InvocationHandler(){ //third parameter Vector target = new Vector(); public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("begin " + method.getName()); Object retval = method.invoke(target, args); System.out.println("end" + method.getName()); return retval; } } ); System.out.println(proxy.getClass().getName()); proxy.add("abc"); proxy.add("xyz"); System.out.println(proxy.size()); } } 以下是Proxy的API文档: public class Proxyextends extends Object implements Serializable Proxy provides static methods for creating dynamic proxy classes and instances, and it is also the superclass of all dynamic proxy classes created by those methods. To create a proxy for some interface Foo: InvocationHandler handler = new MyInvocationHandler(...); Class proxyClass = Proxy.getProxyClass( Foo.class.getClassLoader(), new Class[] { Foo.class }); Foo f = (Foo) proxyClass. getConstructor(new Class[] { InvocationHandler.class }). newInstance(new Object[] { handler }); or more simply: Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { Foo.class }, handler);从以上的程序中在方法中定义参数的时候总是三个参数,可这三个参数有分别代表什么意思呢!?现在以我自己个人的理解,比如我是买家,我要买本书,可是现在我有事,是不是需要别人代我买呢?那带我买的人是不是一定要到卖书的地方买呢?所以着中间产生了三个实体.说白了就是一种代理机制.需要三方一起运行! 代理其实很好理解的,而且会用固定的语法格式,很快会掌握这一原理的!5 310浏览会员免费
- windows平台搭建,nps是一款图形化web管理页面的代理服务器,可实现内网外映射、域名、http及socks代理,图文教程很容易上手。0 3175浏览会员免费
- 分享利用SIPP工具对SIP服务器进行并发测试的方法。包括注册、呼叫、以及带视频的场景4 532浏览会员免费
- Nginx所需环境的安装,及nginx安装,nginx相关功能开启,后端节点健康检查插件安装,静态资源缓存插件,缩略图插件安装等。0 2311浏览会员免费
- 1.vmware tools 怎么安装不上去啊 ? 1 2.虚拟机装好系统后,虚拟机开机出错!.PXE-E51:NO DHCP or ProxyDHCP offers were receivedPXE-M0F:Exiting PXE ROM 4 3 虚拟机VMWARE修改硬盘大小 4 4网路映射驱动器的作用 7 5 虚拟机VMware Workstation与主机间共享文件的七种方法 74 370浏览会员免费
- 短消息代理(SGIP SMProxy)使用说明书5 180浏览会员免费
- NGINX + LUA实现复杂的控制0 582浏览会员免费
- Nginx大小:380KB使用Nginx搭建反向代理,图文并茂,附配置文件。使用Nginx搭建反向代理,图文并茂,附配置文件。4 4630浏览会员免费
- Contents: Introduction Installing the Web Service Proxy Wizard Using the Web Service Proxy Wizard Writing a WSP Client Cross-Platform Interoperability Conclusion3 212浏览会员免费
- 通过概要,指令,api接口三方面阐述lua-nginx模块的使用。 使用Lua编写Nginx脚本的基本构建块是指令。指令用于指定何时运行用户Lua代码以及如何使用结果。 在nginx.conf文件中各种*_by_lua,*_by_lua_block和*_by_lua_file配置指令内的用来配置的网关的Lua API。只能在这些配置指令的上下文中运行的用户Lua代码中调用下面描述的Nginx Lua API。 该API以两个标准软件包ngx和ndk提供接口给Lua。这些软件包在ngx_lua是默认全局生效,并且始终在ngx_lua指令中可用。 文中介绍指令67个,api接口241个。0 909浏览会员免费
- 完全可以下载部署,本人真正手写,请需要的可以下载使用,3 130浏览会员免费
- conn.request({ success: function(response) { Ext.Msg.alert('info', response.responseText); }, failure: function() { Ext.Msg.alert('warn', 'failure'); } }); var ds = Ext.data.JsonStore({ url: 'xxx.jsp', root: 'root', fields: ['id','name','descn'] });0 155浏览会员免费
- 网上很多opensips的教程但是对于不熟悉linux的新手来说还是有相当的难度。我就弄了好几天才勉强摸到门,并做下了记录,方便自己以后看。顺便也发出来希望能帮助到大家。我是更具视频教程在查了很多前辈的教程然后自己总结出来了。对linux不是很熟悉,所以也是摸着石头过河我想我写的应该很细致了。3 123浏览会员免费
- Apache安装,weblogic安装及配置反向代理转发weblogic0 654浏览会员免费
- 代理服务器的主要功能 代理服务器的搜索和验证 三、如何验证代理服务器 代理服务器的作用 代理服务器的用途 代理服务器的类型0 158浏览会员免费
- 短消息代理(SMGPSMProxy)使用说明书0 218浏览会员免费
- linux代理上网,能很好的教会大家对linux系统下的代理上网,共享上网的设置。0 2488浏览会员免费
- 利用Keepalived实现Nginx高可用: 操作系统 Ubuntu15 Web服务器 Nginx1.8.0 应用服务器 Tomcat7.0.64 Keepliaved 版本1.2.19 JDK 版本1.7.0_79-b150 275浏览会员免费
- nacos集群环境的搭建与配置0 432浏览会员免费
- 在centos系统中安装nginx及依赖包。 配置nginx反向代理及负载均衡。0 306浏览会员免费
- 使用代理服务器共享上网的方法,而代理服务器软件使用ccproxy0 224浏览会员免费
- sts_maven_nexus操作杂记,很详细的配置说明0 158浏览会员免费
- Proxy源代码分析--谈谈如何学习linux网络编程4 109浏览会员免费
- 代理猎手大小:2MB代理猎手的使用手册,包括安装过程,使用方法,再加操作过程。最后说明这个不是我的原创,我转载的代理猎手的使用手册,包括安装过程,使用方法,再加操作过程。最后说明这个不是我的原创,我转载的5 138浏览会员免费
- 详细的使用Nexus搭建Maven私服的步骤指导3 161浏览会员免费
- Nginx-sticky模块(基于cookie的负载均衡实现)及追加安装注意事项0 876浏览会员免费
- Squid 2.6 反向代理配置.doc, Squid 代理配置0 217浏览会员免费
- 在centos7.4布署oaweb+haproxy1.8 脚本用法与参数解释;0 287浏览会员免费
- 讲述了SIP会话建立的全过程,并且细致描述了各个阶段。0 144浏览会员免费
- HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。0 303浏览会员免费
- 短消息代理(CMPP20 SMProxy)使用说明书0 110浏览会员免费
- Haproxy高可用环境搭建笔记. x0 187浏览会员免费
- SuperProxy,IIS, Serv-U(FTP服务器)三个软件的安装及使用过程详细图解0 102浏览会员免费
- 个人在项目当中通过Array均衡器配置SSL,并通过健康检查页面监控jboss服务器的健康状态.0 132浏览会员免费
- 介绍haproxy的理论和初级的配置,了解基本的配置和基础的应用实例,从而走进haproxy的大门。0 811浏览会员免费
- proxy代理程序实例和讲解 网络编程详细代码实现和讲解2 196浏览会员免费
- 反向代理大小:603KB用FIKKER配置反向代理;当前的 Fikker 跨平台为 Windows 平台和 Linux 平台实现。Windows 版本支持 Win2000/XP/2003/Vista/2008/7 平台;Linux 版本支持 kernel 2.6.20 及其以上的版本,glibc 库版本为 2.1 及其以上版本。用FIKKER配置反向代理;当前的 Fikker 跨平台为 Windows 平台和 Linux 平台实现。Windows 版本支持 Win2000/XP/2003/Vista/2008/7 平台;Linux 版本支持 kernel 2.6.20 及其以上的版本,glibc 库版本为 2.1 及其以上版本。0 309浏览会员免费
- tomcat大小:377KB○2FTP采集应用:采集来自于OVO,SITESCOPE,TIVOLI的性能数据。○2FTP采集应用:采集来自于OVO,SITESCOPE,TIVOLI的性能数据。0 121浏览会员免费
- 短消息大小:920KB短消息代理(CMPP30 SMProxy)使用说明书短消息代理(CMPP30 SMProxy)使用说明书0 75浏览会员免费
- IPv6 Proxy技术白皮书: 本文档将IPv6 Proxy功能主要特性和技术介绍合为一节,参看第3节。 本文档将介绍IPv6 Proxy功能的相关技术,适合网络公司售前技术工程师及相关人员。0 120浏览会员免费
- 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。0 272浏览会员免费
- 很多人多nginx非常陌生,不知如何下手,本文教你从零开始搭建nginx服务0 143浏览会员免费