From b106a4fce1ec37ea7774cd146cc9640d7e1d0974 Mon Sep 17 00:00:00 2001 From: W01fh4cker <101872898+W01fh4cker@users.noreply.github.com> Date: Fri, 10 May 2024 16:34:52 +0800 Subject: [PATCH 1/5] fix: https://github.com/W01fh4cker/LearnJavaMemshellFromZero/issues/1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bced727..d6f57ea 100644 --- a/README.md +++ b/README.md @@ -3208,8 +3208,8 @@ modifersField.setInt(f, f.getModifiers() & Modifier.FINAL); out.println(output); out.flush(); out.close(); - this.getNext().invoke(request, response); } + this.getNext().invoke(request, response); } }; evilStandardPipeline.addValve(evilValve); From d58b8a87ddf0418b7bd56983f6bc01e30d2a9f3c Mon Sep 17 00:00:00 2001 From: W01fh4cker <101872898+W01fh4cker@users.noreply.github.com> Date: Fri, 10 May 2024 16:36:27 +0800 Subject: [PATCH 2/5] fix: https://github.com/W01fh4cker/LearnJavaMemshellFromZero/issues/1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6f57ea..bbf3967 100644 --- a/README.md +++ b/README.md @@ -3256,8 +3256,8 @@ modifersField.setInt(f, f.getModifiers() & Modifier.FINAL); out.println(output); out.flush(); out.close(); - this.getNext().invoke(request, response); } + this.getNext().invoke(request, response); } }; %> From 4d0f61ce9ec22e58ea1f6e3faec59b338060c43d Mon Sep 17 00:00:00 2001 From: W01fh4cker Date: Fri, 27 Dec 2024 15:52:24 +0800 Subject: [PATCH 3/5] fix(docs): resolve broken image links --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bbf3967..68fbb6f 100644 --- a/README.md +++ b/README.md @@ -902,7 +902,7 @@ public class GreetingRouter { 随便访问个路由。例如`http://127.0.0.1:9191/customers/stream`: -![](https://w01fh4cker-img-bed.oss-cn-hangzhou.aliyuncs.com/image/customers_stream.gif) +![](https://cdn.jsdelivr.net/gh/W01fh4cker/blog_image@main/customers_stream.gif) ## 2.11 Spring MVC介绍 @@ -1628,7 +1628,7 @@ public class GreetingFilter implements WebFilter { 那现在就是从内存中找到`DefaultWebFilterChain`的位置,然后一步步反射就行。这里直接使用工具`https://github.com/c0ny1/java-object-searcher`,克隆下来该项目,放到`idea`中`mvn clean install`: -![image-20240126134339217](https://w01fh4cker-img-bed.oss-cn-hangzhou.aliyuncs.com/image/image-20240126134339217.png) +![image-20240126134339217](https://raw.githubusercontent.com/W01fh4cker/blog_image/main/image/image-20240126134339217.png) 然后把生成的这个`java-object-searcher-0.1.0.jar`放到我们的`WebFluxMemoryShellDemo`项目的Project `Structure`中的`Libraries`中: @@ -1859,7 +1859,7 @@ host.getPipeline().getFirst().invoke(request, response); 这不正是我们需要的吗?我们去看看它是在哪儿实现的,直接在`addValve`函数处`Ctrl+H`找继承该接口的类,可可以看到是在`org.apache.catalina.core.StandardPipeline`中: -![image-20240130155445230](https://w01fh4cker-img-bed.oss-cn-hangzhou.aliyuncs.com/image/image-20240130155445230.png) +![](https://raw.githubusercontent.com/W01fh4cker/blog_image/main/image/image-20240130155445230.png) 但是问题就来了,我们无法直接获取到这个`StandardPipeline`,而我们能直接获取到的是`StandardContext`,那就去看看`StandardContext.java`中有没有获取`StandardPipeline`的方法。 @@ -2175,7 +2175,7 @@ public class TestServlet extends HttpServlet { 在我之前提到过的讲tomcat架构的基础文章(`https://blog.nowcoder.net/n/0c4b545949344aa0b313f22df9ac2c09`),有详细地讲述`ProtocolHandler`组件中的`EndPoint`部件,如果之前没有看完整地可以再去看下。里面这张图画的很好,我这里作引用: -![](https://w01fh4cker-img-bed.oss-cn-hangzhou.aliyuncs.com/image/NioEndPoint.jpg) +![](https://cdn.jsdelivr.net/gh/W01fh4cker/blog_image@main/NioEndPoint.jpg) #### 2.15.2.1 Endpoint五大组件 From 0de98ee5368a854c43f4b742e7f44a539516ce98 Mon Sep 17 00:00:00 2001 From: W01fh4cker <101872898+W01fh4cker@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:43:20 -0800 Subject: [PATCH 4/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68fbb6f..984a44d 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ # 二、前置知识 本篇文章除特殊说明外,使用的是`jdk1.8.0_202`+ `tomcat 9.0.85`,后者下载地址为: -> https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85-windows-x64.zip。 +> https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85-windows-x64.zip ## 2.1 Servlet容器与Engine、Host、Context和Wrapper From c1331ecde9a40bc8859902731a0ab166685b203c Mon Sep 17 00:00:00 2001 From: W01fh4cker <101872898+W01fh4cker@users.noreply.github.com> Date: Sun, 25 May 2025 00:31:26 -0700 Subject: [PATCH 5/5] docs: Revise the links to reference articles in the content to make them valid and reachable --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 984a44d..9386348 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ 这部分我找了好久,终于在一大堆高深/垃圾的文章中邂逅了一篇写的还算简明扼要易于理解的文章。 -> 原文地址:https://www.maishuren.top/archives/tomcat-zhong-servlet-rong-qi-de-she-ji-yuan-li +> 原文地址:https://www.maishuren.top/posts/tomcat/2-tomcat中sevlet容器的设计原理 这里组合引用其原文,简单概括,就是: @@ -120,7 +120,7 @@ 关于上图中的连接器的设计,可以继续参考该作者的博文: -> https://www.maishuren.top/archives/yi-bu-bu-dai-ni-le-jie-tomcat-zhong-de-lian-jie-qi-shi-ru-he-she-ji-de +> https://www.maishuren.top/posts/tomcat/1-tomcat中的连接器是如何设计的 写到后面之后我又发现了一篇写的极佳的文章,贴在这儿供大家参考,讲的是关于`tomcat`架构的原理解析: