摘要: 一、Socket编程 1. 通过Socket编程可以和其他机器通信,监听本机某个端口号,收取其他机器发到本机上这个端口号上的消息,基于TCP协议,操作系统只认TCP协议 2. 三种操作:Accept连接操作、读操作、写操作,Socket编程需要在连接成功后,启动一个while死循环的线程进行读写操作 阅读全文
posted @ 2019-10-06 16:11 牧云文仔 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一、概念 1. 内存泄漏:对象使用完之后,没有按照预期被GC回收,一直留在内存中 2. 内存溢出:大量对象一直留在内存中,导致内存不够用(OOM),影响正常的程序运行 二、内存泄漏的场景 1. 内存中数据量太大,比如一次性从数据库中取出来太多数据 2. 静态集合类中对对象的引用,在使用完后未清空(只 阅读全文
posted @ 2019-10-06 15:09 牧云文仔 阅读(1688) 评论(0) 推荐(0) 编辑
摘要: 一、概念 1. AQS(AbstractQueuedSynchronizer),抽象队列式同步器,在java.util.concurrent.locks(JUC)包下,是除了Java自带的synchronized关键字之外的锁机制 2. AQS机制:如果请求的资源被其他线程锁定,将当前线程加入等待队 阅读全文
posted @ 2019-10-06 07:30 牧云文仔 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一、CAS概念 1. 悲观锁:一个线程加锁后其他线程会挂起,直到持有锁的线程释放锁,悲观锁从最坏的情况考虑问题。独占锁是一种悲观锁,例如synchronized关键字加锁,例如可重入锁ReentrantLock 2. 乐观锁:不加锁,多个线程共同执行,如果发生了冲突,就去重试(do...while. 阅读全文
posted @ 2019-10-05 17:52 牧云文仔 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 一、自旋锁 vs 互斥锁 1. 自旋锁:当一个线程获取锁时,如果锁已经被其他线程获取,当前线程就while进行重试,不进入休眠阻塞,减少线程上线文切换,但是循环等待消耗CPU 2. 互斥锁:当一个线程获取锁后,其余线程进入休眠阻塞,进行线程上下文切换 二、悲观锁 vs 乐观锁 1. 悲观锁:先锁定共 阅读全文
posted @ 2019-09-28 18:16 牧云文仔 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 一、引入背景(Why) 1. 在多线程环境下,HashMap的put会导致扩容,扩容引起死循环,导致CPU使用率100% 2. 可以使用HashTable和Collections.synchronizedMap(hashMap)可以解决多线程的问题 3. HashTable和Collections. 阅读全文
posted @ 2019-09-28 17:44 牧云文仔 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 一、集合概览 1. 集合与数组:数组是定长的,集合是变长的 2. 集合的接口是Collection,数据结构有Map/List/Set 3. 集合继承关系 二、HashMap定义: 1. Hash表(key-value),根据key(hash code)找到对应的value;会有hash冲突 2. 阅读全文
posted @ 2019-09-23 22:58 牧云文仔 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 一、引入背景 1. 线程频繁的创建和销毁会消耗大量系统资源 2. 线程上线文切换会消耗大量系统资源 3. 线程数量太多,栈内存会溢出,因为每个线程都有自己的栈 4. 需要一种机制,可以线程复用,执行完一个任务后不销毁,继续执行其他任务 5. 还可以提高线程的可控性 二、线程池定义 1. 接口关系 a 阅读全文
posted @ 2019-09-21 20:58 牧云文仔 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 一、连接远程机 ssh 机器名/机器IP ssh 用户名@机器名/机器IP 二、查看磁盘空间和文件大小 总的磁盘空间 df -h 按大小查看所有文件 du -sh ./* 按大小查看某个文件夹 du -sh logs/ 三、查看进程ps-process status netstat -anp | g 阅读全文
posted @ 2019-09-21 20:18 牧云文仔 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 一、通信框架 1. 通信包含两部分:传输协议+网络IO 2. 传输协议:TCP/UDP/HTTP,基于Socket的流处理,socket编程需要对每个请求开一个线程,阻塞式等待通信消息 3. 网络IO:NIO是Socket的改善,使用selector优化 4. Netty是基于NIO的分布式通信框架 阅读全文
posted @ 2019-09-17 13:07 牧云文仔 阅读(259) 评论(0) 推荐(0) 编辑