陈文科的博客

  • Home

  • About

  • Tags

  • Archives

并发控制(数据库)

Posted on 2020-04-16
概述(缘起)​ 通常,在我们处理应用程序并发编程问题时,我们往往会使用操作系统提供的各种锁API(互斥锁,读写锁,自旋锁,信号量,条件变量,屏障)等,保证对于共享资源的互斥访问,从而避免出现一些微妙的,出乎意料的结果。在数据库中,为了简化应用程序对并发的处理,数据库以不同程度的隔离性保证,封装了不同的并发控制策略提供给应用开发人员使用。一般来说,隔离性的强弱级别是和性能权衡的结果,隔离性越 ...
Read more »

Goroutine 调度

Posted on 2019-12-20
好的设计一定是在精通的基础上,而不是从无知中产生的。 — 《设计原本》Frederick P. Brooks 协程协程是什么 我们说协程是用户态的线程。这样就牵涉到,线程是什么,进程是什么,以及它们和协程的区别。 进程:由内核来调度和维护,因为进程有独立的虚拟地址空间,想要和其他进程(逻辑流)通信,控制流必须使用某种显式的进程间通信(interprocess communication ...
Read more »

Golang编译链接的原理和手册: go build

Posted on 2019-11-05
一切都应该尽可能的简单,但也不能简单过了头。 ​ —— 阿尔伯特·爱因斯坦 ​ ​ 该文档主要包含两个部分: Golang编译链接的原理及go build手册。前者的目的是简单概述编译和链接的过程中,编译器和链接器依次都做了些什么事情,从而帮助理解和选用后面手册中的各个选项。 Golang 编译链接的原理​ 通常情况下,我们不需要了解编译链接的过程, ...
Read more »

Unix domain 套接字编程

Posted on 2019-09-15
​ Unix domain套接字和TCP和UDP不同,主要用于单机间进程通信,可以看做是IPC中的一种。Unix套接字主要分成两类:字节流套接字(类似于TCP), 数据报套接字(类似于UDP)。 ​ 使用Unix domain套接字主要有以下三个理由: 在同一个主机上进程间通信时,Unix domain套接字比TCP或UDP更加高效,而且所使用的接口和编程方式和TCP或 ...
Read more »

「转」300行代码实现Linux文件系统

Posted on 2019-08-26
缘起从微信公众号上转载一篇有趣的文章: 300来行代码带你实现一个能跑的最小Linux文件系统。 通过这边文章,可以实例演练一下上一篇编译加载Linux内核模块, 进而加深对Linux内核模块的理解。 代码由于微信公众号上代码排版有些奇特,文章中的代码整理如下(CentOS下可编译运行): 1234567891011121314151617181920212223// tinyfs.h#defi ...
Read more »

编译加载Linux内核模块

Posted on 2019-08-25
工具 depmod: 生成描述模块之间的依赖关系,写入到相关文件(可以通过man depmod查看详情)。 insmod: 加载*.ko的内核模块到内核中,类似于用户空间使用的动态库加载程序。注意,如果加载的模块有依赖模块,需要先insmod <依赖模块>。 rmmod 卸载模块。 lsmod: 查看系统中已经加载了的模块。 modinfo: 查看*.ko 内核模块的信息。 modpr ...
Read more »

IPIP协议实例分析《三》

Posted on 2019-08-18
​ 承接上两篇博客,假定我们已经建立好了机器A和机器B之间的IPIP隧道,也已经为机器A端的隧道,机器B端的隧道分配好了IP。 机器A通过隧道访问外网(qq.com)​ 现在,我们如果在机器A上通过隧道访问qq.com(180.163.26.39)会怎么样(假设机器B可以访问Internet)? 根据上两篇的分析,我们目前很容易知道,从隧道tun_a出去,会选择tun ...
Read more »

IPIP协议实例分析《二》

Posted on 2019-08-17
​ 承接上一篇博客,假定我们已经建立好了机器A和机器B之间的IPIP隧道,也已经为机器A端的隧道,机器B端的隧道分配好了IP。 ​ 现在,我们如果在机器A上访问机器B的eth0会怎样?根据路由表,当然是直接通过eth0出去,然后得到应答,应答数据包从eth0进来了。但是如果我们指定从tun_a出去,会怎么样? 机器A上通过IPIP隧道访问机器B的eth012[root@ ...
Read more »

IPIP协议实例分析《一》

Posted on 2019-08-16
​ IPIP见文生义,即IP报文外面又封装了一层IP报文。内层的IP报文为原报文,外层报文的源IP和目的IP,即是隧道两端的IP。也就是说,应用想要通过隧道在源IP报文外再封装一层IP报文,从而使得原报文能够通过隧道路由到对端。对端的IPIP隧道模块,把原来的外层IP拆解掉,从而还原出原来的IP报文。 ​ 也就是说,IPIP主要做的就是封包,解包的过程。通过IPIP封解 ...
Read more »

Raft协议解读

Posted on 2019-07-15
Raft协议是目前使用非常广泛的分布式共识协议, 它有和paxos协议相当的性能和容错能力,但是相对而言却更简单清晰,易于工程实现。Raft协议把协议主要分成Leader选举,日志复制,安全性约束等模块,以便于理解和实现。 Raft协议论文 In Search of an Understandable Consensus Algorithm (Extended Version) ​(哪里有什么捷径 ...
Read more »
12…6
陈文科

陈文科

饮冰十年,难凉热血。

55 posts
26 tags
Github 知乎
Links
  • 我以前的博客
  • 田洋的博客
  • 李浩然的博客
  • BIGBALLON
  • jcf94
  • 开心就好
© 2021 陈文科
Powered by Hexo v3.7.1
|
Theme — NexT.Muse v6.3.0
陕公网安备 61011202000076