自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

瞌睡的洋葱的博客

发现问题,解决问题

  • 博客(94)
  • 收藏
  • 关注

原创 C++ 面试题

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

2023-07-04 14:03:14 348

原创 Linux操作系统常见面试题

什么是同步机制?同步机制是一种操作系统提供的机制,用于协调多个进程或线程之间的访问共享资源,防止出现竞态条件和死锁等问题Linux中常用的同步机制有哪些?Linux中常用的同步机制包括互斥锁、读写锁、自旋锁、信号量、条件变量等。死锁就是几个进程申请资源,出现了循环等待的情况!避免死锁的方法:1)资源是互斥的2)不可抢占3)占有且申请4)循环等待12 线程的五种状态。

2023-07-01 23:05:54 519

原创 关于Linux同步机制知识点整理

内核抢占是指内核在某些情况下可以抢占正在运行的进程或线程,以保证内核的响应能力和稳定性。内核抢占通常发生在中断处理程序中,当中断处理程序需要执行一些紧急的操作时,可以抢占正在运行的进程或线程,以保证中断处理程序的及时响应。在多线程编程中,需要考虑线程安全性,使用合适的同步机制和设计,来保证程序的正确性和可靠性。线程的使用可以提高程序的并发性和响应能力,但是需要注意线程安全性和同步机制的设计。同步机制是一种操作系统提供的机制,用于协调多个进程或线程之间的访问共享资源,防止出现竞态条件和死锁等问题。

2023-07-01 16:51:29 692

原创 linux 操作系统内核态用户态

当我们在写程序是,凡是涉及到IO读写、内存分配等硬件资源的操作时,往往不能直接操作,而是通过一种叫系统调用的过程,让程序陷入到内核态运行,然后内核态的CPU执行有关硬件资源操作指令,得到相关的硬件资源后在返回到用户态继续执行,之间还要进行一系列的数据传输。Shell是一个特殊的应用程序,俗称命令行,本质上是一个命令解释器,它下通系统调用,上通各种应用,通常充当着一种“胶水”的角色,来连接各个小功能程序,让不同程序能够以一个清晰的接口协同工作,从而增强各个程序的功能。这个内存的管理就变得非常的复杂。

2023-06-30 15:48:57 621

转载 Makefile 中:= ?= += =的区别

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(...

2019-06-25 09:49:08 693

原创 undefine error

在linux中编译出现undefine error的错误,一般是由于两个原因,第一个是在编译选项中添加-D_GNU_SOURCE 另一个是由于gcc和g++混合编译出现的错误,需要使用:#ifdef __cplusplusextern "C"{#endif#include "log.h"#ifdef __cplusplus}#endif注意__cplusplus是两个下划...

2019-03-10 17:10:18 495

转载 system返回值

例:status = system("./test.sh");1、正确退出后。还需要再判断,操作成功或者操作失败。2、错误退出。1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。...

2019-02-18 15:48:55 5159 1

原创 调用memcpy函数前未初始化缓冲区

3.9  调用memcpy函数前未初始化缓冲区代码示例int main(){ char buffer[10]; memcpy(buffer , "hello wo" , 3); printf("buffer=%s\n", buffer); return 0; } 现象&后果运行程序,发现buffer打印出的内容除了"he...

2019-02-14 14:52:14 1132

原创 snprintf的使用

函数定义:int snprintf(char*str, size_t size,constchar*format, ...);函数说明:最多从源串中拷贝size-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为size的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。返回值并不是真正写入字符串的大小。解释如下:size是限定...

2019-02-14 14:28:05 12436 1

转载 dmesg 命令

dmesg 这个命令,Linux下用的还是比较多的。现在来详细看一下:Linux dmesg命令用于显示开机信息。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。一、语法dmesg [-cn][-s <缓冲区大小>]二、选项-c :显示信息后,...

2018-11-29 17:45:02 7450

转载 浅谈内核的Makefile、Kconfig和.config文件

Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。 三者的作用:简单来说就是去饭店点菜:Kconfig...

2018-11-28 13:54:10 224

原创 linux 14.04 下搭建gstreamer框架

首先搭建rtmp服务器:https://blog.csdn.net/qq_39759656/article/details/80311460 安装rtmpdump第二步 安装rtmpdump直接GIT安装。记得去你自己的目录下装。git clone git://git.ffmpeg.org/rtmpdump之后cd rtmpdump/makemake install...

2018-11-27 18:56:17 249

转载 ubuntu16.04安装Source Insigh 3.5

https://blog.csdn.net/warticles/article/details/80947095SI3US-205035-36448SI3US-466908-65897SI3US-368932-59383SI3US-065458-30661SI3US-759512-70207Source Insight 是一个功能强劲的程序编辑器,内置对C/C++,Java和x86...

2018-11-20 17:50:48 424

转载 时钟分频原理 - 时钟分频原理详解

时钟分频原理  如果cpu是计算机的大脑,电流是计算机的血液,那么时钟则是计算机的心脏,时钟频率决定了处理器运算的快慢,它的每一次“跳动”都驱动着处理器不停的执行命令。不同的是,人的各个部位心率是一样的,但计算机却有多个频率,而且每个部位可能有不同的频率,比如“大脑”有一个频率,“手“有一个频率,“脚”使用的是另外一个频率,这样就产生了两个问题:怎么产生这些不同的频率?处理器怎么与自己不同频率...

2018-11-08 19:52:21 24824 3

转载 linux中export与source的作用

以前一直觉得export可有可无,虽然知道export是干嘛的,不就是把本地变量变成全局变量么(实际中叫环境变量),但是感觉好像没有这货也没影响,今天看了这篇博文,终于恍然大悟。用自己的语言,思维方式重新整理一遍首先说明两个概念:父shell与子shell,从shellA中启动一个shell,称之为shellB。 shellA为父shell,shellB为子shell。最容易理解的情况就是...

2018-10-30 19:49:42 13850 1

转载 Linux下 ln 命令详解

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。链接文件分为软链接和硬链接。  软链接:软链接不占用磁盘空间,源文件删除则软链接失效。 硬链接:硬链接只能链接普通文件,不能链接目录。    使用格式:ln 源文件 链接文件 ln -s 源文件 链接文件这个命令最常用的参数是-s...

2018-10-30 19:43:12 451

原创 全局变量和局部变量初始化问题

变量需要不需要初始化是根据需要来进行的。全局变量有时也需要初始化,而局部变量其实大部分时间都没有初始化。不要把赋初值与初始化混淆了:初始化是由编译器做的,形成可执行文件后,那些变量的值就在软件文件中放着,执行程序时直接使用了;而赋初值是由C/C++代码实现的,程序开始执行后才给变量赋的值。只是全局变量如果不显式初始化,那么编译时由编译器自动初始化为0,而编译器对局部变量是否有值视而不见,所以在...

2018-09-29 11:34:35 2450

原创 ko && lsmod

各类文件的区别与作用:1、对于.so文件     .so文件是用户层的动态链接库,用于用户层的动态链接使用,内核态的代码同样不能直接访问。2、对于.ko文件     .ko文件是内核态的动态链接库,用于内核态的动态链接使用,可以用于内核之间的模块相互调用。用户态的代码不可直接调用内核态的代码,但是可以通过其他方式进行通信。3、对于.a文件    .a文件是用于静态链接时,使...

2018-09-27 17:19:27 430

转载 linux下多线程编程

https://www.jb51.net/article/125605.htm我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能 多线程的一些小知识:一个应用程序可以启动若干个线程。线程(Lightweight Process,LWP),是程序执行的最小单元。一般一个最简单的程序最少会有一个线程,就是程序本身,也就是主函数(单线程的进程可以简单的认为...

2018-09-27 16:40:13 146

转载 linux 之互斥锁

为什么需要互斥锁?在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。 下面我们用程序模拟一下这个过程,线程一需要打印“hello”,线程二需要打印“world”,不加任何处理的话,打印出来的内容会错乱: [cpp]vie...

2018-09-27 14:43:43 2153

转载 gdb调试coredump(使用篇)

看到一个非常好的介绍coredump的文章,做个记录,参考链接:https://blog.csdn.net/sunxiaopengsun/article/details/72974548什么是coredump  Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行...

2018-09-26 19:50:12 82351 2

原创 避免野指针&&间接赋值

/**************************避免产生野指针的三个步骤。1.定义指针时候,初始化为NULL2.释放指针所指向的内存空间的时候,判断是不是NULL,避免重复释放。3.释放指针所指向的内存空间后,把指针重置为NULL。************************/int main01(){ int *p =NULL; P = (int *)m...

2018-09-23 17:22:55 272

原创 字符串反转&&char *p 和char a[]区别

字符串反转函数int main03(){ char buff[] = "qwertyuio"; char *p = buff; char *p1 = buff + strlen(buff) -1; printf("p1:%s\n",p1); while(p < p1) { char c = *p; *p = *p1; *p1 = c; ...

2018-09-23 17:11:04 650

转载 Linux下Makefile中动态链接库和静态链接库的生成与调用

转载地址:https://blog.csdn.net/u011964923/article/details/73297443背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译、链接、生成可执行文件,从而实现了移植的过程。平台是Toradex的Apalis TK1,三千多元,买回来我就后悔了,全是英文资料,还各种B...

2018-09-19 15:50:17 2469 1

原创 C语言const

理解const的关键是一定要清楚,指针变量和它所指向的内存空间变量,是两个完全不同的概念。看const 是放在*的左边还是右边,我们知道*是取内容符号,放在左边则修饰的是内存空间变量,放在右边则修饰的是指针变量。在一个函数中,如果我们不需要对一个入口参数做修改,也就是这个这个入口参数不做左值的时候,我们最好使用const修饰一下。int main(){ const int a;...

2018-09-16 21:20:35 5190

原创 C语言字符串while指针模型(很重要)

查找字符串,使用while循环int main(){ const char *p = "1234abcd3rfthabcdrtyabcdsksssssabcd"; int count = 0; printf("%s\n",p); while(p = strstr(p, "abcd")) { count ++; p = p + s...

2018-09-16 18:31:11 2066

原创 strlen()和sizeof的区别&数组和指针

从入口参数接过来的数据最好定义个临时变量,做个缓冲,不要轻易修改原地址的值,要引进一个辅助的指针变量把形参接过来,很重要。一定要清楚指针在内存中的指向,不然会指向一个错误的地址。void get(char *from, char *to){char *myfrom = from;char *myto = to;}strlen是函数,字符串长度,不包括停止符。而sizeof则是内存...

2018-09-16 14:02:33 2601

原创 时间变量必须定义为static&循环保存删除最新日期数据的问题

#include <stddef.h>#include <time.h>static char *getSystemTime(void){ struct timespec time; struct tm nowTime ; char currentTime[50]; clock_gettime(CLOCK_REALTIME, &amp...

2018-09-15 21:39:16 262

转载 #ifdef __cplusplus

看到一篇总结很到位的文章,记录一下。  时常在cpp的代码之中看到这样的代码:#ifdef __cplusplus extern "C" { #endif//一段代码#ifdef __cplusplus } #endif   这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含...

2018-09-15 16:01:51 128

转载 Ubuntu 16.04 安装Wireshark及运行出错的解决方法

Ubuntu 16.04 安装Wireshark步骤:1.1 添加wireshark源sudo add-apt-repository ppa:wireshark-dev/stable1.2 更新版本库sudo apt-get update1.3 安装wiresharksudo apt-get install wireshark1.4 运行Wireshark2.1 如...

2018-09-14 19:21:01 2017

转载 win10搭建nginx下的rtmp服务器

https://blog.csdn.net/fireroll/article/details/51985688https://blog.csdn.net/Contex_A17/article/details/821910501. 下载 nginx 1.7.11.3 Gryphon    下载链接: http://nginx-win.ecsds.eu/download/nginx 1.7....

2018-09-13 17:24:11 5627

转载 typedef声明

http://www.runoob.com/cplusplus/cpp-comments.htmlhttps://blog.csdn.net/wuainifu/article/details/786032371.注释既可以采用/* */  //    也可以使用if 0  .........endif if 0int a+= 3;endif如果需要取消注释,将0改为1即...

2018-09-11 20:03:41 855

转载 Vector用法

https://www.cnblogs.com/-Mr-y/p/7985987.html这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。回到顶部(go ...

2018-09-11 18:13:51 344

转载 C++中的string详解

https://www.cnblogs.com/danielStudy/p/7127564.html标准库类型string表示可变长的字符序列,为了在程序中使用string类型,我们必须包含头文件: #include <string>  声明一个字符串 声明一个字符串有很多种方式,具体如下: 1 string s;//调用默认构造函数,s为一个空字符串 2 strin...

2018-09-11 17:46:06 366

原创 memcpy()

使用memcpy()函数出现如下错误:int main(){ int *chunk = (int *)malloc(10*sizeof(int)); //chunk[5] = 20; for(int i = 0;i<10;i++) { chunk[i] = i; } memcpy(chunk ,0 , 10*sizeof(int)); printf("...

2018-09-10 13:34:37 5708

转载 安装valgrind

https://blog.csdn.net/u012421852/article/details/79145199valgrind是Linux下一个强大的工具,valgrind其子工具主要有:memcheck(检查众多memory问题)、callgrind(分析program性能)、cachegrind(分析cache)、helgrind(分析多线程竞争问题)、massif(分析堆)等。 ...

2018-09-07 16:04:21 623

转载 linux中的strip命令简介------给文件脱衣服

原文:https://blog.csdn.net/stpeace/article/details/47090255作为一名linux开发人员, 如果没有听说过strip命令, 那是很不应该的。 strip这个单词, 大家应该早就学过了, 你就记住是脱衣服就行了, 别的不要多想。 在linux中, strip也有脱衣服的含义, 具体就是从特定文件中剥掉一些符号信息和调试信息。        ...

2018-09-04 12:49:39 1297 1

转载 C语言代码规范

 1 排版1-1:程序块要采用缩进风格编写,缩进的空格数为4个。说明:对于由开发工具自动生成的代码可以有不一致。1-2:相对独立的程序块之间、变量说明之后必须加空行。如下例子不符合规范:if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn...

2018-09-01 17:22:53 4665 2

原创 gstreamer 部分元件总结

1.decodebin官方解释:Autoplug and decode to raw media自动对原始媒体进行解码。这个element会自动用解复用插件和解码插件创建解码pipeline。它被使用起来更方便的uridecodebin作为一个source element集成在自己内部了。以前还有一个旧的decodebin,目前已经废弃不用了。和uridecodebin一样,它也是在媒...

2018-09-01 14:27:35 845

转载 linux常见目录

今天在今日头条看到一个理解的很透彻的linux目录结构详解。转发保存下。1. bin目录binary(二进制的):许多“指令”对应的可“执行程序文件”目录2. sbin目录说明:super binary 超级的 二进制 许多“指令”对应的可“执行程序文件”目录,该目录文件对应指令都是"root"用户可以执行的指令普通用户不能使用该目录里的命令:普通用户:用$开头root...

2018-09-01 14:22:21 167

空空如也

空空如也

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

TA关注的人

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