自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (2)
  • 收藏
  • 关注

原创 NAS动态获取IPV6并通过邮件通知用户

通过url获取当前公网IP通过smtp发送邮件通过crontab定时运行脚本

2021-08-04 01:42:01 3485

原创 通信-手机-专业术语

仅作参考,侵删MO=Mobile originate,上行,即用户上发给SP的信息MT=Mobile Terminate,下行,即SP端下发给用户的信息DTMF=Dual Tone Multi Frequency,双音多频,电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码USSD=Unstructured Supplementary Service Data,非结构化补充数...

2019-03-06 14:42:46 921

原创 stm32启动文件详解

完成的主要工作 1. 设置堆栈指针SP = _initial_sp 2. 设置PC指针 = Reset_Handler 3. 配置系统时钟 4. 配置外部SRAM用于程序变量等数据存储(可选) 调用C库中的_main函数,最终调用main函数 CortexM4 微控制器复位后,处于线程模式,指令权限是特权级别(最高级别),堆栈设置为主堆栈硬件...

2018-09-13 10:05:39 977

原创 STM32F429地址详解

如图 通过映射图可以看到,可以用绝对地址访问各种外设、寄存器、Flash、RAM、SRAM

2018-08-08 15:18:31 2392

原创 RaspberryPi-3B 交叉编译sqlite3

硬件 树莓派3B 软件 桌面环境Ubuntu14.04-64位 树莓派环境UbuntuMate步骤: 1 下载 SQLite3源码 SQLite3 地址:http://www.sqlite.org/download.html。 选择最新稳定版本的Source Code,如 sqlite-autoconf-3240000.tar.gz,就是SQLite 3.24.0版。2 复制并解压...

2018-08-08 15:04:02 336

原创 树莓派的OpenCv配置安装

目前环境: 硬件 树莓派3B 软件 桌面环境Ubuntu14.04 树莓派环境UbuntuMate 选择Mate的原因:采用官方系统安装包的时候,会出现包依赖问题,即使使用aptitude install xxx也解决不好,因此我采用了Ubuntu的系统 注意:第一次开机需要显示器,自己要有HDMI线或者HDMI转VGA线树莓派网络调通之后开始安装,在树莓派上执行以下命令//...

2018-08-08 11:43:17 498

原创 C++高级编程-多继承的构造与析构

C++中,允许多继承,例如class B {};class A : public A1, protected A2, private A3{ B b; //code};在多继承的情况下,构造与析构的原则如下 先构造父类,再构造成员变量、最后构造自己 先析构自己,在析构成员变量、最后析构父类 参考上面的代码: 构造顺序为 A1 A2 A3 b 析构顺序...

2018-07-29 09:43:33 516

原创 C++高级编程-static

在C语言中,static有三大作用:修饰局部变量,修饰全局变量,修饰函数 而在C++中,不仅继承了C语言的全部语法,还对关键字做了一些变动。 先看代码#include <iostream>using namespace std;class Test{public: Test(int a, int b) { m_a = a; ...

2018-07-29 09:30:21 182

原创 opencv+python的基本函数

前提:python>>> import cv2>>> print cv2.__version__3.3.1在OpenCV2中,最简单的图像载入和显示只需要3句代码,非常方便。这三句代码分别对应了三个方法,他们分别是:i

2018-07-27 14:33:00 814

原创 C++高级编程-构造与析构

构造函数 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数; 2)构造函数在定义时可以有参数; 3)没有任何返回类型的声明。析构函数 析构函数与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数...

2018-07-25 10:02:17 157

原创 keil编译器生成二进文件的结构

如图所示,这是一段二进制文件的大致结构

2018-07-23 15:26:13 297

转载 C++高级编程-封装

所有的 C++ 程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象...

2018-07-23 15:02:38 343

转载 C++高级编程-抽象

在 C++ 中,我们使用访问标签来定义类的抽象接口。一个类可以包含零个或多个访问标签:使用公共标签定义的成员都可以访问该程序的所有部分。一个类型的数据抽象视图是由它的公共成员来定义的。 使用私有标签定义的成员无法访问到使用类的代码。私有部分对使用类型的代码隐藏了实现细节。 访问标签出现的频率没有限制。每个访问标签指定了紧随其后的成员定义的访问级别。指定的访问级别会一直有效,直到遇到下一个访...

2018-07-23 14:59:17 271

原创 C++类和对象

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。class 是C...

2018-07-20 17:14:06 191

原创 C过度到C++

简单来说C++是C语言的超集,C的语法C++都支持。但是C++与C有还是有很大差别的。以下是我学习C++过程中的一些总结: 1.命名空间 命名空间将全局作用域分成不同的部分 不同命名空间中的标识符可以同名而不会发生冲突 命名空间可以相互嵌套 全局作用域也叫默认命名空间2.实用性 在C++中所有的变量都可以在需要使用时再定义。3.register的变化 C中无法对registe...

2018-07-19 13:18:59 236

原创 STM32-IAP

IAP(In Application Programming)即在应用编程 下面是STM32-IAP过程 1.接收更新代码,为二进制文件 由于内置RAM只有256KB,因此我将接收的数据丢到外部SDRAM里uint8_t g_RxBuf1[UART1_RX_BUF_SIZE] __attribute__ ((at(SDRAM_APP_BUF))); /* 接收缓冲区 *...

2018-07-18 09:51:20 457

原创 C语言—static 的作用、局部变量全局变量、内存结构、堆栈区别

static在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数一、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。 全局静态变量有以下特点: (1)在全局数据区内分配内存 (2)如果没有初始化,其默认值为0 (3)该变量在本文件内从定义开始到文件结束可见(这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是ext...

2018-03-09 14:06:15 3496 4

原创 C语言内存分配方式,常见内存错误,野指针, 避免野指针

1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 3、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少

2018-01-29 14:33:27 487

原创 单向循环链表实现约瑟夫环

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?#include stdio.h>#include string.h>#include stdlib.h>//建立结构体struct data{ int i; struct data *next;};typedef struct data D

2018-01-25 19:17:19 861

原创 LinuxC并发式聊天室详解

运行环境:Linux64位操作系统(32位没试过) 编译:采用makefile批量编译,由于代码不多,且用到公共库,服务器和客户端在一个文件夹下 使用:运行客户端时,要添加本地回环地址 思维导图 具体代码 最近申请了GitHub,需要代码的留言,静待更新

2018-01-06 13:57:37 608 1

原创 Linux网络编程-UDP

1.UDP协议

2017-12-06 23:23:50 384

原创 Linux网络编程-TCP

1.OSI七层协议模型应用层(Application) 表示层(Presentation) 会话层(Session) 传输层(Transport) TCP/UDP 网络层(Network) 数据链路层(Data Link) 物理层(Physical)2.网络中进程之间如何通信网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信看作是其中的特例)。为此,首先要解决

2017-12-05 23:04:11 234

原创 操作系统基础

1、简述Linux进程内存空间分为哪几个段?作用分别是什么?数据段、代码段和堆栈段 “数据段”:已被初始化的变量,包括全局变量和已被初始化的静态变量;未初始化数据段,存储未被初始化的静态变量,又称BBS; “代码段”存放的是程序代码的数据; “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。2、如何查看进程的信息(线程数):1)使用top命令,具体用法是 top -H 加上

2017-12-05 20:44:56 201

原创 多线程编程

1.线程的概念线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间。 2.线程和进程的区别线程通常叫做轻型的进程。线程是在共享内存空间中并发执

2017-11-30 20:10:53 192

原创 进程通信(2)

1.消息队列2.消息队列结构定义。。。。。。。。。

2017-11-30 08:57:16 272

原创 进程通信(1)

1.Linux下进程间通信方式有有那些?1)管道( pipe )及有名管道 (named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信 2)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问

2017-11-29 08:16:47 207

原创 C语言-进程控制编程

1.进程的定义标准定义:进程是可并发执行的程序,是在一个数据集合上的运行过程。 通俗来说,硬盘上的一个可执行文件经常被称为程序,在Linux系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被称作一个进程。2.进程的分类进程一般分为交互进程、批处理进程和守护进程三类。 守护进程总是活跃的,一般是后台运行。守护进程一般是由系统在开机时通过脚本自动激活启动或超级用户

2017-11-23 19:24:13 2504

原创 C语言-文件操作

1.Linux下的文件在Linux操作系统中,它对一切资源的管理都是对文件的操作。 在现代操作系统中, 要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是,人们把这些数据以文件的形式放在外存中,需要的时候再将它们调入内存,从此便有了文件系统。2.Linux目录结构 http://blog.csdn.net/Silence_Fall/article/details/62052498

2017-11-21 19:59:08 402

原创 C语言-栈与队列

1栈的定义,特点 定义:栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 特点:先入后出,后入先出2 栈的注意点首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。它的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是固定的,最先

2017-11-02 15:45:51 569

原创 C语言-线性表

1线性表基本操作InitList(*L): 初始化操作,建立一个空的线性表L。ListEmpty(L): 判断线性表是否为空表,若线性表为空,返回true,否则返回false。ClearList(*L): 将线性表清空。 GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e。LocateElem(L,e): 在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表

2017-10-26 21:31:13 1185

原创 C语言-预处理、结构体

1.什么是结构体结构体是一种专门设计用来存储不同数据类型元素集合结构体与数组的对比:数组:只能由多个相同类型的数据构成。结构体:可以由多个不同类型的数据构成。2.结构体的定义结构体内部的元素,也就是组成成分,我们一般称为”成员”。结构体的一般定义形式为:struct 结构体名{类型名1 成员名1;类型名2 成员名2;……类型名n 成员名n;    };struct是关键字,是结构体类型的标

2017-10-26 12:53:48 482

原创 C语言-函数

1 函数调用中,地址传递为什么说形参与实参占用同样的存储单元因为实参传的是那段地址,形参接受的也是这段地址,相同的地址,当然就是相同的存储单元,存储单元就是地址的意思2程序如何实现模块化在程序设计过程中大多数程序要比我们之前设计的程序复杂的多,传统的设计方法是“自定向下,逐步求精”的过程。该过程就是将一个大的问题按照层次分解成多个方便解决的小问题,直至各个功能模块,每个单独的功能模块可以单独设计,最

2017-10-19 22:47:11 220

原创 C语言-指针

1判断指针的类型 只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。(1)int*ptr;//指针的类型是int*(2)char*ptr;//指针的类型是char*(3)int**ptr;//指针的类型是int**(4)int(*ptr)[3];//指针的类型是int(*)[3](5)int*(*ptr)[4];//指针的类型是int*(*)[4]2指针所指向的类型 把指

2017-10-19 21:48:21 262

原创 2017_10_13 Shell&基本数据类型

shellshell是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可用shell来开启、挂起、停止,甚至编写一些程序。shell常用系统变量$ # :保存程序命令行参数的数目(传入脚本的命令行参数)$ ?:保存前一个命令的返回码$ 0 :保存程序名(命令本身,shell文件名)$ * :以(”$1 $2…”)的形式保存所有输入的命令行参数($1即为第一

2017-10-14 14:52:40 781

原创 C语言-位操作技巧

1int a = -15, b = 15; printf("%d %d\n", a >> 2, b >> 2); 因为15=0000 1111(二进制),右移二位,最高位由符号位填充将得到0000 0011即3。-15 = 1111 0001(二进制),右移二位,最高位由符号位填充将得到1111 1100即-42a<<2;/*a左移2位且无数据溢出=a*4(若1001左移两位变为0100则

2017-10-11 00:08:53 754

原创 C语言-语句

1程序的进本结构 顺序,分支,循环2空语句 只有”;”组成的语句被称为空语句。什么也不执行,可用作空循环体。 用途: 掩饰、方便扩充新功能3表达式语句 表达式加分号表达式;4函数语句调用 函数名、实参加分号函数名(实际参数表);5布尔变量 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量型的真假而赋予整型值1或0.要把一个整型变量转

2017-10-08 20:51:03 335

原创 C语言-运算符、表达式

运算符分类

2017-10-07 23:29:27 367

原创 C语言-数据类型

1数据类型包含的内容: 数据的表示和对数据的加工操作。数据的全部可能表示构成数据类型的值的集合,数据全部合理的操作构成数据类型的操作集合。2数据类型间可以进行强制转换原因: 变量的值是变量所对应的内存区域内存放的二进制序列,变量的值不会因为变量的类型发生改变而改变,当变量转换为对应的类型时,内存区域内的二进制序列以该类型的形式翻译出来。由此可见,变量在内存中存放和它的值没有关系,而是和他的类型相

2017-10-06 23:46:56 221

原创 Linux系统管理及系统安全命令

系 统 管 理 相 关 命 令 : df top free quota at lp adduser groupadd kill crontab 系 统 安 全 相 关 命 令 : passwd su umask chgrp chrnod chown chattr su

2017-10-05 22:28:57 509

原创 Linux文件处理命令

Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。 下面介绍几个常用的文件处理命令:file 

2017-10-04 22:45:37 282

聊天室思维导图

对应于http://download.csdn.net/download/silence_fall/10191483并发式聊天室,需使用xmind

2018-01-06

并发式聊天室C语言

服务器端采用select函数,主进程采用select判断并调用相应函数,服务器实现了私聊群聊查看聊天记录等功能。使用具体内容详见博客。

2018-01-06

空空如也

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

TA关注的人

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