点击查看代码 public class DiyTomcat { private int port = 8080; public static final HashMap<String, DiyServlet> SERVLET_MAPPING = new HashMap<>(); public static final HashMap<String,String> URL_MAPPING = new HashMap<>(); private static Th…
目录 Java多线程之一线程及其基本使用 Java多线程之二(Synchronized) Java多线程之三volatile与等待通知机制示例 线程池 什么是线程池 线程池一种线程使用模式,线程池会维护多个线程,等待着分配可并发执行的任务,当有任务需要线程执行时,从线程池中分配线程给该任务而不用主动的创建线程. 线程池的好处 如果在我们平时如果需要用到线程时,我们一般是这样做的:创建线程(T1),使用创建的线程来执行任务(T2),任务执行完成后销毁当前线程(T3),这三个阶段是必须要有的. 而如…
1. 使用java 编写一个echo http服务器 使用java 编写一个echo http服务器 https://github.com/ZhongJinHacker/diy-tomcat/tree/base-tomcat 2. 编写一个提供servlet能力的 http服务器 编写一个提供servlet能力的 http服务器 https://github.com/ZhongJinHacker/diy-tomcat/tree/bio-tomcat 3. 编写一个有线程池化能力的servlet…
这是why的第 45 篇原创文章.说点不一样的线程池执行策略和线程拒绝策略,探讨怎么让线程池先用完最大线程池再把任务放到队列中. 荒腔走板 大家好,我是 why,一个四川程序猿,成都好男人. 先是本号的特色,技术分享之前先简短的荒腔走板聊聊生活.让文章的温度更多一点点. 上面的图是我在一次跑步的过程中拍的.活动之前赛事方搞了个留言活动,收集每公里路牌的一个宣传语. 我的留言有幸被选中了: 每人知道你在坚持什么,但你自己心里应该清楚. 是在说跑马拉松,也是在说其他的事情. 我记得那天的太阳,骄阳似…
学习JavaWeb之后,只知道如何部署项目到Tomcat中,而并不了解其内部如何运行,底层原理为何,因此写下此篇博客初步探究一下.学习之前需要知识铺垫已列出:Tomcat目录结构.HTTP协议.IO.网络编程(未完善) 1. Tomcat(正版) 笔者称自己手写的Tomcat为盗版,反之则为正版.在手写简易版Tomcat之前,我们来看看如何使用正版的Tomcat 1.1 创建JavaWeb工程 这里以Myeclipse为例 1.2 新建Servlet 新建MyServlet类继承HttpServ…
默认配置下,Tomcat 会为每个连接器创建一个绑定的线程池(最大线程数 200).在大多数情况下你不需要改这个配置(除非增大最大线程数以满足高负载需要).但是 Tomcat 喜欢在每个工作者线程的 thread-local 上下文缓存一些诸如 PageContext 以及标签缓存的对象.正因如此,就会有你期望 Tomcat 能够将线程关掉以清理出来一些内存的情况.此外,每个连接器维护自己的线程池的话,根据服务器的承受能力来设置一个(线程数)最高值会变得更加困难.解决这些问题的答案就是使用一个共…
预备知识 编写服务器用到的知识点 1) Socket 编程2) HTML3) HTTP 协议4) 反射5) XML 解析6) 服务器编写 Socket编程 https://www.cnblogs.com/bfcs/p/10790130.html HTML知识 HTML:HyperText Markup Language 超文本标记语言用于描述网页文档的一种标记语言 表单(form):与用户之间进行交互 method:请求方式 get/post get 数据量小,安全性低,默认方式 post 数据…
1:配置executor属性打开/conf/server.xml文件,在Connector之前配置一个线程池:[html] view plain copy<Executor name="tomcatThreadPool"           namePrefix="tomcatThreadPool-"           maxThreads="1000"           maxIdleTime="300000"  …
创建一个线程池,每有一个连接对象就将它添加到工作队列中,线程池中的线程通过竞争来取得任务并执行它(它是通过信号量实现的). //filename threadpool.h #ifndef THREADPOOL_H #define THREADPOOL_H #include <list> #include <cstdio> #include <exception> #include <pthread.h> #include <locker.h> t…
通用调用 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 java 从零开始手写 RPC (03) 如何实现客户端调用服务端? java 从零开始手写 RPC (04) -序列化 前面我们的例子是一个固定的出参和入参,固定的方法实现. 本节将实现通用的调用,让框架具有更广泛的实用性. 基本思路 所有的方法调用,基于反射进行相关处理实现. 服务端 核心类 RpcServer 调整如下: serverBo…