项目开发中常用的jar包以及sdk

项目开发中常用的jar包以及sdk

1.MetricService

Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同时,Metrics能够很好的跟Ganlia、Graphite结合,方便的提供图形化接口。

2.Guava中的缓存

引入com.google.common.cache包,使用缓存。

    /**
     * 保存各个websocket连接
     */
    private Cache<String, XpWebSocketSession> WEBSOCKET_SESSION_CACHE;
基本概念

Guava中的缓存是本地缓存的实现,与ConcurrentMap相似,但不完全一样。最基本的区别就是,ConcurrentMap会一直保存添加进去的元素,除非你主动remove掉。而Guava Cache为了限制内存的使用,通常都会设置自动回收。

Guava Cache的使用场景:
以空间换取时间,就是你愿意用内存的消耗来换取读取性能的提升
你已经预测到某些数据会被频繁的查询
缓存中存放的数据不会超过内存空间

Guava Cache是单个应用运行时的本地缓存,单机版的缓存。它不把数据存放到文件或外部服务器。如果这不符合你的需求,请尝试Memcached或Redis。

优缺点

优点
线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素。
提供了三种基本的缓存回收方式:基于容量回收、定时回收和基于引用回收。定时回收有两种:按照写入时间,最早写入的最先回收;按照访问时间,最早访问的最早回收。
监控缓存加载/命中情况。
集成了多部操作,调用get方式,可以在未命中缓存的时候,从其他地方获取数据源(DB,redis),并加载到缓存中。

缺点
Cuava Cache的超时机制不是精确的

使用

Cache是Guava提供的最基本缓存接口,Cache是通过CacheBuilder对象来build出来的,build之前可以设置一系列的参数

        WEBSOCKET_SESSION_CACHE = CacheBuilder.newBuilder()
                .expireAfterWrite(expire, TimeUnit.HOURS)
                .initialCapacity(initCacheCapacity)
                .maximumSize(maxCacheSize)
                .concurrencyLevel(concurrencyLevel)
                .recordStats()
                .build();

3.StringUtils工具类

StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。

除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx()

4.CollectionUtils工具类

CollectionUtils提供很多对集合的操作方法,常用的方法如下:

5.swagger

是什么

是一款让你更好的书写API文档的规范且完整框架。

提供描述、生产、消费和可视化RESTful Web Service。

是由庞大工具集合支撑的形式化规范。这个集合涵盖了从终端用户接口、底层代码库到商业API管理的方方面面。

@ApiModel注解

使用场景:在实体类上边使用,标记类时swagger的解析类。
概述:提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省。

@ApiModel("用于语义请求")
public class UserQueryReq {
@ApiModelProperty注解
    @ApiModelProperty("硬件版本号")
    private String hid;

6.fastjson工具

fastjson是阿里巴巴出品的快速解析json的一个工具

解决的问题

一般最常见的是这两个方法:

JSON.toJSONString(object):序列化对象,生产字符串
JSON.parse(text):反序列化对象,字符串转json

对于一般的没有什么变更的操作来说,这两个其实够用了.

但有时候情况会有些特殊,比如说:某个字段我想转成json时换个键名.或者我忽略某个字段等特殊操作,如果用编程式开发的话实在是有些烦闷的.比较坑爹.用注解的方式就很不错.

@JSONField注解

一个简单的demo如下:

public class JSonTest {
 
	private String id ="111";
	
	private String name ="tom ";
 
    private Date date = new Date();
 
    ...getter/setter
}
	
 
public static void main(String[] args) {
		System.out.println(JSON.toJSONString(new JSonTest()));
}

如果此时我想将这个类转成json,但要像"userid:111,name:tom"注意是userid,而不是id,那么这样既可.

    @JSONField(name="userid")
	private String id ="111";
	
	private String name ="tom ";

打印结果:{“date”:1561545203036,“name”:"tom ",“userid”:“111”}

@JsonProperty注解

@JsonProperty注解主要用于实体类的属性上,作用可以简单的理解为在反序列化的时候给属性重命名(多一个名字来识别)

    @JSONField(name = "list.item.focus")
    @JsonProperty("list.item.focus")
    @ApiModelProperty("焦点")
    String focus;

7.SpringBeanUtils工具类

可通过SpringBeanUtils工具类拿到IOC容器中的bean

    public WsResp textSemantic(UserQueryReq req) {
        HighFreedomDialogReq hfdReq = convertReq(req);
        final AbcService proxy = SpringBeanUtils.getBean(AbcService.class);
        return proxy.textSemantic(hfdReq);
    }

8.MessageListener接口

springboot可以利用该接口实现Rsdis的失效监听事件

使用步骤

1.首先在pom文件中加入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.创建一个监听类实现MessageListener接口,重写onMessage方法

当key失效时,会触发onMessage方法,只能获取失效的key值,不能获取key对应的value值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值