自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(229)
  • 资源 (1)
  • 收藏
  • 关注

原创 kubernetes 调度器

Predicates and Priorities schedulingScheduler ExtenderMultiple SchedulersScheduling Framework流程Framework的调度流程是分为两个阶段: scheduling cycle和binding cyclescheduling cycle是同步执行的,同一个时间只有一个scheduling cycle,是线程安全的binding cycle是异步执行的,同一个时间中可能会有多个binding c

2021-12-07 17:01:48 279

原创 数据库基本知识

视图视图是虚表,是从其他实表(有存放数据的表)或其他视图经过重新查询整理出来的表视图不涉及数据存储,这些数据仍存放在原来的基本表中,所以不必担心视图会占用磁盘空间基本表中的数据发生变化,从视图中查询出的数据也就随之改变操作视图的很多命令都与普通表一样,这会导致在业务代码中无法通过sql区分表和视图视图可以只给使用方暴露原始表中的部分数据,更好地限制了敏感数据的访问权限,提高了数据的保密性对于复杂SQL查询,视图隐藏了底层的表结构,隐藏了查询的复杂性,便于终端用户的使用用户对视图,不可以

2021-10-24 16:35:48 333

原创 端口基本知识

端口可以区分同一主机上的不同服务,做到多个服务复用同一个IP地址端口是运输层关注的东西,出现在TCP/UDP的首部UDP和TCP可以同时使用同一端口而互不干扰端口在首部中占据8bit,所以端口的取值范围为1 ~ 65535小于 1024 的端口号通常和 Linux 系统内置服务关联一般需要 root 才能开启1024 ~ 49151 的端口,被认为是 registered,通常特定的服务可以向 IANA来申请使用49152 ~ 65535 之间的端口不能被注册使用,并且推荐作.

2021-10-01 20:23:00 703

原创 node.js 版本与包管理

安装# 更新安装源,以安装新版本:https://github.com/nodesource/distributionssudo sucurl -fsSL https://deb.nodesource.com/setup_16.x | bash -apt-get install -y nodejs# 安装node,此时npm也一并安装完成了apt install nodejs# 验证安装成功node -vnpm -v# 升级npm到最新版本sudo npm install npm -

2021-09-21 20:54:28 280

原创 Linux 系统目录

bin 存放二进制可执行文件例如ls,cat,mkdir等内置系统命令sbin 存放只有root才能访问的二进制可执行文件boot 存放用于系统引导时使用的各种文件dev 用于存放设备文件/dev/null 表示空设备它丢弃一切写入其中的数据(但报告写入操作成功)读取它则会立即得到一个EOFstdout,stdin也在/dev目录里面etc 存放系统配置文件home 存放所有用户文件的根目录root 存放超级用户文件的根目录只有root权限才能访问lib .

2021-09-21 15:01:45 135

原创 ICMP协议

.

2021-08-31 17:16:14 797

原创 SSH协议

第一阶段:协议版本协商如果能一起工作,进入下一阶段,如不能,服务器断开 TCP 连接,会话结束明文传输第二阶段:算法协商公钥算法列表、加密算法列表、消息验证码算法列表、压缩算法列表等通过DH秘钥交换算法生成并传递会话秘钥,以后的通信数据都通过该秘钥使用对称加密算法加密(例如AES算法)DH算法虽然也是非对称算法,但是专门用来交换秘钥,不用于加密双方利用自己的私钥,对方公钥和原始共享素数来计算共享密钥。虽然这个过程各自独立,都使用自己私钥和对方公钥,所以能生成相同共享密钥使用D..

2021-06-01 18:19:01 439 1

原创 redis 高级特性

编码方式持久化集群

2021-03-19 17:20:41 210

原创 golang os模块

fileprocess

2021-03-12 18:47:00 336

原创 grpc-gateway 基本使用

grpc-gateway读取gRPC服务定义,并生成一个反向代理服务器,将 RESTful JSON API转换为RPC API假定希望用Rpc作为内部API的通讯,同时也想对外提供Restful Api,又不想写两套,于是可以使用Grpc GatewaygRPC 的协议是基于 HTTP/2 的,因此应用程序能够在单个 TCP 端口上提供 HTTP 和 RPC 接口服务(两种不同的流量)如果需要同时支持HTTP流量,必须使用TLS加密,即必须采取https的形式因为 net/http2 仅.

2021-02-03 14:08:33 1583

原创 protobuf 基本使用

安装protoc# linuxapt install -y protobuf-compiler# macbrew install protobuf# 源码安装wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.zipunzip protobuf-all-3.5.1.zipcd protobuf-3.5.1/./configuremakemake install# 检

2021-02-01 15:07:35 350

原创 CDN基本知识

静态加速动态加速过程用户发起请求,使用DNS/HTTPDNS解析域名CNAME向多个IP同时测速,使用延迟最低的CDN的IPCDN受到请求,转发模块会计算访问源站的最佳路径,并携带整个路径的路由信息访问下一跳IP计算不出则直接回源其他节点接收到请求后,如果发现含有路由信息,则根据路由信息转发否则由本地转发模块计算路由在最后一条的节点上,会更改原始包中的IP地址(源IP更改成最后一跳IP,目标IP更改成源站IP),并把包发给源站好处边缘CDN回源时,可以通过多种

2020-12-08 18:16:33 1185

原创 Linux 环境变量

常用环境变量env 命令可以查看所有全局环境变量set命令还可查看局部环境变量# 当前用户主目录$HOME# 当前目录$PWD# 环境变量(查找输入的内置命令的路径集合)$PATH# 当前用户名$USER# 当前使用的shell$SHELL# 当前进程的PID$$shell中设置环境变量(临时生效)添加环境变量是export,删除环境变量是unset`export 设置的环境变量可用于其创建的所有子shell通过export设置的环境变量在shell退出后失

2020-11-05 18:00:41 239

原创 定时任务(cron,at)

cron列出当前用户已有定时任务:crontab -l添加新任务 crontab -e,然后编辑文件cron执行定期任务:minute hour dayofmonth month dayofweek <command>*代表所有/ 代表每隔n长时间- 代表一段时间范围, 代表独立的时间例子每周一下午4:15运行:15 16 * * 1 <command>每两个小时运行一次:0 */2 * * * <command>第一位必须是0,

2020-10-29 19:46:18 230

原创 grpc 基本使用

流模式包括client_to_server_streaming、server_to_client_streaming、bidirectional_streaming三种类型就是说同时支持单边流和双向流对于 streaming 模式,可以充分利用 HTTP/2.0 协议的多路复用功能,实现在一条 HTTP 链路上并行双向传输数据有效的解决了 HTTP/1.X 的数据单向传输问题,在大幅减少 HTTP 连接的情况下,充分利用单条链路的性能,可以媲美传统的 RPC 私有长连接协议stream调

2020-10-17 13:49:57 394

原创 IM架构

应用范围架构接入服务的主要是为客户端提供消息收发的出入口,而业务处理服务主要是处理各种聊天消息的业务逻辑在很多基于私有通信协议的 IM 系统实现中,接入服务还提供协议的编解码工作编解码实际主要是为了节省网络流量,系统会针对传输的内容进行紧凑的编码(比如 Protobuf)为什么接入服务和业务处理服务要独立拆分呢?接入服务作为消息收发的出入口,必须是一个高可用的服务而业务处理服务由于随着产品需求迭代,变更非常频繁如果消息收发接入和业务逻辑处理都在一起,势必会让接入模块

2020-08-20 10:40:10 992

原创 负载均衡基本知识

负载均衡有两方面的含义首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高负载均衡策略权重轮询算法根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重响应速度均衡算法对内部各服务器发出一个探测请求(例如Ping),然后根.

2020-07-11 19:47:52 789

原创 golang 内存管理

对象池在每次开始执行垃圾回收时,都会清除所有已创建的临时对象池中的值内存暴涨

2020-06-10 08:15:19 530

原创 golang sync模块

锁重复加锁会引发死锁,重复解锁会引发panicsync.Mutex作为参数时的时候需要传指针,不然就是拷贝,会引起加锁失败条件变量条件变量并不是被用来保护临界区和共享资源的,它是用于控制想要访问共享资源线程的顺序当共享资源的状态发生变化时,它可以被用来通知被互斥锁阻塞的线程条件变量是基于互斥锁或读写锁的,必须有他们的支持才能够起作用原子操作执行速度要比其他的同步工具快得多,通常会高出好几个数量级但由于原子操作函数只支持非常有限的数据类型,所以在很多应用场景下,互斥锁往往是更

2020-06-10 08:13:59 420

原创 golang channel和select

Channel从根本上来说,channel只是一个数据结构,可以被写入数据,也可以被读取数据所谓的发送数据到channel,或者从channel读取数据,说白了就是对一个数据结构的操作因为协程原则上不会出现多线程编程中经常遇到的资源竞争问题,所以这个channel的数据结构甚至在访问的时候都不用加锁因为Go语言支持多CPU核心并发执行多个goroutine,会造成资源竞争,所以在必要的位置还是需要加锁的通道可以传输 int, string, 结构体,甚至是函数通道传递是

2020-06-10 08:11:43 10446 1

原创 HDD和SSD的比较

HDD当应用程序发出硬盘 IO 请求后,这个请求就会进入硬盘的 IO 队列。如果前面有其他 IO,那么这个请求可能需要排队等待HDD对于随机访问和顺序访问速度差距很大主要因素是寻道时间使用 HDD 的应用程序通常会进行各种优化,以执行不需要寻址的就地更新,比如**只在文件的后面append*为什么使用HDD时编译性能比使用SSD差很多?因为编译的时候,会有很多的小文件读入内存用来编译,也会生成大量的tmp文件,还有最终的target文件等等这些都比较消耗IO使用

2020-04-26 17:15:05 2800

原创 常见网络攻击原理与防御

XSS跨站脚本攻击攻击者在服务器返回的普通页面中嵌入特殊的脚本代码,那么在普通用户浏览这个网页的时候,这个特殊的脚本代码就得到了执行,于是用户的 Cookie 通过请求的方式发送给了这个攻击者指定的地址,这样攻击者就劫持了用户的会话,利用 Cookie 中标识身份的字符串,就可以伪装成实际的用户在这个网页操作了恶意脚本的上传方式,往往是利用网站没有对用户的输入(例如提交的表单)进行过滤或转...

2020-04-21 19:32:43 644

原创 直播基本原理

直播通信过程主播客户端在分享自己的音视频媒体流之前,首先要向信令服务器发送“创建房间”的信令信令服务器收到该信令后,给主播客户端返回一个推流地址(CDN 网络源站地址)此时,主播客户端就可以通过音视频设备进行音视频数据的采集和编码,生成 RTMP 消息,最终将媒体流推送给 CDN 网络当观众端想看某个房间里的节目时,要向信令服务器发 “加入房间”消息信令服务端收到该消息后,会根据用户所...

2020-04-21 16:32:15 2685

原创 实时通信基本原理

在线教育、音视频会议这类直播属于实时互动直播,主要考虑传输的实时性,因此一般使用 UDP 作为底层传输协议而娱乐直播对实时性要求不高,更多关注的是画面的质量、音视频是否卡顿等问题,所以一般采用 TCP 作为传输协议我们称前者为实时互动直播,后者为传统直播编码帧I 帧:关键帧压缩率低,可以单独解码成一幅完整的图像。P 帧:参考帧压缩率较高,解码时依赖于前面已解码的...

2020-04-21 16:31:08 1761

原创 缓存基本原理

缓存的作用不仅在于更快地获取到数据,还可以避免源站被大量请求击穿(例如数据库)从缓存视角看URL到IP的映射过程先查询浏览器内部的“域名-IP”缓存,如果曾经使用该浏览器访问过这个域名,那么很有可能命中缓存接着会查询操作系统是否存在缓存,例如/etc/hosts文件可以自定义域名到IP的映射缓存最后会递归查询DNS服务器,每一次都可能命中缓存缓存应用模式cache-aside...

2020-04-21 16:28:03 1125

原创 哈希算法

一致性hash是尽可能减少在rehashing过程中进行数据迁移的算法扩缩容或者**节点失效(服务器崩溃)**都可能导致rehashing防止可能的停机或性能问题传统的hash算法的问题在于每次扩容和缩容是都会导致所有数据分布的重新计算例如分布式存储系统,文件通过hash算法决定分布的机器如果使用传统hash算法每次增加机器都要停下来等所有文件重新分布才能继续服务,而一台机...

2020-04-21 16:25:36 293

原创 性能分析与优化

常见性能数值200 毫秒延迟,是多数在线用户可以忍受的最大延迟IOIO 读写延迟:一般是用 4KB 大小的 IO 做基准来测试如果一个随机 8KB 或 16KB 数据的对硬盘的读写,测量出的延迟不到 1 毫秒,那就实在是“太快”了;可以肯定它是命中某种缓存了IO 带宽:一般是针对比较大的 IO 而言;IOPS:就是每秒钟可以读写多少个小的随机 IO缓存操作系统...

2020-04-01 16:01:35 461

原创 Chrome的调试与架构

调试功能请求用时分布超完整的Chrome浏览器客户端调试大全架构多线程多线程也就是单进程,浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript 运行环境、渲染引擎和页面等多线程的缺点不稳定早期浏览器需要借助于插件来实现诸如 Web 视频、Web 游戏等各种强大的功能,但是插件是最容易出问题的模块,并且还运行在浏览器进...

2020-03-30 09:01:16 191

原创 收发包流程

收包流程数据包到达网卡NIC非混杂模式的NIC校验Mac地址即目的Mac地址不是本机的数据包直接丢弃,不会处理混杂模式一般适用于存在虚拟机时,虚拟机daemon会把物理网卡设置为混杂模式抓包时也需要混杂模式校验数据帧的校验字段FCS,丢弃校验失败的错误帧NIC通过DMA方式将数据帧放入提前映射好的内存区域NIC等待超时或者接受区满了后出发硬件中断指令C...

2020-03-29 10:01:52 510

原创 区块链基本原理

区块链原理区块链有一个一个的区块,每个区块中包括着一组交易信息,然后,每一个区块都会有一个 ID(或是一个地址),这些区块通过记录前一个区块的 ID 来形成一条链每个块的 ID 都是通过其内容生成的利用了安全哈希算法(一般使用SHA-256算法)只要是内容有一丁点儿的变化,这个 ID 都会完全不一样类似于数字签名生成 ID 的内容中还包括上一个块的 ID把本区块内容...

2020-03-29 01:18:42 3988

原创 分布式ID

UUID缺点字符串占用的空间比较大索引的效率非常低生成的 ID 太过于随机,完全不是人读的没有递增,如果要按前后顺序排序的话,基本不可能Snowflake...

2020-03-28 17:17:42 196

原创 alfred使用指南

feature文件夹前往:<space>搜索文件:find查找包含指定内容的文件:in前往下一层文件夹: Command + ↓前往上一层文件夹:Command + ↑显示动作面板:→网页搜索在features/web search设置百度::https://www.baidu.com/s?wd={query}知乎:https://www.zhihu...

2020-03-26 23:13:20 558

原创 开源协议分类

下面所有条款都禁止因使用等造成影响责任承担、也就是说免责申明GPL要求修改后的源码也需要公开版权及协议也要于此协议一致修改后,需要在相应的文件做说明具有“传染性”,并且强制开源,只要引入的某个模块是GPL的,它会一直扩展到最上层知道整个项目都强制GPL开源商业软件不能使用GPL协议的代码,因为协议要求开源LGPLLGPL允许商业软件通过类库引用(link)方...

2020-03-24 21:14:20 261

原创 kubernetes 安全

虚拟化容器为了更安全地隔离容器,避免容器进程逃逸,权限升级等安全问题现有的实现有Kata Containers和gVisorKata Containers 使用传统的虚拟化技术,通过虚拟硬件模拟出了一台“小虚拟机”,然后在这个小虚拟机里安装了一个裁剪后的 Linux 内核来实现强隔离为一个Pod对应启动一个轻量化虚拟机,Pod中的容器,就是运行在这个轻量级虚拟机里的进程也可以...

2020-03-18 20:44:24 149

原创 kubernetes 周边生态

监控以 Prometheus 项目为核心的一套统一的方案Prometheus 项目工作的核心,是使用 Pull 的方式去搜集被监控对象的 Metrics 数据(监控指标数据),然后再把这些数据保存在一个 TSDB (时间序列数据库,比如 OpenTSDB、InfluxDB 等)当中,以便后续可以按照时间进行检索Pull模式特点被监控方提供一个server,并负责维护监控方控制...

2020-03-18 20:43:44 1553

原创 kubernetes 网络

服务发现(service和ingress)Kubernetes 采用的是基于扁平地址空间的网络模型集群中的每个 Pod 都有自己的 IP 地址,Pod 之间不需要配置 NAT 就能直接通信一旦Service被创建,K8S会为其分配一个集群内唯一的IP,叫做ClusterIP在Service的整个生命周期中,ClusterIP不会发生变更这样一来,就可以建立一个ClusterI...

2020-03-18 20:42:21 254

原创 kubernetes 储存

本地储存(emptyDir和 hostPath)emptyDir是host上的一个空目录生存周期与pod一致适合 Pod 中的容器需要临时共享存储空间的场景hostPath挂载host上指定目录生存周期与host一致持久化储存(PV, PVC和StorageClass)PVC 描述的,是 Pod 想要使用的持久化存储的属性,比如存储的大小、读写权限等PV 描述...

2020-03-18 20:40:41 186

原创 kubernetes API对象

无状态服务(Deployment和ReplicaSet)Deployment 假设应用是无状态的:一个应用的所有Pod是完全一样的,它们互相之间没有顺序,也无所谓运行在哪台宿主机上可以“杀掉”任意一个 PodDeployment状态信息含义DESIRED :用户期望的 Pod 副本个数CURRENT:当前处于 Running 状态的 Pod 的个数UP-TO-DATE:当前...

2020-03-18 20:39:58 305

原创 kubernetes Pod

设计理念Pod 是一个逻辑单位Kubernetes 真正处理的其实是一组共享了某些资源的的容器共享network,volume, IPC, UTS等namespace如果说容器是进程,那么pod就是进程组在一个真正的操作系统里,进程并不是独自运行的,而是以进程组的方式组织在一起例如负责日志处理的rsyslogd程序,它的主程序和它要用到的内核日志模块 imklog 等,同属...

2020-03-18 20:38:51 289

原创 子网通信过程

二层网络三层网络子网路由表

2020-03-18 17:13:13 2386

Python游戏编程快速上手

Python是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 本书通过编写一个个小巧、有趣的游戏来教授Python编程,并且采用直接展示了游戏的源代码,通过实例来解释编程的原理的方式。全书共21章,14个游戏程序和示例贯穿其中,介绍了Python基础知识、数据类型、函数、流程控制、程序调试、流程图设计、字符串操作、列表和字典、图形和动画、碰撞检测、声音和图像等方方面面的程序设计知识。本书可以帮助读者在轻松有趣的过程中,掌握Python游戏编程的基本技能。 本书适合不同年龄和层次的Python编程初学者阅读。

2017-10-17

空空如也

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

TA关注的人

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