自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用的数据校验方法

​通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。​

2022-11-24 17:01:45 2896

原创 关于寄存器操作的清0和置1

对于玩过单片机的人来说,寄存器多多少少都是有接触过的,只是有的开发板有现成的函数库可以用,所以很多人对寄存器的了解还是比较少的。其实,库函数最终还是对寄存器进行操作。我要说的重点来了——>对于一个特定功能模块的实现,我们开发的过程大致如下:1.了解这个功能模块的相关知识并根据要求将模块化大为小;2.在开发过程中,我想 很重要的一份资料就是芯片手册;3.在所有功能完善之后,就需要整体连接进行测试,寻找bug,改bug;4.再接下里就是进行代码优化。

2022-11-24 16:41:04 1486

原创 STM32 GPIO BRR和BSRR寄存器

一、置GPIOD->BSRR低16位的某位为’1’,则对应的I/O端口置’1’;二、置GPIOD->BSRR高16位的某位为’1’,则对应的I/O端口置’0’;三、置GPIOD->BRR低16位的某位为’1’,则对应的I/O端口置’0’;3)要同时设置D0、D5、D10、D11为高,设置D1、D3、D14、D15为低,而保持其它I/O口不变。BSRR寄存器, 控制管脚的高、低电平,32位有效,低16位写1 高电平,高16位写1 低电平;BRR寄存器, 控制管脚的低电平,低16位有效,写1 低电平;

2022-11-17 17:18:02 1326

原创 倒置字符串-两种解法

我们在程序中以两个指针来找单词的开头和结尾并作为reverse函数的参数,一个是start,另一个是cur,每次cur找到空格或者cur走到了'\0'时,就找到了单词的末尾cur-1,逆置完更新start的值变为cur+1,cur自增。我们打印完一个单词后,把cur的位置变成\0,然后继续往前走,直到数组开始位置。cur指针开始指向字符串最后一个字符,然后往前遍历,直到空格或者cur到了最开始的字符位置,这里分两种情况,到空格位置,要把空格位置变成\0,打印cur+1位置,到首字符,打印cur位置。

2022-10-22 14:32:23 159

原创 在TCP连接中,如果有一方宕机或者进程崩溃会发生什么?

如果客户端主机上有进程监听该 TCP 报文的目标端口号,由于客户端主机重启后,之前的 TCP 连接的数据结构已经丢失了,客户端内核里协议栈会发现找不到该 TCP 连接的 socket 结构体,于是就会回复 RST 报文,重置该 TCP 连接。所以,即使没有开启 TCP keepalive,且双方也没有数据交互的情况下,如果其中一方的进程发生了崩溃,这个过程操作系统是可以感知的到的,于是就会发送 FIN 报文给对方,然后与对方进行 TCP 四次挥手。第二种,客户端主机宕机,一直没有重启,会发生什么?

2022-10-17 16:16:27 719

原创 C语言 指针数组和指向指针的指针

表示 pa 是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。因为[]的优先级高于*运算符,所以pa[3]表示一个数组,而int*是一个指针定义,则表示pa[3]表示的是一个数组指针变量,数组里面存放的是Int类型的指针,指向int类型数据的地址。对于什么时候用**p,什么时候用*p,就是当指针数组里面的元素存放地址的时候,就使用**p,当指针数组里面的元素是字符串等一些值的时候,就使用*p。如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的。

2022-09-11 10:18:15 157

原创 Linux中 信号量、消息队列和全局变量的区别!!!

我们在操作系统任务编程中,解决任务间通信问题,可以使用、信号量或者消息队列来完成。那么它们有什么区别,在遇到任务间通讯时,该怎样选择用哪一种方式呢?

2022-08-23 20:12:33 1647

原创 在Linux中,_exit()、exit(0)、exit(1)、和return的区别!!

在最初调用的main函数中调用return和exit的现象很模糊,非主函数中调用return和exit效果很明显。exit() 将缓冲区的数据写完后才能退出来,所以调用exit()函数后程序并不会马上退出,会把OK也输出出来。而 exit() 是系统调用级别的,表示进程的结束。printf函数使用的是缓冲I/O的方式,该函数在遇到“\n“换行符时自动的从缓冲区中将记录读出。return 是退出(返回)函数,将控制权移交给递归的前一级;exit() 是直接退出进程。exit() 是函数。...

2022-08-18 18:31:18 3839

原创 浮点数据类型取余

可以,但不能用操作符%,而要用库函数fmodf、fmod或fmodl。因为%是整型取余操作符,要求两边都是整型数才行,结果也是整型;fmodf用于float型变量操作,fmod用于double型变量操作,fmodl用于long double型变量操作。以下以fmod举例结果1.100000...

2022-07-21 22:28:40 3354

原创 详解%d、%%d、%%%d和\\%d的区别

1、%d,表示按整型输出后面给出的变量的值。2、%%d ,这就会被拆成两部分看待,一是“%%”在C语言中就是输出一个“%”,而是“d”就是一个普通字符,所以当“%%d”在一起时,其含义就是输出“%d”这两个字符。3、%%%d ,3个%在一起,进行拆分的话,%%代表一个“%”字符,后面的%d又代表整型输出变量的值,所以当“%%%d”一起时,其最终含义就是输出一个字符%号再接着按整型输出变量的值。类似的\符号也是一样。C语言中,%是转义符,也就是和%一起出现的后面的内容会转义后输出例1:例.

2022-07-21 20:30:10 18535 1

原创 Java:详解Java中的异常(Error与Exception)

一、 异常机制的概述异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。 (1)编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这个也是大家在刚接触编程语言最常遇到的问题。 (2)运行时错误是因为程序在执行时,运行环境发现了不能执行的操作。 (3)逻辑错误是因为程序没有按照预期的逻辑顺序

2022-03-27 17:23:17 1089

转载 Java自动装箱与拆箱及其陷阱

在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有一个陷阱。开发者如果不注意,就会很容易跌入这个陷阱。自动装箱(Autoboxing)定义大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象:Integer i=100;从上面的代码中,大家可以得知,i为一个Integer类型的引用,100为Java中的基础数据类型(primitive data type...

2022-03-25 10:40:26 188

原创 Math类常用方法

常用值与函数:Math.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量,都是一些工程数学常用量。Math.abs 求绝对值Math.sin 正弦函数 Math.asin 反正弦函数Math.cos 余弦函数 Math.acos 反余弦函数Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度Math.ceil 得到不小于某数的最大整数

2022-03-23 10:11:53 399

原创 接口的语法规则

接口的语法规则▪️接口及接口成员默认的访问权限为:public 或友好▪️常量默认添加static final关键字▪️抽象方法默认添加abstract关键字▪️只有default方法及static方法可以添加方法体▪️实现接口的类如果不能实现所有接口中待重写的方法,则必须设置为抽象类▪️接口可以实现多继承,即一个子接口可以同时继承多个父接口▪️一个类可以继承自一个父类,同时实现多个接口▪️当一个类同时实现多接口,且其中同时具有相同方法时,实现类需要重写该方法,否则会编译报错...

2022-03-22 15:43:30 365

原创 类和接口的关系

一、类和类的关系是继承关系,而且之允许单根继承可以发生继承关系,子类继承父类后,好处是子类可以使用父类的所有功能(除了private外);当子类想要修改父类的原有功能时,可以通过方法重写实现;重写的要求:子类的方法声明和父类的一模一样,最好有重写注解(@Override);重写时改的是方法体,将子类的方法体改成新的业务。class Zi extends Fu其中,Zi是子类,Fu是父类,Zi类可以使用Fu类的所有功能;其中,Zi类中想要使用自己类里的功能,可以通过this关键字实现;其中,

2022-03-21 19:46:56 4522

原创 多态中成员访问的特点

对于成员变量,编译看左边,运行也看左边对于成员方法,编译看左边,运行看右边。为什么有区别?因为方法有重写,而成员变量没有重写

2022-03-20 20:22:02 70

原创 java语言中 权限修饰符的访问情况

在Java编程语言中有四种权限访问控制符,这四种访问权限的控制符能够控制类中成员的可见性。一、public(1) 定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到。(2) 修饰的成分:public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。说到这里,穿插多一点知识。一个类作为外部类的时候只能被public或者默认

2022-03-20 17:15:31 444

原创 Java中printf和println的区别

printf主要是继承了C语言的printf的一些特性,可以进行格式化输出print就是一般的标准输出,但是不换行println和print基本没什么差别,就是最后会换行System.out.printf(“the number is: d”,t);参照JAVA API的定义如下:‘d’ 整数结果被格式化为十进制整数‘o’ 整数结果被格式化为八进制整数‘x’, ‘X’ 整数结果被格式化为十六进制整数‘e’, ‘E’ 浮点结果被格式化为用计算机科学记数法表示的十进制数‘f’ 浮点结果被格式化

2022-03-20 16:11:26 2615

空空如也

空空如也

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

TA关注的人

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