目录前言1.翻译说明1.在Tomcat中快速上手1.1.开始Hibernate之旅1.2.第一个可持久化类1.3.映射cat1.4.与猫同乐1.5.结语2.体系结构2.1.总览2.2.JMX集成2.3.JCA支持3.SessionFactory配置3.1.可编程配置方式3.2.获取SessionFactory3.3.用户自行提供JDBC连接3.4.Hibernate提供的JDBC连接3.5.可选配置属性3.5.1.SQLDialectsSQL方言3.5.2.外连接抓取(OuterJoinFetching)3.5.3.二进制流3.5.4.自定义CacheProvider3.5.5.事务策略配置3.5.6.绑定SessionFactory到JNDI3.5.7.查询语言替换3.6.Logging3.7.实现NamingStrategy(命名策略)3.8.XML配置文件4.持久化类(PersistentClasses)4.1.POJO简单示例4.1.1.为持久化字段声明访问器(accessors)和是否可变的标志(mutators)4.1.2.实现一个默认的构造方法(constructor)4.1.3.提供一个标识属性(identifierproperty)(可选)4.1.4.建议使用不是final的类(可选)4.2.实现继承(Inheritance)4.3.实现equals()和hashCode()4.4.持久化生命周期(Lifecycle)中的回调(Callbacks)4.5.合法性检查(Validatable)回调4.6.XDoclet标记示例5.O/RMapping基础5.1.映射声明(Mappingdeclaration)5.1.1.Doctype5.1.2.hibernate-mapping5.1.3.class5.1.4.id5.1.4.1.generator5.1.4.2.高/低位算法(Hi/LoAlgorithm)5.1.4.3.UUID算法(UUIDAlgorithm)5.1.4.4.标识字段和序列(IdentitycolumnsandSequences)5.1.4.5.程序分配的标识符(AssignedIdentifiers)5.1.5.composite-id联合ID5.1.6.识别器(discriminator)5.1.7.版本(version)(可选)5.1.8.时间戳(timestamp)(可选)5.1.9.property5.1.10.多对一(many-to-one)5.1.11.一对一5.1.12.组件(component),动态组件(dynamic-component)5.1.13.子类(subclass)5.1.14.连接的子类(joined-subclass)5.1.15.map,set,list,bag5.1.16.引用(import)5.2.Hibernate的类型5.2.1.实体(Entities)和值(values)5.2.2.基本值类型5.2.3.持久化枚举(Persistentenum)类型5.2.4.自定义值类型5.2.5.映射到"任意"(any)类型5.3.SQL中引号包围的标识符5.4.映射文件的模块化(Modularmappingfiles)6.集合类(Collections)映射6.1.持久化集合类(PersistentCollections)6.2.映射集合(MappingaCollection)6.3.值集合和多对多关联(CollectionsofValuesandMany-To-ManyAssociations)6.4.一对多关联(One-To-ManyAssociations)6.5.延迟初始化(延迟加载)(LazyInitializa
2025/6/15 21:44:18 262KB hibernate 教程 hibernate教程
1
简介:
### DB2数据库在Linux系统下的安装教程#### 一、环境准备与检查在开始安装DB2数据库之前,首先需要确保Linux系统的环境符合DB2的安装要求。
以下是一些基本的环境检查步骤:1. **确认Linux版本**: - 通过`uname -a`命令查看当前Linux系统的内核版本等信息。
- 通过`uname -r`命令确认内核版本。
- 通过`cat /etc/redhat-release`命令查看具体的发行版信息。
2. **系统信息示例**: - 系统名称:`Linux myrac1.oracle.com 2.6.32-358.el6.i686 #1 SMP Tue Jan 29 11:48:01 EST 2013 i686 i686 i386 GNU/Linux` - 内核版本:`2.6.32-358.el6.i686` - 发行版:`Red Hat Enterprise Linux Server release 6.4 (Santiago)`#### 二、安装DB2软件DB2的安装可以通过两种方式进行:1. **静默安装**: - 解压DB2安装包:`tar -zxvf v9.7_linuxia32_server.tar.gz` - 进入解压后的目录:`cd db2_install/` - 执行安装命令:`./db2_install`(并根据提示选择企业版)2. **图形界面安装**: - 同样先解压安装包并进入解压目录。
- 使用图形界面安装命令:`./db2setup`#### 三、创建用户组和用户为了满足DB2的权限需求,需要创建特定的用户组和用户:1. **创建用户组**: - `groupadd db2grp`:用于DB2实例的所有者。
- `groupadd db2fgrp`:用于DB2实例的围栏(fence)用户。
- `groupadd dasadm`:用于管理DAS(Distributed Access Services)的用户。
2. **创建用户**: - `useradd -m -g db2grp -d /home/db2inst -s /bin/bash db2inst`:创建DB2实例所有者用户。
- `useradd -m -g db2fgrp -d /home/db2fenc -s /bin/bash db2fenc`:创建围栏用户。
- `useradd -m -g dasadm -d /home/dasusr -s /bin/bash dasusr`:创建DAS用户。
3. **设置密码**: - `passwd db2inst`:为db2inst用户设置密码。
- `passwd db2fenc`:为db2fenc用户设置密码。
- `passwd dasusr`:为dasusr用户设置密码。
#### 四、安装DB2 License安装DB2许可是合法使用DB2的前提:1. **进入许可目录**: - `cd /opt/ibm/db2/V9.5/adm`2. **安装许可**: - `./db2licm -a /home/db2install/server/db2/license/db2ese_t.lic`#### 五、创建DAS和数据库实例1. **创建DAS**: - `./dascrt -udasusr`2. **创建数据库实例**: - `./db2icrt -p50000 -udb2fenc db2inst` - `-p50000`:指定DB2实例的服务端口为50000。
- `-udb2fenc`:指定围栏用户的用户名。
- `db2inst`:指定实例名和所有者名。
3. **设置数据库实例自动启动**: - `su - db2inst1` - `db2iauto on db2inst1`#### 六、配置实例用户为了使DB2实例用户能够正常工作,需要进行相应的环境配置:1. **编辑.bash_profile文件**: - 配置环境变量,如DB2_HOME、JAVA_HOME等,并设置CLASSPATH。
- 示例: ```bash DB2_HOME=/opt/ibm/db2/V9.7 JAVA_HOME=/opt/ibm/db2/V9.7/java/jdk32 CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$DB2_HOME/java/db2java.zip:$DB2_HOME/java/db2jcc.jar:$DB2_HOME/java/sqlj.zip:$DB2_HOME/java/db2jcc ```以上步骤详细介绍了在Linux环境下安装配置DB2数据库的过程,从环境准备到具体操作命令,为读者提供了全面且实用的指导。
2025/6/15 19:50:44 26KB
1
异速联255用户破解版,最高支持6.4安装包,如果安装中遇到问题可以联系19826515,注明异速联,否则不加。
2025/6/9 17:08:09 48.24MB 异速联
1
本书为密码编码学与网络安全:原理与实践第五版中文版作者:斯托林斯(WilliamStallings)出版社:电子工业出版社本书概述了密码编码学与网络安全的基本原理和应用技术。
全书主要包括以下几个部分:①对称密码部分讨论了对称加密的算法和设计原则;
②公钥密码部分讨论了公钥密码的算法和设计原则;
③密码学中的数据完整性算法部分讨论了密码学Hash函数、消息验证码和数字签名;
④相互信任部分讨论了密钥管理和认证技术;
⑤网络与因特网安全部分讨论了应用密码算法和安全协议为网络和Internet提供安全;
⑥法律与道德问题部分讨论了与计算机和网络安全相关的法律与道德问题。
目录第0章读者导引0.1本书概况0.2读者和教师导读0.3Internet和Web资源0.4标准第1章概述1.1计算机安全概念1.2OSI安全框架1.3安全攻击1.4安全服务1.5安全机制1.6网络安全模型1.7推荐读物和网站1.8关键术语、思考题和习题第一部分对称密码第2章传统加密技术2.1对称密码模型2.2代替技术2.3置换技术2.4转轮机2.5隐写术2.6推荐读物和网站2.7关键术语、思考题和习题第3章分组密码和数据加密标准3.1分组密码原理3.2数据加密标准3.3DES的一个例子3.4DES的强度3.5差分分析和线性分析3.6分组密码的设计原理3.7推荐读物和网站3.8关键术语、思考题和习题第4章数论和有限域的基本概念4.1整除性和除法4.2Euclid算法4.3模运算4.4群、环和域4.5有限域GF(p)4.6多项式运算4.7有限域GF(2n)4.8推荐读物和网站4.9关键术语、思考题和习题附录4Amod的含义第5章高级加密标准5.1有限域算术5.2AES的结构5.3AES的变换函数5.4AES的密钥扩展5.5一个AES例子5.6AES的实现5.7推荐读物和网站5.8关键术语、思考题和习题附录5A系数在GF(28)中的多项式附录5B简化AES第6章分组密码的工作模式6.1多重加密与三重DES算法6.2电码本模式6.3密文分组链接模式6.4密文反馈模式6.5输出反馈模式6.6计数器模式6.7用于面向分组的存储设备的XTS-AES模式6.8推荐读物和网站6.9关键术语、思考题和习题第7章伪随机数的产生和流密码7.1随机数产生的原则7.2伪随机数发生器7.3使用分组密码的伪随机数产生7.4流密码7.5RC4算法7.6真随机数发生器7.7推荐读物和网站7.8关键术语、思考题和习题第二部分公钥密码第8章数论入门8.1素数8.2费马定理和欧拉定理8.3素性测试8.4中国剩余定理8.5离散对数8.6推荐读物和网站8.7关键术语、思考题和习题第9章公钥密码学与RSA9.1公钥密码体制的基本原理9.2RSA算法9.3推荐读物和网站9.4关键术语、思考题和习题附录9ARSA算法的证明附录9B算法复杂性第10章密钥管理和其他公钥密码体制10.1Diffie-Hellman密钥交换10.2ElGamal密码体系10.3椭圆曲线算术10.4椭圆曲线密码学10.5基于非对称密码的伪随机数生成器10.6推荐读物和网站10.7关键术语、思考题和习题第三部分密码学数据完整性算法第11章密码学Hash函数11.1密码学Hash函数的应用11.2两个简单的Hash函数11.3需求和安全性11.4基于分组密码链接的Hash函数11.5安全Hash算法(SHA)11.6SHA-11.7推荐读物和网站11.8关键术语、思考题和习题附录11A生日攻击的数学基础第12章消息认证码12.1对消息认证的要求12.2消息认证函数12.3对消息认证码的要求12.4MAC的安全性12.5基于Hash函数的MAC:HMAC12.6基于分组密码的MAC:DAA和CMAC12.7认证加密:CCM和GCM12.8使用Hash函数和MAC产生伪随机数12.9推荐读物和网站12.10关键术语、思考题和习题第13章数字签名13.1数字签名13.2ElGamal数字签名方案13.3Schnorr数字签名方案13.4数字签名标准13.5推荐读物和网站13.6关键术语、思考题和习题第四部分相互信任第14章密钥管理和分发14
1
第一部分Python语言第1章Python简介1.1运行Python1.2变量和算术表达式1.3条件语句1.4文件输入和输出1.5字符串1.6列表1.7元组1.8集合1.9字典1.10迭代与循环1.11函数1.12生成器1.13协程1.14对象与类1.15异常1.16模块1.17获得帮助第2章词汇和语法约定2.1行结构和缩进2.2标识符和保留字2.3数字字面量2.4.字符串字面量2.5容器2.6运算符、分隔符及特殊符号2.7文档字符串2.8装饰器2.9源代码编码第3章类型与对象3.1术语3.2对象的身份与类型3.3引用计数与垃圾收集3.4引用与复制3.5第一类对象3.6表示数据的内置类型3.6.1None类型3.6.2数字类型3.6.3序列类型3.6.4映射类型3.6.5集合类型3.7表示程序结构的内置类型3.7.1可调用类型3.7.2类、类型与实例3.7.3模块3.8解释器内部使用的内置类型3.8.1代码对象3.8.2帧对象3.8.3跟踪对象3.8.4生成器对象3.8.5切片对象3.8.6Ellipsis对象3.9对象行为与特殊方法3.9.1对象的创建与销毁3.9.2对象字符串表示3.9.3对象比较与排序3.9.4类型检查3.9.5属性访问3.9.6属性包装与描述符3.9.7序列与映射方法3.9.8迭代3.9.9数学操作3.9.10可调用接口3.9.11上下文管理协议3.9.12对象检查与dir()第4章运算符与表达式4.1数字操作4.2序列操作4.3字符串格式化4.4高级字符串格式化4.5字典操作4.6集合操作4.7增量赋值4.8属性(.)运算符4.9函数调用()运算符4.10转换函数4.11布尔表达式与真值4.12对象的比较与身份4.13运算优先级4.14条件表达式第5章程序结构与控制流5.1程序结构与执行5.2执行条件语句5.3循环与迭代5.4异常5.4.1内置异常5.4.2定义新异常5.5上下文管理器与with语句5.6断言与__debug__第6章函数与函数编程6.1函数6.2参数传递与返回值6.3作用域规则6.4函数对象与闭包6.5装饰器6.6生成器与yield6.7协程与yield表达式6.8使用生成器与协程6.9列表包含6.10生成器表达式6.11声明式编程6.12lambda运算符6.13递归6.14文档字符串6.15函数属性6.16eval()、exec()和compile()函数第7章类与面向对象编程7.1class语句7.2类实例7.3范围规则7.4继承7.5多态动态绑定和鸭子类型7.6静态方法和类方法7.7特性7.8描述符7.9数据封装和私有属性7.10对象内存管理7.11对象表示和属性绑定7.12__slots__7.13运算符重载7.14类型和类成员测试7.15抽象基类7.16元类7.17类装饰器第8章模块、包与分发8.1模块与import语句8.2从模块导入选定符号8.3以主程序的形式执行8.4模块搜索路径8.5模块加载和编译8.6模块重新加载和卸载8.7包8.8分发Python程序和库8.9安装第三方库第9章输入与输出9.1读取命令行选项9.2环境变量9.3文件和文件对象9.4标准输入、输出和错误9.5print语句9.6print()函数9.7文本输出中的变量插入9.8生成输出9.9Unicode字符串处理9.10UnicodeI/O9.10.1Unicode数据编码9.10.2Unicode字符特性9.11对象持久性与pickle模块第10章执行环境10.1解释器选项与环境10.2交互式会话10.3启动python应用程序10.4站点配置文件10.5用户站点包10.6启用新功能10.7程序终止第11章测试、调试、探查与调优11.1文档字符串和doctest模块11.2单元测试和unittest模块11.3Python调试器和pdb模块11.3.1调试器命令11.3.2从命令行进行调试11.3.3配置调试器11.4程序探查11.5
2025/4/25 17:28:21 26.74MB python django web 参考
1
SAP(System,Applications,andProductsinDataProcessing)公司是全球最大的管理软件供应商,其主打产品R/3系统是ERP产品的领导者,涵盖了企业管理业务的各个方面,ABAP(AdvancedBusinessApplicationProgramming)是SAP/R3系统的开发工具,是第四代支持结构化程序设计的语言。
  本书把相当复杂的SAP技术以非常简单的方式表达,非常直接地描述SAP技术,并采用大量的图片资料,使读者能清晰地了解SAP技术。
本书主要介绍了:ABAP所需的开发环境,ABAP开发的主要内容,开发事务代码汇总索引;
ABAP重要常识、编辑器使用、重要语法和常用技巧;
ABAP数据库编程的基础,数据字典及数据库编程存取;
报表编程的基础;
Excel文件的导入导出;
屏幕编程,以及TableControl,ALV,ALVTREE,TREECONTROL等重要的屏幕控件;
单据打印最常用的两种工具SMARTFROMS与FORMS;
权限控制编程;
不需要编程的查询工具Query;
数据导入工具CATT与BDC;
SAP出口技术。
  这是一本从事ABAP开发和SAP实际业务工作的人员参考书,更是那些没有接触过SAP行业而又渴望进入这个行业的朋友的入门书。
目录第1章 ABAP开发环境和总体介绍1.1 ABAP开发环境子1.2 ABAP开发总体介绍第2章 创建“HELLOWORLD”程序2.1 建立“HELLOWORLD”程序2.2 为新建程序分配TCODE2.3 为新建程序增加标题和列标题2.4 文本和消息2.4.1 文本的设定2.4.2 消息的定义和使用第3章 ABAP语法示例3.1 FIELD-SYMBOLS3.2 字符串的处理3.2.1 合并字符串3.2.2 拆分字符串3.3 内表带有标题行3.4 内表排序3.5 修改内表数据3.6 删除内表记录3.7 使用索引插入内表行3.8 格式化数据输出3.9 内部数据存为文件3.10 直接存入文件3.11 将文件读取入内表3.12 不使用提示框直接读入文件3.13 列表输出第4章 数据字典和数据表的读取4.1 相关概念4.2 实例建表4.3 相关数据维护程序4.3.1 新增4.3.2 查询和删除4.4 数据批量维护程序的生成及使用4.5 建立域、数据元素和搜索帮助4.5.1 建立域4.5.2 建立数据元素4.5.3 修改表结构使用数据元素4.5.4 建立搜索帮助4.6 逻辑数据库4.7 数据表读取4.7.1 基础的读取数据表例子4.7.2 使用PACKAGESIZE读取数据4.7.3 内连接和外连接第5章 标准列表和选择屏幕5.1 连接相似语句5.2 标准列表输出5.3 输出无条件换页5.4 列表的颜色5.5 输出热点5.6 交互式列表5.7 为列表定义工具条与菜单5.8 在弹出窗口中显示列表5.9 隐藏字段技术5.10 使用HIDE技术从列表中读取行5.11 选择屏幕5.11.1 选择屏幕操作5.11.2 选择屏幕程序语法5.11.3 选择屏幕实例设计第6章 实战屏幕Screen设计6.1 安装时注意的问题6.2 第一个“HELLOWORLD”Screen程序6.2.1 建立一个新程序6.2.2 设计Screen6.2.3 从程序中调用Screen6.3 工具条和菜单设计6.3.1 菜单编辑器6.3.2 应用工具条设计6.3.3 菜单设计6.3.4 系统按钮设计6.3.5 逻辑流设计6.3.6 输入字段6.3.7 OK_CODE6.3.8 程序设计6.3.9 屏幕输出6.4 屏幕对象功能6.4.1 单选按钮组的定义6.4.2 输入输出字段的属性6.4.3 数据字典关联字段6.5 逻辑流6.5.1 顺序执行逻辑流6.5.2 字段检查与逻辑流的控制6.5.3 发布消息6.6 Listbox下拉框设计6.7 修改屏幕状态6.8 子窗口6.9 表条目控制6.9.1 手工制作6.9.2 向导制作6.10 通过定制控制在屏幕上显示图片6.10.1 图片的上载6.10.2 屏幕设计定义对象6.10.3 图片显示程序6.10.4 程序输出6.11 通过定制控制设计文本编辑器6.11.1 屏幕设计定义对象6.11.2 文本编辑器程序6.11.3 输出6.12 列表和屏幕相互调用6.12.1 从屏幕输入条件,列表输出数据6.12.2 从列表调用屏幕第7章 表控制TableControl设计7.1 使用向导制作TableCon
2025/4/19 19:13:04 27.93MB sap ABAP ERP ALV
1
ThefreewareversionofIDAv5.0hasthefollowinglimitations:nocommercialuseisallowedlacksallfeaturesintroducedinIDA>v5.0:v5.1,v5.2,v5.3,v5.4,v5.5,v5.6,v5.7,v6.0,v6.1,v6.2,v6.3,v6.4,v6.5,v6.6lackssupportformanyprocessors,fileformats,debuggingetc...comeswithouttechnicalsupport
2025/4/11 14:29:39 15.62MB ida hex-ray decompiler 反编译
1
第1章绪论第2章SAR成像原理2.1引言2.2SAR系统参数2.3单脉冲距离向处理2.4线性调频脉冲与脉冲压缩2.5SAR方位向处理2.6SAR线性测量系统2.7辐射定标2.8小结参考文献附录2A星载SAR的方位向处理第3章图像缺陷及其校正3.1引言3.2SAR成像散焦3.2.1自聚焦方法3.2.2自聚焦技术的精确性3.2.3散射体性质对自聚焦的影响3.3几何失真与辐射失真3.3.1物理原因及关联的失真3.3.2基于信号的MOCO方法3.3.3天线稳定性3.4残留SAR成像误差3.4.1残留的几何与辐射失真3.4.2旁瓣水平3.5基于信号的MOCO方法的改进3.5.1包含相位补偿的迭代自聚焦3.5.2较小失真的高频跟踪3.5.3常规方法与基于信号方法相结合的MOC0方法3.6小结参考文献第4章SAR图像的基本特性4.1引言4.2SAR图像信息的特质4.3单通道图像类型与相干斑4.4多视处理估计RCS4.5相干斑的乘性噪声模型4.6RCS估计——成像与噪声的影响4.7SAR成像模型的结果4.8空间相关性对多视处理的影响4.9系统引入空间相关性的补偿4.9.1子采样4.9.2预平均4.9.3插值4.10空间相关性估计:平稳性与空间平均4.11相干斑模型的局限性4.12多维SAR图像4.13小结参考文献第5章数据模型5.1引言5.2数据特征5.3经验数据分布5.4乘积模型5.4.1RCS模型5.4.2强度概率密度函数5.5概率分布模型的比较5.6基于有限分辨率成像的目标RCS起伏5.7数据模型的局限性5.8计算机仿真5.9小结参考文献第6章RCS重建滤波器6.1引言6.2相干斑模型和图像质量度量6.3贝叶斯重建6.4基于相干斑模型的重建6.4.1多视处理相干斑抑制6.4.2最小均方误差相干斑抑制……第7章RCS分类与分割第8章纹理信息提取第9章相关纹理第10章目标信息第11章多通道SAR数据的信息处理第12章多维SAR图像分析技术第13章SAR图像的分类第14章现状与前景分析
2025/3/28 18:57:23 36.01MB 合成孔径雷达 SAR雷达成像
1
运行环境要求:php(5.4~7.3)+mysql5安装步骤:1,将程序文件上传至服务器空间上(注意二进制上传)2,在浏览器执行http://域名/install/进入安装注:根目录下nginx.conf是nginx的伪静态规则V6.4正式版部分功能改进说明:1,手机端每个栏目列表可以单独上传幻灯片2,后台部分页面UI优化3,增加用户自助更换微信绑定登录的功能4,后台直接上传公众号二维码和客服二维码5,手机端详情页增加自定义模板(和PC端同步)6,增加后台备忘录7,充值赠送套餐、置顶扣费选项、有效期选项等等统统改进为在后台直接设置(不再需要去改文件)8,不同栏目可以设置不同的有效期显示时间9,分站后台不显示教程、工单、更新等内容10,不同栏目可以设置不同的置顶时间项目和置顶收费标准11,PC和手机端用户中心,置顶信息改进12,手机端发信息,栏目选择界面的优化13,违禁词替换改进14,会员置顶信息界面优化(包括手机端)15,被大家诟病已久的图文编辑器将换成百度编辑器,并增加内容自动保存的功能
2025/3/24 15:17:23 20.99MB 网络协议 nginx
1
经典的POSIX多线程程序设计,在POSIX系统下进行C/C++多线程编程必看的一本书。
本书的读者对象是有C/C++编程基础,但是没有线程知识。
本书按照章节,由浅入深,从基本的线程概念,到线程私有数据,实时调度,再到barrier,读写锁,工作队列管理器,并且配合大量注释和实例来演示。
ProgrammingWithPOsiXThreadsPOSIX多线程程序设计[美]Davide.Butenhoff著于磊曾刚译忄因电力出照内容提要枣书深入描述了TEE的开放系统接可标准一POSIX线程,通常称为Pthreads标准。
本书首先解释了线程的基本概念,每括异步编程、线程的生命周期和间步机:然后讨论了些高絞话题,包括属性对象、线程私有数据和实时调度。
此外,本书还讨论了调度的阿题,并给出了避免错误和提髙性能等问题的有价值的建议。
本书使用了大量注释过的实例来解轟实际的概念,并包括Phed的简单索引和对标准化的晨望本书遁合有经验的C语言程序员阅读,也适合多线程编程人员参考纽书在版编目(C|P)数据POSⅨ多线程程序设计/(美)布滕霍夫(Butenhoff,R》著:于磊,曾刚译.一北京:中国电力出版社,2003ISBN75083-1395-XIP..Ⅱ①布②于③曾.,Ⅲ程序没计Ⅳ.TP3111中国版本图书馆CP数据核字(202)第110540号蕃作权合同登记号图字:01-20020712号AuthorizedtranslatlonfromtheEnglishlanguageedion,entitledProgrammingwithPOSIXThreadsbyDavidA.Butenhof,publy,Copyrighto1997Allrightsreserved.Npartofthisbookmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recordingotbyanyinfomationstorageretrievalsystem,withoutpermissionfromthePublisher.CHINESESiMPLIFIEDlanguageeditionpublishedbyChinaElectricPowerPressCopyright的2003本书由培生集团授权出版。
中国电力出版社出版、发行北京三里河路6号100044httpf/wwwinfopuw'er.com.cn汇鑫印务限公司印刷各地新华书店经2003年4月第一版2003年4月北京第印刷787毫米×102毫米16开本20.75印张505千字定价890元版权所有翻即必究〔本书如有印装质量问题,我社发行部负责退换予本书是有关“线程”(thread)和如何使用“线程”的。
在计算机中,“线程”是种能够实现某种功能的基本软件单元。
线稈比传統的进程process)更小巧、更怏捷、更易操作实际上;一旦在操作系统中引入线程,就可以将进程看作包含了数据地址空间、文件和一个(成多个)数据处理线程的综合应用使用线程构建的应用程序能够更加有效地利用系统资源,使用户的界面更加友好,在多处理器系统中不但运行十分快速,而且更加易于维护。
为达到上述目的,你只需要在程序中添加相应的几个简单函数调用,即可调整成另一种编程思路。
通过仔细阅读本书,我希望能够帮助你实现上述目标本书讲述的线程模型通常被称为Pthreads,或者POSIXthreads,更正式的名称应该是POSX1003.le-1995标准。
随后还将提供丶些其他的名称,不过目前你貝需记住Pthreads就够了。
在写本书时,SUN公司的Sola,Dga公司的DigitalUNIX、SGI公司的RX已经支持Pthreads。
其他一些主要的商用UNⅹ操作系统,像IM公司的AX和HP公的HPUX,不久也将支持线程模型,也许在你阅读木书的时候已经丈持Pthreads也已经在Linux利其他UNX系练中实现在个人电脑市场,做软公司的Wn32编程接口和BM的Os12都支持线程编程。
这些线程模型与Pthreads模型之间存在着一定的区别。
为了有效地使用它们,首先必须理解并发、同步和调度等概念,剩下的航是语法和样式的问题,个经验丰富的程序员可以适应这些模型中的任何一个线程模型已经很成功地在应用领域中丿泛运用,下面仅是其中的一些:●有大规模科学计算的程序能够充分利用多处理器系统的高性能程序和库代码能被多线程程序使用的库代码●实时应用程序和库代码●对慢速外设〔如网络和人类)执行输入输出操作的应用程序和库代码读者对象4书适合熟悉在UNX系列操作系统上使用ANSIC开发代码的高级程序人员阅读,并不要求具有线程或其他形状异步编程经验。
第1章介绍有关概念和术语,使你能够继续阅读个书后续部分,建议你不要跳过。
在阅读过程屮,你将发现关于线程各方面的有趣比喻和实例。
最后我希望你能够自已独地使用线程编程。
好了,祝你线程之旅愉快。
关于作者我从一开始就参与Pthreads标准的有关丁作,虽然最初的儿次会议我没有参加。
最后,我被迫在犹他州的雪鸟滑雪场的防雪崩掩体中度过∫一周,观看来自世界各地的代表们向他们」的滑雪板上涂蜡。
我本以为这是一个十分正式、乏味的会议,所以我没有带自己的滑雪板,只能租用滑设备在Pthreads标准最后投票阶段,我同其他几个POSIX丁作组设计线程同步接口和多处理器应用。
我也帮助定义了Aspen线程扩展规范,该规范让经成功应用于X/OpenXSH5我曾在DEC公可工作数年,从麻省分部到新罕布什尔州分部。
我是DEC公司线程架构的创始人之…,并在DigitalUNIX4..上设计并实现了大部分的Pthreads线程接口。
我还帮助人们开发、调试线程代码超过八年之久。
我的一个不成文的座右铭是“并发使生活更美好"。
线程不是面包片,程序员也不是面包师,所以我们只做能够做的事情致谢可能读者并不关心这部分内容,但确实是我和朋友们以及本书合作者希望见到的。
如果你是一个好奇的读者,请务必读下去尽管本书封面上只有我一个人的署名,但像木书这样的项目是不可能完全由一个人来完成的。
因为我了解很多线程知识,至少在线程通信方面相当在行,所以我也可能不需任何帮眇与出…本关于线程的书。
但结果是,本书要比假设的那木书更好。
首先要感谢的是我的经理Jeanfullerton,他给我时间并鼓励我在τ作肘写书。
感谢DECthreads组的其他同仁,他们是:Briankeane、Webbscales、JacquelineBerg、Richardlove、PeterPortante、BrianSilver、Marksimons和Stevejohn感谢GarretSwart,当他还在Digital系统研究中心工作时,就让我们了解POSX标准感谢Nawafbitar,他和Garret一起通宵T作,实现了Pthreads的第一个草案,并且不遗余力地推广POSIX线程标准,让每个人都理解线程到底是个什么东西,没有Garret,特别是如果没有Nawaf,Pthreads可能不会存在,至少不会像现在这么妤(缺乏完美并不是他们的责任——生活本来如此)感谢参与设计cma、Pthreads、UNX98、DCEthreads和DECthreads的所有人的帮助他们是:AndrewbirrellPaulborman、BobConti、BillCox、Jeffdenham、Petergilbert、Rickgreer、Mikegrier、KevinHarrisKenHobday、Mikejones、Steveneiman、BobKnighten、Leslielamport、DougLocke、Paulalong、Finnbarrp.Murphy、BillNoyce,Simonpatience、Haroldseigel、AlSimons、Jimwoodward和Johnzolnowsk特别感谢所有耐心审阅本书草稿的人们,他们是:BrianKemighan、Richstevens、DaveBrownell.billgallmeister、lanGinzburg、WillMorse、BryanO'Sullivan、BobrobillardDaveruddock和BilLewis。
感谢对结构和细节提出改进意见和建议的人们:Devangshah和BartSmaalders帮助回答了一些有关Solaris的问题,BryanO'Sullivan建议使用“舀水的程序员”的比喻感谢AddisonWesleylongmanF]JohnWait和Lanalanglois,他们耐心地等待并鼓励第次写书的我努力写好这本书。
感谢PamelaYee和ErinSweeney,他们管理了本书的整个出版过程。
感谢所有帮助过我的人们。
感谢我的妻子Annelederhos和我的女儿Amy、Alyssa,感谢她们对我的支持和陪伴。
感谢Charlesdodgson(Lewiscarrol),他在其经典小说Alice'sAdventuresinwonderland〈《艾丽丝漫游仙境》)、Throughthelooking-Glass(镜中漫游》)和TheHuntingoftheSnark(《捕猎蛇鲨》)中写了大量的关于线程编程的事情(译者注:是指小说中描写的多人之间的协调、并发T作,作者认为与线程间的同步和协调具有相似的含义)。
序言第1章概述….舀水的程序员幽···血幽噜血■■■自■■■口■平■_■平L·昏■昏罾早平■卩卩甲罾警肀昏罾昏4平平昏罾1昏昏昏1斷■昏1■昏晋11山翟■如■西d旷■晶旷hanm12术语定义…13异步编程是直观的…4关于木书的实例…5异步编程举例16线程的好处7线程的代价08选择线程还是不用线程2219POSIX线程概念第2章线程甲pd21建立和使用线程22线程的生命周期曾■T會32第3章同步…373.1不变量、临界区和谓词甲罪卩↓卩郾■郾看郾↓·T3互斥量3833条件变量…5934线程间的内存可视性第4章使用线程的几种方式∴…4.流水线1甲■曾昏個昏■18142T作组8943客户/服务器第5章线程高级编程5-次性初始化n11152属性11453取消.12054线程私有数据13755实时调度量鲁备14756线程和核实体16第6章POSX针对线程的调整1676.1fork昏山t1山h,,1.1676.2e7363进程结束6.4stdiolt鲁·TTP日■日白'自甲1甲即甲目日血!‘=P平■昏■■Ida=t1765线程安全的函数l7866信号P■昏182第7章Realcode………,…,,,4---.2067.1扩展同步鲁11自會■■p看p山山血即■晷着甲4■20672工作队列管理器『甲目目·由即?日甲■1晶吾hmpp唱p血命血』甲■品甲“■2373对现存库的处理……243第8章避免调试的提示■着酽eskd24881邐免不正确的代码.24982避免性能问题didP曾1血自幽甲p甲助D口1259第9章PoSⅨ多线程快速參考2639.1POSIX10031c-1995选项血·=F■山lF4·P甲Ia26392POSⅨX1003.1c-l995限制.2649.3POSⅨX1003lc-1995接口265第10章标准化过程展望30310.1X/OpenXSH5[UNIX98]102POSⅨX10031…鲁4P日命·h.44即4日4·-T血d哪甲‘4品=F4目“!31110.3POSX1003.14参考文献…",…4…-.17因特网上的线程资源320概述hetimehascome,theWalrussaldrotalkofmarythings,OrshoesaindshipsandsealingWaxoandkingsAndwhythe鵡boinghoAndwhetherpigshavewings-ewisCarrol,Throughthelooking-Glass在计算机专用术语中,线程是指机器中连续的、顺序的属性集合。
一个线程包含执行一系列机器指令所必须的机器状态,包括当前指令位置、地址和数据寄存器等。
个UNX进程可以理解为一个线程加上地址空间、文件描述符和其他数据。
某些UNⅨX版本支持“轻量级”或“变量级”进程,以便可以从进程中剔除部分或者所有数据,从而实现高效性能。
既然线程和轻量级进程都需要地址空间、文件描述符等数据,那么区别何在?区别在于多个线程可以共享一个地址空间,而做不同的事情。
在多处理器系统中,一个进程中的多个线程可以同时做不同的T作当计算机还活在玻璃洞穴中时(译者注:指计算机发展初期),需要处理事先准备好的穿孔卡片。
整个外部世界都在等待计算的结果,顶多可能听到程序员的抱怨声。
但是外部世界并不是一次只做-件事情,逐渐地,计算机开始模拟这种实际模式,增加多程序设计、多重处理、分时共亨、多处理器系统的能力,最终,实现了线程线程能够帮助你的应用程序走出洞穴。
Pthreads则能帮助你以-种优雅、高效、叮移植的方式完成这个厂作。
木章简单介绍理解和使用线程所需要的基本知识,其他章节则会针对各个环节做进一步的详细解释1.1节给出了包含多个化喻的故事,以此说明线程的工作模式。
这个故事并没有什么特别的,但在你理解我所讲的程序员和水桶的含义之前,可能显得有点怿12节给出了本书使用的基本概念和术语。
其中最重要的一个概念需要在此特别介绍,也与全书会对一些重点特别强调的习惯是一致的异步任何两个彼此独立运行的操作是异步的
2025/3/19 2:20:31 8.56MB 多线程 POSIX
1
共 116 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡