自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记一次学习skynet中的C/Lua接口编程解析protobuf过程

最近在学习skynet过程中发现在网络收发数据的过程中数据都是裸奔,就想加入一种数据序列化方式,json、xml简单好用,但我就是不想用,于是就想到了protobuf,对于protobuf C/C++的使用个人感觉有点重,正好在学Lua,就想着能不能通过Lua来处理这些业务逻辑,C/C++只负责底层功能,最开始是想自己通过C实现一个动态库给Lua调用,但是后来估算了一下工作量,怕自己走火入魔果断放弃,于是就去github寻找灵感,于是找到了,OK有轮子了,不想再造了,直接用。

2025-01-12 18:01:09 679

原创 定时器实现之跳表(三)

书接上回上上回与,本文是使用跳表实现定时器,跳表有序的特性不必多说,感兴趣的可自行研究。

2024-12-08 21:02:36 316

原创 定时器实现之红黑树(二)

书接上回,今天采用红黑树来作为定时器的容器,组织定时器的定时节点。

2024-12-08 14:21:44 450

原创 定时器实现之最小堆(一)

定时器是一种用于在指定时间后执行特定任务或操作的机制。在计算机科学和编程中,定时器通常用于实现延时操作、周期性任务调度等功能。对于定时器的实现,核心分为两大块,分别是容器和触发方式,容器就是组织定时器中定时任务的数据结构,触发方式描述了我们以什么方式检测任务是否到期。今天的重点是定时器系列的开篇,能组织定时器的数据结构都要有一个基本的要求,就是能保证数据在数据结构内是有序的,通常的数据结构又最小堆、红黑树、时间轮等,本文将使用最小堆来组织定时器。

2024-12-01 22:28:49 704

原创 无锁消息队列实现

在实现无锁队列前,要知道无锁队列并不是真正意义上的无锁,无锁队列(Lock-Free Queue在概念上是指在实现队列数据结构时,不依赖于传统的互斥锁(如 mutex)来保证线程安全,尽管称为“无锁”,但这并不意味着完全没有同步机制。相反,它使用了底层硬件提供的原子指令来实现更细粒度的同步,从而提高并发性能。无锁队列的设计通常比基于锁的队列更加复杂,但在高并发场景下可以提供更好的性能和可伸缩性。

2024-11-30 22:35:21 951

原创 异步数据库连接池实现(二)

书接上回,本文实现异步数据库连接池,它适用于高并发场景。

2024-11-30 01:06:27 795

原创 同步数据库连接池实现(一)

本文是池式结构的最后一舞,数据连接池,顾名思义数据库连接池是一个容器,用于存放和管理数据库连接对象,它能有效减少数据库连接次数,在高并发场景下能够显著提高相应性能。本文实现的同步数据库连接池,它适用于服务器启动或者资源初始化。

2024-11-24 21:05:14 517

原创 纯C实现内存池

内存池,池式结构三幻神之一,它拥有池式结构的设计初衷,为了管理和重用一组初始化的对象或资源,但作者认为,它更重要的初衷应该是一种虚拟内存的管理组件,对于需要长时间运行的程序尽可能的避免出现内存碎片。

2024-11-17 17:58:16 876

原创 原子操作与锁实现

原子操作是指在多线程环境中不会被中断的操作,即该操作在执行过程中不会被其他线程或进程打断,并以此确保了数据的一致性和完整性,避免了竞态条件,在多线程编程中,原子操作常用于实现同步机制,如互斥锁、信号量、原子变量等。原子操作通常由硬件直接支持,执行效率高。

2024-11-16 16:46:34 1827

原创 纯C语言实现线程池

线程池是池式结构的一种,他的设计初衷是为了管理和重用一组初始化的对象或资源。这种模式在需要频繁创建和销毁大量相似对象或资源的应用场景下特别有用,这种池式结构的核心思想在于“重用”而非每次都进行“新建”和“销毁”,以此达到优化性能的目的。

2024-11-10 20:48:52 1694

原创 新王登基?解密与epoll媲美的io_uring

根据结果可以看到,基本上io_uring的性能比rector模型下的epoll要高10%左右。

2024-11-09 22:27:25 1008

原创 协程原理详解

由于时间有限,上面的代码并不完整只是说了大体思路和核心逻辑,后续会把他放入我的github,感兴趣的可以关注,或者自行补全。

2024-11-03 18:53:20 1066

原创 KCP详解

KCP是一种在应用层的旨在优化网络传输性能的快速的可靠的协议,KCP本身并不会直接处理底层网络通信,而是作为一个中间层协议,其通常基于UDP,这意味着用户要自己定义底层的发送方式,并且通过回调传递给KCP。

2024-11-03 01:45:10 2210

原创 UDP并发编程

综上,我们模仿tcp的三次握手流程,构建了一个基于UDP的连接模型,当然,上面的代码只有两次握手,这个后面在继续优化。最后再来总结一下,整个udp server的缺陷:1.目前没有应答机制,再加上用的是阻塞IO,也就是说一旦udp丢包,我们整个流程就走不下去,server端还好只是不会触发IO事件,client端会在recvfrom函数内阻塞。

2024-11-01 23:37:04 861

原创 网络通信的POSIX API 详解

要知道什么是POSIX API,我们要先知道POSIX是什么,POSIX是Portable Operating System Interface的简写,意思是可移植操作系统接口,旨在提高操作系统之间的兼容性和可移植性。

2024-10-27 18:57:08 725

空空如也

空空如也

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

TA关注的人

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