自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 curl&&openssl编译(x86)

1、解压openssl至目录/home/yk/openssl/openssl-1.0.2h2、进入目录/home/yk/openssl/openssl-1.0.2h3、mkdir yk3399_openssl4、./config -fPIC no-shared --prefix=/home/yk/openssl/openssl-1.0.2h/yk3399_openssl --openssldir=/home/yk/openssl/openssl-1.0.2h/yk3399_openssl5、ma

2021-08-27 19:32:40 578

转载 Linux信号处理(多线程应用场景)

转载:https://blog.csdn.net/yangruibao/article/details/13292511

2020-05-04 14:51:11 326

转载 int类型变量赋值给%s导致crash

转载:https://www.cnblogs.com/czl-sy/archive/2013/04/08/3008959.html

2020-04-22 10:52:54 555

转载 开发文档Mark

开发文档嘛,改写还是要写的,条理清晰点好,后期作为项目备份也是不错的。转载:https://blog.csdn.net/qq_36186690/article/details/82903265

2020-04-07 14:07:18 209

原创 搞个bug集

1、链表错误代码:​//1.返回链表中一个nodepstStreamerNode = Cfg_FindAndCreatStreamNode(pstCameraInf,iValue);//2.给node赋值操作,(不展示)//3.将node重复加入到list(错误操作)COS_LIST_ADDTAIL(&pstCameraInf->stStreamerList, ...

2020-01-21 11:51:29 156

原创 strncpy踩过的坑

一、表象下面这段代码的for循环,不进入循环,断点检查list里边是有元素的。 FOR_EACHDATA_INLIST(&Cfg_GetPtzMng()->stPresetList, pstPresetNode, stIterator) { if(pstPresetNode->ucUseFlag == 0) { ...

2020-01-18 11:14:02 618

原创 树莓派换APT源

一.出错情景今天把去年的树莓派拿出来用,apt-get update 更新源的时候报错:The repository 'http://mirrors.ustc.edu.cn/archive.raspberrypi.org stretch Release' does no longer have a Release file我访问了下源的地址,进去看了下他的README.txt,原来现在...

2019-12-28 15:01:26 1408

原创 Des加密 (Ecb模式,PKCS5Padding的填充方式),Base64编码数据

http在数据通信的时候,因为不像https自带链路加密,所有为了安全性,使用http协议的时候,需要给请求包进行数据加密,为了配合服务器端的解密算法,我发送端使用了Des加密。(需要跟其他平台或者语言做交换的话,各个平台/语言间的加密模式需要一致,填充方式也需要一致。不得不说的一点是DES已经被破译过,当然这种破译的代价并不低,而且并不是那么简单。如果要求更高的数据安全级别,可以选择使用3DES...

2019-12-23 09:36:51 4071 1

原创 VsCode中文显示乱码问题

目前网上找到的最简单的方法。参考:https://www.cnblogs.com/bux-/p/11532410.html

2019-11-06 00:04:53 1244

原创 回调函数场景

使用方法:1.一般先定义一个回调函数:常用定义 typedef void (*Fuc)(int c,int d); 可看作是定义了一个变量类型(int/char/double)Fuc fuc; fuc还是个未初始化的对象,后边需要借助函数指针进行初始化;2.在定义一个 void test(int a,int b);3.定义调用函数:int G...

2019-10-29 14:51:46 284

原创 栈在内存中的分配

LiteOS中有个函数:osTskStackInit( )函数功能:初始化TASK的栈空间。栈顶在内存低地址位置,栈底在内存高地址位置???????ahhhh!什么以前的在Linux下编程栈不都是连续的从低地址开始分配内存空间吗。也不墨迹区区搜了一下,答案如下:我看的LiteOS是泡在ARM M4上的,这个mcu的内存分配就是在内存中自减的形式。内存地址:小 —————————————>>大Stac

2018-01-19 20:12:05 690

原创 系统调用从User进入Kernel

#include"stdio.h"int main(){ int pid; asm volatile( "movl $0x14,%eax\n\t" "int $0x80\n\t" "mov %%eax,%0\n\t" : "=m" (pid) ); printf("the pid is :%d\n",pid);}这是今天看代码的时候看到

2018-01-11 19:14:20 516

转载 学习ffmpeg视音频编解码

[总结]FFMPEG视音频编解码零基础学习方法 原创 2013年11月16日 00:04:05 <ul class="article_tags clearfix csdn-tracking

2017-12-08 10:41:50 496 1

转载 关于google chrome源码了解

读《Google Chrome源码剖析》笔记,学习Chrome中优秀的设计思想。原文地址:http://www.ha97.com/2911.html零、【序】1.关于开源“开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀上”。教材玩具的确铺天盖地的,到处的Hello World

2017-12-07 16:44:43 1382

原创 类型转换和异常处理

一、类型转换 1、c语言的转换 在c语言中存在隐性转换,所谓隐性准换就是编译器在运行程序的时候自动的帮你转换了类型; 例如: int a = 10; double d = 2.1; a = d;//c语言中的隐性转换; char ch = (char) a; //c语言中的强制转换2、c++中的类型转换 (1)、static_cast (1_1)用于基本类型之间的转换,但是!不可以

2017-09-28 14:53:22 2932

原创 模版函数

一、函数模版 1、概念: C++提供了函数模板(function template)。 所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。 这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。 在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。

2017-09-26 17:13:57 417

原创 c++の对象初始化列表

1、对象初始化列表出现原因 (1).必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数, 如果没有初始化列表,那么他将无法完成第一步,就会报错。(2)、类成员中若有const修饰,必须在对象初始化的时候,给const int m 赋值 当类成员中含有一

2017-09-25 21:37:56 350

原创 c++构造函数

一、构造函数:函数名和类名相同的函数; (1)意义: 他的作用是给成员变量进行赋值,也就是之前你的成员变量都是在主函数里边一个一个的初始化进行赋值,现在写个函数一次性把该赋的值都赋了。(2)多种定义方式(多种传参方式): 构造函数的三种定义方法: //1、直接定义对象(括号法) //2、等号方法 //3、手动构造(函数名作为右值)(3)调用时机 自动调用,也就是当遇到需要调用构造函数的

2017-09-22 20:55:54 727

原创 c++、类、对象

1、面对对象 特点:抽象,封装(面对对象最基本的特性),继承,多态 缺点:运行效率会下降10%左右,(直接对对象进行操作,编译器需要做好多的额外的工作)封装:把数据(属性)和函数(操作)合成一个整体;成了类2、类:用class来定义(参考结构体的struct),当然类的使用和结构体的使用几乎是一样的; (1)、类封装了属性(成员变量),封装方法(成员函数); (2)、类有访问控制字(也就是类

2017-09-20 20:46:52 281

原创 c++のstatic静态成员、对象的动态创建和释放

1、静态成员变量 (1)核心思想 静态成员变量的初始化必须在类的外部,也可以通过对象直接进行赋值; 静态函数的只能使用静态成员变量,不能使用其他普通的成员变量; (2)代码例子边看边讲解#include <stdio.h>class Test11{public: Test11 (int b) { m_b = b; } void print(

2017-09-18 20:59:29 3714

原创 c++基础の引用、const

一些c++对于c语言的加强 1、int fun()在c语言中表示返回值int型的函数,括号里的参数是任意的; 但是在c++中也表示int 型返回值的函数,但是括号里是没有参数的相当于int fun(void) 也就是说在c++中他强调的是类型,所有程序的所有元素都必须指明类型;2、c++中的表达式的返回值是变量本身,而不是变量的一个值,所以可以把返回值当作左值来使用 例如:(a > b? a

2017-09-16 15:48:05 271

原创 聊天室项目

1、简述: 采用了cs结构 服务器端四步走:socket,bind,listen,accept 客户端两步走:socket,connect 简单模型:客户端a消息发送到服务器;服务器找到客户端b的socket,在把消息发送给客户端b; 设计数据库操作存储的一些操作比较简单这里不提 2、看代码: (1)、服务器端代码#include <sys/types.h>#include <sys

2017-09-13 20:58:45 2370 1

原创 初学c++の命名空间

1、命名空间: (1)、概念 命名空间将全局作用域分成不同的部分 不同命名空间中的标识符可以同名而不会发生冲突 命名空间可以相互嵌套 全局作用域也叫默认命名空间 (2)、原因 一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突;(3)、代码(从代码中看使用方法

2017-09-13 20:45:09 280

原创 多线程基础

前言:你需要知道多线程可以公用全局变量直接进行通信;Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。1、概念 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可

2017-08-20 19:01:36 267

原创 简单的聊天室

简介:简单的聊天室,实现注册,群发消息,私聊消息的功能; 这是一个简单的多个客户端和服务器端的通信; 大体的是客户端创建连接服务器端的套接字,连接到服务器; 连接上之后就是调用功能函数,功能函数中写个switch(),对功能进行选择; 这些功能的实现基本都是客户端消息写给服务器端,在从服务器端读消息(一个客户端怎么在发消息的同时又读消息呢,所以进行读写分离,在一个客户端注册完成之后就开辟一个

2017-08-20 10:09:03 489

原创 Linux下进程间通信--消息队列详解

消息队列 (1)概念: unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。 进程可以向其中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。消息队列分两种: POSIX消息队列以及系统V消息队列

2017-08-15 20:54:17 411

原创 进程间通信-----共享内存

共享内存 (1)、概念: 共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。 (2)实现 1_创建共享内存:int shmget(key_t key, int size, int shmflg)参数解释: key: 1、0/IPC_PRIVATE:当key的取值为IPC

2017-08-15 20:32:26 369

原创 进程间通信-----管道

1、概念:一个进程将它的数据发送给另一个进程2、管道通信2.1、概念: 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道尾部写入数据,另一个进程(读进程)从管道的头部读出数据。2.2:简单的程序间的数据传输 popen 两个程序之间传递数据的一种简单方法是使用popen和pclose。格式:FILE *popen(const char *comm

2017-08-14 20:58:34 314

原创 定时器alarm函数

alarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它向进程发送SIGALRM信号。可以设置忽略或者不捕获此信号,如果采用默认方式其动作是终止调用该alarm函数的进程(源于百度百科一段话),这里说的终止调用alarm函数的进程我是理解为:假如此刻在man函数中从上往下执行,到了这个定时器定的时间停止往下执行man函数而是去进行另一个操作:signal函数调用SIGALR

2017-08-14 20:44:36 4688

原创 进程控制-------僵尸进程、守护进程

1、终止进程: 终止函数:exit()和_exit() 区别: (1)exit在关闭进程时候会让缓冲区数据会自动写回并关闭未关闭的文件 (2)_exit 是直接清空缓冲区然后退出; 一般都用前者,就不详细说了; 正是由于父亲儿子进程的终止所以有了僵尸进程,守护进程(后台执行)2、僵尸进程(子进程先终止): 就是子进程先于父进程退出,父进程还不采取任何措施来处理挂掉的子进程,从而形成了僵

2017-08-10 15:00:21 505

原创 进程控制------基础、fork、exec、system

1、什么是进程?区分程序 进程是指程序执行的可执行文件;而程序是存放到磁盘的可执行文件;2、进程的一些特性: (1)动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 (2)并发性:任何进程都可以同其他进程一起并发执行 (3)独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 (4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自

2017-08-10 14:48:19 433

原创 文件编程-------------通过偏移指针(lseek)设置固定大小的文件

1、操作:通过lseek设置一个固定大小的文件: 2、思路:创建一个文件,偏移指针指向你想要大小的那个位置,至少理论上是行得通的,是可以开辟一个这么大的文件的! 这时候你需要想到的是:当你的程序运行结束的时候偏移指针随着程序的结束而消失,而往文件里面写入东西是不会随着程序的结束而结束的,所以想到在想要大小的那个位置卡一个字母,也就是在那个位置先偏移指针指向他然后再写入一个字母,这样一个固定大小

2017-08-09 19:13:55 2118

原创 文件编程----------write和复制操作

1、Write(写)系统调用向打开的文件写数据,顾名思义往文件写东西,这里也是需要缓冲区,获取你要写的东西到缓冲区,再从缓冲区写入到文件当中;这里write往文件写数据是通过二进制的形式写的; (1)、write()格式:#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count); 各参数及返回值的含义如下:

2017-08-08 20:10:51 594

原创 文件编程----------两个已经存在的文件当中的字符相加,写入到第三个文件;

题目:手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下思路:打开两个文件,然后分别读取他们的数据,分别存放在两个缓存区当中,然后两个缓存区的数据相加,结果存到第三个缓存区,在把第三个缓存区的数据写入到第三个文件;代码:#include #

2017-08-07 20:53:50 697

原创 static的用法

1、static修饰局部变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:(1)该变量在全局数据区分配内存(2)如果不显示初始化,那么将被隐式初始化为0(3)它始终驻留在全局数据区,直到程序运行结束(4)此变量在函数运行结束的时候没有被销毁还是存在的;退出一个块之后仍然存在的局部变量2、static 修饰全局变量:在全

2017-08-07 09:38:45 521

原创 找合法帧

#include #include // 在字符串str中寻找字符串sub,如果找到返回从sub开始的字符串char *findStr(char* str, char *sub){ char *p = NULL; int len = strlen(sub); // 算字串的长度 while(*str) { if (strncmp(str, sub, len) == 0)

2017-08-07 09:25:02 256

原创 字符串相关函数、strcat,strcpy,strcmp

#include #include // 字符串追加int main1(){ char str1[100] = "hello "; char str2[] = "world"; // 把字符出str2的内容 放到字符串str1的末尾 // 注意:str1空间必须足够大,否则就会越界 strcat(str1, str2); // 只将str2的前两个字符放到str1的

2017-08-07 09:05:39 384

原创 文件编程----------------open(),read()

文件编程:1、常见的文件类型:普通文件:一般意义上的文件,作为数据存储在磁盘中,可以随机访问文件的内容。Linux系统中的文件是面向字节的,文件的内容以字节为单位进行存储和访问。目录:目录是一种特殊的文件,目录可以像普通文件一样打开、关闭以及进行相应的操作。管道:管道是Linux中的一种进程间通信的机制。设备文件:设备文件没有具体的内容,对设备文件的读写操作实际上与某个

2017-08-06 20:58:32 408

原创 链表基础(创建、插入、删除)

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构,它可以根据需要开辟内存单元;链表有一个“头指针”变量,以head表示,它存放一个地址;该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址;因此,head指向第一个元素:第一个元素又指向第二个元素,类推……;直到最后一个元素,该元素不再指向其它元素,它称...

2017-08-05 20:32:39 352

原创 编程实现统计某年某月份的天数。 例如:输入:2017.7 输出:31天

//输入一个月份,计算这个月份的天数#includeint main(){ int year,mon; int leap; int days; printf("输入年份、月份:\n"); scanf("%d %d",&year,&mon); fun(year); switch(mon) { case

2017-08-05 20:18:31 3197

空空如也

空空如也

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

TA关注的人

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