自定义博客皮肤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)
  • 收藏
  • 关注

原创 C语言总结

结构体(struct)独立存储:每个成员有自己的存储空间。同时存储:可以同时存储所有成员的值。大小:所有成员大小之和,可能包含填充和对齐。共用体(union)共享存储:所有成员共享同一块内存空间。单一存储:任意时刻只能存储一个成员的值。大小:最大成员的大小。int p;//这是一个普通的整型变量int *p;//首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针int p[3];

2024-07-13 18:14:49 513

原创 常见排序算法

不能!!!考虑这样一种情况,如果去掉等号,right在找小的过程中,遇到了和key相等的值就会停下。而left在找大的过程恰好也停在和key相等的位置,left和right交换,进行下一轮循环,right和left在原地又会进行交换,如此就陷入了死循环……

2024-07-11 22:59:11 853

原创 逻辑操作和按位操作下的与或非

以下是每个操作的“人话”总结:解释逻辑与(&&)、逻辑或(||)、逻辑非(!)以及按位与(&)、按位或(|)、按位非(~)操作。

2024-07-11 09:27:32 663

原创 linux总结3 网络编程

TCP是基于双方确认连接后再通信的传输协议(稳定),UDP是不基于连接的,直接通信的传输协议(较不稳定,但效率高,所以普及比TCP协议广泛)。创建套接字,绑定服务器的ip和端口,进入监听模式,等待客户端连接获取客户端网络套接字,创建子进程和客户端通信,设定通信结束条件调用exit(0)让子进程退出。递给司机,司机将包裹送至邮局,邮局里面的分拣员将来自世界各地的包裹分类,把不同地区的包裹错开,接着包装工人将不同地区的包裹打包,但是传输的过程中,有可能数据会丢失,一旦丢失,TCP也会继续重发。

2024-07-10 22:06:46 651

原创 linux整合1(文件打开和进程)

磁盘中生成的a.out文件,就叫做:程序进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程程序是静态的概念,进程是动态的概念在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。进程是程序真正运行的实例,若干进程可能与同一个程序相关,且每个进程皆可以同步或异步的方式独立运行。进程是正在运行的程序的实例。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

2024-07-10 21:19:40 463

原创 char *argv[]解析

是每个C程序的入口点,即主函数。并且您在命令行中输入: ./my_program arg1 arg2 arg3。argv[0] = "./my_program" // 程序的名称。是一个指向字符串的指针数组,每个字符串都是一个命令行参数。是一个指向字符串的指针数组,每个字符串都是一个命令行参数。argv[4] = NULL // 数组的末尾是空指针。argv[1] = "arg1" // 第一个参数。argv[2] = "arg2" // 第二个参数。argv[3] = "arg3" // 第三个参数。

2024-07-10 20:26:35 106

原创 堆、栈和队列(数据结构)

堆:用于实现优先队列和动态数据结构,操作复杂,适用于需要优先级排序的场景。队列:用于实现先进先出(FIFO)的数据结构,操作简单,适用于需要顺序处理的场景。栈:用于实现后进先出(LIFO)的数据结构,操作简单,适用于需要后入先出的场景。每种数据结构都有其特定的应用场景和优势。在实际编程中,选择合适的数据结构可以大大提高程序的效率和性能。堆上的内存需要程序员手动管理,容易发生内存泄漏。为了避免内存泄漏,程序员应该在不再需要动态分配的内存时,使用free()函数将其释放。

2024-07-10 19:23:28 898

原创 内存里面的堆和栈

栈和堆都是内存中的数据结构,但它们在内存中的实现和用途有所不同。栈通常用于存储函数调用相关的数据,而堆则用于存储动态分配的数据。栈的大小固定,由编译器或操作系统管理;而堆的大小可以根据需要动态变化,由程序员手动管理。正确地使用栈和堆可以提高程序的性能和内存使用效率。

2024-07-10 19:13:37 124

原创 c51总结

定时器的本质原理定时器的本质原理: 每经过一个机器周期,就加1 :寄存器定时器和计数器,电路一样定时或者计数的本质就是让单片机某个部件数数当定时器用的时候,靠内部震荡电路数数、当计数器用的时候,数外面的信号,读取针脚的数据晶振 时钟周期 机器周期什么是晶振晶振(晶体震荡器),又称数字电路的“心脏”,是各种电子产品里面必不可少的频率元器件。数字电路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。什么是时钟周期时钟周期也称为振荡周期,定义为时钟频率

2024-07-10 15:50:11 769

原创 推挽输出和开漏输出

VDD和I/O引脚联通输出高电平,电流形成,小灯亮起,VSS联通I/O口,输出低电平,不亮,推挽输出具有移动电压和电流驱动能力,可以直接驱动一些元器件进行工作,但是更高或者更低电压需要用开漏输出。给他一个高电平,电流变成一个高电平,给他一个低电平,他就变成0,可以真正能真正的输出高电平和低电平。开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动 i2ic。如果连接N-MOS的话,那就引入外部小灯5v电压让他正常亮,如果不需要那就断开N-MOS。

2024-07-06 16:48:02 240

原创 链表的理解

ListNode链表函数通常是指一组用于操作链表的函数,包括但不限于创建节点、添加节点、删除节点、搜索节点、打印链表等。以下是一些基本的链表操作函数的示例,使用C语言实现:1. 定义链表节点结构体int data;// 节点存储的数据// 指向链表中下一个节点的指针} ListNode;​2. 创建新节点的函数= NULL) {​3. 向链表末尾添加新节点的函数} else {= NULL) {​4. 打印链表的函数= NULL) {​。

2024-07-04 10:24:50 731

原创 Makefile

$(CC)`代表之前定义的编译器变量`CC`,`$^`代表所有的依赖项(这里是`main.o`和`hello.o`),`-o $@`指定了输出文件的名称,其中`$@`代表规则中定义的目标(这里是`hello`)。- 这是一个规则,定义了名为`hello`的目标和它的依赖项`main.o`与`hello.o`。- `CFLAGS`变量被定义为包含编译选项`-Wall`和`-g`。- 这是清理规则的命令部分,使用`rm`命令来强制删除(`-f`)名为`hello`的可执行文件和所有`.o`文件。

2024-07-03 07:53:41 634

原创 Sqlite

定义一个。

2024-07-02 17:13:51 656

原创 udev和Linux热拔插机制使用udev实现守护进程

udev是一个在Linux操作系统中使用的守护进程,它专门负责管理设备节点。就像一个智能的管家,当电脑启动或者你插入一个新设备(比如U盘、鼠标、打印机等)时,udev会立刻识别这些设备,并为它们分配合适的资源和权限。自动识别:udev能够自动识别连接到计算机的设备,就像你一进家门,管家就能认出你来。分配设备节点:在Linux系统中,每个硬件设备都通过一个设备节点来表示。udev会为每个设备创建或修改设备节点,这就像是给每个设备在系统中分配一个房间。设置权限。

2024-07-02 16:21:21 410

原创 UART协议帧

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,一般来说,UART总是和RS232成对出现,那RS232又是什么呢?RS232也就是我们计算机上的串口,它被广泛用于计算机串行接口外设连接。

2024-07-02 14:48:47 689

原创 I2C协议

I2C(Inter-Integrated Circuit)协议是一种串行通信协议,它允许多个设备通过两条线(数据线SDA和时钟线SCL)进行通信,是一种通用的总线协议。它是由Philips(飞利浦)公司,现NXP(恩智浦)半导体开发的一种简单的双向两线制总线协议标准。有些电子器件他们有着不同的功能,有时需要快速的进行数据的交互,为了使用最简单的方式使这些芯片互联互通,于是I2C诞生了I2C 总线,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。

2024-07-02 11:44:37 754

原创 函数指针和指针函数

想象一下,函数指针就像是一个遥控器,它不是用来直接播放电视,而是可以指向不同的电视(函数),然后通过遥控器(函数指针)来控制这些电视(调用函数)。:声明一个函数指针,就像是制作一个通用的遥控器,这个遥控器可以控制任何电视,只要我们知道电视的型号(函数的返回类型和参数)。:声明一个指针函数,就像是设计一个电视功能,这个功能不是播放节目,而是给你一个可以控制其他设备的遥控器(返回一个指针)。是一个函数,它的返回值是一个指针,(是电视的一个特殊功能,这个功能给你一个遥控器(指针)。,表示该函数返回一个指针。

2024-07-02 11:22:24 355

原创 新安装的Ubuntu使用su命令显示密码错误

新安装的Ubuntu默认root用户是没有密码的,因此输入什么都是错的,在解决该问题前,首先要明白su和sudo命令的区别,之后再设定root用户的密码su 和 sudo的区别su是切换root用户,后续的所有命令都是以root权限运行,直到退出root用户;sudo是将登录用户切到root用户,但只对本命令有效,后续的所有命令还是使用登录用户的权限,并非root权限su输入的密码是root的密码;sudo输入的密码是登录用户的密码。

2024-06-30 16:10:39 294

原创 TCP和UDP

TCP(传输控制协议)和UDP(用户数据报协议)是互联网上用于数据传输的两种重要协议,它们都运行于传输层,并提供了不同的数据传输方法和特性。

2024-06-30 16:10:07 220

原创 什么是Socket

Socket(套接字)是计算机网络中的一个抽象层,它允许应用程序通过网络进行通信。套接字用于跨网络的不同主机上的应用程序之间的数据交换。在互联网中,套接字通常基于 TCP(传输控制协议)或 UDP(用户数据报协议)来实现数据的可靠传输或快速传输。它是一组用于网络通信的API,包括了一系列的函数和数据结构,它提供了一种标准的网络编程接口,使得应用程序可以在网络中进行数据传输。Socket本身并不是一个具体的实现,而是一个抽象的概念。不同的操作系统和编程语言可以通过不同的方式来实现Socket API。

2024-06-30 16:09:06 897

空空如也

空空如也

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

TA关注的人

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