自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 路由器开发————概念理解

区别:静态ip: 可以直接使用Internet上网的IP(相当于公网IP)pppoe: 从运营商那里动态获取的静态IP的过程就是PPPOE(运营商为了提高他手上拥有的静态IP的利用率,而做出的动态向用户分配公有IP和回收公有IP的方式,前提是必须通过运营商的认证,即需要运营商提供的账号和密码)。dhcp: 前提上端接外网,和pppeo差不多就是不需要认证就能获得动态的公有IP,因为DHCP的服务器随机从所有能上网的IP里面分配一个给你中继模式:防火墙:一般用在需要连接外网的地方,比如交换机、路由器

2021-08-21 15:03:34 587 1

原创 计算机网络————网络层

引言数据链路层解决了同一个网络中各个相连的主机之间彼此接收到的数据帧不出错的问题。同一个网络中主机之间的通信问题解决了,但是网络与网络之间的主机通信怎么解决呢?这是网络层要解决的主要问题1、网络中常见的设备工作的层次转发器、集线器工作在物理层网桥、桥接器、交换机工作在数据链路层路由器工作在网络层网关工作在网络层以上2、分类的IP地址1)IP地址表示方法:IP地址::={<网络号>,<主机号>}2)三类单播地址(一对一通信)A类、B类、C类三类IP地址的结构和网

2021-07-02 23:19:36 373 2

原创 计算机网络————数据链路层

链路与数据链路链路:从一个结点到相邻结点的一段物理线路数据链路:物理线路+控制数据传输的通信协议物理层的基本数据单元是比特,数据链路层的基本数据单元是帧从网络层下来的IP数据报又叫(数据报、分组、包)三个基本问题封装成帧: 接收端在收到物理层上交的比特流后,根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束,说白了就是从比特流中根据帧界定符(帧开始符和帧结束符)确定比特流中一帧数据的位置透明传输: 为了解决帧的数据部分出现了和帧开始符、帧结束符相同的数据而影响一帧数据位置的判断,采用下

2021-07-01 10:17:51 743 1

原创 计算机网络————概述

文章目录1、网络、互连网、互联网2、互联网组成3、C/S模式与P2P模式4、电路交换、报文交换、分组交换5、不同类别的计算机网络6、计算机网络性能7、四层、五层、七层模型1、网络、互连网、互联网网络:由若干结点和连接这些结点的链路组成。网络中的节点可以是计算机、集线器、交换机、路由器等互连网:通过路由器来实现网络之间的互连。又叫做网络的网络互联网(因特网):全球最大的、开放的、由众多网络互连而成的特定互连网,采用 TCP/IP协议族 作为通信规则2、互联网组成边缘部分:由所有连接在互联网上的主

2021-06-28 11:14:14 158

原创 switch中多个case值对应一个执行语句

引言最近做电能表相关通信协议的工作,看了些开源代码,发现在一些有相同属性的变量处理上使用到了switch case语句,设计得比较精妙,当有多个属性相同的case值的时候可以执行具有相同属性的同一个语句,比如在通信协议中收到的电流、电压、有功功率帧数据都需要进行BCD码转float型的时候就可以用一个语句解决三种情况下的处理工作。简单示例#include <stdio.h>int main(){ int a=0; printf("input value

2021-04-27 18:07:23 10939

原创 Linux串口编程

文章目录前言串口创建树莓派端Ubuntu 1404端串口调用文件前言第一次用串口连接两台Linux设备进行通行,慢慢的还要在串口通信的基础上实现其他的通信协议,看别人的开源代码已经看得神魂颠倒,神志不清,差点在暴毙的边缘了,该好好整理一下串口编程的一些基本知识了,帮助自己疏通一下设备说明:Ubuntu 1404:使用USB转串口 树莓派:直接使用接杜邦线的物理串口串口创建俗话说Linux下一切设备皆文件,接触越多越是能切身体会到这一点,termios结构体串口编程参考博文树莓派端

2021-02-02 22:02:35 391

原创 C语言条件编译

引言最近又开始看一些开源项目的代码,一些常见的预处理指令平时只有在编写头文件的时候才会用到一些,还有就是注释掉一段内容的时候用的多一点,其他的预处理指令平时基本没用过,今天在看开源项目的时候在C文件中看到很多预处理指令看得云里雾里,所以打算停下来学习一下顺便总结之前学过的内容再上路头文件定义中常用宏定义#ifndef XXX_H#define XXX_H/* 中间声明一些要在C文件中定义的函数,当然也可以不在头文件中声明就在.C文件中直接定义,因为在C中如果你不在头文件中声明就直接定义,就

2020-12-27 23:43:43 147 1

原创 头文件中定义全局变量

引言这些天写的程序中用到了全局变量,一开始是在一个文件下做测试后来把文件按逻辑拆分了一下,不同的代码被放在了几个文件中,最后用Makefile来编译就遇到了今天的话题,怎么在头文件中定义全局变量呢?做法要想一个文件中的变量被一个工程中的其他多个文件同时访问就要借助extern关键字在C文件中定义在头文件中声明其他文件要用到该变量时直接引用头文件//如:parser.h中声明count、g_sigstop为全局变量#ifndef PARSER_H#define PARSER_Hexter

2020-08-14 21:11:05 5032

原创 ubuntu1404 下配置stunnel加密普通socket程序

安装stunnel1.安装命令apt-get install stunnel2.安装成功后,编辑/etc/default/stunnel4,将参数ENABLED设置为1... ENABLED=1... 3.打开配置文件,如果没有就创建配置文件。sudo vim /etc/stunnel/stunnel.conf4.在配置文件中新增如下内容,然后保存退出。debug = 4output = /var/log/stunnel.logsslVersion = all[redis-c

2020-07-29 17:54:20 447

原创 OpenSSL单向与双向认证通信

C/S中单向认证大致流程C/S中双向认证大致流程使用命令生成各自的私钥和证书客户端:openssl req -newkey rsa:512 -nodes -keyout client.key -x509 -days 5 -out client.crt服务器端:openssl req -newkey rsa:512 -nodes -keyout server.key -x509 -days 5 -out server.crt测试一下:google@ubuntu1404:~/work

2020-07-10 11:39:33 2853 1

原创 OpenSSL源码安装

安装包下载地址:https://www.openssl.org/source/#解压安装tar -zxvf openssl-1.1.1g.tar.gzcd openssl-1.1.1g/./config之后开始编译make 编译后开始安装mak install 这里出了点小问题cp: cannot create regular file ‘/usr/local/lib/libcrypto.so.1.1.new’: Permission denied make: *** [install

2020-07-05 17:59:54 1203

原创 记一次文件操作的失误

记一次文件操作的失误事情经过怀疑人生的时刻解决问题事情经过最近没事闲得慌就到处找Linux命令敲,首先是自己在Windows上找了一个全英文的txt文件然后就稀里糊涂的把文件通过SecuCRT的rz把文件传到Linux终端了,然后用该文件练习grep命令就发生了悲剧怀疑人生的时刻首先是用grep做一些简单的文件过滤操作[google@CentOS7 workspace]$ cat task.txt I am RHCE teacher!I teach linux.test I like

2020-07-01 22:32:07 202

原创 strlen()、sizeof()与\0

引言:今天在用strlen函数的时候计算的结果突然让我惊讶了!完全不是自己所想的,学习了之后打算记录下来strlen()与\0字符串后面接数字,表示的是8进制的意思strlen()默认与\0截止int main(){ char *t0="hhhh\0222222";//"\0"后面接数字表示8进制最大可以是\077 char *t2="pppp0x00tttt"; char *t3="wwww00cccc"; char *t4="ooookkk\0k"

2020-05-28 22:25:34 845

原创 Linux网络编程————多路复用

引言:多路复用模型是五种常见I/O模型之一,使用 select/poll 实现的多路复用 I/O 模型是使用最为广泛的事件驱动 I/O 模型,但是由于 select/poll 实现的不完善,这种 I/O 模型的缺陷也逐渐暴露出来。select 的工作过程如下:调用者初始化自己关心的可读、可写和异常的描述符集。比如对希望在可读时接到通知的描述符,就将其加入 readfds。描述符集的结构...

2020-04-02 00:45:09 418

原创 Linux网络编程————进程间通信

管道(pipe)管道的实质是一个内核缓冲区,进程以先进先出(FIFO, First In First Out)的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的,一个数据只能被读一次,读出以后再缓冲区都不复存在了局限性:1)半双工,数据只能在一个方向流动    2)管道只能在具有公共祖先之...

2020-03-21 13:30:22 412

原创 Linux网络编程————多线程

产生死锁四大必要条件:1)互斥条件,又称独占条件。有些资源只能同时被一个进程所占用,而其他进程不能访问这些已被占用了的资源(哲学家的筷子)。2)请求并保持,也称部分分配条件。当进程等待其他资源时,仍然继续占有已经得到的资源。(每一个哲学家在持有一根筷子不放的同时还再请求另一根筷子,而另一根筷子有被其他哲学家持有不放)3)非抢占条件。进程获得的资源未使用完之前,其他进程不能强占,资源只能被...

2020-03-13 16:57:40 595

原创 Makefile编写

引言Linux下的gcc编译器不会给你自动链接自定义的文件,它只能链接一些库里面的文件,因此少量自定义头文件可以自己用gcc命令把它们链接起来但是当一个工程中定义了大量的函数和变量时我们不可能还像前面一样继续搬砖,这时就不得不用Makefile来实现整个工程的自定义编译了,虽然说很久以前就学习过Makefile的命令了,但是还是俗话说得好,三天不看,不知道啥样!所以还是记录一下以便参考和查询...

2020-03-07 21:27:31 312

原创 GitHub使用

引言很长一段时间没有上传代码到我的Github了,确实经过一段时间也积累了一些代码,越是经过付出得到的越是珍惜,我不想因为自己的Ubuntu崩了以前写的代码看不见踪影,所以突然想起要上传一下代码了,然而我他妈怎么有点记不清Git的操作命令了,别慌!先写个博客记录一下以后好查询当然如果是Ubuntu搞崩了,还得从下载开始对吧!下载Git:sudo apt-get install gi...

2020-03-05 22:41:28 222

原创 常见排序图解

插入类插入排序希尔排序交换类冒泡排序快速排序选择类选择排序堆排序归并类2-路归并排序https://www.cnblogs.com/chengxiao/p/6194356.html分配类桶排序https://blog.csdn.net/qq_37186247/article/details/100834916基数排序...

2020-03-02 16:12:36 1292

原创 指针

常量指针与指针常量int n;const int * pc = &n; // pc定义为常量指针类型,不能通过pc改变指向地址中存的值,但pc指向地址可变// *pc = 2; // Error: n cannot be changed through p without a castpc = NULL; // OK: pc itself can ...

2020-02-29 12:09:52 779

原创 应用程序、API、系统调用、内核、内核模块、驱动程序、设备的关系

引言最近想给开发板做Linux内核移植,一进来发现水很深,有很多东西可以研究,在边移植边学习的过程中很多概念之间的关系一直有点迷糊,干脆就停一下把这块的东西学一下再出发。这里的关系总结都是本着每一层之间的联系来的,概念的概括也都是以与下一级概念关联为目的来概括的所以不是很权威,仅供参考,以理清思路为使用目的应用程序程序员调用API或者库函数编写新的程序实现目标功能构成应用程序A...

2020-01-11 22:44:19 1540

原创 Linux常用命令

344引言 最近得看一些shell脚本,但前面学过的一些Linux命令又使用得很有限,所以掌握得不是很全面,所以打算写一写博客记录一些自己常用的Linux命令,和一些用到过的Linux命令以供后面自己参考和学习,并将长期更新一些没接触过的Linux命令查找命令grep grep是根据文件的内容进行查找,用法可以总结为以下grep '想要在文件中...

2020-01-09 20:53:40 463

原创 JAVA环境搭建的细节解析

引言:今天要搭建一下Android环境,没想到又涉及到JDK这些东西,前面学JAVA的时候有涉及到,但时间一久又忘记了,今天又涉及到了所以打算记录一下,以便后面学习参考细节解析Javac作用:将Java文件转换为编译成JVM能识别的一种语言JVM作用:将JVM语言转换为不同平台的机器语言因而Java有一次编译到处跑的特点classpath路径作用:编写程序时引用到的各种包impor...

2020-01-08 19:52:54 97

原创 linux下看代码小帮手--ctags+taglist+自动补全

引言:如果你在读程序时看了一个函数调用, 或者一个变量,或者一个宏等等, 你想知道它们的定义在哪儿, 怎么办呢?哈哈,你的困惑也是广大Linux用户的困惑,现在流行用是的【ctrl+]】, 当光标在某个函数或变量上时, 按下"Ctrl+]",光标会自动跳转到其定义处。下载:Ubuntu下 执行: sudo apt-get install ctags一、建立索引文件当然要实...

2019-10-24 22:31:01 394

原创 Linux下编写头文件,编译时提示函数未定义

以前也遇到过这样的问题,现在又遇到了于是决定记录一下,以便后面查阅,参考引言:Linux下很多时候需要自己写一写函数来实现一些功能,当在多个文件下要用到同一函数总是重写该函数显然这是不现实的,这时大多数人会选择写头文件,而Linux下的GCC编译器不会自动给你链接形成可执行文件,这时需要我们自己用命令来实现链接(这里适用文件个数不多的情况,文件多的可以写MakeFile)可以看到直...

2019-09-22 13:20:42 5767

原创 STM32驱动OLED屏幕显示汉字

目录1.GPIO模拟I2C(用C语言描述时序q)2.用I2C驱动屏幕3.制作字模4.在OLED屏幕上显示文字1.GPIO模拟I2C(用C语言描述时序图)首先认识一下I2C通信协议组成,主要由下面几部分组成。1)开始与停止总线在空闲状态时,SCL和SDA都保持着高电平。启动信号:当SCL为高电平时,SDA由高到低的跳变,表示产生一...

2019-08-10 19:06:09 21178 6

原创 STM32无源蜂鸣器播放音乐

目录1.STM32产生PWM波驱动无源蜂鸣器使其发声2.音乐播放原理3.音乐文件制作(播放自己喜欢的音乐)4.用蜂鸣器播放音乐1.STM32产生PWM波驱动无源蜂鸣器使其发声1)查看原理图,找到对应引脚(我这里时PA1)2)打开CubeMax,输入自己芯片的类型确定后,配置好系统时钟RCC,我这里是80Mhz,找到相应引脚PA1设置为GPIO_Out...

2019-08-07 17:29:19 8226 3

转载 c语言中while(a)、if(a)、while(!a)、if(!a)、if(%a)是什么意思?

while(a) 表示当a!=0时执行循环,其等价于while(a!=0)。if(a) 同上。while(!a) 表示当a=0时执行循环,其等价于while(a==0)。if(!a) 同上。if(j%2)continue; 表示j%2!=0时执行continue;...

2019-07-17 18:51:05 45156 12

原创 keil5配置常见问题

问题一:cannot open source input file “stm32l4xx_hal.h”: No such file or directory原因:包含抛错文件名的文件夹没有放入keil编译时的包含路径下解决:用everything 查找文件名所在文件夹的路径(只添加到inc,inc后面的路径不管),在keil中找到魔法棒标记点击进入找到c++/c那个目标栏手动添加路径,...

2019-07-11 18:08:04 2228

原创 STM32之GPIO

关于GPIO中的GPIOA、GPIOB、GPIOC、GPIODGPIO端口号有如下几个: GPIOA、 GPIOB、 GPIOC、 GPIOD、 GPIOE、 GPIOF、 GPIOG。 GPIOA、GPIOB为两组互不干扰的寄存器(见代码)、每组端口分为16个不同的引脚每个端口号下面有16个不同的引脚。A组下面有16个B组下面有16个具体见下代码和图: GPIO_Pin_0 、G...

2019-06-30 20:28:31 1765

原创 CarND-MPC-Project 在Ubuntu1604操作系统上的环境搭建

CarND-MPC-Project 在Ubuntu1604操作系统上的环境搭建1.首先要在Ubuntu操作系统上切记是真实的ubuntu操作系统上,虚拟机下的ubuntu1604我试过也可以,但存在问题下面简单聊一下:首先虚拟机上的显卡、CPU、等一系列硬件都是虚拟出来的(这点你必须知道)这就意味着你在虚拟机上把跑CarND-MPC-Project时会受到显卡的影响,这并不是说你的显卡不行...

2019-05-24 17:16:18 1085 4

原创 虚拟机安装Ubuntu1604出现not yncing问题解决

今天在安装ubuntu 1604时出现错误end kernel panic - not syncing : corrupted stack end detected inside scheduler界面一直停留在黑色框界面。问题出在:在用虚拟机导向时配置有问题,出现了硬件不兼容,一开始我用默认的workstations12,导致出现not syncing : 的错误,将硬件兼容性选框改选为w...

2019-05-12 21:31:52 1074

PCtoLCD2002完美版.zip

该工具为汉字、英文、字符、数字字模制作工具,用于中文中汉字字模的制作,制作好的数组可用于OLED屏幕的开发测试

2019-08-07

空空如也

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

TA关注的人

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