自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编译并升级Linux内核

测试环境:虚拟机ubuntu-18.04系统内核版本:4.15.0-20-generic源码内核版本:linux-4.19.8说明:第一次是在centos7的虚拟机中做该实验,编译并安装完内核以后,系统无法启动之后在ubuntu虚拟机中做测试,升级成功.config文件说明/boot目录下的config文件,用于控制内核编译选项,编译内核时必须要有该配置文件make config: 这个要求你手动选择所有配置项,配置完成后生成.config文件mak...

2020-07-12 11:22:59 1910

原创 Linux内核学习之红黑树

Linux内核中的红黑树定义为:struct rb_node初始化红黑树struct rb_root mytree = RB_ROOT;假设有如下定义typedef struct rbtree_test_s{char str[32];struct rb_node rbnode;int a;}rbtree_test_t;操作红黑树插入和查找数据,需要自己实现,代码如下:int my_insert(struct rb_root *root, rbt...

2020-06-23 16:49:37 320

原创 Linux内核学习之list链表

Linux内核中的链表定义为:struct list_head初始化链表单纯定义并初始化链表的两种方式:方式一:LIST_HEAD(mylist);方式二:struct list_head mylist = LIST_HEAD_INIT(mylist);当链表嵌入到结构体中时,需要用另外的方式进行初始化比如,定义如下结构体:typedef struct...

2020-04-20 17:23:14 277

转载 vc++程序崩溃后不生成dump文件

这几天给自己的程序通过SetUnhandleExceptionFilte加dump机制。实测时发现不是所有的崩溃,都能生成dump文件:比如assert(false);语句就没有生成dump文件。上网查了一下发现跟我有相同困惑的人还不少,比如这篇"很多软件通过设置自己的异常捕获函数,捕获未处理的异常,生成报告或者日志(例如生成mini-dump文件),达到Release版本

2017-10-16 15:54:48 1067

原创 C++中const的作用

1、定义常量,一旦被定义,不能再被修改。 2、修饰函数形参,形如:int add(const int c, const int d) 作用:确保函数不能修改形参的值 3、放在函数末尾,形如:int add(int c, int d) const 作用:只有类中的成员函数才能将const放在末尾(放在普通函数末尾编译器会报错),使成员函数不能修改任何的成员变量(mutable修

2017-07-09 19:18:53 937

原创 C++使用STL中map需要注意的地方

1、map中存放的数据为key-value(键-值对),数据结构为红黑树。2、当key-value为非指针类型时,map会自动分配内存存储数据(是原数据的一份拷贝);因此,如果原数据保存在动态分配的内存空间中,内存空间delete以后,不会影响map的使用;此时调用的是自定义类的拷贝构造函数。3、向map中插入的数据按key值从小到大自动排序,因此key值需要有比较功能;如果key为自定义

2017-07-09 18:47:44 825

转载 为什么Redis内存不宜过大

这几年的线上业务表明,redis这个内存数据库,它的高性能、稳定性都是不用怀疑的,但我们塞进redis的数据过多,内存过大,那如果出问题,那它可能会带给我们的就是灾难性(我想很多公司都遇到过) 这里列举一下,我们遇到的一些问题:1 主库宕机先来看一下主库宕机容灾过程:如下图在主库宕机的时候,我们最常见的容灾策略为“切主”。具体为从该集群剩余从库中选出一个从库并将

2016-12-25 03:07:22 8474

转载 Redis全内存运行

在某些使用场景中,我们并不需要使用Redis的持久化,反而需要发挥redis的内存数据库特性,实现完全内存运行,达到需要的高性能。Redis 本身支持持久化,通过在一定时间间隔或触发操作,将内存中的数据同步到磁盘来保证持久化。Redis 支持两种持久化方式,一种是  Snapshotting(快照),保存为dump.rdb文件,也是默认方式,另一种是 Append-only file(缩写

2016-12-25 02:51:18 1826

转载 Linux下高并发socket最大连接数所受的各种限制

1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ uli

2016-09-29 09:30:16 2032

转载 gettid 和pthread_self的区别

Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如

2016-08-12 17:27:14 356

原创 使用log4cplus库,编译错误undefined reference to `log4cplus::Logger::Logger(log4cplus::Logger&&)'解决方法

在虚拟机中安装log4cplus库,编译测试程序的时候总是报“undefined reference to `log4cplus::Logger::Logger(log4cplus::Logger&&)'”错误,经过两天的摸索,终于找到了解决方法:是因为执行“./configure”的时候未加参数导致的,情景如下:我写的测试程序用的C++11的一些功能,所以用g++编译的时候需要加选项“-st

2016-04-17 19:40:32 6208 2

空空如也

空空如也

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

TA关注的人

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