- 博客(31)
- 问答 (3)
- 收藏
- 关注
原创 2022-10-14 UEFI学习笔记(三)
每个设备就是一个EFI_HANDLE;所有的HANDLE通过AllHandles链接起来;IHANDLE的Protocols是双向链表,每个元素都是PROTOCOL_INTERFACE;通过PROTOCOL_INTERFACE中的Protocol指针可以得到GUID;
2022-10-14 15:31:28
726
1
原创 2022-10-14 UEFI学习笔记(二)
包”是一组模块及平台描述文件(.dsc文件)、包声明文件(.dec文件)组成的集合。模块(可执行文件,即.efi文件)像插件一样可以动态加载到UEFI内核中。
2022-10-14 11:01:01
319
原创 2022-10-9 UEFI学习笔记(一)
UEFI,统一可扩展固件接口,定义了操作系统和平台固件之间的接口,是UEFI Forum(英特尔联合微软,AMD,联想等11公司成立的组织)发布的一种标准,不提供实现。由其他开源组织实现。
2022-10-09 14:30:18
379
原创 2022-5-17 python cookbook(v3.0) 学习笔记(四)
迭代器与生成器手动遍历迭代器>>> def manual_iter(): with open('etc/passwd') as f: try: while True: line = next(f) print(line, end='') except StopIteration: pass# StopIteration 可以用以下方式对应>>> with open('etc/passwd') as f: while Tru
2022-05-19 17:27:32
111
原创 2022-5-11 python cookbook(v3.0) 学习笔记(三)
数字日期和时间数字的四舍五入>>> round(1.23, 1)1.2>>> round(1.27, 1)1.3>>> round(-1.27, 1)-1.3>>> round(1.25, 1)1.2>>> round(1.26, 1)1.3>>> round(1.5, 0)2.0>>> a = 1627731>>> round(a,
2022-05-17 15:00:45
401
原创 2022-5-10 Linux sysfs使用方法随笔
linux sysfs使用概述Linux 2.6以后的内核引入了sysfs文件系统, sysfs被看成是与proc、 devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统, 它可以产生一个包括所有系统硬件的层级视图, 与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统上的设备和总线组织成为一个分级的文件, 它们可以由用户空间存取, 向用户空间导出内核数据结构以及它们的属性。 sysfs的一个目的就是展示设备驱动模型中各组件的层次关系, 其顶级目录包括block
2022-05-10 14:54:06
1218
原创 2022-4-27 python cookbook(v3.0) 学习笔记(二)
字符串和文本使用多个界定符分割字符串>>> line = 'asdf fjdk; afed, fjek,asdf, foo'>>> import re>>> re.split(r'[;,\s]\s*', line)['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']>>>
2022-04-27 16:39:47
1084
原创 2022-4-7 python cookbook(v3.0) 学习笔记(一)
数据结构和算法解压序列赋值给多变量>>> data = ['ACME', 50, 91.1, (2012, 12, 21)]>>> name, shares, price, date = data>>> name'ACME'>>> date(2012, 12, 21)>>> name, shares, price, (year, mon, day) = data>>> year20
2022-04-08 16:41:20
596
原创 2021-11-11 vim 显示函数列表
vim 显示函数列表安装ctags略安装taglist我这里用的时taglist_64,版本不匹配会导致启动功能不好用,启动vim时会报错taglist_64.zip解压到 ~/.vim中然后修改vimrc文件vim ~/.vimrcset nu #显示行号syntax on #高亮filetype on set laststatus=2set hlsearchlet Tlist_Auto_Open=1 #默认打开vim时自动开启taglistlet Tlist_Show_
2021-11-11 11:43:12
2018
原创 2021-10-28 Linux USB3.0 驱动流程
Linux usb3.0驱动流程基于kernel/msm-5.4版本每个分支都是按顺序进行的
2021-10-28 13:42:14
883
原创 2021-10-26 Linux驱动初始化及驱动设备匹配流程
Linux驱动初始化及驱动设备匹配流程基于kernel/msm-5.4版本每个分支都是按顺序进行的
2021-10-26 13:25:45
178
原创 2021-10-25 Linux内核初始化
Linux内核初始化基于余华兵的《Linux内核深度解析》4.X版本的内核解析我的项目是kernel/msm-5.4版本,基本没有大的变化每个分支都是按顺序进行的思维导图源文件链接:https://download.csdn.net/download/weihua1643/34402347...
2021-10-25 15:13:07
235
原创 2021-10-22 漫画算法 小灰的算法之旅--第五章 面试中的算法(四)
面试中的算法题目如何判断一个正整数是不是2的整数次幂方法1笨方法:从变量1开始,不停乘以2,与这个正整数进行比较,判断是否相等,乘到大于这个正整数结束方法2找规律:2的整数次幂的数除了最高位1剩下的都是0这个数减1之后,所有的位都变成1由此可知,两个数按位与的结果是0代码如下:public static boolean isPowerOf2(int num){ return (num & (num -1)) == 0;}...
2021-10-22 16:50:31
93
原创 2021-10-22 漫画算法 小灰的算法之旅--第五章 面试中的算法(三)
面试中的算法题目如何求出两个数的最大公约数辗转相除法又叫欧几里得算法两个正整数a和b(a > b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数例:a=25,b=10,c=25%10=5,则可以转换成10和5的最大公约数代码如下:public static int getGreatestCommonDivisor(int a, int b){ int big = a > b?a : b; int small = a < b?a : b; if(big/s
2021-10-22 16:32:23
131
原创 2021-10-22 漫画算法 小灰的算法之旅--第五章 面试中的算法(二)
面试中的算法题目实现一个栈,该栈带有出栈,入栈,取得最小元素3个方法,保证3个方法的时间复杂度最小为O(1)方法:1.设原有栈为栈A,再创建一个额外的栈B,当第一个元素入栈A时,也入栈B,作为栈A当前的最小值2.每次入栈A时,比较新元素和栈A当前的最小值,如果小则让新元素入栈B,作为新的最小值3.每次出栈时,如果出栈元素时栈A当前最小值,则让栈B的栈顶元素也出栈,此时栈A当中原本第二小的元素代替出栈元素成为了当前最小值4.当调用getMin方法时,返回栈B的栈顶值,这也就是栈A的当前最小
2021-10-22 14:58:53
113
原创 2021-10-22 漫画算法 小灰的算法之旅--第五章 面试中的算法(一)
面试中的算法题目有一个单向链表,如何判断链表中是否有环链表?方法1:依次遍历链表,每遍历一个新节点,就从头检查之前的所有节点,判断是否有相同的节点方法2:以节点ID为key创建HashSet集合,每遍历一个新节点,都用新节点和HashSet集合中的节点进行比较,如果第二次遍历某个新节点时,查找HashSet会发现节点已存在方法3(推荐):创建两个指针p1和p2,同时指向链表头,遍历时,p1每次移动一个节点,p2每次移动两个节点,比较两个指针指向的节点是否相同,相同则代表链表有环代码如下:/
2021-10-22 13:52:18
104
原创 2021-10-22 漫画算法 小灰的算法之旅--第四章 排序算法(四)
计数排序和桶排序计数排序假设数组中有20个随机整数,取值范围是0~10,要求对其进行从小到大排序解:1.新建一个长度为11的数组,初始化为02.假设20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9,7,93.遍历整个随机数列,如整数9,则下标为9的元素加14.第二个整数3,则下标为3的元素加15.遍历结束之后的数组,即完成排序:代码如下:public static int[] contSort(int[] arr){ //获取数
2021-10-22 10:49:31
149
原创 2021-10-21 漫画算法 小灰的算法之旅--第四章 排序算法(三)
堆排序基于二叉堆的特性:最大堆的堆顶是整个堆中的最大元素最小堆的堆顶是整个堆中的最小元素以最大堆为例,如果删除最大堆的堆顶(并不是完全删除,而是跟末尾节点交换位置),经过自我调整之后,第二大的元素会被交换成最大堆的新堆顶不停的删除堆顶,反复调整,最后最大堆就会变成一个从小到大的有序集合而且二叉堆实际是存储在数组中,则该数组就是一个从小到大有序的数组代码实现//下沉 调整public static void downAdjust(int[] arr, int parentIndex, int
2021-10-21 14:25:05
109
原创 2021-10-20 漫画算法 小灰的算法之旅--第四章 排序算法(二)
排序算法快速排序是冒泡排序演变而来,基于分治法即每一轮挑选一个元素,并让其他比它大的元素移动到数列的一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分时间复杂度为O(nlogn)基准元素的选择最简单的方式选择数列的第一个元素但是如果这个元素是该数列的最大值或最小值,则排序时无法将数列拆解成两部分,时间复杂度会退化成O(n^2)第二个方法是随机选择数列中的元素作为基准元素,但是还是有几率影响分治的效果具体方法双边循环法单边循环法双边循环法...
2021-10-21 13:44:52
317
原创 2021-10-19 漫画算法 小灰的算法之旅--第四章 排序算法(一)
排序算法常用的排序算法冒泡排序快速排序堆排序计数排序桶排序排序算法根据稳定性,可以划分为稳定排序和不稳定排序如果值相同的元素在排序后仍然保持着排序前的顺序,则这样的排序算法是稳定排序,反之是不稳定排序冒泡排序public static void sort(int array[]){ for(int i = 0,i a < array.length - 1, i ++) { for(int j = 0, j < array.length - i - 1, j ++
2021-10-19 17:41:56
112
原创 2021-10-15 python从入门到精通--第十三章 文件及目录操作
文件及目录操作基本操作创建和打开文件file = open(filename[, mode[, buffering]])mode:r, rb, r+, rb+, w, wb, w+, wb+, a, ab, a+, ab+buffering:指定缓冲模式,0为不缓存,1表示缓存,大于1表示缓冲区大小。默认是缓存模式关闭文件file.close()打开文件时使用with语句with语句执行完毕后会关闭文件with expression as target: with-body
2021-10-15 17:48:07
95
原创 2021-10-15 python从入门到精通--第十二章 异常处理及程序调试
异常处理及程序调试概述NameError:尝试访问一个没有声明的变量引发错误IndexError:索引超出序列范围引发错误IndentationError:缩进错误ValueError:传入的值错误KeyError:请求一个不存在的字典关键字引发错误IOError:输入输出错误ImportError:import无法找到模块引发错误AttributeError:访问未知的对象属性引发错误TypeError:类型不合适引发错误MemoryError:内存不足ZeroDivisionE
2021-10-15 15:46:51
78
原创 2021-10-15 python从入门到精通--第十一章 模块
模块概述一个py文件称为一个模块自定义模块创建模块创建一个.py文件例:bmi.py:def fun1(para1, para2, para3) blockdef fun2(para1, para2, para3) block使用import导入模块模块名区分大小写import modulename [as alias]例:import bmibmi.fun1(a, b, c)import bmi as bb.fun1(a, b, c)使用from…impor
2021-10-15 15:15:21
80
原创 2021-10-15 python从入门到精通--第十章 类
类定义类class ClassName: '''类的帮助信息''' statement创建类实例ClassName(parameterlist)创建__init__()方法class Geese: '''大雁类''' def __init__(self, beak, wing, claw): print("我是大雁类") print(beak) print(wing) print(claw) wildGoose = Geese(beak1, wing1, cla
2021-10-15 13:56:23
172
原创 2021-10-14 python从入门到精通--第九章 函数
函数函数的创建和调用创建函数def functionname([parameterlist]): ['''comments'''] [functionbody]例:>>> def aaa():... '''aaa bbb cccddd '''... pass...>>>>>> aaa.__doc__ 'aaa bbb cccddd '如果函数中使用‘’‘xxx’’'写了comment,可以通过 funcn
2021-10-14 16:26:54
108
原创 2021-10-09 python从入门到精通--第八章 正则表达式
正则表达式语法行定位符行定位符用来描述字符串边界^表示行的开始$表示行的结尾^tm 表示要匹配行开头为tm的内容tm$ 表示要匹配行结尾为tm的内容元字符\bmr\w*\b匹配以字母mr为开头的单词先匹配单词开始处(\b)匹配任意数量的字母或数字(\w*)匹配单词结束处(\b)该表达式匹配如”mrsoft“"mr123545"等限定符...
2021-10-14 14:34:00
101
原创 2021-10-09 python从入门到精通--第七章 字符串
字符串字符串编码转换Python3.x默认采用UTF-8编码,一个字节表示英文字母三个字节表示中文使用encode()方法编码str.encode([encoding=“utf-8”][,errors=“strict”])encoding=“utf-8”:用于指定在转码时采用的编码,默认是utf-8,如果想使用简体中文,设置为gb2312errors=“strict”:用于指定错误处理方式,可选strict(遇到非法字符时抛出异常)ignore(忽略非法字符)replace(用“?"替
2021-10-09 16:58:19
113
原创 2021-10-08 python从入门到精通--第六章 字典和集合
字典和集合字典字典的创建和删除dictionary = { ‘key1’:‘value1’, ‘key2’:‘value2’, ‘key3’:‘value3’,}空字典dictionary = {}dictionary = dict()1.通过映射函数创建字典dict()除了可以创建空字典,还可以通过已有数据快速创建字典dictionary = dict(zip(list1, list2))>>> list1 = ['1', '2', '3']>>>
2021-10-09 14:32:44
94
原创 2021-10-06 python从入门到精通--第五章 列表和元组
序列索引i = [1, 2, 3, 4, 5]i[0] = 1i[-1] = 5切片i[0:4:2] #[1, 3]i[0:4] #[1, 2, 3, 4]i[:] #[1, 2, 3, 4, 5]序列相加i = [1, 2, 3, 4, 5]j = [‘a’, ‘b’, ‘c’, ‘d’]k = i + jk #[1, 2, 3, 4, 5, ‘a’, ‘b’, ‘c’, ‘d’]乘法i = [1, 2, 3]j = i * 3j #[1, 2, 3, 1, 2,
2021-10-06 17:18:34
1147
原创 2021-09-20 Android(R) user版本启动ADB,并设置root权限
Android user版本启动ADB,并设置root权限遇到的问题:user版本莫名重启(调查发现是发生了kernel panic),由于没有Log,无法直接调查。调查思路:1.通过修改kernel config,将SERIAL_CONFIG设置成y打开log,但是如果是由于时序引起的重启,打开log之后问题可能不会再现2.由于重启时,Android会将rawdump存起来,可以通过导出rawdump文件解析出当时的log导出工具:ADB,但是adb pull需要root权限,user版本默
2021-09-20 08:42:14
2198
5
空空如也
高通在usb的dts中追加了interconnect-values-nom属性
2021-07-07
android使用wpa_cli指令连接wifi热点,连上之后马上就断开了?
2020-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人