Frank

Frank

【拖延版】书单2021&2022然后就到了2023

2022 2022都也只剩下5个月了。并一起,都要看,不要拖。 专业 System Design The big archive 兴趣 稀缺 置身事内 底层逻辑 --------------这是旧的2021的分割线,原Po 2021.5.30-------------- 2021 我实在是太懒了 需要逼自己一下 准备反奶自己一口 专业 The Go Programming System Design Interview Go语言高级编程 Clean Code 剑指offer Site Reliability Engineering Site Reliability Engineering Workbook Designing Data-Intensive Applications Algorithm 深入理解计算机系统 Go语言编程之旅 兴趣 艺术的故事
1 min read

序列化与反序列化

常见的序列化方式有: JDK(不支持跨语言)、JSON、XML、Hessian、Kryo(不支持跨语言)、Thrift、Protostuff、FST(不支持跨语言) 技术选型关键点: 协议是否支持跨平台,序列化的速度(时间开销,系统性能),序列化出来的大小(空间开销,减轻网络、磁盘压力)。 典型的序列化和反序列化过程往往需要如下组件: * IDL(Interface description language)文件:参与通讯的各方需要对通讯的内容需要做相关的约定(Specifications)。为了建立一个与语言和平台无关的约定,这个约定需要采用与具体开发语言、平台无关的语言来进行描述。这种语言被称为接口描述语言(IDL),采用IDL撰写的协议约定称之为IDL文件。 * IDL Compiler:IDL文件中约定的内容为了在各语言和平台可见,需要有一个编译器,将IDL文件转换成各语言对应的动态库。 * Stub/Skeleton Lib:负责序列化和反序列化的工作代码。Stub是一段部署在分布式系统客户端的代码,一方面接收应用层的参数,并对其序列化后通过底层协议栈
3 min read

[Linux]硬链接和软链接

本文非纯原创,是各文杂糅而来加部分自身实践,在此致谢各位作者! 正文 说到硬链接(Hard link)与软链接(Symbolic link),首先需要了解索引节点(Inode)。关于Inode请移步这里。 硬链接 由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针 ,指向文件索引节点的指针,系统并不为它重新分配inode。inode指向了物理硬盘的一个区块 ,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。每添加一个一个硬链接,文件的链接数就加1。 用ln命令来建立硬链接。 #用法 usage: ln [-Ffhinsv] source_file [target_file] ln [-Ffhinsv] source_file ... target_dir link source_file target_file #创建前 ➜ ~ ls -lrth tmp
8 min read

进程间通信 Inter-Process Communication

> 关于进程与线程,请移步进程与线程 [https://hanzhu.dev/processes-and-threads/]。 本文并非原创,而是拼接整理各作者博文,主要还是为了梳理学习,在此一并致谢并将references贴在文末。 正文 > linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。 前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内; 后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。 Linux则把两者继承了下来 * 早期UNIX进程间通信 * 基于System V进程间通信 * 基于Socket进程间通信 * POSIX进程间通信。 UNIX进程间通信方式包括:管道、FIFO、信号。 System V进程间通信方式包括:System V消息队列、System V信号灯、System V共享内存 P
30 min read

进程与线程

> 进程间通信还请移步:进程间通信 Inter-Process Communication [https://hanzhu.dev/ipc/] 进程:运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;每个进程都有自己独立的一块内存空间,一个进程可以有多个线程。 线程:进程中的子任务(控制单元),是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。 每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的 动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。 进程与线程的区别总结 线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。 * 根本区别:进程是操作系统资源分配的基本单
3 min read

什么是阻塞,非阻塞,同步,异步?

2021.9更新 Todo: 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO [https://blog.csdn.net/tjiyu/article/details/52959418] Chapter6 of Unix Network Programming.vol3 [https://mathcs.clarku.edu/~jbreecher/cs280/UNIX%20Network%20Programming(Volume1,3rd).pdf] , 尤其是6.2 I/O model ======================== 答案都来自知乎: Answer1 所谓同步异步,只是对于水壶而言。 普通水壶,同步;响水壶,异步。 虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。 同步只能让调用者去轮询自己(
8 min read

Subscribe to 隅

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe