Lombok

读写分离注解

匆匆过客 提交于 2020-05-01 16:16:28
  以前写过读写分离,今天完善成文档。 一:概述 1.结构文档    2.思路   组装好各个数据源,然后通过注解选择使用读或者写的数据源,将其使用AbstractRoutingDataSource中的方法determineCurrentLookuoKey进行选择datasource的key。   然后,通过key,就找到了要使用的数据源。   在数据源的这里,最后配置上连接池。 3.说明   本配置直接使用一个公共的连接池配置,如果需要,自己进行配置 二:程序说明 1.连接池配置 package com.jun.webpro.common.config.dataSource.properties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * 数据库连接池配置 */ @ConfigurationProperties(prefix = "spring.druid") @Component @Data public class

统计接口QPS

不想你离开。 提交于 2020-05-01 11:42:14
  现在记录话单的时候想加一个参数:每秒接口调用的并发量,也就是所谓的QPS( Queries per second )。QPS即每秒请求数,是对一个特定的接口在规定时间内请求流量的衡量标准。那么如何实现QPS的计算呢?我想到的是两种方案:   1、一定时间内(比如一分钟)的请求总量/统计时间段(比如一分钟),最终得出就是每秒的并发量,它是基于某一段时间来统计的   2、直接统计一秒钟内的请求总量,就是按每秒的时间段来统计,简单粗暴   方案一的适用场景应该是报表、运维统计之类的,只关心QPS曲线;如果用来做并发量校验,明显只能用方案二,需要实时获取QPS。那么如何统计一秒内的并发量?假设某一个时间点有接口到来,那么就开始统计该接口,在一秒之内,来多少个累加多少次。一秒之后,统计数清零。之后的某一个时间点,又有接口到来,又开始统计一秒之内的接口调用量,如此循环往复。   那么如何维护一个一秒之内的接口计数器呢?我觉得失效缓存是一个合适的选择,缓存的键即为接口名,值就是接口统计数,过期时间一秒。为了避免引入第三方中间件,我们自己实现该过期缓存,需要维护一个定时器和一个优先级队列,每秒清理一次队列中已过期的缓存。   废话说完了,看代码:   1、缓存的值 import lombok.Getter; import lombok.Setter; import java.util

TusP/wps-view-java

不问归期 提交于 2020-05-01 11:40:19
wps-view-java 本次更新 增加前端调用的新建模版接口,快速新建文件 w_user_acl_t权限表中rename字段更改为re_name,避免和mysql关键字冲突报错 满足你的OSS所有需求,util中OSSUtil包含了所有常用的oss方法,全部测试可用 增加上传、删除等文件管理接口 演示地址 https://ljserver.cn/wpsonline 环境准备 前提 申请 wps在线编辑服务 ,获取到appid和appsecret 设置wps回调url,如 http://123.34.56.78:8080(此端口号必须与java项目中端口号一致) 申请阿里oss,获取到access_key和access_secret等相关参数(其它云存储请自行集成) 不想使用oss的,或者是想使用其它云,以及服务文件的,可屏蔽版本更新接口中的代码,或者重构,或者不管(只是保存版本的时候有异常),先整体拉通工程 java编译器安装lombok插件,详见 lombok安装说明 服务 初始化mysql,执行resources下的wpsinit.sql文件(数据库可自己改,以及其中文件url,头像url,请自行填写) 配置resources下application.properties中的mysql、wps以及oss相关参数 打包后部署到回调服务器(注意端口号) 其它相关接口请查阅

Java实现AES ECP PKCS5Padding加解密工具类

◇◆丶佛笑我妖孽 提交于 2020-05-01 08:43:07
Java 实现一个 AES/ECB/PKCS5Padding 加解密算法工具类 加密算法: AES 模式: ECB 补码方式: PKCS5Padding <!-- more --> 1. 工具类 import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.util.Base64Utils; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.BufferedInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; /** * Created by @author yihui in 19:12 20/1/2. */ @Slf4j public class EncryptUtil { private static final String KEY_ALGORITHM = "AES"; /** * 算法/模式/补码方式 */

Springboot21 整合redis、利用redis实现消息队列

ぐ巨炮叔叔 提交于 2020-05-01 04:26:15
1 前提准备   1.1 创建一个springboot项目     技巧01:本博文基于springboot2.0创建   1.2 安装redis     1.2.1 linux版本        参考博文     1.2.2 windows版本       到redis官网下载windows版本的 压缩包 后,解压即可   1.3 redis使用     本博文以window版本为例子, linux版本请参见     1.3.1 开启服务端       》进入到解压后的redis根目录         》执行 redis-server.exe     1.3.2 开启客户端       进入到redis解压目录 -> 执行 redis-cli.exe     1.3.3 测试redis服务端和客户端的通信       在redis客户端执行 ping,如果返回了 PONG 就表明redis前后端通信正常     1.3.4 关闭       客户端和服务端都用 Ctrl + C 就可以关闭了 2 SpringBoot 集成 Redis   2.1 创建一个SpringBoot项目     技巧01:创建时引入 spring-boot-starter-web 和 spring-boot-starter-data-redis <? xml version="1.0" encoding

SpringBoot 整合 MybatisPlus 3.0

落花浮王杯 提交于 2020-04-30 19:58:34
CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能 需求: 存在一张 message 表,且已有对应的实体类 Message,实现message 表的 CRUD 操作我们需要做什么呢? 基于 Mybatis: 需要编写 MessageMapper 接口,并在 MessageMapper.xml 映射文件中手动编写 CRUD 方法对应的sql语句。 基于 MP: 只需要创建 MessageMapper 接口, 并继承 BaseMapper 接口。 我们已经有了Message、message了,并且MessageDao也继承了BaseMapper了,接下来就使用crud方法。 前言: mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。 一、mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义

sping boot集成okhttp实现websocket客户端实例

前提是你 提交于 2020-04-30 13:12:52
  关于websocket服务端的实现网上比较多,比较流行的是spring boot本身的spring-boot-starter-websocket,至于客户端的话,目前流行的是java-websocket框架,这里拿okhttp框架举个例子说说:   1、引入okhttp: < dependency > < groupId > com.squareup.okhttp3 </ groupId > < artifactId > okhttp </ artifactId > < version > 4.2.2 </ version > </ dependency >     2、主要实现类继承websocket监听器: package com.wlf.ws; import com.alibaba.fastjson.JSONObject; import com.wlf.entity.WSResponse; import lombok.extern.slf4j.Slf4j; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; import okio.ByteString; import java.io.IOException; @Slf4j public class

Is it possible to use Lombok annotations as a meta-annotation?

两盒软妹~` 提交于 2020-04-29 09:01:23
问题 I want to define my own annotation for transfer objects and include there some Lombok annotations as meta-annotations: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Data @NoArgsConstructor @AllArgsConstructor public @interface TransferObject { } The intent is to annotate all my transfer objects with @TransferObject and "inherit" all of the above. In practice it doesn't work, classes annotated with @TransferObject are not processed by Lombok. Is there

Is it possible to use Lombok annotations as a meta-annotation?

▼魔方 西西 提交于 2020-04-29 09:00:09
问题 I want to define my own annotation for transfer objects and include there some Lombok annotations as meta-annotations: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Data @NoArgsConstructor @AllArgsConstructor public @interface TransferObject { } The intent is to annotate all my transfer objects with @TransferObject and "inherit" all of the above. In practice it doesn't work, classes annotated with @TransferObject are not processed by Lombok. Is there