🎉smart-http v1.2.0 版本发布
1、smart-http 简介
smart-http 是一款可编程式HTTP应用微内核。它是目前市面上为数不多即能严格准守 RFC2616 规范,又兼顾卓越性能的 Http 服务器。
smart-http 完全建立在自研的通信框架 smart-socket 之上,使其有着纯正的国产化血统。该项目对标的是 nginx,高性能、轻量化是其追求和坚持的目标。
严格意义上 smart-http 算不上是一个框架,它更像一个工具类库。开发人员可以基于它封装出契合特定场景的应用框架或解决方案。
模块介绍
模块 | 说明 | 代码量 |
---|---|---|
smart-http-common | 基础通用模块,包括枚举、日志、工具类 | 2300+ |
smart-http-client | HTTP Client编解码和响应式编程设计 | 1400+ |
smart-http-server | HTTP Server和WebSocket的编解码和应用层接口设计 | 2700+ |
smart-http-restful | 基于smart-http-server的简易版 MVC模块(实验性) | 380+ |
smart-http-test | 单测模块 | 1600+ |
2、 版本更新
Maven
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-server</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-client</artifactId> <version>1.2.0</version> </dependency>
本次更新内容:
-
升级smart-socket至
1.5.27
。 -
更新Readme中的示例程序。
-
重构http解码器的接口设计。
-
HTTP解码异常时抛出的异常由
RuntimeException
调整成DecoderException
。 -
HttpRequest
新增isSecure
接口,用于识别当前是否启用https
。 -
提供HTTP解码算法基准性能测试的的jmh程序。
-
合并社区PR:升级fastjson版本到1.2.83,1.2.83版本之前存在代码执行漏洞风险,CVE-2022-25845
3、快速上手
3.1 HTTP 服务端
public class SimpleSmartHttp { public static void main(String[] args) { HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.httpHandler(new HttpServerHandler() { @Override public void handle(HttpRequest request, HttpResponse response) throws IOException { response.write("hello smart-http<br/>".getBytes()); } }).setPort(8080).start(); } }
3.2 WebSocket 服务端
public class WebSocketDemo { public static void main(String[] args) { //1. 实例化路由Handle WebSocketRouteHandler routeHandle = new WebSocketRouteHandler(); //2. 指定路由规则以及请求的处理实现 routeHandle.route("/", new WebSocketDefaultHandler() { @Override public void handleTextMessage(WebSocketRequest request, WebSocketResponse response, String data) { response.sendTextMessage("接受到客户端消息:" + data); } }); // 3. 启动服务 HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.webSocketHandler(routeHandle); bootstrap.start(); } }
3.3 Http客户端
public class HttpGetDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("www.baidu.com", 80); httpClient.get("/").header().keepalive(false).done() .onSuccess(response -> System.out.println(response.body())) .onFailure(Throwable::printStackTrace) .done(); } }
3.4 Restful
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-restful</artifactId> <version>${smarthttp.version}</version> </dependency>
@Controller public class RestfulDemo { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String helloworld() { return "hello world"; } public static void main(String[] args) throws Exception { RestfulBootstrap bootstrap = RestfulBootstrap.getInstance().controller(RestfulDemo.class); bootstrap.bootstrap().setPort(8080).start(); } }
smartboot开源组织,一个容易被误认为是在“重复造轮子”的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。
该组织内的明星项目包括:
smart-socket
历时5年精炼出2千多行代码,轻松实现百万级长连接的 AIO 通信框架。smart-http
基于 smart-socket 实现的 HTTP/1.1 web服务。smart-servlet
基于 smart-http 实现的 Servlet 3.1 容器服务。smart-mqtt
基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。smart-flow
一款具备可观测性的轻量级业务编排框架。组织地址:https://smartboot.tech/
代码仓库:https://gitee.com/smartboot

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软 Edge 113 正式发布
微软日前为所有支持的操作系统和平台发布了 Microsoft Edge 113 稳定版。新版本的浏览器对增强安全模式(Enhanced Security Mode)进行了修改、支持在 macOS 上自动更新,并为系统管理员提供了一些新策略。 Microsoft Edge 113 的主要变化是从浏览器中删除了基本安全模式,它整合了浏览器的增强型安全模式的安全级别设置。 默认情况下,Edge 在大多数系统上禁用了增强安全模式。该功能可以针对某些威胁提供保护,并禁用实时编译器,从而使浏览器更加安全。 此前,Edge 支持三种模式 —— 基本、平衡和严格。而在 Edge 113 中,微软删除了基本模式。在升级到 Edge 113 后,已将浏览器配置为使用基本模式的 Edge 用户会自动使用平衡模式。 Edge 113 的第二个主要变化是浏览器在 macOS 设备上使用新的更新程序 —— 从 Microsoft 自动更新切换到 EdgeUpdater。这一转换使更新快速、可靠,对用户的干扰最小。 PDF View 设置的新策略:RestorePdfView 策略允许管理员控制 Microsoft...
- 下一篇
每日一博 | 一条 SQL 如何被 MySQL 架构中的各个组件操作执行的?
摘要:一条SQL如何被MySQL架构中的各个组件操作执行的,执行器做了什么?存储引擎做了什么?表关联查询是怎么在存储引擎和执行器被分步执行的?本文带你探探究竟! 本文分享自华为云社区《一条SQL如何被MySQL架构中的各个组件操作执行的?》,作者:砖业洋__。 1. 单表查询SQL在MySQL架构中的各个组件的执行过程 简单用一张图说明下,MySQL架构有哪些组件,接下来给大家用SQL语句分析 假如SQL语句是这样 SELECT class_no FROM student WHERE name = 'lcy' AND age > 18 GROUP BY class_no 其中name为索引,我们按照时间顺序来分析一下 1.客户端:客户端(如MySQL命令行工具、Navicat、MySQL Workbench或其他应用程序)发送SQL查询到MySQL服务器。 2.连接器:连接器负责与客户端建立连接、管理连接和维护连接。当客户端连接到MySQL服务器时,连接器验证客户端的用户名和密码,然后分配一个线程来处理客户端的请求。 3.查询缓存:查询缓存用于缓存先前执行过的查询及其结果。当收到...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址