计算机基础
勤勉之
码字中.....。
展开
-
【C语言】#和##的作用
##和#在c语言中的介绍原创 2022-07-18 16:56:47 · 1999 阅读 · 1 评论 -
【数据结构】C语言实现队列
#include "test_queue.h"#include <stdio.h>#include <string.h>#include "test_queue.c"#define QUEUE_CACHE_BUFF_SIZE 1024#define QUEUE_RX_TX_BUF 32static QUEUE_HandleTypeDef_t txqueue;QUEUE_DATA_T cache_buff[QUEUE_CACHE_BUFF_SIZE] = {0};un.原创 2022-02-17 18:16:07 · 731 阅读 · 0 评论 -
DEBUG日志宏定义
日志宏定义#define UBC_DEBUG(fmt,args...) printf("[SDK COMMON] %s[%d] -> " #fmt "\n", __FUNCTION__, __LINE__, ##args);原创 2021-11-17 16:50:24 · 1351 阅读 · 0 评论 -
【C语言】带头节点的链表的增删改查示例
#include<stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;}NODE;NODE * creat_List_head();int list_add_item(NODE *list, int data);int list_delete_item(NODE *list,int num);int list_update_item(NODE*lis.原创 2021-10-22 17:19:23 · 221 阅读 · 0 评论 -
【C语言】带头节点的链表的增删
#include <stdio.h>typedef struct grade{ int score; struct grade *next;}NODE;NODE *list_creat();int list_insert(NODE* head,NODE *pNew);int list_delete_item(NODE *list,NODE *item);void list_destory(NODE *list);void showList(NODE *he.原创 2021-10-21 18:10:02 · 166 阅读 · 0 评论 -
【c语言】指针的指针使用方法
指针的指针一般用法是外部人申明,传入另一个函数以后由这个函数申请空间,但是需要注意的是,要在传入之前给这个指针的指针初始化。例如#include<stdio.h>typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef struct{ u16 value_handle; u8 offset; u8 *data; u16 len;} ble_gatts_原创 2021-10-09 17:52:25 · 1516 阅读 · 0 评论 -
【嵌入式linux】bootloader详细介绍
Bootloader介绍:1、Bootloader是硬件启动的引导程序,是运行操作系统的前提。2、是操作系统内核或者用户应用程序运行之前运行的一小段代码,堆软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;3、嵌入式系统中,整个系统的启动加载任务通常由bootloader完成。4、主要是初始化硬件设置一些环境变量参数,比如加载系统的地址或者连接的主机ip等操作模式自启动模式:bootloader从目标机上的某个固态存储设备上将操作系统加载到ram中,整个过程...原创 2021-05-07 23:39:57 · 2639 阅读 · 1 评论 -
【嵌入式】嵌入式中的总线介绍
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,。按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。扩展资料数据总线原创 2021-05-07 23:38:12 · 1917 阅读 · 2 评论 -
【C语言】关于c语言中检查内存泄漏的办法
关于c语言中检查内存泄漏的办法从一开始设计之初 就应该有单独分层。将底层的malloc和free等函数 加一层自己的系统函数层。这样有助于后期的移植和检查内存泄漏。例如test_malloc test_free 假如发现了内存泄漏。并且是已知的某个流程。那么我们即可重构一下我们的test_free和test_malloc。 思路如下:首先做一个list或者数组,最好是结构体的,元素为 地址和大小 时间等。有能力的可以增加函数名,更方便。在test_malloc中,每次调用都将本次申请成功的内存地址和原创 2021-04-15 18:12:38 · 1796 阅读 · 0 评论 -
【DHCP协议】DHCP工作过程和报文作用
DHCP工作过程和报文作用DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP协议共有8种报文,分别为...原创 2021-02-24 17:22:18 · 3622 阅读 · 0 评论 -
【计算机网络】抓取路由器包
前置条件:1、镜像交换机:笔者使用的是tp-LINK的5口千兆镜像交换机 TP_5G20052、2个路由器 : A路由器正常的接收入户线插于wan口,B路由器关闭dhcp功能做交换机使用。3、3根网线: A和镜像交换机的lan口用网线连接。 B和镜像交换机的lan口用网线连接, PC接镜像交换机的镜像口。4、wireshark软件:用于抓包;这样就可以抓取 通过B的路由器的所有数据包了...原创 2021-02-23 17:22:55 · 5552 阅读 · 0 评论 -
【软件使用心得】vscode快捷键
主命令窗口查找:查找文件窗口,Ctrl+P 搜索变量或者函数(跳转到symbol),Ctrl+Shift+O 跳转到行数,Ctrl + G代码编辑:代码行缩进,Ctrl + [,Ctrl + ] 代码格式化,Alt + Shift + F或者先Ctrl+Shift+P后输入Format Document 上下移动一行Alt + Up,Alt + Down 向上向下复制一行,Alt + Shift + Up或者Alt + Shift +Down 在当前行下面插入一行Ctrl...原创 2021-02-23 10:27:29 · 268 阅读 · 1 评论 -
【工作记录】工作中需要用到的一些很方便的软件
1、软件开发过程中,经常需要画流程图,所以我找了几个好用的流程图软件,1、visio(这就不说了,大家都知道),2、mindmaster(思维导图,还挺好用)2、看代码,我经常用source insight ,这个网上下载一个,再弄个破解工具,很简单的就装好了。3、对比文档软件,beyond compare :这个比对软件挺好用,二进制也可以比,爽。4、ios软件安装工具:爱思助手。这个百度一下,按教程使用就好。5、测试使用demo代码的小工具(我主要用C),dev-c++:挺小的软件,开源原创 2020-11-13 10:33:18 · 312 阅读 · 1 评论 -
【C语言】字符串转为十六进制(str_to_hex)
近日在开发过程中,遇到一个问题。将字符串转为十六进制,利用snprintf转换str的格式。下面贴上代码实现。#include <stdio.h>void test_printf5(char *str,int length){ int iii; printf("the str is:"); for(iii= 0;iii <length;iii++) { printf("%02x ",str[iii]); } printf("\n");} /*str原创 2020-09-28 16:47:07 · 25552 阅读 · 2 评论 -
【操作系统】中断和轮询的异同点
中断的基本概念程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。二、80x86微处理器的中断80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。中断的一般过程:..转载 2020-06-08 16:26:14 · 2750 阅读 · 0 评论 -
打印short、long、long long和unsigned类型
打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。如果系统中int和long的大小相同,使用%d就行。但是,这样的程序被移植到其他系统(int和long类型的大小不同)中会无法正常工作。在x和o前面可以使用l前缀,%lx表示以十六进制格式打印long类型整数,%lo表示以八进制格式打印long类型整数。注意,虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。 C语言有多种printf()格式。对于...原创 2020-05-20 16:53:15 · 5129 阅读 · 0 评论 -
【C语言】字符的大小写转换
大小写转换原理:根据ascii值来对字符进行大小写转换。每个字符在计算机存储中都是转换成ascii码值。然后再转换为0和1;函数方法://小写转大写int toupper(int c) { if(c >= 'a' && c <= 'z') return c + 'A' - 'a'; return c;}int tolowe...原创 2020-04-28 16:27:32 · 1543 阅读 · 0 评论 -
【C语言】柔性数组----可变长度的数组
1、什么是柔性数组?柔性数组既数组大小待定的数组, C语言中结构体的最后一个元素可以是大小未知的数组,也就是所谓的0长度,所以我们可以用结构体来创建柔性数组。2、柔性数组有什么用途 ?它的主要用途是为了满足需要变长度的结构体,为了解决使用数组时内存的冗余和数组的越界问题。3、用法:在一个结构体的最后 ,申明一个长度为空的数组,就可以使得这个结构体是可变长的。对于编译器来说,此时长度...转载 2020-04-24 15:43:45 · 1331 阅读 · 1 评论 -
【嵌入式操作系统】FreeRTOS信号量mutex和semaphore的区别
今天学习信号量mutex和semaphore的区别,找到了正点原子的博客介绍,讲的挺详细的。建议大家阅读转载自:https://blog.csdn.net/nippon1218/article/details/790391971 二值信号量1.1 二值信号量简介二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别,互斥信号量拥有...转载 2020-04-23 10:55:19 · 5763 阅读 · 0 评论 -
【C语言】指针初始化问题
在C语言中。指针初始化通常同 char *str = NULL.而不能写成 char *str.。如果使用第一种,是正确的。因为NULL是被C库宏定义过的。 #define NULL (void*)0 所以赋值以后 这个指针实际是指向0的;也就是NULL 是“零值、等于零”的意思,所以在使用的时候不会出现空指针的问题。如果是第二种。可以这样写。但是必须malloc。如果后面你没有ma...原创 2020-04-17 17:49:32 · 485 阅读 · 0 评论 -
【C语言】项目开发,小细节总结
u16->u8* 取地址,强转。 u8->u16 atoi int atoi(char *str); 类函数宏定义 例如/ #define set_num (a,15) a=15 在打印的时候,控制log级别,可以给封装的printf传入级别。 然后用宏控制打印。方便调试。 使用宏串联结构体数据赋值 #define COMMOND(NAME) ...原创 2020-04-17 16:03:19 · 616 阅读 · 0 评论 -
【C语言】callback函数,回调函数简单例子
#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef void (*ota_start_fun)(int *num1,int *...原创 2020-01-02 16:18:50 · 1167 阅读 · 0 评论 -
【git】git merge 的时候出现 MERGING
今天在玩git 的时候,准备将自己的分支代码合并到同时的分支上,结果在执行git merge的时候出现了如下的情况:我在我的分支下 我的分支是 dev_mine执行 git merge dev_tongshi出现了CONFLICT (content):Merge conflict in *****.cCONFLICT (content):Merge conflict in ...原创 2019-11-21 11:18:14 · 3952 阅读 · 0 评论 -
【C语言】!!是什么意思?
在C语言中 ! 本来是逻辑运算符逻辑非的意思。逻辑操作符一般将其操作数视为条件表达式,返回结果为Bool类型它的结果不是1 就是0 如果两个!! 在一起出现,则为先将一个非bool类型转换为bool类型。先取反 再取反,示例 !!(arr[2] & 0x04) 此行代码的意思就是将arr数组的 第三位去判断是否是1(arr[2] & 1 )=...原创 2019-10-30 10:38:11 · 36663 阅读 · 3 评论 -
【C语言】C语言打印16进制出现0xffffff现象的问题剖析!
今天在博问里面看到一个朋友的问题,大致是在网络程序中,打印出来的16进制数,莫名的出现ffffff。例如,某个byte真是值为0xc9,打印出来确是0xffffffc9。其实类似的问题不是只在网络程序中才会出现的,看示例代码: 1 #include <stdio.h> 2 int main() 3 { 4 char c = 0xc9; 5 p...转载 2019-10-12 10:27:28 · 1611 阅读 · 0 评论 -
Git基本使用指南
前言开发过程中会遇到各种各种的问题,我们必须要代码稳定,这个时候就需要版本管理工具了,有了版本管理工具,遇到bug的时候,就可以自己新开一个分支然后在分支上解决该 bug, 解决之后然后在合并到开发分支就好。既能保证现有代码的质量还能更好的解决问题。 以前的开发方式比较混乱,好多人都在往一个分支上提交代码,这样不能保证项目的稳定性,也比较危险,如果那个人 执行了 git push origi...转载 2019-03-15 10:34:12 · 397 阅读 · 0 评论 -
【嵌入式】位操作 --设置比特位,清除比特位
位操作(Bit manipulation)嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。最佳的解决方案如下:#define BIT3 (0x1 << 3)static int a;void set_bit3(void){ a |= BIT3...原创 2019-03-15 13:32:46 · 2952 阅读 · 0 评论 -
【C语言】printf 输出打印 格式介绍
printf(格式控制,输出列表)格式控制包括格式说明和格式字符。格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。格式字符有d,o,x,u,c,s,f,e,g等。如%d整型输出,%ld长整型输出,%o以八进制数形式输出整数,%x以十六进制数形式输出整数,%u以十进制数输出uns...转载 2019-07-11 14:50:46 · 985 阅读 · 0 评论 -
【C语言】卫语句的解决处理方法
在编程过程中,条件式通常有两种呈现方式,第一种形式是:所有的分支语句都属于正常的行为,第二种形式则是:条件式提供的答案只有一种是正常行为,其他都是不常见的情况. 例如:double getPayAmount(){ double result; if(_isRead) result = deadAmount(); else{ if(_isSeparated) re...原创 2019-07-31 17:37:11 · 918 阅读 · 0 评论 -
linux动态库的初始化和清理(init()函数和fini()函数)
a. Windows 中有 DllMain 入口函数, 而 Linux 中则没有。 b. Linux 中有特殊函数 _init 和 _fini, 主要是分别用来初始化动态库和关闭的时候 做一些必要的处理, 我们可以把自己认为需要的代码放到这两个函数里面, 它们分别 在动态库被加载和释放的时候被执行。具体说, 如果一个动态库里面有一个名字为 "_init"...转载 2019-08-07 13:45:22 · 4458 阅读 · 0 评论 -
【计算机基础】计算机中Bit,Byte,WORD,DWORD区别和联系
基本概念:位(Bit):“位”或“比特”,是计算机运算的基础;字节(Byte):“字节”是通过网络传输信息(或在硬盘或内存中存储信息)的单位。字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“....转载 2019-09-25 15:12:03 · 6057 阅读 · 0 评论 -
C/C++ 编译过程详解
GCC编译过程四个步骤:1、预编译 --处理头文件,处理宏定义2、编译 --- C代码编译成 .s文件3、汇编 --- .s头文件汇编成机器码.o4、连接 --- 吧不同的.o文件连接起来。生成一个可执行文件编译器的主要组件:分析器: 将源语言程序代码转换为汇编语言,因为要从一种格式转换为另一种格式分析器需要知道目标机器的汇编语言。 C -...原创 2018-07-20 16:14:09 · 342 阅读 · 0 评论 -
C语言文件I/O 读取一个文件并输出出来 和 输出到另一个文件里面
#include<unistd.h>#include<stdio.h>#include<fcntl.h>#include<sys/types.h>#define SIZE 50int main(void){ char buf[SIZE]={0}; //接收读取的东西的盒子 int ret = 0; // re...原创 2018-06-06 14:22:54 · 6698 阅读 · 0 评论 -
C语言中的0U或1U是什么意思?
最近学STM32的芯片,官方例程中很多地方有0U/2U/4U...这类的表示,刚开始有些迷茫,细查之后得知,都是C放言默认的数据类型表示.在C语言中,数值常数默认为int型,当数值常量后边有U/UL/f等尾缀时,代表指定其数据类型. 0U 表示 无符号整型 0 1U 表示 无符号整型 1 如果不写U后缀,系...转载 2019-03-04 10:10:57 · 85223 阅读 · 2 评论 -
【C语言】巧用goto语句计算键盘输入字符长度
今天研究goto语句,突然看到有网友说用goto语句来计算键盘输入字符长度,觉得挺好用,在此贴出来: #include<stdio.h>int count;void getCharLength(){ printf("input a string:\n"); calLength: if(getchar() != '\n') { coun...原创 2019-02-14 14:25:26 · 395 阅读 · 0 评论 -
信号signal()函数有关代码
/************************************************************************* > File Name: signal.c > Author: > Mail: > Created Time: 2018年06月08日 星期五 20时10分00秒 ************************...原创 2018-06-08 20:25:19 · 806 阅读 · 0 评论 -
守护进程的创建 --详细解答
守护进程 先说概念吧: 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。 然后说 特点吧 : 守护进程最重要的特点是...原创 2018-06-08 19:10:56 · 286 阅读 · 0 评论 -
二叉树的遍历和面试题
typedef int data_t typedef struct node_t { data_t data; struct node_t *lchild, *rchild; }bitree; bitree_t *root; /*先序遍历 若二叉树为空树,则空操作,否则 访问根结点, 先序遍历左子树 先序遍历右子树 */...原创 2018-06-01 14:37:00 · 1964 阅读 · 3 评论 -
python写俄罗斯方块
#coding=utf-8 from tkinter import *from random import *import threadingfrom tkinter.messagebox import showinfofrom tkinter.messagebox import askquestionimport threadingfrom time import sleep...原创 2018-06-01 09:37:52 · 3376 阅读 · 2 评论 -
TCP协议中的三次握手和四次挥手
为什么要进行三次握手?(是为了建立连接) 答:三次握手的目的是建立可靠的通信信道,简单来说就是数据的发送和接收,而三次握手的主要目标就是双方确认自己与对方的发送和接收都正常。 第一次握手:客户端给服务器发送请求沟通的信息,服务器接收到信息(就类似于拨电话给服务器) 第二次握手:服务器给客户端发送接收到信息的确认信息,(类似于服务器接通电话了,...原创 2018-06-14 19:25:37 · 260 阅读 · 0 评论