34__Worker_Thread模式:如何避免重复创建线程?

上一篇文章中,我们介绍了一种最简单的分工模式——Thread-Per-Message 模式,对应到现实世界,其实就是委托代办。这种分工模式如果用 Java Thread 实现,频繁地创建、销毁线程非常影响性能,同时无限制地创建线程还可能导致 OOM,所以在 Java 领域使用场景就受限了。

34__编程范式游记(5)-_修饰器模式

在上一篇文章中,我们领略了函数式编程的趣味和魅力,主要讲了函数式编程的主要技术。还记得有哪些吗?递归、Map、Reduce、Filter 等,并利用 Python 的 Decorator 和 Generator 功能,将多个函数组合成了管道。

34__并发安全字典sync.Map_(上)

在前面,我几乎已经把 Go 语言自带的同步工具全盘托出了。你是否已经听懂了会用了呢?

无论怎样,我都希望你能够多多练习、多多使用。它们和 Go 语言独有的并发编程方式并不冲突,相反,配合起来使用,绝对能达到“一加一大于二”的效果。

34__到底可不可以使用join?

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类:

  1. 我们 DBA 不让使用 join,使用 join 有什么问题呢?
  2. 如果有两个大小不同的表做 join,应该用哪个表做驱动表呢?

今天这篇文章,我就先跟你说说 join 语句到底是怎么执行的,然后再来回答这两个问题。

34__第23~33讲课后思考题答案及常见问题答疑

你好,我是蒋德钧。

今天,又到了我们的答疑时间,我们一起来学习下第 23~33 讲的课后思考题。同时,我还会给你讲解两道典型问题。

课后思考题答案

第 23 讲

问题:Redis 的只读缓存和使用直写策略的读写缓存,都会把数据同步写到后端数据库中,你觉得它们有什么区别吗?

34__动手实现一个简单的RPC框架(四):服务端

你好,我是李玥。

上节课我们一起学习了如何来构建这个 RPC 框架中最关键的部分,也就是:在客户端,如何根据用户注册的服务接口来动态生成桩的方法。在这里,除了和语言特性相关的一些动态编译小技巧之外,你更应该掌握的是其中动态代理这种设计思想,它的使用场景以及实现方法。

34__服务端开发的宏观视角

你好,我是七牛云许式伟。

今天开始,我们进入第三章,谈谈服务端开发。

服务端的发展史

服务端开发这个分工,出现的历史极短。短得让人难以想象。

1946 年,第一台电子计算机问世。1954 年,第一门高级语言 Fortran 发布。整个信息科技发展到今天,大约也就 60~70 年的历史。

34__关于_Linux_网络,你必须知道这些(下)

你好,我是倪朋飞。

上一节,我带你学习了 Linux 网络的基础原理。简单回顾一下,Linux 网络根据 TCP/IP 模型,构建其网络协议栈。TCP/IP 模型由应用层、传输层、网络层、网络接口层等四层组成,这也是 Linux 网络栈最核心的构成部分。