• MiniCat:手写Http服务器


    minicat

    项目介绍

    已实现http基础协议、参数接受、servlet、filter、cookie、多文件上传等。支持NIO。

    一款轻量化Http服务器。支持bio、nio两种模式。归属Coody Framework下。传送门:https://gitee.com/coodyer/coody-icop

    更新说明

    2018-07-02:MiniCat正式立项。

    2018-07-03:实现Http基本请求与响应。

    2018-07-04:实现Session机制、Servlet、Gzip等

    2018-07-05:实现formdata参数装载、Multipart参数与文件上传

    2018-07-06:拓展Nio模式

    2018-07-07:优化Http协议加载,修复某些情况下read阻塞。

    2018-07-09:实现Filter机制。

    截图说明

    一个Servlet:

    Servlet

    Multipart文件上传:

    文件上传

    参数接受:

    接受参数

    1、本项目未使用任意框架 2、本项目基于Socket实现Http服务器 3、本项目将在近期内持续更新

    性能说明

    基于MiniCat下测试Servlet打印hello world

    NIO :i5 2320 8G DDR3 QPS峰值:2000 均值:1850

    BIO :i5 2320 8G DDR3 QPS峰值:1800 均值:1720

    NIO :E3 1230V2 8G DDR3 QPS峰值:2900 均值:2700

    BIO :E3 1230V2 8G DDR3 QPS峰值:2800 均值:2650

    TOMCAT:I5 2320 QPS峰值:1760 均值:1700

    其中Tomcat未开启Nio和Apr(笔者懒得配了),喜欢折腾的小伙伴可以去试试

    其余未测试======

    本项目现实现功能:

    1、Http服务端访问 2、Http(GET POST 多图文上传)参数装载 3、Gzip压缩 4、Cookie机制

    本项目将实现功能:

    1、服务器配置中心 2、程序启动入口 3、外置项目加载 4、内置整合加载 5、兼容javax规范 6、jstl模板引擎

    运行说明:

    1、新建Servlet。继承org.coody.framework.minicat.servlet.HttpServlet。实现doService方法

    输入图片说明

    2、在新建的Servlet上写上@Servlet("/index.do")地址。其中/index.do即Mapping地址

    输入图片说明

    3、在org.coody.web.init.Rute方法里面调用CoreApp.init(Class<>...clazz)方法上。初始化这个Servlet。

    输入图片说明

    4、运行org.coody.web.init.Rute的main方法

    5、访问http://127.0.0.1/index.do即可

    输入图片说明

    相关配置:

    配置类位于org.coody.framework.minicat.config.MiniCatConfig

    输入图片说明

    参考网址见:https://gitee.com/coodyer/minicat

    代码网址见:https://github.com/lipengsheng/MiniCat/tree/master

  • 相关阅读:
    HashMap了解吗?
    阻塞队列知道吗
    深入理解Java枚举类型(enum)
    CountDownLatch/CyclicBarrier/Semaphore 使用过吗?
    Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
    选择排序算法
    Node版本管理器NVM常用命令
    希尔排序算法
    插入排序算法
    mybatis与hibernate的区别持久层对比【面试题】
  • 原文地址:https://www.cnblogs.com/lipengsheng-javaweb/p/12987431.html
Copyright © 2020-2023  润新知