diff --git a/ReadMe.md b/ReadMe.md index 1a6c3a5..dc53ae6 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -204,11 +204,11 @@ todo * [深入理解JVM虚拟机:JNDI,OSGI,Tomcat类加载器实现](docs/java/jvm/深入理解JVM虚拟机:JNDI,OSGI,Tomcat类加载器实现.md) * [深入了解JVM虚拟机:Java的编译期优化与运行期优化](docs/java/jvm/深入理解JVM虚拟机:Java的编译期优化与运行期优化.md) * [深入理解JVM虚拟机:JVM监控工具与诊断实践](docs/java/jvm/深入理解JVM虚拟机:JVM监控工具与诊断实践.md) -* [深入理解JVM虚拟机:JVM常用参数以及调优实践](docs/java/jvm/temp/深入理解JVM虚拟机:JVM常用参数以及调优实践.md) +* [深入理解JVM虚拟机:JVM常用参数以及调优实践](docs/java/jvm/深入理解JVM虚拟机:JVM常用参数以及调优实践.md) * [深入理解JVM虚拟机:Java内存异常原理与实践](docs/java/jvm/深入理解JVM虚拟机:Java内存异常原理与实践.md) * [深入理解JVM虚拟机:JVM性能管理神器VisualVM介绍与实战](docs/java/jvm/深入理解JVM虚拟机:JVM性能管理神器VisualVM介绍与实战.md) * [深入理解JVM虚拟机:再谈四种引用及GC实践](docs/java/jvm/深入理解JVM虚拟机:再谈四种引用及GC实践.md) -* [深入理解JVM虚拟机:GC调优思路与常用工具](docs/java/jvm/temp/深入理解JVM虚拟机:GC调优思路与常用工具.md) +* [深入理解JVM虚拟机:GC调优思路与常用工具](docs/java/jvm/深入理解JVM虚拟机:GC调优思路与常用工具.md) ### Java网络编程 diff --git "a/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\220\357\274\232\345\210\235\346\216\242SpringIOC\346\240\270\345\277\203\346\265\201\347\250\213.md" "b/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\220\357\274\232\345\210\235\346\216\242SpringIOC\346\240\270\345\277\203\346\265\201\347\250\213.md" index 2ffdb35..ba4415e 100644 --- "a/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\220\357\274\232\345\210\235\346\216\242SpringIOC\346\240\270\345\277\203\346\265\201\347\250\213.md" +++ "b/docs/java-web/Spring/Spring\346\272\220\347\240\201\345\211\226\346\236\220\357\274\232\345\210\235\346\216\242SpringIOC\346\240\270\345\277\203\346\265\201\347\250\213.md" @@ -4,7 +4,6 @@ * [读取](#读取) * [解析](#解析) * [注册](#注册) - * [注入依赖](#注入依赖) 本文转载自互联网,侵删 diff --git "a/docs/java-web/Spring/\347\273\231\344\275\240\344\270\200\344\273\275SpringBoot\347\237\245\350\257\206\346\270\205\345\215\225.md" "b/docs/java-web/Spring/\347\273\231\344\275\240\344\270\200\344\273\275SpringBoot\347\237\245\350\257\206\346\270\205\345\215\225.md" index 8564da9..96260af 100644 --- "a/docs/java-web/Spring/\347\273\231\344\275\240\344\270\200\344\273\275SpringBoot\347\237\245\350\257\206\346\270\205\345\215\225.md" +++ "b/docs/java-web/Spring/\347\273\231\344\275\240\344\270\200\344\273\275SpringBoot\347\237\245\350\257\206\346\270\205\345\215\225.md" @@ -8,7 +8,6 @@ * [2.3、@Import](#23、import) * [2.4、@Conditional](#24、conditional) * [2.5、@ConfigurationProperties与@EnableConfigurationProperties](#25、configurationproperties与enableconfigurationproperties) - * [](#) * [三、削铁如泥:SpringFactoriesLoader详解](#三、削铁如泥:springfactoriesloader详解) * [四、另一件武器:Spring容器的事件监听机制](#四、另一件武器:spring容器的事件监听机制) * [Spring容器内的事件监听机制](#spring容器内的事件监听机制) @@ -17,9 +16,6 @@ * [6.1 SpringApplication初始化](#61-springapplication初始化) * [6.2 Spring Boot启动流程](#62-spring-boot启动流程) * [参考文章](#参考文章) -* [微信公众号](#微信公众号) - * [个人公众号:黄小斜](#个人公众号:黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) 本文转自互联网,侵删 @@ -806,30 +802,3 @@ public void initialize(ConfigurableApplicationContext context) { [5][spring boot实战:自动配置原理分析](https://link.jianshu.com/?t=http%3A%2F%2Fblog.csdn.net%2Fliaokailin%2Farticle%2Fdetails%2F49559951):[http://blog.csdn.net/liaokailin/article/details/49559951](https://link.jianshu.com/?t=http%3A%2F%2Fblog.csdn.net%2Fliaokailin%2Farticle%2Fdetails%2F49559951) [6][spring boot实战:Spring boot Bean加载源码分析](https://link.jianshu.com/?t=http%3A%2F%2Fblog.csdn.net%2Fliaokailin%2Farticle%2Fdetails%2F49107209):[http://blog.csdn.net/liaokailin/article/details/49107209](https://link.jianshu.com/?t=http%3A%2F%2Fblog.csdn.net%2Fliaokailin%2Farticle%2Fdetails%2F49107209) - - -## 微信公众号 - -### 个人公众号:黄小斜 - -黄小斜是跨考软件工程的 985 硕士,自学 Java 两年,拿到了 BAT 等近十家大厂 offer,从技术小白成长为阿里工程师。 - -作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得和程序人生,目前黄小斜的CSDN博客有百万+访问量,知乎粉丝2W+,全网已有10W+读者。 - -黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长! - -**原创电子书:** -关注公众号【黄小斜】后回复【原创电子书】即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》 - -**程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 **“资料”** 即可免费无套路获取。 -**考研复习资料:** 计算机考研大礼包,都是我自己考研复习时用的一些复习资料,包括公共课和专业的复习视频,这里也推荐给大家,关注公众号后,后台回复关键字 **“考研”** 即可免费获取。 -![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20190829222750556.jpg) - - -### 技术公众号:Java技术江湖 - -如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发! - -**Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 **“Java”** 即可免费无套路获取。 - -![我的公众号](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20190805090108984.jpg) \ No newline at end of file diff --git "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232DispatcherServlet\347\232\204\345\210\235\345\247\213\345\214\226\344\270\216\350\257\267\346\261\202\350\275\254\345\217\221.md" "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232DispatcherServlet\347\232\204\345\210\235\345\247\213\345\214\226\344\270\216\350\257\267\346\261\202\350\275\254\345\217\221.md" index 6390f87..1ae0ed4 100644 --- "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232DispatcherServlet\347\232\204\345\210\235\345\247\213\345\214\226\344\270\216\350\257\267\346\261\202\350\275\254\345\217\221.md" +++ "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232DispatcherServlet\347\232\204\345\210\235\345\247\213\345\214\226\344\270\216\350\257\267\346\261\202\350\275\254\345\217\221.md" @@ -1,11 +1,7 @@ # 目录 * [前言](#前言) - * [配置元素读取](#init-param配置元素读取init-param) * [容器上下文的建立](#容器上下文的建立) * [初始化SpringMVC默认实现类](#初始化springmvc默认实现类) -* [Default implementation classes for DispatcherServlet's strategy interfaces.](#default-implementation-classes-for-dispatcherservlets-strategy-interfaces) -* [Used as fallback when no matching beans are found in the DispatcherServlet context.](#used-as-fallback-when-no-matching-beans-are-found-in-the-dispatcherservlet-context) -* [Not meant to be customized by application developers.](#not-meant-to-be-customized-by-application-developers) * [总结](#总结) diff --git "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\346\246\202\350\277\260.md" "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\346\246\202\350\277\260.md" index 2345fe8..fb7f88e 100644 --- "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\346\246\202\350\277\260.md" +++ "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\346\246\202\350\277\260.md" @@ -1,4 +1,77 @@ -[## 一、SpringMVC简介 +# 目录 + + * [1.1、SpringMVC引言](#11、springmvc引言) + * [1.2、SpringMVC的优势](#12、springmvc的优势) + * [二、SpringMVC入门](#二、springmvc入门) + * [2.1、环境搭建](#21、环境搭建) + * [2.1.1、引入依赖](#211、引入依赖) + * [2.1.2、编写配置文件](#212、编写配置文件) + * [2.1.3、配置web.xml](#213、配置webxml) + * [2.1.4、编写控制器](#214、编写控制器) + * [2.2、注解详解](#22、注解详解) + * [2.2.1、@Controller](#221、controller) + * [2.2.2、@RequestMapping](#222、requestmapping) + * [2.3、SpringMVC的跳转方式](#23、springmvc的跳转方式) + * [2.3.1、Controller ——>前台页面](#231、controller-前台页面) + * [2.3.1.1、forward](#2311、forward) + * [2.3.1.2、redirect](#2312、redirect) + * [2.3.1Controller ——>Controller](#231controller-controller) + * [2.3.1.1、forward](#2311、forward-1) + * [2.3.1.2、redirect](#2312、redirect-1) + * [2.4、SpringMVC的参数接收](#24、springmvc的参数接收) + * [2.4.1、Servlet接收参数的方式](#241、servlet接收参数的方式) + * [2.4.2、SpringMVC的参数接收](#242、springmvc的参数接收) + * [2.4.2.1、基本数据类型](#2421、基本数据类型) + * [2.4.2.2、对象类型](#2422、对象类型) + * [2.4.2.3、数组类型](#2423、数组类型) + * [2.4.2.4、集合类型](#2424、集合类型) + * [2.5、SpringMVC接收参数中文乱码问题](#25、springmvc接收参数中文乱码问题) + * [2.5.1、GET请求](#251、get请求) + * [2.5.2、POST请求](#252、post请求) + * [2.5.2.1、自定义过滤器解决POST乱码请求](#2521、自定义过滤器解决post乱码请求) + * [2.5.2.2、使用CharacterEncodingFilter解决POST乱码请求](#2522、使用characterencodingfilter解决post乱码请求) + * [2.6、SpringMVC中数据传递机制](#26、springmvc中数据传递机制) + * [2.6.1、什么事数据传递机制](#261、什么事数据传递机制) + * [2.6.2、Servlet的数据传递机制](#262、servlet的数据传递机制) + * [三、前端控制器](#三、前端控制器) + * [3.1、什么是前端控制器](#31、什么是前端控制器) + * [3.2、代码实现](#32、代码实现) + * [3.3、注意](#33、注意) + * [3.4、映射路径](#34、映射路径) + * [3.4.1、访问静态资源和 JSP 被拦截的原因](#341、访问静态资源和-jsp-被拦截的原因) + * [3.4.2、如何解决](#342、如何解决) + * [3.4.2.1、方式一](#3421、方式一) + * [3.4.2.2、方式二](#3422、方式二) + * [3.5、@ModelAttribute 注解](#35、modelattribute-注解) + * [四、处理响应](#四、处理响应) + * [4.1、返回 ModelAndView](#41、返回-modelandview) + * [4.2、返回String](#42、返回string) + * [4.3、改进](#43、改进) + * [五、请求转发和重定向](#五、请求转发和重定向) + * [5.1、请求转发和重定向的区别](#51、请求转发和重定向的区别) + * [5.2、请求转发](#52、请求转发) + * [5.3、重定向](#53、重定向) + * [5.4、请求路径](#54、请求路径) + * [六、参数处理](#六、参数处理) + * [6.1、处理简单类型的请求参数](#61、处理简单类型的请求参数) + * [6.1.1、请求参数名和控制器方法参数列表形参同名](#611、请求参数名和控制器方法参数列表形参同名) + * [6.1.2、请求参数名和控制器方法参数列表形参不同名](#612、请求参数名和控制器方法参数列表形参不同名) + * [6.2、处理复杂类型的请求参数](#62、处理复杂类型的请求参数) + * [6.2.1、数组类型](#621、数组类型) + * [6.2.2、自定义类型](#622、自定义类型) + * [6.3、处理日期类型的请求参数](#63、处理日期类型的请求参数) + * [6.3.1、日期在请求参数上](#631、日期在请求参数上) + * [6.3.2、在封装的对象上](#632、在封装的对象上) + * [七、文件上传与下载](#七、文件上传与下载) + * [7.1、文件上传](#71、文件上传) + * [7.1.1、编写表单](#711、编写表单) + * [7.1.2、修改web.xml](#712、修改webxml) + * [7.1.3、配置上传解析器](#713、配置上传解析器) + * [7.1.4、配置上传控制器](#714、配置上传控制器) + * [7.2、文件下载](#72、文件下载) + * [7.2.1、开发控制器](#721、开发控制器) + + ## 1.1、SpringMVC引言 @@ -942,5 +1015,3 @@ package cn.linstudy.controller; return null; } ``` - -]([]()) \ No newline at end of file diff --git "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\347\232\204\350\247\206\345\233\276\350\247\243\346\236\220\345\216\237\347\220\206.md" "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\347\232\204\350\247\206\345\233\276\350\247\243\346\236\220\345\216\237\347\220\206.md" index 6a3357f..cb28598 100644 --- "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\347\232\204\350\247\206\345\233\276\350\247\243\346\236\220\345\216\237\347\220\206.md" +++ "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232SpringMVC\347\232\204\350\247\206\345\233\276\350\247\243\346\236\220\345\216\237\347\220\206.md" @@ -4,8 +4,6 @@ * [重要接口和类介绍](#重要接口和类介绍) * [源码分析](#源码分析) * [编码自定义的ViewResolver](#编码自定义的viewresolver) - * [This is jsp page](#this-is-jsp-page) - * [This is freemarker page](#this-is-freemarker-page) * [总结](#总结) diff --git "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232\346\266\210\346\201\257\350\275\254\346\215\242\345\231\250HttpMessageConverter\344\270\216@ResponseBody\346\263\250\350\247\243.md" "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232\346\266\210\346\201\257\350\275\254\346\215\242\345\231\250HttpMessageConverter\344\270\216@ResponseBody\346\263\250\350\247\243.md" index f34de3a..d4cb3bc 100644 --- "a/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232\346\266\210\346\201\257\350\275\254\346\215\242\345\231\250HttpMessageConverter\344\270\216@ResponseBody\346\263\250\350\247\243.md" +++ "b/docs/java-web/springMVC/SpringMVC\346\272\220\347\240\201\345\210\206\346\236\220\357\274\232\346\266\210\346\201\257\350\275\254\346\215\242\345\231\250HttpMessageConverter\344\270\216@ResponseBody\346\263\250\350\247\243.md" @@ -1,5 +1,4 @@ # 目录 -* [目录](#目录) * [前言](#前言) * [现象](#现象) * [源码分析](#源码分析) @@ -29,17 +28,7 @@ 如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。 - - -## 目录 - -* [前言](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#preface) -* [现象](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#phenomenon) -* [源码分析](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#analysis) -* [实例讲解](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#demo) -* [关于配置](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#config) -* [总结](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#summary) -* [参考资料](http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html#reference) + ## 前言 diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Hibernate\345\205\245\351\227\250\347\273\217\345\205\270\344\270\216\346\263\250\350\247\243\345\274\217\345\274\200\345\217\221.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Hibernate\345\205\245\351\227\250\347\273\217\345\205\270\344\270\216\346\263\250\350\247\243\345\274\217\345\274\200\345\217\221.md" index e9ff30d..76dfece 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Hibernate\345\205\245\351\227\250\347\273\217\345\205\270\344\270\216\346\263\250\350\247\243\345\274\217\345\274\200\345\217\221.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Hibernate\345\205\245\351\227\250\347\273\217\345\205\270\344\270\216\346\263\250\350\247\243\345\274\217\345\274\200\345\217\221.md" @@ -5,9 +5,6 @@ * [相关类](#相关类) * [扩展](#扩展) * [参考文章](#参考文章) -* [微信公众号](#微信公众号) - * [个人公众号:程序员黄小斜](#个人公众号:程序员黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) 本文转载自互联网,侵删 diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Mybatis\345\205\245\351\227\250.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Mybatis\345\205\245\351\227\250.md" index fa50a2b..bc23655 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Mybatis\345\205\245\351\227\250.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Mybatis\345\205\245\351\227\250.md" @@ -18,9 +18,6 @@ * [3.会话工厂与会话](#3会话工厂与会话) * [4.运行流程](#4运行流程) * [测试工程搭建](#测试工程搭建) - * [微信公众号](#微信公众号-1) - * [个人公众号:程序员黄小斜](#个人公众号:程序员黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) 本文转载自互联网,侵删 diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Tomcat5\346\200\273\344\275\223\346\236\266\346\236\204\345\211\226\346\236\220.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Tomcat5\346\200\273\344\275\223\346\236\266\346\236\204\345\211\226\346\236\220.md" index fa1490e..5937ec0 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Tomcat5\346\200\273\344\275\223\346\236\266\346\236\204\345\211\226\346\236\220.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232Tomcat5\346\200\273\344\275\223\346\236\266\346\236\204\345\211\226\346\236\220.md" @@ -1,3 +1,9 @@ +# 目录 + + * [连接器(Connector)](#连接器(connector)) + * [容器(Container)](#容器(container)) + + 本文转载自互联网,侵删 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 @@ -187,4 +193,4 @@ Container[] conHosts = engine.findChildren(); 定位 Servlet 的流程图: -![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230405153609.png) \ No newline at end of file +![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230405153609.png) diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\344\273\216\346\211\213\345\212\250\347\274\226\350\257\221\346\211\223\345\214\205\345\210\260\351\241\271\347\233\256\346\236\204\345\273\272\345\267\245\345\205\267Maven.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\344\273\216\346\211\213\345\212\250\347\274\226\350\257\221\346\211\223\345\214\205\345\210\260\351\241\271\347\233\256\346\236\204\345\273\272\345\267\245\345\205\267Maven.md" index 7f80e4f..d6cfa8c 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\344\273\216\346\211\213\345\212\250\347\274\226\350\257\221\346\211\223\345\214\205\345\210\260\351\241\271\347\233\256\346\236\204\345\273\272\345\267\245\345\205\267Maven.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\344\273\216\346\211\213\345\212\250\347\274\226\350\257\221\346\211\223\345\214\205\345\210\260\351\241\271\347\233\256\346\236\204\345\273\272\345\267\245\345\205\267Maven.md" @@ -9,8 +9,6 @@ * [maven目录](#maven目录) * [Maven常用命令说明](#maven常用命令说明) * [Maven使用](#maven使用) - * [[](http://tengj.top/2018/01/01/maven/#%E4%BE%9D%E8%B5%96%E7%9A%84%E9%85%8D%E7%BD%AE "依赖的配置")依赖的配置](#[]httptengjtop20180101mavene4be9de8b596e79a84e9858de7bdae-依赖的配置依赖的配置) - * [[](http://tengj.top/2018/01/01/maven/#%E4%BE%9D%E8%B5%96%E8%8C%83%E5%9B%B4 "依赖范围")依赖范围](#[]httptengjtop20180101mavene4be9de8b596e88c83e59bb4-依赖范围依赖范围) * [传递性依赖](#传递性依赖) * [依赖范围](#依赖范围) * [Maven和Gradle的比较](#maven和gradle的比较) diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266Junit.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266Junit.md" index 0732005..ee6dffc 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266Junit.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\345\215\225\345\205\203\346\265\213\350\257\225\346\241\206\346\236\266Junit.md" @@ -16,9 +16,6 @@ * [5.1 示例一:简单的 JUnit 3.X 测试](#51-示例一:简单的-junit-3x-测试) * [6 个人建议](#6-个人建议) * [8 大单元测试框架](#8-大单元测试框架) -* [微信公众号](#微信公众号) - * [个人公众号:程序员黄小斜](#个人公众号:程序员黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\236\201\347\256\200\351\205\215\347\275\256\347\232\204SpringBoot.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\236\201\347\256\200\351\205\215\347\275\256\347\232\204SpringBoot.md" index adaa923..e98f6e8 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\236\201\347\256\200\351\205\215\347\275\256\347\232\204SpringBoot.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\236\201\347\256\200\351\205\215\347\275\256\347\232\204SpringBoot.md" @@ -15,9 +15,6 @@ * [Spring Boot 支持 JSP](#spring-boot-支持-jsp) * [集成 MyBatis](#集成-mybatis) * [springMVC和springboot的区别](#springmvc和springboot的区别) -* [微信公众号](#微信公众号) - * [个人公众号:程序员黄小斜](#个人公众号:程序员黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) 本文转载自互联网,侵删 diff --git "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\267\261\345\205\245\346\265\205\345\207\272Mybatis\345\237\272\346\234\254\345\216\237\347\220\206.md" "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\267\261\345\205\245\346\265\205\345\207\272Mybatis\345\237\272\346\234\254\345\216\237\347\220\206.md" index 1b37c95..7556dc4 100644 --- "a/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\267\261\345\205\245\346\265\205\345\207\272Mybatis\345\237\272\346\234\254\345\216\237\347\220\206.md" +++ "b/docs/java-web/\350\265\260\350\277\233JavaWeb\346\212\200\346\234\257\344\270\226\347\225\214\357\274\232\346\267\261\345\205\245\346\265\205\345\207\272Mybatis\345\237\272\346\234\254\345\216\237\347\220\206.md" @@ -1,5 +1,4 @@ # 目录 - * [引言](#引言) * [工作原理原型图](#工作原理原型图) * [工作原理解析](#工作原理解析) @@ -8,9 +7,6 @@ * [MyBatis的配置](#mybatis的配置) * [MyBatis的主要成员](#mybatis的主要成员) * [参考文章](#参考文章) -* [微信公众号](#微信公众号) - * [个人公众号:程序员黄小斜](#个人公众号:程序员黄小斜) - * [技术公众号:Java技术江湖](#技术公众号:java技术江湖) 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 diff --git "a/docs/java/concurrency/Java\345\271\266\345\217\221\346\214\207\345\215\227\357\274\232JMM\344\270\255\347\232\204final\345\205\263\351\224\256\345\255\227\350\247\243\346\236\220.md" "b/docs/java/concurrency/Java\345\271\266\345\217\221\346\214\207\345\215\227\357\274\232JMM\344\270\255\347\232\204final\345\205\263\351\224\256\345\255\227\350\247\243\346\236\220.md" index f7fe31b..c9a13f8 100644 --- "a/docs/java/concurrency/Java\345\271\266\345\217\221\346\214\207\345\215\227\357\274\232JMM\344\270\255\347\232\204final\345\205\263\351\224\256\345\255\227\350\247\243\346\236\220.md" +++ "b/docs/java/concurrency/Java\345\271\266\345\217\221\346\214\207\345\215\227\357\274\232JMM\344\270\255\347\232\204final\345\205\263\351\224\256\345\255\227\350\247\243\346\236\220.md" @@ -1,4 +1,4 @@ -# Table of Contents +# 目录 * [一、properly constructed / this对象逸出](#一、properly-constructed--this对象逸出) * [二、对象的安全发布](#二、对象的安全发布) diff --git "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\217\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\217\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md" index 61748b1..ab7b901 100644 --- "a/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\217\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/docs/java/design-parttern/\345\210\235\346\216\242Java\350\256\276\350\256\241\346\250\241\345\274\217\357\274\232JDK\344\270\255\347\232\204\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -1,4 +1,4 @@ -# Table of Contents +# 目录 * [**一,结构型模式**](#一,结构型模式) * [**1,适配器模式**](#1,适配器模式) diff --git "a/docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" similarity index 99% rename from "docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" rename to "docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" index 30d3350..ceda305 100644 --- "a/docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" +++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232GC\350\260\203\344\274\230\346\200\235\350\267\257\344\270\216\345\270\270\347\224\250\345\267\245\345\205\267.md" @@ -1,4 +1,4 @@ -# Table of Contents +# 目录 * [核心概念(Core Concepts)](#核心概念core-concepts) * [Latency(延迟)](#latency延迟) diff --git "a/docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" similarity index 99% rename from "docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" rename to "docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" index 5b7c03c..caac027 100644 --- "a/docs/java/jvm/temp/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" +++ "b/docs/java/jvm/\346\267\261\345\205\245\347\220\206\350\247\243JVM\350\231\232\346\213\237\346\234\272\357\274\232JVM\345\270\270\347\224\250\345\217\202\346\225\260\344\273\245\345\217\212\350\260\203\344\274\230\345\256\236\350\267\265.md" @@ -1,4 +1,4 @@ -# Table of Contents +# 目录 * [JVM优化的必要性](#jvm优化的必要性) * [JVM调优原则](#jvm调优原则) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md" index 634e1c6..15c003a 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\344\270\216NIO\346\200\273\347\273\223.md" @@ -1,3 +1,17 @@ +# 目录 + +* [目录](#目录) + * [Java IO](#java-io) + * [Socket编程](#socket编程) + * [客户端,服务端的线程模型](#客户端,服务端的线程模型) + * [IO模型](#io模型) + * [NIO](#nio) + * [AIO](#aio) + * [Tomcat中的NIO模型](#tomcat中的nio模型) + * [Tomcat的container](#tomcat的container) + * [netty](#netty) + + # 目录 * [Java IO](#java-io) * [Socket编程](#socket编程) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232IO\346\250\241\345\236\213\344\270\216Java\347\275\221\347\273\234\347\274\226\347\250\213\346\250\241\345\236\213.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232IO\346\250\241\345\236\213\344\270\216Java\347\275\221\347\273\234\347\274\226\347\250\213\346\250\241\345\236\213.md" index 838c7d7..deca42f 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232IO\346\250\241\345\236\213\344\270\216Java\347\275\221\347\273\234\347\274\226\347\250\213\346\250\241\345\236\213.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232IO\346\250\241\345\236\213\344\270\216Java\347\275\221\347\273\234\347\274\226\347\250\213\346\250\241\345\236\213.md" @@ -1,3 +1,21 @@ +# 目录 + +* [目录](#目录) + * [IO模型介绍](#io模型介绍) + * [阻塞 I/O(blocking IO)](#阻塞-io(blocking-io)) + * [非阻塞 I/O(nonblocking IO)](#非阻塞-io(nonblocking-io)) + * [I/O 多路复用( IO multiplexing)](#io-多路复用(-io-multiplexing)) + * [异步 I/O(asynchronous IO)](#异步-io(asynchronous-io)) + * [阻塞IO,非阻塞IO 与 同步IO, 异步IO的区别和联系](#阻塞io非阻塞io-与-同步io-异步io的区别和联系) + * [IO模型的形象举例](#io模型的形象举例) + * [Select/Poll/Epoll 轮询机制](#selectpollepoll-轮询机制) + * [Java网络编程模型](#java网络编程模型) + * [BIO](#bio) + * [NIO](#nio) + * [AIO](#aio) + * [对比](#对比) + + # 目录 * [IO模型介绍](#io模型介绍) * [阻塞 I/O(blocking IO)](#阻塞-io(blocking-io)) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JAVA\344\270\255\345\216\237\347\224\237\347\232\204socket\351\200\232\344\277\241\346\234\272\345\210\266.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JAVA\344\270\255\345\216\237\347\224\237\347\232\204socket\351\200\232\344\277\241\346\234\272\345\210\266.md" index 32a6684..04f25ab 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JAVA\344\270\255\345\216\237\347\224\237\347\232\204socket\351\200\232\344\277\241\346\234\272\345\210\266.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JAVA\344\270\255\345\216\237\347\224\237\347\232\204socket\351\200\232\344\277\241\346\234\272\345\210\266.md" @@ -1,3 +1,13 @@ +# 目录 + + * [当前环境](#当前环境) + * [处理 socket 输入输出流](#处理-socket-输入输出流) + * [结果展示](#结果展示) + * [请求模型优化](#请求模型优化) + * [补充1:TCP客户端与服务端](#补充1:tcp客户端与服务端) + * [补充2:UDP客户端和服务端](#补充2:udp客户端和服务端) + + 本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JavaNIO\344\270\200\346\255\245\346\255\245\346\236\204\345\273\272IO\345\244\232\350\267\257\345\244\215\347\224\250\347\232\204\350\257\267\346\261\202\346\250\241\345\236\213.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JavaNIO\344\270\200\346\255\245\346\255\245\346\236\204\345\273\272IO\345\244\232\350\267\257\345\244\215\347\224\250\347\232\204\350\257\267\346\261\202\346\250\241\345\236\213.md" index 65d0917..47e6d17 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JavaNIO\344\270\200\346\255\245\346\255\245\346\236\204\345\273\272IO\345\244\232\350\267\257\345\244\215\347\224\250\347\232\204\350\257\267\346\261\202\346\250\241\345\236\213.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232JavaNIO\344\270\200\346\255\245\346\255\245\346\236\204\345\273\272IO\345\244\232\350\267\257\345\244\215\347\224\250\347\232\204\350\257\267\346\261\202\346\250\241\345\236\213.md" @@ -1,3 +1,13 @@ +# 目录 + + * [当前环境](#当前环境) + * [代码地址](#代码地址) + * [知识点](#知识点) + * [获取 socket 连接](#获取-socket-连接) + * [完整示例](#完整示例) + * [处理连接就绪事件](#处理连接就绪事件) + + 本文转载自:[https://github.com/jasonGeng88/blog](https://github.com/jasonGeng88/blog) 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 @@ -474,4 +484,4 @@ public class NioNonBlockingHttpClient { ```` ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230405094343.png) -本文从 nio 的阻塞方式讲起,介绍了阻塞 I/O 与非阻塞 I/O 的区别,以及在 nio 下是如何一步步构建一个 IO 多路复用的模型的客户端。文中需要理解的内容比较多,如果有理解错误的地方,欢迎指正~ \ No newline at end of file +本文从 nio 的阻塞方式讲起,介绍了阻塞 I/O 与非阻塞 I/O 的区别,以及在 nio 下是如何一步步构建一个 IO 多路复用的模型的客户端。文中需要理解的内容比较多,如果有理解错误的地方,欢迎指正~ diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Java\351\235\236\351\230\273\345\241\236IO\345\222\214\345\274\202\346\255\245IO.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Java\351\235\236\351\230\273\345\241\236IO\345\222\214\345\274\202\346\255\245IO.md" index 2837b73..35be566 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Java\351\235\236\351\230\273\345\241\236IO\345\222\214\345\274\202\346\255\245IO.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Java\351\235\236\351\230\273\345\241\236IO\345\222\214\345\274\202\346\255\245IO.md" @@ -1,3 +1,18 @@ +# 目录 + +* [目录](#目录) + * [阻塞模式 IO](#阻塞模式-io) + * [非阻塞 IO](#非阻塞-io) + * [NIO.2 异步 IO](#nio2-异步-io) + * [1、返回 Future 实例](#1、返回-future-实例) + * [2、提供 CompletionHandler 回调函数](#2、提供-completionhandler-回调函数) + * [AsynchronousFileChannel](#asynchronousfilechannel) + * [AsynchronousServerSocketChannel](#asynchronousserversocketchannel) + * [AsynchronousSocketChannel](#asynchronoussocketchannel) + * [Asynchronous Channel Groups](#asynchronous-channel-groups) + * [小结](#小结) + + # 目录 * [阻塞模式 IO](#阻塞模式-io) * [非阻塞 IO](#非阻塞-io) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232LinuxEpoll\345\256\236\347\216\260\345\216\237\347\220\206\350\257\246\350\247\243.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232LinuxEpoll\345\256\236\347\216\260\345\216\237\347\220\206\350\257\246\350\247\243.md" index 8a4ec27..41852cd 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232LinuxEpoll\345\256\236\347\216\260\345\216\237\347\220\206\350\257\246\350\247\243.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232LinuxEpoll\345\256\236\347\216\260\345\216\237\347\220\206\350\257\246\350\247\243.md" @@ -1,3 +1,14 @@ +# 目录 + + * [为什么要 I/O 多路复用](#为什么要-io-多路复用) + * [select](#select) + * [poll](#poll) + * [epoll](#epoll) + * [epoll_create 用来创建一个 epoll 描述符:](#epoll_create-用来创建一个-epoll-描述符:) + * [epoll_ctl 用来增/删/改内核中的事件表:](#epoll_ctl-用来增删改内核中的事件表:) + * [epoll_wait 用来等待事件](#epoll_wait-用来等待事件) + + 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 > https://github.com/h2pl/Java-Tutorial diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Tomcat\344\270\255\347\232\204Connector\346\272\220\347\240\201\345\210\206\346\236\220\357\274\210NIO\357\274\211.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Tomcat\344\270\255\347\232\204Connector\346\272\220\347\240\201\345\210\206\346\236\220\357\274\210NIO\357\274\211.md" index 2a3740d..7404a6e 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Tomcat\344\270\255\347\232\204Connector\346\272\220\347\240\201\345\210\206\346\236\220\357\274\210NIO\357\274\211.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232Tomcat\344\270\255\347\232\204Connector\346\272\220\347\240\201\345\210\206\346\236\220\357\274\210NIO\357\274\211.md" @@ -1,3 +1,17 @@ +# 目录 + +* [目录](#目录) + * [前言](#前言) + * [源码环境准备](#源码环境准备) + * [endpoint](#endpoint) + * [init 过程分析](#init-过程分析) + * [start 过程分析](#start-过程分析) + * [Acceptor](#acceptor) + * [Poller](#poller) + * [processKey](#processkey) + * [总结](#总结) + + # 目录 * [前言](#前言) * [源码环境准备](#源码环境准备) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\345\237\272\344\272\216NIO\347\232\204\347\275\221\347\273\234\347\274\226\347\250\213\346\241\206\346\236\266Netty.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\345\237\272\344\272\216NIO\347\232\204\347\275\221\347\273\234\347\274\226\347\250\213\346\241\206\346\236\266Netty.md" index fd4cdf2..f2d39e8 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\345\237\272\344\272\216NIO\347\232\204\347\275\221\347\273\234\347\274\226\347\250\213\346\241\206\346\236\266Netty.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\345\237\272\344\272\216NIO\347\232\204\347\275\221\347\273\234\347\274\226\347\250\213\346\241\206\346\236\266Netty.md" @@ -1,3 +1,23 @@ +# 目录 + +* [目录](#目录) + * [Netty概述](#netty概述) + * [Netty简介](#netty简介) + * [Netty都有哪些组件?](#netty都有哪些组件?) + * [Netty是如何处理连接请求和业务逻辑的呢?](#netty是如何处理连接请求和业务逻辑的呢?) + * [如何配置一个Netty应用?](#如何配置一个netty应用?) + * [Netty是如何处理数据的?](#netty是如何处理数据的?) + * [如何处理我们的业务逻辑?](#如何处理我们的业务逻辑?) + * [ByteBuf](#bytebuf) + * [Channel](#channel) + * [ChannelHandler](#channelhandler) + * [ChannelPipeline](#channelpipeline) + * [EventLoop](#eventloop) + * [Bootstrap](#bootstrap) + * [Echo示例](#echo示例) + * [参考文献](#参考文献) + + # 目录 * [Netty概述](#netty概述) * [etty简介](#etty简介) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220NIO\345\214\205\344\270\255\347\232\204Buffer\343\200\201Channel\345\222\214Selector.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220NIO\345\214\205\344\270\255\347\232\204Buffer\343\200\201Channel\345\222\214Selector.md" index 020f65f..5d47624 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220NIO\345\214\205\344\270\255\347\232\204Buffer\343\200\201Channel\345\222\214Selector.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220NIO\345\214\205\344\270\255\347\232\204Buffer\343\200\201Channel\345\222\214Selector.md" @@ -1,3 +1,22 @@ +# 目录 + +* [目录](#目录) + * [Buffer](#buffer) + * [position、limit、capacity](#position、limit、capacity) + * [初始化 Buffer](#初始化-buffer) + * [填充 Buffer](#填充-buffer) + * [提取 Buffer 中的值](#提取-buffer-中的值) + * [mark() & reset()](#mark--reset) + * [rewind() & clear() & compact()](#rewind--clear--compact) + * [Channel](#channel) + * [FileChannel](#filechannel) + * [SocketChannel](#socketchannel) + * [ServerSocketChannel](#serversocketchannel) + * [DatagramChannel](#datagramchannel) + * [Selector](#selector) + * [小结](#小结) + + # 目录 * [Buffer](#buffer) * [position、limit、capacity](#position、limit、capacity) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220mmap\345\222\214DirectBuffer.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220mmap\345\222\214DirectBuffer.md" index f50c0df..8256703 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220mmap\345\222\214DirectBuffer.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\346\236\220mmap\345\222\214DirectBuffer.md" @@ -1,3 +1,30 @@ +# 目录 + +* [目录](#目录) +* [mmap基础概念](#mmap基础概念) +* [mmap内存映射原理](#mmap内存映射原理) +* [mmap和常规文件操作的区别](#mmap和常规文件操作的区别) +* [mmap优点总结](#mmap优点总结) +* [mmap使用细节](#mmap使用细节) + * [堆外内存](#堆外内存) + * [在讲解DirectByteBuffer之前,需要先简单了解两个知识点](#在讲解directbytebuffer之前,需要先简单了解两个知识点) + * [java引用类型,因为DirectByteBuffer是通过虚引用(Phantom Reference)来实现堆外内存的释放的。](#java引用类型,因为directbytebuffer是通过虚引用phantom-reference来实现堆外内存的释放的。) + * [关于linux的内核态和用户态](#关于linux的内核态和用户态) + * [DirectByteBuffer ———— 直接缓冲](#directbytebuffer--直接缓冲) + * [DirectByteBuffer堆外内存的创建和回收的源码解读](#directbytebuffer堆外内存的创建和回收的源码解读) + * [堆外内存分配](#堆外内存分配) + * [Bits.reserveMemory(size, cap) 方法](#bitsreservememorysize-cap-方法) + * [堆外内存回收](#堆外内存回收) + * [通过配置参数的方式来回收堆外内存](#通过配置参数的方式来回收堆外内存) + * [堆外内存那些事](#堆外内存那些事) + * [使用堆外内存的原因](#使用堆外内存的原因) + * [什么情况下使用堆外内存](#什么情况下使用堆外内存) + * [堆外内存 VS 内存池](#堆外内存-vs-内存池) + * [堆外内存的特点](#堆外内存的特点) + * [堆外内存的一些问题](#堆外内存的一些问题) + * [参考文章](#参考文章) + + # 目录 * [mmap基础概念](#mmap基础概念) * [mmap内存映射原理](#mmap内存映射原理) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\350\260\210Linux\344\270\255Selector\347\232\204\345\256\236\347\216\260\345\216\237\347\220\206.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\350\260\210Linux\344\270\255Selector\347\232\204\345\256\236\347\216\260\345\216\237\347\220\206.md" index 02dc4e4..550f7ab 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\350\260\210Linux\344\270\255Selector\347\232\204\345\256\236\347\216\260\345\216\237\347\220\206.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\265\205\350\260\210Linux\344\270\255Selector\347\232\204\345\256\236\347\216\260\345\216\237\347\220\206.md" @@ -1,3 +1,22 @@ +# 目录 + +* [目录](#目录) + * [概述](#概述) + * [Selector的中的重要属性](#selector的中的重要属性) + * [Selector 源码解析](#selector-源码解析) + * [1、Selector的构建](#1、selector的构建) + * [接下来看下 selector.open():](#接下来看下-selectoropen:) + * [EPollSelectorImpl](#epollselectorimpl) + * [EPollArrayWrapper](#epollarraywrapper) + * [ServerSocketChannel的构建](#serversocketchannel的构建) + * [将ServerSocketChannel注册到Selector](#将serversocketchannel注册到selector) + * [EPollSelectorImpl. implRegister](#epollselectorimpl-implregister) + * [Selection操作](#selection操作) + * [epoll原理](#epoll原理) + * [后记](#后记) + * [参考文章](#参考文章) + + # 目录 * [概述](#概述) * [Selector的中的重要属性](#selector的中的重要属性) diff --git "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\267\261\345\272\246\350\247\243\350\257\273Tomcat\344\270\255\347\232\204NIO\346\250\241\345\236\213.md" "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\267\261\345\272\246\350\247\243\350\257\273Tomcat\344\270\255\347\232\204NIO\346\250\241\345\236\213.md" index ad909d5..65f5206 100644 --- "a/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\267\261\345\272\246\350\247\243\350\257\273Tomcat\344\270\255\347\232\204NIO\346\250\241\345\236\213.md" +++ "b/docs/java/network-programming/Java\347\275\221\347\273\234\347\274\226\347\250\213\344\270\216NIO\350\257\246\350\247\243\357\274\232\346\267\261\345\272\246\350\247\243\350\257\273Tomcat\344\270\255\347\232\204NIO\346\250\241\345\236\213.md" @@ -1,3 +1,16 @@ +# 目录 + +* [目录](#目录) + * [一、I/O复用模型解读](#一、io复用模型解读) + * [二、TOMCAT对IO模型的支持](#二、tomcat对io模型的支持) + * [三、TOMCAT中NIO的配置与使用](#三、tomcat中nio的配置与使用) + * [四、NioEndpoint组件关系图解读](#四、nioendpoint组件关系图解读) + * [五、NioEndpoint执行序列图](#五、nioendpoint执行序列图) + * [六、NioEndpoint源码解读](#六、nioendpoint源码解读) + * [七、关于性能](#七、关于性能) + * [八、总结](#八、总结) + + # 目录 * [一、I/O复用模型解读](#一、io复用模型解读) * [二、TOMCAT对IO模型的支持](#二、tomcat对io模型的支持) diff --git a/src/main/java/md/mdToc.java b/src/main/java/md/mdToc.java index 0cf8f98..2fb42bd 100644 --- a/src/main/java/md/mdToc.java +++ b/src/main/java/md/mdToc.java @@ -4,7 +4,7 @@ public class mdToc { public static void main(String[] args) { - String path = "D:\\idea_project\\JavaTutorial\\docs\\java\\jvm\\temp"; + String path = "D:\\idea_project\\JavaTutorial\\docs\\java-web\\temp"; AtxMarkdownToc.newInstance().genTocDir(path); } }