- 博客(180)
- 资源 (10)
- 收藏
- 关注
转载 websocket原理及代码学习
HTTP协议是单向的,websocket协议可以保持连接,全双工的,属于服务器推送技术的一种。建立在 TCP 协议之上,长连接;握手阶段采用http协议;服务端实现要点:事件循环处理连接连接管理器维护活跃连接消息编解码器。
2025-04-04 14:33:27
21
转载 直播服务器推流了解
搭建直播服务器需要结合流媒体技术网络协议和服务器架构知识。确定直播类型:推流端:主播使用的设备(手机/PC/专业摄像机)传输协议:RTMP(低延迟)、HLS(兼容性高)、WebRTC(实时交互)播放端:Web浏览器、移动App、智能电视等。
2025-03-27 00:04:14
63
转载 MVC模式学习
MVC是模型(Model)、视图(View)和控制器(Controller)的缩写。MVC(Model-View-Controller)是一种经典的软件架构模式,它的核心优势在于关注点分离(Separation of Concerns),通过将应用程序分为三个主要组件来提升代码的可维护性、可扩展性和可测试性。
2025-03-26 23:04:54
24
转载 go项目目录结构学习
assets目录: 项目中使用的其他资源(图像,Logo等)。build目录: 打包和持续集成。将云(AMI),容器(Docker),操作系统(deb,rpm,pkg)软件包配置和脚本放在目录中。cmd目录: 项目主要的应用程序。不要在这个目录中放太多的代码。如果目录中的代码可以被其他项目导入并使用,那么应该把他们放在/pkg目录。通常来说,项目都应该拥有一个小的main函数,并在main函数中导入或者调用/internal和/pkg目录中的代码。config目录: 配置文件模板或默认配置。
2025-03-26 00:01:34
29
转载 rpc框架支持多协议
处理多协议,协议的作用就是用于分割二进制数据流(Split binary data stream)。每种协议约定的数据包格式是不一样的,而且每种协议开头都有一个协议编码,我们一般叫做 magic number魔数。协议解析过程就是把一连串的二进制数据变成一个 RPC 内部对象,但这个对象一般是跟协议相关的。当 RPC 收到了数据包后,我们可以先解析出 magic number 来。获取到 magic number 后,我们就很容易地找到对应协议的数据格式,然后用对应协议的数据格式去解析收到的二进制数据包。
2025-03-22 23:18:53
22
原创 线程和协程的区别了解
✅ 线程创建 & 销毁:创建:需要申请内核资源(线程栈、PCB 等),大约消耗 几 MB 内存销毁:回收内核资源,代价也不小上下文切换:涉及用户态/内核态切换,保存寄存器、栈、内存页表,切换一次可能 耗时 1000ns+✅ 协程创建 & 销毁:创建:只需要申请一小段栈空间(一般几 KB),几乎不涉及内核资源销毁:内存回收代价极小上下文切换:只保存少量寄存器和栈,切换一次只需 几十纳秒(几乎不感知)👉 总结一句话:线程是“重装战士”,适合 多核并行 + CPU 密集型任务协程是“敏捷刺客”,适合 高并发 I
2025-03-22 16:54:07
277
原创 tps、并发数、日活了解
并发数()指的是系统正在处理的请求、任务或连接的数量。⚡👉: 假设你有一个服务,每个请求需要 2 秒完成,系统最大支持 500 个请求同时在跑,那么你最高能撑到的并发数就是。是指每秒系统的请求数量,通常用来衡量系统的。⚡👉: 如果你的系统在 1 秒内处理了个请求,那你的 QPS 就是。
2025-03-22 14:09:16
375
转载 cas认证了解
CAS(Central Authentication Service,中央信任认证服务)是一种**单点登录(SSO)**协议,它的核心目标是让用户只需登录一次,就能访问多个相互独立的应用系统,提升用户体验,同时确保安全性。用户访问应用系统A用户尝试访问一个受保护的应用,比如。重定向到CAS服务器如果用户尚未登录,应用A会将用户重定向到CAS认证服务器,比如。当用户访问应用A,但没有登录时,应用A的服务器会返回一个HTTP 302(临时重定向)
2025-03-13 23:52:06
63
转载 pulsar了解
pulsar相较于kafka的优势是,它通过计算+存储分离实现的。是一个它支持,并具备的特性。Pulsar 采用架构,与 Kafka 相比,它在方面有独特优势。
2025-03-10 23:46:23
30
转载 ptp了解
在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的。在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间。PTP(,精确时间协议)是一种用于高精度时间同步的网络协议,标准定义在IEEE 1588。它允许多个设备在局域网(LAN)或更广泛的网络中精确同步时间,常用于金融交易、工业自动化、电信和科学测量等对时间精度要求极高的场景。
2025-03-10 22:22:41
28
转载 scp命令传输文件
Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp [选项] [源文件] [目标路径]# 本地复制文件到远端远程复制到本地,调换参数顺序即可。-r:递归复制整个目录。-P:指定远程主机的 SSH 端口号(默认是 22)【大写】。-p:保留文件的修改时间、访问时间和权限【小写】。-v:显示详细的调试信息,有助于排查问题。-C:启用压缩,可以加快传输速度。
2025-03-07 23:42:23
132
转载 ziplist结构学习
Ziplist(压缩列表)是Redis早期用于节省内存的一种紧凑型数据结构,用于存储小量数据(如短字符串或小整数)。它主要用于Hash(哈希)、List(列表)、Zset(有序集合)在 Redis 7.0 之后,ziplist 被 listpack 取代!一个 ziplist 由多个 entry(数据项)+ 结尾标识字段说明zlbytes(4 字节):整个 ziplist 占用的字节数。zltail(4 字节):最后一个 entry 的偏移量,加速从尾部插入/删除。zllen(2 字节)
2025-03-07 23:17:29
26
转载 kafka的rebalance了解
转自:chatgptKafka 的 Rebalance(重平衡) 机制是消费者组(Consumer Group)中的一种动态分区分配过程,目的是 在消费者发生变化时重新分配分区,确保消费者组能够稳定、高效地消费数据。当消费者的数量或状态发生变化时,Kafka 需要重新分配分区给消费者,以保证:Kafka 触发 Rebalance 的常见场景包括:Kafka 的 Rebalance 主要由 Group Coordinator(组协调器) 和 Consumer Coordinator(消费者协调器) 共同完成:
2025-03-05 23:36:24
47
转载 优雅退出了解
操作系统可以给进程发信号,进程捕获终止信号,停止程序。SIGKILL: kill -9 $PID // 这个会强制退出,暴力退出捕捉进程终止信号,如syscall.SIGINT, syscall.SIGTERM, os.Kill捕捉到信号后,开启进程退出倒计时,不管如何,必须在n秒后退出进程停止接收新的请求等待进程内剩余请求的完成终止时间已到,进程正式退出。
2025-03-05 22:49:17
22
原创 hook和钩子函数
钩子函数(Hook Function) 本质上是一种回调callback机制,它允许程序在特定事件发生时执行用户自定义代码。一种实现方式。✔ Hook 是一种更广义的概念,指拦截或修改函数行为,而钩子函数是 Hook 的一种具体实现方式。钩子函数 主要用于:回调机制。运行结果:
2025-03-02 23:29:17
348
原创 gmock和cppfreemock原理学习
gmock(Google Mock)是 Google Test 的一个扩展库,专门用于。它的核心原理是通过来模拟 C++ 中的虚函数,从而在测试中隔离依赖对象,使测试更加可控。gmock通过来替换待模拟类的方法,使测试代码可以控制这些方法的行为。实际上是一个。
2025-03-02 23:24:45
907
转载 apollo配置中心如何实现拉取和推送的
客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。长连接实际上我们是通过Http Long Polling实现的,具体而言:客户端发起一个Http请求到服务端。(死循环里拉取)服务端会保持住这个连接60秒如果在60秒内有客户端关心的配置变化,被保持住的客户端请求会立即返回,并告知客户端有配置变化的namespace信息,客户端会据此拉取对应namespace的最新配置如果在60秒内没有客户端关心的配置变化,那么会返回Http状态码304给客户端。
2025-03-02 10:58:27
80
转载 长轮询了解
长轮询(Long Polling)和长连接(Long Connection)是两种不同的概念,但在某些场景下可能会一起使用。长轮询是一种应用层的技术,用于在HTTP 协议上实现服务器主动推送消息的效果。长连接是一种 TCP 连接管理策略,用于保持底层TCP 连接的长时间存活,减少连接建立的开销。尽管它们可以配合使用,但长轮询不一定需要长连接,长连接也不一定用于长轮询。短轮询在传统的 HTTP 短轮询中,客户端会定期向服务器发送请求,即使服务器没有新数据,客户端仍然需要频繁请求。问题客户端请求过多。
2025-03-01 15:21:07
27
转载 短连接和长连接了解
长连接:长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包(心跳包)。短连接:短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。HTTP/1.1 默认支持,避免每次请求都重新建立 TCP 连接。服务器可以通过指定最大保持时间。
2025-03-01 14:57:54
28
转载 远程进程调用种类
本地过程调用(Local Procedure Call,LPC),是指同一台机器上运行的不同进程之间的互相通信,即在多进程操作系统中,运行的不同进程之间可以通过 LPC 进行函数调用。远程过程调用(Remote Procedure Call,RPC),是指不同机器上运行的进程之间的相互通信,某一机器上运行的进程在不知道底层通信细节的情况下,就像访问本地服务一样,去调用远程机器上的服务。另外还有: 通过http协议的web API方式调用,Java的RMI。rpc的核心: 通讯,序列化。
2025-02-27 22:37:43
17
原创 Memcached和redis对比了解
用于加速动态 Web 应用程序,减少数据库负载。,Memcached 更轻量级,性能更高。,Redis 是更好的选择。Memcached 是一个。
2025-02-20 22:41:38
497
转载 CRTP奇异递归模板模式学习
奇异递归模板模式(Curiously Recurring Template Pattern,CRTP),把派生类作为基类的模板参数。静态多态(static polymorphism)添加方法同时精简代码public:void Run()// 将派生类转换为基类,由用户保证使用的正确。public:void Run()public:void Run()void Action(Animal<T> &animal) // 参数实际是基类int main()Dog dog;
2025-02-18 22:54:26
45
转载 orm对象关系映射学习
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。
2025-02-17 00:06:29
43
转载 etcd代码架构
转自:etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程_etcd工作笔记电子版-CSDN博客代码架构:
2025-02-15 14:54:00
31
原创 内网ip网段记录
常见的内网IP段有:A类: 10.0.0.0/8 大型企业内部网络(如 AWS、阿里云)B类:172.16.0.0/12 中型企业、学校C类:192.168.0.0/16 家庭网络、公司小型局域网📌 示例家庭 WiFi:192.168.1.1(路由器网关)企业内部网:10.1.1.1云服务器内网:172.16.0.1。
2025-02-11 22:44:16
895
原创 分布式锁的时间检查
在分布式锁的使用过程中,如果锁的过期时间比业务处理时间短,可能会导致锁意外释放,而业务逻辑仍在执行。这种情况会带来 并发安全问题。
2025-02-08 15:59:00
160
原创 http cookie的作用学习
HTTP是,它会被客户端存储,并在后续请求时自动携带,以便服务器、保持会话状态或存储用户偏好等信息。服务器在 HTTP 响应中返回Set-Cookie。
2025-02-05 17:01:32
1067
原创 python的http.client模块访问网址
如果开启了全局vpn之后,所有的网络流量(包括浏览器访问的网址)都会通过 VPN 服务器转发。两者流程相似,都会走到TCP/IP层。python的requests.get可以在访问时指定代理ip:端口。,这些头部字段提供了关于响应的各种元信息,如。,说明 Python 请求也走了 VPN。通过python的http脚本访问网址,返回的是服务器返回的。
2025-02-05 15:16:41
520
转载 message queue的推拉模式学习
broker将消息推向Consumer,也就是Consumer是被动的去接收这个消息,broker来将消息主动的去推给Consumer;RocketMQ和kafka都是使用的拉模式。Consumer是主动从broker拉取消息。拉取模式分为普通轮询和长轮询两种方式。
2025-02-04 13:53:50
57
转载 go 函数和方法学习
go中方法和函数不一样,Golang 方法总是绑定对象实例,并隐式将实例作为第一实参 (receiver)。接受者可以是命名类型或者结构体类型的一个值或者是一个指针。
2025-02-02 23:01:41
28
原创 ifconfig/hostname/hosts文件等学习
ifconfig(interface configuration)是一个用于的命令,常见于Linux和Unix系统。它用于显示网络接口的状态、配置IP地址、启用/禁用接口等。ifconfig命令将列出所有活动的网络接口,包括它们的IP地址、MAC地址、子网掩码等信息。可以通过该命令启停某个网络接口、设置ip、广播地址等等。
2025-02-02 14:41:07
945
转载 静态语言和动态语言了解
动态语言只有等到程序运行时才知道一切,变量(严格来说叫名字,就像人的名字一样)不需要指定类型,变量本身没有任何类型信息,类型信息在对象身上,对象是什么类型,必须等到程序运行时才知道,动态类型语言的优点在于方便阅读,不需要写很多类型相关的代码;缺点是不方便调试,命名不规范时会造成读不懂,不利于理解等。,它是一块内存区域,静态语言的优点是代码结构非常规范,便于调试,但有时显得啰嗦。C++和Java是静态语言。Duck Typing,它只关心事物的外部行为而非内部结构。
2025-02-01 19:00:54
39
转载 时间轮算法学习
时间轮(TimingWheel)是一种高效的定时器管理算法,用于处理大量的定时任务(如网络超时、定时调度等)。它通过将时间划分为多个槽(slot),并以循环的方式管理定时器,显著提高了性能和可扩展性。时间轮的核心思想是,每个分片对应一个时间槽。每个时间槽存储需要在特定时间触发的任务列表。通过一个指针(类似时钟秒针),时间轮以固定的间隔移动,从而触发任务。
2025-01-18 18:05:00
41
jboss-as-7.1.1.Final
2018-09-25
jlu软件学院软构件与中间件JavaEE课设
2018-09-21
2018年美赛题目(MCM_ICM_Problems_ABCDEF)
2018-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人