八个基础排序2021年3月23日| 编程 编程.Csort排序 std::sort( )函数是库函数提供的排序函数,必须包括头文件#include <algorithm>,它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n) Sort函数有三个参数:……阅读全文
实现atoi和itoa函数2021年3月17日| 编程 编程.C题目1: 把字符串转化为整数 有整数字符串,"13579", 和 "246810". 请写一个函数把这两个字符串转化为整数 步骤: 先判断正负 遍历字符串,转换字符为整数 //atoi.cc #include <stdio.h> int my_atoi(char *str) { bool bmin = false; int result = 0; //先判断正……阅读全文
协程解析二 | 云风的coroutine2021年3月10日| 编程 编程.C概述 云风的coroutine是通过ucontext来控制程序运行时上下文的,我们来根据该库提供的几个接口,和一个demo来解释协程的运行原理。如果不了解ucontext的,建议先了解ucontxt 环境……阅读全文
协程解析一 | ucontext2021年3月9日| 编程 编程.C概述 最近在研究协程的实现原理,看了云风的coroutine和腾讯的开源库libco后,原来要实现一个协程库也没那么难。我先来讲讲云风的coroutine库。他使用的是 uncontext来保存程序运行上……阅读全文
struct中使用char[]2021年1月5日| 编程 编程.C缘由 最近在看redis的源码,刚开始看sds,看到这块代码 struct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of string length */ char buf[]; }; 好奇为什么使用 char buf[],而不用char *buf,找到答案记录一下。 struct中的char*……阅读全文
CCnet | 单线程reactor演变为多线程2020年12月30日| 编程 编程.C 编程.网络编程ccnet从单线程演变为多线程 ccnet现状: epoll linux平台 事件循环 单线程 reactor 监听和新连接的事件都在主线程中 单线程的ccnet ccnet的单线程的角色: EventLoop: 整个事件循环。 EPollPoller: 负责事件的收集。 Channel……阅读全文
CCnet | 一个reactor单线程网络库2020年12月27日| 编程 编程.C 编程.网络编程缘由 最近在研究陈硕的网络库muduo,是一个基于reactor架构的网络库。我对网络库的感觉是易用,但是内容庞大,依赖颇多。比如boost网络库里面的一些语法让人生畏。关于reactor和proact……阅读全文
C++ | vector中的resize()函数 VS reserve()函数2020年12月25日| 编程 编程.Creserve void reserve (size_type n); reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化。reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即……阅读全文
Libevent | 定时器2020年9月16日| 编程 编程.Clibevent 实现定时器流程 首先初始化libevent库,并保存返回的指针 struct event_base * base = event_init(); 实际上这一步相当于初始化一个Reactor实例;在初始化libevent后,就可以注册事件了。 初始化事件event,设置回调函……阅读全文