![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
服务器开发相关
文章平均质量分 79
逐步打开C/C++服务器开发的视野
再出发2023
这个作者很懒,什么都没留下…
展开
-
理解内存序,指令重排与内存模型
1 多线程同步:当多个线程需要共享一个变量,并且需要确保每个线程对该变量的读操作都能够正确地获取最新值时,可以使用std::memory_order_acquire来确保同步。memory_order_relaxed (松散内存序): 只确保原子性,不具备同步性,顺序不一定,编译器,cpu都可以对ab、ef优化(改变顺序,重排)memory_order_acquire (获得操作): 原子性,同步性,顺序性 与memory_order_release 相反。a,b能否优化到c后面来?原创 2023-06-10 19:06:30 · 983 阅读 · 0 评论 -
理解分布式锁的实现过程
在分布式系统中,一个应用部署在多台机器当中,在某些场景下,为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易做到,比如mutex、spinlock、信号量等;而在多机多进程环境中,此时就需要分布式锁来解决了;所谓的分布式场景就是:多机器,多网段,通过socket通信。原创 2023-06-07 17:28:35 · 236 阅读 · 0 评论 -
理解原子操作与CAS锁
从cpu存储架构上分析原子操作的基本原理原创 2023-06-08 18:04:36 · 602 阅读 · 0 评论 -
内存泄漏检测相关内容
通过拦截 malloc,free函数,然后以宏定义的方式,改造malloc, free: malloc的时候根据指针地址写一个文件,free的时候根据指针地址删除这个文件。最后根据留下的文件就可以知道哪个new没有释放内存了。_malloc__FILE____LINE___free__FILE____LINE__方法1的弊端是,最好是用在一个.c文件中,如果文件较多的话就不太适用。原创 2023-06-05 17:11:09 · 97 阅读 · 0 评论 -
手写C/C++死锁检测
手写C/C++死锁检测,有向图原创 2023-06-03 15:50:21 · 901 阅读 · 0 评论 -
了解一下与epoll媲美的io_uring
io_uring从概念到代码演示原创 2023-05-20 18:32:33 · 322 阅读 · 0 评论 -
DPDK UDP小程序使用记录
udp 协议栈解析原创 2023-05-14 19:58:19 · 150 阅读 · 0 评论 -
用户态协议栈学习,DKDK基本用法介绍
这里以DPDK为例:(目的是为了获得原始的网络数据,除了DPDK,socket raw,netmap也能获取获取以太网数据)原创 2023-05-07 19:15:48 · 667 阅读 · 0 评论 -
用ucontext库创建简单的协程
协程是一种轻量级的线。协程在程序运行时由程序员显式控制调度的,可以在同一个线程中实现多个协程之间的切换,从而实现并发执行的效果。比较经典的理解是:“用同步的方法,做着异步的事情”。协程避免了线程切换所带来的开销,在一些性能要求高、资源限制多的场合就特别的适用。协程上下文ucontext_t,里面包含了程序计数器、栈指针、寄存器等信息,它们表示了一个协程的运行状态。通过ucontext_t的简单封装,即可验证 “保存和恢复上下文” 来实现协程的切换的过程。原创 2023-04-28 15:57:03 · 519 阅读 · 0 评论 -
用wireshark抓tcp三次握手
用wirechark抓tcp三次握手。服务端的ip:192.168.1.91,起动一个简单tcp服务器reactor。点击连接,这里就完成了三次握手。原创 2023-04-27 14:43:13 · 359 阅读 · 0 评论 -
20230422 2.2.3 Posix API与网络协议栈的一些认知
POSIX(Portable Operating System Interface)API是一组操作系统接口标准,旨在为不同的Unix操作系统提供一致的编程界面。它包括了许多常见的操作系统服务,如进程管理、文件管理、网络通信等。POSIX API由IEEE制定和管理,其标准编号为IEEE 1003。许多现代的操作系统都支持POSIX API,包括Linux、Mac OS X和Solaris等。原创 2023-04-25 10:30:54 · 155 阅读 · 0 评论 -
Reactor学习,从数据结构,内存分配,概念上分析
reactor可以用下面的结构体去抽象,它包含epoll的fd, zv_connect_t *block的数量(需要动态分配内存),然后它指向 zv_connblock_s链表的表头int epfd;int blkcnt;// 这里是指针,指向block的头 } zv_reactor_t;现在初始化它,假设有1024个block。原创 2023-04-23 22:13:38 · 91 阅读 · 0 评论 -
网络字节序
ntohs和htons是两个函数,用于将网络字节序(大端模式)和主机字节序(小端模式)之间进行转换。原创 2023-04-15 19:41:38 · 64 阅读 · 0 评论 -
select poll epoll学习记录
select poll epoll学习记录。原创 2023-04-12 16:20:17 · 57 阅读 · 0 评论 -
如何学习设计模式
如何学习设计模式原创 2023-04-05 12:31:00 · 42 阅读 · 0 评论 -
无锁队列的理解
C++11 用原子操作实现无锁队列原创 2023-03-31 16:05:01 · 90 阅读 · 0 评论