YaPiBlog


You look look you one day day de

重学C++系列(三)容器

数组 表示一组相同类型的数据。长度从0开始,可以访问指定下标的数据。 不可以超过数组长度。 定义例: int name[10] # 可以用{}进行初始化 # {} 不仅仅可以用在数组赋值,也可以用在其他类型赋值 int name[] = {} # 可以省略 = 号 数组下标原则,从0开始,使用非对称区间。 此区间是一个非对称区间左闭右开 左闭(下界),右开(上界) ...

重学C++系列(二)预处理器

C++ 预处理器 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。 C++ 还支持很多预处理指令,比如 #include、#define、#if、#else、#line 等 #define 预处理 define 预处理指令用于创建符号常量。该符号常量通常称为宏。 #define macro...

重学C++系列(一)类型、运算符、表达式

定义 基础 C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。 C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本 标识符 C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。一个标识符以字母 ...

云计算-主机虚拟化

CentOS8 主机虚拟化步骤 查看当前主机是否开启硬件虚拟化 grep --color --perl 'vmx|svm' /proc/cpuinfo 安装虚拟化主机相关主键 yum groupinstall "Virtualization Host" 查看libvirtd服务是否运行 # 查看启动状态 systemct...

go随笔-netpool

基础网络知识 对于底层应用连接,每一个连接都会有一个send buffer和一个recv buffer 在linux系统中可以使用以下命令查看相应连接 netstat -anp | grep 80

go随笔-性能调优

内存分配 在go语言中,可能会发生一次请求大量分配内存,当内存空间不足时,会发生系统事故。所以在代码提交阶段 需要对相应业务代码进行内存分配分析。对大量的对象分配代码进行调整。 Zero garbage 一般是利用sync.Pool来将堆分配完全消灭的手段,在一些http router框架中会提到这个概念 比如说gin 对代码进行相应的逃逸分析 go build -gcflags="m...

go随笔-框架原理


go随笔-go抢占式调度

抢占式调度触发 GC 时STW时需要抢占 后台线程(sysmon)判断当前G是否执行时间过长,时间过长就需要抢占 老版本抢占标记 调用函数proc.go -> preemptone 将正在P上执行的M的curg的标志位置为true 后续goroutine执行的时候判断相关字段 func preemptone(_p *p) bool { mp := _p.m....

go随笔-并发编程

Go语言并发编程库 sync.Once 初始化方法必须且只能被调用一次 Do返回后,初始化一定已经执行完成 // Once is an object that will perform exactly one action. type Once struct { // 表明动作是否被执行 done uint32 m Mutex } func (o *Once) Do(f ...

go随笔-垃圾回收

垃圾回收 垃圾分类 语义垃圾(semantic garbage)—有的被称作内存泄露,语义垃圾指的是从语法上可达(可以通过局部、全局变量引用 得到)的对象,但从语义上来讲他们是垃圾,垃圾回收器对此 无能为力。 语法垃圾(syntactic garbage) 语法垃圾是讲那些从语法上无法到达的对象,这些才是垃圾收集器主要的收集目标。 常见垃圾收集算法 引用计数(Reference C...