• Nutz中那些好用的工具类


      Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上。内容主要涵盖了:Ioc、Aop、MVC、Dao、Json等WEB开发的方方面面。 
      它不仅轻巧,而且稳定高效。在大并发下,性能完全可以与spring mvc比肩。我的很多线上项目都已经开始用它,表现很不错哦。 
      另外,框架的主要开发者学过UE(User Experience),框架中大量应用着设计模式和巧妙的设计,每个可能的地方都预埋了扩展点,开发人员在框架的使用上会非常的舒服。 谁说国产框架没有精品啦?!推荐大家赶快脱离SSH的魔爪,投入Nutz的怀抱吧。 

      Nutz除了基本的功能以外,其实还提供了很多非常实用的工具类。这些类虽然没有在官方的文档中体现,但却可以大幅度的减少你的代码行数哦。今天我就给大家来介绍一下:

    一、Http 类

      Java应用常常有这样的需求,抓取一个网页的内容,模拟浏览器对某个链接发起GET或PUT请求。
      怎么办?
      当然可以引用Apache HttpClient库,HttpClient对这些需求做了很好的封装。
      但问题是,我们需要的只是一个很简单的功能,需要引入笨重的HttpClient吗?而且HttpClient为的解决各种各样的问题,做了很复杂的封装,非常难用呐。
      如果你用Nutz那这个问题就很简单了。抓网页内容只需这样:

    Response resp = Http.get("http://www.baidu.com");
    if (resp.isOK()) {
    	System.out.println(resp.getContent());
    }

      发起API调用只需:

    Map<String, Object> params = new HashMap<String, Object>();
    params.put("name", "root");
    params.put("pwd", "123456");
    int timeout = 60 * 1000; // 单位毫秒 
    String apiRet = Http.post("http://api.xxx.com/login", params, timeout);
    System.out.println(apiRet);

      简单吧!其实Nutz的http包可实现的功能不只这些,另如以下功能也可以手到擒来: 

    • 使用代理
    • 定制http Header、Cookie
    • 文件上传
    • 设置请求超时时间

      更多内容可自行探索 org.nutz.http 包。

    二、Tasks 类

      很多时候我们都需要定时任务的帮助。例如定时更新数据库,定时刷新缓存,当发生错误后延时重试……
      怎么办?
      当然可以引用quartz,建一个job,创建一个SchedulerFactory,再绑定Trigger? 太麻烦了,我们只是想要一个简单的定时任务而已。
      其实这样的需求有了Nutz后就很简单了,
      实现一个Runnable的任务类,然后通过Tasks设置定时调用的间隔时间就行了,如:

    Tasks.scheduleAtFixedRate(new Runnable() {
    	public void run() {
    		System.out.println("task runing...");
    	}
    }, 10);
    Lang.quiteSleep(60 * 1000);

      怎么样,简单吧?其实它还能做更多: 

    • 在指定的延时之后开始以固定的频率来运行任务
    • 在指定的时间点开始以固定的频率运行任务
    • 两次任务间保持固定的时间间隔
    • 返回Future做更高级的任务控制
    • 返回定时任务线程池,可做更高级的应用

      更多内容可自行探索 org.nutz.lang.Tasks 类,所有方法都有详细注释哦。 

    三、Conf 加载

      每个应用都会有各种配置项,我们需要在程序启动的时候加载这些配置项进行各种操作。
      Nutz对配置项做了很好的封装,现在你读取配置文件就很easy啦。

    PropertiesProxy property = new PropertiesProxy(“/conf/", “/db.properties”));
    String redisIp = property.get("redis.ip");
    Int redisPort = property.getInt("redis.port");

      注:PropertiesProxy 支持目录扫描哦,目录中的所有 *.properties 配置项全都能读到。 

      如果你的配置文件是 json 格式的也没关系,可以试试 NutConf 类。 

    NutConf.load("/conf/");
    System.out.println(NutConf.get("serverName"));

      注:NutConf 也支持目录扫描,会加载目录中的 *.js 文件。

    四、Sockets

      如果你想写一个简单的SocketServer服务器,简单的接收用户发来的某些指令进行各种操作,那你选择Nutz就对了,它对这种简单的SocketServer做了很好的封装,你只需写几行代码就搞定了。

    Sockets.localListenOneAndStop(9099, "reload", new SocketAction(){
    	@Override
    	public void run(SocketContext context) {
    		System.out.println("重新加载配置文件");
    		context.writeLine("success");
    	}
    });

      简单吧,现在你只需 telnet 172.0.0.1 9090 然后输入 reload,就能重新加载项目中的配置文件了。而且原生的,它支持客户端输入 "close|stop|bye|exit" 来结束服务端的本地监听。 
      上边只是演示了添加一个动作(SocketAction),其实可以向它放入多个SocketAction来实现各种命令操作。另高级的,服务器端还能支持接收json串,实现更多的参数传入。 
      更多内容可自行探索 org.nutz.lang.socket 包。

    五、NutMap

      我们知道,HashMap、HashTable、TreeMap等数据结构可以存放各种类型数据,但如存放的是非泛型数据的话,就需要进行各种类型转换。
      但如果你用 NutMap 就没有这种烦恼了,其内置了常见类型的自动转换,相信很多人会用的很爽。

    NutMap map = new NutMap();
    map.put("name", "bushi");
    map.put("age", 63);
    map.put("sex", true);
    map.put("time", new Date());
    		  		
    System.out.println(map.getString("name"));
    System.out.println(map.getInt("age"));
    System.out.println(map.getBoolean("sex"));
    System.out.println(map.getTime("time"));

    六、代码统计

      你可能不知道吧,Nutz中还隐藏了一个代码统计工具。它可以对程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行、空白行和导入行为多少等等。
      项目快结束了,统计下项目中代码行数,可以满足下自己的虚荣心,同时也好向老板交差。
      使用方法非常简单:

    File file = new File("E:/qinerg_github/nutz/src/");
    CodeStatisticsResult statisticsResult = Code.countingCode(file, "java", true, null);
    System.out.println("源码数:" + statisticsResult.getFileCount());
    System.out.println("总行数:" + statisticsResult.getTotalLines());
    System.out.println("代码行:" + statisticsResult.getNormalLines());
    System.out.println("注释行:" + statisticsResult.getCommentLines());
    System.out.println("导入行:" + statisticsResult.getImportLines());
    System.out.println("空白行:" + statisticsResult.getWhiteLines());

      这是我checkout时nutz源码统计结果: 

    • 源码数:835
    • 总行数:74957
    • 代码行:39355
    • 注释行:20899
    • 导入行:5228
    • 空白行:9475

      代码行近4万,而注释行就有2万多,怎么样,从另一个方面说明nutz的注释率是非常高的,而且是全中文哦。推荐大家读下源码,可以学到很多东东的。

  • 相关阅读:
    selenium学习笔记05-selenium操作from表单
    selenium学习笔记04-webdriver核心方法的属性和使用
    selenium学习笔记03-selenium webdriver工作原理
    selenium学习笔记02-selenium定位的八大方法
    selenium学习笔记01
    微服务质量保证学习笔记(一)
    pytest,setup和teardown
    pytest用例编写规则、执行测试
    速耀达账套备份与恢复(速达二次开发)
    速耀达系统权限设置(速达二次开发)
  • 原文地址:https://www.cnblogs.com/dingjiaoyang/p/5730881.html
Copyright © 2020-2023  润新知