基础
guanjianhe
这个作者很懒,什么都没留下…
展开
-
samba 安装及配置
配置完成后,要检查下是否配置正确,输入命令。原创 2024-06-26 08:14:00 · 175 阅读 · 0 评论 -
modbus之crc16计算代码
这边提供两种方式,第1种是查表法方式,速度会快一点,但是需要多占用一些空间;第二种是纯计算方式,速度相对第一种会慢一点,但是比较省空间。原创 2022-11-14 19:07:04 · 702 阅读 · 1 评论 -
ssh-keygen 常用命令与参数
ssh-keygen 常用命令与参数原创 2022-08-01 23:24:39 · 3131 阅读 · 0 评论 -
vsftpd主动模式和被动模式
ftp主动模式和被动模式原创 2022-08-01 23:14:27 · 1030 阅读 · 0 评论 -
Beyond Compare 设置打开文件的默认编码
beyondcompare设置打开文件的默认编码原创 2022-08-01 23:12:38 · 3308 阅读 · 0 评论 -
Ubuntu 20.04 时间修改成 24小时制
ubuntu修改时间为24小时制原创 2022-08-01 23:08:10 · 4320 阅读 · 0 评论 -
安装Ubuntu20.04后时间不准
买了一台瘦客户机,原先是安装Windows操作系统的,后面安装Ubuntu20.04后导致时间一直有问题,不准。原创 2022-08-01 22:56:15 · 682 阅读 · 1 评论 -
ssh 免密登录
ssh免密登录原创 2022-08-01 22:49:28 · 206 阅读 · 0 评论 -
debian系统安装dig和nslookup工具
debian系统安装dig和nslookup工具原创 2022-08-01 22:47:27 · 2219 阅读 · 0 评论 -
linux删除软件
ubuntu或者debian删除软件命令原创 2022-08-01 22:45:21 · 808 阅读 · 0 评论 -
stm32f030内部高速时钟初始化
前几天在做项目时候发现,程序跑起来有问题,具体体现在时钟不准,后来经过排查发现,是因为标准工程默认初始化的外部高速时钟,但实际上是没有外部高速时钟的,所以导致出问题了。使用内部告诉时钟,初始化代码如下:(要注意把外部高速时钟初始化给屏蔽掉)static void SystemClock_Config(void){ RCC_DeInit(); FLASH_SetLatency(FLASH_Latency_1); RCC_HSICmd(ENABLE); while (RCC原创 2021-05-27 08:09:27 · 1032 阅读 · 0 评论 -
N沟道和P沟道开漏输出
N沟道开漏输出,只能输出低电平,需要加上上拉电阻才能输出高电平,常见的开漏输出基本都是N沟道输出,例如51单片机的P0口。P沟道开漏输出,只能输出高电平,需要加下拉电阻才能输出低电平,一般不多见。...原创 2021-05-03 14:45:05 · 4198 阅读 · 2 评论 -
C语言利用编译器参数检查
原理sizeof(char[1])在编译阶段不会报错,而sizeof(char[-1])会报错用法#define BUILD_CHECK(condition) ((void)sizeof(char[1 - 2*(!(condition))]))struct XX{ int a; int b; int c;};int main(void){ //如果结构体不等于12个字节则在编译阶段会报错 BUILD_CHECK((sizeof(struct XX) == 12)); retu原创 2020-11-11 20:20:17 · 586 阅读 · 1 评论 -
python中os.walk的用法详解
python中os.walk的用法详解转载 2020-10-19 21:22:43 · 212 阅读 · 0 评论 -
Python 查看已安装的库
win+r输入cmd输入pip list原创 2020-10-19 20:33:08 · 6633 阅读 · 1 评论 -
正则表达式
元字符正则表达式主要依赖于元字符。 元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍:元字符描述.点号匹配任意单个字符除了换行符。[]字符种类。匹配方括号内的任意字符。[^]否定的字符种类。匹配除了方括号里的任意字符。*匹配>=0个重复的在*号之前的字符。+匹配>=1个重复的+号前的字符。?标记?之前的字符为可选。{n,m}匹配num个大括号之前的字符原创 2020-10-16 08:51:33 · 152 阅读 · 0 评论 -
递归实现从1打印到100再打印到1
递归实现从1打印到100再打印到1#include "stdio.h"void fun(int n){ if (n < 100) { printf("%d ", n); fun(n + 1); } printf("%d ", n);}int main(void){ fun(1); return 0;}原创 2020-09-22 10:44:48 · 1545 阅读 · 0 评论 -
C语言宏定义 '\'不会换行
今天发现格式化工具在格式化代码时候把下面这行#define LC_SET(s) s = __LINE__; case __LINE__:格式化成:#define LC_SET(s) \ s = __LINE__; \ case __LINE__:看到这样被吓了一跳,如果s = __LINE__; \case __LINE__:这两行不在同一个位置时候,即__LI...原创 2020-01-21 15:09:50 · 1441 阅读 · 0 评论 -
C语言获取本地时间
#include "stdio.h"#include "time.h"void put_date(const struct tm* timer){ const char* wday_name[] = {"日", "一", "二", "三", "四", "五", "六"}; printf("%4d年%02d月%02d日(周%s)%02d时%02d分%02d秒\n", ...原创 2020-01-08 21:11:32 · 423 阅读 · 0 评论 -
c语言文件读写总结
打开文件FILE *fopen(const char *filename, const char *mode)filename – 这是 C 字符串,包含了要打开的文件名称。mode – 这是 C 字符串,包含了文件访问模式,模式如下:“r”:打开一个文本文件,可以读取文件,该文件必须存在“w”:打开一个文本文件,可以写入文件,如果文件不存在则创建,存在则覆盖“a”:打开一个...原创 2019-12-30 22:11:48 · 1546 阅读 · 0 评论 -
用整数表示小数
在嵌入式开发过程中,为了在显示端显示小数、负数等非uint类型数值,往往采用将数据放大10倍、100倍等,今天看到另一种方法,特此记录这个方法的核心公式是y = kx+my:显示值,最终在显示屏上可见的值x:传输值,和显示屏通讯时传输的数值,一定是uint数据类型k:分辨率,该值确定了每个取值的步进m:取值偏移量或增量,通过m值将y值偏移到满足x值为uint数据类型的要求,m值默认等于Y...原创 2019-12-01 11:01:49 · 1243 阅读 · 0 评论 -
韦根协议
韦根数据输出由二根线组成,分别是DATA0 和 DATA1 ;二根线分别为‘0’或‘1’输出。输出‘0’时:DATA0线上出现负脉冲;输出‘1’时:DATA1线上出现负脉冲;负脉冲宽度TP=100微秒;周期TW=1600微秒;通讯协议标准韦根输出是由26位二进制数组成,每一位的含义如下:1 2 9 10 25 26X_X X X X X X X X_X X X X X X X X X...原创 2019-08-10 22:25:33 · 5377 阅读 · 0 评论 -
指针
声明一个指针变量:type *pType = NULL;pType有5个“属性”,分别是:pType = (己址,己值,他址,他值,他型);己址:即“自己的地址”指针变量pType作为一个变量,也有自己的地址,常见的代码写法是&pType己址在一般的程序中不会被频繁地用到,如果要用的话,就涉及到“指针的指针”,这又是另外一个话题了,本文不讨论;己值:即“自己的数据值”指针...原创 2019-08-10 22:24:41 · 207 阅读 · 0 评论 -
CAN协议
扩展帧与标准帧的区别:帧ID的长度不一样,标准帧的帧ID长度是11位,帧ID的范围是0x000~0x7FF,扩展帧的帧ID长度29位,范围是0x00000000~0x1FFFFFFFJ1939协议的帧ID通常是0x18XXXXXX,是29位,是扩展帧扩展帧29位帧ID划分:符号PRDPPFPSSA位数311888含义报文优先级保留位数据页...原创 2019-09-06 08:41:45 · 1490 阅读 · 0 评论 -
feof()函数多输出一个字符"0xFF"原因
首先看feof()函数(准确来说是宏)的定义:#define _IOEOF 0x0010#define feof(_stream) ((_stream)->_flag & _IOEOF)原因是当文件位置指针(fp->_ptr)到了文件末尾,然后再发生读/写操作时,标志位(fp->_flag)的bit4才会被置一;然后再调用feof(),才会得到文件结束的...原创 2019-09-17 19:46:15 · 1017 阅读 · 0 评论 -
EOF和feof()区别
首先来看他们两个的定义:#define EOF (-1)#define _IOEOF 0x0010#define feof(_stream) ((_stream)->_flag & _IOEOF)EOF是不可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现-1,因此EOF定义为-1是合适的。当读入的字符值等于EOF时,表示读入的已不是正常的...原创 2019-09-17 20:01:07 · 4391 阅读 · 0 评论 -
Markdown-LaTeX
参考wikiCSDN1CSDN2转载 2018-09-25 21:50:20 · 190 阅读 · 0 评论 -
C语言中在常数后面加U、L、F的功能(转)
一、含义解释U:unsignedL:long / doubleF:float二、例子#define SECONDS_PER_YEAR (365*24*60*60)UL#define PI 3.1415F#define TEST_L 100000.6283L 三、例子解释1、C语言中,常数分为整型和浮点型。2、...转载 2019-08-01 12:09:08 · 13098 阅读 · 0 评论 -
数组指针和指针数组
数组指针(也称行指针)定义: int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的二维数组,这个二维数组的长度是n,也可以说是p的步长,也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该...原创 2019-07-20 17:48:02 · 108 阅读 · 0 评论 -
十六进制转字符
void Hex2Str ( unsigned char num, unsigned char str[] ){ unsigned char H, L; H = num >> 4; L = num & 0x0F; if ( H > 9 ) str[0] = 'A' + H - 10; else ...原创 2018-12-11 14:28:12 · 969 阅读 · 0 评论 -
C语言结构体4种初始化方法
struct member{ int a; float b; char *s;};/* 第一种 */struct member mem = {10,20.0f,"good"};/* 第二种 */struct member mem;mem.a = 10;mem.b = 20.0f;mem.s = "good";/* 第三种 */struct mem...原创 2018-12-04 17:35:08 · 572 阅读 · 0 评论 -
十进制转为任意位数的二进制
void func( unsigned int num, unsigned int nbit, char *str ){ unsigned int i; unsigned int j = 0; for ( i = nbit - 1; i >= 0; i-- ) { str[j++] = '0' + ( (num >> i) & 1); }}原创 2018-11-14 23:26:58 · 1713 阅读 · 0 评论 -
十六进制字符转对应的十六进制数
#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;string.h&amp;amp;gt;/* C 库函数 int feof(FILE *stream) 测试给定流 stream 的文件结束标识符。 */int main( void ){ unsigned char str[5]; unsigned char num; FILE *infp; FI原创 2018-11-11 14:57:11 · 897 阅读 · 0 评论 -
文件数据转十六进制数生成数组
#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;string.h&amp;amp;amp;gt;/* * feof():当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。 * C 库函数 int getc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。原创 2018-11-11 13:54:30 · 1091 阅读 · 0 评论 -
原码、反码、补码
数值在计算机中是以补码的方式存储的。一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是00000010。如果是 -2 ,就是 10000010 。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000010,其最高位1...原创 2018-09-27 23:32:17 · 166 阅读 · 0 评论 -
POP3、SMTP和IMAP
把系统烧录进SD卡后,在boot目录下新建一个ssh为名的文件,用于开启ssh连接服务(默认关闭)。在boot目录下新建一个wpa_supplicant.conf为名的文件,打开文件,键入以下内容:ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ ssid...原创 2018-09-21 22:31:00 · 887 阅读 · 0 评论 -
宏定义实现 swap(x,y)
方法1:#define swap(x,y) do{x=x+y;y=x-y;x=x-y;}while(0)方法2:#define swap(x,y) do{a^=b;b^=a;a^=b;}while(0)说明: 1. a^=b;:把a^b结果赋值给a 2. b^=a;:相当于b=b^(a^b)。而b^(a^b)等于a^b^b。b^b的结果为0,因为同一个数与本身相异或...原创 2018-08-22 17:31:20 · 6020 阅读 · 0 评论 -
指针数组和数组指针的区别
简单介绍简单地说,int *p[4]是指针数组,int(*p)[4]是指向数组的指针指针数组:是一个元素全为指针的数组 数组指针:可以理解为指针,只是这个指针类型不是int而是int[4]类型的数组int *p[4],p是一个指针数组,每一个指向一个int型的,等价于(int *) (p[4])int (*p)[4],p是一个热指针,指向int[4]的数组通过运算符优先级来理...原创 2018-08-23 11:01:23 · 1797 阅读 · 0 评论 -
大端、小端
小端就是低位字节放在内存的低地址端,高位字节放在内存的高地址端。大端就是高位字节放在内存的低地址端,低位字节放在内存的高地址端。举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:大端模式:低地址 —————–> 高地址 0x12 | 0x34 | 0x56 | 0x78小端模式:低地址 ——————> 高地址 0x78...原创 2018-08-22 23:24:07 · 5937 阅读 · 0 评论 -
vim 配置
set hlsearch "高亮set backspace=2 "可随时用退格键删除set autoindent "自动缩排set ruler "可显示最后一行的状态set showmode "左下角显示状态set nu "显示行号set bg=dark "设置背景色syntax on "语法检测开...原创 2018-08-13 22:27:49 · 128 阅读 · 0 评论