Java
阿拉的梦想
这个作者很懒,什么都没留下…
展开
-
ValidatorUtil字段验证工具类
【代码】ValidatorUtil字段验证工具类。原创 2023-12-18 15:11:42 · 612 阅读 · 0 评论 -
java threadLocal传递给子线程
threadLocal传递给子线程原创 2023-11-20 16:38:57 · 471 阅读 · 0 评论 -
批量定时队列
可以根据设置,从队列中取出n条数据批量处理,不足n条的话等待m秒后处理数据。原创 2023-06-13 14:06:13 · 293 阅读 · 0 评论 -
最长匹配算法计算路由
将设备的路由表根据前缀倒序排列,然后用下面算法传入目标ip和路由表中的mask,逐个计算,若计算出来的prefix与路由表里的一致,则走这条路由。那么,我们有一个ip 10.187.1.5,需要从路由表中找出它经过哪个路由,下一跳是哪个设备?所以,我们得到10.187.1.5的下一跳是10.12.12.1。最长匹配算法计算路由前缀。原创 2022-09-03 10:46:07 · 708 阅读 · 0 评论 -
使用hutool做本地缓存的工具类
gradle中引入hutool依赖,实现本地缓存原创 2022-08-01 09:53:33 · 3918 阅读 · 0 评论 -
Guava中独特的Map操作
Guava中独特的Map操作前言Table:双键 Map获得 key 或 value 的集合计算 key 对应的所有 value 的和转换 rowKey 和 columnKey转为嵌套的 MapBiMap:双向 Map反转后操作的影响value 不可重复获取值的集合操作 get 后的集合转换为 Map数量问题RangeMap:范围 MapClassToInstanceMap:实例 Map前言Guava 是 Google 公司开发的一款 Java 类库扩展工具包,内含了丰富的 API,涵盖了集合、缓存、并原创 2022-05-13 08:42:41 · 777 阅读 · 0 评论 -
检测字符串中是否带汉字中文
检测字符串中是否带汉字中文 public static void main(String[] args) throws Exception { String str = "6546dsfasf--3=的5"; if (str.getBytes().length == str.length()) { System.out.println("不带汉字"); } else { System.out.printl原创 2022-04-24 09:46:14 · 629 阅读 · 0 评论 -
解压jar工具类
解压jar工具类package com.demo.devops.commons.utils;import cn.hutool.core.io.FileUtil;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;impo原创 2022-04-15 09:05:58 · 700 阅读 · 0 评论 -
java yaml转properties工具类
java yaml转properties工具类yaml文件转properties文件yaml字符串转properties字符串yaml转Map原创 2022-02-25 17:28:05 · 9214 阅读 · 0 评论 -
Java泛型详解
Java泛型类及其方法原创 2021-12-25 17:09:21 · 1434 阅读 · 0 评论 -
后端响应结果工具类Result
后端响应结果工具类Result结果工具类,用于后端给前端的响应。好处:格式统一,使用方便;使用泛型,包容各种类型,允许传入自定义code和message。也可以快速响应成功或失败package com.demo.document.common;import lombok.Data;/** * @author CCL * @since 2021年12月24日 */@Datapublic class Result<T> { private int code;原创 2021-12-24 20:18:35 · 4543 阅读 · 0 评论 -
kafka添加安全验证配置
spring kafka 添加安全验证配置综合考虑性能影响、管理成本、安全等级要求,接入便利程度。 鉴权采用SASL+PLAINTEXT 方式。每个集群会分配统一的访问账号及密码用于客户端访问。 服务端配置:1. config 目录添加kafka_server_jaas.conf 配置文件, 内容:KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"p原创 2021-11-09 13:49:41 · 6061 阅读 · 0 评论 -
Guava缓存详解及使用
缓存缓存分为本地缓存与分布式缓存。本地缓存为了保证线程安全问题,一般使用ConcurrentMap的方式保存在内存之中,而常见的分布式缓存则有Redis,MongoDB等。一致性:本地缓存由于数据存储于内存之中,每个实例都有自己的副本,可能会存在不一致的情况;分布式缓存则可有效避免这种情况开销:本地缓存会占用JVM内存,会影响GC及系统性能;分布式缓存的开销则在于网络时延和对象序列化,故主要影响调用时延适用场景:本地缓存适用于数据量较小或变动较少的数据;分布式缓存则适用于一致性要求较高及数量量大的原创 2021-11-04 08:01:43 · 7081 阅读 · 0 评论 -
读取所有项目的git地址和分支并写入文件的工具
读取所有项目的git地址和分支并写入文件的工具离职要交接工作,负责的项目较多,项目工程有200多个,每个都是单独的git地址,分支也不尽相同。领导要求将全部项目的git地址和分支整理出来,一个个点击复制,相当麻烦,因此写了这个小工具,可以全部扫描出来,并写入到指定的gitUrl.txt中。package com.demo.gittool;import java.io.*;import java.nio.file.*;import java.nio.file.attribute.BasicFil原创 2021-09-22 17:31:51 · 356 阅读 · 0 评论 -
java中的MD5工具类
简介:MD5算法. MD5算法是典型的消息摘要算法,它是由MD4,MD3和MD2算法演变而来。. 无论是哪一种MD算法,其原理都是接受一个任意长度的消息并产生一个128位的消息摘要。. 如果把得到的消息摘要转换成十六进制字符串,则会得到一个32字节长度的字符串,我们平常见到的大部分MD数字指纹就是一个长度为32的十六进制字符串。MD5工具类/** * MD5加密工具类 * */public class MyMD5Util { //盐,用于混交md5 private static原创 2021-09-03 10:30:54 · 4077 阅读 · 1 评论 -
java-Bean拷贝工具类
java-Bean拷贝工具类import org.springframework.beans.BeanUtils;import org.springframework.util.CollectionUtils;import java.util.ArrayList;import java.util.Collection;import java.util.List;/** * ClassName: BeanCopyUtil * Description: Bean拷贝工具类 * */pu原创 2021-07-19 14:16:54 · 1067 阅读 · 0 评论 -
工具类-java精确到小数点后6位
工具类-java精确到小数点后6位验证要求,必须精确到小数点后6位,但是后面都是0的话,double会省略0,正则验证不通过,所以有了下面解决方法:精确到小数点后六位,若最后一位是0则用1代替。 private double getSixScale(String s) { BigDecimal bigDecimal = new BigDecimal(s).setScale(6, BigDecimal.ROUND_HALF_UP); String sixScale原创 2021-07-07 11:47:56 · 2935 阅读 · 0 评论 -
idea-java gitignore文件
将此文件放置在idea项目根目录即可其他需要忽略的,可以自行配置.gitignore文件.svn/target/test-output/*.log*.class*.gz.classpath.project.settings/deploy_web_war.batlocalbuild//.idea/*.imllog/logs/opbin/!opbin/settings.xml!opbin/monitor/dump/downstream.env.build/..原创 2021-07-07 11:23:57 · 576 阅读 · 0 评论 -
关闭线程池-shutdown与shutdownNow的区别
关闭线程池的方式:方式1:threadPoolExecutor.shutdownNow();//可以对线程发出中断信号,若中断后线程任务结束,则线程池关闭方式2://threadPoolExecutor.shutdown();//不会对线程发出中断信号,只有等所有任务结束,才关闭代码验证:package com.demo;import java.util.HashSet;import java.util.List;import java.util.concurrent.LinkedB原创 2021-06-26 12:34:13 · 412 阅读 · 0 评论 -
工具类-滑动窗口判断是否存在最大连续日期
工具类-滑动窗口判断是否存在最大连续日期使用场景:判断是否存在连续的N天。package com.demo;import java.util.HashSet;import java.util.List;import java.util.stream.Collectors;/** * @Author ccl * @Date 2021/6/10 16:09 */public class Demo { public static void main(String[] args)原创 2021-06-26 10:53:45 · 288 阅读 · 0 评论 -
高并发中常见的限流方式
高并发中常见的限流方式通过控制最大并发数来进行限流通过漏桶算法来进行限流通过令牌桶算法来进行限流限流工具类RateLimiter通过控制最大并发数来进行限流一群人去动物园参观,为了避免拥挤限制人数,管理员兜里面有指定数量的门禁卡,来的人先去管理员那边拿取门禁卡,拿到卡的人才可以刷卡进入动物园,拿不到的可以继续等待。进去的人出来之后会把卡归还给管理员,管理员可以把归还来的卡继续发放给其他排队的顾客使用。本例使用JUC包的Semaphore来做并发数控制。可以将最大并发数控制在指定数量内。package原创 2021-04-15 18:19:42 · 789 阅读 · 0 评论 -
诊断工具arthas的基本使用
诊断工具arthas的基本使用介绍下载启动基本使用1.jad2.watch3.trace4.stack5.logger诊断工具arthas的基本使用介绍Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇原创 2021-04-06 10:38:34 · 399 阅读 · 0 评论 -
Java程序启动脚本
Java 程序启动脚本将tool-other.jar替换为自己的jar名;使用当前目录下的config.properties作为配置文件;保存为run.sh启动 sh run.sh start关闭 sh run.sh stop#!/bin/bash### BEGIN INIT INFO # Provides: Nginx# Required-Start: $all # Required-Stop: $all # Default-Start: 3 5 # Default-Stop: 0原创 2021-03-24 16:34:33 · 565 阅读 · 0 评论 -
java后端访问https证书问题
java后端访问httpsjava后端通过https获取图片 public static void main(String[] args) { try { BufferedImage image = ImageIO.read(new URL("https://10.128.33.56:6202/object/download?pool=s_alarm&id=2dfa47ccaa56ca64c66078588977532e,360,b43e").ope原创 2021-03-09 18:36:12 · 4569 阅读 · 1 评论 -
工具类-雪花算法生成分布式ID
工具类-雪花算法生成分布式IDSnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。给大家举个例子吧,比如下面那个 64 bit 的 long原创 2021-03-01 15:34:56 · 667 阅读 · 0 评论 -
工具类-java之list分页工具
工具类-java之list分页工具使用场景:list中含有大量身份证号,每100个分为一页,然后作为sql查询的in条件入参进行分页查询;这样sql查询时可以使用线程池并发查询;public class ListPageUtil{ /** *测试 */ public static void main(String[] args) { final List<Integer> list = new ArrayList<>(); for原创 2021-02-20 17:53:51 · 794 阅读 · 0 评论 -
工具类-ThreadUtil线程池命名
工具类-ThreadUtil线程池命名先引入guava依赖定义工具类使用工具类命名各个线程线程池命名可以方便以后排查问题,根据线程就知道哪个业务逻辑出了问题。先引入guava依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version><原创 2021-01-11 17:11:35 · 729 阅读 · 1 评论 -
Files.walkFileTree遍历目录文件
Files.walkFileTree遍历目录文件1.Files.walkFileTree的原理介绍2.遍历行为控制器FileVisitor3.遍历行为结果 FileVisitResult4.查找指定文件5.使用PathMatcher5.1全局规则glob5.1.1规则说明5.2正则规则regex5.2.1示例6.查找指定文件7.遍历单层目录8.复制文件到新目录9.文件和流的复制10.Path与File的转换java.nio.file.Files.walkFileTree是JDK7新增的静态工具方法。1原创 2021-01-06 19:30:55 · 3966 阅读 · 1 评论 -
工具类-获取uuid的工具类UUIDUtil
工具类-获取uuid的工具类UUIDUtilimport java.util.UUID;/** * UUID工具类 */public class UUIDUtil { /** * 获取32位UUID * * @return */ public static String get32UUID() { return get36UUID().replace("-", ""); } /** * 获取完整的原创 2021-01-04 19:59:50 · 625 阅读 · 0 评论 -
工具类-耗时计算工具类TimeCostUtil基于ThreadLocal实现
工具类-耗时计算工具类TimeCostUtil基于ThreadLocal实现功能:基于ThreadLocal实现,可在线程内任意地方开始计时、计算计时和终止计时;/** * 耗时计算工具类 * * @Author ccl * @Date 2020/12/28 14:08 */public class TimeCostUtil { private static final ThreadLocal<Long> TIME_THREADLOCAL = new ThreadLoca原创 2021-01-04 19:55:03 · 491 阅读 · 2 评论 -
工具类-RestTemplateUtil工具类
工具类-RestTemplateUtil工具类代码可直接复制使用1. 配置RestTemplateimport org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.client.SimpleClientHttpRequestFactory;import org.springfra原创 2021-01-04 19:49:03 · 2057 阅读 · 1 评论 -
工具类-java原生发送http工具类JavaHttpUtil
工具类-java原生发送http工具类JavaHttpUtilimport java.io.*;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * java原生方式发送http请求 */public class JavaHttpUtil { public static String doGet(String httpurl) {原创 2021-01-04 19:40:35 · 308 阅读 · 0 评论 -
工具类-图片工具类ImageUtils
工具类-图片工具类ImageUtils.功能:图片和base64互转,url和base64互转import lombok.extern.slf4j.Slf4j;import org.springframework.util.Base64Utils;import org.springframework.util.StringUtils;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.原创 2021-01-04 19:37:06 · 1011 阅读 · 1 评论 -
Java之CountDownLatch原理解析
Java之CountDownLatch原理解析1. demo展示2. 原理解析1. demo展示代码逻辑展示了主线程中创建2个子线程分别去执行任务,主线程等2个子线程执行完毕后,再接着执行下面的代码;常用场景:分别计算,汇总结果。如,多个线程分别解析excel中的sheet,等待全部解析完毕后汇总结果;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;public class C原创 2020-12-13 21:13:41 · 5268 阅读 · 0 评论 -
java线程间通信的方式
java线程间通信的方式1. 共享变量2. 等待/通知3. 管道流1. 共享变量volatile修饰的变量,线程间可见,可使用这种变量作为线程间传递消息的媒介;延伸出来的,还有redis中的值,数据库中的值,都可以作为线程间共同访问的变量;2. 等待/通知同步代码中利用锁对象的wait和notify方法来进行通信;经典案例如thread.join()方法,里面就是用等待通知机制实现的;3. 管道流管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线原创 2020-12-12 20:46:07 · 5533 阅读 · 0 评论 -
java线程之join方法实现等待机制
java线程之join方法实现等待机制大白话:一个线程A中调用了另一个线程对象B的join方法,A会等待B执行完毕后再执行后面的代码;简介:如果一个线程A执行了thread.join()语句,其含义是:当前线程A等待thread线程终止之后才从thread.join()返回。线程Thread除了提供join()方法之外,还提供了join(long millis)和join(longmillis,int nanos)两个具备超时特性的方法。这两个超时方法表示,如果线程thread在给定的超时时间里没有原创 2020-12-12 15:17:19 · 836 阅读 · 0 评论 -
ArrayBlockingQueue 和 LinkedBlockingQueue 性能测试与分析
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 1, TimeUnit.SECONDS, new SynchronousQueue(), ThreadUtil.reNameThread("向部级平台发送注册保活心跳"), (r, executor) -> { if (!executor.isShutdown()) { ...原创 2020-11-27 14:37:00 · 7969 阅读 · 0 评论 -
interrupt方法打断线程demo
interrupt方法打断线程demo1.打断非阻塞状态的线程2.打断阻塞状态的线程1.打断非阻塞状态的线程package com.demo;public class InterruputDemo { public static void main(String[] args) throws InterruptedException { demo1(); } /** *1.在main线程中调用子线程的interrupt方法,子线程中无阻塞方法原创 2020-11-21 20:08:21 · 5388 阅读 · 0 评论 -
CompletableFuture多任务异步处理框架简单入门demo
CompletableFuture多任务异步处理框架简单入门demo功能简介:将任务拆分成多个,交给线程池分别执行,然后获取所有结果,或者不获取结果。也可以链式执行任务,比如批量入库中一个用户入库成功后发送kafka,再更新缓存,然后响应。在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合 CompletableFuture 的方法。它可能代原创 2020-11-21 16:45:33 · 5811 阅读 · 0 评论 -
ForkJoin简单入门demo
ForkJoin简单入门demoFork/Join是java7开始提供的一个用于并行执行任务的框架,是把一个大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。应用场景:将大量同质化计算进行拆分到多个线程并行执行的情况,比如分页计算,归并计算;fork就是拆分;join就是合并;下面是一个简单示例,展示了ForkJoin的基本用法。package com.demo.forkjoin;import java.util.concurrent.ExecutionExceptio原创 2020-11-21 15:07:14 · 5366 阅读 · 0 评论