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