自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 刷题 19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]快慢指针法:struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct Li

2022-05-15 17:58:30 242

原创 记录一下好的内核知识链接,备忘

https://github.com/freelancer-leon/notes/tree/master/kernelhttps://github.com/Durant35/durant35.github.io/issues/24https://www.cnblogs.com/hellokitty2/p/9000631.html

2022-04-10 16:31:39 172

原创 gcc编译选项与cpu指令集的影响

cpu支持的指令集不同的CPU就和一个干活的员工一样,能力有强有弱。能力的强弱除了处理速度意外,支持的指令集数量也是关键点。我们在linux系统上可以用lscpu命令或者cat /proc/cpuinfo来查看cpu可支持的指令集:[root@localhost ~]# lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, 64-bitByte Order: Little EndianCPU(s):

2022-03-05 17:04:01 1337

原创 C语言中打印函数的调用栈

#include <execinfo.h>void bt(){ void *address[32]; char **symbols; int n; n = backtrace(address, 32); for (int i = 0; i < n; i++) // x/i 是为了方便gdb获取地址 printf("#%d: x/i 0x%0lx\n",

2022-01-24 15:42:26 3205

原创 svn代码回滚命令

svn代码回滚命令取消对代码的修改分为两种情况:第一种情况:改动没有被提交(commit)。这种情况下,使用svn revert就能取消之前的修改。svn revert用法如下:svn revert [-R] something其中something可以是(目录或文件的)相对路径也可以是绝对路径。当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的

2021-12-20 10:43:01 4644

转载 为什么定义局部变量时如果未初始化,则值是随机的

分析一个细节:在C语言中,定义局部变量时如果未初始化,则值是随机的。为什么?定义局部变量,其实就是在栈中通过移动栈指针,来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(脏的,上次用完没清零的) ,所以说使用栈来实现的局部变量定义时如果不初始化,里面的值就是一个垃圾值。由此我们扩展一下,其实不仅仅是局部变量,所有的变量在定义时只是在内存中分配一块空间,并没有对这块空间进行任何的初始化。如果这块内存以前被用过,里面的数据还在,那它对于我们来说是没有任何意义的垃圾值。

2021-12-10 15:20:31 1194

转载 undefined reference to `gettid‘

一天到晚有人说gettid获取线程id,然后就是调不到这个函数,真的坑死~~~~~gettid()是Linux他自己的,因此把里面实现函数复制出来,写到自己的程序里即可。头文件有#include<sys/syscall.h>pid_t gettid() { return syscall(SYS_gettid); }#include <linux/unistd.h>pid_t gettid(void){ return syscall(__NR_gettid); }...

2021-12-10 14:03:18 136

原创 network服务及其启动流程介绍

概述先说一下NetworkManager服务:从RHEL/CentOS 7开始,网络功能默认由NetworkManager以服务的形式提供。NetworkManager是一个能够动态控制和配置网络的守护进程,管理网络服务和网络连接,对应NetworkManager.service服务。旧的 /etc/init.d/network 以及 ifup,ifdown 等静态控制脚本依然存在,但是处于备用状态,即:NetworkManager运行时,多数情况下这些脚本会调用NetworkManager去完成网络配

2021-09-26 14:48:27 6224

原创 bcache拥塞控制

bcache拥塞控制原理代码层梳理概述bcache的拥塞只针对cache设备侧的监控,一个bcache设备的拥塞控制是读写共用的:即配置了读/写拥塞任意一个,都会对整个bcache的IO下发造成影响。拥塞控制原理(3.10内核)通过代码走读,其拥塞控制拥有“监控端”“控制端”两部分。监控端负责在IO完成时发现当前设备是否出现“拥塞”状况,同时调整拥塞值。控制端负载在IO下发前根据设备拥塞值评估是否要下发IO到cache盘。1.监控端bcache读写cache盘的开始和结束,会进行用IO耗时计

2021-09-18 10:00:15 343

原创 bcache内核模块IO读写、writeback流程梳理

主要作用Bcache (block 缓存)是一个Linux内核“块存储层”缓存,类似于flashcache使用ssd作为hdd的缓存方案,允许使用较为高速的固态硬盘作为读写缓存(writeback模式)或者读缓存(writethrough 或者 writearound模式)来为另一个 block 设备(通常是机械硬盘或硬盘阵列)加速。上述三种模式的原理图如下:默认情况下,bcache只超速缓存随机读取和写入,这也是 SSD 的强项。尤其在writeback模式下,对写性能的提升会较为明显,本文后续的

2021-04-19 17:58:23 2934

转载 ARM64架构,local_irq_disable()、local_irq_enable()代码原理解释

在armv8-arch64架构下,控制cpu是否响应IRQ,FIQ,SERROR,DEBUG中断,是由PSTATUS(daif寄存器)控制的。在armv8-arch32或armv7架构下,控制cpu是否响应IRQ,FIQ,SERROR,DEBUG中断,CPSP中的 D A I F bit位控制的。本文只讨论armv8-arch64架构下的linux kernel程序:首先,local_irq_disable()、local_irq_enable()的实现就是写daif寄存器,与具体中断控制器无关,

2021-03-31 19:40:11 1214

转载 mm_struct 中的 mm和active_mm

Hello Roy> I fail to understand the difference between task->mm and> task->active_mm. I've noticed that upon forking a task, both mm and> active_mm get the same memory descriptor.Well, here is my understanding. task_struct->mm p.

2021-03-06 09:51:52 241

原创 git send-email 使用126邮件发送patch

1、要有一个126邮箱。2、你的126邮箱要开启smtp服务开启方法,在登陆界面点击设置 -> POP3/SMTP/IMAP进入设置页面开启POP3/SMTP服务,默认是已关闭,下图是我已经开启了开启过程中给提供给你一个授权密码,这个复制下来保存,在Linux的gitconfig中会用到3、linux系统下配置smtp首先确保系统可以访问外网,能访问到126邮箱网页安装 git git-email修改配置文件~/.gitconfig[user] name = XXX

2020-10-31 16:15:00 1231

原创 slub_debug不能调查kmem_cache_cpu被踩坏但貌似又能修复该问题的原因

slub_debug不能调查kmem_cache_cpu被踩坏但貌似又能修复该问题的原因我们知道slub_debug是一个调查slub/slab踩内存十分有效的工具。但最近遇到一个问题,在走slub快速路径c->freelist分配object的时候发现freelist地址出错,导致内核挂死。通过对slub分配流程的理解,可以想象到是之前一个page中的object内容被踩(use after free),然后又当做好的一个page添加到了kmem_cache_cpu中,然后再一次申请object的

2020-10-24 15:43:28 664 3

原创 利用conntrack-tools 工具查看系统追踪连接信息

1、简介conntrack-tools 是一套Linux用户空间连接跟踪工具,用于系统管理员进行交互连接跟踪系统。它包括了用户空间的守护进程conntrackd和命令行界面conntrack。2、安装下载连接:https://pkgs.org/download/conntrack需要一些其他依赖:这个就不介绍怎么下载安装了。大家自己搞下吧测试:安装好conntrack-tools之后,执行conntrack测试,如帮助信息打印,则安装成功。3、使用查看系统正式追踪表信息(

2020-05-11 19:29:45 3084

原创 Linux系统nf_conntrack连接跟踪机制简介

1、前言前段时间接手的一个连接跟踪表满导致网络不通的问题,因此对linux系统的连接跟踪模块进行了学习。本文梳理一下目前对nf_conntrack模块的一些个人理解。2、连接跟踪机制 背景知识:netfilter Netfilter是一个内核架构,是集成到linux内核协议栈的一套防火墙系统,可通过用户空间(iptables等)的工具来把相关配置下发给Netfilt...

2020-05-11 19:15:22 7613 4

原创 解决win10下安装ubuntu14.04后无法搜寻和连接wifi无线网络的问题

       近期换了新的笔记本,预装win10,再给它装了个ubuntu14.04上去,所用的镜像文件没有问题,但是安装后出现ubuntu系统无法搜寻和链接wifi无线的问题。网上很多提到用sudo apt-get updatesudo apt-get install bcmwl-kernel-source     但都没有效果,各种查找方法,折腾了大概有1个多星期,终于解决了,这里...

2018-07-20 12:00:19 1896 2

空空如也

空空如也

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

TA关注的人

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