0
点赞
收藏
分享

微信扫一扫

项目开发中常用的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值



举报

相关推荐

0 条评论