- 博客(32)
- 收藏
- 关注
原创 c++-引用
引用是C++中一种强大的机制,能够简化代码、提高安全性,并在性能优化中发挥重要作用。理解引用的本质和应用场景,能够帮助您写出更高效、更安全的代码。
2025-03-29 09:49:41
258
原创 c++-堆区内存管理new和delete运算符
通过以上总结,可以全面理解堆区内存管理的机制及其现代C++实践中的优化方法。是运算符,支持构造/析构函数的自动调用,适用于对象生命周期管理。资源获取即初始化,通过对象的生命周期管理资源(如智能指针)。是库函数,仅分配内存,不处理对象构造。C++需兼容C代码,且C程序只能用。:推荐使用智能指针和容器(如。计算长度(需手动记录)。:分配10字节内存,写入。失败时抛出异常(可用。
2025-03-29 09:30:48
459
原创 c++-函数增强
同一作用域内,函数名相同但参数列表不同(参数类型、数量或顺序不同)。依赖C++的name mangling机制,通过参数列表区分同名函数。是性能优化手段,需权衡代码体积与执行效率,优先替代宏函数以提高安全性。:C语言不支持函数重载,因无name mangling机制。:支持函数重载,确保链接时能区分同名不同参的函数。:消除函数调用开销,将函数体直接插入调用位置。)进一步扩展了内联的应用场景,支持编译期计算。:短小、频繁调用的函数(如简单数学运算)。:递归函数、包含循环或复杂逻辑的大函数。
2025-03-29 09:24:00
662
原创 c++-命名空间
定义在 全局作用域的名字(在任意类、函数或命名空间外部声明的名字) ,他们是定义在全局命名空间中的。全局变量的作用域是全局的,可以在程序的任何地方被访问,包括在不同的函数中。在C++中提供了命名空间的机制来解决同名符号冲突的问题,一个命名空间就是一个作用域,在不同的命名空间中命名相同的符号代表不同的实体。在C语言编程的时候,如果出现了同名的全局变量和同名的函数就会编译出错 ,虽然他们在不同的文件中,但是由于同名,编译的时候就会报错。未命名的命名空间与其他命名空间不同, 未命名的命名空间定义的成员,
2025-03-27 09:20:01
401
原创 初始化c++
C++全名为 C Plus Plus ,1982年,美国AT&T公司贝尔实验室的Bjarne Stroustrup[本贾尼·斯特劳斯特卢普]博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++,而Bjarne Stroustrup博士被尊称为C++语言之父。C++语言 完全兼容C语言 ,并且在 C语言的基础上,扩充了一些语法 ,从而更方便进行软件开发。C++是C语言的加强,是以C语言为基础,并完全兼容C语言的特性。
2025-03-27 08:51:26
155
原创 TCP协议
三次握手,本意指TCP/IP协议栈中,要求TCP协议提供可靠的连接服务。我们需要建立可靠的、稳定的连接的时候,我们就需要使用三次握手。它的实质是指建立一个TCP连接的时候,客户端和服务端需要发送3个数据包。·MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议。·四次挥手,当用户想要断开连接的时候,需要发送四次数据包,才会中断连接。TCP协议建立的是一种点到点的,一对一的可靠连接协议。·适合于对传输质量要求较高,以及传输大量数据的通信。·在需要可靠数据传输的场合,通常使用TCP协议。
2025-03-11 16:57:05
238
原创 TCP-IP协议通信模型
TCP/IP协议即传输控制协议/互联网协议,也被称为网络通讯协议。它包含了一系列构成互联网基础的网络协议,是Internet的核心协议。
2025-03-11 16:43:10
168
原创 网关、子网掩码和DNS服务器
前面说计算机进行通讯的时候,都是通过IP地址,这里的英文字母是什么东西?在我们的实际生活中,如果通过点分十进制的 IP 地址来进行通信,十分不方便,尤其是在大规模的网络环境中,很容易记混淆。因此,就有了DNS 服务器, 它是把我们便于理解的域名转化成相应的IP地址。它的作用就是解析域名。子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽 IP 地址的一部分 以区分网络标识和主机标识;顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”,也就是。
2025-03-06 15:41:49
223
原创 IP-地址
在IP地址192.168.1.10中,如果子网掩码是255.255.255.0,那么网络号是192.168.1.0。:在网络通信中,网络号用于将互联网上的主机分配到不同的网络中,避免地址冲突,确保数据包能够正确地传输到目标网络。:网络号是IP地址中用于标识设备所属网络的那一部分。:主机号是IP地址中用于区分同一网络中不同设备的那一部分,就像家庭住址中的门牌号,用于标识网络中的具体设备。:在同一网络中,主机号用于唯一标识一台计算机或设备,使得网络中的设备能够相互识别和通信。网络号(Network I有。
2025-03-06 15:29:38
512
原创 网络历史概述
1958年,美国设立DARPA以防止技术落后,推动军事设备互联,实现资源共享与分散指挥,以防止单一指挥中心被摧毁导致全国军事瘫痪。1968年,DARPA提出建立ARPA网,使用NCP协议,但该协议不支持不同类型计算机间的通信且无纠错功能。:为解决TCP协议因强调可靠性而导致的延迟问题,引入UDP协议,适用于实时性要求高、可靠性要求相对低的通信场景。:1974年,TCP协议分为TCP和IP两部分,前者负责差错检测与处理,后者负责网络互联。随着历史的发展,NCP协议逐渐被废除,形成了TCP/IP协议。
2025-03-06 15:16:20
315
原创 IIC重难点-2
模块时钟:这是I2C的功能时钟。根据系统时钟和SCL周期的相对频率,在将调用地址写入数据寄存器(I2C_I2DR)后,可能需要等到I2C不忙,然后再将数据加载到数据寄存器(I2C_I2DR)中。如果多个设备同时请求总线,总线时钟由一个同步过程确定,其中低周期等于设备中最长的时钟低周期,高周期等于最短的时钟低周期。在数据传输之后,如果主站仍然需要总线,它可以发出另一个启动信号,后面跟着另一个从站地址,而不用发出停止信号。3. 设置I2C使能位(I2C_I2CR[IEN]),使能I2C总线接口系统。
2025-02-04 10:25:37
1549
原创 IIC重难点-1
总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于的芯片之间的通信;I2C总线有两根双向的信号线,一根数据线用于收发数据,一根时钟线SCL用于通信双方时钟的同步;I2C总线硬件结构简单,简化了PCB布线,降低了系统成本,提高了系统可靠性,因此在各个领域得到了广泛应用。I2C总线是一种多主机总线,连接在 I2C总线上的器件分为主机和从机。主机有权发起和结束一次通信,从机只能被动呼叫;当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误产生;
2025-02-04 09:54:29
889
原创 实际时钟(RTC)的介绍
SNVS_HP/SNVSReal-TimeCounterLSBRegister(SNVS_HPRTCLR/SNVS_LPSRTCLR):计数器低17位。·SNVS_HP/SNVS_LPControlRegister (SNVS_HPCR/SNVS_LPCR):控制寄存器。·SNVS_HP/SNVS_LPStatusregister (SNVS_HPSR/SNVS_LPSR):状态寄存器。·SNVS_HPCommandRegister (SNVS_HPCOMR):允许非特权软件访问所有SNVS寄存器。
2025-02-04 09:30:21
527
原创 看门狗(WDOG)
看门狗(WatchDog)是一种硬件模块,用于防止程序跑飞。正常情况下,程序会定时喂狗;若程序跑飞,则无法继续喂狗,导致超时并触发CPU复位,使程序重新启动。I.MX6ull的看门狗定时器(WDOG)提供一种机制来防止系统因意外事件或编程错误而故障。一旦激活,WDOG必须由软件定期服务,否则计时器超时后将触发内部系统复位信号(WDOG_RESET_B_DEB),发送给系统复位控制器(SRC)。
2025-02-03 18:36:34
856
原创 ADC 概述
最终时钟从IPG时钟(重置后的默认选择)、IPG时钟/2(对于更高的IPG时钟速率,这允许最大使用ADIV位除以IPG时钟的16)和ADACK中选择(该时钟由ADC模块内的时钟源生成。·应用:将现实世界的模拟值(如温度、速度、亮度等)转换为数字值(1和0)。- 比较函数配置为检查结果是否小于、大于或等于单个比较值,或在由两个比较值确定的范围内或之外。- 禁用状态:复位或停止模式下,未选择内部时钟作为时钟源时,ADC模块禁用。- 闲置状态:转换完成且未启动新转换时,模块处于空闲状态,最低功率状态。
2025-02-03 18:13:16
834
原创 I-Wire单总线通信
因此,主控机必须在发出读取暂存器[BEh]或读取电源[B4h]命令后立即生成读取时间槽,以便DS18B20能够提供所请求的数据。此外,主控机可以在发出转换T[44h]或召回E2[B8h]命令后生成读取时间槽,以找出操作的状态,如DS18B20功能命令部分所述。·要生成一个Write 1时间槽,在将1-Wire总线拉低之后,总线主控器必须在15微秒内释放1-Wire总线。·要生成一个Write 0时间槽,在将1-Wire总线拉低之后,总线主控器必须在整个时间槽内(至少60微秒)继续将总线保持在低电平状态。
2025-02-03 17:45:11
890
原创 LCD屏控制之理论篇
所谓的色差信号,也就是我们常说的分量信号(Y、Cr:R-Y、Cb:B-Y)。三种常见采样方式:YUV4:4:4、YUV4:2:2、YUV4:2:0,分别对应不同的Y、U、V分量采样比例。包括单路6位、单路8位、双路6位、双路8位LVDS。·单通道6bit、8bit及双通道6bit、8bit接口,分别有18、24、36、48条RGB数据线。按接口类型:RGB模式、SPI模式、MDDI模式、VSYNC模式、DSI模式、MCU模式。·标准为Intel 8080总线,信号线包括CS、RS、RD、WR、RESET。
2025-01-16 21:14:15
866
原创 Camera控制之理论篇
PWDN:camera的使能管脚,有两种配置方式,一种为standby,一种为normal work,当设置为standby时,一切对于camea的操作都是无效的 ,包括复位,所以一定要将PWDN管脚设置为normal模式,否则RESET无效。光线充足或较强时,要适当减少曝光时间,防止曝光过度,图像发白。4.1.3 注意点:XCLK(MCLK)是由SOC提供给摄像头到工作时钟,从而使摄像头工作, PCLK是摄像头自己产生的时钟信号,通过 摄像头sensor的内部,PLL电路可以产生不同频率的PCLK。
2025-01-16 21:03:46
889
原创 linux的进程
尽管单个处理器在任意时刻只能执行一个任务,但通过这种机制,可以实现多线程程序的并发执行,即操作系统轮流为每个线程分配短暂的运行时间。进程可以被看作是程序的运行过程。2. 动态性:进程的生命周期是动态的,它从创建到结束的过程中,会经历不同的状态,如运行、就绪、阻塞等。1.独立性:进程是独立运行的,拥有自己的地址空间,进程间的信息需要通过特定的机制(如进程间通信)来交换。程序是静态的,它是保存在磁盘上的指令的有序集合,没有任何执行的概念。5. 有序性:进程的执行是有序的,它按照程序的指令顺序执行。
2024-10-01 09:03:13
947
1
原创 指针与数组
通俗易懂的意思是第一组元素的首元素的地址&scores[0][0]的意思是在整个数组中整个数组的取第一组元素再取第一组元素首元素的地址。arr表示的是整个数组的第一个元素的地址,arr+i 表示的是第i个元素的地址 通过移动整数,来达到访问数组元素的地址的目的。&arr表示的是整个数组,打印地址结果为首元素的地址 &arr+i表示整个数组偏移多少,是为整个数组的偏移,而不是内容的偏移。找类型的办法:去掉变量名,例如以下int为类型 *p 为中 p存储a地址的变量 *p取p中储存的内容。
2024-07-18 14:16:51
408
原创 数组的介绍
动态数组(使用malloc在堆上分配的数组)的大小可以在运行时确定,但需要手动管理内存。)只会复制指针,而不是数组的内容。但是,数组作为参数传递给函数时会退化为指针,因此需要额外的参数来指示数组的大小。为了在函数内部使用数组的特性,需要传递数组的大小作为额外的参数。:数组作为函数参数时,由于数组退化为指针,函数内部无法知道数组的大小。:如果数组是结构体的成员,那么整个结构体的大小将包括数组的大小,这可能影响内存对齐和打包。:在设计数组操作的代码时,保持代码的可读性和可维护性,例如使用有意义的变量名和注释。
2024-06-18 16:36:16
1855
原创 goto语句
在C语言中,`goto` 语句是一种无条件跳转语句,它允许程序的控制流跳转到程序中预先定义的标签位置。使用 `goto` 语句可以在程序中实现复杂的跳转逻辑,但过度使用或不当使用 `goto` 语句会使代码难以理解和维护。在这个例子中,`goto` 语句使得程序循环打印变量 `i` 的值,直到 `i` 达到5。每次循环结束时,`goto` 语句将控制流跳转回 `start` 标签处,重新开始循环。其中,`标签名` 是一个在程序中定义的标签,通常位于 `goto` 语句将要跳转到的位置。
2024-06-09 13:40:28
264
原创 三大循环语句以及终止循环
while循环的循环过程`while`循环是C语言中的一种基本循环结构,用于在满足某个条件时重复执行一段代码块。循环的基本语法如下:这里的“条件表达式”是一个逻辑表达式,当其结果为真(非零)时,循环体内的代码块会被执行。一旦条件表达式的结果为假(零),循环就会终止。特点:1. “先判断后执行”:`while`循环首先检查条件表达式,如果条件为真,则执行循环体内的代码块,然后再次检查条件,如此反复,直到条件为假。
2024-06-07 18:51:20
1652
原创 变量中的数据类型
变量(在实际编程和生活中,某些数据并不是一成不变的,而是根据实际需求,可以时时变化的,这样变量孕育而生,数据可以变化的量,我们叫做变量,本质是系统在内存中申请一块空间,根据用户需求,随时改变数据)在C语言中,声明变量的格式。
2024-05-25 14:56:24
329
原创 对于进制的初步认识及联系
1.概念,我们把进制也叫作进位,使人们规定的一种进位方式,我们可以用有限的数字符号来表示所有的数值,可使用的数字字符我们称为基数,基数为n,则n进制,数制中某一位的1所表示数值的大小我们称为位权。除基取余法:用我们的十进制数除去我们的目标基数,第一次相除所得余数为目的数的最低位,将所得商再次除以基数,反复执行上述过程,知道商为零,所得余数为目标数的最高位。十进制的小数转换为二进制,用的是乘二取整法(要求精度,小数点后五位)方法:将对应进制的数按位权展开为多项式,求十进制的和。可用的数字符号:0~9。
2024-05-23 21:32:51
349
原创 c语言的常量,打印常数
s 输出字符串 printf("%s come,%s","spring","good good study");printf 格式化输出(“字符串+格式控制串”,参数1、参数2、参数3......)例 “hello”=‘h’+‘e’+‘l’+‘l’+‘o’+‘\0’(当做一个字符)字符串常量都是以“”引起来,等价于多个字符的结合+‘\0’在c语言中,一个字母可以称为一个字符,字符使用单引号引起。‘\0’这叫做字符串结尾标识,字符串都会有,占有六个字节。
2024-05-22 17:42:01
425
原创 vim和gcc的使用
末行模式:代码书写完成后,按下esc,则退出插入模式,再按下"shift+:",末行模式可以执行末行命令。编辑模式:按下“i”,在终端左下角会出现叫做“insert”的关键字,进入插入模式,可以书写代码。第二种办法:自己命名的可执行文件 -o=自己命名 输出自己命名。安装Vim: sudo apt install(安装) vim。先使用sudo vim /etc/vim/vimrc。说明如果文件存在则直接打开,若不存在,创建新文件。vim编缉器 书写代码的工具。3.vim的三种模式。
2024-05-21 16:46:49
512
原创 对于linux系统的基础学习
rm 默认删除文件夹,加上指定修饰符后,可删除文件夹(无法直接删除目录,若要删除目录,需添加一个参数,例后填-rf强制删除,rm -rf+文件名=强制删除该文件)一个界面另外打开终端Ctrl+Shift+t。/etc 存放系统管理和配置文件的目录(root用户可以修改)/dev 存放特殊文件目录,如声卡文件,磁盘目录,外设目录等。cd 切换目录 绝对路径:以/为起点,遍历到子目录。1.基本使用-打开一个新的终端Ctrl+Alt+t。/home用户家目录的基点目录---可以修改。
2024-05-20 21:38:39
219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人