当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

wast

高性能 Java 库
授权协议 Apache
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 不详
投 递 者 慕弘伟
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

wast 是一个轻量级且高性能 java 语言开发框架和工具包,集成了最快的json库之一和最快的yaml 解析库,代码轻量,无任何依赖。

 

功能

  1. 内置json模块在性能评测上远远超过曾经的fastjson和jackson,即使是和fastjson2的最新版本性能评测中也能占据明显的领先优势;
  2. 内置yaml解析库性能是snakeyaml的5-20倍;
  3. 内置表达式引擎解析性能比现有的spel高0.5倍左右;

JSON使用方法

// 序列化
Map map = new HashMap();
map.put("msg", "hello, light json !");
String result = JSON.toJsonString(map);

// 序列化到文件
Map map = new HashMap();
map.put("msg", "hello, light json !");
JSON.writeJsonTo(map, new File("/tmp/test.json"));

// 格式化输出
Map map = new HashMap();
map.put("name", "zhangsan");
map.put("msg", "hello, light json !");
JSON.toJsonString(map, WriteOption.FormatOut);

// 反序列化map
String json = "{\"msg\":\"hello, light json !\",\"name\":\"zhangsan\"}";
Map map = (Map) JSON.parse(json);
System.out.println(map);

// 反序列化到指定类型
String json = "{\"msg\":\"hello, light json !\",\"name\":\"zhangsan\"}";
Map map = JSON.parseObject(json, Map.class);
System.out.println(map);


//  IO流读取解析
Map result = null;
    
// 1 读取网络资源 GET
result = JSON.read(new URL("https://developer.aliyun.com/artifact/aliyunMaven/searchArtifactByGav?groupId=spring&artifactId=&version=&repoId=all&_input_charset=utf-8"), Map.class);
    
// 2 读取输入流
InputStream inputStream = InputStreamTest.class.getResourceAsStream("/sample.json");
result = JSON.read(inputStream, Map.class);
    
// 3 读取文件
result = JSON.read(new File("/tmp/smaple.json"), Map.class);

YAML使用方法

    // yaml字符串
    String yamlStr = StringUtils.fromResource("/yaml/t2.yaml");
    
    // 读取文档
    YamlDocument yamlDoc = YamlDocument.parse(yamlStr);
    
    // 转换为properties
    Properties properties = yamlDoc.toProperties();
    System.out.println(properties);
    
    // 转换为map
    yamlDoc.toMap();
    
    // 转化为指定bean
    YamlTest bean = yamlDoc.toEntity(YamlTest.class);
    
    // 获取根节点
    YamlNode yamlRoot = yamlDoc.getRoot();
    
    // 查找node
    YamlNode nameNode = yamlRoot.get("/metadata/name");
    
    // 获取/metadata/name
    String metadataName = yamlRoot.getPathValue("/metadata/name", String.class);
    // 或者 nameNode.getValue();
    System.out.println(" metadataName " + metadataName);
    
    // 修改
    yamlRoot.setPathValue("/metadata/name", "this is new Value ");
    
    String newMetadataName = (String) nameNode.getValue();
    System.out.println(newMetadataName.equals("this is new Value "));
    
    // 反向序列化生成yaml字符串
    System.out.println(yamlDoc.toYamlString());
    
    // 输出到文件
    yamlDoc.writeTo(new File("/tmp/test.yaml"));

表达式引擎

// 直接运行
Expression.eval("1+1");  // 输出2
Expression.eval("1+1+'a'");  // 输出2a

Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Expression.eval("a+b+c",map);  // 输出6

// 解析运行
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Expression varExpr = Expression.parse("a + b + c");  // 只需要解析一次
varExpr.evaluate(map);     // 输出6

map.put("c", 30);
varExpr.evaluate(map);     // 输出33

// 函数使用
Map context = new HashMap();
context.put("tip", "1 ");
context.put("name", "zhangsan, %s");
context.put("msg", "hello");
context.put("type", 1);
context.put("a", 1);
context.put("b", 12);
context.put("c", 111);
context.put("B6_AvgCpuUsed", 1.0);
context.put("B5_AvgCpuUsed", 2.0);
context.put("B4_AvgCpuUsed", 3.0);
context.put("vars", new String[] {"hello"});

EvaluateEnvironment evaluateEnvironment = EvaluateEnvironment.create(context);
evaluateEnvironment.registerStaticMethods(Math.class, String.class);
evaluateEnvironment.registerFunction("min", new ExprFunction<Object, Number>() {
    @Override
    public Number call(Object... params) {
        Arrays.sort(params);
        return (Number) params[params.length - 1];
    }
});


System.out.println( Expression.eval("@min(@sum(a,b,c), 50, 125, 2, -11)", evaluateEnvironment));
System.out.println( Expression.eval("@max(@sum(a,b,c), 50, 125, 55, 152)", evaluateEnvironment));


  • 一、Emscripten编译优化分为两个步骤 每个源文件编译成目标文件(.bc文件),通过LLVM优化 目标文件编译成js文件 二、Js使用库的两种方式 1. 多个bitcode直接变成js ​​​emcc project.bc libstuff.bc -o final.js 2. 多个bitcode先编译成一个,然后在变成js emcc project.bc libstuff.bc -o all

  • 出现这个报错前的操作 因为安装html插件时,装错了,想通过npm uninstall 来删掉重装,结果没删除成功,然后我选择了一种粗暴的方法,直接删掉node-modules,然后通过npm install 重新安装依赖,结果安装不成功,但是使用cnpm安装又没有报错提示,我以为安装好了,当要用webpack打包和用webpack-dev-server运行时就会报错 Error: Cannot

 相关资料
  • 问题内容: 我需要一些想法来实现Java的(真正)高性能内存数据库/存储机制。在存储20,000+个Java对象的范围内,每5秒钟左右更新一次。 我愿意接受的一些选择: 纯JDBC /数据库组合 JDO JPA / ORM /数据库组合 对象数据库 其他存储机制 我最好的选择是什么?你有什么经验? 编辑:我还需要能够查询这些对象 问题答案: 您可以尝试使用Prevayler之类的工具(基本上是一个

  • 我正在用docx4j做一些测试。我需要做的是将复杂的Word文档(2-3页的文本、表格、项目符号列表、图像)转换成XHTML。

  • 我在我的应用程序中创建了第二个DataSource。 我用HikariDataSource创建了它,因为它断开了连接,所以出现了问题。 现在它没有断开,但是很慢 我的配置如下: 爪哇: 有人能告诉我如何提高绩效吗。 它们是表的小查询,分页约为25条记录,需要4秒钟。 我观察到,查询一个select的200条记录需要46秒,而查询只需要2秒。 以前,它们是千分之一秒。 非常感谢。

  • 问题内容: 我正在开始编写Java库以实现高性能的有限状态机。 我知道那里有很多库,但是我想从头开始编写自己的库,因为那里几乎所有的库都构造了自动机,每次只处理一个就优化了。 我想知道在实现这样的高性能库时,SO社区中涉足状态机设计的人们认为最重要/最好的设计原则。 注意事项 生成的自动机通常并不庞大。(〜100-500个州)。 该实现应该能够 扩展 。 该实现应支持 快速转换 (最小化,确定化等

  • 我有一个cron作业方法,它根据用户的特色故事构建用户的故事提要,跟踪类别并跟踪用户。 最终提要按正确顺序添加到以下数据库表中: 用户提要表: Uid 方法如下,包含注释<代码: 对于30名用户,上述方法需要约35秒才能完成<问:我如何改进代码和性能?

  • imi v1.0.13 版本新增了一个 Swoole\Coroutine\Http\Server 实现的协程服务器。需要 Swoole 4.4+ 才可使用该特性。 该特性是可选的,不影响以前使用的服务器模式。 使用协程服务器特性,依靠 Linux 系统的端口重用机制,系统级的负载均衡,可以让你的多进程 Http 服务处理请求的能力得到提升。 使用 ab,本机->虚拟机(双核+2进程)压测Hello