java
技术
毅大师
java开发程序猿
展开
-
SpringBoot使用Aop实现分布式锁
前言:要是想对某个接口进行加锁操作,每次在方法前加锁,方法结束释放锁会显得很麻烦,这里可以基于AOP的环绕通知@Around实现功能。1、基于RedisTemplate实现封装分布式锁RedisTemplate实现setnx分布式锁https://blog.csdn.net/qq_39648029/article/details/1249262302、自定义注解import java.lang.annotation.ElementType;import java.lang.annot.原创 2022-05-24 11:26:12 · 6443 阅读 · 8 评论 -
kotlin File转换MultipartFile
import org.apache.commons.fileupload.disk.DiskFileItemFactoryimport org.springframework.web.multipart.MultipartFileimport org.springframework.web.multipart.commons.CommonsMultipartFileimport java.io.Fileimport java.io.FileInputStream/** * fil.原创 2022-04-25 11:33:34 · 330 阅读 · 0 评论 -
kotlin将网络上可以访问的url图片转换成Base64字符串
fun imgToBase64(path: String): String { val data: ByteArray? = null var `in`: InputStream? = null var out: ByteArrayOutputStream? = null try { val url = URL(path) val connection: HttpURLConnection = .原创 2022-04-25 11:30:39 · 2442 阅读 · 2 评论 -
idea 一键启动多个项目(不是单个项目启动多次)
前言:在做微服务项目的时候,会启动多个模块,每个模块启动一次,多了就很麻烦,现在只需要点一次,就把你想启动的模块都启动了。1、打开idea,找到最下面的Services窗口,如图如果找不到,就这样打开:2、先把你要启动的项目都启动一遍。然后你就会发现这里有你启动的项目了。3、把你要启动项目选中,shift可多选,选中以后右键,创建分组4、输入一个名字,随便取。5、以后启动项目就直接在这个Services中,选中你创建的分组 ,右键,就可以一键启动喽略~.原创 2021-07-09 10:36:54 · 7326 阅读 · 30 评论 -
idea把mybatis的sql黄色背景去掉
转自:http://blog.csdn.net/geekleee/article/details/778918251、去掉 Prefernces ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ No data sources configure。2、去掉Prefernces ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ SQL dialect detection。3、去掉Prefernces ⇒ Editor ⇒ Colors & Fonts ⇒..转载 2021-03-19 14:43:07 · 878 阅读 · 0 评论 -
集群下WebSocket消息推送的解决方案(springboot 基于Redis发布订阅)
一、背景单机节点下,WebSocket连接成功后,可以直接发送消息。而多节点下,连接时通过nginx会代理到不同节点。假设一开始用户连接了node1的socket服务。触发消息发送的条件的时候也通过nginx进行代理,假如代理转到了node2节点上,那么node2节点的socket服务就发送不了消息,因为一开始用户注册的是node1节点。这就导致了消息发送失败。为了解决这一方案,消息发送时,就需要一个中间件来记录,这样,三个节点都可以获取消息,然后在根据条件进行消息推送。二、解决方.原创 2021-01-26 11:16:14 · 13069 阅读 · 39 评论 -
java中Font文字对象在Centos中乱码(口口口口口)的解决方案
一、前言做了个需求,给图片添加文字水印,使用了Font文字对象,结果Centos中出现了乱码,这是由于Centos没有中文文字包导致的。二、解决方案1、在Windos系统中复制中文文字包C:\Windows\Fonts\simsunb.ttc部分文件后缀名是.ttf。没影响,.tt是.ttc的子集2、在Centos的/usr/share/fonts目录下创建个新文件夹,用于存放中文文字包。创建了个包叫做chinese,然后把上面复制的中文文字包拷贝进去。3...原创 2021-01-22 15:29:55 · 3366 阅读 · 10 评论 -
java 图片添加水印(文字水印+图片水印)
/** * @param buffImg 源文件(BufferedImage) * @param waterImg 水印文件(BufferedImage) * @param x X偏移量 * @param y Y偏移量 * @param alpha 透明度, 选择值从0.0~1.0: 完全透明~完全不透明 * @return BufferedImage * @throws IOException *.原创 2021-01-22 10:17:12 · 3262 阅读 · 16 评论 -
spring boot + redis 接口访问频率限制
@Componentpublic class BlackInterceper implements HandlerInterceptor { @Autowired private RedisTemplate<String, Object> redisTemplate; private Logger log = LoggerFactory.getLogger(this.getClass()); @Override public boolean preHandle(Http.原创 2021-01-18 16:45:31 · 963 阅读 · 25 评论 -
spring boot 配置 webSocket
一、依赖 <!--WebSocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>二、创建WebSocketServerimport java.io.IOException;i原创 2021-01-07 14:14:16 · 2555 阅读 · 8 评论 -
java将网络上的url图片转换成File对象
public static File getFile(String url) throws Exception { //对本地文件命名 String fileName = url.substring(url.lastIndexOf("."),url.length()); File file = null; URL urlfile; InputStream inStream = null; OutputStre.原创 2021-01-05 10:13:01 · 6226 阅读 · 2 评论 -
java线程池ThreadPoolExecutor
别的地方复制的://参数最多的构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit uni...原创 2020-01-08 16:01:51 · 240 阅读 · 0 评论 -
GC回收算法(标记清除算法、复制算法、标记整理算法、分代收集算法)
转自:https://www.jianshu.com/p/3fc4450e1bbd在探讨Java垃圾回收机制之前,我们首先应该记住一个单词:Stop-the-World。Stop-the-world意味着 JVM由于要执行GC而停止了应用程序的执行,并且这种情形会在任何一种GC算法中发生。当Stop-the-world发生时,除了GC所需的线程以外,所有线程都处于等待状态直到GC任务完成。事实上,GC优化很多时候就是指减少Stop-the-world发生的时间,从而使系统具有 高吞吐 、低停顿 的特.转载 2020-09-23 14:31:37 · 1184 阅读 · 37 评论 -
已知四种原子的质量,C/H/O/N分别为12/1/16/14,输入分子式,计算分子量。例如"H2O",分子量为1*2+16=18,有如HC11N2,分子量为1+12*11+14*2=161
已知四种原子的质量,C/H/O/N分别为12/1/16/14,输入分子式,计算分子量。例如"H2O",分子量为1*2+16=18,有如HC11N2,分子量为1+12*11+14*2=161,输入异常数据时返回0。...原创 2020-04-28 16:42:24 · 1098 阅读 · 9 评论 -
两个长度为n的字符串的距离定义为这两个字符串对应位置上不同字符的个数。例如:"babc"和"abba"的距离为3(第0、1、3位置上的字符不同)。给定m个长度为n的字符串,生成一个与给定的这个m个字符
两个长度为n的字符串的距离定义为这两个字符串对应位置上不同字符的个数。例如:"babc"和"abba"的距离为3(第0、1、3位置上的字符不同)。给定m个长度为n的字符串, 生成一个与给定的这个m个字符串的距离之和最小的长度为n的字符串,并输出。 public static void main ( String[] args ) { String [] arr=...原创 2020-04-28 11:44:56 · 887 阅读 · 8 评论 -
输入两个字符串s和t,判断t是否可以通过删除若干字符得到s,例如:“abcsfs”可以删除部分字符得到"bcss"
public static void main ( String[] args ) { boolean b = inIsideString("abcsfs", "bcss"); System.out.println(b); } /** * 输入两个字符串s和t,判断t是否可以通过删除若干字符得到s,例如:“abcsfs”可以删除部...原创 2020-04-28 10:46:09 · 2567 阅读 · 0 评论 -
java 二分查找
public static void main(String[] args) { int[] a={9,8,7,6,5,4,3,2,1}; Arrays.sort(a); System.out.println(binarySearch(a,5)); } public static int binarySearch(int[] ar...原创 2020-01-07 15:33:46 · 234 阅读 · 0 评论 -
java list转树
/** * 循环转换 * @param personList * @return */ public static List<Person> listtotree(List<Person> personList){ List<Person> list = new ArrayList<Pers...原创 2019-10-16 15:15:51 · 248 阅读 · 0 评论 -
java ResultSet万能结果集映射json
private JSONArray resultSetToJson(ResultSet rs) throws SQLException { // json数组 JSONArray array = new JSONArray(); // 获取列数 ResultSetMetaData metaData = rs.getMetaData(); ...原创 2019-09-29 15:23:44 · 349 阅读 · 0 评论 -
Spring AOP与自定义注解实现的操作日志记录功能
做项目时,有一个记录操作日志的需求,比如某个用户进行了查询、删除、修改等操作,需要把这个操作所对应的各种信息记录下来,为了实现这个需求,采用Spring AOP的切面可以实现。 我采用的是@AfterReturning和自定义注解来实现的,AOP还有其他几个通知,我就不写了。自定义注解是为了描述这个方法具体是什么操作。 自定义注解:@Tar...原创 2019-02-26 20:37:12 · 1727 阅读 · 12 评论 -
快速排序代码
public static void main(String[] args) { int [] a= {1,3,5,7,9,2,4,6}; Sorts(a,0,a.length-1); for(int i=0;i<a.length-1;i++) { System.out.print(a[i]+" "); ...原创 2018-11-06 22:46:42 · 246 阅读 · 0 评论 -
上班太难熬?想知道还有多久时间下班?分享一段下班倒计时程序(Java版)(#^.^#)
先看效果上代码(中文命名纯属好玩)public class 下班 extends JFrame{ { try { int hour=17;//时 int minute=30;//分 int second=0;//秒 Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();原创 2020-12-25 16:44:37 · 1171 阅读 · 0 评论 -
java 阿里云 oss 文件上传
一、配置信息,在application.properties中配置import java.io.Serializable;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix="ali.原创 2020-12-22 14:09:59 · 442 阅读 · 0 评论 -
java BufferedImage转MultipartFile
java生成二维码返回BufferedImage对象,需要转成MultipartFile进行文件上传。转换流程:BufferedImage → InputStream →MultipartFile //得到BufferedImage对象 BufferedImage bufferedImage = JoinTwoImage.testEncode(200, 200, url); //创建一个ByteArrayOutputStream By.原创 2020-12-22 14:03:00 · 10665 阅读 · 4 评论 -
java生成二维码
/** * 生成二维码 * * @throws WriterException * @throws IOException */ public static BufferedImage testEncode(int width,int height,String content) throws WriterException, IOException { String format = "jpg";// 图像类型 M.原创 2020-12-22 13:58:10 · 250 阅读 · 0 评论 -
java查看真实ip
public class IpUtil { public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.g.原创 2020-12-17 14:07:19 · 542 阅读 · 37 评论 -
spring boot 配置 拦截器
一、创建拦截器的处理逻辑类import com.dy.utils.Cons;import com.dy.utils.JsonUtils;import com.dy.utils.ReturnResult;import com.dy.utils.constant.RedisKeyConstant;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autow原创 2020-12-17 14:04:01 · 518 阅读 · 32 评论 -
spring boot 配置 swagger
一、依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> <exclusions>原创 2020-12-17 13:53:10 · 1169 阅读 · 30 评论 -
mysql、java中根据经纬度计算距离
mysql点1(lon1,lat1) 点2(lon2,lat2)SELECTROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( lat1 * PI() / 180 - lat2 * PI() / 180 ...原创 2020-11-04 16:41:10 · 1994 阅读 · 42 评论 -
idea中,快速从ServiceImpl层的接口跳转到mybatis中Mapper.xml的接口对应位置(free Mybatis Plugin 插件)
插件名:free Mybatis Plugin,搜出来直接下载、重启完事。快捷键使用:光标放在接口位置,直接按 CTRL+T,然后就跳转过去了原创 2020-09-22 16:25:02 · 8880 阅读 · 57 评论 -
Mybatis参数是一个对象,对象中含有Date[ ]数组,如何按照索引获取值
很多表单查询都会按照时间区间查询,这个时候前端是固定传入长度为2的时间数组参数。后端如果分成2个参数去接受,就显得很麻烦,直接用数组接受会方便很多,但是有坑。一、在做时间区间查询的时候,前端固定传一个长度为2的时间数组参数。二、后端实体类中,用这样的形式接收。三、如果像这样直接按照索引获取,会报错 <if test="checkTimeArray != null and checkTimeArray.length == 2"> AND DATE_FORM.原创 2020-09-15 10:39:00 · 7912 阅读 · 41 评论 -
spring boot + vue 使用poi实现Excel导出功能(包括Excel样式调整,以及前后端代码)
可以直接复制拿来用哟。(#^.^#)目录一、pom.xml依赖二、代码大致流程是这样的三、后端工具类四、基于vue,使用axios调用后端接口,实现下载文件的方法五、看效果一、pom.xml依赖 <!--poi文档处理--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>..原创 2020-09-11 15:05:23 · 13291 阅读 · 71 评论 -
spring依赖注入,一个接口有多个实现类,如何通过一个map注入所有实现类
1、首先有一个接口,包含了三个实现类。2、三个实现类分别重写其中一个方法。3、依赖注入时,全部注入到父接口中,通过Map方式接收其中map的key就是实现类的类名,value就是依赖注入的类4、具体使用通过map直接get类名,就能获取到当前想使用的子类。...原创 2020-08-18 10:07:18 · 3114 阅读 · 0 评论 -
PathMatcher matcher = new AntPathMatcher() 路径匹配用法
基于正则表达式匹配路径。import org.springframework.util.AntPathMatcher;import org.springframework.util.PathMatcher;PathMatcher matcher = new AntPathMatcher();matcher.match("/**/login/**", uri)实例:System.out.println(matcher.match("/login/**", "/login/into"))原创 2020-05-09 14:34:14 · 4444 阅读 · 13 评论 -
java手动计算HashCode
public static void countHash(Object object ) throws NoSuchFieldException, IllegalAccessException { Field field= Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true);...原创 2020-02-11 15:30:53 · 384 阅读 · 0 评论 -
java8 LocalDate、LocalTime和LocalDateTime的基本使用以及和String、Date的相互转换
LocalDate用于处理日期,yyyy-MM-dd格式。LocalDate的基本用法 LocalDate localDate = LocalDate.now(); 获取当前日期 String format = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDate转Stri...原创 2020-01-17 15:00:35 · 5745 阅读 · 0 评论 -
java获取txt文件内容按照行、空格解析
public static String txt2String(File file) { StringBuilder result = new StringBuilder(); try { BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedR...原创 2020-01-17 11:15:25 · 1361 阅读 · 0 评论 -
java对象拷贝
对于属性名一样的对象,把对象A的属性值拷贝给对象Bpublic static void main(String[] args) throws ParseException { demo1 d=new demo1(); d.setName("zy"); d.setAge(20); d.setMsg("zy"); ...原创 2020-01-03 17:28:37 · 284 阅读 · 1 评论 -
java使用fastjson解析json字符串
public static void main(String[] args) { String str="{\n" + "\t\"testsetTestcaseExecute\": {\n" + "\t\t\"auditor\": \"vame\",\n" + "\t\t\"testcaseType\": \"Exception\"\n" + "\t...原创 2019-11-14 10:56:11 · 2878 阅读 · 0 评论 -
java动态代理实现接口调用
动态代理是基于接口实现的代理,mybatis就是用这个技术实现的首先,创建一个最基本接口和实现类:interface UserManager { void addUser();}class UserManagerImpl implements UserManager{ @Override public void addUser() { Sy...原创 2019-10-14 11:26:38 · 2645 阅读 · 0 评论