随笔分类 -  C&C++

摘要:一、线程池实现原理 1. 管理者线程 (1)计算线程不够用 创建线程 (2) 空闲线程太多 a. 销毁 更新要销毁的线程个数 通过条件变量完成的 b. 如果空闲太多,任务不够 线程阻塞在该条件变量上 c. 发送信号 pthread_cond_signal 2. 线程池中的线程 (1)从任务队列中取数 阅读全文
posted @ 2019-05-25 18:35 pointerC++ 阅读(1019) 评论(0) 推荐(0) 编辑
摘要:一、HTML 1. HTML简介 (1)HTML简介 HTML,Hyper Texture Markup Language,超文本标记语言。 在计算机中以.html、.htm作为扩展名。 可以被浏览器访问, 就是经常见到的网页。 (2)HTML特点 语法非常简洁、比较松散,以相应的英语单词关键字进行 阅读全文
posted @ 2019-05-24 12:19 pointerC++ 阅读(2907) 评论(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++ 阅读(1322) 评论(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) 编辑
摘要:一、整体大纲 二、共享库的制作 1. 命名规则: lib + 名字 + .so 2. 制作步骤: 1) 生成与位置无关的代码 (生成与位置无关的.o) 2) 将.o打包成共享库(动态库) 3. 发布和使用共享库: 4. 解决程序执行时动态库无法被加载的问题: 1)放到系统的库目录 中 -- 不允许使 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(951) 评论(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) 编辑
摘要:一、整体大纲 二、makefile的编写 一个规则 两个函数 三个变量 1. 一个规则 三要素:目标, 依赖, 命令 目标:依赖 命令: 第一条规则是用来生成终极目标的规则 a. 如果规则中的依赖不存在, 向下寻找其他的规则 b. 更新机制:比较的是目标文件和依赖文件的时间 2. 两个函数 1) 查 阅读全文
posted @ 2019-05-14 12:20 pointerC++ 阅读(805) 评论(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) 编辑
摘要:一、整体大纲 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) 编辑
摘要:一、整体大纲 二、基础知识 1. 进程相关概念 1)程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁....) 进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃(运行起来的)的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进 阅读全文
posted @ 2019-05-14 12:19 pointerC++ 阅读(1431) 评论(0) 推荐(0) 编辑
摘要:一、整体大纲 二、相关函数 1. getcwd 函数作用:获取当前目录 头文件 函数原型 参数说明: buf传出参数,路径 size缓冲区大小 返回值 成功:返回路径的指针 失败:返回NULL 2. chdir 函数作用:改变工作路径 头文件 #include <unistd.h> 函数原型 函数参 阅读全文
posted @ 2019-05-14 12:19 pointerC++ 阅读(619) 评论(0) 推荐(0) 编辑
摘要:一、整体大纲 二、vim编辑器的使用 vi -- vim vim是从vi发展过来的一款文本编辑器 vi a.txt 前提: 安装了vim软件 工作模式: 1. 命令模式 -- 打开文件之后, 默认进入命令模式 2. 编辑模式 -- 需要输入一些命令, 切换到编辑模式 3. 末行模式 -- 在末行模式 阅读全文
posted @ 2019-05-14 12:19 pointerC++ 阅读(452) 评论(0) 推荐(0) 编辑
摘要:一、整体大纲 二、gcc编译的四个阶段 阅读全文
posted @ 2019-05-14 12:19 pointerC++ 阅读(303) 评论(0) 推荐(0) 编辑
摘要:一、整体大纲 二、静态库的制作 1)命名规则 lib + 库的名字 + .a 例如:libmytest.a2)制作步骤: 1). 生成对应的.o文件 -- .c --> .o -c 2). 将生成的.o文件打包 ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o3)发布和 阅读全文
posted @ 2019-05-14 12:19 pointerC++ 阅读(543) 评论(0) 推荐(0) 编辑
摘要:一、整体大纲 二、线程同步 1. 同步概念 所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是指在两个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一 致,或者按需要部分保持一致;文件同步,是指让两个或多个文件夹里的文件保持一致等等 阅读全文
posted @ 2019-05-14 12:18 pointerC++ 阅读(1684) 评论(0) 推荐(0) 编辑
摘要:一、协议的概念 1. 什么是协议 从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。 假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方; 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK; 第三次,传输文件内容。同样,接收方接 阅读全文
posted @ 2019-05-14 12:18 pointerC++ 阅读(1029) 评论(0) 推荐(0) 编辑
摘要:整体大纲 一、套接字概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写 阅读全文
posted @ 2019-05-14 12:18 pointerC++ 阅读(852) 评论(0) 推荐(0) 编辑
摘要:高并发服务器 一、多进程并发服务器 1. 实现示意图 2. 使用多进程并发服务器时要考虑以下几点: 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符) 系统内创建进程个数(与内存大小相关) 进程创建过多是否降低整体服务性能(进程调度) 3. 使用多进程的方式, 解决服 阅读全文
posted @ 2019-05-14 12:18 pointerC++ 阅读(5642) 评论(0) 推荐(2) 编辑
摘要:一、整体大纲 二、信号详解 1. 信号的概念 信号在我们的生活中随处可见, 如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪......他们都有共性: 1) 简单 2)不能携带大量信息 3)满足某个特设条件才发送。 信号是信息的载体,Linux/UNIX 环境下,古老、经典的通信方 阅读全文
posted @ 2019-05-14 12:17 pointerC++ 阅读(2453) 评论(0) 推荐(0) 编辑