- 博客(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
93
原创 文件系统学习笔记
跟网络一样,磁盘也需要驱动,应用程序操作的open、write、read、seek、close函数,都是Posix API通过文件系统(VFS)提供的,文件系统再通过驱动操作磁盘硬件。位于第一个物理扇区,用来存储引导程序,512字节,前446字节是主引导程序,447-510字节是分区表,最后2字节保留。硬链接:多个文件同一份inode,通过引用计数的方式维护,删除一份硬链接影响其他相同inode号的文件。以下列出常见的文件系统。软链接:具有独立的inode,软链接的文件内,是链接的文件的内容。
2023-08-05 23:50:28
156
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
167
1
原创 Nginx反向代理配置
Nginx作为代理服务器的配置很简单,只需要配置好upstream做负载均衡,再将访问location的请求转到upstream即可实现。C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂。
2023-07-30 17:45:56
202
1
原创 初识MySQL和数据库
MySQL将生成的执行计划缓存,当有新的语句到来时,取出参数并交给已经准备好的执行计划。缓存不命中交给分析器,分析语句中的语法和词语,将分析结果交给优化器。唯一约束、非空约束、自增约束、主键约束(非空、唯一)、外键约束。连接器接收到网络请求,查询缓存,缓存命中直接返回。优化器生成执行计划,将最优的SQL语句交给执行器。唯一索引、普通索引、联合索引、主键索引、全文索引。主键索引是特殊的唯一索引,主键索引不能为空。不能存在非主键可以获取非主键的情况。表中的非主键字段必须由主键确定。目的是减少占用空间。
2023-07-19 01:18:50
33
原创 虚拟机网卡名称ensX改成ethX
在Ubuntu 18.04及更高版本中,网络接口名称从 "ethX" 命名改为新的 "ensX" 约定。可以通过禁用新的命名方案并启用旧的命名方案来实现。创建一个名为 /etc/default/grub.d/50-cloudimg-settings.cfg 的文件。然后,重新启动系统。
2023-06-25 23:55:40
419
原创 同步和异步,阻塞和非阻塞
同步是指任务按照一定的顺序依次执行,即一个任务必须等待另一个任务完成后才能开始执行,同步操作通常体现在函数调用。阻塞是指程序在执行某些操作时暂时停止响应其他事件或请求,直到该操作完成或超时。如posix的网络api send()和rece()函数,不论socket是阻塞还是非阻塞状态,函数都是一个同步调用,区别是该调用是否产生阻塞。而异步api,通过需要通过注册回调函数,一旦条件触发,回调函数立刻执行,但该函数并不在主线程(或者说是调用该异步api线程),这样永远都不会造成调用该API阻塞。
2023-06-24 22:49:13
37
1
原创 C++定时器数据结构参考
一个组织大量延时任务的容器,并对外提供各种操作接口(增删改等)。struct TimerNode //一个定时器任务struct参考int expire;//什么时候触发//执行函数void * ctx;//执行函数的上下文。
2023-06-24 21:33:55
119
1
原创 原子操作与C++Atomic原子变量理解
一个不可被中断的操作,即一个操作在执行过程中不会被其他线程干扰或中断,保证了对共享变量在多线程环境下的一致性。作用:用来实现并发编程中的同步机制,避免出现竞态条件。:一个线程是运行在核心里面的,双核四核心能运行四个线程,线程运行在核心。线程运行的代码在内存,单处理器单核要保证原子操作,只需要在开始执行一套指令(一条C++语句可能被编译成多个指令实现)时,关闭中断,指令执行完再打开中断即可。
2023-05-28 21:47:04
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人