- 博客(16)
- 收藏
- 关注
原创 sql时间类型与Java时间类型的转换
Date endTime = body.get("start_time") == null ? null : new SimpleDateFormat("yyyy-MM-dd").parse(body.get("start_time").toString());
2021-10-27 18:03:41 183
原创 postgreSQL建表模板
CREATE TABLE third_product ( id serial NOT NULL, code varchar NOT NULL, third_spu varchar, spu varchar, name varchar, brand_id int4, brand_name varchar, third_sku varchar NOT NULL, sku varchar NOT NULL, bar_code varchar, stock int4, freezing
2021-10-15 13:54:51 320
原创 List根据某个字段的进行去重的工具类
List<HuijuSkuInfoResVo> huijuSkuInfoResVos = huijuSkuInfoResVos.stream() .filter(distinctByKey(HuijuSkuInfoResVo::getSku)) .collect(Collectors.toList()); private static <T> Predicate<T> distinctByKey(Function<? super T, ?>
2021-10-15 09:28:08 171
原创 多线程和高并发-05 AQS ThreadLocal 强引用 软引用 弱引用
1.讲一下AQS? 2.ThreadLocal 以空间换时间 将数据设置到一个map中,key为当前线程,value是当前数据 比如声明式事务,将不同方法的设置为一个完整的事务,从配置文件中拿到数据库连接,必须保证不同数据源为一个collection对象,则只需要去ThreadLocal拿即可。 3.ThreadLocalMap 4.强引用、弱引用、软引用、 强引用:没有指向直接回收 软引用:SoftReference 只有内存不够用的时候才会回收 做缓存用 弱引用:WeakReference 只要遭遇到g
2021-10-10 10:40:15 123 1
原创 多线程和高并发03 - CountDownLatch SyclicBarrier Semaphore
1.ReentrantLock 必须手动解锁 - 公平非公平 - lock() tryLock() 2.countdownLatch 计数结束latch.await()才会打开 join都等着合并在当前线程上 3.CyclicBarrier 循环栅栏 线程数到达阈值 往下执行 4.Semaphore 信号量 限流 最多允许多少线程同时运行 ...
2021-10-09 14:21:46 119
原创 多线程和高并发-02 volatile AtomicInteger CAS
1.Volatile 保持线程可见性 - MESI CPU的缓存一致性协议 防止指令重排 - 单例模式双重检查时,可能会出现指令重排序 要加volatile - (1)申请内存 赋默认值 0 null - (2)赋初始值 xx obj - (3)instance 指针指向内存地址 volatile不能保证原子性 不能替代synchronized object作为一个锁的对象,如果属性发生改变,不影响锁的使用。 如果object变为其他对象,则锁定的对象发生改变 final Object obj
2021-10-09 11:06:18 87
原创 多线程和高并发-01 基本概念
基本概念 什么是进程、线程、携程 如何启动一个线程? join yiled sleep 线程的6种状态 synchronized几种类型 synchronized底层实现 synchronized(object)在64位的对象头上面拿出两位,来记录是否被锁定,两位的组合分别是不同锁的类型。 markword记录这个线程ID (偏向锁) 如果有线程争用,升级为自旋锁 短暂自旋一段时间 默认是自旋10次,升级为重量级锁,去操作系统申请资源 面试题 模拟银行账户:set加锁,get不加锁可以吗? 判断自己的业务是
2021-10-07 16:38:05 66
原创 Jvm06-Jvm调优必备理论知识
1、什么是垃圾? 没有引用指向的任何对象,都叫垃圾。 2、如何找到垃圾? (1)引用计数法,但是不能解决循环引用的问题 (2)根可达算法 什么是根Root? 虚拟机栈、 本地方法栈、 运行时常量池、 类模板、 静态引用 3、GC常用算法? 复制算法 标记清除、标记整理 4、Jvm内存分代模型 对象何时进入老年代? 对象分配过程图 5、常见的垃圾回收器 Serial 单线程 SerialOld 单线程在老年代 Parllel Scavenge Parlle.
2021-09-30 20:19:50 86
原创 封装List分批请求的工具类
//批量处理长度 example 200条 //待处理的List集合 public static <T> List<List<T>> getSplitList(int splitNum, List<T> list) { List<List<T>> splitList = new LinkedList<>(); // groupFlag >= 1 int gro.
2021-09-27 13:15:09 135
原创 Jvm面试
1、请解释一下对象的加载过程? (1)类的加载 (2)类的连接: 校验、准备、解析 (3)类的初始化 (4)申请对象内存 (5)成员变量赋默认值 (6)调用构造方法 a.成员变量顺序赋初始值 b.执行构造方法语句 2、对象在内存中的存储布局? 3、一个new Object() 占多少字节? 一个new Object() 占多少字节? 16 对象头 8字节 ClassPoniter 打开是压缩的4字节 Padding 4字节 一个new int[] 占多少字节? 16 对象头 8字节 Cl
2021-09-26 22:04:41 64
原创 单例模式下要不要加volatile
是需要的,new对象不是原子性操作,多条指令有可能会发生重排 Volatile可以防止指令重排,保证顺序执行
2021-09-26 11:39:19 552 1
原创 Jvm02-class文件如何加载到内存的?
1、系统装载class文件 (1)verification :校验 是否符合Class规范,CAFE BABE.. (2)preparation :准备 静态变量赋默认值的阶段 (3)resolution :解析 class常量池中的符号引用变为直接地址引用 2、类加载器 3、双亲委派机制 (1)Bootstrap是C++实现的,Java中并没有一个类与之对应,所以返回空 (2)classloader的classloader是Bootstrap加载的 最后两行输出null (3)每个加载器都会有自己的
2021-09-25 15:50:44 271
原创 Jvm01-入门以及class文件格式
1、Java从编码到执行 (1)Java可以解释 和 编译混合执行的 (2)常用的代码,会进行即时编译器作为本地编译,下次执行的时候就不需要一句句解释执行。 (3)执行引擎可以直接交给操作系统调用 2、什么是Jvm Java和Jvm无关 .class和Jvm有关 3、.class文件格式 ...
2021-09-25 11:52:13 98
原创 Object转List类型
Object data = response.getData(); //先将Object转为JSON类型 String dataJson = JSONObject.toJSONString(data); //将JSON类型转为List List<AbleStockQueryBizResVo> ableStockQueryBizResVos = JSONObject.parseArray(dataJson, AbleStockQueryBizResVo.class); ...
2021-09-24 09:59:49 806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人