自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 音视频知识索引

多媒体容器发展史视频容器格式和编码格式的区别。

2022-10-30 17:00:49 108 1

原创 go1.19正式版 发布了!

go1.19 is released!

2022-08-03 08:03:15 280

原创 raft协议的go实现

go-raft算法完整实现

2022-06-05 16:30:57 784

原创 go get 和 install命令

刚开始go get 会执行下载包,更新go.mod, 安装二进制三步,go1.16之后,go get命令的工作减少了第三步,将第三步放在go install来做。做了功能的区分。go get: 下载包 & 更新go.mod,不安装二进制go install :已下载的包,安装二进制go1.16 get install区别参考文章...

2022-05-17 14:55:21 596

原创 golang为什么用import,而不用include

一直异或golang为什么用import机制导入依赖包,而不用C/C++那种include机制导入依赖头文件。反复思考,超找,终于有些眉目,现在记录下来。import编译过程1、产生中间文件xx.a:按照包粒度进行编译,生成每个包的package.a,比如context.a是context包编译产生的中间文件。2、链接将第一步生成的package1.a、package2.a … 等程序中所有包的中间文件,链接起来,生成可执行文件,作为编译产出。include编译过程1、产生中间文件xx.a

2022-05-10 20:49:07 456

原创 go学习资料汇总

go语言101讲述很多go语言的细节,有些细节甚至go官网都没有提及过,偏向实际编码和纯原理之间的解释说明电子版链接go GC基本细节讲了gc中一些概念,没有深入讲解每一步的实现。可以作为go gc日常开发和人侃大山时候用,对基本名词和gc逻辑的扫盲贴。go gc的20个核心问题...

2022-04-29 21:37:28 311

原创 决策树-信息增益-C++实现

参考博文参考博文中delete 数组,没有置为NULL,会出现野指针

2021-12-12 21:32:30 1816

原创 MySQL锁

MySQL锁参考

2020-08-24 16:47:37 83

原创 读写锁 & 可重入锁

#读写锁是什么?读写锁就是分了两种情况,一种是读时的锁,一种是写时的锁,它允许多个线程同时读共享变量,但是只允许一个线程写共享变量,当写共享变量的时候也会阻塞读的操作。这样在读的时候就不会互斥,提高读的效率。#可重入锁是什么?可重入锁指的是在同一个线程内如果你的外层函数已经获得了锁,那么当你的内层函数也能获取锁,也就是通过一个线程再次进入同步代码块时可以获得自己已经获得的锁,而不可重入则反之。看下简单的示例 public void doSth(){ //外层函数 lock.loc

2020-08-02 10:09:48 724

原创 IO多路复用select poll epoll的底层原理和C++使用例子

综述首先要搞明白两个基本概念:I/O复用和(非)阻塞机制。I/O复用指的是允许计算机执行或者阻塞在一组数据流上,直到某个到达唤醒阻塞的进程,此时的I/O信道不仅仅是通过一个数据流,而是一组,所以是复用。阻塞和非阻塞:拿I/O为例子,如果是阻塞模型,那么程序一直会等到有数据来的时候才会继续向下执行,否则会一直等待数据的到来;如果是非阻塞模型,如果有数据,那么直接读取数据向下执行,没有数据也会继...

2020-03-22 20:24:37 631

原创 C++中new delete,new [] delete []原理浅谈

关键是new delete ,new [] delete []需要配套使用的原因,delete []怎么知道释放内存的长度浅谈 C++ 中的 new/delete 和 new[]/delete[]](https://www.cnblogs.com/hazir/p/new_and_delete.html)...

2020-02-28 17:14:32 158

原创 mac上zsh: command not found:${命令} 失败问题

重新安装了zsh后,输入很多以前能够用的alias命令缩写都不能用了,原因:原来的命令缩写写在~/.bash_profile文件中,这个使用的时bash;但是zsh是另外一个shell ,不是bash,所以需要在zsh的配置文件中再写一遍命令缩写,重写一遍很麻烦,可以简单的在zsh的配置文件 ~/.zshrc文件中source ~/.bash_profile即可。最后在终端中source ~./z......

2020-01-13 13:20:48 14726 2

原创 DNS基本原理浅谈

DNS基本原理浅谈@TOC欢迎使用Markdown编辑器dns看起来简单,但是要理解清除,并实际的描述清除,难能可贵的是有实际例子对照,私以为是不容易的事情,看到一个很好的介绍dns基本原理的博客:http://www.ruanyifeng.com/blog/2016/06/dns.html新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功...

2019-12-25 16:27:20 162

原创 Raft算法原理

Paxos协议/算法是分布式系统中比较重要的协议,它有多重要呢?<分布式系统的事务处理>:Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就是Paxos,其它的算法都是残次品。但是paxos很难实现,就出现了很多简化版本,最好的简化版本是raft。raft常常用在存储当中,作为HA的一种算法方式,最近看到一个非常好的关于raft算法原...

2019-10-28 09:35:27 151

原创 Linux中硬链接与软链接的区别

硬链接是增加了inode的引用计数,删除一个相当于删除一个引用计数,直到引用计数为零,才是真正删除了文件。软连接是创建了一个inode,inode的data block中存储的源文件的名称,源文件名称执行源文件的inode,删除源文件之后,新文件的datablock中的内容所存储的文件名已经不存在。经典的图文解释:https://www.ibm.com/developerworks/cn/li...

2019-10-16 21:48:17 156

原创 系统负载的就简单判断

cpu负载可以通过uptime 或者 w命令来判断。这里,第一项是当前时间,up 表示系统正在运行,5:53 是系统启动的总时间,最后是系统的负载load信息。若你想深入了解,这里是 uptime man 页中关于最后一项信息的说明:系统负载是处于可运行runnable或不可中断uninterruptable状态的进程的平均数。可运行状态的进程要么正在使用 CPU 要么在等待使用 CPU。 ...

2019-09-20 16:50:36 651

原创 spin lock自旋锁 & mutex互斥锁的区别

区别在于未获得锁后的动作:spin lock:持续等待,轮询访问是否能够获得锁,一直占用CPU;mutex:线程进入sleep状态,等待当前占用锁的线程退出后唤醒处于sleep状态的线程,sleep状态的线程不占用CPU。唤醒sleep状态的线程需要较多的cpu指令和资源,短时间的加锁,自旋消耗的cpu时间小于唤醒sleep状态线程消耗的CPU时间,使用spin lock较好。长时间的加锁,自旋...

2019-09-19 20:40:53 303

原创 Linux core文件的生成、大小、路径查看和设置

1.设置core文件大小列出所有资源的限制: ulimit -aulimit -a.png或者查看core file size: ulimit -ccore file size:unlimited:core文件的大小不受限制0:程序出错时不会产生core文件1024:代表1024k,core文件超出该大小就不能生成了设置core文件大小: ulimit -c fileSize注意...

2019-06-04 09:55:22 8863

原创 布隆过滤器(Bloom Filter)原理与应用

K-v存储中bloom filter能够实现快速查找一个元素是否在集合中。bloom filter返回false,证明一定该元素一定不在于该集合中;bloom filter返回true,证明该该元素可能存在该集合中,也有可能不存在,不过通过设计bloom filter一般情况下,bloom filter返回true,则该元素极大概率存在于该集合当中。最低错误概率公式:k=m/n*ln2,k:ha...

2019-05-24 09:40:17 302

原创 linux下rsync快速删除大文件

在Linux中,删除文件的文件较大时,rm和>都会将磁盘io打的很高,严重甚至会导致机器其它程序的io阻塞,因此删除大文件(100GB以上)时避免重io操作是重点,可以使用rsync命令来快速删除一个文件。使用方法:1、首先新建立一个空目录empty_dir2、将空目录的内容同步到非空目录rsync --delete-before -a -H -v --progress --stat...

2019-05-22 09:48:01 944

原创 SSD工作原理

要理解SSD的工作原因,主要理解其读、写过程即可,重要的的写放大的原理,详细的共包括垃圾回收机制、写放大、OP(预留空间)、WL(wear leveling,磨损平衡),其中写的粒度是page,垃圾回收的粒度是block,page:16KB,block一般几十MB,且SSD不能修改写page,只能写-》擦除-》写,所以导致了顺序写别随机写性能更好。但是若读写粒度、垃圾回收粒度一直的话,那么随机写和...

2019-04-29 09:53:10 1537

原创 查看Linux系统fd相关信息

fd:文件句柄,Linux里面所有操作最终都是对文件操作,对文件操作就必须有文件句柄,所以文件句柄资源限制常常是程序中的一个关键点。也常会出现某个进程打开的文件句柄泄露。https://blog.csdn.net/niedongzi/article/details/80581306...

2019-04-17 15:38:22 6095

原创 Linux下expect脚本语言中终端交互处理常用命令

expect是建立在tcl(参见:Tcl/Tk快速入门 )基础上的一个工具,它可以让一些需要交互的任务自动化地完成。相当于模拟了用户和命令行的交互操作。一个具体的场景:远程登陆服务器,并执行命令登录时输入密码需要交互,bash脚本无法完成,可以使用expect来完成。详细参考:https://www.cnblogs.com/autopenguin/p/5918717.html...

2019-04-10 10:26:56 244

原创 Linux find 命令参数解析

Linux 中经常使用find命令来查找文件或者目录,并对查找到的文件和目录做出一定的操作。其方式一般为:find 【目录】可以多个 【查找规则】支持正则 【查找后处理】详细见:http://blog.chinaunix.net/uid-24648486-id-2998767...

2019-03-31 12:45:48 498

原创 shell sed贪婪匹配

shell中sed 利用正则表达式匹配字符串时,默认使用贪婪模式,且只有贪婪模式,没有非贪婪模式。贪婪模式:匹配最长的字符串,开始尽量早、结束尽量晚http://blog.chinaunix.net/uid-10540984-id-2954393.html...

2019-03-20 16:10:02 2297

转载 Linux irqbalance、中断和进程绑定CPU

Linux irqbalance、中断和进程绑定CPUhttp://blog.huatai.me/2014/11/05/linux-irqbalance-irq-and-cpu-affinity/#

2019-02-15 19:59:00 1606

空空如也

空空如也

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

TA关注的人

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