会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Programmer★小李
博客园
首页
新随笔
联系
管理
订阅
1
2
3
4
下一页
[置顶]
GC的 算法和种类
摘要: GC 的概念 garbage Collection 垃圾回收 1960 年,List语言使用了GC java中,GC的对象是堆空间和永久区 GC 算法 引用计数法 老牌垃圾回收算法 通过引用计算来回收垃圾 引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当
阅读全文
posted @ 2017-08-09 10:33 程序员小李
阅读(554)
评论(0)
推荐(0)
[置顶]
JVM 的运行机制
摘要: JVM 启动流程: 1、通过java 命令 启动JVM 2、装置配置(根据当前路径及系统版本寻找jvm.cfg) 3、根据配置找jvm.dll 4、使用jvm.dll初始化JVM 5、找到main,并执行 JVM 的内部结构 PC寄存器: 1、每个线程都有一个PC寄存器 2、在线程创建的时创建 3、
阅读全文
posted @ 2017-08-08 10:07 程序员小李
阅读(509)
评论(0)
推荐(0)
[置顶]
各种同步控制工具的使用
摘要: Semaphore 概述 共享锁,运行多个线程同时临界区 主要接口 public void acquire()public void acquireUninterruptibly()public boolean tryAcquire()public boolean tryAcquire(long t
阅读全文
posted @ 2017-05-27 00:34 程序员小李
阅读(1380)
评论(2)
推荐(2)
[置顶]
ReentrantLock深入学习
摘要: ReentrankLock 分为 非公平锁及公平锁 首先我们看一下它里面有哪些属性: tryAcquire方法中,先 判断当前state值是否是0,若为0 ,则可进行尝试加锁。若不为0,判断作这个加锁操作的是否为当前线程,若为当前线程,则直接累加,然后更新state值 setExclusiveOwn
阅读全文
posted @ 2017-05-23 23:18 程序员小李
阅读(347)
评论(0)
推荐(0)
[置顶]
无锁模式的Vector
摘要: 这两天学习无锁的并发模式,发现相比于传统的 同步加锁相比,有两点好处1.无锁 模式 相比于 传统的 同步加锁 提高了性能 2.无锁模式 是天然的死锁免疫 下来介绍无锁的Vector LockFreeVector 它的结构是: 从这里我们可以看到,它的内部是采用的是 无锁的引用数组, 数组嵌套数组 相
阅读全文
posted @ 2017-05-22 23:13 程序员小李
阅读(1174)
评论(0)
推荐(0)
[置顶]
无锁atomicInteger
摘要: AtomicInteger可以保证硬件上的原子操作 1.主要原理 CAS操作 在进行数据更新的时候,会进行与内存中的地址进行比较,若预期值与内存中的值相同,则进行数据上的更新,若值不同,则更新失败, CAS就是Compare and Swap的意思,比较并操作 AtomicInteger主要是调用了
阅读全文
posted @ 2017-05-21 15:21 程序员小李
阅读(203)
评论(0)
推荐(0)
[置顶]
线程范围内的线程共享(多线程)
摘要: 首先介绍一下两个方法: 1.通过Map进行实现 主键为Thread ,value 为数据, 主要思路为:与线程绑定,不同的线程之间的数据相互独立 2.通过ThreadLocal 实现 首先先介绍一下ThreadLocal 的原理 每个Thread ,都有一个ThreadLocalMap ,所以每次通
阅读全文
posted @ 2017-05-21 14:58 程序员小李
阅读(383)
评论(0)
推荐(0)
[置顶]
求一个二维整数数组最大子数组之和,时间复杂度为N^2
摘要: 本随笔只由于时间原因,我就只写写思想了二维数组最大子数组之和,可以 引用 一维最大子数组之和 的思想一维最大子数组之和 的思想,在本博客上有,这里就不做多的介绍了我们有一个最初的二维数组a[n][m],找它的最大子数组之和1.我们先建立一个新的二维数组b[n][m] 二维数组b[j][k] 存放的是a[j][k](0int main(){ int i,j; int a[3][3]={-1,-2,1,-3,4,2,3,4,-5}; int b[3][3]; int max=a[0][0]; for(i=0;i=0&&b[i][j-1]>=0) { if(b[i][j-1]&
阅读全文
posted @ 2014-03-26 09:45 程序员小李
阅读(365)
评论(0)
推荐(0)
2017年8月10日
java堆的分析
摘要: 内存溢出(OOM)的原因 JVM的内存空间 : 堆、永久区、线程栈、直接内存 堆溢出:java.lang.OutOfMemoryError: Java heap space 解决方法:增大堆空间,及时释放内存 永久区溢出: Caused by: java.lang.OutOfMemoryError:
阅读全文
posted @ 2017-08-10 14:11 程序员小李
阅读(154)
评论(0)
推荐(0)
类装载器
摘要: 类装载器验证流程 1、加载 取得类的二进制流 转化为方法区的数据结构 在java堆中生成对应的 java.lang.Class对象 2、链接 验证 目的:保证Class流的格式是否正确 文件格式是否正确、元数据验证、字节码验证、符号引用验证 准备 分配内存,并为类设置初始值(在方法区中) publi
阅读全文
posted @ 2017-08-10 09:20 程序员小李
阅读(128)
评论(0)
推荐(0)
2017年8月9日
GC的设置
摘要: 堆的回顾 串行收集器 1、最古老,最稳定 2、效率高 3、停顿时间长 4、-XX:+UseSerialGC 新生代和老年代使用串行回收 新生代复制算法 老年代标记-压缩 并行收集器 PerNew 1、-XX:+UserPerNewGC 新生代 并行回收 老年代 串行回收 2、多线程 ,多核支持 3、
阅读全文
posted @ 2017-08-09 14:49 程序员小李
阅读(656)
评论(0)
推荐(0)
2017年8月8日
JVM的常用配置参数
摘要: Trace跟踪参数 -verbose:gc 打开gc的跟踪方式 -XX:+PrintGC 可以打印gc的简要信息 -XX:+PrintGCDeteils 打印gc的详细信息 -XX:+PrintGCTimeStamps 打印GC发生的时间戳 -Xloggc:log/gc.log 指定gc log位置
阅读全文
posted @ 2017-08-08 14:05 程序员小李
阅读(447)
评论(0)
推荐(0)
2017年6月2日
【转载】Java并发编程:线程池的使用
摘要: 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务
阅读全文
posted @ 2017-06-02 10:43 程序员小李
阅读(215)
评论(0)
推荐(0)
2017年5月31日
JQuery IE8 找不到getContext属性,兼容性问题
摘要: 我做了一个二维码的一个签到功能 通过JQuery来生成二维码 但是没想到在IE9,10 以上都没有问题 然后客户的机子上竟然是IE8, 还好找到了问题 在IE8 下js报错 getContext 找不到、 解决方案:修改jquery.qrcode.min.js 源码: 将 大家可以看到代码:若 re
阅读全文
posted @ 2017-05-31 17:26 程序员小李
阅读(2236)
评论(0)
推荐(0)
1
2
3
4
下一页
公告