WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎.
JSON 全场景性能优化到了极致,全场景包括 JDK6-JDK24,内容包括短 JSON,中长 JSON 以及超长 JSON 读写性能,以及输入流按需解析等等。
源码地址
- gitee: https://gitee.com/xiaoch0209/wast
- github: https://github.com/wycst/wast
性能测试:
- gitee: https://gitee.com/xiaoch0209/wast-jmh-test
- github: https://github.com/wycst/wast-jmh-test
- JSON 与 simdjson-java 对比: JSON 性能测试之二 - wastjson 每秒 6GB 解析速度完胜 simdjson-java
- 表达式性能测试 1: WastEl 表达式引擎性能测试 - 每秒千万次运算超强性能 - OSCHINA - 中文开源技术交流社区
- 表达式性能测试 2: express-benchmark・闲。大赋 (李家智)/Beetl - 码云 - 开源中国
v0.0.27 & v0.0.28 更新内容
v0.0.27
- [JDBC] - 支持KINGBASEES(使用mysql方言);
- [COMMON] - 修复驼峰转驼峰问题(已是驼峰的字符串继续转驼峰问题);
- [El引擎] - 表达式静态数组添加[]支持, []和原来的{}用法一致,例如{'a', 'b'}和['a', 'b']一样,并调整输出由原来的数组改为ArrayList类型方便方法调用;
- [Clients] -http SSE客户端支持;
- [Yaml] -修复yaml序列化value为null报错问题;
- JSON提供JSON.parseDouble方法(性能优于JDK内置的Double.parseDouble)
- JSON提供JSON.toString(double/float)(性能在JDK21以下远优于JDK内置的Double.toString,JDK21以上稍优)
v0.0.28
- JSON针对枚举类的解析支持单引号;
- JSON浮点数(float & double)序列化最短序列优化;
SSE java客户端示例
HttpClient httpClient = new HttpClient(); Map<String, Object> headers = new HashMap<String, Object>(); headers.put("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiIxIiwicGNvZGUiOiI3MDAxIiwidW4iOiJkZXYiLCJybiI6IueuoeeQhuWRmCIsInJpZCI6ImF2bHNHYW1DY0dhdGNEYmlLUUkiLCJleHAiOjE3NTkxNTg2MDgsIm1ybGUiOiIwIiwidGlkIjoiZGVmYXVsdF90ZW5hbnQifQ.kl2oNVb2mlmSctPWCFC9MlhHS3pdatl2IptgyPCFZag"); headers.put("client-id", "f7cce9099aadc57e677e548f34d0a4a9"); headers.put("Connection", "keep-alive"); headers.put("assistant-key", "langchat-8c2f9bab5c1147fc90aa00dadc679382"); String json = "{\"conversationId\":\"1c76578e-30ed-4eac-b5ba-b4f62a9ea004\",\"messages\":[{\"role\":\"user\",\"content\":\"你能做什么?\"}]}"; HttpClientConfig clientConfig = HttpClientConfig.create() .headers(headers) .contentType("application/json") .jsonBody(json) // 自动设置 application/json,支持直接传入对象或者序列化好的JSON字符串(内部自动检测) .retry(-1, 10) // 重试参数: -1代表无限次重连, 10为每次重连间隔 .responseStream(true); // 开启流式 String url = "http://192.168.1.146:30080/v1/chat/completions"; EventSourceHandler eventSourceHandler = httpClient.eventSource(url, HttpClientMethod.POST, clientConfig, new EventSourceCallback() { @Override public void onmessage(EventSourceMessage message) { System.out.println("data: " + message.getData()); } @Override public void onerror(Throwable throwable) { // throwable.printStackTrace(); } @Override public void onopen(HttpClientResponse response) { System.out.println("open " + response); } @Override public void onclose() { System.out.println("close"); } }); 更多使用文档地址
查看 Wast 文档




还没有评论,来说两句吧...