- 博客(13)
- 资源 (8)
- 收藏
- 关注
原创 linux中原子操作atomic_read、atomic_set、atomic_add、atomic_sub
原子操作所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位。因此这里的原子实际是使用了物理学里的物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedef str
2022-04-06 11:59:38
5773
原创 python一键配置多个IP
工作需要,要在电脑上配置多个虚拟网卡,每个网卡上可能要配置多个不同的IP,也会时常对虚拟网卡配置的IP进行大范围的修改。比较麻烦,修改一次要花费不少时间,而且还总是容易少配置一些IP,导致一些程序无法启动,所以动不动就会把心态搞得稀碎。于是想了个办法,用自己不成熟的python技术做了个脚本,解决了上面的问题。因为也算是python的初学者,大部分东西都是需要用哪一块了,就去搜索哪一块的知识,现学现卖。所以可能对于一些大佬来说,我做的东西十分不入眼,这也是没办法的事,不过我是欢迎大佬们能对我写的东西提一些缺
2021-07-11 11:59:21
1274
原创 函数声明的形参问题
遇到这样一个问题a.hvoid func();a.cvoid func(int abc){ if(0 == abc) { abc++; } return;}b.c#include "a.h"int main(void){ func(); return 0;} 上面这一系列代码,在某些编译器编译后,并不会报错,但当其运行时,会发生错误具体系统都做了些什么呢由于操作系统的内部机制不同,错误的
2021-01-08 10:49:38
693
原创 关于结构体的位域
说到位域,不得不说这是一个很有意思的东西,我平时用得不太多,因为这个东西在我的印象里是对内存抠到极致迫不得已才会使用它的。一般情况下我使用的硬件环境都还比较资源够用,所以就不怎么用,但是既然提到了,也就写一篇关于位域的文,大概从以下几个方面来说,一、基本形式:位域定义与结构定义相仿,其形式为:struct 位域结构名{ 位域列表};其中位域列表的形式为:类型说明符 位域名: 位域长度例如:typedef struct bs{ unsigned
2020-07-01 19:55:35
5377
2
原创 C语言编码安全规范 高频易错10条
1.程序中不要出现仅靠大小写区分的相似的标识符,以防止混淆。2.防止局部变量与全局变量同名。doubled=0;voidfunc(void){ intd=5; doubleb=d;//有的编译器会匹配全局变量,因为全局变量的类型更匹配,有的会匹配局部变量。}首先,匹配哪一个会有不确定性,不同编译器不同。其次,如果局部变量和全局变量的类型与...
2020-05-07 11:23:22
745
原创 虚拟内存解决内存不够
内存不够最好的办法是,再买一块内存加到电脑里。但是,买不了内存的情况下,怎么办 !?还是再努努力协调一下,买一块吧,可是但是可但是,实在没有办法的情况下,怎么办 !?真的是没有办法的办法,也只能想一个办法,以下解决办法只适用于在电脑配置了PCIE接口的固态硬盘的前提下。1.先打开我的电脑,在界面上空白处单击右键,单击属性2.左侧单击高级系统设置...
2020-04-23 20:25:32
1901
原创 C语言中不同类型的运算和比较问题
今天写代码的时候遇到这样一种情况:首先我能获取到一个配置的电压信息,类型是UINT8然后我要用当前的实际电压与配置的电压进行比较,问题是 我获取到的配置电压单位是0.1V,当前实际电压单位是0.01V所以工需要将我获取到的配置电压 乘以 10,再和实际电压进行比较,我是这样写的:if(CurrentV < (ConfigV * 10))/* ConfigV :配置电压 ...
2020-04-20 21:36:22
5195
原创 结构体如何初始化
很多时候我们在使用结构体的时候会纠结如何初始化,我最常用的一种方法是:结构体 = {0};下面我们来看一下这样初始化的结果是不是我们想要的。我希望将结构体中的所有变量全部初始化为0,包括结构体中的数组和结构体以及时不时被扎得生疼的指针。因为之前在研究数组初始化的时候发现,直接写数组 = {0};会把数组中所有的元素都初始化成 0,这是利用了编译器的一个特性:如...
2020-04-03 15:39:09
2635
原创 数组初始化
关于数组可能所有人都很熟悉,但是这里我想说一下我对这个数组的使用过程中发现的问题:在函数内定义一个数组,不初始化,数组的值不确定 这个故事告诉我们在函数体内定义的变量都是在栈里的,如果不初始化那么它一定是前面使用过后的垃圾值。```int main(void){ UINT8 Array[10]; return 0;}```...
2020-04-03 15:22:41
849
原创 Windows无法安装到MBR分区形式磁盘,怎么办?
有时候用原版系统镜像安装WIN10系统时,会提示“windows无法安装到这个磁盘。选中的磁盘采用MBR分区形式”,导致安装失败,下面就来讲解一下如何解决。在系统提示无法安装的那一步,按住“shift+f10”,呼出“cmd”命令符输入:diskpart,回车进入diskpart。输入:list disk,回车显示磁盘信息输入:select disk 0,回车...
2019-06-21 16:38:06
10053
原创 枚举类型在结构体中占多少字节
这个问题是我在写结构体时发现的,编译器突然在一个枚举类型的成员变量后面提醒字节未对齐。于是,枚举类型在结构体中占多少字节这个问题就产生了。一开始我以为它只占一个字节,结果我从上到下看了一下发现不对。如果占一个字节说明这不会提示有问题,应该直接对齐了才对所以它一定不是占一个字节。带着好奇心上网找了一下,网上暂时只找到了这种描述: 标准C并没有明确规定枚举类...
2019-06-14 21:13:01
16298
3
原创 基于RTthread的sim800c连接mqtt服务器通信
最近在搞GPRS模块,SIM800C,具体流程是:GPRS先连接TCP服务器,再连接阿里云的MQTT物联网套件,上传给服务器一些消息,服务器收到以后再回复一些指令,或者可以通过手机微信小程序主动下发一些指令给设备。代码是基于RTthread写的,STM32F103,系统tick 1000,标准库。分为几个部分:GPRS.c //SIM800C连接TCP服务器以及MQTT服务器过程...
2018-08-28 11:23:45
6248
12
会议计时小工具-python-源码
2022-03-14
MISRA-C-2004 MISRA-CPP-2008 MISRA-C-2012.zip
2020-07-01
UNIX 环境高级编程 第3版 中文版
2019-03-29
红外遥控器驱动代码
2019-03-29
STM32F103 RTThread FSMC AD7606 DAC
2018-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人