
java
Carpoor奇
这个作者很懒,什么都没留下…
展开
-
修改Map(Json)中指定路径下的Key值
package com.xxx.util;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;/** * @author Carpoor * @.原创 2021-06-08 00:32:28 · 1067 阅读 · 0 评论 -
replace需要注意的点($和\的特殊处理)
对String进行字符串替换,有下面三个方法可以使用replace:直接把入参当字符串处理replaceAll:replaceFirst原创 2021-05-31 17:26:31 · 4687 阅读 · 0 评论 -
两个json对比差异,并输出差异结果
package com.cwq.demo02;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import c原创 2021-05-20 00:48:08 · 7902 阅读 · 2 评论 -
并发冲突解决方案(DB/缓存)
一、版本号解决冲突对表增加版本号,每次更新,进行版本号比较,相同则更新,并且版本号+1,否则更新失败。避免多线程查出这条数据后,同时间对这一条数据进行操作,造成数据覆盖(即ABA覆盖的问题)更新失败,让发起方重新发起二、表中冗余锁字段在表中增加两个字段,例如锁业务流水号,锁时间【避免表锁,一定要命中索引,转为行锁】1、当多个发起方调用接口准备更新同一条数据的时候2、加锁,封装为LockUtil【该逻辑与redis分布式锁逻辑差不多,只是操作对象不一样,一个缓存一个DB】lock在一个事务中,原创 2021-05-13 11:09:24 · 718 阅读 · 0 评论 -
Map中处理指定key对应value值【key可以为A.B.C】
package com.cwq.demo01;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;/** * @author Carpoor * @date 2021年4月7日 */public c原创 2021-04-12 22:30:30 · 961 阅读 · 0 评论 -
为什么每个线程能通过ThreadLocal保存自己的一份副本?
ThreadLocal能够保存线程独有的一份变量,这样就不用通过参数传递,直接在线程执行的过程中随时随地get出来此处没有例子,只是说明一下源码到底是怎么去存的1、使用的时候,只需要创建ThreadLocal对象,重写initialValue方法,初始化我们需要存储的值,默认值为null,因为没有通过initialValue初始化private ThreadLocal<Integer&...原创 2019-09-20 18:07:37 · 796 阅读 · 0 评论 -
java规范怎么加载数据库驱动?
1、class.forName(“com.mysql.jdbc.Driver”)到底做了什么事?class.forName与类加载机制有关,会触发执行com.mysql.jdbc.Driver类中的静态方法,从而使主类加载数据库驱动。但是在最新的DriverManager源码中,可以不需要使用class.forName显示加载JDBC驱动程序,加了也没有问题2、为什么它的静态块没有自动触发?...原创 2019-09-17 09:53:45 · 2606 阅读 · 0 评论 -
javaweb集群实现定时任务抢占任务锁
1、背景数据库中存在一个预约时间表(t_reserve),和一个正在生效的时间表(t_time)根据业务需求,在t_reserve表中配置多个不同的时间,然后定时去更新t_time表2、问题因为应用是集群部署1)、多进程的任务锁抢占2)、当抢占到任务锁的应用挂了,宕机的情况,没有释放任务锁,造成死锁3)、集群部署,无法保证每台应用同时启动定时任务,多个定时任务的触发点会被错开,定时任...原创 2019-05-11 23:34:26 · 5712 阅读 · 0 评论 -
多线程学习笔记
volatile 和 synchronized–都可以保证线程间的可见性,原子性–synchronized 还可以实现可重入锁 和 互斥性CPU执行指令很快,但执行指令的过程中,需要有一些临时数据的操作,这些临时数据存储在主内存(物理内存),读取/写入的速度跟不上CPU的执行速度,这样大大降低了CPU执行指令的速度(因为需要等待数据的读取/写入)所以在CPU中开辟了一个高速缓存(一个线程划...原创 2019-04-22 23:18:43 · 194 阅读 · 0 评论 -
单测挡板demo(jdk7)
分布式多个系统间的调用,写单测的时候需要设置挡板,调用其他系统的时候,不是真的调用,而是返回设置好的返回结果需要的包(因为demo工程还有其他的依赖,一并拷贝了)<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <versi...原创 2019-04-04 15:20:28 · 3466 阅读 · 0 评论 -
双端链表、双向链表(java)
1、双端链表2、测试双端链表3、双向链表4、测试双向链表1、双端链表package com.cwq.ch05;import com.cwq.ch04.Node;/** * 双端链表,将数据串起来 * @author Carpoor * @date 2019年1月29日 */public class MyFirstLastLinkedList { privat...原创 2019-01-31 00:12:47 · 300 阅读 · 0 评论 -
递归(java)
package com.cwq.ch06;/** * 递归 * 斐波那契数列 * F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) * 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... * @author Carpoor * @date 2019年2月15日 */public cl...原创 2019-02-15 22:52:18 · 127 阅读 · 0 评论 -
链表(java)
1、节点2、链表3、测试类1、节点package com.cwq.ch04;/** * 节点,先定义每个数据的格式 * @author Carpoor * @date 2019年1月29日 */public class Node { public long data; public Node next; public Node(long data) { ...原创 2019-01-30 00:02:39 · 125 阅读 · 0 评论 -
栈、队列(java)
1、栈2、测试栈3、队列4、测试队列1、栈package com.cwq.ch03;/** * 栈,先进后出 * @author Carpoor * @date 2019年1月28日 */public class MyStack { //内部其实就是一个数组 private long[] arr; private int top; public MyS...原创 2019-01-28 22:38:45 · 112 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序(java)
冒泡排序package com.cwq.ch02.sort;/** * 冒泡排序 * 每次比较都是元素交换位置,交换的次数多,效率比较低 * @author Carpoor * @date 2019年1月27日 */public class BubbleSort { public static void sort(long[] arr) { //第一个元素开...原创 2019-01-27 23:25:44 · 128 阅读 · 0 评论 -
关于内存数据库h2的简单demo
h2是一个轻量级的内存数据库,配置简单,启动速度快。springboot默认配置好了h2的配置信息,我们直接使用h2数据库即可<!-- jar依赖的版本控制,需要导入springboot的parent依赖 --><dependencies> <dependency> <groupId>org.springframework.boo...原创 2018-12-25 10:59:09 · 951 阅读 · 0 评论