项目总结
onj123
这个作者很懒,什么都没留下…
展开
-
关于并发与多线程处理与缓冲区
文章目录读与写读写多线程性能提升缓冲区代码读与写读read:只能监控一个句柄select:一次性监控多个句柄是否可读/可写/异常,超时退出。原理:所有句柄进入等待队列,只要有一个句柄的状态改变,立刻返回(进程从阻塞状态进入就绪),再遍历所有句柄,找到状态发生改变的句柄文件句柄有限:1024个文件句柄是最大值+1超时时间必须每次都初始化(否则,这个时间是剩余的时间)可以一次性不同类型的文件句柄,设备文件/socket/管道等等内部使用轮询来检查状态是否改变poll:同select原创 2020-08-28 16:23:16 · 971 阅读 · 0 评论 -
项目:优化
编译优化gcc优化编译:1. -Wall 是打开警告开关2. -O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化3. -g是生成调试信息代码优化1. 删除冗余代码/include2. namespace放在c文件而不是头文件3. 用引用传递而不是值传递4. 位操作 > 加减 > 乘除5. 内存拷贝memcpy6...原创 2020-03-28 23:43:04 · 94 阅读 · 0 评论 -
项目:异步
场合1. 耗时操作:CPU耗时运算/音视频解码/图片处理2. 并发:异步加载图片/配置文件/文件读写3. 本质:线程sync1. 急速求值:立即运算,使用std::launch::async,在一个新的线程中运行2. 惰性求值:get()获取返回值时才运算,使用std::launch::deferred,在同一个线程中运行实现#includestd::string str =...原创 2020-03-28 23:42:04 · 109 阅读 · 0 评论 -
项目:对象池/线程池
场合1. 对象频繁创建释放2. 构造函数或析构函数比较耗时3. 对象方法执行时间较短,远小于构造和析构时间4. 本质:空间换时间实现1. 定义模板类:使用Queue存储对象指针,定义创建和销毁对象的函数2. 定义具体对象类: a. 模板类作为对象成员 b. 重载new方法:如果Queue不为空,则出队返回指针;否则,创建对象 c. 重载delete方法:Queue入队 d....原创 2020-03-28 23:40:50 · 104 阅读 · 0 评论 -
项目:C++数据库mysql
安装1. mysql server 8.02. 初始化数据库:mysqld --initialize --console3. mysql服务 1. 安装服务:mysqld install mysql8.0 2. 启动服务:net start mysql8.04. 登录:mysql -uroot -p5. 重设密码:ALTER USER "root@localhost" IDENTIF...原创 2020-03-28 23:40:03 · 551 阅读 · 0 评论 -
项目:C/C++调试工具
1. 日志:glog a. github https://github.com/google/glog2. C/C++静态检查工具:cppcheck a. github https://github.com/danmar/cppcheck b. 安装: sudo apt-get install cppcheck c. 使用: 对指定目录进行检查:cppcheck --enable...原创 2020-03-03 22:00:38 · 534 阅读 · 0 评论 -
c++进程:通信
方式1. 传统的通信方式无名管道:父子进程,数据大小限制,半双工通信(不推荐)有名管道:半双工通信无名管道和有名管道是内核的一块缓冲区,内核对管道进行了同步与互斥2. IPC通信消息队列:全双工共享内存:适用于大量数据共享信号量3. BSDsocket:适用本地IP(127.0.0.1),不同的进程用不同的端口号数据传输:一个进程需要将它的数据发送给另一个进程;资源共享:...原创 2020-01-19 17:46:15 · 831 阅读 · 0 评论 -
c++进程:创建
进程:1. 子进程复制父进程的用户空间(在创建子进程前的代码都会复制一份)2. 父子进程互不影响示例#include<unistd.h>int main(){pid_t pid;pid = fork(); // 执行fork()函数后,父进程的pid为子进程的ID端口号,子进程的pid是0if(pid == -1)// 创建失败{perror(“fork erro...原创 2020-01-19 17:44:23 · 1438 阅读 · 0 评论 -
c++库:jsoncpp
安装https://github.com/open-source-parsers/jsoncpp1. sudo apt-get -y install libjsoncpp-dev scons2. tar zxvf jsoncpp-0.10.7.tar.gz3. cd jsoncpp-0.10.74. scons platform=linux-gcc5. sudo cp ./libs/l...原创 2020-01-18 22:50:57 · 111 阅读 · 0 评论 -
c++库:日志-spdlog
一个开源的、快速的、仅有头文件的C++11 日志库github链接: https://github.com/gabime/spdlog安装git clone https://github.com/gabime/spdlog.gitcd spdlog && mkdir build && cd buildcmake … && make -j设...原创 2020-01-18 22:49:40 · 306 阅读 · 0 评论 -
c++库:日志-glog
google 的一个 c++ 开源日志系统安装git clone https://github.com/google/glog.gitmkdir build && cd buildcmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC …make && sudo make install开启或关闭...原创 2020-01-18 22:48:23 · 297 阅读 · 0 评论 -
c++线程:同步
多线程共享进程资源,并发执行。对于同一资源,当某个线程访问时,其它线程就不可以访问,只能等到该线程不再使用时才可以访问。同步: 临界资源访问的可控时序性(一个线程完另一个线程才可以操作)互斥: 对临界资源同一时间的唯一访问性(保护临界资源安全)方式1. 互斥锁:简单2. 读写锁:适用于读的次数大于写的次数3. 信号量:适用于同步4. 自旋锁:不推荐5. 条件变量:不推荐互斥锁...原创 2020-01-18 22:47:01 · 99 阅读 · 0 评论 -
c++线程:创建
线程:同一个程序,不同代码片段的并发运行;父子线程共享内存和变量线程创建#include #include <pthread.h>using namespace std;// 线程任务void* task(void* args) {cout << “hello world” << endl;pthread_join(pthread_self())...原创 2020-01-18 22:30:17 · 156 阅读 · 0 评论 -
c++库:jsoncpp
安装https://github.com/open-source-parsers/jsoncpp1. sudo apt-get -y install libjsoncpp-dev scons2. tar zxvf jsoncpp-0.10.7.tar.gz3. cd jsoncpp-0.10.74. scons platform=linux-gcc5. sudo cp ./libs/l...原创 2020-01-07 18:14:05 · 202 阅读 · 0 评论 -
c++库:libcurl
libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies和用户认证官网: https://curl.haxx.se/安装1. 下载:https://cu...原创 2020-01-07 18:12:57 · 801 阅读 · 0 评论 -
c++库:日志-glog
google 的一个 c++ 开源日志系统安装git clone https://github.com/google/glog.gitmkdir build && cd buildcmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC …make && sudo make install开启或关闭...原创 2020-01-07 18:11:29 · 528 阅读 · 0 评论 -
linux项目代码总结
github链接:https://github.com/lhgcs/linuxProjectDemo文件说明:可直接使用linux代码linuxProjectDemo├── data 数据库│ ├── entity 实体│ │ ├── MyDao.h 数据字段│ &nb...原创 2019-10-31 17:51:12 · 310 阅读 · 0 评论