首页
学习
活动
专区
工具
TVP
发布

软件设计

专栏成员
39
文章
35920
阅读量
15
订阅数
Linux源码分析:Unix Socket
网络协议有很多协议族,常见的是AF_Inet、AF_Unix,前者是IPv4,后者用于本地通信。
冰寒火
2023-04-11
7.8K0
RocketMQ源码分析之刷盘机制
内存映射是在内核中维护用户空间虚拟地址与文件偏移的映射关系,可以让用户态向操作数组一样读写文件,当对应页数据未读入内存时就会触发缺页中断,再由CPU响应中断根据映射关系读取文件中指定位置的数据并添加用户页表项。
冰寒火
2023-04-02
7700
JVM:内存管理
在自动内存管理机制下,不再需要手动回收每个对象,不容易出现内存泄漏和内存溢出问题,但正因为将控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,需要深入了解Java虚拟机的底层原理才能更快的排查问题。
冰寒火
2023-03-11
6090
epoll
io多路复用有很多种实现,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器端的必备技术。相比较select、poll而言,在查询、复制、监听数量上,epoll都有极大优势。
冰寒火
2023-03-07
7840
JDBC和连接池原理
JDBC是Java提供的一组操作数据库的API,可以屏蔽各种各样的数据库差异,向上提供统一的服务接口,数据库驱动程序会实现这些接口。
冰寒火
2023-03-04
1.1K0
Java高并发:线程池源码解析
线程池(Thread Pool)是一种基于池化思想管理线程的工具,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。
冰寒火
2023-03-03
4010
事务、锁、死锁
并发执行会打破事务的隔离性,根据破坏的程度分成可重复读、读已提交、读未提交等隔离级别,每种级别都决定了多线程并发时数据可见性不同,是并发和隔离性之间的权衡,也因此产生了幻读、不可重复读、脏读等问题。
冰寒火
2023-03-01
4540
Linux网络连接原理
内核使用task_struct来表示单个进程的描述符,维护进程的所有信息,其中包括files指针来指向结构体files_struct,files_struct中维护了文件描述符。
冰寒火
2023-03-01
1.8K0
Java高并发:Java内存模型
因为缓存脏数据写回主内存一般采用的是写回法,而非直写法,所以缓存和主存之间会有数据一致性问题。
冰寒火
2023-03-01
8040
Java高并发:synchronize底层原理
每个Java对象都隐含一把锁,Java内置锁的很多重要信息都放在对象头部,对象头有三个字段:
冰寒火
2023-02-23
5460
Java基础类源码分析:Object
java.lang.Object是所有类的父类,默认继承,而且java.lang包下的所有类都由编译器自动导入,不需要显示import,因为用的多,提前加载可以提高运行时速度。
冰寒火
2023-02-21
7180
Java多线程:条件变量
条件变量将因不同条件而无法推进的线程分别阻塞在不同的条件队列上,可以精细控制线程同步,降低惊群效应。
冰寒火
2023-02-18
7710
Java多线程:ReentrantLock源码分析
juc中的并发容器都是基于volatile变量和CAS指令实现,ReentrantLock也不例外,其类图如下所示:
冰寒火
2023-02-17
4410
6.S081/6.828: 10 Lab mmap
本实验实现mmap和munmap系统调用来更好的控制进程地址空间,可以向数组那样读写文件,写的数据放在buffer cache可以被其他进程所看到。
冰寒火
2022-12-02
3480
6.S081/6.828: 9 Lab file system
目前xv6包含12个直接索引和1个二级索引,共索引12KB+256KB。增加xv6文件的索引范围,使得能够索引256*256KB+256KB+11KB,牺牲一个直接索引,将其转变为三级索引。
冰寒火
2022-12-02
4070
6.S081/6.828: 6 Lab thread
多线程是通过多路复用实现的,给每个进程独占CPU的幻觉。多路复用就是从一个进程切换到另外一个进程,切换时机是以下两种:
冰寒火
2022-11-30
3660
6.S081/6.828: 8 Lab locks
多核机器上并行能力差的常见原因就是锁争用问题,提高并行能力需要修改数据结构和加锁策略。本实验是为了提高内存分配器和block buffer的并行能力,设计思想是分段加锁。
冰寒火
2022-11-24
4510
6.S081/6.828: xv6源码分析--中断和控制台
处理器上包含cpu、高速缓存、寄存器、boot rom、中断控制器等。PLIC(Platform-Level Interrupt Control中断控制器),用来管理设备中断,并将中断路由给指定的cpu核进行响应,CLINT是定时器中断。处理中断的具体流程如下:
冰寒火
2022-11-21
8020
6.S081/6.828: 7 Lab networking
任务:实现e1000_transmit和e1000_recv,使得网络驱动能够发送和接收数据包。
冰寒火
2022-11-20
2650
6.S081/6.828: xv6源码分析--networking
目的主机收到报文后会自底而上,层层处理,每一层header包含下一步处理的协议类型。
冰寒火
2022-11-20
7950
点击加载更多
社区活动
AI代码助手快速上手训练营
鹅厂大牛带你玩转AI智能结对编程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档