摘要: 1 、newCahcheThreadPool : 可根据需要创建线程的线程池,如果线程没有可用了,这时候有新任务来了,就创建一个新的线程加入到线程池里。对于在线程池中超过60s未使用的线程,会回收掉资源 2、newSigleTreadPool: 创建一个单线程的线程池,也就是这个线程池中只有一个线程 阅读全文
posted @ 2018-04-05 22:37 杰骜不驯 阅读(343) 评论(0) 推荐(0) 编辑
摘要: java 锁 ,sync locksync java的关键字,锁的是方法,lock 是个接口sync 缺点会一直等待,竞争激烈的话lock优于sync锁的种类:可重入锁 :两个方法方法以调用方法二只用加一个锁可中断 sync 不可,lock 可中断 公平锁 sync 没有锁公平性,lock 默认没有 阅读全文
posted @ 2018-03-16 13:28 杰骜不驯 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1、netty 3大特点 (1) 高并发:由于nio的特点支持高并发的请求 (2)传输快: 零拷贝,用户态之间的 buffer的逻辑聚合 (3)封装性:代码结构清晰简单 阅读全文
posted @ 2018-03-06 17:39 杰骜不驯 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 对象在内存中分为三个区域:1 对象头(Header) 2 实例数据(Instance Date) 3 对齐填充(Padding) 1 对象头: 1) 存储自身运行时的数据,如Hascode ,GC 分代年龄,锁状态标记,线程持有锁,偏向线程id,偏向时间戳。数据存放在32bit 和64bit 机中分 阅读全文
posted @ 2017-05-01 18:24 杰骜不驯 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 1 对类加载进行检查,之后分配内存大小(大小是在类加载的时候就确认的了)具体的分配内存的方式有两种(原因是由于不同的垃圾回收策略造成的) 1)由于使用Serial,ParNew ,带有Compact过程的收集器时对内存的处理是规整的,所以对内存分配可以使用”指针碰撞“的方式 2)使用cms这种基于m 阅读全文
posted @ 2017-05-01 18:01 杰骜不驯 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 1.@classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。 2.普通对象方法至少需要一个self参数,代表类对象实例 3.类方法有类变量cls传入,从而可以用cls 阅读全文
posted @ 2016-05-19 14:28 杰骜不驯 阅读(3740) 评论(0) 推荐(0) 编辑
摘要: Arraylist实现是数组,Linkedlist的实现是链表,这样就能知道他们各自的优缺点 可考虑的场景: i.删除的时候 ii.查询的时候 iii.添加的时候 在这些时候我们可以考虑根据数组还是链表来讨论那个比较好: 其他 (1)对于ArrayList和LinkedList, size() is 阅读全文
posted @ 2016-05-13 15:46 杰骜不驯 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 感觉这篇文章写得很好,留作以后更深一步阅读 http://hedengcheng.com/?p=771#_Toc374698322 针对着不同的隔离级别sql语句的不同锁的状态,这里写的很清楚 阅读全文
posted @ 2016-05-12 14:45 杰骜不驯 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 1 我们在执行sql语句的时候,如果我们在一个事务里执行到查询一条语句之后在更新保存。这样会出现库存为负的情况: 因为我们查询用的是共享锁,你在读的时候其他人也在读,你们读取相同的数据这样不能保证数据的准确性。可以采取两种方法解决这个问题, (1)执行过更新之后再执行一次查询看一下是否为负,是负的情 阅读全文
posted @ 2016-05-12 11:57 杰骜不驯 阅读(272) 评论(0) 推荐(0) 编辑
摘要: ScheduledExecutorService service = Executors.newScheduledThreadPool(10);service.scheduleAtFixedRate(() -> { LocalDateTime start = LocalDateTime.now(). 阅读全文
posted @ 2016-05-01 10:46 杰骜不驯 阅读(19484) 评论(0) 推荐(0) 编辑