- 博客(43)
- 收藏
- 关注
原创 【Python】Python sort和sorted函数
sorted函数主要用来对序列(列表、元组、字典、集合、字符串)进行排序。函数的基本语法格式如下:iterable:iterable 表示指定的序列key:key 参数可以自定义排序规则reverse:指定排序的方式,默认值False,即升序排列。
2023-09-05 22:59:29 742
原创 【Python】文件拖放(drag and drop)并获取文件信息
dropEvent:当拖动文件到窗口松开鼠标的时候触发该事件,窗口外松开不触发,放置时可以根据需要过滤文件类型,拖放后event.mimeData().urls()上则返回一个多个QUrl类型的实体,每一个QUrl中包含了每一个文件的路径,通过toLocalFile()可以获取到QUrl中包含的在当前系统上的全路径格式。dragLeaveEvent:当拖动动作离开窗口时触发该事件,离开窗口时没有mimeData数据对象。3,支持点击浏览按钮选择文件路径,支持拖拽文件路径放置。()获取当前部件是否支持拖放。
2023-08-27 10:07:16 2814
原创 【Python】PyCharm配置外部工具
1,PySide Designer绘制界面UI文件--工具designer.exe2,将界面UI文件转换成py文件--工具pyside2-uic.exe3,将绘制界面用到的资源图片文件转换为py文件--工具pyrcc5.exe
2023-08-18 22:02:38 968
原创 SSH服务器搭建
1.下载路径:跳转至Github下载OpenSSH。选择对应的Assets下载版本。2.解压到D:\Program Files\OpenSSH-Win64路径下3.将D:\Program Files\OpenSSH-Win64添加到环境变量中。4.CMD命令行至OpenSSH解压路径下,依次执行。(1)安装sshd服务注意:打开终端时要用管理员权限,否则报错如下:(2)开放22号端口(3)配置开机自启sshd服务(4)启动服务。
2023-03-31 23:09:22 1130
原创 【C语言】时间戳转换为年月日时分秒和年月日时分秒转换为时间戳,计算星期几和过去的天数(格林威治时间1970-01-01)
时间戳转换为年月日时分秒和将年月日时分秒转换为时间戳,计算星期, 从1970-01-01至今经过的天数
2022-08-26 22:25:40 3557
原创 Linux内核获取当前任务current
X86架构:arch/x86/include/asm/current.h一:定义当前任务的全局变量current_taskpercpu基本原理:静态的percpu变量使用DEFINE_PER_CPU()宏来定义,目的就是把这种类型的变量都放到section(".data..percpu")#define DECLARE_PER_CPU(type, name) \ DECLARE_PER_CPU_SECTION(type, name, "")#defi...
2022-05-15 17:51:15 1055
原创 【Linux】编译内核模块和EXPORT_SYMBOL
在export_symbol_server.c模块导出函数export_symbol_server和变量export_global_variable,在export_symbol_client.c引用。一:导出函数和全局变量符号// export_symbol_server.c#include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h>// 导出全局变量符号export_
2022-05-04 10:33:47 562
原创 【Linux】内核编程中的EXPORT_SYMBOL()
查看符号导出结果命令:以EXPORT_SYMBOL(export_symbol_server)为例:$ cat /proc/kallsyms | grep export_symbol_server一:EXPORT_SYMBOL()宏定义相关定义如下#define ___PASTE(a, b) a##b#define __PASTE(a, b) ___PASTE(a, b)#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, p
2022-05-03 11:18:55 1763
原创 【Python】pandas合并Excel和匹配查找并输出匹配结果
新建如下测试excel表:一:目标匹配股票公司.xlsx,一个sheet,一张表二:招商.xlsx sheet0,有额外的无效列sheet1 两张表, 表的位置从头开始,中间有间隔sheet2sheet3 三张表,两表中间间隔不同,表从头开始sheet4 三张表, 表的位置不是从头开始三: 中金.xlsx四:汇总表.xlsx,合并效果如下五:代码如下# enconding = 'utf-8'from pathlib ...
2022-04-30 18:27:57 2255
原创 【Python】命令行参数的解析技巧
常用三种解析方法:方式一:解析系统sys.argv[]参数列表def parse_sys_argv():print({'argv[0]':sys.argv[0],'argv[1]':sys.argv[1],'argv':sys.argv})# 执行命令:python argv.py param1 param2# 打印结果:{'argv[0]': 'argv.py', 'argv[1]': 'param1', 'argv': ['argv.py', 'param1', 'p...
2022-04-23 11:58:44 2129
转载 Linux链接脚本lds和C程序混合调试
转载自https://www.cnblogs.com/li-hao/p/4107964.html一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制.链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –-verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-T选项用以指定自己的链.
2022-04-05 21:09:23 809
原创 git rev-parse之操作笔记
1,myroot@myroot:~/linux/linux-5.15.7$ git logcommit ea79e49b21ae8706dfbe5e2f13a766b5b10ac9db (HEAD -> master)Author: xxxxxDate: Sat Mar 19 19:29:29 2022 +0800 linux-5.15.7myroot@myroot:~/linux/linux-5.15.7$ git rev-parse --verify --short HE...
2022-03-22 21:25:57 9302 2
原创 【Linux】VMware虚拟机Ubuntu18.04编译升级内核笔记
背景:想深入了解内核经典管理,但是又不想在开发板上花钱,于是想到借助虚拟机,在虚拟机上编译,安装学习内核,运行起来之后通过log的形式了解一些经典的用法。在环境搭建时的简单步骤,简单记下来,方便后续遇到问题后查找。VMware,ubuntu18.04,运行内核版本:linux-5.4.0.tar.gz 升级内核版本:linux-5.15.7.tar.xz环境准备:编译依赖sudo apt-get install libncurses5-dev openssl libssl-devsudo ap
2022-03-12 21:07:46 2773
原创 [Linux]grep和find配套查找字符串技巧
1,从目录或者文件中搜索文本字符串grep -rniw "字符串" "输入目录或文件路径"选项:-e, --regexp=PATTERN use PATTERN for matching-r, --recursive like --directories=recurse-n, --line-number print line number with output lines-w, --word-regexp force PATTERN to match only whole words
2022-01-22 22:56:57 2254
原创 linux设备驱动模型之/sys/目录注册
sys$ ls -F ./block/ bus/ class/ dev/ devices/ firmware/ fs/ hypervisor/ kernel/ module/ power/static void __init do_basic_setup(void){cpuset_init_smp();driver_init();init_irq_proc();do_ctors();do...
2021-12-18 19:29:42 1065
原创 汇编语言---位操作指令(gcc内联汇编测试)
位操作类指令逻辑运算指令: AND OR XOR NOT TEST移位指令: 逻辑、算术移位指令: SHL SHR SAL SAR 循环、带进位循环移位指令: ROL ROR RCL RCR符号解释: &:按位与 |:按位或 ^:按位异或 reg:寄存器 imm:立即数 mem:内存变量注意这些指令对标志位的影响一:逻辑与指令ANDAND reg,imm/reg/mem ;reg←reg & imm/reg/m...
2021-12-04 17:21:34 2171
原创 浮点数存储方式理解,浮点数和整数之间的转换
按IEEE754标准,32位浮点数(float)和64位浮点数(double)的标准格式如下:S:符号位, 0:表示正数, 1:表示负数E:阶码,个人理解为将一个浮点数的整数部分转换成二进制之后, 然后将该二进制数移位成1.M的形式, E为移动的次数e。在IEEE754标准中将浮点数的指数真值e变成阶码E时,需要加上固定偏移:单精度固定偏移:127,双精度固定偏移:1023单精度(float)中E=e+127(2^(8-1)-1),双精度(double)中E=e+1023(2^(11-1)-
2021-12-04 15:53:19 10771 2
转载 汇编语言---跳转指令
跳转指令分三类:一、无条件跳转: JMP;二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转);三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了.根据标志位跳转的指令:JE : 等于则跳转JNE:不等于则跳转JZ: 为 0 则跳转JNZ:不为 0 则跳转JS: 为负则跳转JNS:不为负则跳转JC:进位则跳转JNC:不进位则跳转JO:溢出则跳转JNO:不溢出则跳转JA:无符号大..
2021-11-28 18:41:27 12964
原创 汇编语言---80386寄存器,GCC内联汇编语法
8个32-bit寄存器:%eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp;8个16-bit寄存器:%ax,%bx,%cx,%dx,%di,%si,%bp,%sp;8个8-bit寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl;它们事实是寄存器%ax,%bx,%cx,%dx的高8bit和低8bit6个段寄存器:%cs(code),%ds(data),%ss(stack),%es(extend),%fs, %gs;3个控制寄存器:%cr0,%c
2021-11-28 17:41:33 1759
原创 汇编语言---字符串操作指令(之gcc内联汇编应用)
目录一、加载字符串数据指令(Load String Instruction)二、存储字符串数据指令(Store String Instruction)三、字符串传送指令(Move String Instruction)四、输入字符串指令(Input String Instruction)五、字符串输出指令(Output String Instruction)六、字符串比较指令(Compare String Instruction)七、字符串扫描指令(Scan String Ins
2021-11-28 17:04:43 2686
原创 gcc内联汇编实现memset和memcpy_asm函数
源码:#include <stdio.h>#include <string.h>void *memset_asm(void *__s, char __c, size_t size){ asm volatile( "cld\n\t" "rep\n\t" "stosb\n\t" ::"a"(__c),"D"(__s),"c"(size) :"memory"); return ...
2021-11-24 23:13:28 1381 1
原创 MCS-51指令系统
数据传送指令一: 内部数据传送指令内部数据传送指令的源操作数和目的操作数都在单片机内部, 一般格式如下:MOV 目的操作数, 源操作数 ;目的操作数<-源操作数,源操作数不变(相当于COPY)1,立即寻址型传送指令(1)MOV A,#data ;(A)<-data(2)MOV Rn,#data ;(Rn)<-data(3)MOV @Ri,#data ;((Ri))<-data(4)MOV dir...
2021-11-21 19:18:27 3167
原创 C语言求不同类型数据位图中1的个数
考虑到C语言不支持重载,使用宏函数的方式实现:支持求不同数据类型的位图#include <stdio.h>// 方法一:求取位图中1的个数#define GET_BITMAP_1_NUM_1(bitmap) ({\ typeof(bitmap) _bitmap = (bitmap);\ int count = 0;\ for(;_bitmap != 0;){\ if(_bitmap & 1) ++count...
2021-11-14 10:52:32 1771
原创 C语言中不同类型算术运算隐式转换规则验证
理论参考:(转载)C语言中算术运算的隐式类型转换规则 - robotke1 - 博客园/* C语言不同数据类型做算术运算类型隐含自动类型转换规则** char,short -> int -> unsigned int -> long -> double <- float** LL(long long ) UL(unsigned long) L(long) UI(unsigned int) I(int)** US(unsigned short) S(short) UC(
2021-11-13 19:10:08 556
转载 C++ String类常用方法总结
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字符操作:const char &operator[](int n)const;cons...
2021-10-31 10:18:15 1020
原创 Linux C程序 dump trace
#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <execinfo.h>#include <sys/types.h>#include <unistd.h>#include <assert.h>#define MaxPrintDumpTraceLines 20void dump_trace(int signal){ ...
2021-10-10 17:31:25 771
原创 C语言:*(p++)与*p++ *(++p)与*++p ++*p与++(*p) (*p)++的区别
分析方法:后缀运算符++优先级高于前缀运算符++和*,后缀运算符++结合规律从左至右(即先返回值再自增),前缀运算符++和*的优先级相同,结合规律自右至左。举例如下:#include <stdio.h>int main(int argc, char *argv[]){ int arrayA[4] = {4, 3, 2, 1}; int *p1 = NULL, *p2=NULL; /* 1: *(p++)与*p++相同 */...
2021-09-25 17:52:42 2811
原创 计算机大端小端字节序理解(网络字节序)
大小端定义:大端存储模式:是指数据的低字节保存在内存的高地址中,而数据的高字节保存在内存的低地址中小端存储模式:是指数据的低字节保存在内存的低地址中,而数据的高字节保存在内存的高地址中举例:已知本机是小端存储模式,如下定义及赋值语句:union{unsigned int u32;unsigned short u16[2];unsigned char u8[4];}endianOrder;// htonl是将int型整数字节序由主机...
2021-09-25 16:27:15 815
原创 【C语言】十进制,十六进制,浮点数转换成字符串,实现printf函数(串口打印)
十进制转换成字符串,十六进制转换字符串,浮点数转换字符串,可应用于支持串口打印的单片机调试打印
2021-09-17 22:53:05 1407
原创 Linux下将进程/线程绑定到指定CPU核运行
如何查看Linux核数$ 总核数 = 物理CPU个数 X 每颗物理CPU的核数$ 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数$ 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l$ 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq$ 查看逻辑CPU的个数cat /proc/cpuinfo| gr
2021-09-15 22:25:42 6458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人