Gallrax's blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

操作系统-IO

操作系统 架构 内核程序: 操作系统中, 可以访问所有硬件设备, 如网卡、内存设备等的一些特殊的高权限的系统程序,用户程序: 只能有限的访问部分内存空间, 对硬件设备没有访问权限的低权限的应用程序或系统程序 获取数据流程: 当我们需要读取一条数据的时候, 首先需要发请求告诉内核, 我需要什么数据, 等内核准备好数据之后, 再从内核空间拷贝到用户空间 数据准备: 等待内核准备数据 数据拷贝: 数据
2023-04-18
操作系统 > IO
#IO #零拷贝 #IO 多路复用 #mmap

网络相关-TCP/HTTP/HTTPS

网络传输模型 TCP/IP数据包 每个分层中, 都会对所发送的数据附加一个首部, 在这个首部中包含了该层必要的信息, 如发送的目标地址以及协议相关信息. 通常, 为协议提供的信息为包首部, 所要发送的内容为数据. 在下一层的角度看, 从上一层收到的包全部都被认为是本层的数据 网络中传输的数据包由两部分组成:一部分是协议所要用到的首部, 另一部分是上一层传过来的数据. 首部的结构由协议的具
2023-04-11
网络
#HTTP #TCP #UDP

Spring-源码相关

ApplicationContext的公共接口1234# ApplicationContext的公共接口,定义寄存器和扫描方法AnnotationConfigRegistry void register(Class<?>... annotatedClasses); void scan(String... basePackages); AnnotationConfigApplicat
2023-04-10
源码 > Spring
#源码 #Spring

MyBatis源码流程

自动扫描123456789101112131415161718192021222324252627282930313233343536373839404142434445MybatisAutoConfiguration(@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)) - MapperScannerRegist
2023-04-10
源码 > MyBatis
#MyBatis #源码

JVM-内存相关

JVM 内存相关知识 内存分配 指针碰撞(CAS 来解决并发问题) 空闲列表(连续的内存区域) 逃逸分析 在方法体中创建对象,如果该对象被方法体其他变量引用到,叫方法逃逸,被外部线程访问到叫线程逃逸 优化点: 同步消除:如果一个对象被逃逸分析发现只能被一个线程所访问,那对于这个对象的操作可以不同步 栈上分配:如果确定一个对象不会逃逸出线程之外,那让这个对象在栈上分配内存将会是一个很不错的
2023-03-27
Java > JVM
#JVM

JVM-内存相关

偏向锁 如果不存在线程竞争的一个线程获得了锁,那么锁就进入偏向状态,此时Mark Word的结构变为偏向锁结构,锁对象的锁标志位(lock)被改为01,偏向标志位(biased_lock)被改为1,然后线程的ID记录在锁对象的Mark Word中(使用CAS操作完成)。以后该线程获取锁时判断一下线程ID和标志位,就可以直接进入同步块,连CAS操作都不需要,这样就省去了大量有关锁申请的操作,从而也就
2023-03-27
Java > JVM
#JVM

分布式系统一致性算法 - Raft

简介 Raft是用于管理复制日志的共识算法. 它产生的结果等效于 multi-Paxos, 它的效率与Paxos相同, 但其结构与Paxos不同. 这使Raft比Paxos更易于理解, 并且为构建实用系统提供了更好的基础. 为了增强可理解性, Raft分离了共识的关键要素, 例如领导人选举, 日志复制和安全性, 并强制实施了更高程度的一致性以减少必须考虑的状态数. 一项用户研究的结果表明, 与Pa
2020-12-06
分布式 > 一致性算法
#Raft #一致性 #CAP

Kafka 知识汇总

简介 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列, 可以处理大量的数据, 并使您能够将消息从一个端点传递到另一个端点. Kafka适合离线和在线消息消费. Kafka消息保留在磁盘上, 并在群集内复制以防止数据丢失. Kafka构建在ZooKeeper同步服务之上. 它与Apache Storm和Spark非常好地集成, 用于实时流式数据分析. Kafka
2020-02-16
中间件 > Kafka
#Kafka

Redis 知识汇总

简介 Redis 是一款基于内存的数据库, 即 NoSQL. 采用单线程模型, 但是能10w 的并发. 底层使用 IO 多路复用模型(Java 中的 NIO, 即在进行 IO 是, 线程不阻塞可以处理其他事). 常用的数据结构: String, List(可用作队列), Set, ZSet(sorted set有序集合), Hash 持久化两种方式: RDB(快照) 和 AOF(日志追加)
2020-02-15
中间件 > Redis
#Redis

从根儿上理解 MySQL - 索引总结

前提 上一篇我们已经知道了 Innodb 的页的数据结构和组成. 可以简介为下图所示 根据主键查询是在 Page Directory中进行二分搜索确定该数据所在的槽, 然后通过该槽偏移量确定页, 往后遍历查找数据 但是这是主键查询, 索引的原理也相同 ps: 基础直接跳过 索引 在之前我们了解的主键查询是通过主键进行排序. 那么我们索引是利用我们的索引字段充当主键 下面其实就是主键索引, 又称
2020-01-30
中间件 > MySql
#MySql
12

搜索

Hexo Fluid
总访问量 次 总访客数 人