编辑
2023-11-11
数据库理论基础
00

RUM猜想是一个存储结构开销模型,它考虑了读取(Read)、更新(Update)和内存(Memory)三个因素的开销。根据RUM猜想,当优化其中两项开销时,第三项开销不可避免地会恶化,并且在优化过程中只能以牺牲其中一项为代价[1]

具体来说,RUM猜想指出,在设计存储引擎时,如果我们设定了两项开销的上限,那么第三项开销将会有一个下限,无法进一步减少[3]。这意味着在优化存储引擎时,我们需要在读取、更新和内存开销之间进行权衡和取舍。

编辑
2023-11-11
后端
00

Go语言的init函数是一个特殊的函数

  1. init函数在每个包完成初始化后自动执行,并且执行优先级比main函数高。
  2. 每个包可以有多个init函数,它们按照定义的顺序依次执行。
  3. 同一个包中不同文件的init函数执行顺序是按照文件名字符串比较的顺序执行。
  4. 不同包的init函数执行顺序是按照包导入的依赖关系决定的,先执行被依赖的包的init函数,最后执行main函数。
  5. init函数不能被其他函数调用,它会在main函数执行之前自动被调用。
编辑
2023-11-11
Tomcat源码学习
00

Tomcat中的Listener机制允许我们在Servlet Context生命周期中的特定时间点执行自定义代码。

Tomcat支持以下几种类型的Listener:

  1. ServletContextListener

装配在ServletContext级别。在web应用启动和关闭时触发。

编辑
2023-11-11
Tomcat源码学习
00

在Tomcat中,每个HTTP请求都会通过一系列阶段(Phase)来处理。这些阶段由 Pipeline 组织起来。

Tomcat Pipeline 由多个 Valve 组成,每个 Valve 对应一个阶段。请求在每个阶段中都会执行相应的 valve。

Tomcat 默认 Pipeline 中包含了以下几个重要的 Valve:

编辑
2023-11-11
Tomcat源码学习
00