- 博客(11)
- 收藏
- 关注
原创 字节序
字节序数据存储有两种方式:大端字节序和小端字节序网络序采用大端,本地存储采用小端大端字节序:数据的高位在地址的低位,从左到右(符合人读数的习惯)小端字节序:数据的高位在地址的高位,从右向左#include <endian.h>(无符号)64字节主机转网络:htobe64(uint64_t data)(无符号)64字节网络转主机:be64toh(uint6...
2020-03-11 16:37:33 257
原创 __thread
__thread__thread修饰的变量,在每个线程中都有一份独立实体,每个线程互不干扰,可以修饰全局性且值可能改变的变量#include <iostream>#include <pthread.h>#include <unistd.h>using namespace std;// static __thread int i = 1; // 修饰s...
2020-03-06 12:05:16 314
原创 boost::function/bind
boost::function/bindboost::function头文件:<boost/function.hpp>boost::function是一个函数模板,可以代替具有相同返回类型,相同参数和相同参数个数的不同函数,和函数指针有些类似,用于封装函数,定义之后可以多次调用// 简单的例子typedef boost::function<int(int ,int)&g...
2020-03-05 10:44:35 167
原创 函数指针
函数指针函数指针指向函数的地址函数指针的定义:函数返回值类型 (* 指针指针变量名) (函数参数列表)# 定义一个指向一个返回值为int,参数为(int,int)的函数指针pint (*p)(int, int)int Max(int a, int b) { return a > b ? a : b;}int main() { int (*p)(int, int); //...
2020-03-04 22:02:19 150
原创 kali 设置中文字体
kali设置中文字体# 安装中文字体sudo apt-get install ttf-wqy-zenhei# 设置系统配置sudo dpkg-reconfigure locales重启系统即可…
2020-03-02 23:09:07 2278 1
原创 muduo学习笔记 - 第五章 高效的多线程日志
第五章 高效的多线程日志日志有两种意思:诊断日志交易日志本章讲的是前一种日志,文本的供人阅读的日志,通常用于故障诊断和追踪,也可用于性能分析。日志通常要记录:收到的每条消息的id(关键字段,长度,hash等)收到的每条外部消息的全文发出每条消息的全文,每条消息都有全局唯一的id关键部分状态的变更,等等5.1 功能需求日志库大...
2020-03-02 19:07:00 173
原创 muduo学习笔记 - 第4章 C++多线程系统编程精要
第4章 C++多线程系统编程精要Pthreads只保证统一进程之内,同一时刻的各个线程的id不同,不能保证同一进程先后多个进程具有不同的id,更不要说一台机器上多个进程之间的id唯一性,pthread_t不适合用做程序对线程的标识符。推荐使用**gettid()**的返回值作为线程id返回值类型pid_t,通常是小整数,便于在日志输出可以在/proc文件系统中找到对应项,/pro...
2020-03-01 20:33:42 227
原创 muduo学习笔记 - 第3章 多线程服务器的适合场合与常用编程模型
第3章 多线程服务器的适合场合与常用编程模型3.1 基本概念同步和异步针对程序和内核的交互同步:用户进程触发IO操作,等待或轮询的查看IO是否就绪异步:用户进程触发IO操作,继续做自己的事情,当IO操作完成通知进程阻塞和非阻塞针对进程在访问数据,更具IO的状态采取不同的方式阻塞:数据的读写会一直等待非阻塞:数据的读写会立即返回状态值IO模型同步阻...
2020-03-01 19:42:36 158
原创 muduo学习笔记 - 第2章 线程同步精要
第2章 线程同步精要2.1 互斥器 (mutex)互斥器保护了临界区,任何时刻最多只能有一个线程在mutex划出的临界区内活动推荐使用原则:用RAII手法封装mutex的创建、销毁、加锁、解锁四个操作只是用非递归的mutex (不可重入的mutex)不手动调用lock()和unlock()函数,交给栈上的Guard对象的构造和析构负责使用Guard对象时考虑调用栈上持有的锁,防止加...
2020-03-01 19:41:36 363 1
原创 muduo学习笔记 - 第1章 C++多线程系统编程
第1章 C++多线程系统编程1.1 智能指针C++中动态内存管理是用new和delete完成。动态内存管理经常出现两种问题:忘记释放内存造成内存泄露还有指针引用的内存的情况下释放内存,造成引用非法内存指针智能指针负责自动释放所指向的对象1.2 构造函数如何判断构造函数的执行结果?构造没有返回值不能通过返回值判断状态量,抛出异常?条件判断,例如构造函数的功能,如果涉及内...
2020-03-01 19:38:47 232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人