04 2024 档案
摘要:线程和进程 linux中,进程和线程都用task_struct结构体表示,只是进程和线程的区别在于task_struct中的mm和files等资源是否共享。 记录层面 task_struct中有两个字段记录的是编号 pid_t pid; /* process id */ task编号,唯一标识一个t
阅读全文
摘要:C++ type traits 学习 从integral_constant引入 integral_constant是一个模板类,用于表示一个常量值,它的定义如下: /// integral_constant template<typename _Tp, _Tp __v> struct integra
阅读全文
摘要:HTTP 1.1 特点 长连接,默认不关闭,可以被多个请求复用 并发连接,允许对一个域名的请求分配多个TCP连接,缓解了队首阻塞问题 增加了PUT、DELETE、OPTIONS、TRACE、CONNECT等方法 增加了缓存字段,允许缓存代理服务器缓存数据,if-modified-since、if-n
阅读全文
摘要:sql 语法 单行或多行书写,分号结尾 sql语句不区分大小写 DDL 数据定义语言 数据库操作 CREATE DATABASE [IF NOT EXISTS] name [DEFAULT CHARSET = name] DROP DATABASE name USE name SHOW DATABA
阅读全文
摘要:linux虚拟内存系统 进程的虚拟内存 用户区分段:代码段、数据段、堆、共享库、栈 内核区:存放进程信息,PID\程序计数器、打开文件列表、task和mm(描述虚拟内存)结构等 Linux加载进程时(exec系列系统调用)会为该地址空间每个段分配VMA,VMA数据结构(vm_area_struct)
阅读全文
摘要:协程杂记 协程是什么 协程是一种协作式多任务模型,不同于线程的抢占式多任务模型。协程是由程序员自己控制的,可以在任意时刻挂起或者恢复一个协程,更适合于用来实现彼此熟悉的程序组件。 在通常使用线程的情景中,负责处理不同任务的线程之间存在着数据竞争,使用加锁可以解决问题,但其实并不符合我们的本意。以生产
阅读全文
摘要:c++ 相关杂项 nullptr C语言中NULL定义为(void *)0,可以隐式转换为指针类型;但C++中NULL定义为0(强类型语言,void*不能转化为其他指针类型,因此修改了定义),可以隐式转换为整数类型和指针类型。为了解决函数重载时NULL的二义性,C++11中引入了nullptr关键字
阅读全文