自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32CubeIDE中 FLASH溢出报错: region `FLASH‘ overflowed by XXXX bytes

Release编译结果不携带调试信息,Debug携带调试信息所以使用Release编译生成的目标文件会比Debug生成的目标文件小,实测可节省百分之25左右的空间。解决办法:点击锤子图标然后选择Release编译。

2024-04-27 10:28:58 59

原创 【同步&异步可并发日志系统】设计及实现

本项⽬主要实现⼀个⽇志系统,其主要⽀持以下功能:1:可进行日志消息格式的指定2:可划分出多级别的⽇志消息,并可设置那个级别及以上的日志可以输出3:可将⽇志写到控制台、⽂件以及按大小切换的滚动⽂件中(一个日志可输出0到多个目的文件)4:⽀持扩展⽇志写入⽬标地及写入要求 ——— 可拓展性5:⽀持同步写⽇志和异步写⽇志6:同步或异步写日志均⽀持多线程程序并发写⽇志7:拥有全局单列,且设有全局宏函数简化使用难度• CentOS7• vscode/vim• g++/gdb• Makefile• 类的

2023-08-30 09:28:52 548 4

原创 服务器使用UDP通讯127.0.0.1测试成功连接服务器却通讯失败

问题:从上图可以看出使用127.0.0.1本地环回可以成功收发消息,但连接主机公网ip服务端却毫无反应,客户端也接收不到服务端发回的消息。1:左边窗口是模拟服务程序,功能是收到消息后把消息打印出来,并把收到的消息再发回给发送消息的主机。2:右边窗口是模拟客户程序,功能是将输入的消息发送给服务程序的主机,并将接收的消息打印出来。进入服务器控制台,点击添加将UDP添加到允许即可。3:程序均采用的是UDP网络通讯。

2023-07-16 17:23:57 1877 4

原创 【C语言】常用的字符串函数使用 && 模拟实现

在使用下面介绍的库函数时声明以下头文件。

2023-06-27 21:07:40 454 4

原创 【数据存储概念】大端存储&&小端存储

本文采用整形来举列子说明大端存储和小端存储的区别及原理特别注意:大小端模式是指字节序的大小端模式,当一个数据的所占的内存大于一个字节时,就会按照大端或小端顺序存储。数据存放内存中其实存放的是补码。如 int temp = 0x1122 在内存中存储内容如下我们可以看到对于temp存储的是补码,但是我们发现顺序是数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

2023-06-25 10:38:37 1371 14

原创 【C++入门第五期】类和对象(中)

注意:1:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定义类型是调用其拷贝构造函数完成拷贝的。类中如果没有涉及资源申请时,拷贝构造函数是否写都可以;一旦涉及到资源申请时,则拷贝构造函数是一定要写的,否则就是浅拷贝错误原因:1:默认拷贝构造是按字节拷贝,所以c2的_number指向c1的_number的同一地址2:这就会导致析构时同一地址析构两次,从而报错3:在使用时还会出现两者数据相互覆盖,删除等,因为两个不同的对象在操作同一个地址。

2023-06-23 16:37:41 491 18

原创 【详解】篮球记分器硬件及代码

(1)结合硬件能够正常显示分值且能够正常计分(1,2,3)。(2)能够正常修改工作模式(计分与24秒)。(3)能够实现24秒的误差不小于1秒。(4)能够显示两队球员犯规次数计数。(5)半场交换场地后,对应数据的显示也左右交换(4)能控制蜂鸣器及为防止误触后比分不可逆,实现比分及犯规数的减功能

2023-06-17 17:42:38 2922 20

原创 51单片机 | DS18B20 温度传感器实验

1)DS18B20对于数据的读取、检测等方式讲究严格的时序,在编写程序的过程中,需要考虑好相应指令所需的机器周期,以及进行相应的延时操作来读写数据。我再实验过程中尤其是读取DS18B20传输过来的数据时,最开始一直不对,根本原因就是时序延时没有掌握好,掌握好延时和时序后,就能够顺利读取数据。2)在对DS18B20操作时需要,讲究遵守规则,需要先复位,跳过 ROM,才能进行读写,更改初值等操作。在编写代码的过程中,需要严格历经这三个过程,不要漏步跳步。3)动态数码管的温度显示要求时刻不断对数码管有数据

2023-05-05 15:39:52 3008 15

原创 【C++入门第四期】类和对象 ( 上 )

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是面向对象的语言,面向对象的三大特性:继承 ,封装 ,多态。但由于是入门文章,一开始就说把这些解释清楚未免太难为大家了。大家先把类理解为:功能接口及数据包,需要那个功能直接调用其接口即可获得结果使用接口时可以不知道的的具体实现,我们只需知道他的功能即可//类体:由成员变量和成员函数组成 };//注意后面要加分号结束class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分。

2023-05-01 22:48:21 605 18

原创 【详解 进程通信】之 System V 共享内存

第一步 :调用 ftok ( )函数获取一个接近唯一的 key 值供shmget函数使用第二步:调用 shmget ( ) 函数创建或获取一个已有的共享内存,并返回该内存标识符第三步:调用 shmat ( ) 函数将指定标识符的共享内存映射到该进程的页表中,并返回指针供进程使用 ,换句话说就是将指定的共享内存与进程关联起来第四步:调用 shmdt ( ) 函数 解除对应共享内存与该进程间的关联第五步:调用shmctl ( ) 函数 将指定表示符的共享内存删除

2023-04-15 16:06:48 785 30

原创 【 Linux入门 】之 手搓 命令行解释器 bash(带源码)

主要目的在于进一步了解 Linux 系统下使用进程相关的系统调用 及 shell 工作的基本原理本篇文章适合有一定C语言基础,及基本了解 Linux操作 和 Linux进程同学编写为减少废话,我基本不会解释简单语句以及所有函数用法,我相信大家既然要写这个命令行解释器 bash对语法等相关知识肯定是有了一定了解最终目的实现一个基本能用的bash主要内容:了解命令的本质,及如何创建子进程及进程替换并用子进程执行大部分命令将字符串,分割成指定命令格式cd / ecport / env

2023-03-21 09:03:13 2264 39

原创 【C++入门第三期】auto 和 范围for 及 指针空值nullptr

在早期C/C++中auto的含义使用auto修饰的变量,是具有自动存储器的局部变量,但随着编译器越来越智能能自动判断哪些该存在那人为干预作用不大,导致一直没有人去使用它C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。如下p1 和 p2 是所接收到的值是一样的,所以两段代码作用一致。

2023-03-14 22:54:33 654 15

原创 详解进程 及 探查进程

首先咱要明白,Linux 下你所有的 命令 与你能 执行的操作 都与权限有关。触发任何一个事件,系统都会将其定义成一个进程,并给予这个进程一个专属 ID ,称为PID ,同时根据触发这个进程的用户与相关属性关系,给予该进程PID设置对应权限运行程序也一样也要受到权限的约束,所以task_struct 要存有必要的属性信息正常情况下,task_struct会在内存中像链表一样依次排列,逐个进行,但我们要知道任何事情都要分个轻重缓急,操作系统在执行进程时更是如此。所以进程对应的task_str

2023-03-04 16:58:34 2314 45

原创 冯诺依曼体系结构与操作系统的概念及理解

首先咱要知道,计算机不同组成部分性能并不一致。列如过去几十年中处理器性能都是持续且高速增长的,而硬盘的性能基本没有大的改变(本文先抛开固态硬盘,谈普通机械硬盘)尽管CPU是计算机的核心,但计算机的性能既取决于CPU,也取决于其子系统的性能。如果不能高效的进行数据传输,仅仅提高CPU的性能是毫无意义的。这就和木桶效应一样我去银行取钱,银行要我提供卡还要密码才会从“小窗口”把钱递给我,绝对不会打开金库门说先生:进门左转有一个开着的保险贵,你自己清点好3000拿走就好了。注意别多拿哦!

2023-02-27 16:24:53 1841 29

原创 【C++入门第二期】引用 和 内联函数 的使用方法及注意事项

概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。打个比方:你的名字叫张小三,你妈叫你小张,同学叫你小三,公司员工叫你张总。如上所述虽然你名字叫张小三,但大家却叫着你不一样的别名(小张/小三/张总)且你也知道他们是在叫你。inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替换函数调用,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运行效率。

2023-02-24 23:32:44 502 15

原创 【Linux下代码调试工具】gdb 的基本使用

gdb 文件名 :进入调试q :退出gdbl 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。l 函数名:列出某个函数的源代码。r :运行程序b 行号:在某一行设置断点b 函数名:在某个函数开头设置断点info b :查看所有信息。d break:删除所有断点d 断点编号 :删除序号为n的断点disable breakpoints 断点编号:禁用断点enable breakpoints 断点编号:启用断点n :单条执行。s :逐语句调试/进入函数调用finis

2023-02-12 17:20:02 1638 15

原创 【C++入门第一期】命名空间 缺省参数 函数重载 的使用方法及注意事项

一个组,一起开发一个大型项目。但是他们但他们编写程序时就可能**出现重名的函数,变量,结构体等**,合并时就出现问题了大量的命名冲突。**最初,人们就想了个办法,将名字取得更长更复杂来避免重复**,可这样做却给编写和阅读带来了困难。后来,人们创造了命名空间这个概念,**它能有效地指出某个标示符到底属于哪个库。**## 命名空间的定义定义命名空间,需要使用到**namespace** **关键字**,后面跟**命名空间的名字**,然后接一对{ }即可,**{ }中即为命名空间的成员**。如下 **zg

2023-02-03 20:56:40 1029 18

原创 Linux下 git 上传与删除 的基本指令

**第一步**命令行输入命令:git add .第二步命令:git commit -m “日志信息”作用:将选择好的文件或目录保存到本地仓库作用:选择当前目录下所有未上传的文件或目录

2023-02-01 12:40:03 1832 20

原创 Makefile的使用 和 基本语法 及Makefile中变量的使用【入门必看】

比如上图编译三个源代码时由于第一条,**需要具有main.o print.o add.o三个文件才能编译成a.out文件**(目标文件是main.o,源文件是main.o print.o add.o)**显然这个条件并不满足**。所以Makefile会先把第一条**指令保存起来**,**先执行下面已经满足条件的代码**,**直到条件满足时才会执行**(具有main.o print.o add.o三个文件)**第二条指令**,要求文件中有main.c文件,**显然我们是满足条件的,所以执行了gcc -c

2023-01-29 14:07:45 1930 12

原创 动态与静态函数库的的使用 和 区别 及 优缺点

链接及动态链接。静态链接:指程序链接时使用静态库的链接方式,把所有需要的库函数加入(拷贝)到了可执行程序当中。动态链接:指程序链接时使用动态库的链接方式,在编译链接时,只把所需库函数的指针保存在了可执行程序中,在运行时再通过指针找到所需库函数。静态函数库:程序在链接时,已经把所有所有需的库函数加入(拷贝)到了可执行程序当中,由于加入了库函数所以生成的文件会比较大。但优点是运行时不再需要调用外部库函数了。**动态函数库库:**与静态库相反,程序在链接时,只把所需库函数的指针保存

2023-01-28 12:32:51 1350 13

原创 一篇文章教会你Linux下《常用操作指令》

ls(查看目录),pwds(显示用户当前所在目录),cd(改变工作目录),mkdir(创建目录),rmdir(删除目录),touch (新建文件或更新文件时间),rm(删除目录或文件),tree(以树状结构显示目录),nano(文本编辑器),cat(查看文件内容),stat (显示文件操作信息),cp(复制),mv (移动及更改文件),less(浏览文件),head (打印前n行),tail(打印末尾n行),date(显示时间),cal(查看日历),find(文件查找),grep(在文件中搜索字符串)

2023-01-10 09:36:27 1402 25

原创 一篇文章带你了解——Linux中 文件权限 和 粘滞位的 概念 / 作用 及 实现方法

**但是问题出现了**:既然大家都能对该共享文件中添加文件,查看和修改及执行文件,**那同时他们也有了删除文件的权力**。比如张三和李四及其他几个同事一组,张三看不惯李四做工作比他快比他好在公司里还很嚣张,所以**张三就把李四做好的文件给偷偷删除了**。李四的的工作成果就这样没了,由于该共享文件很多人都有删除权限,所以并查不到谁删的因此吃了哑巴亏;**好处**:加了粘滞位后,共享目录中的**文件的删除只能由root或者文件所有者才能执行**

2023-01-07 12:56:17 1157 18

原创 Linux中vim 编辑器概念 配置 及基本操作指令

vim概念及安装什么是vim如何安装vim如何打开vim配置vim(自动配置)vim的不同模式正常模式(命令模式)插入模式替换模式底行/末行模式退出vim及文件保存正常模式下命令复制剪切粘贴定位到文件内容首位定位到文件内容第n行定位到文件内容结尾定位到当前行首位定位到当前行末尾光标按单词为单位移动替换删除撤销光标的上下左右底行模式查找字符或字符串批量替换对应字符串分屏编辑文件分屏状态下光标如何切换

2023-01-04 23:37:27 1113 12

原创 链式二叉树的 遍历 及 常用接口(带源码)

1:创建链式二叉树1.1节点基本结构1.2节点的创建1.3节点之间的链接2:遍历二叉树递归的要点2.1前序遍历2.2中序遍历2.3后序遍历2.4层序遍历3 链式二叉树常用外部接口3.1求链式二叉树节点个数3.2求链式二叉树叶节点个数3.3求链式二叉树的**高度**(有几层)3.4求链式二叉树**第K层节点个数**

2023-01-02 22:27:39 232 12

原创 图解代码 堆的构建 及 堆排序

然后与左右孩子中较大的一位比较,如比他小则交换位置。

2022-12-31 12:50:19 515 12

原创 二叉树中已知前序和中序求其后序(图解加技巧让你轻松掌握)

从前序遍历可知根节点为 A,我们在中序遍历中找到A。在 A左半边的值在图中也恰好在左半 边,右半边的值也恰好在图中右边 。所以按这个规律画图即可

2022-12-28 20:34:32 7283 2

原创 简述.c文件是怎样变成.exe文件的 其中包括源文件的预编译 编译 汇编 及链接

2.1 预编译 1:完成所以#define替换及删除 2 :处理所以预编译指令,比如#if , #ifdef ,#endef等 3:处理“#include"预编译指令,将被包含的文件插入到该预编译指令的位置。注意,这个过程是递归进行的,也就是说被包含的文件可能还包含其他文件。4:删除所有的注释“//”和“/**/”。 5:添加行号和文件名标识,比如#2“hello.c"2,以便于编译时编译器产生调试用的行号信息及

2022-12-25 21:49:50 247 1

原创 【240行拿下】基于C语言 实现通讯录管理系统 带文件保存及读取功能

1 将所以联系人信息保存至文件中,程序接收到关闭指令后,自动保存数据至文件中再执行关闭2 将文件中所以联系人信息读入程序,程序运行第一步自动将上次程序结束时的数据读入数组中,上次使用时保存的联系人及信息均存在。3 新建联系人4 按名字查找联系人5 按名字删除联系人6 按名字排序7 将所以联系人打印至屏幕C语言 数组 实现通讯录管理系统 带文件保存及读取功能

2022-12-11 18:07:30 2766 5

原创 腾讯云查看自己的服务器并设置

腾讯云查看自己的服务器并设置

2022-11-30 22:53:10 1359 2

原创 Linux下如何创建新用户并设置密码及删除用户

Linux下如何创建新用户并设置密码及删除用户

2022-11-30 15:57:01 7052 1

原创 实际问题带你了解C语言枚举

如果不给枚举元素赋值,那枚举会给自己的元素赋初始值从0开始并呈递增关系 枚举定义出来的是常量,并且一次可定义多个常量,如果需要多个有序常量那枚举比较方便枚举的定义和结构体大致相同,只是枚举类型用 enum 来定义,BB是枚举类型名(可自己取名);

2022-11-24 16:40:07 418 9

原创 模拟实现strcat,用函数实现strcat及strcat的原理

strcat是字符串追加函数,括号中可给定两个参数,其中参数destination要追加的目标地址,而参数二source是用于追加的源地址,C语言 不使用strcat函数实现连接两个字符串功能代码总结:strcat是将其函数中参数二的内容追加到参数一字符串后方

2022-11-17 11:33:57 564 1

原创 C语言编程题S=1-1/3+1/5-1/7+…+1/(2n+1)

S=1-1/3+1/5-1/7+…+1/(2n+1)根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0

2022-11-17 10:18:52 2574

原创 数组的使用及冒泡排序

数组在创建时需指定数组大小[ ] 中的值就是数组大小,下图arr[10]表示这个数组有10个元素数组在创建的时候如果不指定数组确定的大小,数组会根据初始化元素个数来确定。arr1 [ ]初始化元素有四个,分别是1,2,3,4。所以这个数组实际上是arr1[4];

2022-10-19 21:00:15 188

原创 什么是递归函数 用递归函数求字符串长度

递归函数是用来解决简单的重复问题,递归函数是直接或间接调用自身来解决问题的一种函数。 2:特点是只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量

2022-10-19 20:16:19 654

原创 函数调用过程中应注意什么以及 传值 调用 和 传址 调用的区别

传址调用是把变量的内存地址传递给函数参数的一种调用函数的方式。这种传参方式可以让函数和其它函数的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。可以通过传过来地址,改变地址中所存的值(数据)

2022-10-10 15:57:50 412

原创 怎样 调用函数和“自定义函数 ”以及 函数传参中的 形参 和 实参 的区别

虽然C语言本身给我们提供了很多现成库函数,虽然多但他们不是万能的。如果库函数能干所有的事情,那还要程序员干什么?

2022-10-10 15:21:51 832

原创 循环语句中 break 和 continue 的使用,while for switch循环中如何跳出循环 中断循环

上图只演示了while,实际上不管是哪种循环,一旦在循环过程中遇到break,程序将完全结束循环体,开始执行循环之后的代码。continue语句并没有使整个循环终止,只是结束本轮循环

2022-10-04 22:38:28 2926

原创 goto语句

goto语句几乎没有限制可以随意嵌套在程序中,goto语句由于出入口比较随意可能会导致滥用。不够谨慎时使得程序结构遭到的破坏

2022-10-04 21:58:14 2162 1

原创 C语言中 循环语句 while for do while的使用 循环语句的嵌套使用 猜数字游戏的实现

如下图while 语句基本结构是 while后面加一个表达式,如果表达式为真则执行循环语句do while 语句特点是先执行后判断(至少执行一次),与其他循环语句主要区别;当程序运行到do 时,先执行 循环语句中的内容 ,然后再进行表达式的判断,如果为真将继续循环,为假则结束循环。

2022-09-29 20:47:17 1481

空空如也

空空如也

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

TA关注的人

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