自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IAR编译报错[a148]:intrinsic function “nounwind air builtin dsb“is not

报错原因是芯片类型没选或者选错。我芯片是用GD32F30X的。去GD网站(gd32mcu.com)下载芯片包。然后右键工程名,在Option里更改芯片类型。下载芯片包可参考该链接https://blog.csdn.net/zouxin_88/article/details/125450345

2022-10-28 12:47:12 818 1

原创 I/O复用(poll、select)

问题:什么情况下要用I/O复用?以下例举几种情况:1、当客户机处理多个描述符时,必须使用I/O复用。2、TCP服务器既要处理监听套接字,又要处理已连接套接字。3、一个服务器既要处理TCP,又要处理UDP。等等...

2022-02-13 23:21:25 489

原创 setsockopt()函数详解

函数原型:int setsockopt(int sockfd , int level, int optname, void *optval, socklen_t *optlen);函数功能:设置套接字描述符的属性。参数:sockfd:指向要设置的套接字描述符。level:

2022-01-27 11:50:49 22125 1

原创 【网络编程】基本UDP套接字

使用TCP编写和UDP编写的应用程序之间存在一些本质差异,主要在于两个传输层之间的差别:UDP是无连接不可靠的数据报协议,TCP是提供的是面向连接的可靠字节流。但是有些场合确实更适合于UDP,比如:DNS,NFS,SNMP(简单网络管理协议)。如下是UDP客户、服务器程序的函数调用,可以与上一篇的TCP对比查看。从图中可以看出,客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,而服务器只管调用recvfrom函数,等待来自某个客户的数据到达。recvfrom和sendto和标准里的

2022-01-22 22:16:27 2162

原创 【网络编程】基本TCP套接字

在上一篇博客中,介绍了一些常用的套接字API。现在就用这些api来写一个简单的C/S架构,也就是一个服务器,一个客户端。实现的功能如下:1、客户从标准输入读入一行文本,并写给服务器;2、服务器从网络输入读入这行文本,并回射给客户;3、客户从网络输入读入这行回射文本,并显示在标准输出上。这是一个全双工的TCP连接。在这之前补充一下bind这个函数。bind就是将IP地址和端口与套接字符绑定的一个函数...

2022-01-22 20:17:47 4604

原创 Socket是什么?

socket(套接字)是网络进程中通信的一组接口,例如就是你和你朋友聊QQ时,两个QQ之间的通信方式。Socket起源于Unix,我们知道Unix里一切皆文件,Socket是这种模式的一种实现。Unix里面有read,open,close等操作函数,Socket里有socket,bind,linsten等函数来操作。下面介绍常用的Socket api :1、socket函数原型:int socket(int domain,int type,int protocol)用于创建一个socket描述符。指

2022-01-16 22:36:17 3431

原创 ps、top、crontab等进程相关命令

在Linux使用中,有各种各样的命令来操作系统。下面介绍进程显示的一些命令。ps命令:是process status的缩写。把所有进程显示出来:ps –auxps –A把所有进程显示出来,并输出到ps.txt:ps –aux -> ps.txt查找特定进程信息:ps –ef | grep ssh显示指定用户信息:ps –u roottop命令:显示系统中各个进程的资源占用情况。显示进程信息:top显示完整的进程信息:top –ccrontab命令:提交和管理用户

2022-01-06 21:56:26 592

原创 进程与线程(Linux环境)

概念:进程:一个程序在一个数据集合上的一次运行过程,是分配和管理资源的基本单位。线程:线程是进程中的一个实体,是被系统调度和执行的基本单位。一个进程可以包含多个线程。需要做区分的两个常用名词:作业:作业是用户提交给系统的一个任务,一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。管程:管程实际上是定义了一个数据结构和在该数据结构上的能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。进程的创建:...

2021-12-26 21:31:49 519

原创 从单片机步入Linux驱动开发(概念和Demo)

单片机的裸跑能实现很多功能,代码量也不大,但是在嵌入式领域不学习Linux,那写再多的代码也枉然,因为有无数的大牛给Linux添砖加瓦,并且Linux有开放源码,易于移植,资源丰富,免费等优点。首先我们看一个Linux系统的内容:可以分为应用程序、库、操作系统、驱动程序。一共五个层次,如下图:应用程序层是直接使用open read write ioctl这些库函数。Linux驱动开始是要根据项目需求编写具体的驱动程序,也就是open read write ioctl这些函数的具体内容。不同的外设有不同

2021-11-28 21:20:41 1479 1

原创 插入排序,冒泡排序和快速排序

下面介绍3种常用的排序算法先定义一个seqlist.cpp,如果你需要跑代码,需要用到里面的常用函数//顺序表基本运算算法#include <stdio.h>#define MAXL 100 //最大长度typedef int KeyType; //定义关键字类型为inttypedef char InfoType;typedef struct{ KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType} RecTyp

2021-11-05 23:32:59 251

原创 哈夫曼树和哈夫曼编码

结点的权:将树中的结点赋予一个有意义的数值,称此数值为该结点的权。带权路径长度:从根结点到该结点之间的路径长度与该结点上权的乘积称为结点的带权路径长度(WPL)。树中所有叶子结点的带权路径长度之和称为该树的带权路径长度。哈夫曼树概述:在n0个带权叶子结点构成的所有二叉树中,带权路径长度WPL最小的二叉树称为哈夫曼树或最优二叉树。因为构造这种树的算法最早是由哈夫曼于1952年提出的,所以以他的名字命名。哈夫曼树可用于构造使电文编码的代码长度最短的编码方案。哈夫曼编码:设需要编码的字符集合为{d1,d

2021-11-02 19:59:57 381

原创 【数据结构】二叉树的遍历(递归的方式)

概念:二叉树的遍历是指按照一定的次序访问二叉树中的所有结点,并且每个结点仅被访问一次的过程。遍历有四种方式:1、先序遍历:1)访问根结点2)先序遍历左子树3)先序遍历右子树2、中序遍历:1)中序遍历左子树2)访问根结点3)中序遍历右子树3、后序遍历:1)后序遍历左子树2)后序遍历右子树3)访问根结点4、层次遍历:1)访问根结点2)从左到右访问第2层的所有结点3)从左到右访问第3层的所有结点、…、从左到右访问第h层前三种的代码实现如下://先序遍历void PreOrd

2021-11-01 20:48:33 375

原创 【数据结构】二叉树的基本运算算法(递归的方式)

二叉树有顺序存储结构和链式存储结构以下采用二叉链存储结构。内容总结自李春葆的数据结构教程首先定义一个数据类型和结点类型1、创建二叉树void CreateBTree(BTNode * &b,char *str) //创建二叉树{ BTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; char ch; b=NULL; //建立的二叉树初始时为空 ch=str[j]; while (ch!='\0') //str未扫描完时循环

2021-10-31 17:37:53 537

原创 【数据结构】树的性质

树的定义:树(tree)是由n(n>=0)个结点组成的有限集合(记为T)如果n=0,它是一颗空树,这是树的特例;如果n>0,这n个结点中有且仅有一个结点作为树的根节点,简称为根,其余结点可分为m(m>=0)个互不相交的有限集T1,T2,…Tm,其中每个子集又是一棵符合本定义的树,称为根结点的子树。树的基本术语如下:1、结点的度与树的度2、分支结点与叶子结点3、路径与路径长度4、孩子结点、双亲结点和兄弟结点5、结点层次和树的高度6、有序树和无无序树7、森林性质1:树中的

2021-10-31 17:26:41 3058

原创 单链表的实际应用

首先问一个问题:算法是什么?在我看来,算法就是一个解决问题的方法,当你的问题越复杂,你需要的算法就更复杂。需要更多更复杂的代码来实现。在下面的例子中就有算法的体现。下面以一个例子来讲解单链表的应用级操作。其实在做具体项目时,跟这个例子也相似,你要明白实现这个功能要做哪些事情,这个是重点。当你明白之后再去写代码,这时就要选择好的语句来实现功能(if?while?switch?…),最后调试,查看自己写的程序有没有问题,在产品开发时也是如此。如下所述:设有一个emp.dat,每个职工记录包含职工编号(n

2021-10-10 13:42:59 2079 2

原创 循环双链表的基本运算算法(增删改查)

目的:领会循环双链表存储结构和掌握循环双链表中的各种基本运算算法。如果双链表的操作会了,单链表那是手到擒来,很简单。下面用一个实验来实现,该实现完成了以下功能:1、初始化循环双链表h。2、依次采用尾插法插入a、b、c、d、e五个元素。3、输出循环双链表h。4、输出循环双链表h的长度。5、判断循环双链表是否为空。6、输出循环双链表h的第3个元素。7、输出元素a的位置。8、在第4个元素的位置上插入f元素。9、输出循环双链表h。10、删除循环双链表h的第3个元素。11、输出循环双链表h。

2021-10-08 19:07:28 1821

原创 LCD1602驱动(51单片机)

LCD1602介绍:是一个只能显示字母、数字、符号的点阵型液晶模块。一行可以显示16个字符,可以显示两行,所以叫做1602。图片:硬件分析:1602一共有16个引脚,其各个引脚的功能如下所示根据各个引脚的功能,需要设置如下电路(主芯片是AT89C52):其中VO(VL)接的是一个电位器,你也可以接一个适当阻值的电阻连到GND。RS-P26RW-P25E-P27DB0~7接到P0~7这十个引脚就是与1602通信的线路。当硬件连接好后,就需要有配套的软件。程序需要2步,缺一不可:

2021-10-04 14:19:39 6193 5

原创 【C和指针】字符串、字符及其库函数

本文包含以下函数的讲解strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp,strchr,strrchr,strpbrk,strstr,strspn,strtok,tolower,toupper,memcpy,memmove,memcmp,memchr,memchr字符串定义:字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。(NUL字节就是编译器提供的结束符’\0’字符)先区分一下NUL和NULL。NUL用于结束用ASCII表示

2021-10-03 20:45:56 141

原创 【C和指针】指针

指针的概念:说的实用一点,指针就是地址。包括对指针的各种操作,就是对地址和变量之间的互相转换等操作(个人理解);地址的概念:计算机的内存都是由0和1组成的。由于0和1只能表示两种情况。所以在使用时一般由8个bit构成一个字节。由字节来表示各种东西。上面的每一个方框都表示一个字节(Byte),里面存储的我们定义的数据,方框上面的数字就是该变量的地址,当地址+1,就是往后移了一个字节。我们为了存储更大数据,常常将好几个字节合在一起作为存储单位。如下图,用四个字节来表示一个整形(注意:一般情况下一个int

2021-10-03 12:06:19 179

原创 使用GD芯片的AD采样,经常会出现AD值为0

在嵌入式开发的路上经常会遇到一些奇怪的问题。记录下慢慢积累。有一次在做一个电机堵转保护的功能,是用AD采样来实时采集 电机驱动芯片的电流,超过5A时将电机强行关闭并限制相应功能,采样电阻为0.05欧。程序设定是电流超过5A并且连续超过4s时停止工作。但是在这4s内会出现很多0的值,导致不管你电流值多大,都不能达到堵转的条件(无法满足连续4s的条件),从而没有保护功能。奇怪的是在另一个厂家的芯片都可以实现,并且是同样的程序设定。百思不得其解。后面用示波器抓去了采样口的电流,发现是PWM波,如果你的电机用

2021-04-11 15:06:40 2793

原创 STM32串口显示DHT11温湿度数据,YL-69土壤湿度

用的控制器是STM32F103C8T6,如果你用STMF103的其他芯片来跑这个代码也能跑通,基本配置都是一样的。先介绍DHT11温湿度数据的采集,有两个文件,一个DHT11.c,还有一个DHT11.h我的DHT11是三线的,没有一个DATA数据接口,接单片机的PB14引脚。DHT11.c代码如下#include "dht11.h"//////////////////////////////////////////////////////////////////////////////////

2020-05-14 15:04:15 9841 35

原创 STM32的串口打印土壤湿度传感器(YL-69)数据

最近在弄课设,需要使用土壤传感器来读取数据,用来测量土壤或其他的湿度数据,我选择使用串口打印数据。用的控制器是STM32F103C8T6,在网上找了好多代码,各种问题,都没有用,或许的要实现的功能不一样,有些是要在OLED显示的,所以放进去就没用,所以就就写下这篇博客,来弥补这一程序空缺。由于我用的是STM32的芯片,所以那些51的代码都没有试,可能有些有用,有兴趣的可以去试一下。先介绍硬件及连线,有助于初学者理解。传感器及芯片都是在淘宝的优信电子上面购买的,个人感觉这个店比较好。最小系统用的是STM

2020-05-14 01:48:10 31619 89

原创 安装Android SDK时,点击SDK Manager.exe闪退(打不开),并且jdk的环境变量是对的。

最近开始倒腾安卓开发,首先配置开发环境,可谓是历经磨难。安装Android SDK时,点击SDK Manager.exe闪退,并且jdk的环境变量是对的。弹出DOS界面立马又消失了简单的说Android开发环境有这四步:第一步、安装JDK;第二步、安装Eclipse;第三步、下载并安装AndroidSDK;第四步、为Eclipse安装ADT插件我的问题是出在第三步,安装Android...

2020-03-31 16:40:56 2673 6

原创 CentOS 7安装和配置中文输入法

本篇博客是CentOS7的中文输入法配置注意:CentOS6的有点不一样,特别是命令首先使用yum安装中文输入法yum install ibus-libpinyin如果你输入的是这个命令yum install “@Chinese Support”,那就错了,会一直提示安装失败,因为这是CentOS 6 的中文输入法安装命令。输入正确的命令之后会提示安装成功,如果本来有的就会显示已经存...

2020-03-29 16:30:23 1399

原创 semanage命令(Linux)

semanage命令用于管理SELinux的策略,格式为“semanage [选项] [文件]”。SELinux服务极大地提升了Linux系统的安全性,将用户权限牢牢地锁在笼子里。semanage命令不仅能够像传统chcon命令那样—设置文件、目录的策略,还可以管理网络端口、消息接口(这些新特性将在本章后文中涵盖)。使用semanage命令时,经常用到的几个参数及其功能如下所示:Ø -l参数用...

2019-08-16 10:27:56 7822 1

原创 更改网站数据保存目录

网站数据默认是保存在/var/www/html目录中,而如果想把保存网站数据的目录修改为/home/wwwroot目录,该怎么操作呢?且看下文。第1步:建立网站数据的保存目录,并创建首页文件。[root@LinuxLehehe ~]# mkdir /home/wwwroot[root@LinuxLehehe ~]# echo "The New Web Directory" > /hom...

2019-08-16 10:23:14 555

原创 使用 Apache 服务部署静态网站

先配置好网站服务程序第1步:把光盘设备中的系统镜像挂载到/media/cdrom目录。[root@LinuxLehehe ~]# mkdir -p /media/cdrom[root@LinuxLehehe ~]# mount /dev/cdrom /media/cdrommount: /dev/sr0 is write-protected, mounting read-only第2步...

2019-08-16 10:17:37 134

原创 LVM(逻辑卷管理器)

当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了 — LVM(逻辑卷管理器)。LVM 可以允许用户对硬盘资源进行动态调整。下面就给大家介绍一下部署逻辑卷的方法步骤。常用的 LVM 部署命令功能/命令 物理卷管理 卷组管理 逻辑卷管理扫描 ...

2019-08-15 23:43:12 200

原创 文件系统与数据资料

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。➢ Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百...

2019-08-10 21:46:29 140

原创 Linux 系统中常见的目录名称以及相应内容

Linux的主文件夹下的文件夹,以及其对应的名称或所默认存放的文件加粗的是运维人员必须掌握的文件夹/boot 开机所需文件 — 内核、开机菜单以及所需配置文件等/dev 以文件形式存放任何设备与接口/etc 配置文件/home 用户家目录/bin 存放单用户模式下还可以操作的命令/lib 开机时用到的函数库,以及/bin 与/sbin 下面的命令要调用的函数/sbin ...

2019-08-10 21:31:27 336

原创 CentOS或RHEL重置开机密码

话不多说,直接上货(建议是CentOS或RHEL系统)。在root账号中输入命令[root@LinuxLehehe ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.0 (Maipo)重启Linux系统主机并出现引导界面时,按下键盘上的e键进入内核编辑界面,如图所示。在linux16参数...

2019-08-04 20:25:01 181

原创 常见信息安全威胁(病毒等)

常见信息安全威胁(病毒等)第一种:在数据传输过程中第二种:应用安全威胁第三种,数据传输与终端威胁小结:先说一个信息安全的案例,2017年5月,WannaCry勒索软件全球爆发。想必很多人在那天打开电脑的时候,都发现自己的电脑中病毒了,且所有的数据都已经被加密锁定了,需要支付一定额度的比特币才能对自己的文档数据进行解密。本次安全事件最大的受害者是大学毕业生,自己的准备几个月的毕业论文数据被锁定,心...

2019-05-24 00:08:37 5285

空空如也

空空如也

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

TA关注的人

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