自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 奇妙的redis数据结构-adlist

原文链接:redis源码02-adlistredis-adlist双向链表redis 中的双向泛型链表实现, 下面我们重点分析一下redis是如何实现它的双向和泛型, 具体文件为adlist.h和adlist.ctypedef struct listNode { struct listNode *prev; struct listNode *next; void ...

2020-05-06 11:56:34 272

原创 gin教程02

原文链接:gin-gonic教程02获取GET请求的参数在上一篇文章中, 我们写了一个最简单的服务程序, 程序简单的返回了一个json数据, 而在业务开发中,我们经常会通过请求的一些参数来决定如何响应, 这就需要服务程序能够获取请求的参数下面我们来介绍一下如何利用gin.Context获取GET请求中的一些参数main.go文件代码如下, 程序功能很简单, 就是获取请求中的param1...

2020-05-06 10:47:44 315

原创 gin教程01

原文链接:gin-gonic教程01gin-gonicgin-gonic是一个golang语言的web框架, 它提供了和martini类似的API, 同时又有着比它快40倍的性能(据官网所说)安装1.安装govendorgin-gonic需要通过govendor来安装, 所以第一步需要下载govendor, 命令如下# 源码路径在$GOPATH/src# 二进制执行程序路径在$GO...

2020-05-06 10:45:27 338

原创 Ambari集群搭建

 一.软件要求1.yum, rpm2.scp curl unzip tar wget3.jdk1.8.0二.前提环境准备2.1 ssh免密生成master机器的ssh密钥# 生成master机器的公钥和密钥[@hadoop.master01.com hadoop_install] ssh-keygen -t rsa修改ssh登陆配置(禁用严格检查主机)...

2018-11-28 19:15:39 1505

原创 业务名词

广告形式物料:是组成推广信息的材料的统称。包括制作的推广计划、推广组、以及选择的关键词和撰写创意。 搜索推广:搜索推广指的是一种按效果付费的网络推广方式。系统根据网民检索词触发客户购买的关键词并且呈现客户推广信息。只有网民点击了解客户的推广信息。系统才向客户进行收费。 网盟推广:充分利用媒体资源进行广告推广,将会给广告主带来巨大的广告展现机会,可以有效提升品牌的知名度并转化为收益。广告形...

2018-11-07 14:02:18 507

原创 获取文本的第a~b行文本

简介有的时候我们需要在获取的文本输出中抽取感兴趣的几行数据,这个时候就可以借助sed命令来很快捷的去实现 例子 我们需要统计一下hadoop的文件系统每个目录所占用的大小,可以借助如下命令来显示hadoop fs -du /输出如下Found 13 itemsdrwxr-xr-x 2 xxx xxx 0 2018-11-07 12...

2018-11-07 14:01:30 301

原创 keepalived配置问题

简介最近在通过keepalived软件实现高可用服务架构的时候,发现自己配置的vrrp_script监控脚本一直无法触发(nginx宕机时候,不切换备份服务器),后来自己手动执行脚本发现是没有问题的。因此断定问题发生的原因应该是在keepalived的配置文件中,经过仔细的检查后,发现问题的原因是由于少了一个空格所导致的 改动前下面这段代码检查了很多遍都没有发现问题,后来发现是由于...

2018-10-02 20:57:06 331

原创 nginx学习笔记-事件处理模型

简介对于一个基本的web服务器来说,事件通常有三种类型 网络事件 信号 定时器  信号的处理对于nginx来说,有一些特定的信号,代表着特定的意义。信号会中断程序当前的运行状态,在改变状态后,继续执行。如果当前正在执行系统调用的时候接收到了信号,则可能导致系统调用失败,需要重入。在nginx的信号处理体系中,如果nginx正在等我事件(epoll_wait),这个时候程...

2018-10-02 20:31:54 319

原创 旋转字符串

描述给定一个字符串和一个偏移量,根据偏移量偏移字符串(从左向右偏移)样例对于字符串 "abcdefg".offset=0 => "abcdefg"offset=1 => "gabcdef"offset=2 => "fgabcde"offset=3 => "efgabcd"挑战在数组上原地旋转,使用O(1)的额外空间解题

2018-09-30 11:03:28 296

原创 Mysql主从架构搭建的时候遇到的问题

问题搭建Mysql主从架构的时候,发现Slave I/O 线程一直运行不起来,后来查看error,发现原来是因为主库和从库的Mysql UUID相同了(这里UUID相同是因为我是直接通过VMWare的克隆来模拟多机实验的)Slave I/O线程状态 Slave I/O 线程未运行起来的原因然后我查看了一下/data/mysql/auto.cnf,确实从库和主库的UUID一致...

2018-09-30 10:26:06 334

原创 Mysql初次安装运行后重设密码

简介在初次登录Mysql的时候,发现什么sql都执行不了,一直提示You must reset your password using ALTER USER statement before executing this statement.说明在执行别的sql语句之前,需要先重置一下数据库用户的登录密码  故障截图 解决办法依次执行以下命令操作即可...

2018-09-24 21:10:43 1296

原创 glog下载、安装、使用

简介最近在学习在程序中加入日志记录系统,通过搜索资料发现了glog这么一个由google开源提供的轻量级日志库,于是便开始了入坑的过程,以下是我学习glog的一点总结glog下载 首先我们要做的就是下载glog的源码1)直接点击github链接《Github/glog源码》进入gibhub页面2)然后点击Clone or download-------->Downlo...

2018-08-14 14:52:19 11939 1

原创 链接过程函数名称改写问题汇总

简介 由于实习时候的疏忽,在使用导出的模块时,发生了大量的LINK ERROR错误,耽误了很长时间非常影响工作进度,所以在此进行函数名称导出时候的问题汇总 链接过程 历史上由于程序员最初编写代码时,是通过在卡片上打孔的方式,所以一旦在其中的增加一行代码或减少一行代码便会导致跳转地址出现错乱,为此人们便想到用符号去代替过程地址,这样便不需要在编写代码的时...

2018-08-09 16:33:26 346

原创 用WPR(Windows Performance Recorder)抓取UI delay并进行分析的示范

简介 关于以下几篇文章中已经提到了如何使用WPT工具包和相关配置的解释 《利用WPT(Windows Performance Toolkit)进行程序的性能分析》 《ETW架构以及WPT(Windows Performance Toolkit)命令行的使用》 《利用WPA进行调用栈追踪(call stack trace)分析》 现在我们就来尝试抓取一个UI dela...

2018-07-30 14:42:12 3643

原创 Xperf工具的使用

简介 在《如何书写自定义的WPRP(Windows Performance Recorder Profile)文件》博文中我们介绍了如何通过书写自定义的配置文件来获取更大的控制权限。在本文中,我们将介绍如何通过Xperf这个工具来实现同样的操作。实际上WPR底层就是基于Xperf这个工具实现的。 Xperf查看支持的Kernel Flag在《如何书写自定义的WP...

2018-07-18 22:38:28 3828

原创 如何书写自定义的WPRP(Windows Performance Recorder Profile)文件

前面我们提到了如何通过wprUI和wpr这两个程序去记录系统状态,但是整个过程中我们都是使用的WPT工具包内建的.wprp文件。如何说我们想要去获得更强的控制权应该怎么做呢?答案就是书写属于我们自己的.wprp文件。 这个文件里面定义了我们需要的 Providers Collectors Profile追踪会话 TraceMergeProperties ...

2018-07-18 18:43:50 1530

原创 利用WPA进行调用栈追踪(call stack trace)分析

简介 在实际开发过程中,我们经常会对开发的程序进行性能测试,从而找到程序的性能瓶颈。那么在找到程序的性能瓶颈之后 ,如何定位性能问题呢,简而言之就是可以直接找出哪一个函数产生了性能开销,如何程序简单之如只有几十行代码,那么可以直接人肉的方式进行定位;但是如果程序大至几十万行代码或者几百万行代码,这个工作量就非常大了。WPT工具包提供给我们了一个非常好的方式去完成这种任务,这种方式称为...

2018-07-17 15:55:40 2322

原创 ETW架构以及WPT(Windows Performance Toolkit)命令行的使用

ETW ETW(Event trace for Windows)是微软提供的追踪和记录由应用程序和内核驱动事件的机制。ETW已经由Windows操作系统实现了,所以我们无需对其编程。并且在此基础上提供给了开发者一些快速、可靠、通用的事件追踪特性。 ETW架构图(取自MSDN) 下面解释一些ETW架构中使用到的概念 Providers(事件提供...

2018-07-16 21:30:45 3851

原创 利用WPT(Windows Performance Toolkit)进行程序的性能分析

Windows Performance Toolkit WPT(Windows Performance Toolkit)是微软提供的一套用于分析程序性能的工具包,它其中包含两个主要的工具 WPR(Windows Performance Recorder)是一个事件记录工具,使用它可以监测系统状态(CPU、磁盘I/O、堆分配、栈调用…),并生成一个.etl(Event trace...

2018-07-16 20:07:16 19924

原创 条款27:尽量少做转型动作

c++规则 的设计目标之一是,保证“类型错误”绝不可以发生。理论上如果你的程序可以很“干净地”(无错误,无警告)通过编译,就表示它并不企图在任何对象上执行不安全、无意义、愚蠢的操作。这是一个极具价值的保证,可别草率的放弃它。 不幸的是,转型(casts)破坏了类型系统(type system)。那可能导致任何各种麻烦,有些容易辨识,有些非常隐晦。C++不同于JAVA,C#,C。在J...

2018-07-13 21:46:13 225

原创 条款20:宁以pass-by-reference-to-const替换pass-by-value

缺省情况下C++以pass-by-value方式传递至函数。除非另外指定否则函数的参数都是以实参的副本为初值。并且调用端所获得的对象也是函数返回值的一个副本。这些副本是由对象的copy构造函数产生的。这就可能使得pass-by-value成为性能开销的操作。class Person{public: Person(); virtual ~Person(); ...pr...

2018-07-13 17:17:40 162

原创 2018/7/11功能点解读

2018/7/11功能点解读换手率 换手率:指成交股数与流通股本之比。 换手率=成交股数÷流通股本换手率=成交股数÷流通股本换手率=成交股数\div流通股本例如:邯郸钢铁公司的流通股本3.2亿,1998年1月22日上市当天成交股数为10919.24万股。因此当日的换手率为34%(10919.24/32000),股价收市为7.91元。换手率高,反映主力大量...

2018-07-11 19:25:23 357

原创 2018/7/10功能点解读

2018/7/10功能点解读开盘和收盘 开盘:每天股市开始交易称为开盘 收盘:每天股市结束交易称为收盘 注: 沪深A股市场开盘时间是周一到周五,集合竞价时间9:15-9:25,连续竞价时间9:30-11:30,正常交易时间13:00-15:00,深市的14:57-15:00是集合竞价时间 港股证券市场开盘时间是周一至周五,开市前时段9:30-10:00,...

2018-07-10 16:18:04 1129

原创 第2章-实例研究: 设计一个文档编辑器--支持多种视感标准

支持多种视感标准 重新定位一个平台不应该花费大量的成本 运行时改变Lexi的外观和感觉 每个窗口的视觉标准一定不一样 对象创建的抽象 我们假定两个窗口组件图元集合来实现多个视感标准: 第一个集合是由Glyph子类构成的 第二个集合是由与抽象子类对应在不同视感标准的具体的子类构成的 注意:很明显Lexi的实现不能直接通过调用C++...

2018-07-08 11:06:47 254

原创 Chapter1: Building Abstractions with Procedures

The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three 1.Combining several simple ideas into one compund one, and thus all complex ideas are made. 2.Th...

2018-06-28 10:13:44 216

原创 第6章-ICP,MRR,BKA

ICP Index Condition Pushdown(ICP)是Mysq使用索引从表中检索行数据的一种优化方式。传统查询流程 存储引擎遍历索引定位行,返回给Server层 Server层对这些数据进行WHERE过滤处理,返回给Client层ICP优化查询流程 存储引擎在遍历索引定位行 存储引擎对这些索引进行WHERE过滤,返回Server层 Se...

2018-06-14 17:59:00 314

原创 条款02:尽量以const, enum, inline替换 #define

尽量以const, enum, inline替换 #defineconst在我们所编写的代码中经常会出现以下预处理命令#define ASPECT_RATIO 1.653 注意:但是这并不是一个好的做法,因为很可能在编译器处理源代码之前,它就被(#undef)了这样就会造成符号名称ASPECT_RATIO没有进入符号表(symbol table)。比如很可能在源代码文...

2018-06-08 20:20:48 213

原创 网易笔试题-地牢逃脱

地牢逃脱 题目 给定一个 n 行 m 列的地牢,其中'.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从(x0,y0) 位置出发,遍历这个地牢。 和一般的游戏所不同的是,他每一步只能按照一些指定的方式遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。 地牢的出口可能在任意某个可以通行的位置上。牛牛想知道出口在最坏情况下,他最少需要多少步才可以离开这...

2018-06-07 19:57:14 654

原创 网易笔试题-魔法神器

魔法神器题目 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币 魔法机器1:如果投入x个魔法币,魔法机器会将其变...

2018-06-04 21:03:34 408

原创 第5章-作业--对作业中的进程施加限制

对作业中的进程施加限制代码示例 // 设置作业的一些基本限制 JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 }; jobli.PriorityClass = IDLE_PRIORITY_CLASS; // 作业的优先级数 jobli.PerJobUserTimeLimit.QuadPart = 1...

2018-06-04 18:33:35 452

原创 第5章-作业--创建作业

函数原型HANDLE WINAPI CreateJobObject( _In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes, _In_opt_ LPCTSTR lpName);lpJobAttributes 该参数用来指定作业内核对象句柄是否可以继承 如果是NULL, 则会采用默认的安全属性并且...

2018-06-04 17:16:33 276

原创 网易笔试题-合唱团

网易笔试题合唱团题目 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗? 输入描述: 每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 ≤≤\leq n ≤≤\leq 50),表示学...

2018-06-04 08:38:30 307

原创 第4章-进程--CreateProcess

函数原型BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, _Inout_opt_ LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, ...

2018-06-02 11:29:02 157

原创 条款01:视C++为一个语言联邦

条款01:视C++为一个语言联邦 今天的C++已经是个多重范型编程语言(multiparaigm programming language), 它同时支持面向过程编程(procedural), 面向对象编程(object-oriented), 函数式编程(functional), 泛型编程(generic), 元编程形式(metaprogramming).C 这一部分...

2018-06-02 09:58:11 1135

原创 第2章-实例研究: 设计一个文档编辑器--修饰用户界面

修饰用户界面 1.文本编辑区域周围加边界以界定文本页. 2.加滚动条让用户能看到同一页的不同部分.注意: 不应该用继承方式将修饰加入到用户界面, 如果其它用户界面对象不知道存在这些修饰, 那么就可以获得最大的灵活性. 使得无需改变其它的类就可以增加和移去这些修饰.继承方式 1.类爆炸现象 2.在运行时对修饰重新安排困难 3.不够灵活 4.不易...

2018-06-01 15:33:13 264

原创 第2章-实例研究: 设计一个文档编辑器--格式化

格式化 将文本分解成行, 将行分解成列. 指定边界宽度, 缩进大小,列的形式, 是否隔行显示以及其它可能的许多格式限制条件. 理想状态下, 我们设计出来的类结构层次应该满足文档结构和格式算法. 比如我们增加一个Glyph子类, 但是不需要考虑修改格式算法, 增加一个格式算法不需要考虑修改子类.基本的Compositor接口 可以将格式化有关的算法接口封闭在Composit...

2018-06-01 14:00:51 314

原创 第2章-实例研究: 设计一个文档编辑器--文档结构

文档结构需要满足的需求 1.保持文档的物理结构.(可以将文本和图形可以放到行,列,表) 2.可视化生成和显示文档 3.根据显示位置来映射文档内部表示的元素.(可以根据用户点击鼠标的位置来判断哪个文档元素被引用)文档物理结构图(摘自设计模式图2-2)文档递归组合对象结构图(摘自设计模式图2-3)部分类Glyph层次图(摘自图2-4)...

2018-06-01 13:39:57 407

原创 第1章-UNIX基础知识

一. 基本概念操作系统内核: 定义: 控制计算机硬件资源, 提供程序运行环境的一种程序. 功能: 为运行于它之上的程序提供服务(内核功能),例如: 执行程序, 打开文件, 读写文件, 分配内存存储区, 获取系统时间.系统调用 定义: 操作系统内核中的功能所提供的API(Application Programming Interface). 功能: 为应...

2018-06-01 13:21:32 191

原创 第1章-Mysql数据库的安装, 启动, 关闭

一.Mysql安装1.安装Mysql2.初始化Mysql3.进入Mysql后, 设置登录密码二.Mysql数据库密码丢失1.查看Mysql进程号, 停止Mysql运行2.加跳过权限表参数, 重启数据库3.修改数据库管理员密码一.Mysql安装1.安装Mysqlshell >groupadd mysql

2018-06-01 10:48:14 364

UNIX环境高级编程英文第三版+源码

Contents Foreword to the Second Edition xix Preface xxi Preface to the Second Edition xxv Preface to the First Edition xxix Chapter 1. UNIX System Overview 1 1.1 Introduction 1 1.2 UNIX Architecture 1 1.3 Logging In 2 1.4 Files and Directories 4 1.5 Input and Output 8 1.6 Programs and Processes 10 1.7 Error Handling 14 1.8 User Identification 16 1.9 Signals 18 1.10 Time Values 20 1.11 System Calls and Librar y Functions 21 1.12 Summary 23 Chapter 2. UNIX Standardization and Implementations 25 2.1 Introduction 25 ix www.it-ebooks.info x Contents 2.2 UNIX Standardization 25 2.2.1 ISO C 25 2.2.2 IEEE POSIX 26 2.2.3 The Single UNIX Specification 30 2.2.4 FIPS 32 2.3 UNIX System Implementations 33 2.3.1 UNIX System V Release 4 33 2.3.2 4.4BSD 34 2.3.3 FreeBSD 34 2.3.4 Linux 35 2.3.5 Mac OS X 35 2.3.6 Solaris 35 2.3.7 Other UNIX Systems 35 2.4 Relationship of Standards and Implementations 36 2.5 Limits 36 2.5.1 ISO C Limits 37 2.5.2 POSIX Limits 38 2.5.3 XSI Limits 41 2.5.4 sysconf, pathconf, and fpathconf Functions 42 2.5.5 Indeterminate Runtime Limits 49 2.6 Options 53 2.7 Feature Test Macros 57 2.8 Primitive System Data Types 58 2.9 Differences Between Standards 58 2.10 Summary 60 Chapter 3. File I/O 61 3.1 Introduction 61 3.2 File Descr iptors 61 3.3 open and openat Functions 62 3.4 creat Function 66 3.5 close Function 66 3.6 lseek Function 66 3.7 read Function 71 3.8 write Function 72 3.9 I/O Efficiency 72 3.10 File Shar ing 74 3.11 Atomic Operations 77 3.12 dup and dup2 Functions 79 3.13 sync, fsync, and fdatasync Functions 81 3.14 fcntl Function 82 www.it-ebooks.info Contents xi 3.15 ioctl Function 87 3.16 /dev/fd 88 3.17 Summary 90 Chapter 4. Files and Directories 93 4.1 Introduction 93 4.2 stat, fstat, fstatat, and lstat Functions 93 4.3 File Types 95 4.4 Set-User-ID and Set-Group-ID 98 4.5 File Access Per missions 99 4.6 Ownership of New Files and Directories 101 4.7 access and faccessat Functions 102 4.8 umask Function 104 4.9 chmod, fchmod, and fchmodat Functions 106 4.10 Sticky Bit 108 4.11 chown, fchown, fchownat, and lchown Functions 109 4.12 File Size 111 4.13 File Tr uncation 112 4.14 File Systems 113 4.15 link, linkat, unlink, unlinkat, and remove Functions 116 4.16 rename and renameat Functions 119 4.17 Symbolic Links 120 4.18 Creating and Reading Symbolic Links 123 4.19 File Times 124 4.20 futimens, utimensat, and utimes Functions 126 4.21 mkdir, mkdirat, and rmdir Functions 129 4.22 Reading Director ies 130 4.23 chdir, fchdir, and getcwd Functions 135 4.24 Device Special Files 137 4.25 Summary of File Access Per mission Bits 140 4.26 Summary 140 Chapter 5. Standard I/O Library 143 5.1 Introduction 143 5.2 Streams and FILE Objects 143 5.3 Standard Input, Standard Output, and Standard Error 145 5.4 Buffer ing 145 5.5 Opening a Stream 148 www.it-ebooks.info xii Contents 5.6 Reading and Writing a Stream 150 5.7 Line-at-a-Time I/O 152 5.8 Standard I/O Efficiency 153 5.9 Binary I/O 156 5.10 Positioning a Stream 157 5.11 For matted I/O 159 5.12 Implementation Details 164 5.13 Temporar y Files 167 5.14 Memory Streams 171 5.15 Alternatives to Standard I/O 174 5.16 Summary 175 Chapter 6. System Data Files and Information 177 6.1 Introduction 177 6.2 Password File 177 6.3 Shadow Passwords 181 6.4 Group File 182 6.5 Supplementary Group IDs 183 6.6 Implementation Differences 184 6.7 Other Data Files 185 6.8 Login Accounting 186 6.9 System Identification 187 6.10 Time and Date Routines 189 6.11 Summary 196 Chapter 7. Process Environment 197 7.1 Introduction 197 7.2 main Function 197 7.3 Process Termination 198 7.4 Command-Line Arguments 203 7.5 Environment List 203 7.6 Memory Lay out of a C Program 204 7.7 Shared Librar ies 206 7.8 Memory Allocation 207 7.9 Environment Var iables 210 7.10 setjmp and longjmp Functions 213 7.11 getrlimit and setrlimit Functions 220 7.12 Summary 225 Chapter 8. Process Control 227 8.1 Introduction 227 www.it-ebooks.info Contents xiii 8.2 Process Identifiers 227 8.3 fork Function 229 8.4 vfork Function 234 8.5 exit Functions 236 8.6 wait and waitpid Functions 238 8.7 waitid Function 244 8.8 wait3 and wait4 Functions 245 8.9 Race Conditions 245 8.10 exec Functions 249 8.11 Changing User IDs and Group IDs 255 8.12 Interpreter Files 260 8.13 system Function 264 8.14 Process Accounting 269 8.15 User Identification 275 8.16 Process Scheduling 276 8.17 Process Times 280 8.18 Summary 282 Chapter 9. Process Relationships 285 9.1 Introduction 285 9.2 Ter minal Logins 285 9.3 Networ k Logins 290 9.4 Process Groups 293 9.5 Sessions 295 9.6 Controlling Terminal 296 9.7 tcgetpgrp, tcsetpgrp, and tcgetsid Functions 298 9.8 Job Control 299 9.9 Shell Execution of Programs 303 9.10 Orphaned Process Groups 307 9.11 FreeBSD Implementation 310 9.12 Summary 312 Chapter 10. Signals 313 10.1 Introduction 313 10.2 Signal Concepts 313 10.3 signal Function 323 10.4 Unreliable Signals 326 10.5 Interrupted System Calls 327 10.6 Reentrant Functions 330 10.7 SIGCLD Semantics 332 www.it-ebooks.info xiv Contents 10.8 Reliable-Signal Ter minology and Semantics 335 10.9 kill and raise Functions 336 10.10 alarm and pause Functions 338 10.11 Signal Sets 344 10.12 sigprocmask Function 346 10.13 sigpending Function 347 10.14 sigaction Function 349 10.15 sigsetjmp and siglongjmp Functions 355 10.16 sigsuspend Function 359 10.17 abort Function 365 10.18 system Function 367 10.19 sleep, nanosleep, and clock_nanosleep Functions 373 10.20 sigqueue Function 376 10.21 Job-Control Signals 377 10.22 Signal Names and Numbers 379 10.23 Summary 381 Chapter 11. Threads 383 11.1 Introduction 383 11.2 Thread Concepts 383 11.3 Thread Identification 384 11.4 Thread Creation 385 11.5 Thread Termination 388 11.6 Thread Synchronization 397 11.6.1 Mutexes 399 11.6.2 Deadlock Avoidance 402 11.6.3 pthread_mutex_timedlock Function 407 11.6.4 Reader–Writer Locks 409 11.6.5 Reader–Writer Locking with Timeouts 413 11.6.6 Condition Variables 413 11.6.7 Spin Locks 417 11.6.8 Barriers 418 11.7 Summary 422 Chapter 12. Thread Control 425 12.1 Introduction 425 12.2 Thread Limits 425 12.3 Thread Attr ibutes 426 12.4 Synchronization Attr ibutes 430 12.4.1 Mutex Attr ibutes 430 www.it-ebooks.info Contents xv 12.4.2 Reader–Writer Lock Attr ibutes 439 12.4.3 Condition Variable Attributes 440 12.4.4 Barrier Attributes 441 12.5 Reentrancy 442 12.6 Thread-Specific Data 446 12.7 Cancel Options 451 12.8 Threads and Signals 453 12.9 Threads and fork 457 12.10 Threads and I/O 461 12.11 Summary 462 Chapter 13. Daemon Processes 463 13.1 Introduction 463 13.2 Daemon Character istics 463 13.3 Coding Rules 466 13.4 Error Logging 469 13.5 Single-Instance Daemons 473 13.6 Daemon Conventions 474 13.7 Client–Server Model 479 13.8 Summary 480 Chapter 14. Advanced I/O 481 14.1 Introduction 481 14.2 Nonblocking I/O 481 14.3 Record Locking 485 14.4 I/O Multiplexing 500 14.4.1 select and pselect Functions 502 14.4.2 poll Function 506 14.5 Asynchronous I/O 509 14.5.1 System V Asynchronous I/O 510 14.5.2 BSD Asynchronous I/O 510 14.5.3 POSIX Asynchronous I/O 511 14.6 readv and writev Functions 521 14.7 readn and writen Functions 523 14.8 Memory-Mapped I/O 525 14.9 Summary 531 Chapter 15. Interprocess Communication 533 15.1 Introduction 533 15.2 Pipes 534 15.3 popen and pclose Functions 541 www.it-ebooks.info xvi Contents 15.4 Coprocesses 548 15.5 FIFOs 552 15.6 XSI IPC 556 15.6.1 Identifiers and Keys 556 15.6.2 Per mission Str ucture 558 15.6.3 Configuration Limits 559 15.6.4 Advantages and Disadvantages 559 15.7 Message Queues 561 15.8 Semaphores 565 15.9 Shared Memor y 571 15.10 POSIX Semaphores 579 15.11 Client–Server Proper ties 585 15.12 Summary 587 Chapter 16. Network IPC: Sockets 589 16.1 Introduction 589 16.2 Socket Descr iptors 590 16.3 Addressing 593 16.3.1 Byte Order ing 593 16.3.2 Address Formats 595 16.3.3 Address Lookup 597 16.3.4 Associating Addresses with Sockets 604 16.4 Connection Establishment 605 16.5 Data Tr ansfer 610 16.6 Socket Options 623 16.7 Out-of-Band Data 626 16.8 Nonblocking and Asynchronous I/O 627 16.9 Summary 628 Chapter 17. Advanced IPC 629 17.1 Introduction 629 17.2 UNIX Domain Sockets 629 17.2.1 Naming UNIX Domain Sockets 634 17.3 Unique Connections 635 17.4 Passing File Descriptors 642 17.5 An Open Server, Version 1 653 17.6 An Open Server, Version 2 659 17.7 Summary 669 Chapter 18. Terminal I/O 671 18.1 Introduction 671 www.it-ebooks.info Contents xvii 18.2 Over view 671 18.3 Special Input Characters 678 18.4 Getting and Setting Ter minal Attr ibutes 683 18.5 Ter minal Option Flags 683 18.6 stty Command 691 18.7 Baud Rate Functions 692 18.8 Line Control Functions 693 18.9 Ter minal Identification 694 18.10 Canonical Mode 700 18.11 Noncanonical Mode 703 18.12 Ter minal Window Size 710 18.13 termcap, terminfo, and curses 712 18.14 Summary 713 Chapter 19. Pseudo Terminals 715 19.1 Introduction 715 19.2 Over view 715 19.3 Opening Pseudo-Ter minal Devices 722 19.4 pty_fork Function 726 19.5 pty Program 729 19.6 Using the pty Program 733 19.7 Advanced Features 740 19.8 Summary 741 Chapter 20. A Database Library 743 20.1 Introduction 743 20.2 History 743 20.3 The Librar y 744 20.4 Implementation Over view 746 20.5 Centralized or Decentralized? 750 20.6 Concurrency 752 20.7 Building the Librar y 753 20.8 Source Code 753 20.9 Perfor mance 781 20.10 Summary 786 Chapter 21. Communicating with a Network Printer 789 21.1 Introduction 789 21.2 The Inter net Pr inting Protocol 789 21.3 The Hyper text Transfer Protocol 792 21.4 Printer Spooling 793 www.it-ebooks.info xviii Contents 21.5 Source Code 795 21.6 Summary 843 Appendix A. Function Prototypes 845 Appendix B. Miscellaneous Source Code 895 B.1 Our Header File 895 B.2 Standard Error Routines 898 Appendix C. Solutions to Selected Exercises 905 Bibliography 947 Index 955

2017-10-03

空空如也

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

TA关注的人

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