自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 通过一个实例来理解路由与路由表

原文链接 

2018-09-22 15:42:43 1870 1

转载 linux 使用lseek函数来获取文件大小

原文链接:https://blog.csdn.net/xiaokuang5020/article/details/74644866一、获取文件大小   /*测得文件大小*/ int filelen; int fd;    int filelen= lseek(fd,0L,SEEK_END); lseek(fd,0L,SEEK...

2018-09-15 16:34:07 2283

转载 静态网页和动态网页的区别

原文链接一、静态web页面:1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏...

2018-09-09 08:24:22 6039

转载 交换机开发(二)—— 三层交换机报文转发过程

原文链接:链接如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同一个子网.因为图中主机A和主机B不在同一子网内,所以需要进行三层转发. ...

2018-09-04 17:24:50 3936

转载 交换机开发(一)—— 交换机的工作原理

原文链接:链接一、交换机的工作原理     当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC地址与该交换机各端口的对应信息。某一数据帧需要转发时,交换机根据该数据帧的目的MAC地址来查找MAC地址表,从而得到该地址对应的端口,即知道具有该MAC地址的设备...

2018-09-04 17:08:14 19777 4

转载 Linux下DIR,dirent,stat等结构体详解

原文链接:链接最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。首先说说DIR这一结构体,以下为DIR结构体的定义:struct __dirstream       {        void *__fd;         char *__data;         int __entry_data;       ...

2018-09-01 21:31:49 522

转载 9针串口调试

原文链接:链接9针串口引脚图:常用串口分为RS232串口和RS485串口,9针引脚图如上,左边是RS232串口的引脚图,右边是RS485的引脚图。调试时:两个232串口连接:串口A和串口B通讯时,用串口A的TXD练串口B的RXD,串口A的RXD连串口B的TXD,GND相连(通常不连GND也没什么影响)。如果想再连处一个串口来监视A、B之间的通讯,只用串口C的RXD连接A、B...

2018-08-29 17:05:32 8927

转载 NRF SPI时序理解

原文链接:链接 

2018-08-29 16:02:54 1361

转载 NRF24l01无线模块调试心得!STM32_SPI驱动NRF24L01+

原文链接:链接经过两日的调试nRF24L01终于调试成功。耐心,细心。有想法。资料。数据手册。总就会成功。   下面是调试的基本方法:              24L01是收发双方都需要编程的器件,这就对调试方法产生了一定的要求,如果两块一起调,那么通讯不成功,根本不知道是发的问题还是收的问题,不好意思的说,我当时也是没理清调试思路才浪费了一天时间看着模块干瞪眼。并且烧坏了两个模块。(还好...

2018-08-29 14:44:13 16007 1

转载 IAP是什么

原文链接:链接1.IAP是什么--简介  IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。2.IAP是什么--功能  在应用编程IAP(In-Application Programming)是应用在...

2018-08-29 13:30:32 22761

转载 TFTLCD显示实验_STM32F1开发指南_第十八章

原文链接:链接    第十八章 TFTLCD显示实验前言    上一章我们介绍了OLED模块及其显示,但是该模块只能显示单色/双色,不能显示彩色,而且尺寸也较小。本章我们将介绍ALIENTEK 2.8寸TFT LCD模块,该模块采用TFTLCD面板,可以显示16位真彩色图片。    本章将利用stm32开发板上的LCD接口,点亮LCD,并实现ASCII字符和彩色的显示等...

2018-08-29 11:06:42 7787

转载 STM32 串口 #pragma import(__use_no_semihosting)解析

原文链接:链接标准库函数的默认输出设备是显示器, 要实现在串口或 LCD 输出,必须重定义标准库函数里调用的与输出设备相关的函数 .例如 :printf 输出到串口,需要将 fputc 里面的输出指向串口 (重定向 ),方法如下 :只要自己添加一个 int fputc(int ch, FILE *f) 函数,能够输出字符就可以了#ifdef __GNUC__/* With GCC/R...

2018-08-29 10:23:17 5697 2

转载 C语言#pragma预处理

 原文链接:链接在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma 指令对每个编译器给出了一个方法,在保持与C 和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为:   #pragma para其中para...

2018-08-29 10:16:19 669

转载 KEIL MDK5新建工程步骤

原文链接:链接

2018-08-28 18:49:56 7736

转载 基于STM32的SPI基本介绍

STM32---SPI(DMA)通信的总结(库函数操作)本文主要由7项内容介绍SPI并会在最后附上测试源码供参考:1.     SPI的通信协议2.     SPI通信初始化(以STM32为从机,LPC1114为主机介绍)3.     SPI的读写函数4.     SPI的中断配置5.     SPI的SMA操作6.     测试源码7.     易出现的问题及原因...

2018-08-28 13:00:40 19783 1

转载 stm32之spi之NSS管脚信号

原文链接:链接NSS管脚及我们熟知的片选信号,作为主设备NSS管脚为高电平,从设备NSS管脚为低电平。当NSS管脚为低电平时,该spi设备被选中,可以和主设备进行通信。在stm32中,每个spi控制器的NSS信号引脚都具有两种功能,即输入和输出。所谓的输入就是NSS管脚的信号给自己。所谓的输出就是将NSS的信号送出去,给从机。NSS管脚的输出和输入在spi控制器中有专门的寄存器控制位控制其...

2018-08-28 12:00:30 1933

原创 将字符串中的单词反序

题目描述:现有一个字符串如:This is my book, 请写一个功能函数将这个字符串中的单词反序,处理结果:book my is This思路:如下图所示,开辟三块内存,通过strtok取出第一块内存中的第一个单词,通过strcat将单词、空格、pstr3连接放在第二块内存中,再将第二块内存中的内容拷贝到第三块内存中。循环这个过程,直至在第一块内存中取出所有的单词。 c语...

2018-08-21 17:51:24 1118

转载 I/O多路复用技术(multiplexing)

原文链接:链接首先,要从你常用的IO操作谈起,比如read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。(图片来源:http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch06lev1sec2...

2018-08-18 16:37:14 770

转载 linux tar 文件归档命令

原文链接tar命令介绍: -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将...

2018-08-11 11:10:46 2421

转载 工程管理器

原文链接在实际的开发过程中,仅仅通过使用GCC命令对程序进行编译时效率是非常低的,原因主要有以下两点: 1.程序往往是由多个源文件组成的,源文件的个数越多,那么GCC的命令行就会越长。此外,各种编译规则也会加大GCC命令行的复杂度,所以在开发调试程序的过程中,通过输入GCC命令行来编译程序是很麻烦的。2.在程序的整个开发过程中,调试的工作量占到了整体工作量的70%以上。在调试程序...

2018-08-11 11:05:17 395

转载 透彻 Linux (Unix) 五种 IO 模型

原文链接:链接IO模型 用一幅图表示所支持的I/O模型纵向维度是“阻塞(Blocking)”、“非阻塞(Non-blocking)”;横向维度是“同步”、“异步”。总结起来是四种模型 同步阻塞、同步非阻塞;异步阻塞、异步非阻塞 。《Unix网络编程》中划分出了“第五种”模型——“信号驱动式IO”其实属于异步阻塞类型,这种模型的通知方式有多种多样后面展开说明。同步/异步、阻塞...

2018-08-10 20:15:36 132

转载 内存的四种分配方式

原文链接:链接1.  堆,由程序员手动分配和释放,如果程序员没有释放,在程序结束时由系统回收,分配方式类似于链表。由于堆是程序员管理的,如果管理不当会导致内存泄露的问题,内存泄露指已经分配的内存空间无法被系统回收也无法被继续使用。解决这个问题,C++可以使用智能指针对象去指向分配的内存,在对象析构时释放内存防止内存泄露。在JAVA中由于有垃圾回收期,因此可以不用担心内存泄露的问题。(但java...

2018-08-07 13:17:14 2147

转载 Linux grep和find的区别

原文链接:链接这是两个不同的命令,关于grep:Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。而linux下的find功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大...

2018-08-06 18:12:00 278

转载 双向冒泡排序

原文链接:链接排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。文章规划:一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路分析不展开描述。二。通过《大话数据结构》一书的截图,详细分析该算法 。 在此,推荐下程杰老师的《大话数据结构》一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确...

2018-08-06 13:32:14 7474

转载 快排的两种方式

转载链接:链接快速排序的基本思想是,通过一轮的排序将序列分割成独立的两部分,其中一部分序列的关键字(这里主要用值来表示)均比另一部分关键字小。继续对长度较短的序列进行同样的分割,最后到达整体有序。在排序过程中,由于已经分开的两部分的元素不需要进行比较,故减少了比较次数,降低了排序时间。  详细描述:首先在要排序的序列 a 中选取一个中轴值,而后将序列分成两个部分,其中左边的部分 b 中的元...

2018-08-06 11:35:23 676

转载 fopen与open的区别

原文链接:链接int open(const char *path, int access,int mode)       path 要打开的文件路径和名称                                  access 访问模式,宏定义和含义如下:                                   O_RDONLY         1    只读打开  ...

2018-08-02 16:57:56 245

转载 msgctl()函数

原文链接:链接通过msgctl()函数,我们可以直接控制消息队列的行为。它在系统库linux/msg.h 中的定义是这样的:系统调用: msgctl()函数声明: int msgctl ( int msgqid, int cmd, struct msqid_ds *buf )返回值: 0 on success-1 on error: errno = EACCES (No read p...

2018-08-01 16:37:25 6354

转载 msgrcv()函数

原文链接:链接msgrcv()函数被用来从消息队列中取出消息。它在linux/msg.h中的定义是这样的:系统调用: msgrcv()函数声明: int msgrcv ( int msqid, struct msgbuf *msgp, int msgsz, longmtype,int msgflg )返回值: Number of bytes copied into message ...

2018-08-01 16:35:34 36097 2

转载 msgsnd()函数

原文链接:链接从函数名就可以看出,msgsnd()函数是用来向消息队列发送消息的。在linux/msg.h 它的函数定义是这样的:系统调用: msgsnd()函数声明: int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg )返回值: 0 on success-1 on error: errno = EA...

2018-08-01 16:34:36 4224

转载 msgget()函数

原文链接:链接msgget()函数被用来创建新的消息队列或获取已有的消息队列。其函数定义如下:系统调用: msgget()函数声明: int msgget ( key_t key, int msgflg )返回值: message queue identifier on success-1 on error: errno = EACCESS (permission denied)EE...

2018-08-01 16:33:37 7441

转载 ftok()函数

原文链接:链接系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名,id是子序号。在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进...

2018-08-01 16:31:12 1173

转载 条件变量、pthread_cond_init

原文链接:链接1.初始化条件变量pthread_cond_init#include <pthread.h>int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺...

2018-08-01 14:55:58 820

转载 互斥锁 pthread_mutex_init()函数

原文链接:链接linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻...

2018-08-01 14:45:03 7113

转载 条件变量pthread_cond_t怎么用

原文链接:链接最近看《UNIX环境高级编程》多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白  [cpp] view plaincopy#include <pthread.h> #include <stdio.h> #include <stdlib.h> pthre...

2018-08-01 14:29:59 277

转载 逻辑右移与算数右移

原文链接:链接C/C++语言中逻辑右移和算数右移共享同一个运算符>>。编译器决定使用逻辑右移还是算数右移,根据的是运算数的类型。如果运算数类型是unsigned则采用逻辑右移,而signed则采用算数右移。对于signed类型的数据,如果需要使用算数右移,或者unsigned类型的数据需要使用逻辑右移,都需要进行类型转换。示例代码:#include <iostream...

2018-07-29 13:25:30 6387

转载 C实现二分查找

原文链接:链接简要描述二分查找又称折半查找,对排好序的数组,每次取这个数和数组中间的数进行比较,复杂度是O(logn)如:设数组为a[n],查找的数x,如果x==a[n/2],则返回n/2;如果x < a[n/2],则在a[0]到a[n/2-1]中进行查找;如果x > a[n/2],则在a[n/2+1]到a[n-1]中进行查找;优点是比较次数少,查找速度快,平均...

2018-07-29 12:54:02 4562 2

转载 Ubuntu 12.04 LTS 中文输入法的安装

原文链接我装的是英文版的 Ubuntu12.04,如果安装中文版,会自动安装中文输入法,这篇文章也是为了以后重装 Ubuntu 做一个准备废话不多说,进入正题: 第一步:安装语言包 进入 “System Settings”找到 “Language Support” 那一项,点击进入选择 “Install/Remove Languages”找到 “Ch...

2018-07-28 20:57:27 1934

转载 一语句实现x是否为2的若干次幂的判断

原文链接一语句实现x是否为2的若干次幂的判断#define is2*n(x)  ((x & (x - 1))? 0 : 1)int main(void){        int m = 512;        cout << ((m & (m - 1)) ? false : true) << endl;        //即当m中...

2018-07-28 19:28:09 3797

转载 C语言变量存储位置

原文链接:链接全局变量存放在静态存储区,位置是固定的。 局部变量在栈空间,栈地址是不固定的。栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动...

2018-07-28 13:53:19 1724

转载 C语言再学习 -- 关键字volatile

原文链接:链接一、volatile 介绍参看:volatile详解参看:C Language Keywords Indicates that a variable can be changed by a background routine.Keyword volatile is an extreme opposite of const.It indicates that ...

2018-07-28 12:03:47 166

空空如也

空空如也

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

TA关注的人

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