摘要:
1、在函数里定义数组的时候,使用变量作为数组大小是否有问题? 之前我一直以为不能这么做,后来发现c99后支持了VLA,即动态数组。于是有了下面两个问题。 https://zh.cppreference.com/w/c/language/array?tdsourcetag=s_pcqq_aiomsg 阅读全文
摘要:
c++ 右值以及move 阅读全文
摘要:
第二章 内存寻址 内存地址 内存地址分为三种,分别是逻辑地址、线性地址和物理地址。 逻辑地址是指机器指令中,比如汇编中有代码段,栈段之类的段名,以及一个偏移量,用来确定某个变量或者方法所在的地址。 线性地址是指运行的时候,某个变量在内存中的虚拟地址,比如我们定义一个int a,输出&a,就是输出变量 阅读全文
摘要:
github地址:https://github.com/happyfish100/libshmcache libshmcache是在共享内存上实现了一个key/value的cache,据说性能比redis高很多。不过redis是带持久化的,libshmcache作为cache是不带持久化的。 lib 阅读全文
摘要:
最近写毕设的时候,写到了数据库部分,想要异步操作mysql,发现mysql并未提供对应异步接口,于是我开始思考是否有办法自己实现一个异步接口。 想实现一个异步接口需要什么条件? (1)不应该在IO操作上阻塞 (2)每条消息(查询)必须要有相应标识 对于(1)不必所说,(2)的意思是每条消息发出去后, 阅读全文
摘要:
AIO,BIO,NIO都进程进行IO的三种不同方式。 对于网络模型,这三种方式具体表现如下: BIO:最常见的阻塞同步IO,是指客户端请求时,服务端会起一个线程,或者是在线程池调一个线程去处理读写,并维护连接。如果此时是长连接的话,这种方式无法达到较高并发量,因为线程本身不能起太多。 试想如下场景: 阅读全文
摘要:
1) 简介 多队列网卡是指一个网卡上有多个队列,内核会给每个队列注册一个中断号,具体可以在/proc/interrupts | grep {网卡} 查看,其中第一列是中断号,最后一列是网卡队列信息。CPU和中断号有亲和性,一般网卡中断和一个CPU绑定,绑定关系可以在/proc/irq/{中断号}/s 阅读全文
摘要:
kernel中socket buffer相关参数 阅读全文
摘要:
sched_getaffinity和pthread_getaffinity_np都是绑核的函数,网上都说sched_getaffinity是用来绑定进程的,pthread_getaffinity_np是用来绑定线程的。但是我们知道,绑定进程从本质上来讲,也是绑定线程,那这两个有什么区别呢? 可以发现 阅读全文
摘要:
无锁队列 介绍 在工程上,为了解决两个处理器交互速度不一致的问题,我们使用队列作为缓存,生产者将数据放入队列,消费者从队列中取出数据。这个时候就会出现四种情况,单生产者单消费者,多生产者单消费者,单生成者多消费者,多生产者多消费者。我们知道,多线程往往会带来数据不一致的情况,一般需要靠加锁解决问题。 阅读全文