mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-07-28 12:22:17 +08:00
Compare commits
6 Commits
7619f23556
...
8adefc8b20
Author | SHA1 | Date | |
---|---|---|---|
|
8adefc8b20 | ||
|
8a409d9e9b | ||
|
7adc41ebce | ||
|
91fca78e22 | ||
|
03cd88aea6 | ||
|
dfbadac192 |
@ -543,7 +543,7 @@ Redis 持久化机制(RDB 持久化、AOF 持久化、RDB 和 AOF 的混合持
|
||||
|
||||
**Redis 基于 Reactor 模式设计开发了一套高效的事件处理模型** (Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file event handler)。由于文件事件处理器(file event handler)是单线程方式运行的,所以我们一般都说 Redis 是单线程模型。
|
||||
|
||||
《Redis 设计与实现》有一段话是如是介绍文件事件处理器的,我觉得写得挺不错。
|
||||
《Redis 设计与实现》有一段话是这样介绍文件事件处理器的,我觉得写得挺不错。
|
||||
|
||||
> Redis 基于 Reactor 模式开发了自己的网络事件处理器:这个处理器被称为文件事件处理器(file event handler)。
|
||||
>
|
||||
|
@ -99,7 +99,7 @@ UA 是一个特殊字符串头,服务器依次可以识别出客户使用的
|
||||
|
||||
abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXZY0123456789
|
||||
|
||||
之前说过,兑换码要求近可能简洁,那么设计时就需要考虑兑换码的字符数,假设上限为 12 位,而字符空间有 60 位,那么可以表示的空间范围为 60^12=130606940160000000000000(也就是可以 12 位的兑换码可以生成天量,应该够运营同学挥霍了),转换成 2 进制:
|
||||
之前说过,兑换码要求尽可能简洁,那么设计时就需要考虑兑换码的字符数,假设上限为 12 位,而字符空间有 60 位,那么可以表示的空间范围为 60^12=130606940160000000000000(也就是可以 12 位的兑换码可以生成天量,应该够运营同学挥霍了),转换成 2 进制:
|
||||
|
||||
1001000100000000101110011001101101110011000000000000000000000(61 位)
|
||||
|
||||
|
@ -326,7 +326,7 @@ Tomcat 这四个自定义的类加载器对应的目录如下:
|
||||
|
||||
拿 Spring 这个例子来说,当 Spring 需要加载业务类的时候,它不是用自己的类加载器,而是用当前线程的上下文类加载器。还记得我上面说的吗?每个 Web 应用都会创建一个单独的 `WebAppClassLoader`,并在启动 Web 应用的线程里设置线程线程上下文类加载器为 `WebAppClassLoader`。这样就可以让高层的类加载器(`SharedClassLoader`)借助子类加载器( `WebAppClassLoader`)来加载业务类,破坏了 Java 的类加载委托机制,让应用逆向使用类加载器。
|
||||
|
||||
线程线程上下文类加载器的原理是将一个类加载器保存在线程私有数据里,跟线程绑定,然后在需要的时候取出来使用。这个类加载器通常是由应用程序或者容器(如 Tomcat)设置的。
|
||||
线程上下文类加载器的原理是将一个类加载器保存在线程私有数据里,跟线程绑定,然后在需要的时候取出来使用。这个类加载器通常是由应用程序或者容器(如 Tomcat)设置的。
|
||||
|
||||
`Java.lang.Thread` 中的`getContextClassLoader()`和 `setContextClassLoader(ClassLoader cl)`分别用来获取和设置线程的上下文类加载器。如果没有通过`setContextClassLoader(ClassLoader cl)`进行设置的话,线程将继承其父线程的上下文类加载器。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user