摘要:
CAS,在Java并发应用中通常指CompareAndSwap,即比较并交换。 CAS是一个原子操作,它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值,保证了新的值总是基于最新的信息计算的,如果有其他线程在这期间修改了这个值则CAS失败。 synchronized属于重量级锁,很多时 阅读全文
摘要:
HashMap的线程不安全主要体现在resize时的死循环及使用迭代器时的fast-fail上。 Fast-fail: fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。 在使用迭代器的过程中如 阅读全文
摘要:
简介: HashMap: 具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。 HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。 HashMap的线程不安全主要体现在resize时的 阅读全文
摘要:
TCP(Transmission Control Protocol 传输控制协议) 面向连接,提供可靠的服务,无重复、无丢失、无差错,面向字节流,只能是点对点,首部 20 字节,全双工。 UDP(User Datagram Protocol用户数据报协议) 无连接,尽最大努力交付,面向报文, 支持一 阅读全文
摘要:
MySQL调优三步: 慢查询 (分析出现出问题的sql) Explain (显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句) Profile(查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 System 阅读全文
摘要:
MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符. select_type: SELECT 查询的类型. S 阅读全文
摘要:
select,poll,epoll都是IO多路复用的机制。 I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行 阅读全文
摘要:
对于一次输入操作,它会经历两个阶段: 等待数据准备好。(等待数据从网络中到达,然后数据被复制到内核的缓冲区中) 将数据从内核拷贝到进程中。(把数据从内核缓冲区复制到进程缓冲区中) Unix下可用的5中I/O模型: 阻塞 I/O(blocking IO) 非阻塞 I/O(nonblocking IO) 阅读全文
摘要:
可以用wait()和notify()来实现,也可以用阻塞队列,下面介绍阻塞队列: 阻塞队列: BlockingQueue阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和poll方法。如果队列已经满了,那么put方法将阻塞直到空间可用;如果队列为空,那么take方法将阻塞直到有元素 阅读全文
摘要:
Synchronized 同步代码块 使用 monitorenter 和 moniterexit 指令实现, monitorenter指令插入到同步代码块的开始位置, moniterexit 指令插入到同步代码块的结束位置, jvm 需要保证每一个 monitorenter 都有一个 moniter 阅读全文