youyichannel

志于道,据于德,依于仁,游于艺!

0%

线程初始化 —— 源码解析

Thread#init()方法代码片段

Thread parent = currentThread();
SecurityManager security = System.getSecurityManager();
if (g == null) {
/* Determine if it's an applet or not */

/* If there is a security manager, ask the security manager
what to do. */
if (security != null) {
g = security.getThreadGroup();
}

/* If the security doesn't have a strong opinion of the matter
use the parent thread group. */
if (g == null) {
g = parent.getThreadGroup();
}
}

说明:优先使用线程初始化传入的threadGroup;其次是System SecurityManager的threadGroup;最后才是parent Thread的threadGroup。

阅读全文 »

《MySQL是怎样运行的 —— 从跟上理解MySQL》—— 第三章

一、字符集和比较规则简介

1.1 字符集简介

由于计算机存储的是二进制数据,因此如果需要存储字符串,需要建立字符和二进制数据的映射关系。这个过程,需要搞清楚:

  • 要把哪些字符映射成二进制数据? => 界定字符范围
  • 怎么映射? => 编码:字符映射成二进制数据的过程;解码:二进制数据映射到字符的过程
阅读全文 »

进程状态转化 —— 解读 Stack Log

通过 Stack Log 查看线程状态作用:排查线程异常状态、正常线程状态的统计、评估线程的上下文切换等等。

阅读全文 »

线程的优先级

在Java线程中,通过一个整形变量priority来控制优先级,优先级的范围是[1, 10],在线程创建的时候,可以通过Thread#setPriority(int)方法来修改优先级,默认优先级是5,优先级高的线程分配的CPU时间片的数量要多于优先级低的线程。

阅读全文 »

《MySQL是怎样运行的 —— 从跟上理解MySQL》—— 第二章

一、启动选项和配置文件

对于MySQL而言,无论是服务器相关的程序(比如mysqldmysql_safe)还是客户端相关的程序(比如mysqlmysqladmin),在启动的时候基本上都可以指定启动选项,这些启动选项可以在命令行中指定,也可以在配置文件中指定。

以下内容以mysqld为例,阐述指定启动选项的格式。

阅读全文 »

SpringMVC的核心组件

记住了核心组件,工作原理也就顺理成章可以推导出来了。

  1. DispatcherServlet:核心中央处理器,负责接收请求、分发,并给予客户端相应
  2. HandlerMapping:处理器映射器,根据URL去匹配查找能处理的Handler,并会将请求涉及到的拦截器和Handler一起封装
  3. HandlerAdapter:处理器适配器,根据HandlerMapping找到的Handler,适配执行对应的Handler
  4. Handler:请求处理器,处理实际请求的处理器
  5. ViewResolver:视图解析器,根据Handler返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给DispatcherServlet相应客户端
阅读全文 »