自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Linux高性能编程学习-TCP/IP协议族

数据包的选路与转发。网络层对上层协议屏蔽了网络拓扑连接细节,确定两个主机之间的通讯IP协议,根据数据包的目的IP地址决定如何转发数据;若数据包不能直接转发到目的主机,则选择合适的下一跳ICMP协议:用于检测网络连接。

2023-10-22 21:52:54 1100

原创 《深度剖析K8s》学习笔记

数据和状态的综合约束和修改进程的动态表现,创造出边界(Cgroup:约束/namespace:进程视图)

2023-08-12 12:11:51 579

原创 趣谈网络协议-数据中心

一、DNS协议1. DNS 服务器2. DNS 解析流程3. 负载均衡4. 示例:DNS 访问数据中心中对象存储上的静态资源二、HttpDNS1. 传统 DNS 的问题2. HttpDNS 的工作模式3. HttpDNS 的缓存设计4. HttpDNS 的调度设计三、CDN四、数据中心五、VPN六、移动网络...

2022-02-09 23:44:57 2492

原创 趣谈网络协议-应用层(P2P协议)

一、概述二、FTP三、P2P1. 概述2. 种子(.torrent)文件3. 去中心化网络4. 哈希值5. DHT 网络中的朋友圈是怎么维护的6.DHT 网络是如何查找朋友的

2022-02-04 21:39:21 3908

原创 趣谈网络协议-应用层(流媒体协议)

一、概述1. 名词定义2. 视频和图片的压缩的特点3. 视频编码二、流媒体数据传输1. 流媒体传输流程2. 编码3. 推流4.拉流

2022-01-30 16:53:55 3410

原创 趣谈网络协议-应用层(HTTPS协议)

一、加密方式1. 概述一般加密思路:对称加密/非对称加密。对称加密使用的密钥和解密使用的密钥是相同的;非对称是不同的,分为公钥和私钥,公钥加密私钥才能解开,私钥加密公钥才能解开2. 对称加密加密流程:客户端和服务端约定一个密钥,发送请求时使用密钥加密;接收时使用密钥解密问题:客户端与服务端如何约定密钥。若在网上传输密钥,可能会被黑客截取; 线下传输密钥,由于客户端过多,不现实3. 非对称加密加密流程:服务端将非对称密钥放在网站中,不在网络上传输,但是对应的公钥,可以在互联

2022-01-26 13:06:15 3241

原创 趣谈网络协议-应用层篇(HTTP)

一、HTTP请求的准备二、HTTP请求的构建三、HTTP返回的构建四、HTTP2.0五、QUIC协议

2022-01-16 00:38:36 132

原创 趣谈计算机网络2 - 传输层

一、UDP协议1.TCP 和 UDP 有哪些区别建立连接:为了在客户端和服务端维护连接,建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。TCP与UDP的区别:TCP提供可靠交付,使用TCP传输数据,无差错、不丢失、不重复、并且按序到达。UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。 TCP是面向字节流的。而 UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。 TCP是可以有拥塞控制的,它意识到包丢弃了或者网络的.

2021-12-16 00:34:20 342

原创 趣谈计算机网络1 - 通讯协议综述

一、概述1. 商城购物的流程a. 网络协议三要素状态:200/404等 首部 内容例子:HTTP/1.1 200 OKDate: Tue, 27 Mar 2018 16:50:26 GMTContent-Type: text/html;charset=UTF-8Content-Language: zh-CN<!DOCTYPE html><html><head><base href="https://pages.kaola.co

2021-11-17 00:28:28 989

原创 框架篇-手写spring

一、ApplicationContext基本构造1. Spring中ApplicationContext用法Spring中包含ClassPathXmlApplicationContext与AnnotationConfigApplicationContext容器类,ClassPathXmlApplicationContext使用xml构造spring容器,AnnotationConfigApplicationContext使用Class构造容器,基本用法如下:import org.springf

2021-09-04 00:48:28 322 1

原创 网络篇-HTTP1.1协议(上)-概述

前言:参考 极客时间 《Web协议详解与抓包实战》1. HTTP/1协议为什么如此设计2. 协议的通用规则3. 连接与消息的路由4. 内容协商与传输5. cookie的设计与问题6. 缓存的控制

2021-08-22 22:15:43 661

原创 redis篇-源码篇

一、字符串原理1. 概述redis字符串特点:redis字符串在内存中是字符数组 redis字符串不是以NULL结尾的,因为要获取以NULL结尾的字符串的长度是使用strlen标准库函数来计算的,该算法的时间复杂度是O(n),需要对字节数组遍历,单线程的redis承受不起数据结构:redis的字符串为SDS,数据结构如下struct SDS<T>{ T capacity; // 数组容量 T len;

2021-08-14 18:01:45 1968

原创 redis篇-扩展篇

一、stream(kafka可替代,了解)二、info指令三、再谈分布式锁四、过期策略五、LRU六、懒惰删除七、优雅的使用redis八、保护redis九、redis安全通讯

2021-08-08 15:37:07 243

原创 redis篇-集群篇

一、主从同步二、sentinel三、codis四、cluster

2021-08-04 00:29:39 204

原创 redis篇-原理篇

前言:参照 《redis深度历险-核心原理与应用实践》一、线程IO模型概述:redis是一个单线程程序,它将所有的数据存储于内存中,所有运算都是内存级别的运算。正因为redis是单线程程序,对于时间复杂度为O(n)的指令需要小心使用。 redis使用多路复用来处理客户端连接1. 非阻塞IO阻塞IO:当我们调用socket读写套接字时,默认是阻塞的,例如read方法需要传递参数n,表示最多读取n个字节的数据后返回。若无数据,线程就会阻塞;write在内核为套接字分配的写缓冲区满了会阻

2021-07-31 21:02:45 979

原创 redis篇-基础与应用篇(下)

前言:参照 《redis深度历险-核心原理与应用实践》一、布隆过滤器1. 概述场景:判断用户是否已经存在定义:可以将布隆过滤器视为精度没那么高的set,当使用它的contain方法判断对象是否存在时,可能会有误判。特征:当布隆过滤器认为某个值不存在时,这个值一定不存在;任务存在时,可能不存在2. redis中的布隆过滤器...

2021-07-19 23:03:30 288

原创 redis篇-基础与应用篇(上)

前言参照 《redis深度历险-核心原理与应用实践》一、redis基础结构简介1. 五种基础数据结构a. string简介:字符串是redis最简单的数据结构,内部表示是一个字符数组。redis所有的数据结构都以唯一的key字符串作为名称,通过key获取value。特性:动态字符串,采用预分配冗余空间方式减少内存的频繁分配(当字符串长度小于1MB时,扩容是加倍现有空间;大于1MB时,每次多扩1MB) 字符串最大长度是512MB操作:get/set/mget/mset/sete

2021-07-14 00:23:18 583

原创 操作系统-结语

操作系统篇参照课程https://m.bilibili.com/video/BV1uW411f72n,旨在重学操作系统基础概念,侵删。死锁篇,文件篇与实验篇一段时间后再更新

2021-07-13 00:44:28 115

原创 操作系统-进程篇5(死锁)

一、死锁问题定义:进程A持有一种资源等待进程B所占有的资源,同时进程B等待进程A持有的资源产生原因:进程并发执行二、系统模型1. 资源的定义2. 资源的特征可重复使用:进程获得资源,后来释放,由其他进程重用处理器,I/O通道,主/副存储器,设备和数据结构(文件、数据库和信号量)可以视为资源如果每一个进程拥有一个资源,并请求其他资源,此时可能产生死锁三、死锁特征四、死锁处理方法1. 死锁预防2. 死锁避免3. 死锁检测4...

2021-07-11 16:56:27 179

原创 操作系统 - 进程篇4(进程同步-信号量与管程todo)

一、背景确保同步,需要高层次的编程抽象(锁),从底层硬件支持编译二、信号量1. 信号量抽象数据类型一个整型,两个原子操作:P():sem减1,如果 sem<0,等待,否则继续 V():sem加1,如果sem<=0,唤醒一个等待的P2. 概述a. 特点特点:信号量是整数,P()能阻塞,V()不会阻塞信号量是被保护的变量:初始化完成后,唯一改变一个信号量的方法是通过P()和V() 操作必须是原子的信号量可以是公平的:如果V()被无限频繁调.

2021-07-10 15:46:44 167

原创 操作系统-进程篇3(进程互斥)

一、背景1. 线程分类独立的线程:不和其他资源共享资源或状态 确定性:输入状态决定结果 可重现:能够重视现起始条件,I/O 调度顺序不重要合作线程:在多个线程中共享状态 不确定性 不可重新(不做同步的情况下) 不确定性和不可重现意味着bug可能间歇性发生2. 线程/进程合作的优点共享资源 加速:I/O操作和计算可以重叠;在多处理器环境下,程序可以分成多个部分执行 模块化:将大程序分解成小程序,使系统易于扩展3. 例子假设在程序中运行:new_pid=next

2021-07-08 00:37:36 147

原创 操作系统-进程篇2(处理器调度)

一、背景1. 上下文切换切换cpu的当前任务,从一个进程/线程切换到另一个 保存当前进程/线程在PCB/TCB中的执行上下文(CPU状态) 读取下一个进程/线程的上下文2. cpu调度从就绪队列中挑选一个进程/线程作为cpu将要运行的下一个进程/线程 调度程序:挑选进程/线程的内核函数3. 调度的时机什么时候调度:进程状态(就绪->运行;运行->等待;运行->退出)发生变化时,会发生一次调度 内核运行调度程序的条件:一个进程从运行状态切换到等待状态;一个进程被终

2021-07-04 19:47:21 229

原创 操作系统-进程篇1(进程/线程)

一、进程的描述1. 进程定义进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。(程序是一个静态的过程,进程是一个动态过程)2. 进程的组成一个进程包括:程序的代码、程序处理的数据、程序计数器中的值(指示下一条将要运行的程序指令)、通用寄存器的当前值(堆、栈)、一组系统资源(如打开的文件)总之,进程包含了正在运行的一个程序的所有状态信息。进程和程序的关系:程序是产生进程的基础 程序的每次运行构成不同的进程 进程是程序功能的体现 通过多次执行,一个程序可对

2021-07-04 01:05:44 253

原创 操作系统-内存篇4(虚拟内存页面置换算法)

一、功能与目标功能:缺页中断后,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换目标:尽可能减少页面的换出换入次数页面锁定:用于描述必须常驻内存的操作系统的关键部分或时间关键的应用程序。实现方法:在页表中添加锁定标志位,确保不被换出二、局部页面置换算法1. 最优页面置换算法基本思路:当一个中断产生,对保存于内存中的每一个逻辑页面,计算距离它下一次访问之前,还需要等待多长时间,从中选择等待时间最长的页置换适用场景:理想状态,因为需要预先知晓未来的页面访问情况。2.

2021-06-29 00:11:59 524 1

原创 操作系统-内存篇3(虚拟内存概念)

一、虚拟内存的起因获得更大、更快、更便宜,好用不易失的存储器二、覆盖技术目标:在较小的可用内存中运行较大的程序,常用于多道程序设计,与分区存储管理配合使用原理:将程序按照自身逻辑结构,划分为若干个功能独立的程序模块,那些不会同时执行的模块可共享同一块内存区域,按时间先后来运行 常驻内存模块:必要的代码和数据 可选模块:不常用功能存放于外存中,需要时才装入内存 不存在调用关系的模块不必同时装入内存中,从而可以相互覆盖,即这些模块共用一个分区例子:三、交换技术四、

2021-06-27 17:04:12 292

原创 操作系统-内存篇2(非连续内存分配)

一、非连续内存分配概述连续内存分配的缺点:分配给一个程序的物理内存是连续的 内存利用率低 有内、外碎片问题非连续分配的优点:可以更好的内存利用和管理 允许共享代码与数据 支持动态加载和动态链接非连续分配的缺点:如何建立虚拟地址和物理地址之间的转换(硬件方案:分段/分页)分段需要考虑的问题:分段后,地址空间如何寻址 如何实现分段寻址方案二、分段优点:更好的分离和共享应用程序运行时,使用的是连续的逻辑地址,通过分段后,可以映射为分散的地址空间,并分离起来,有利于共享

2021-06-26 20:56:19 492 1

原创 操作系统-内存篇1(地址空间及连续内存分配)

一、计算机体系结构及内存分层体系二、地址空间及地址生成三、连续内存分配

2021-06-25 23:59:59 1031

原创 操作系统-启动、中断、异常和系统调用

一、启动1.计算机体系结构概述计算机组成: cpu,内存,io操作系统存放位置: 硬盘BIOS:基本I/O处理系统,计算机启动时加载的第一个程序,在内存中,有一部分空间被BIOS占用,加电时会从特定地址执行,执行自检,将bootloader从硬盘中加载到内存中去(一般bootloader在磁盘第一个扇区)Bootloader: 将OS从硬盘中加载到内存(找到操作系统硬盘所在扇区,将操作系统读到内存中去)二、 中断、异常和系统调用1. 背景2. 中断、...

2021-06-25 22:44:28 244

原创 flink专栏-时间概念/watermark实践

前言:参考极客时间Flink核心技术与实战一、flink时间概念processing time: 基于机器本地的时间

2021-06-13 23:50:00 321 2

原创 flink专栏-DataStream Api实践

前言:参考极客时间Flink核心技术与实战一、概述

2021-06-01 22:34:44 189 2

原创 flink专栏-分布式流处理模型

前言:参考极客空间Flink核心技术与实战

2021-06-01 22:14:01 165

原创 ddd专栏-入门

前言本文参考实现领域驱动设计一、贫血症和失忆症1. 贫血领域对象:定义: 缺少内在行为的领域对象例子:问题:1. 业务意图不明确2. 方法实现本身增加了潜在复杂性3. 领域对象不是对象,是数据持有器...

2021-05-26 20:02:09 107

原创 netty专栏-bio/nio/aio

前言由于部门业务调整,准备跑路,以下是学习java相关内容本文参考哔哩哔哩 2021金三银四面试精选200集一、BIO

2021-03-15 23:43:59 129

原创 spring boot专栏-简介

前言由于业务调整,需要使用spring boot框架,以下是自学框架的笔记本文参考哔哩哔哩SpringBoot最新教程IDEA版通俗易懂一、什么是spring轻量级开源框架二、spring简化开发的策略基于pojo轻量级和最小侵入式开发 基于ioc,依赖注入 面向切面编程和惯例进行声明式编程 通过切面和模板减少样式代码三、什么是springboot类似于springmvc的开发框架,特点是约定大于配置从复杂的应用场景衍生出一种规范框架四、微服务架构独立每个功能

2021-02-21 17:57:55 649

原创 编译原理-词法分析

前言:参考网易公开课-西安交大编译原理一、词法分析与语法分析的关系1. 分离词法分析和语法分析的优点:使程序有条理 词法分析可以使用正则文法自动构造scanner 有利于提高语法分析效率 可以改善词法分析细节,甚至一个语法分析配几个scanner2. 把词法分析作为独立的一遍scanner当作一遍把scanner当做子程序二、词法分析器的设计前提: 把scanner作为独立子程序 词法分析器任务为输出单词符号 1. 预处理必要性:编辑性字符

2021-01-02 22:21:51 2331

原创 k8s专栏-持久化存储(三) 编写自己的存储插件

前言:参考k8s教程由浅入深(哔哩哔哩课程) 深入剖析Kubernetes(极客时间)一、简述存储插件开发方式:FlexVolume 和 CSI二、FlexVolume开发实例1.yaml定义

2020-12-05 21:51:18 191

原创 k8s专栏-持久化存储(二) Local Persistent Volume

前言:参考k8s教程由浅入深(哔哩哔哩课程) 深入剖析Kubernetes(极客时间)一、Local Persistent Volume意义:直接使用本地磁盘目录进行存储,增加读写性能Local Persistent Volume设计难点:1)如何将本地磁盘抽象成PV问题:不应该把一个宿主机上的目录当作 PV 使用,因为缺乏io隔离,并且有可能被应用写满,造成宿主机宕机 解决:Local Persistent Volume 对应的存储介质须是额外挂载在宿主机的磁盘或者块设备2).

2020-12-05 21:24:12 1045

原创 k8s专栏-持久化存储(一)

前言:参考k8s教程由浅入深(哔哩哔哩课程) 深入剖析Kubernetes(极客时间)一、nfs网络存储部署步骤:1.在一台服务器上安装nfsyaml install -y nfs-utils设置挂载目录vi /etc/export[路径](例如:/data/nfs) *[代表所有内容](rw,no_root_squash)2.在k8s集群的node结点上也安装上k8s3.启动nfssystemctl start nfs4.在k8s上部署持久化网络存储.

2020-12-05 13:03:22 577

原创 k8s专栏-Controller

前言:参考k8s教程由浅入深一、Controller简介在集群上管理和运行容器对象,又称工作负载二、和pod的关系关系:Pod是通过Controller来实现应用的运维(伸缩、滚动升级)实现原理:Pod和Controller之间通过label、selector标签建立关系(图来自k8s教程由浅入深)三、deployment1.应用场景:部署无状态应用 管理Pod和ReplicaSet 部署。滚动升级等功能 应用场景:web/微服务2.使用deploym

2020-11-15 22:05:00 219

原创 k8s专栏-pod(二)

前言:参考k8s教程由浅入深八、pod调度策略-创建pod流程用户流程:通过apiserver发起创建任务--->写入etcd中scheduler:使用apiserver,watch etcd,有新数据则使用调度算法,将pod调度到某一个结点上node结点:使用kubelet访问apiserver,读取etcd,拿到分配给当前结点的pod,再使用docker创建容器,并将结点创建docker的状态返回给apiserver,最终写入etcd九、影响调度的属性1.pod的资

2020-11-15 20:24:02 106

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除