加载中……
thumbnail
Ubuntu的一些实用命令工具(回收站机制、目录切换,etc)
背景 从ctrl C和ctrl V操作习惯了的Windows到初次接触到Linux的那一段时间,我想我理解到了,这世界有时是不求大同的。我从老师教的那十几个命令开始记起走,一大堆的英文介绍和参数刺眼得很,好在夏天本就吵闹,我看上去也还算沉默。直到我帮旁边的女同学删除了她刚配置好的系统,我才算露出了憨厚的笑容。 后来啊,在王老一句“万物皆文件”的点醒…
Linux 设备树(dts)节点相关函数
匹配流程 在设备树(dts、dtsi)中通常有一个compatible属性,我们可以在驱动源码里找到该属性值。例如: /*定义的of_match_table*/ static const struct of_device_id mytest[] = { { .compatible = "test,12345" }, { } }; /*driver …
C++ 模板知识总结
是什么 模板是范型编程的基础,范型编程呢,顾名思义,就是传递的参数类型广泛,不固定,函数或者类自适应参数类型的意思。听起来似乎没什么,但不管怎样,你一定记住,模板可牛逼着呢。 比如说定义了一个如下的函数模板: template <T> T add( T a, T b ) { return a + b; } 这里的T 我们就可以理解为万能…
Linux设备树基础知识
相关文件 dts dts后缀文件中保留了硬件相应的信息,在Linux源码中可找到大量.dts文件,ARM架构中在arch/arm/boot/dts文件夹中找到相应的dts文件,一个dts文件对应一个ARM的machie。 dtsi 值得一提的是,对于一些相同的dts配置可以抽象到dtsi文件中,然后类似于C语言的方式可以include到dts文件中…
C++构造函数与析构函数
示例代码 #include <iostream> using namespace std; class ClassTest { public: ClassTest( int s ): elem{ new int[s] }, size{ s } { } ClassTest( ): elem{ new int[1] }, size{ 1 }…
C/C++ static关键字作用
作用 修饰普通变量:变量存储在静态区,初始化且仅初始化一次变量,默认值为0。 修饰普通函数:限定函数作用范围,使该函数只在本文件有效,防止与其他命名空间函数冲突。 修饰成员变量:该类只保存一个该变量,可以通过类直接访问,在类中声明,在类外初始化。可以通过类名直接访问,所有的类对象共用同一个该静态成员变量。 修饰成员函数:无需生成对象可以直接访问,s…
C/C++实现归并排序
归并排序 归并排序和快速排序有类似之处,同样采用分治法,不同的是,归并排序不选取基准值,采用递归方式直接将数据分为两个区间,再进行排序合并。需要注意的是,排序实际是从最小单位,即分区大小为1时开始的。 时间复杂度 因为都是从中间划分区间,且无基准值。归并排序时间复杂度较稳定 O(nlogn) 步骤 对半划分区间 递归,直到分区大小为1 依次合并区间…
C/C++实现快速排序
提出 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序,它有一种比较重要的思想——分治思想。大致可以描述为,确保一组序列中存在一个特别的数据,其左边的数据都比他大(小),右边的数据都比它小(大),那么可以将这个数作为基准数,在其左边和右边分别再次确保一个数满足同等关系,直到区间大小为1,则排序完成。 时间复杂度 O(N*logN)…
C/C++实现堆排序
堆 在介绍堆前需要引入一个二叉树的概念 完全二叉树:若二叉树有k层,除第k层外,1-(k-1)层均达到最大值,则称为完全二叉树。 满二叉树:节点数n与层数k满足n=2^k-1关系的二叉树。 满二叉树一定是完全二叉树。 堆:满足父节点总是大于等于两个子节点或父节点总是小于等于两个子节点的完全二叉树,则称为堆。即节点值y1,y2,y3,yi...yn始…
C++链表的简单实现
缘由 本人C++菜鸟一枚,打算一边复习数据结构、算法,一边学习C++。That's All! 下面是C++链表的一个简单实现。 /*链表的增删改查*/ #include <iostream> #include <string.h> using namespace std; #define LEN (16) #define B…