摘要: 一、线程池实现原理 1. 管理者线程 (1)计算线程不够用 创建线程 (2) 空闲线程太多 a. 销毁 更新要销毁的线程个数 通过条件变量完成的 b. 如果空闲太多,任务不够 线程阻塞在该条件变量上 c. 发送信号 pthread_cond_signal 2. 线程池中的线程 (1)从任务队列中取数 阅读全文
posted @ 2019-05-25 18:35 pointerC++ 阅读(1013) 评论(0) 推荐(0) 编辑
摘要: 一、HTML 1. HTML简介 (1)HTML简介 HTML,Hyper Texture Markup Language,超文本标记语言。 在计算机中以.html、.htm作为扩展名。 可以被浏览器访问, 就是经常见到的网页。 (2)HTML特点 语法非常简洁、比较松散,以相应的英语单词关键字进行 阅读全文
posted @ 2019-05-24 12:19 pointerC++ 阅读(2904) 评论(0) 推荐(1) 编辑
摘要: 一、XML 1. minixml官网地址 http://www.msweet.org/projects.php/Mini-XML 其他解析xml开源库:tinyxml pugixml 1)包含头文件: mxml.h 2)编译的时候需要添加动态库: libmxml.so -lmxml /usr/loc 阅读全文
posted @ 2019-05-21 17:36 pointerC++ 阅读(1320) 评论(0) 推荐(0) 编辑
摘要: 一、事件处理框架(event_base) 1. event_base 使用 libevent 函数之前需要分配一个或者多个 event_base 结构体。每个event_base 结构体持有一个事件集合,可以检测以确定哪个事件是激活的。 相当于epoll红黑树的树根 抽象层, 完成对event_ba 阅读全文
posted @ 2019-05-16 11:34 pointerC++ 阅读(2381) 评论(0) 推荐(0) 编辑
摘要: 一、libevent是干什么的 1. 开源的库, 提高开发效率 封装了socket通信 封装了IO多路转接 2. 精简, 专注于网络, 性能高 3. 事件驱动 二、libevent库的安装 1. 官方网站: http://libevent.org 2. 源码包下载: 1.4.x -- 适合源码学习 阅读全文
posted @ 2019-05-15 22:39 pointerC++ 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 一、整体大纲 st_mode整体介绍: st_mode详细介绍: 二、 Linux文件操作相关函数 1. stat 作用:获得文件信息,也可以获取文件大小。 头文件 函数原型 参数说明: path文件名 buf传出参数,定义结构体struct stat sb; &sb 返回值 失败:返回-1,设置e 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 一、整体大纲 二、 系统IO函数1. 一些概念 文件描述符 PCB C库函的IO缓冲区 1) 文件描述符 int 类型 一个进程最多可打开多少文件 2) pcb 进程控制块 在其中有一个文件描述符表 -- 数组[1024] C库IO函数工作流程: pcb和文件描述符: 2. 虚拟地址空间 虚拟地址空 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 一、整体大纲 二、makefile的编写 一个规则 两个函数 三个变量 1. 一个规则 三要素:目标, 依赖, 命令 目标:依赖 命令: 第一条规则是用来生成终极目标的规则 a. 如果规则中的依赖不存在, 向下寻找其他的规则 b. 更新机制:比较的是目标文件和依赖文件的时间 2. 两个函数 1) 查 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(805) 评论(0) 推荐(0) 编辑
摘要: 一、整体大纲 二、gdb调试 1. 启动gdb start -- 只执行一步 n -- next s -- step(单步) -- 可以进入到函数体内部 c - continue -- 直接停在断点的位置 2. 查看代码 l -- list l 10(函数名) l filename:行号(函数名) 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(529) 评论(0) 推荐(1) 编辑
摘要: 一、整体大纲 二、共享库的制作 1. 命名规则: lib + 名字 + .so 2. 制作步骤: 1) 生成与位置无关的代码 (生成与位置无关的.o) 2) 将.o打包成共享库(动态库) 3. 发布和使用共享库: 4. 解决程序执行时动态库无法被加载的问题: 1)放到系统的库目录 中 -- 不允许使 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(951) 评论(0) 推荐(0) 编辑