自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 String字面量做同步锁存在的问题

碰到一个问题就是想要使用两个对象锁控制同一个类的两个方法在多线程环境的同步问题。目标是两个方法可以同时由不同的线程获取不同的锁同时执行,互不影响。通过定义两个String对象作为对象锁存在的问题。 如果用两个String变量使用相同的字面量定义 由于代码中定义的字面量编译后在字符串常量池中引用...

2020-04-22 09:34:46 24 0

原创 Maven打jar包配置

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&...

2020-04-20 20:13:01 37 0

原创 Java动态代理

一、JDK动态代理 jdk动态代理本质上是使用被代理对象的类加载器,通过被代理类实现的接口在运行时动态构造出代理类来增强原始类的功能的方法,需要使用Java的反射机制,通过实现InvocationHandler接口实现JDK动态代理。 1、先定义一个接口 package com.teris...

2020-03-26 16:47:27 43 0

原创 win10切换git账号

1、打开控制面板,选择用户账户->管理你的凭据 2、点击Windows凭据,选择相应的git凭据,删除或修改 3、在git命令行界面输入以下命令修改用户名 git config --global user.name “username” 注意不执行这一步,在idea中提交...

2020-02-07 11:56:02 139 0

原创 直接查询不设过期时间的缓存的注意事项

需求:前台系统通过RPC调用中台系统接口查询图片url。中台考虑到图片地址在资源服务器上传之后是不会改动的,因此通过管理后台上传之后,持久化到中台的Redis缓存中,且没用设置key的缓存时间。前台请求中台接口时直接请求缓存,不回源到数据库,提高并发量及响应速度。 问题:后期考虑到架构设计,将前...

2019-10-25 17:07:33 167 0

原创 狄克斯特拉算法DijKstra Algorithm

广度优先算法适用于计算有向无权图计算最短路径。狄克斯特拉算法是有向加权图计算最小开销的算法,不适用于负权边的情况。 下面是代码示例,起点是start,经过a点权重是6,b点的权重是2,a点到终点fin的权重是1。b点到a点的权重是3,到fin点的权重是5,现在计算从start到fin的最小权重路...

2019-10-24 20:12:51 71 0

原创 HTTP状态码

状态码 状态含义 详细描述 100 继续 请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。 101 切换协议 请求者已要求服务器切换协议,服务器已确认并准备进行切换。 200 成功...

2019-09-17 17:49:12 64 0

原创 使用fiddler抓取手机请求url进行本地环境测试

有时候存在需要测试登录情况下的接口请求数据,比如业务逻辑中需要获取用户id的,这时在本地环境debug时是无法获取到用户登录信息的,因为没有cookie信息。所以这时后就可以通过手机连接到服务端的网络,安装fiddler证书,然后通过手机app登录,使用同一接口发起请求,然后将fiddler抓到的...

2019-09-11 20:41:31 293 0

原创 无法解析单元测试引入的xml

在使用testng进行单元测试时,idea提示无法解析引入的xml文件: 这是由于没有将Test Resources引入class路径中导致的,以idea为例,可以进入Project Structure菜单,选择相应的项目模块,点击Test Resources按钮,就可以引入测试资源了。 ...

2019-09-06 10:23:33 114 0

原创 屏蔽Sonar问题

如下代码: private T result; Sonar报没用序列化,但是我这里是泛型类型,具体类肯定是实现序列化接口的,因此这里就需要屏蔽sonar的检查。 private T result; // NOSONAR ...

2019-09-02 15:29:36 90 0

原创 使用testNG进行功能测试

我们使用spring的testng也可以实现像junit一样的功能测试。 1、引入jar包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring...

2019-08-28 20:51:22 393 0

原创 发布jar包到maven仓库

本地中台提供rsf接口给外围系统,需要将代码打成jar包发布到maven仓库供外围系统引用。 注意:发布的jar包接口定义要一次完成,否则再次发布就无法使用原来的版本号,不论是SNAPSHOT还是RELEASE版本。如果接口定义不修改,仅仅修改方法内的代码就没有关系。 1、修改setting文...

2019-08-28 19:03:53 78 0

原创 Idea中回滚到提交的某一版本

1、复制版本号 08a2a576a041ff1f3bcdf0749527f95ecf3f4620 2、在idea命令行输入如下命令: git reset --hard 08a2a576a041ff1f3bcdf0749527f95ecf3f4620 3、将本地的变更推送到修改的分支...

2019-08-23 11:18:37 2123 0

原创 使用Collections.shuffle方法生成随机顺序的List

使用Collections.shuffle方法生成随机顺序的List,shuffle方法可以根据是否传入random实例决定list随机顺序的生成方式。 package com.teriste.web; import org.junit.Test; import org.junit.runn...

2019-08-18 16:39:36 174 0

原创 使用Jute进行序列化

Zookeeper在网络传输时使用的是Jute进行序列化和反序列化,官方也提出过要使用类似于Apache Avro、Thrift或是Google的protobuf这样的组件来替换Jute,但考虑到新老版本组件的兼容性,官方对替换序列化组件工作的推进持保守和观望态度。 下面来看看如何使用Jute来...

2019-08-18 10:21:41 426 0

原创 waf使用场景

waf主要功能是用于流控,包括UA+IP策略的流控和IP流控两种,目前没有开发单独针对UA的流控。 流控可以真正应用级别或针对url的模糊匹配级别。 老的waf流控使用的是spark,只能配置周期为10s、30s、60s的监控,拦截不够及时,新的waf流控使用flink开发,可以做到秒级的监控...

2019-08-16 11:31:04 307 0

原创 使用jmeter进行性能测试

Apache JMeterTM 应用程序是开源软件,是一个100% 纯 Java 应用程序,旨在加载测试功能行为和测量性能。 它最初设计用于测试 Web 应用程序,但后来扩展到其他测试功能。 Apache jmeter 可用于测试静态和动态资源(Web 动态应用程序)上的性能。 它可以用来模拟服...

2019-08-07 20:32:13 79 0

原创 lombok教程

https://objectcomputing.com/resources/publications/sett/january-2010-reducing-boilerplate-code-with-project-lombok

2019-08-07 16:56:39 96 0

原创 git-commit-id-plugin插件

添加git-commit-id-plugin插件,该插件用来产生git的版本信息 <!--获取Git版本信息的插件--> <plugin> <groupId>pl.project13.maven<...

2019-08-05 20:01:52 2728 0

原创 根据文字或图片来生成用于Banner输出的字符画

http://patorjk.com/software/taag http://www.network-science.de/ascii/ http://www.degraeve.com/img2txt.php

2019-08-05 17:19:32 616 1

原创 Chrome打开本地html项目

Chrome打开本地html项目需要安装插件:AXURE RP EXTENSION For Chrome 打开浏览器菜单更多工具->扩展程序 点击加载已解压的扩展程序,选择插件所在目录。 安装包下载地址:https://download.csdn.net/download/...

2019-07-25 11:52:37 1953 0

原创 获取文件的真正类型

我们通常情况下获取文件类型都是直接根据文件名后缀确定的,但是后缀名是可以随意修改的,因此我们只能通过文件的二进制文件头来确定文件的真正类型。 首先是将文件转换为字节流,然后获取字节流的前4位,并转换为16进制字符串,各种文件的文件头都是固定格式的。 package com.teriste.u...

2019-07-18 19:33:33 789 0

原创 使用Google Guava工具类

package com.teriste.guava; import com.alibaba.fastjson.JSON; import com.google.common.base.CharMatcher; import com.google.common.base.Joiner; import...

2019-07-18 10:32:47 149 0

原创 List转换为Object后的类型安全问题

import com.teriste.java8.entity.Department; import com.teriste.java8.entity.Employee; import org.junit.Test; import java.util.ArrayList; import java...

2019-07-11 16:34:00 476 0

原创 NIOByteBuffer使用

NIO中的ByteBuffer可以用于写入数据和读取数据。 通常其包括mark、pos、lim、cap四个变量来记录位置状态, mark:用于记录当前pos的前一个位置或者是-1 pos(position):下一个要操作的数据的位置 lim(limit):缓冲区中不可操作的下一个元素的位置...

2019-07-04 10:52:03 151 0

原创 fastjson设置字段不序列化

alibaba的fasetjson可以设置字段不序列化,使用@JSONField注解的serialize属性,该属性默认是可以序列化的,设置成false就表示不可序列化: 使用方式就是在定义字段前加上@JSONField(serialize = false) 比如下面的实体类: imp...

2019-07-03 16:26:30 3601 0

原创 ReentrantLock可中断锁

ReentrantLock中的lockInterruptibly()方法使得线程可以在被阻塞时响应中断,比如一个线程t1通过lockInterruptibly()方法获取到一个可重入锁,并执行一个长时间的任务,另一个线程通过interrupt()方法就可以立刻打断t1线程的执行,来获取t1持有的那...

2019-07-01 16:16:27 1787 0

原创 多线程并发测试线程池任务请求拦截

一、需求 前端会传入一个存储编码的list,后台接收到编码通过计算返回每个编码对应的值,每个编码计算出来的值是固定不变的。 二、设计方案 因为前端请求响应有一个时常要求,比如100ms。而这个计算比较耗时,因此为了请求能够快速响应,在第一个请求过来时判断redis缓存是否存储编码对应的计算值...

2019-06-22 17:58:11 294 0

原创 使用spring注入属性文件中的值

通过Spring的@Value注解可以将xml中关联的属性文件中的值注入变量中,这样就不需要通过创建Properties然后根据属性文件读取属性值了。 1、首先定义一个属性文件,其中存储代码中需要引入的属性值 2、添加一个配置文件spring-config-properties.xml,通...

2019-06-20 20:07:41 189 0

原创 RGB颜色值与十六进制颜色码转换工具

https://www.sioe.cn/yingyong/yanse-rgb-16/

2019-06-18 11:48:53 1815 0

转载 com.sun.crypto.provider.HmacCore$HmacSHA256 cannot be cast to javax.crypto.MacSpi

在进行将字符串做 hamc-sha256 签名,以 16 进制编码的单元测试时,出现如下错误: java.lang.ClassCastException: com.sun.crypto.provider.HmacCore$HmacSHA256 cannot be cast to javax.c...

2019-06-15 10:29:28 358 0

原创 Mock模拟方法调用结果

import static org.mockito.Matchers.anyObject; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.when; 当使用Mock模拟对象的方法调...

2019-06-13 09:42:45 1629 1

原创 Java对象转Map

使用org.apache.commons.beanutils包下的BeanUtils.describe()方法可以将Java对象按属性转为Map。 import org.apache.commons.beanutils.BeanUtils; class CommonUtils{ publi...

2019-06-04 09:46:18 17061 0

原创 idea进行lua开发及运行nginx-lua程序

由于openresty每次在启动nginx时都需要通过命令重启比较麻烦,因此打算通过idea运行nginx服务,且idea插件对代码提示有一定程度的支持。 一、安装lua插件 Idea开发lua需要安装EmmyLua插件,在Plugins中搜索EmmyLua,然后再仓库中搜索,然后点击安装,重...

2019-05-21 19:55:27 880 0

原创 IDEA常用设置

1、设置常用快捷键与Eclipse一致,部分快捷键不一样 2、设置功能区字体样式 3、代码编辑区和控制台字体样式 4、设置代码编辑器的字体颜色和背景颜色 5、设置注释字体颜色 6、项目右键选择Run Tests in … with Coverage,运行之后就可以在项...

2019-05-18 10:02:42 71 0

原创 Fiddler模拟发送POST请求

在发起POST请求时不像GET请求可以在浏览器地址栏直接输入,POST请求的参数是放在请求体中的,因此如果想要模拟POST请求,需要借助工具,比如Postman或者Fiddler,这里简单介绍一下Fiddler模拟Post请求的方法。 输入请求url,设置请求头和请求体 打开Fiddler,点击...

2019-05-17 16:58:00 1622 0

原创 Eclipse安装代码覆盖率检测插件Code Coverage

一般项目开发对单元测试覆盖率都有一定要求,比如50%、60%。本地为了对编写的代码单元测试覆盖率进行一个准确的了解,可以通过Code Coverage插件进行检查。 1、在线安装插件 在Eclipse中点击Help->Install new software菜单,点击add 随...

2019-05-16 17:04:06 1719 0

原创 Eclipse安装Sonar插件SonarLint

1、下载插件,根据需要选择版本 https://bintray.com/sonarsource/SonarLint-for-Eclipse/releases 2、打开eclipse的Help菜单,带年纪Install New Software,点击add 3、点击Archive找到下载的...

2019-05-16 16:40:51 2018 0

原创 使用BeanUtils.copyProperties进行对象之间的属性赋值

1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值 /** * 对象属性拷贝 <br> * 将源对象的属性拷贝到目标对象 ...

2019-05-15 19:07:27 42343 0

原创 kafka环境搭建

一、安装环境要求 1、安装java Kafka和zoopeeper都需要安装java环境,且推荐至少java7及以上版本’ 2、安装zookeeper Zookeeper是kafka集群的必要组件,kafka安装包已经集成了zookeeper,这里选择单独安装zookeeper 3、安装...

2019-05-12 22:20:57 165 0

提示
确定要删除当前文章?
取消 删除