- 博客(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
237
原创 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
426
原创 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
215
原创 多线程和高并发-05 AQS ThreadLocal 强引用 软引用 弱引用
1.讲一下AQS?2.ThreadLocal以空间换时间 将数据设置到一个map中,key为当前线程,value是当前数据比如声明式事务,将不同方法的设置为一个完整的事务,从配置文件中拿到数据库连接,必须保证不同数据源为一个collection对象,则只需要去ThreadLocal拿即可。3.ThreadLocalMap4.强引用、弱引用、软引用、强引用:没有指向直接回收软引用:SoftReference 只有内存不够用的时候才会回收 做缓存用弱引用:WeakReference 只要遭遇到g
2021-10-10 10:40:15
178
1
原创 多线程和高并发03 - CountDownLatch SyclicBarrier Semaphore
1.ReentrantLock 必须手动解锁- 公平非公平- lock() tryLock()2.countdownLatch 计数结束latch.await()才会打开join都等着合并在当前线程上3.CyclicBarrier 循环栅栏 线程数到达阈值 往下执行4.Semaphore 信号量 限流 最多允许多少线程同时运行...
2021-10-09 14:21:46
152
原创 多线程和高并发-02 volatile AtomicInteger CAS
1.Volatile保持线程可见性- MESI CPU的缓存一致性协议防止指令重排- 单例模式双重检查时,可能会出现指令重排序 要加volatile- (1)申请内存 赋默认值 0 null- (2)赋初始值 xx obj- (3)instance 指针指向内存地址volatile不能保证原子性 不能替代synchronizedobject作为一个锁的对象,如果属性发生改变,不影响锁的使用。如果object变为其他对象,则锁定的对象发生改变 final Object obj
2021-10-09 11:06:18
114
原创 多线程和高并发-01 基本概念
基本概念什么是进程、线程、携程如何启动一个线程?joinyiledsleep线程的6种状态synchronized几种类型synchronized底层实现synchronized(object)在64位的对象头上面拿出两位,来记录是否被锁定,两位的组合分别是不同锁的类型。markword记录这个线程ID (偏向锁)如果有线程争用,升级为自旋锁 短暂自旋一段时间默认是自旋10次,升级为重量级锁,去操作系统申请资源面试题模拟银行账户:set加锁,get不加锁可以吗?判断自己的业务是
2021-10-07 16:38:05
104
原创 Jvm06-Jvm调优必备理论知识
1、什么是垃圾?没有引用指向的任何对象,都叫垃圾。2、如何找到垃圾?(1)引用计数法,但是不能解决循环引用的问题(2)根可达算法什么是根Root?虚拟机栈、本地方法栈、运行时常量池、类模板、静态引用3、GC常用算法?复制算法标记清除、标记整理4、Jvm内存分代模型对象何时进入老年代?对象分配过程图5、常见的垃圾回收器Serial 单线程SerialOld 单线程在老年代Parllel Scavenge Parlle.
2021-09-30 20:19:50
126
原创 封装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
195
原创 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
96
原创 单例模式下要不要加volatile
是需要的,new对象不是原子性操作,多条指令有可能会发生重排Volatile可以防止指令重排,保证顺序执行
2021-09-26 11:39:19
611
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
328
原创 Jvm01-入门以及class文件格式
1、Java从编码到执行(1)Java可以解释 和 编译混合执行的(2)常用的代码,会进行即时编译器作为本地编译,下次执行的时候就不需要一句句解释执行。(3)执行引擎可以直接交给操作系统调用2、什么是JvmJava和Jvm无关 .class和Jvm有关3、.class文件格式...
2021-09-25 11:52:13
143
原创 Object转List类型
Object data = response.getData();//先将Object转为JSON类型String dataJson = JSONObject.toJSONString(data);//将JSON类型转为ListList<AbleStockQueryBizResVo> ableStockQueryBizResVos = JSONObject.parseArray(dataJson, AbleStockQueryBizResVo.class);...
2021-09-24 09:59:49
908
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅