会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
牧云文仔
博客园
首页
新随笔
联系
管理
订阅
上一页
1
···
6
7
8
9
10
11
12
13
14
15
下一页
2019年10月27日
Synchronized简介与原理
摘要: 一、作用 1. 多线程同步代码,保证方法或者代码块在运行时,同一时刻只有一个线程可以进入到临界区(互斥性) 2. 保证线程间共享变量的修改及时可见(可见性) a. 当线程获取锁时,线程的本地变量无效,需要从主存中获取共享变量的值 b. 线程释放锁时,线程的本地变量被刷新到主存中 3. 有效解决重排序
阅读全文
posted @ 2019-10-27 12:45 牧云文仔
阅读(226)
评论(0)
推荐(0)
2019年10月26日
ThreadLocal简介与原理
摘要: 一、引入场景 1. 打印方法执行的耗时 public void service(){ before(); doSomething(); after(); } 2. 在before和after记录当前时间,两者相减得到doSomething()的耗时 private long startTime; /
阅读全文
posted @ 2019-10-26 20:12 牧云文仔
阅读(323)
评论(0)
推荐(0)
2019年10月9日
ssh简介和使用
摘要: 一、简介 1. ssh(Secure Shell)是一个安全网络协议 2.用于远程连接linux服务器 3. 传输的数据是RSA非对称加密和压缩的 二、安装 1. ssh分为服务器和客户端,linux系统默认已经安装 2. 登录远程机器需要安装客户端 sudo apt-get install ope
阅读全文
posted @ 2019-10-09 10:32 牧云文仔
阅读(845)
评论(0)
推荐(0)
2019年10月6日
Netty简介
摘要: 一、Socket编程 1. 通过Socket编程可以和其他机器通信,监听本机某个端口号,收取其他机器发到本机上这个端口号上的消息,基于TCP协议,操作系统只认TCP协议 2. 三种操作:Accept连接操作、读操作、写操作,Socket编程需要在连接成功后,启动一个while死循环的线程进行读写操作
阅读全文
posted @ 2019-10-06 16:11 牧云文仔
阅读(255)
评论(0)
推荐(0)
JVM内存泄漏导致内存溢出(OOM)的场景
摘要: 一、概念 1. 内存泄漏:对象使用完之后,没有按照预期被GC回收,一直留在内存中 2. 内存溢出:大量对象一直留在内存中,导致内存不够用(OOM),影响正常的程序运行 二、内存泄漏的场景 1. 内存中数据量太大,比如一次性从数据库中取出来太多数据 2. 静态集合类中对对象的引用,在使用完后未清空(只
阅读全文
posted @ 2019-10-06 15:09 牧云文仔
阅读(1742)
评论(0)
推荐(0)
Java同步器AQS
摘要: 一、概念 1. AQS(AbstractQueuedSynchronizer),抽象队列式同步器,在java.util.concurrent.locks(JUC)包下,是除了Java自带的synchronized关键字之外的锁机制 2. AQS机制:如果请求的资源被其他线程锁定,将当前线程加入等待队
阅读全文
posted @ 2019-10-06 07:30 牧云文仔
阅读(164)
评论(0)
推荐(0)
2019年10月5日
CAS的ABA问题
摘要: 一、CAS概念 1. 悲观锁:一个线程加锁后其他线程会挂起,直到持有锁的线程释放锁,悲观锁从最坏的情况考虑问题。独占锁是一种悲观锁,例如synchronized关键字加锁,例如可重入锁ReentrantLock 2. 乐观锁:不加锁,多个线程共同执行,如果发生了冲突,就去重试(do...while.
阅读全文
posted @ 2019-10-05 17:52 牧云文仔
阅读(281)
评论(0)
推荐(0)
2019年9月28日
Java中的各种锁简介
摘要: 一、自旋锁 vs 互斥锁 1. 自旋锁:当一个线程获取锁时,如果锁已经被其他线程获取,当前线程就while进行重试,不进入休眠阻塞,减少线程上线文切换,但是循环等待消耗CPU 2. 互斥锁:当一个线程获取锁后,其余线程进入休眠阻塞,进行线程上下文切换 二、悲观锁 vs 乐观锁 1. 悲观锁:先锁定共
阅读全文
posted @ 2019-09-28 18:16 牧云文仔
阅读(274)
评论(0)
推荐(0)
Java集合:ConcurrentHashMap
摘要: 一、引入背景(Why) 1. 在多线程环境下,HashMap的put会导致扩容,扩容引起死循环,导致CPU使用率100% 2. 可以使用HashTable和Collections.synchronizedMap(hashMap)可以解决多线程的问题 3. HashTable和Collections.
阅读全文
posted @ 2019-09-28 17:44 牧云文仔
阅读(758)
评论(0)
推荐(0)
2019年9月23日
Java集合:HashMap
摘要: 一、集合概览 1. 集合与数组:数组是定长的,集合是变长的 2. 集合的接口是Collection,数据结构有Map/List/Set 3. 集合继承关系 二、HashMap定义: 1. Hash表(key-value),根据key(hash code)找到对应的value;会有hash冲突 2.
阅读全文
posted @ 2019-09-23 22:58 牧云文仔
阅读(171)
评论(0)
推荐(0)
上一页
1
···
6
7
8
9
10
11
12
13
14
15
下一页
公告