自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebSocket学习笔记

那如果数据没有24位怎么办,方法就是添加"="符号,比如数据"L"二进制"010011 00",其中转换成base64也就是取6个位,取第一次"010011"是19对应"T",后面还省两个0,组合成"00 0000"对应A,24位差了24-12=12位用符号“=”,最终结果就是"TA=="对比http的半双工(一请求一回应),websocket可以说是很方便了。只是个人理解提出的词,可能不适合理解,基本思想就是说 用于数据传输的连接,对比 协议连接,都是连接,但是描述的是不同会话(实在不知道怎么解释了)。

2023-08-14 23:20:05 70

原创 文件系统学习笔记

跟网络一样,磁盘也需要驱动,应用程序操作的open、write、read、seek、close函数,都是Posix API通过文件系统(VFS)提供的,文件系统再通过驱动操作磁盘硬件。位于第一个物理扇区,用来存储引导程序,512字节,前446字节是主引导程序,447-510字节是分区表,最后2字节保留。硬链接:多个文件同一份inode,通过引用计数的方式维护,删除一份硬链接影响其他相同inode号的文件。以下列出常见的文件系统。软链接:具有独立的inode,软链接的文件内,是链接的文件的内容。

2023-08-05 23:50:28 88 1

原创 OpenResty学习总结

openresty中11个处理阶段指令处理阶段范围解释httpnginx Master进程加载配置时执行;通常用于初始化全局配置/预加载Lua模块http每个Nginx Worker进程启动时调用的计时器,如果Master进程不允许则只会在init_by_lua之后调用;通常用于定时拉取配置/数据,或者后端服务的健康检查set_by_luarewrite设置nginx变量,可以实现复杂的赋值逻辑;此处是阻塞的,Lua代码要做到非常快;

2023-07-30 17:48:02 130 1

原创 Nginx反向代理配置

Nginx作为代理服务器的配置很简单,只需要配置好upstream做负载均衡,再将访问location的请求转到upstream即可实现。C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂。

2023-07-30 17:45:56 176 1

原创 初识MySQL和数据库

MySQL将生成的执行计划缓存,当有新的语句到来时,取出参数并交给已经准备好的执行计划。缓存不命中交给分析器,分析语句中的语法和词语,将分析结果交给优化器。唯一约束、非空约束、自增约束、主键约束(非空、唯一)、外键约束。连接器接收到网络请求,查询缓存,缓存命中直接返回。优化器生成执行计划,将最优的SQL语句交给执行器。唯一索引、普通索引、联合索引、主键索引、全文索引。主键索引是特殊的唯一索引,主键索引不能为空。不能存在非主键可以获取非主键的情况。表中的非主键字段必须由主键确定。目的是减少占用空间。

2023-07-19 01:18:50 27

原创 MySQL索引总结

索引起始就是一种有序的存储结构。使用索引查询数据,可以提升效率。

2023-07-19 01:16:58 34

原创 MySQL事务总结

事务是用户定义的一系列SQL操作的集合,这些操作要么都做,要么都不做,事务不会出现中间状态。

2023-07-19 01:16:28 33

原创 虚拟机网卡名称ensX改成ethX

在Ubuntu 18.04及更高版本中,网络接口名称从 "ethX" 命名改为新的 "ensX" 约定。可以通过禁用新的命名方案并启用旧的命名方案来实现。创建一个名为 /etc/default/grub.d/50-cloudimg-settings.cfg 的文件。然后,重新启动系统。

2023-06-25 23:55:40 395

原创 同步和异步,阻塞和非阻塞

同步是指任务按照一定的顺序依次执行,即一个任务必须等待另一个任务完成后才能开始执行,同步操作通常体现在函数调用。阻塞是指程序在执行某些操作时暂时停止响应其他事件或请求,直到该操作完成或超时。如posix的网络api send()和rece()函数,不论socket是阻塞还是非阻塞状态,函数都是一个同步调用,区别是该调用是否产生阻塞。而异步api,通过需要通过注册回调函数,一旦条件触发,回调函数立刻执行,但该函数并不在主线程(或者说是调用该异步api线程),这样永远都不会造成调用该API阻塞。

2023-06-24 22:49:13 33 1

原创 C++多线程死锁检测方法

基本思路:在加锁时,通过有向图来对锁进行记录,判断图结构是否形成了闭环,形成闭环则出现死锁。

2023-06-24 22:30:10 657 1

原创 C++定时器数据结构参考

一个组织大量延时任务的容器,并对外提供各种操作接口(增删改等)。struct TimerNode //一个定时器任务struct参考int expire;//什么时候触发//执行函数void * ctx;//执行函数的上下文。

2023-06-24 21:33:55 81 1

原创 Posix API与网络协议栈理解

一套标准API,统一不同linux分支。

2023-05-28 21:59:35 131 1

原创 后端开发中对网络组件的理解

io多路复用器可以同时检测多个io,只检测是否就绪。

2023-05-28 21:54:49 60 1

原创 原子操作与C++Atomic原子变量理解

一个不可被中断的操作,即一个操作在执行过程中不会被其他线程干扰或中断,保证了对共享变量在多线程环境下的一致性。作用:用来实现并发编程中的同步机制,避免出现竞态条件。:一个线程是运行在核心里面的,双核四核心能运行四个线程,线程运行在核心。线程运行的代码在内存,单处理器单核要保证原子操作,只需要在开始执行一套指令(一条C++语句可能被编译成多个指令实现)时,关闭中断,指令执行完再打开中断即可。

2023-05-28 21:47:04 332

空空如也

空空如也

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

TA关注的人

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