前言 Http我们都已经耳熟能详了,而关于Http学习的文章网上有很多,各个知识点的讲解也可说是深入浅出.然而,学习过后,我们对Http还是一知半解.问题出在了哪? Http是一个客户机与服务器之间的通信的协议,真的想学习Http,就必须把客户机和服务器也学了,也就是说,必须立体的学习,不然我们永远都是一知半解. 现在,我们手工搭建一个服务器,立体的学习下Http,将我们以为的知识点连成线. 定义 学习前,简单的了解下定义: Http是超文本传输协议,用于保证客户机与服务器之间的通信.在客户机和…
手写服务器最终版本; <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.bjsxt.servlet.LoginWeb</servlet-class> </servlet> <servlet-m…
作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 人看手机,机器学习! 正好是2020年,看到这张图还是蛮有意思的.以前小时候总会看到一些科技电影,讲到机器人会怎样怎样,但没想到人似乎被娱乐化的东西,搞成了低头族.大肚子! 当意识到这一点时,其实非常怀念小时候.放假的早上跑出去,喊上三五个伙伴,要不下河摸摸鱼.弹弹玻璃球.打打p…
1.搭建框架 我们只是简单模拟,框架简单分三个模块 a,服务器端server包 b,servlet,根据不同的请求url,利用反射生产对应的servlet c,IO工具包,用来关闭IO流 d,编写web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>login</servlet-name> <s…
项目工程总览: 1.Dispatcher类(一个请求与响应就是一个Dispatcher) package com.bjsxt.server; import java.io.IOException; import java.net.Socket; import com.bjsxt.servlet.Servlet; import com.bjsxt.util.IOCloseUtil; /** * 一个请求与响应就是一个Dispatcher * @author Administrator * */ p…
Tomcat 是非常流行的 Web Server,它还是一个满足 Servlet 规范的容器.那么想一想,Tomcat 和我们的 Web 应用是什么关系? 从感性上来说,我们一般需要把 Web 应用打成 WAR 包部署到 Tomcat 中,在我们的 Web 应用中,我们要指明 URL 被哪个类的哪个方法所处理「不论是原始的 Servlet 开发,还是现在流行的 Spring MVC 都必须指明」. 由于我们的 Web 应用是运行在 Tomcat 中,那么显然,请求必定是先到达Tomcat 的.T…
今天我们来写一个类似于Tomcat的简易服务器.可供大家深入理解一下tomcat的工作原理,本文仅供新手参考,请各位大神指正!首先我们要准备的知识是: Socket编程 HTML HTTP协议 服务器编写 反射 XML解析有了上面的知识,我们可以开始写我们的代码了~~1.首先我们要应用Socket编程写一个简单的服务端用来接收服务器端发来的请求: import java.io.BufferedReader; import java.io.IOException; import java.io.I…
预备知识 编写服务器用到的知识点 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 数据…
简单web服务器 回忆socket 创建客服端(在httpClient_1包下) public class Client {    public static void main(String[] args) {        //1.创建socket对象        Socket client=null;​        DataOutputStream dos = null;        DataInputStream dis =null;        try {          …
摘要:从手写线程池开始,逐步的分析这些代码在Java的线程池中是如何实现的. 本文分享自华为云社区<手写线程池,对照学习ThreadPoolExecutor线程池实现原理!>,作者:小傅哥. 谢飞机,小记!,上次吃亏在线程上,这可能一次坑掉两次吗! 谢飞机:你问吧,我准备好了!!! 面试官:嗯,线程池状态是如何设计存储的? 谢飞机:这!下一个,下一个! 面试官:Worker 的实现类,为什么不使用 ReentrantLock 来实现呢,而是自己继承AQS? 谢飞机:我-! 面试官:那你简述下,…