
读书笔记
文章平均质量分 91
The_Hungry_Brain
现在不经意做的一件事,会在未来某个不可预期的时刻回馈自己。越努力,越幸运。
展开
-
编程之美——杂谈
下水道井盖为什么是圆的。基础知识:编程语言、数据结构、算法。展示一段自己觉得写过的最好的程序。50%CPU占用率、任意比例、正弦曲线、如果电脑是双核的。设计模式、架构、SOA。变通。 -原创 2016-09-15 10:49:01 · 358 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第7、8、9章:互斥锁、条件变量、读写锁、记录上锁
互斥锁:相互排斥(mutual exclusion),用于保护临界区。Posix互斥锁被声明为具有pthread_mutex_t数据类型的变量。如果互斥锁的变量是静态分配的,那么我们可以把它初始化成常值PTHREAD_MUTEX_INITIALIZER。若是动态分配的,必须在运行之时,通过调用pthread_mutex_init函数来初始化它。#include int pt原创 2017-07-29 10:35:25 · 316 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第2,3章:Posix IPC 和 System V IPC
第二章Posix IPC以下三种类型的IPC合成为“Posix IPC”:Posix消息队列Posix信号量Posix共享内存区IPC名字的移植问题:mq_open、sem_open、shm_open这三个函数的第一个参数就是一个名字,可能是某个文件系统中的一个真正的路径。为避免移植问题:1、把Posix IPC名字的#define行放在一个原创 2017-06-13 21:26:41 · 609 阅读 · 0 评论 -
libevent源码分析
libevent源代码文件组织结构:1)头文件: event.h —— 事件宏定义、接口函数声明,主要结构体event的声明;2)内部头文件: xxx-internal.h —— 内部数据结构和函数,(对外不可见,信息隐藏);3)libevent框架: event.c原创 2017-07-18 10:19:21 · 303 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第4章:管道和FIFO
管道由pipe创建,提供一个单向的数据流。#include int pipe(int fd[2]); // 返回:成功则为0,出错则为-1该函数返回两个文件描述符 fd[0] 和 fd[1] 。前者打开来读,后者打开来写。所有管道都是半双工的,即单向数据流。全双工管道某些系统提供全双工管道原创 2017-07-20 11:16:40 · 399 阅读 · 0 评论 -
glibc源码解读——memset
#include #include #undef memsetvoid *inhibit_loop_to_libcallmemset(void *dstpp, int c, size_t len){ long int dstp = (long int)dstpp; if (len >= 8) { size_t xlen; o原创 2017-07-06 11:23:42 · 1968 阅读 · 0 评论 -
原码,反码,补码,移码
原码:如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011 位数不够的用0补全。PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。反码原创 2017-07-05 19:51:02 · 568 阅读 · 0 评论 -
802.11无线网络权威——(三、MAC基础)
MAC位于各式物理层之上,控制数据的传输。它负责核心成帧操作(core framing operation)以及与有线骨干网络之间的交互。802.11采用载波监听多路访问 / 冲突避免(carrier sense multiple access with collisions avoided,简称CSMA/CA)机制。802.11采用肯定确认(positive acknowle原创 2017-07-05 11:47:41 · 2408 阅读 · 0 评论 -
802.11无线网络权威——(一二、导论)
第一章、无线网络导论相比有线网络,无线网络的优点:1、移动性。2、部署容易,构建快速。(建筑影响)3、灵活性。(hot spot 热点)4、成本低。在802.11网络中,基站又称为接入点(access point,AP)。然而不论有多少用户,无线网络基础建设在本质上并没有什么差异。要在某个地区提供无线网络服务,必须先将基站与天线摆放到位。一旦完成基础原创 2017-07-04 15:27:27 · 1112 阅读 · 0 评论 -
程序员的自我修养——3、目标文件里有什么
3.5 链接的接口——符号链接过程的本质就是要把多个不同的目标文件之间相互“粘”到一起。在链接中,目标文件之间的相互拼合实际上是目标文件之间对地址的引用。即对函数和变量的地址的引用。我们将函数和变量统称为符号(Symbol),函数名和变量名就是符号名(Symbol Name)。每个目标文件都会有一个相应的符号表(Symbol Table)。每个定义的符号有一个对应的原创 2017-04-05 20:43:49 · 476 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第5章:Posix消息队列
Posix消息队列 和 System V 消息队列的主要差别:对POSIX消息队列的读总是返回最高优先级的最早消息,对System V消息队列的读则可以返回任意指定优先级的消息。当往一个空队列放置一个消息时,Posix消息队列允许产生一个信号或启动一个线程,System V消息队列则不提供类似的机制。队列中的每个消息都具有如下属性:一个无符号整数优先级(Posix)原创 2017-07-21 14:54:16 · 389 阅读 · 0 评论 -
python 3 笔记
一、python基础Ipython3 打印使用 print (var) #默认是换行的print (var, end = "" ) #不换行print (var1,var2,var3, sep='@') #插入分隔符原始字符串r"c:\user"在 python 中,类型属于对象,变量是没有类型的:a=[1,2,3]a="Runoob"保留字>>> impo原创 2017-12-10 22:50:48 · 684 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第11章:System V 信号量
先前介绍的POSIX信号量概念:二值信号量:0,1计数信号量:0和某个限制值之间的信号量。System V 中信号量:计数信号量集:一个或多个信号量,其中每个都是计数信号量。对于系统的每个信号量集,内核维护一个信息结构:中定义/* Data structure describing a set of semaphores. */struct semid_ds{原创 2017-09-07 17:58:32 · 378 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第15,16章:远程过程调用(门,Sun RPC)
(1)本地过程调用(local procedure call)(2)远程过程调用(remote procedure call,RPC):调用者为客户,被调用的过程为服务器。门(door)能力:一个进程调用同一台主机上另一个进程中的某个过程(函数)。(3)RPC通常允许一台主机上的某个客户调用另一台主机上的某个服务器过程,只要这两台主机以某种形式的网络连接着。原创 2017-09-23 11:36:53 · 515 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第14章:System V共享内存区
先调用shmget,再调用shmat。对于每个共享内存区,内核维护如下信息结构 shmid_ds,/* Permission flag for shmget. */#define SHM_R 0400 /* or S_IRUGO from */#define SHM_W 0200 /* or S_IWUGO from *//原创 2017-09-23 09:34:27 · 322 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第10章:Posix信号量
sem_open、sem_close、sem_unlink#include /* For O_* constants */#include /* For mode constants */#include sem_t *sem_open(const char *name, int oflag);sem_t *sem_open(const char原创 2017-08-16 17:40:00 · 380 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第13章:Posix共享内存区
mmap提供父子进程间的共享内存区的列子:(1)使用内存映射文件;(2)使用4.4BSD 匿名内存映射;(3)使用 /dev/zero 匿名内存映射。POSIX 提供了两种在无亲缘关系进程间共享内存区的方法:(1)内存映射文件:由open函数打开,由mmap函数把得到的描述符映射 到当前进程地址空间中的一个文件。(2)共享内存区对象:由shm_open 打开一个Po原创 2017-09-13 11:46:54 · 315 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第12章:共享内存区介绍
共享内存区是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传递就不再涉及内核。然而往共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步。“不再涉及内核”:指 进程不再通过执行任何进入内核的系统调用来彼此传递数据。显然,内核必须建立允许各个进程共享该内存区的内存映射关系,然后一直管理该内存区。通常的客户服务器消息传递,需复制四次:原创 2017-09-12 21:30:31 · 368 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第6章:System V消息队列
System V 消息队列使用消息队列标识符(Message Queue Identifier)。具有足够特权的任何进程都可以往一个给定进程放置一个消息。也可以读出一个消息。跟Posix消息队列一样,在写消息之前,不求另外某个进程正在等待该队列上一个消息的到达。原创 2017-07-25 14:27:45 · 291 阅读 · 0 评论 -
程序员的自我修养——7、动态链接
7.1 为什么要动态链接1)内存和磁盘空间浪费静态链接的方式对于计算机内存和磁盘的空间浪费非常严重。(特别是多进程操作系统下)在静态链接的情况下,Program1和Program2都用到了Lib.o这个模块,所以它们同时在链接输出的可执行文件Program1和Program2有两个副本。在静态链接中,C原创 2017-06-10 15:04:55 · 447 阅读 · 0 评论 -
UNP(卷2:进程间通信)—— 第一章:简介
IPC是进程间通信(interprocess communication)的简称。消息传递(message passing):管道(pipe),命名管道(named pipe)(FIFO)System V消息队列(System V message queue)Posix消息队列远程过程调用(Remote Procedure Call, RPC):从一个系统上某个程序调用另一原创 2017-06-13 20:57:13 · 598 阅读 · 0 评论 -
restrict关键字用法
c99中新增加了一个类型定义,就是restrict。转载 2016-10-11 16:59:12 · 13667 阅读 · 4 评论 -
UNP——Chapter 5:TCP客户/服务器程序示例
程序示例原创 2016-09-21 18:43:32 · 330 阅读 · 0 评论 -
UNP——Chapter 4:基本TCP套接字编程
socket原创 2016-09-21 17:11:32 · 281 阅读 · 0 评论 -
APUE——Chapter 3:文件I/O
open、read、write、lseek、close。原创 2016-10-09 10:50:59 · 420 阅读 · 0 评论 -
UNP——Chapter 3:套接字编程简介
3.1 概述套接字地址结构。这些结构在两个方向上传递:从进程到内核和从内核到进程。其中从内核到进程方向的传递方式是值-结果参数。地址转换函数。在地址的文本表达和它们存放在套接字地址结构中的二进制值之间进行转换。多数现存IPv4代码使用inet_addr和inet_ntoa这两个函数,inet_pton和inet_ntop同时试用IPv4和IPv6。原创 2016-09-20 14:46:33 · 392 阅读 · 0 评论 -
UNP——Chapter 6:I/O复用:select和poll函数
内核一旦发现进程指定的一个或多个I/O条件就绪,它就通知进程。这个能力称为I/O复用。(I/O multiplexing)6.1 I/O模型5种I/O模型的基本区别:原创 2016-09-21 18:49:40 · 576 阅读 · 0 评论 -
编程之美——中国象棋将帅问题
A表示“将”,B表示“帅”。用1~9表示A、B的坐标。请写出一个程序,输出A、B所有合法位置。要求在代码中只能使用一个字节存储变量。原创 2016-10-08 15:23:28 · 379 阅读 · 0 评论 -
UNP——Chapter 2:传输层:TCP、UDP和SCTP
TCP的三路握手TCP的连接终止序列TCP的TIME_WAIT状态SCTP的四路握手SCTP的连接终止原创 2016-08-31 17:27:08 · 678 阅读 · 0 评论 -
APUE——Chapter 5:标准I/O库
对于标准I/O库,它们的操作则是围绕流(stream)进行的。原创 2016-10-10 11:44:09 · 277 阅读 · 0 评论 -
UNP——Chapter 7:套接字选项
获取和设置影响套接字的选项:getsockopt和setsockopt函数;fcntl函数;ioctl函数。原创 2016-09-27 13:54:16 · 470 阅读 · 0 评论 -
程序员的自我修养——6、可执行文件的装载与进程
6.1 进程虚拟地址空间程序是一个静态的概念。(程序好比菜谱)进程是一个动态的概念。(进程好比整个炒菜的过程)虚拟地址空间(Virtual Address Space)硬件决定了地址空间的最大理论上限,即硬件的寻址空间大小。比如32位的硬件平台决定了虚拟地址空间的地址为 0 到 232 -1,即 0x00000000 ~ 0xFFFFFFFF。4GB虚拟空间大小。原创 2017-05-10 21:28:21 · 312 阅读 · 0 评论 -
程序员的自我修养——2、编译和链接
IDE一般把编译和链接合并到一起,称为构建(build)。4个步骤:预处理(Prepressing)编译(Compilation)汇编(Assembly)链接(Linking)1、预处理$ gcc -E hello.c -o hello.i-E表示只进行预处理。主要处理规则如下:将所有的 #define 删除,并且展开原创 2017-03-02 20:25:25 · 295 阅读 · 0 评论 -
程序员的自我修养——1、简介
一、简介计算机的核心:中央处理器CPU、内存、I/O控制芯片计算机软件体系结构:Applications: Web Browser Video Player Word Processor Email Client Image Viewer ...Development Tools:C/C++ CompilerA原创 2017-02-06 19:09:03 · 400 阅读 · 0 评论 -
APUE——Chapter:线程控制
线程限制,可通过sysconf函数查询。原创 2016-12-05 21:23:16 · 340 阅读 · 0 评论 -
AUPE——Chapter 11:线程
一个进程中的所有线程都可以访问该进程的组成部件。线程包含了表示进程执行环境必需的信息,其中包括进程中标识线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序全局内存和堆内存、栈以及文件描述符。进程ID在整个系统中是唯一的, 线程ID只在它所属的进程环境中有效。原创 2016-11-26 15:35:14 · 347 阅读 · 0 评论 -
APUE——Chapter 10:信号
信号是软件中断。信号提供了一种处理异步事件的方法。在头文件< signal.h >中,信号名都被定义为正整数常量。 (信号编号)不存在编号为 0 的信号。信号处理: (1)忽略此信号。(有两种信号不能被忽略:SIGKILL、SIGSTOP)。 (2)捕捉信号。(不能捕捉 SIGKILL 和 SIGSTOP 信号)。 (3)执行系统的默认动作。终止+core。大多数Unix系统调试程序都使原创 2016-11-11 11:06:23 · 407 阅读 · 0 评论 -
编程之美——CPU占用率
写一个程序,让用户决定Windows任务管理器的CPU占用率。原创 2016-09-15 15:39:41 · 633 阅读 · 0 评论 -
APUE——Chapter 7、8:进程环境和进程控制
当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址。启动例程从内核取得命令行参数和环境变量值,然后为按上诉方式调用main函数做好安排。原创 2016-10-12 15:38:06 · 438 阅读 · 0 评论 -
如何有效阅读一本书?
阅读原创 2018-02-22 10:13:48 · 341 阅读 · 0 评论