
java
mameng1998
学习是前进的唯一动力
展开
-
easyExcel的使用
运行Test类中的main方法即可。原创 2023-06-20 08:48:51 · 1311 阅读 · 0 评论 -
Java 找到字符串中第一个出现一次的字符
【代码】Java 找到字符串中第一个出现一次的字符。原创 2023-04-22 12:12:11 · 263 阅读 · 0 评论 -
attempt to unlock lock, not locked by current thread by node id: 83394267-6fff-450c-8cee-2690f845ec4
【代码】attempt to unlock lock, not locked by current thread by node id: 83394267-6fff-450c-8cee-2690f845ec4。原创 2023-04-21 16:24:51 · 538 阅读 · 0 评论 -
LRU的简单实现
2.利用doublelinkedlist的特征(可以访问到某个节点之前和之后的节点),实现O(1)的新增和删除数据。1.利用hashmap的get、put方法O(1)的时间复杂度,快速取、存数据。原创 2023-04-21 15:57:50 · 88 阅读 · 0 评论 -
countDownLatch-多个任务并行执行,等待相同的时间后,获取最终的结果
【代码】countDownLatch-多个任务并行执行,等待相同的时间后,获取最终的结果。原创 2023-04-20 12:01:47 · 422 阅读 · 0 评论 -
分库分表的计算
2 根据基本sql,获取分库分表后的sql。1 定义基本sql、常量。原创 2023-03-30 19:58:24 · 151 阅读 · 0 评论 -
线程安全的DateTimeFormatter的使用
【代码】DateTimeFormatter的使用。原创 2023-03-01 16:26:05 · 461 阅读 · 0 评论 -
java中判断字符串是否为纯数字
【代码】java中判断字符串是否为纯数字。原创 2022-12-18 21:19:16 · 474 阅读 · 0 评论 -
ThreadLocal如何避免内存泄露
每个线程Thread都有一个ThreadLocalMap属性,这个ThreadLocalMap类似HashMap,不过ThreadLocalMap是通过“线性探测法”解决的哈希冲突。 2 ThreadLocal在堆栈中如何存放的首先我们明确key是使用了弱引用,当把threadlocal变量置为null以后,没有任何强引用指向threadlocal实例,所以threadlocal实例就可以顺利被 gc。我们从图中也能看到虽然key被gc回收了,但是value还在呀。因为存在一条从 current threa原创 2022-10-31 13:14:33 · 1236 阅读 · 0 评论 -
java中List转为Map<key,List>
代码】java中List转为Map原创 2022-08-18 20:22:08 · 1269 阅读 · 0 评论 -
netty线程模型
深入Netty逻辑架构,从Reactor线程模型开始-51CTO.COM面试官:Netty的线程模型可不是Reactor这么简单_mob60475707634e的技术博客_51CTO博客原创 2022-03-05 16:23:06 · 149 阅读 · 0 评论 -
分库分表实践
大众点评订单系统分库分表实践 - 美团技术团队原创 2022-02-15 20:44:15 · 365 阅读 · 0 评论 -
mysql查询时offset过大影响性能的原因和优化
1 问题现状起初我们采用最为简单的offset+limit分页查询方式,伪代码具体如下:List<Student> students = new ArrayList<>();int limit = n;int offset = 0;do { students = SELECT * FROM [table] WHERE status = [status] AND gradeId = [id] LIMIT [limit] OFFSET [offset]; push原创 2022-02-15 20:04:36 · 2904 阅读 · 0 评论 -
java 用户名称中emoji表情包的模糊处理
1 maven引入emoji-java<dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId> <version>5.1.1</version></dependency>2 表情包工具类import com.dianping.cat.Cat;import com.google.c原创 2022-02-14 19:57:06 · 1678 阅读 · 0 评论 -
java学习网站
Java 基础 - 面向对象 | Java 全栈知识体系原创 2022-01-19 11:44:59 · 201 阅读 · 0 评论 -
如何根据当前系统的内存大小来设置JVM的内存分布
使用G1垃圾回收器:系统内存=1 G Xms=512m MaxMetaspaceSize=256m ReservedCodeCacheSize=240m系统内存=2 G Xms=1g MaxMetaspaceSize=256m ReservedCodeCacheSize=240m系统内存=4 G Xms=2g MaxMetaspaceSize=256m ReservedCodeCacheSize=240m系统内存=8 G Xms=4g MaxMetaspace原创 2021-11-17 22:43:52 · 1137 阅读 · 1 评论 -
TransmittableThreadLocal实现原理
1ThreadLocal实现原理// ThreadLocal.set()源码public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, value); else createMap(t, value);}ThreadLocalMap保存...原创 2021-11-12 18:42:08 · 908 阅读 · 0 评论 -
记TransmittableThreadLocal使用不当造成的一次线上事故
前言我们知道InheritableThreadLocal解决父子线程的问题,它是在线程创建的时候进行复制上下文的,即线程池在创建子线程时,会把父线程中共享变量的值初始化复制到子线程中,如果父线程再将共享变量中的值进行修改,那么子线程就无法感知到这个共享变量的修改。那么对于线程池已经创建完的线程,这个线程中共享变量的值永远是初始化时从父线程中获取的,父线程中共享变量的值再怎么改变,这个线程中的共享变量值也不会改变。这时,TransmittableThreadLocal就诞生了,它可以解决上述问题。但如原创 2021-11-12 14:50:00 · 3232 阅读 · 0 评论 -
【java】一个list分批传入下游接口并获取返回数据
private static ExecutorService executorService = new ThreadPoolExecutor(10,20,1000, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()); public CompletableFuture<Map<Long, List<Student>>> asyncBatchQueryStudentListCompletableF..原创 2021-11-09 20:06:27 · 496 阅读 · 0 评论 -
java将一个list转成指定数据类型的数组
private static final List<Integer> list = Lists.newArrayList();static { list.add(1); list.add(2);}public static void testListToArray() { Integer[] integer = new Integer[list.size()]; list.toArray(integer); System.out.print.原创 2021-11-09 19:43:46 · 1406 阅读 · 0 评论 -
【java】list分批插入数据库
service.java部分代码:import com.google.common.collect.Lists;@Transactional(rollbackFor = Exception.class)public void batchInsert(List<Student> students) { if (CollectionUtils.isEmpty(students)) { return; } Lists.partition(stude原创 2021-11-09 19:39:05 · 2032 阅读 · 0 评论 -
【Java】 一个List集合按n进行分组拆分
最近做需求,需要将一个List<T>拆分成多个List为元素的List,即List<List<T>>,代码实现如下:import com.google.common.collect.Lists;import org.apache.commons.collections4.ListUtils;import java.util.Arrays;import java.util.List;/** * @author : mazhen * Date :原创 2021-11-09 18:11:39 · 867 阅读 · 0 评论 -
线程池异步查询数据
1 异步实体类@Data@Builderpublic class AsyncEntity { //整型数集合 private List<Integer> integerList; //学生集合 private List<Student> studentList;}2 异步获取的代码@Servicepublic class TestService { private ExecutorService executor原创 2021-07-09 17:15:57 · 434 阅读 · 0 评论 -
java实现列表页的折叠点
最近有一个需求:后端对列表数据进行处理,让前端对数据进行折叠,代码如下:1、Student类用于列表数据展示@Datapublic class Student { /** * 主键 */ private long id; /** * 姓名 */ private String name; /** * 状态,1:正常,2:退学 */ private Integer status;}原创 2021-07-09 16:04:21 · 323 阅读 · 0 评论 -
单层for循环将两个List根据某个相同字段来进行合并
功能实现的过程中用到了map,就是拿空间换时间的解决思路。废话不多说,直接上代码1 两个基类1.1 Studentpackage com.test.list;/** * @author mazhen * @className Student * @Description 学生类 * @date 2020/11/9 15:20 */public class Student { private Long id; private String name; priva原创 2020-11-09 17:01:11 · 2546 阅读 · 4 评论 -
有效防sql注入的两种方式
1 Mybatis我们都知道:MyBatis使用#{}和KaTeX parse error: Expected 'EOF', got '#' at position 15: {}来进行参数值替换;使用#̲{}语法时,MyBatis会自…{}语法时,MyBatis会直接注入原始字符串,即相当于分段字符串,因此会导致SQL注入,如:<select id="getByName" resultType="org.example.User"> SELECT * FROM user WHERE na原创 2020-09-22 12:37:42 · 2557 阅读 · 0 评论 -
HashMap的resize()即扩容方法源码分析
直接上代码final Node<K,V>[] resize() { Node<K,V>[] oldTab = table;//旧数组 int oldCap = (oldTab == null) ? 0 : oldTab.length;//旧数组容量/长度 int oldThr = threshold;//旧数组扩容阈值 int newCap, newThr = 0;//新数组容量及新数组扩容阈值 if原创 2020-08-01 17:51:02 · 264 阅读 · 0 评论 -
HashMap中红黑树TreeNode的split()方法源码分析
final void split(HashMap<K,V> map, Node<K,V>[] tab, int index, int bit) { TreeNode<K,V> b = this; // Relink into lo and hi lists, preserving order TreeNode<K,V> loHead = null, loTail = null;转载 2020-07-31 17:36:19 · 1470 阅读 · 1 评论 -
带cookie的跨域解决方案
带cookie的跨域解决方案本解决方案基于SpringBoot,首先编写FilterConfig类:import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author by mazh原创 2020-05-25 00:30:43 · 345 阅读 · 0 评论 -
java中callable的使用
我们知道使用callable可以获得线程中的返回值,下面我们简单介绍callable的使用。1 创建两个callable的实现类1.1 BumCallablepublic class BumCallable implements Callable { @Override public Object call() throws Exception { try {...原创 2020-03-18 22:57:41 · 4108 阅读 · 0 评论 -
java中类的加载面试
什么是类的加载?JVM把通过类名获得类的二进制流之后,把类放入方法区,并创建入口对象的过程被称为类的加载。经过加载,类就被放到内存里了。哪些情况会触发类的初始化?类在5种情况下会被初始化:第一,假如这个类是入口类,他会被初始化。第二,使用new创建对象,或者调用类的静态变量,类会被初始化。不过静态常量不算。第三,通过反射获取类,类会被初始化第四,如果子类被初始化,他的父类也会...转载 2020-01-17 19:44:37 · 194 阅读 · 0 评论 -
Java函数式编程
1 Lambda表达式2 Stream参考学习1、感受lambda之美,推荐收藏,需要时查阅原创 2019-10-29 13:07:48 · 152 阅读 · 0 评论 -
Java中普通代码块,构造代码块,静态代码块区别及代码示例
//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 2 public class CodeBlock01{ 3转载 2017-12-15 17:25:27 · 180 阅读 · 0 评论 -
Dangling meta character '?' near index 0 解决方案
“Dangling meta character '?' near index 0”这个异常出现的原因是:+、*、|、/、?等符号在正则表达式中有相应的不同意义。一般来讲只需要加[]、或是//即可,例如:String s = http://www.baidu.com/index.jsp?key=value;inti=s.split("[?]").length;或者inti=s.split("//?...转载 2018-02-09 13:14:30 · 4823 阅读 · 0 评论 -
com.alibaba.fastjson.JSONObject;的使用
1 POM.xml<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId>...转载 2018-11-04 23:51:23 · 62127 阅读 · 0 评论 -
java中对象的字符串类型属性排序
测试环境:SpringBoot2.0.3执行测试所需的依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope&转载 2018-12-25 17:29:15 · 2113 阅读 · 0 评论 -
工具类中静态方法调用@Autowired注入的其他工具类为null
问题描述:如果工具类中静态方法要调用一个类的方法,那么该静态方法要求这个类必须是静态(static)的,用@Autowired注入这个类,你会发现这个类一直为null。先上解决方案的代码:@Component //此处注解不能省却(0)public class UserUtil { /* * 要使用的工具类需要spring注入(1) */ @Autowired Redis...转载 2019-01-07 17:14:52 · 3744 阅读 · 3 评论 -
逻辑右移、算术左移、算术右移
逻辑右移(&gt;&gt;&gt;)、算术左移(&lt;&lt;)、算术右移(&gt;&gt;)参考:https://www.cnblogs.com/yx729315991/p/6387711.htmlhttps://blog.youkuaiyun.com/u011070169/article/details/53894154转载 2019-03-18 16:18:59 · 1772 阅读 · 0 评论 -
springboot单起实例定期处理数据
使用到的类是java.util.concurrent包下的ScheduledThreadPoolExecutor类,该类继承ThreadPoolExecutor并实现ScheduledExecutorService接口。完整的代码如下:1、springboot主类:import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourc...原创 2019-03-29 21:13:52 · 251 阅读 · 0 评论 -
NIO编程实现步骤
1、创建Selector2、创建ServerSocketChannel,并绑定监听端口3、将Channel设置为非阻塞模式4、将Channel注册到Selector上,监听连接事件5、循环调用Selector的select方法,检测就绪情况6、调用selectedKeys方法获取就绪channel集合7、判断就绪事件种类,调用业务处理方法8、根据业务需要决定是否再次注册监听事件,重复...转载 2019-04-27 22:46:45 · 379 阅读 · 0 评论