DDIA 作者 @martinkl 关于分布式系统的公开课,质量非常高。涉及到的主题有CAP理论、拜占庭将军问题、RPC、分布式系统逻辑时钟、容错、Raft、分布式事务、最终一致性、CRDT、广播算法等,共不到7小时的时长。
youtube.com/playlist?list=…
这套课程后半部分很多算法都依赖Total order broadcast算法(这个算法又依赖lamport/vector clock逻辑时间算法),mark下这个重点。
purelyfunctional.tv/guide/clojure-…
一篇介绍并发开发模型的好文章,虽然是Clojure语言的,但对理解各类并发模型如Go的CSP,Erlang的Actor,还有Clojure的STM。当然Java的基于锁的并发同步原语也有很多介绍。文章内容轻松易懂,推荐阅读。Clojure也是门有意思的语言,基于REPL的开发测试比Java要高效不少。
ardanlabs.com/blog/2018/08/s…
这是我看过介绍线程调度最好的文章,作者从操作系统线程调度出发介绍调度的相关概念,到介绍Go语言的调度器设计,解释了常规操作系统线程调度与Go这种协程调度的差异,进而阐述了Go高并发的秘密。
接上)吐槽下Clojure的core.async库的go/channel设计,和Golang相同的CSP并发设计风格,但在进行同步阻塞系统调用(如网络请求)时会阻塞底层的JVM线程,怎么看都像一个半成品😂而Golang的调度器会自动将会同步阻塞操作系统线程的Goroutine切换至使用network poller上进行异步请求。
ardanlabs.com/blog/2018/12/g…
@goinggodotnet 的关于Go垃圾回收的系列文章太精彩了!从GC的原理部分介绍(GC不同阶段对应用性能的影响及堆内存的变化),然后通过一个例子测试应用通过对堆内存的使用变化来优化GC的开销,提高应用性能。此文并没有陷入实现细节,而是通过原理介绍及测试找到优化性能的方法
bmpi.dev/dev/deep-in-pr…
写了篇介绍Go/Java/C/C++/Swift等编程语言是如何实现范型的。
这篇文章犯的一个最大的错误在于把泛型写成了范型 看来写作还是得慢着来,一口气写几小时就会犯很低级的错误😮💨
bmpi.dev/dev/deep-in-pr…
写了篇编程语言实现并发的文章(第一篇),目前还是草稿状态,欢迎各位提出意见或建议,感谢😄
bmpi.dev/dev/deep-in-pr…
历时一个月总算正式写完这篇关于不同编程语言实现并发方式的操作系统层面统一的知识,包括进程调度、用户线程与同异步I/O模型。编程语言和框架一直在变,但掌握这些操作系统基础知识能更好的去理解这些并发模型(Lock、STM、Async/Await、Reactive、Event Loop、CSP、Actor)
Operating Systems: Three Easy Pieces这本书推荐阅读,从Virtualization、Concurrency、Persistence、Security四个视角介绍操作系统的入门知识介绍,文笔优美,通俗易懂。不仅讲技术还讲技术历史发展的故事。豆瓣9.7分,亚马逊也是好评如潮。
在线免费阅读:pages.cs.wisc.edu/~remzi/OSTEP/
OSTEP翻译版:github.com/remzi-arpacidu…
OSTEP Slide:github.com/HexHive/OSTEP-…
这篇文章教你如何只用Linux的/proc文件系统的内容来调试进程的性能,非常硬核,推荐阅读👉 tanelpoder.com/2013/02/21/pee…
最近项目上在考虑将Clojure工程用Kotlin重写,一些可能的原因:
- 入门难度较高,需要适应其Lisp风格的语法
- 虽然可以用Java的包,但相比直接调用还是有一些开发成本
- 很多Clojure开发的包都无人维护或没什么活跃度
这对企业级项目开发来讲存在一些难以接受的问题👇
项目强制要求系统上线需要先解决BlackDuck扫描出的一些Security、License、Optional的Risk,Clojure由于生态不活跃,会被扫描出很多问题,Security还好解决,最麻烦的是License的问题,需要整个替换,而可替换的包也没那么多,Optional的问题是考虑到整个包维护的活跃度(commits、version发布频率)等
所以就算能愉快的使用Clojure开发,也会在这类问题上耗费很多时间,对企业来说不如用Java、Kotlin去开发。
虽然很多人吐槽Java与Go,但生态的活跃度在企业开发里的确比想象中要更重要。
小众语言玩个人项目还行,走高开发效率的路线也还行。
进击的SQLite,不仅可以:
- 跑在浏览器里:github.com/jlongster/absu…
- 还可以跑在CDN上:blog.cloudflare.com/introducing-d1/
- 当然也可以是分布式的:fly.io/blog/all-in-on…
以后个人项目需要DB的可以优先考虑用SQLite来搞,便宜简单还强大👍
bmpi.dev/dev/deep-in-pr…
本文介绍多种并发模型包括锁、STM、CSP、Actor及I/O多路复用等,还有对Java、Go、Erlang/Elixir与Clojure等对这些模型的实现的介绍。
编程的两大安全难题是线程安全与内存安全。这个系列的两篇文章都是在尝试介绍不同编程语言是如何解决线程安全从而更容易的实现高并发。
sqlite.org/fiddle/
SQLite官方做了一个Fiddle的应用,现在可以在浏览器导入数据库并查询修改,之后可以导出被修改后的库。
暂时还想不到这个应用场景是啥🤔
写了篇《Google软件工程》的读书笔记。这篇主要分享文化相关的内容,这也是我认为国外做软件工程和国内差异大的地方,相反过程与工具的差异可能就是规模不同导致的👇
bmpi.dev/dev/software-e…
一些提高工程效能的实践👇
1. 主干分支开发模型
2. TDD
3. 结对编程
4. 内建安全
5. 快速自动构建
6. 自动部署流水线
AWS CTO @Werner 的这个演讲非常精彩有趣,涉及的分布式技术主题也很多,强烈推荐观看。
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.
