自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 内存管理简介

struct page :描述的是一个物理页, 内存管理的最小单元, 只描述的是物理页面本身, 程序和系统运行,存在数据的换入换出, 因此page中的数据和page无本质的联系. 数据结构定义在 : include/linux/mm_types.h 主要内容: (1) 页面状态(page-flags.h); (2) 页的类型: a. page cache/anonymous page; b. page_pool used by ne..

2021-11-11 22:31:00 1156

原创 gitee 代码仓建立及本地同步

1.添加步骤https://www.yuque.com/moonpielu/ucdhn8/hkff8a添加公匙(1) 本地 :ssh-keygen -t rsa -C email address(2) gitee :密匙添加问题及解决–> 问题:sign_and_send_pubkey: signing failed: agent refused operation错误解释:表示ssh-agent 已经在运行了,但是找不到附加的任何keys,就是说你生成的key,没有附加

2021-03-27 22:01:44 590

原创 [kernel][technical points] likely & unlikely

一. 定义#define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1))#define unlikely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 0))__builtin_constant_p(x) : int __builtin_constant_p (exp) [Built-in Function]...

2021-02-11 00:28:21 138 1

原创 Makefile理论实践(一)

makefile 就是为了软件工程的自动化编译, 日常进行软件工程时,随软件的增删改,应当减少人为的修改makefile文件,所以应该增强makefile的鲁棒性, makefile的 模式思维,就比较的重要 .应用举例 :多目标编译:(1) 对源文件严重依赖:all: test test1.PHONY: test test1test:test.c gcc -o $@ $<test1:test1.c gcc -o $@ $<.PHONY:cleanclean:rm -r

2020-08-13 16:18:31 154

原创 内核锁机制

一. 原子操作 原子操作,就是代码执行不会在执行完毕前被任何其他任务或事件打断. 原子操作需要硬件的支持,因此是架构相关的, 它们都使用内嵌汇编语言实现,因为C语言并不能实现这样的操作. 内核原子操作的理解: a. 资源的使用情况计数, atomic_t的counter是int型的,可以记录资源的使用情况; b. 资源使用的互斥, 当 atomic_t的counter的取值情况...

2019-11-21 10:34:57 431

原创 FTL(Flash Translation Layer)原理(1)

FTL (Flash Translation Layer) :是介于文件系统和物理闪存之间,充分结合闪存物理特性的一个磁盘管理软件抽象层。提供功能接口及多种可配置参数,用户可根据需要配置,从而提供最优的嵌入式存储方案。整体架构如下:f2fs 文件系统有多种可配置参数,因此可根据不同的存储需求方案,配置不同的参数,以达到需求的最佳性能,稳定性的存储方案。...

2019-10-29 17:30:18 1139

原创 makefile变量定义和使用

makefile变量定义和使用释义和示例:1. makefile 文件TARGET = mainobjects = main.o std.o#objects := $(wildcard *.o)#objects := [*.o]#隐藏编译规则HIDE := @##### 变量的定义和使用:# 1. :=# 直接赋值,定义的变量立即生效;# ...

2019-10-10 17:33:35 573

原创 内核container_of原理及应用

一. 原理container_of的作用是已知一个结构体的成员变量名(memmber),成员变量指针(ptr),结构体类型(type),来获取结构体的首地址。核心原理是,成员变量的地址减去成员变量相对于结构体起始地址的偏移量,获得结构体的首地址。#define container_of(ptr, type, member) ( \ { ...

2019-05-22 22:44:57 390

原创 安装anaconda后切换 python版本的方法

问题:安装anaconda后,无法使用update-alternatives --config来切换python的方法https://www.jianshu.com/p/fe327b72fa31问题:ubuntu-16.04 降低gcc 版本到gcc-4.4https://blog.csdn.net/wu11zhike/article/details/83865549...

2019-05-03 19:04:13 1963

原创 用户空间接收uevent示例

#include <stdio.h>#include <errno.h>#include <stdbool.h>#include <string.h>#include <strings.h>#include <sys/socket.h>#include <sys/un.h>#include <u...

2019-04-29 08:21:34 1405

原创 selinux 代码实现原理

1.概述 selinux描述的是主体(进程)和客体(文件,socket, 进程间通信的管道)间的访问控制的安全上下文。一个进程或者一个文件,目录相当于有了独有的一个安全域,其他的文件,进程要访问具有安全上下文的文件或者进程,需要有安全上下文标识的标签,才能互通有无。比如可以自己定义一个域: type test_monitor, domain; //test_monitor具有domain属...

2018-06-10 15:30:05 3915

原创 matplotlib添加字体及中文乱码问题

下载中文字体: http://www.font5.com.cn/font_download.php?id=151&amp;amp;part=1237887120将下载的字体ttf文件放到matplotlib的字体库位置: anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/删除matplotlib的字体缓存,文件...

2018-06-07 22:21:12 5106

原创 matplotlib中防止中文乱码

matplotlib中有各种默认配置属性供画图使用。 matplotlib.rcParamas可在python中对matpoltlib中的各个配置属性进行修改,修改成功后,之后的绘图属性都按照新的属性来进行。 eg:## 设置字符集,防止中文乱码mpl.rcParams['font.sans-serif']=[u'simHei']mpl.rcParams['axes.unicode...

2018-06-03 22:24:14 481

原创 sklearn.model_selection.train_test_split

sklearn中, 对样本数据进行训练集和测试集分割的API :sklearn.model_selection.train_test_split(*arrays, **options) 参数说明: array : 具有相同行数的样本数据序列(每个序列中的样本数要一致); 可以有多个样本序列,序列可以是python list, numpy array, matrice,...

2018-06-02 21:52:18 656

原创 UART原理

1. 概述 UART(Universal Asynchronous Receiver/Transmitter)是一种异步串口IO端口(Asynchronous Serial I/O port),每个SOC上可支持多个独立的UART。每个独立的UART的特性如下: (1)每个UART port可基于中断或者DMA来工作,也就是UART可生成中断或者DMA请求,在内存和UART间进...

2018-04-07 11:10:29 7698 2

原创 Linux系统调用添加(base linux kernel-4.4)

(1) 添加系统调用号: arch/arm64/include/asm/unistd32.heg: #define __NR_sysinfo 116__SYSCALL(__NR_sysinfo, compat_sys_sysinfo)(2)添加用户空间和kernel中对应函数的向量表: arch/arm/tools/syscall.tble...

2018-04-01 16:39:57 344

原创 const和指针的三种组合

/* int *const p : p 指针的指向不能改变;(此时理解为const修饰的是p指针) int const* p / const int* p : p指向的地址空间的取值不能改变;(此时理解为const修饰的是p(理解为取值)) int const* const p : p指向的地址空间取值和指向都不能改变.编译的时候,如果编译器识别到被const修改的变量a,有代码有...

2018-03-17 22:43:51 770

原创 memset正确使用方式

/* memset(void* s, int c, size_t n) 该函数是以 字节为单位 将s指向的地址开始写入n长度的c, 所以数据类型为char时,可以正确memset ; 如果是其他类型的数据就不行了,就得用循环实现了. *///#define LOOP_INIT_STRUCT#include &lt;stdio.h&gt;#include &lt;strin...

2018-03-17 10:49:39 4692

原创 数组/数组指针/指针数组的区别理解

/* 数组指针:首先是个指针,指向数组的指针,eg: int(*p)[10],p指向偶10个元素的int型数组(int(*)[10]p); 指针数组:首先是个数组,存储指针的数组,eg: int* p[10],p是数组名,存储的是10个 int型指针。 一维数组:一位数组名相当于一个指针,存放的是第0个元素首地址。 二维数组:二位数组名存放的是第0行的首地址,不是第...

2018-03-17 10:46:22 168 1

原创 git 使用部分总结

常用技法:git blame显示文件修改相关信息,包括commit-id, author, message,date.eg: git blame -L 166,+10 ,查看文件的166行开始的后10行相关信息。Git log –pretty=oneline一行行显示该git库的所有提交 Git log --pretty=format:""按照某一种格式显示,有如下供选择的格式:%H 提交

2016-07-10 15:02:30 272

空空如也

空空如也

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

TA关注的人

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