13__[视频]实战:基于FFI实现的lua-resty-lrucache

你好,我是温铭。

今天的内容,我同样会以视频的形式来讲解。不过,在你进行视频学习之前,我想先问你这么几个问题:

  • lua-resty-lrucache 内部最重要的数据结构是什么?
  • lua-resty-lrucache 有两种 FFI 的实现,我们今天讲的这一种更适合什么场景?

这几个问题,也是今天视频课要解决的核心内容,希望你可以先自己思考一下,并带着问题来学习今天的视频内容。

13__Channel:另辟蹊径,解决并发问题

你好,我是鸟窝。

Channel 是 Go 语言内建的 first-class 类型,也是 Go 语言与众不同的特性之一。Go 语言的 Channel 设计精巧简单,以至于也有人用其它语言编写了类似 Go 风格的 Channel 库,比如docker/libchan、tylertreat/chan,但是并不像 Go 语言一样把 Channel 内置到了语言规范中。从这一点,你也可以看出来,Channel 的地位在编程语言中的地位之高,比较罕见。

13__ControllerEventManager:变身单线程后的Controller如何处理事件?

你好,我是胡夕。今天,我们来学习下 Controller 的单线程事件处理器源码。

所谓的单线程事件处理器,就是 Controller 端定义的一个组件。该组件内置了一个专属线程,负责处理其他线程发送过来的 Controller 事件。另外,它还定义了一些管理方法,用于为专属线程输送待处理事件。

13__db大小:为什么etcd社区建议db大小不超过8G?

你好,我是唐聪。

在03写流程中我和你分享了 etcd Quota 模块,那么 etcd 为什么需要对 db 增加 Quota 限制,以及不建议你的 etcd 集群 db 大小超过 8G 呢?过大的 db 文件对集群性能和稳定性有哪些影响?

13__GEO是什么?还可以定义新的数据类型吗?

你好,我是蒋德钧。

在第 2 讲中,我们学习了 Redis 的 5 大基本数据类型:String、List、Hash、Set 和 Sorted Set,它们可以满足大多数的数据存储需求,但是在面对海量数据统计时,它们的内存开销很大,而且对于一些特殊的场景,它们是无法支持的。所以,Redis 还提供了 3 种扩展数据类型,分别是 Bitmap、HyperLogLog 和 GEO。前两种我在上节课已经重点介绍过了,今天,我再具体讲一讲 GEO。

13__HTTP有哪些特点?

通过“基础篇”前几讲的学习,你应该已经知道了 HTTP 协议的基本知识,了解它的报文结构,请求头、响应头以及内部的请求方法、URI 和状态码等细节。

你会不会有种疑惑:“HTTP 协议好像也挺简单的啊,凭什么它就能统治互联网这么多年呢?”

13__Java内存模型

我们先来看一个反常识的例子。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

int a=0, b=0;

 public void method1() {

  int r2 = a;

  b = 1;

}

 public void method2() {

  int r1 = b;

  a = 2;

}

这里我定义了两个共享变量 a 和 b,以及两个方法。第一个方法将局部变量 r2 赋值为 a,然后将共享变量 b 赋值为 1。第二个方法将局部变量 r1 赋值为 b,然后将共享变量 a 赋值为 2。请问(r1,r2)的可能值都有哪些?

13__Java生产者是如何管理TCP连接的?

你好,我是胡夕。今天我要和你分享的主题是:Kafka 的 Java 生产者是如何管理 TCP 连接的。

为何采用 TCP?

Apache Kafka 的所有通信都是基于 TCP 的,而不是基于 HTTP 或其他协议。无论是生产者、消费者,还是 Broker 之间的通信都是如此。你可能会问,为什么 Kafka 不使用 HTTP 作为底层的通信协议呢?其实这里面的原因有很多,但最主要的原因在于 TCP 和 HTTP 之间的区别。

13__LLVM:如何将自定义的语言编译到_WebAssembly?

你好,我是于航。

应用 Wasm 的常见方式有几种类型,一种方式是通过 Web 浏览器提供的 JavaScript API 与 Web API,来在 Web 应用中调用从 Wasm 模块中导出的函数。通过这种方式,我们可以充分利用 Wasm 的安全、高效及可移植性等优势。