深入理解计算机网络IO(上)——IO模型 发表于 2021-03-11 | 分类于 计算机网络 | 0 | 阅读次数 307 今天来学习下:什么是IO?如何完成一次IO?什么是IO多路复用? 概念说明 在谈IO模型之前,我们先来了解一下这里面涉及一些概念: Socket套接字和TCP连接 用户空间与内核空间 Socket缓存区 CPU中断 Socket套接字和TCP连接 Socket中文翻译为“插孔”、“插槽”,Soc 阅读全文 »
抽象资源同步器框架AQS原理(五)——从内存屏障到volatile原理 发表于 2021-02-18 | 分类于 多线程 | 0 | 阅读次数 368 并发问题的背景 这里我们先从最源头,想想volatile的存在为了解决什么样的问题? 随着CPU、内存、IO设备不断更新发展,有一个核心矛盾一直存在:CPU、内存、IO三者的速度差距 为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都做出了贡献,主要体现为:C 阅读全文 »
抽象资源同步器框架AQS原理(四)——Synchronized锁原理 发表于 2021-01-28 | 分类于 多线程 | 0 | 阅读次数 369 前几天看到AQS的一个问题: 有了 synchronized 为什么还要重复造轮子? 我们顺便来回顾下概念 Synchronized 原理 Synchronized在1.6之前也叫重量级锁,随着Java SE 1.6对Synchronized进行了各种优化之后,有些情况下它就并不那么重了,它的作 阅读全文 »
谈谈我的2020 发表于 2021-01-07 | 分类于 技术杂谈 | 0 | 阅读次数 667 抓住2020最后的小尾巴,最后抽点时间,谈谈我的2020~ 总览 19年结束时,我在西安,2020快结束时,我还在西安... 西安是我人生轨迹中很重要的部分,生活上用两句话来说就是:从之前的假北方人变成了假四川人,从之前的臊子面油条火锅变成了牛肉面泡馍烧烤;技术上我很幸运,上半年跟着山哥(项目 阅读全文 »
抽象资源同步器框架AQS原理(三)——条件队列 发表于 2020-12-24 | 分类于 多线程 | 0 | 阅读次数 331 条件队列是什么 背景 了解这个问题之前,我们先来了解下为什么需要wait与notify? 网上有一个经典的栗子:图书馆有一本《Java并发编程艺术》,张三首先借走了(持有锁),李四也想借这个本书,但是不能每天都去图书馆看一下(轮训)张三是否归还,张三也不是每天都来说我还要看几天,这时候就需要一个 阅读全文 »
抽象资源同步器框架AQS原理(二)——共享模式 发表于 2020-11-19 | 分类于 多线程 | 0 | 阅读次数 456 前面我们了解了AbstractQueuedSynchronizer框架独占模式的流程,今天我们借助Semaphore的源码来学习下共享模式的原理。 共享模式 共享模式和独占模式的关系就好比共享锁和独占锁,共享模式在获取资源或者是释放资源时,都可能会唤醒后面所有非独占的节点,共享模式它交给子类实现的方 阅读全文 »
抽象资源同步器框架AQS原理(一)——独占模式 发表于 2020-10-15 | 分类于 多线程 | 0 | 阅读次数 401 AQS 是什么 AbstractQueuedSynchronizer(简称AQS)是一个多线程访问共享资源的抽象同步器框架,说简单点就是主要由 一个状态(state) + 双向无锁队列(CLH) 组成的工具,它主要提供了同步状态原子性管理、线程的阻塞和解除阻塞、队列的管理的方法,是Java并发包的基 阅读全文 »
MySQL学习篇(9)——MySQL对LRU的优化 发表于 2020-03-30 | 分类于 MySQL | 0 | 阅读次数 1202 基于冷热数据分离的思想设计LRU链表 为了解决上一讲我们说的简单的LRU链表的问题,真正MySQL在设计LRU链表的时候,采取的实际上是冷热数据分离的思想。 之前一系列的问题,就是因为所有缓存页都混在一个LRU链表里,才导致的。 所以真正的LRU链表,会被拆分为两个部分,一部分是热数据,一部分是冷数 阅读全文 »
MySQL学习篇(8)——flush链表是什么,Buffer Pool满了怎么办 发表于 2020-03-25 | 分类于 MySQL | 0 | 阅读次数 1112 问题背景 在执行增删改的时候,如果发现数据页没缓存,那么必然会基于free链表找到一个空闲的缓存页,然后读取到缓存页里去,但是如果已经缓存了,那么下一次就必然会直接使用缓存页。 需要更新的数据页都会在Buffer Pool的缓存页里,供你在内存中直接执行增删改的操作。 接着去更新Buffer Poo 阅读全文 »
MySQL学习篇(7)——free链表是什么,和Buffer Pool有什么关系 发表于 2020-03-22 | 分类于 MySQL | 0 | 阅读次数 1088 当数据库启动之后,buffer pool也分配好了,只不过这个时候,Buffer Pool中的一个一个的缓存页都是空的,里面什么都没有,要等数据库运行起来之后,当我们要对数据执行增删改查的操作的时候,才会把数据对应的页从磁盘文件里读取出来,放入Buffer Pool中的缓存页中。 我们怎么知道哪些缓 阅读全文 »