240 发简信
IP属地:广东
  • 注解实现原理

    一、注解类型 源码注解。作用:对源码进行注释,编译成class文件后去除,通常是为了规范源码的格式。常见的有:Override, Class注解。作用:在ClassLoade...

  • Linux中的版本号

    一、动态库的版本号 libxxx.so.x.y.z:动态库必须以lib开头,xxx为其库名,so表示其是动态库,x是主版本号,y是次版本号,z是发布版本。主版本之间不做兼容性...

  • 120
    GFS--Google File System论文翻译和理解

    一、系统设计目标 高可用的大文件分布式文件系统。 二、关键点 Architecture-架构:有哪些Server,每个Server的功能。 Master存储的MetaData...

  • HDFS Architecture 翻译和理解

    HDFS官方文档链接[https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDe...

  • 120
    计算机组成概述

    1. 计算机组成和计算机结构的概念区分 计算机结构:指的是能被程序员所看到的已经实现的计算机属性(或者称之为功能)。如乘法指令功能。计算机组成:指的是如何实现计算机结构中的所...

  • 120
    redis主从

    简介 主从服务器的功能区别。 主从服务器的连接建立。 主从服务器之间的数据同步流程。 连接建立时的全量数据同步。 主从状态同步后的增量同步更新。 主从服务器的功能 主服务器接...

  • 120
    redis RDB

    简介 RDB数据落地的2种方式。 3种触发RDB数据落地的方式。 RDB的主要流程。 object落地的序列化。 RDB数据落地的互斥。 2种落地方式方式 自身进程阻塞式的进...

  • 120
    redis字典实现

    一、原理 1.1 数组+链表的底层数据结构 字典是用hash实现的,通过数组+链表解决hash冲突。通过hash函数计算出key的index后,在对应的链表上进行数据的增删查...

  • 120
    redis消息处理--多线程IO

    简介 redis版本:6.0+ 一、关键点 1.事件驱动架构图,从下往上分别是aeFileEvent, connection, client。2.消息处理流程,主要有:a、主...

  • 120
    redis开启多线程IO

    redis版本 redis 6.0+ 关键点 配置修改。 有足够的IO并发压力。 一、配置修改 设置io-thread的值为想要的io线程数,设置io-threads-do-...

  • 120
    redis-server和client连接建立

    redis版本 redis6.0+ socket连接建立的要素 网络连接的建立离不开socket,socket在不同操作系统下有不同的接口,这里以epoll为例。 socke...

  • Linux系统调用

    简介 基于Linux0.11内核代码,主要参考资料为Linux0.11内核注释。 系统调用的一些基本概念。 系统调用的处理流程。 源码分析。 基本概念 如何触发,何时触发。调...

  • 120
    Linux中断处理

    简介 1.基于Linux0.11代码进行分析。2.中断类型分类以及具体的中断。3.中断向量的注册。4.中断处理流程。5.各类型中断的具体执行流程。 中断的类型及具体的种类 1...

  • 杂谈

    为什么要剖析Linux源码 热爱。就是想要知道自己心心念念的Linux到底是如何实现的。 职业发展需要。深耕后端,就不得不和Linux打交道,所有服务器都是运行在Linux上...

  • 120
    Go net包剖析

    目录 一、声明 二、epoll基础 三、net包到底层类图 四、连接的建立 五、异步的数据读写 六、调度有网络消息的G 七、带超时时间的读写 八、总结 声明 下面的分析均基于...

  • 120
    M的状态转换

    声明 下面的分析均基于Golang1.14版本。 M的状态 M只有Running和Stop这2个状态,还有一个spinning中间态,当从Running转为Stop时,会先s...

  • 120
    P的状态转换

    声明 下面的分析均基于Golang1.14版本。 状态图 主要流程 1.procresize创建,Go程序初始化时初始CPU数量个P。2.acquirep进入运行状态。当有新...

  • 调度相关的重要数据结构

    声明 下面的分析均基于Golang1.14版本。以下数据结构均做了裁剪,只留了部分调度密切相关的重要结构。 一、G的定义 裁剪了大部分字段,后面填坑把其它字段的作用及用途整理...

  • 120
    Goroutine的调度

    G状态转换图 声明 下面的分析均基于Golang1.14版本。 Gosched--主动让出 在用户代码中执行runtime.Gosched()时执行以下代码。 执行完Gosc...

  • 120
    plan9 汇编

    声明 golang使用的是plan9汇编,不少调度的底层代码都是通过plan9实现,因此了解plan9汇编对Go源码剖析有非常重要的意义,以下的内容均针对golang中使用的...