TOMCAT 八月 02, 2020

Tomcat 是怎么找到用来处理请求的 Servlet 的?

文章字数 14k 阅读约需 12 mins.

Servlet 注册到了哪? 中,我们找到了配置的 Servlet 被包装成了一个 StandardWrapper,以注册的 Servlet name 为 key 放入了其父容器(Context)...

查看全文

TOMCAT 八月 02, 2020

Tomcat 是怎么找到用来处理请求的 Servlet 的?

文章字数 14k 阅读约需 12 mins.

Servlet 注册到了哪? 中,我们找到了配置的 Servlet 被包装成了一个 StandardWrapper,以注册的 Servlet name 为 key 放入了其父容器(Context)一个 HashMap 里。那么当 Tomcat 收到一个请求的时候,是怎么找到对应的 Servlet 以对请求进行处理的呢?

先放一张图:

总的来说,这个过程分为两部分:

  1. 读取所有 Servlet 的配置,放入 Mapper 中;
  2. 将请求匹配到具体的 Servlet 上。

注:本文以 Tomcat...

查看全文

JAVA 七月 26, 2020

为什么应该设置 com.sun.management.jmxremote.rmi.port?

文章字数 5.1k 阅读约需 5 mins.

在使用 JMX 对 Java 应用进行监控时,一般会在启动时添加如下参数:

java \
-Djava.rmi.server.hostname=192.168.16.237 \
-Dcom.sun.management.jmxremote.rmi.port=2909 \
-Dcom.sun.management.jmxremote.port=9009 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management...
查看全文

SPRING 七月 19, 2020

谁动了我的异常 Plus

文章字数 5.9k 阅读约需 5 mins.

书接上文,在 谁动了我的异常? 中,有几个问题没说清楚,本文将继续进行说明。
为了方便,相关示例代码上传至了 https://github.com/AlphaHinex/proxy-in-spring

示例代码中,定义了如下内容:

ClassController 中定义了一个没有声明异常...

查看全文

JAVA 七月 12, 2020

为什么不建议使用双括号初始化?

文章字数 2.6k 阅读约需 2 mins.

Map<String, Object> map = new HashMap<String, Object>() {{
    put("name", "Alpha");
    put("age", 8);
}};

以下内容引自 The Java™ Tutorials - Initializing Fields

Initializing Instance Members

Normally, you would put code to initialize an instance variable...

查看全文

GIT 七月 04, 2020

JitPack 真香 Plus

文章字数 1.1k 阅读约需 1 mins.

JitPack 真香 中,介绍了 JitPack 的基本用法。

当一个仓库中对应多个模块,每个模块需发布成一个独立 jar 包时,依赖的坐标有略微调整:

单模块 多模块
groupId com.github.User com.github.User.Repo
artifactId Repo Module
version Tag Tag

多模块时,依然可以通过单模块的依赖语法形式,获得该项目的所有模块:

implementation 'com.github....
查看全文

SPRING 六月 26, 2020

谁动了我的异常?

文章字数 11k 阅读约需 10 mins.

通常来讲,为方便开发,我们会对异常进行统一的处理。会定义一个异常基类,针对基于这个基类的自定义异常进行统一处理。

当异常基类为检查型异常(Checked Exception)时,如果自定义异常是通过切面等代理抛出的,被代理的方法本身并未抛出且也未声明此异常时,就会遇到这个问题:

统一异常处理方法中,捕获到的异常,已不是代理类中抛出的自定义异常,而是一个将自定义异常包装在内的 java.lang.reflect.UndeclaredThrowableException

那么为什么会这样呢?

以使...

查看全文

JAVA 六月 19, 2020

Gradle HTTP 超时设置

文章字数 3.1k 阅读约需 3 mins.

在使用 Nexus 时,很罕见的遇到了超时问题:

> Unable to load Maven meta-data from http://localhost:8081/repository/test/io/github/alphahinex/example/0.1.2-SNAPSHOT/maven-metadata.xml.
   > Could not HEAD 'http://localhost:8081/repository/test/io/github/alphahinex...
查看全文

OTHERS 六月 12, 2020

SSH Port Forwarding, aka SSH Tunneling

文章字数 9k 阅读约需 8 mins.

SSH(Secure Shell)端口转发(SSH Port Forwarding),也叫 SSH 隧道(SSH Tunneling),是 SSH 中的一种机制,可以在 SSH 客户端与服务端之间,建立一条隧道,将客户端端口转发至服务端,也可将服务端端口转发至客户端。利用这种机制,可以为老式应用,提供加密通讯的途径,以及其他一些更广泛的用途。

利用 SSH 客户端,即可完成隧道的创建,创建隧道时,需指定隧道两端的端口,故也叫端口转发。

端口转发分为两种:

  1. 本地端口转发
  2. 远程端口转发

下面以...

查看全文

OTHERS 六月 05, 2020

Why was '~' chosen to represent the home directory?

文章字数 1.7k 阅读约需 2 mins.

Why was ‘~’ chosen to represent the home directory?

Quoting Wikipedia:

On Unix-like operating systems (including BSD, GNU/Linux and Mac OS X), tilde often indicates the current user’s home directory: for example, if the current user’s home directory...

查看全文

GIT 五月 29, 2020

JitPack 真香

文章字数 2.6k 阅读约需 2 mins.

GitHub Packages in Action 中,我们介绍了 GitHub Packages Registry(GPR)的用法。GPR 有其应用场景,但也经常会有蹩手的感觉,尤其是在传错了包,需要邮件联系客服进行删除,而客服又迟迟没有回复的时候……

直到发现了 JitPack,除了真香,找不到别的词来形容了。

只要代码仓库是使用 GitHub,或者 其他几种常见的 Git 仓库托管服务,就可以立即接入 JitPack。

https://github.com/AlphaHinex/checkstyle...

查看全文
加载更多
0%