自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JJJ:结构体定义中常加的后缀:attribute ((packed))

在GCC下:struct my{ char ch;: 的作用就是告诉编译器取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关。在GCC下:struct my{ char ch;

2024-08-22 10:03:00 239

原创 JJJ:linux 内核 hlist 数据结构分析

linux 内核 hlist 数据结构分析

2024-08-19 16:35:20 287

原创 JJJ:urb的complete回调流程

1次urb的完成,意味着1次控制传输的完成,可能就是(令牌,data,握手)的3个阶段的完成。块传输和控制传输:process_bulk_intr_td -> finish_td。控制传输:process_ctrl_td -> finish_td。等时传输:process_isoc_td -> finish_td。

2024-08-06 13:52:24 423

原创 JJJ:base64编码和字节字符串&普通字符串

在 URL 或文件名中使用 Base64 编码时,通常会使用 URL 和文件名安全的 Base64 编码,其中 “+” 和 “/” 字符被替换成 “-” 和 “_”,并且不使用填充字符 “=”。Base64 编码使用一组64个字符(A-Z,a-z,0-9,+ 和 /,有时最后一字符用 “=” 替换填充空白)来表示二进制数据。前缀的使用是为了明确指出字符串是以字节的形式存在,而非 Unicode 字符,这对于处理二进制数据或在网络层面上操作数据是非常重要的。在需要将字节字符串转换回普通字符串时,可以使用。

2024-07-09 11:26:15 568

原创 git制作patch

详解如何使用git 生成patch 和打入patch

2024-06-21 10:33:34 116

原创 JJJ:rcS脚本是如何被执行到的

parse_inittab 里面会调用 new_init_action(SYSINIT, INIT_SCRIPT, “”),决定了接下去初始化的脚本是INIT_SCRIPT所定义的值。在init_main()函数中会调用parse_inittab(void)函数,parse_inittab(void)函数可以使用一些默认的配置,当/etc/inittab没有配置时。kernel_init执行"/sbin/init",在此程序中,会执行到busybox的init进程入口,init_main.

2024-06-04 20:22:33 355 1

原创 JJJ:linux spi总结

在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,数据的传输是在时钟信号的上升或下降沿进行采样的。在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,时钟信号在传输开始前需要有一个确定的起始状态,时钟极性就是用来指定这个起始状态的电平状态。模式0表示时钟空闲状态为低电平,数据在时钟的下降沿采样,上升沿发送。模式2表示时钟空闲状态为高电平,数据在时钟的下降沿采样,上升沿发送。模式3表示时钟空闲状态为高电平,数据在时钟的上升沿采样,下降沿发送。/ 若采用了这个宏,时钟状态空闲时为高电平。

2024-05-20 21:19:00 255

原创 MSB LSB

例如,在8位二进制数01010101中,MSB为0,LSB为1。LSB则表示二进制数的最低位。MSB表示二进制数的最高位。

2024-05-20 21:11:09 138

原创 JJJ:WARN,WARN_ON,BUG_ON

当满足一些条件时,该函数会输出一条带有调试信息的警告消息,并打印出相应的调用栈信息,以便于开发人员进行调试。不要过度使用,否则会造成系统性能下降。在生产环境中,应该关闭大部分的内核调试功能。

2024-05-20 21:09:32 335

原创 JJJ:ubuntu修改静态ip

网关一般放置在网络边缘,与不同网络相连。网关会对数据包进行协议格式的解析,然后再构建适合目的网络的协议格式,发送到目的网络中。网关需要具备转换不同协议格式的能力,支持数据缓存、分组、组装、再传输等功能,以保证数据的快速、稳定传输。它可以将一个网络的协议格式转换为另一个网络可识别的协议格式,实现不同网络之间的数据传输。转换网关:是一种将不同网络协议进行转换的网关,其主要作用是将数据包格式转换为目标网络可以识别的格式。应用网关:主要用于应用层协议转换,实现HTTP、SMTP、FTP等应用协议之间的转换。

2024-05-20 09:21:35 247

原创 JJJ:给一个shell指令起别名,如让vi指向vim

这个只是一次性(在mobaxterm中的一个窗口中执行,在另一个窗口不会生效),

2024-05-16 20:50:51 116

原创 ddr测试&sd卡读写速度测试

注意/dev/zero不产生io,作为读或者写中的一方,可以用来测试纯写或者纯读的速度。time指令可以用来测试其后接指令的执行时间,细节。2、sd卡读速度和写速度测试。

2024-05-16 18:47:33 836

原创 JJJ:桥接转发的代码是如何在接收流程中完成转发的

【代码】JJJ:桥接转发的代码是如何在接收流程中完成转发的。

2024-04-13 11:55:58 134

原创 JJJ:netdev_run_todo

由unregister_netdev->rtnl_unlock触发。

2024-04-10 01:36:33 282

原创 JJJ:unregister_netdev

【代码】JJJ:unregister_netdev。

2024-04-09 00:34:15 122

原创 JJJ:rtmsg_ininfo解析

【代码】JJJ:rtmsg_ininfo解析。

2024-04-08 21:19:22 134

原创 JJJ:net_device分配:alloc_netdev

【代码】JJJ:net_device分配:alloc_netdev。

2024-04-06 21:31:54 115

原创 JJJ:网络子系统的软中断

find_task_by_pid_ns用于查找指定命名空间(namespace)下具有指定进程ID(pid)的任务(即进程)结构体。kthreadd_task 是指向内核线程 kthreadd 的进程描述符(task_struct 结构体实例)的一个全局变量。

2024-04-05 12:41:02 582

原创 JJJ:linux共享中断

内核接收一个中断后,它将依次调用在该中断线上注册的每一个处理程序。如果与它相关的设备并没有产生中断,那么处理程序应该立即退出。这需要硬件设备提供状态寄存器(或类似机制),以便中断处理程序进行检查。只要有任何一个设备没有按规则进行共享,那么中断线就无法共享了。多个设备共享一个中断号,共享同一中断的各个中断设备的中断处理程序形成一个链表,内核对每个中断处理程序都要执行(有产生中断的设备本该靠边站的,它的中断处理程序也被执行了)。2、该线上的所有已注册处理程序都指定了SA_SHIRQ。1、中断线当前未被注册。

2024-04-01 21:10:20 177

原创 JJJ:linux系统中第一个进程

ramdisk_execute_command 变量的值可以通过内核启动参数 rdinit 来设置。在Linux内核引导过程中,如果用户在命令行参数或GRUB等 bootloader配置中指定了类似 rdinit=/path/to/executable 的参数,内核在初始化initrd之后会尝试执行位于指定路径的可执行文件作为初始化脚本或进程。上面代码片中的两个变量:ramdisk_execute_command 和 execute_command。可以看到第一个进程PID为1,拉起第一个进程的指令为。

2024-03-31 22:03:56 237

原创 JJJ:vim操作实用小技巧

用space替代tab的输入,在Makefile中不能用空格代替Tab(就是不能设置这个选项)高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。移动光标(j 或 k)选中需要注释的行的开头;把当前窗口差异行复制到对端窗口差异行。符号注释,则取消注释时需进行两遍操作。在搜索时,输入的词句的逐字符高亮。把对端窗口差异行复制到当前窗口行。尽量折叠,尽量显示差异部分。启动鼠标操作见骚操作第一个。设定tab宽度为4个字符。,转换成16进制模式看。,然后输入注释符,如。选择要删除的注释符;

2024-03-30 23:49:17 220

原创 JJJ:改善ubuntu网速慢的方法

从列表可知,有很多国内的下载源供我们选择,这里我们以阿里源 mirrors.aliyun.com 为例,们可以将 Ubuntu 系统的软件下载源更改为国内软件源,譬如阿里源、中科大源、清华源等等,Ubuntu 系统默认的软件下载源由于服务器的原因, 在国内的下载速度往往比较慢,这时我。下载速度相比 Ubuntu 官方软件源会快很多!当然也可以选择其它下载源。

2024-03-19 21:36:46 548

原创 /proc目录下助于调试相关的文件

在内核2.4.29版本以前,此文件的内容为系统当前挂载的所有文件系统,在2.4.19以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向/proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接;与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。具有一些独特的特点。

2024-03-04 20:58:56 893

原创 案例需求:多人聊天室

【代码】案例需求:多人聊天室。

2024-01-21 21:45:44 434

原创 第十章2 三方模块 实战

注意系列解包赋值,对以逗号要求输入,可以先以变量存放,然后调用字符串的split方法分割。

2024-01-18 11:04:40 419

原创 第13章 2 进程和线程

当程序中出现了明确的两类任务,一个任务负责生产数据,另一个任务负责处理生产的数据时,就可以使用该模式。多个线程在同一个进程中运行,多个线程共享这个进程中的全局变量。Python内置模块queue中的Queue类。是线程模型中的经典问题,与编程语言无关。采用Lock锁对象去解决这类问题。上锁:acquire()方法。解锁:release()方法。

2024-01-17 10:02:12 455

原创 第13章 1 进程和线程

进程是运行态的程序。

2024-01-15 20:55:03 604

原创 弟12章 网络编程

ipv4:十进制点分制ipv6:十六进制冒号分隔。

2024-01-13 22:22:25 648

原创 第11章 2 文件和io操作 +

open操作若不指定打开模式,默认打开模式是。文本打开时,是按照字符串。

2024-01-12 23:53:00 371

原创 第11章 1 文件及IO操作

什么是文件?存储在计算机的存储设备中的一组数据序列就是文件不同类型的文件通过后缀名进行区分文本文件:编码格式不同,所占磁盘空间的字节数不同(比如北京你好,用gbk编码是8个字节,utf-8则需要编码为12个字节)二进制文件:没有统一的编码,文件直接由0或1组成,需要指定的软件才能打开Python操作文件的步骤:1、打开文件变量名=open(filename,mode,encoding)filename:要打开文件的完整路径mode:文件的打开模式:读还是写...

2024-01-12 11:32:35 389

原创 第十章 1 模块及常用的第三方模块

在Python中一个后缀名为.py的文件就是一个模块模块中可以定义函数、类等模块也可以避免函数、类、变量等名称相冲突的问题模块不仅提高了代码的可维护性,同时还提高了代码的可重用性在给模块命名的时候要求全部使用小写字母,多个单词之间使用下划线进行分隔若自定义模块名称和系统内置模块名称相同,那么在导入时会优先考虑导入自定义的模块。(random就是一个系统内置模块,若用户自定义了,那么就会优先使用用户自定义的random模块)模块分为:系统内置模块、自定义模块。

2024-01-10 15:27:16 429

原创 第九章2 面向对象的程序设计

【代码】第九章2 面向对象的程序设计。

2024-01-08 16:45:57 378

原创 第九章 1 面向对象程序设计

两大编程思想=面向过程和对象 p108面向过程:功能上的封装面向对象:属性和行为上的封装面向过程面向对象区别事物比较简单,可以用线性的思维去解决事物比较复杂,使用简单的线性思维无法解决共同点1、面向过程和面向对象都是解决实际问题的一种思维方式 2、二者可以相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统,具体到微观操作,仍然使用面向过程方式来处理自定义类和创建自定义类的对象 p109类是怎么来

2024-01-04 11:15:35 431

原创 # 第八章 2 实战

【代码】# 第八章 2 实战。

2024-01-03 16:30:03 402

原创 第8章 1 函数及常用的内置函数

函数是将一段实现功能的完整代码,使用函数名称进行封装,通过函数名称进行调用。以此达到一次编写,多次调用的目的内置函数:python开发者写好的函数输出函数print()输入函数input()列表定义函数list()自定义函数:程序员根据自己的需求自定义特定功能的函数def 函数名称 (参数列表):函数体[return 返回值列表] # 返回值可以是多个,所以是列表。非必须,没有返回值可以省略函数调用函数名(参数列表)# 函数的定义def get_sum(num): # num是形参。

2023-12-28 17:16:06 386

原创 第7章2 实战

【代码】第7章2 实战。

2023-12-28 16:51:30 425

原创 第7章 1 异常处理

2、进入代码调试窗口:a.点击右上角小虫子 b.shift+f9 c.右键+debug main。raise:抛出一个异常,从而提醒程序出现了异常情况,程序能够正确的处理这些异常情况。下面会生成四个窗口:变量查看窗口、调试控制窗口、线程控制窗口、程序控制窗口。1、设置断点:点击行号,设置断点到对应位置处。字符串形式表示的数字之间也可以比较大小。

2023-12-28 11:32:17 602

原创 第六章2 总结+若干实战题

英文字符和中文字符在Python中都是占一个字符;

2023-12-26 20:01:11 367

原创 第6章1-字符串及正则表达式 p63

字符串是不可变数据类型。

2023-12-24 18:11:54 792

原创 第五章实战

【代码】第五章实战。

2023-12-22 11:31:32 350

空空如也

空空如也

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

TA关注的人

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