自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

转载 https协议

转载 https://blog.51cto.com/11883699/2160032

2019-08-05 14:45:13 108

原创 zab协议

一.选举过程实例有三种状态,LOOKING、LEADING、FLOWING,当节点新加入到集群是LOOKING状态,如果有LEADING状态的leader发送消息,则进入FLOWING状态,并将leader的发送的zxid保存到本地。如果集群没有leader,则发送自己的sid、zxid给其他机器,其他实例收到后与本地的zxid进行比较,若自己的大则不会投票给对方,并发起选举自己的投票信息。若...

2019-08-05 09:26:38 119

原创 设计模式(四)

mediator pattern一.文档https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/mediator.html二.个人理解mediator pattern模式,翻译为中介者模式。在软件开发中,项目中可能存在很多个类,而中介者模式可以避免多个类之间的直接交互,交互交给中介来做,降低了对象之间的...

2019-08-01 15:54:15 123

原创 设计模式(三)

7.facade pattern一.文档https://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/facade.html二.个人理解facade模式,翻译为外观模式、门面模式,核心思想是屏蔽客户端对复杂系统的认识,通过facade将各个子系统进行整合,对外暴露简单的接口。应用场景:复杂系统的简单化三....

2019-08-01 15:53:36 142

原创 设计模式(二)

四.prototype pattern一.文档https://www.jianshu.com/p/42266549e6f9二.个人理解原型模式,其实是通过原型来克隆出来相同的、参数一模一样对象的一种设计模式。例如一个图片类,用户调用其画画的功能,画出了复杂的画像,此时希望对该对象进行复制使用,此时可以通过clone的方法,将此对象进行完整克隆,而不需要用户重新再画一遍。注意此时克隆出来的...

2019-08-01 15:52:55 73

原创 设计模式(一)

一.builder pattern一.文档https://github.com/tmrts/go-patterns/blob/master/creational/builder.mdhttps://golangvedu.wordpress.com/2017/02/09/golang-builder-pattern-creational/二.个人理解builder模式,翻译为建造模式,核心...

2019-08-01 15:51:52 113

原创 golang不阻塞写协程

``golangpackage mainimport (“fmt”“time”“errors”“sync”“container/list”)type Itask interface {Execute()EchoID() int}type TestTask struct {ID int}func (t *TestTask) Execute() {fmt.Printf...

2019-08-01 11:18:47 368

原创 mongodb

1.可以使用的MongoDB调优工具 mongodb compass、mongostat、mongotop,可以通过后台设置慢查询阈值,过滤出超过阈值的操作进行分析;通过查询表达式的explain查看执行效率,注意返回数量、stage字段(查询计划,是否命中索引);mongodb应该不会很耗cpu,如果cpu高很可能是没有命中索引。2.mongodb是一个高性能、开源、结构松散的分布式、Nosq...

2019-07-29 16:32:17 106

原创 golang总结

1.golang默认采用值传递,如果希望修改值可以通过指针、引用进行传递例如func(&arg) 注意golang中没有c++中引用参数的函数声明,需要用指针golang中的slice、map、interface、channel类型默认使用引用传递2.数组声明 可以使用 var arr2 [10]int;可以使用var arr1 = new([5]int);arr2是[5]int类型,...

2019-07-25 13:53:08 227

原创 算法常识

1.链表1.链表反转 可以使用3个指针,逐步遍历然后反转链表;可以使用栈,后入先出重新组织链表2.链表是否有环 可以使用map、hash等key唯一的方便查找的数据结构,遍历链表,发现重复节点即为有环;可以使用快慢指针,如果有环快指针一定会赶上慢指针3.有环链表的入口 可以使用Map、hash方法,查到重复节点就是环的入口交点;可以使用快慢指针,保证快指针每次移动2步,慢指针移动1步,...

2019-07-18 20:06:04 86

原创 golang协程池

package mainimport ( "fmt" "sync")type ITask interface { Execute()}type TaskForTest struct { ID int}func (t *TaskForTest) Execute() { fmt.Printf("execute task id[%d]", t...

2019-07-16 09:14:36 107

原创 gcc整理

1.-Wall 告警选项,可以输出告警信息 例如printf("%f\n", 4) 会输出double format, different可以捕捉到c编程中最常发生的错误可以对部分内容告警,而不使用all 使用-Wcomment 对嵌套注释告警 -Wformat 对格式化误用的告警 -Wunused 没有使用到的变量告警 等等其他2.gcc -Wall -c main.c 编译m...

2019-07-15 17:42:43 74

原创 c++ primer读后记

一.语言基础1.struct与class的关键字都可以有成员变量、成员函数、继承、多态机制,区别就在于访问权限的不同,struct默认访问权限为public、class为private,继承上struct使用private继承,class使用public继承。2.继承、class的内存布局 https://www.cnblogs.com/longcnblogs/archive/2017/10/...

2019-07-15 11:10:49 115

原创 数据结构读后记

一.概念1.数据结构分为顺序存储(数组)、链式存储(链表)、散列存储(hash)、索引存储(index,例如数据库索引)2.时间复杂度有o©、o(n)、o(n平方)、o(n立方)、o(logN)对数、o(N*logN)线性对数、o(2的N次方)指数级二.线性表线性表可以随机存储、存储密度高、物理存储的逻辑存储映射简单方便编程,但同时需要连续的存储空间系统可能并不满足,扩容不方便,插入删除数...

2019-07-14 11:43:40 91

原创 程序员自我修养读后记

一.基础知识1.cpu的速度非常高,但是外设的速度比较低,通过总线来进行传输,由于速率之间不匹配因此有了南桥、北桥,北桥连接一些高速外设比如内存,南桥连接一些低频外设打印机、键盘等等,而cpu已倍频的方式运行。2.在操作系统中多任务需要对进程进行内存隔离,因此有了增加了中间层虚拟内存,最开始使用的是分段的方式,一整段进行映射虽然做了隔离但是利用率较低,因此采用了更小的粒度,从而有了分页机制。每...

2019-07-11 14:49:58 95

原创 tcp/ip详解卷一读后记

一.概述1.tcp/ip是网络层的协议族,起源于美国60年代的研究项目,将网路进行了分层,共四层链路层(mac、交换机、网桥)、网络层(ip层、路由器;包括ip、icmp协议)、运输层(tcp/udp)、应用层2.网络的ip按照类别+网络号+主机号 总共32位(ipv4)分成了A、B、C、D、E五类网址;这几种类型也不够使用了,因此划分了子网,主机没有办法区分子网号、主机号,因此增加了子网掩码...

2019-07-10 16:05:51 328

原创 c专家编程读后记

1.宏定义最好只用于命名常量,应该大写2.int a = 10; int &p = a 其中&是引用的意思,其实只是个别名,不分配空间3.声明可以有多次,只是声明类型后使用这个类型;定义只能有一次4.总线错误一般都是由于内存未对齐引起的,段错误一般是由于对非法地址访问和操作导致MMU出错,例如解引用一个非法值的指针、解引用一个空指针、在未得到权限时进行访问、用完了堆或者栈空...

2019-07-10 14:19:40 69

原创 c和指针读后记

1.const声明的变量为常量变量,意为readonly 告诉编译器此变量不可修改,若修改则导致编译失败2.函数声明又叫函数原型 例如 int function(); 只声明,不实现3.include、define为预处理指令,gcc -E 可以只进行预编译,可以看到define为文本替换4.数组名传递、指针传递可以达到引用传递的结果,但是事实上c语言的函数参数所有都为传值。5.字符...

2019-07-09 16:40:08 87

原创 性能之巅读后记

1.dtrace提供动态追踪技术2.mpstat -P -ALL 1 以1s间隔输出所有cpu的当前状态,包括用户态使用时间、内核态使用时间、iowait比例、idle、irq硬件中断耗时、soft软件中断耗时3.vmstata.查看系统内存状态procs/r 运行队列的进程数+等待运行的进程数 procs/b 等待io的进程数量memory/swpd 交换区 memory/fr...

2019-07-09 11:48:50 17263

转载 常见面试题

https://www.jianshu.com/p/1b4b3c738d8c select/poll/epoll

2019-07-09 09:06:20 58

原创 zk学习

1.zk中有ephemeral临时节点、persistent持久化节点、ephemeral顺序节点、persistent顺序节点 四种节点2.ephemeral临时节点的删除由两种方式触发:a.主动删除 b.session过期3.zk采用的是简化的paxos协议,使用zab协议(zookeeper原子广播协议)。在仲裁模式(quorum)下,新节点加入、重启时候为LOOKING状态,若没有l...

2019-07-08 20:06:27 158

原创 虚拟文件系统、块io层

对用户态进程提供统一的系统调用入口,一切皆是文件,对底层的抽象,屏蔽多个文件系统之间的差异。用户调用write—>sys_write—>文件系统的写方法。虚拟文件系统根据打开的文件描述符,寻找对应文件的回调入口。每个文件系统都有一个superblock,这个块中记录着操作函数列表。块设备为可以随机读写固定大小数据块,例如磁盘、光驱字符设备为串行处理字符流,例如键盘...

2019-07-08 19:38:28 180

原创 内存管理

1.内核把物理页作为内存管理的基本单位,从虚拟内存看页是最小单位;内核使用struct_page管理物理页,struct_page中有对应的虚拟页地址,引用计数,是否被锁定2.内存区域被分为ZONE_DMA、ZONE_NORMAL(16-896MB,固定映射内核地址)、ZONE_HIGHMEM3.cpu一次读一个cacheline,因此需要内存对齐 防止多次读cache、mem...

2019-07-08 19:30:13 91

原创 内核同步机制

1.通过锁机制来实现同步,有两种不同的锁,一种是锁被持有时选择忙等,一种是选择睡眠等待。2.如何避免死锁a.按顺序加锁b.不要重复加锁3.自旋锁 spin lock 忙等锁,乐观;适合持有时间非常短,这是因为要考虑进程上下文切换的开销。4.信号量 视图获取一个锁时候,如果不可用则进入睡眠队列;struct semaphore {atomic_t count; int sleepe...

2019-07-08 17:36:41 84

原创 硬件中断、上下部

1.硬件中断是由硬件触发,通过电信号通知到cpu,cpu根据中断号寻找对应的中断服务例程进行处理。中断时需要关闭中断线上的相同中断,因此为了快速响应,需要将中断处理的过程分成上半部和下半部;需要积极快速响应的、不可以并发处理的、涉及到硬件的(例如网卡数据拷贝到内存的过程)放在上半部,可以推后处理的就放到下半部去执行中断处理程序有自己的栈,在处理过程中需要关闭中断,因此同一类型的中断是串行处理的...

2019-07-08 17:11:45 143

原创 系统调用

1.系统调用是除了陷入、异常外内核唯一的入口2.进程调用clib库,clib库对系统调用进行封装,通过系统调用号来实现系统调用。进程通过int80指令,模拟硬件硬件中断,传递系统调用号到eax寄存器,中断服务程序通过中断向量表发现此为系统调用,进入系统调用流程,根据eax寄存器的值、结合sys_call_table找到对应的系统调用。3.注意系统调用是可能被中断的,需要保证是可重入的。...

2019-07-08 16:25:56 81

原创 进程调度

linux对不同的进程使用不同的调度器类1.实时进程使用sched_rr、sched_fifo、sched_deadline进行调度,优先级比普通进程优先级高。sched_rr:带时间片轮转sched_fifo:不带时间片,一直运行到结束2.普通进程普通进程使用sched_batch、sched_normal调度策略进行调度sched_normal使用cfs(https://www....

2019-07-08 14:05:56 126

原创 进程的基本概念

1.进程是什么,和线程的区别是什么?创建过程?首先,进程是一个正在执行的任务/程序,不仅仅包含代码段还有数据段、打开的文件、监听的信号、处理器状态、页表等等资源的一个集合,是保证任务能够执行的一个集合,是资源分配的最小单位。线程是在进程中活动的对象,也就是说一个进程至少有一个以上的线程,线程是执行的实体。在Linux中,不区分进程、线程,包括他们的调度,对内核来说都是进程。linux通过tas...

2019-07-08 11:22:42 158

转载 文件io路径

https://www.cnblogs.com/losing-1216/p/5073051.html 转载

2019-07-08 10:24:40 156

原创 defer介绍

一.defer 介绍定义:A defer statement pushes a function call onto a list. The list of saved calls is executed after the surrounding function returns. Defer is commonly used to simplify functions that perfo...

2019-07-08 09:28:42 237

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除