TCP数据粘包 引入网络层通常四层协议,数据以一个个包在网络中传输,从上到下每经过一层,数据包头部就多出一些信息; TCP头:序列号和确认号、源端口和目的端口 IP头:源IP和目的IP、长度、偏移 mac头:源mac和目的mac 拆分数据链路层提供给IP层每次传输的包大小有限制MTU,如果超过这个大小TCP 中把消息分成 MSS MTU: Maximum Transmit Unit,最大传输单元。 由网络 2023-10-09 计算机基础 > 计算机网络 #文章精读 #计算机网络 #TCP
一文搞懂 Redis 架构演化之路(腾讯技术工程) 引言redis是目前最流行的缓存中间件,但他是如何保证实现稳定并且高性能的提供服务的? 如果只是单机版redis,有什么问题? 宕机后,如何快速恢复? 主从集群以及sentinel可以带来怎样的优势? 分片集群作用? 这篇文章从0到1,一步步构建出当前的redis 单机redis 如上图所示,项目的数据最简单的就是直接从mysql读取,现在多了一个redis缓存,并使用cache aside 2023-09-10 系统架构 > 高性能 #文章精读 #redis #高性能
一个新进程的诞生[linux源码趣读] 引入第一部分和第二部分,为我们这个第三部分做了充足的铺垫工作。 第一部分 进入内核前的苦力活 第二部分 大战前期的初始化工作 到了第三部分,简单说就是从内核态切换到用户态,然后通过 fork 创建出一个新的进程,再之后老进程进入死循环。 123456789101112void main(void) { // 第二部分的内容,各种初始化工作 ... // 第三部分的内容, 2023-07-07 计算机基础 > 操作系统 > linux源码趣读 #操作系统 #linux
大战前的初始化工作[linux源码趣读] 引入在上一回中,跳转到操作系统的骨架代码main.c中的main方法了, 数一数看,总共也就 20 几行代码。但这的确是操作系统启动流程的全部秘密了 1234567891011121314151617181920212223242526272829303132333435363738void main(void) { // 一些参数的取值和计算。包括根设备 ROOT_DEV,之前在 2023-07-01 计算机基础 > 操作系统 > linux源码趣读 #操作系统 #linux
DDoS技术鉴赏 DDos:Distributed Denial of Service 阳谋,大家都知道怎么发生的,但难以防治 发起攻击的为僵尸网络 木马感染 直接购买 1999年8月17日明尼苏达大学服务器被200多台服务器攻击,攻击设备是被感染了 攻击方式在网络协议的每一层,都可能遭受到攻击 ICMP Flood:攻击者发送大量的 ICMP(互联网控制消息协议)数据包到目标服务器,消耗其带宽和处理能 2023-07-01 计算机基础 > 网络 #计算机网络
进入内核前的苦力活[linux源码趣读] 总体 加载代码 pc指针初始指向0xFFFF0(ROM) 代表BIOS的地址 加载硬盘第一扇区代码(bootsetct)到0x7c00 复制到0x90000 跳转到go代码,设置好cs ds ss sp 把全部os代码搬入内存(setup.s 2~5; head.s 240扇区),至此bootsect.s使命完成 setup.s 使用int 指令初始化光标、内存、显卡、磁盘等信息放到boot 2023-06-23 计算机基础 > 操作系统 > linux源码趣读 #操作系统 #linux
simple-db simple-dbcode:Goinggoinggoing/simple-db-hw-2021 (github.com) 基于java语言,实现一个简易事务支持的关系型数据库 难度:lab4 = lab5 > lab6 >>>>>> lab3 > lab2 > lab1 lab1 实现基本的数据结构tuple, page 2023-06-20 项目 #java项目 #数据库
设计模式 SOLID 单一职责原则(Single Responsibility Principle,SRP):一个类只负责单一的功能,避免一个类承担过多的职责,从而提高代码的可维护性。 开放封闭原则(Open Closed Principle,OCP):软件实体应该对扩展开放,对修改关闭,也就是说,应该通过增加代码而不是修改代码来扩展软件功能,从而提高代码的可维护性和扩展性。 里氏替换原则(Liskov S 2023-06-15 系统架构 #开发 #设计模式
java并发 效率提升: 异步,防止阻塞IO 充分发挥多核CPU Java 线程线程创建 重写thread的run方法 创建runnable 抽象出来任务 FutureTask 带返回值 线程间通信 核心Thread是创建一个线程,其中run方法或者Runnable只是代表具体的任务。如果main线程中调用Runnable.run该任务就是main执行的 extends Thread 并重写run方法, 2023-06-12 java #java #并发
算法基础 0.特殊leetcode 10^7^ 1234567891011121314151617181920n<=12 n!n<=30 2^n dfs+剪枝100~300 n^3 floyd10^3 n^2 dp dij 二分 10^4 n*根号n 块状链表10^5~ 2023-05-26 算法 #算法