![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++编程
文章平均质量分 67
wangliang888888
这个作者很懒,什么都没留下…
展开
-
C++基本概念总结——构造函数的public/protected/private语义
构造函数的public/protected/private语义转载 2023-07-21 10:05:16 · 379 阅读 · 0 评论 -
C++ 直接初始化和拷贝初始化
直接初始化和拷贝初始化转载 2023-07-20 16:45:22 · 118 阅读 · 0 评论 -
C++ 深入浅出工厂模式(进阶篇)
本文进阶篇,主要是将工厂类的封装性提高,达到新增产品时,也不需要修改工厂类,不需要新增具体的工厂类。封装性高的工厂类特点是扩展性高、复用性也高。转载 2023-07-20 11:41:05 · 54 阅读 · 0 评论 -
C++ 深入浅出工厂模式(初识篇)
简单来说,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。转载 2023-07-20 11:08:53 · 46 阅读 · 0 评论 -
一文带你了解V4L2
本文转自https://linus.blog.csdn.net/article/details/1035019391.1、什么是v4l2V4L2(video for linux two的缩写)是Linux下关于视频采集相关设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。V4L2支持的设备十分广泛,但是其中只有很少一部分在本质上是真正的视频设备:Video capture de...转载 2020-03-31 15:33:18 · 854 阅读 · 0 评论 -
Linux内核中THIS_MODULE解析
本文转自https://blog.csdn.net/chdhust/article/details/8813450下面分析的代码均针对于内核2.6.18在module.h 中 THIS_MODULE的定义如下:extern struct module __this_module;#define THIS_MODULE (&__this_module)即是保存了__thi...转载 2020-03-31 11:26:19 · 1290 阅读 · 0 评论 -
Linux Core Dump
本文转自https://www.cnblogs.com/alantu2018/p/8468879.html当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄...转载 2020-03-18 19:13:50 · 173 阅读 · 0 评论 -
利用__attribute__((section()))构建初始化函数表,以及Linux内核各级初始化的原理
本文转自https://www.cnblogs.com/sky-heaven/p/8275303.html传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化:使用__attribute__((section()))构建初始化函数表后,由模块告知main:“我要初始化“,添加新模块再也不需要在main代码中显式调用模块初始化接口。以此实现main与模块之间的隔...转载 2020-02-25 15:00:55 · 1315 阅读 · 0 评论 -
linux驱动:中断底半部
本文转自https://blog.csdn.net/sgmenghuo/article/details/37933821 在linux老版本的内核(2.6之前),系统中断分为顶半部和底半部。其实这不是linux的专利,很多现代操作系统都有类似的方法来平衡快速响应和执行复杂任务的关系。早期的有bottom half(BH)和task queue来实现底半部机制,但在遇到要求性能较高...转载 2019-12-24 20:32:47 · 328 阅读 · 0 评论 -
快速排序法(详解)
本文链接:https://blog.csdn.net/qq_40941722/article/details/94396010假设对以下10个数进行快速排序:6 1 2 7 9 3 4 5 10 8 我们先模拟快速排序的过程:首先,在这个序列中随便找一个数作为基准数,通常为了方便,以第一个数作为基准数。 6 ...转载 2019-11-29 15:49:33 · 2986 阅读 · 2 评论 -
C中如何调用C++函数
本文转自https://blog.csdn.net/fanbird2008/article/details/8787337前阵子被问及一个在C中如何调用C++函数的问题,当时简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。一:针对C++非成员函数情况。将C++函数声明为...转载 2019-11-27 13:28:44 · 1575 阅读 · 0 评论 -
《The C++ Programming Language (Special Edition)》中的忠告
本文转自链接:https://blog.csdn.net/starlee/article/details/583591第1章 致读者[1] 在编写程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:[a] 如果你能把“它”看成一个独立的概念,就把它做成一个类。[b] 如果你能把“它”看成一个独立地实体,就把它做成某个...转载 2019-11-26 10:24:44 · 198 阅读 · 0 评论 -
(void) (&_x == &_y)的作用
文章转自https://www.cnblogs.com/GyForever1004/p/8678554.html如果有下面这段代码:#define min(x, y) ({ \ const typeof(x) _x = (x); \ const typeof(y) _y = (y); \ (void) (&_x == &am...转载 2019-11-20 11:20:39 · 612 阅读 · 0 评论 -
Linux下C程序的存储空间布局
本文转自 http://blog.chinaunix.net/uid-26548237-id-3818734.html下面是对可执行文件aa运行size命令后得到的结果。 [root@xxx1 algriom]# size aa text data bss dec hex filename 1257 500 16转载 2017-02-22 23:09:23 · 310 阅读 · 0 评论 -
init/main.c start_kernel() 代码分析
本文转自 http://www.cnblogs.com/darren-715/p/3920033.htmlhead-common.S ---具体做了哪些动作 ---跳转到init/main.c ---b start_kernel //关于start_kernel的强文深入理解linux内核,第八章 main.c asmlinkage void __init start_kernel...转载 2018-06-29 16:34:05 · 519 阅读 · 0 评论 -
Linux do_initcall_level()
本文转自https://blog.csdn.net/chenliang0224/article/details/787471171. do_initcalls()路径:linux-3.10.x\init\main.c start_kernel()-->rest_init()-->kernel_init()-->kernel_init_freeable()-->do_ba...原创 2018-06-29 16:58:24 · 946 阅读 · 0 评论 -
Linux Kernel Makefile解析(一)
本文转自https://blog.csdn.net/dreamflyliwei9/article/details/51379021编译内核首先要执行make menuconfig,那我们就从这条命令开始。(P.S. 内核版本 3.8.0)1. Makefile变量的初始化KBUILD_EXTMOD 为空,因为命令行中没有”M= xxx“,KBUILD_SRC为空,因为没有“O = xx...转载 2018-08-16 19:21:13 · 1892 阅读 · 0 评论 -
Linux内核配置选项 (经典学习)
本文转自https://blog.csdn.net/lh2016rocky/article/details/708824492.5 Linux内核配置选项下面以最新的Linux 2.6.20内核为例,介绍比较常用的一些Linux内核配置选项,其他选项读者可以参考系统提供的帮助信息。需要说明的是,在内核配置中,某项选择Y表示把该项选择进内核,选择M则表示把该项编译成模块,选择N则表示 ...转载 2019-01-22 18:09:10 · 14425 阅读 · 0 评论 -
Linux进程间通信:信号量 semget()、semop()、semctl()
本文转自:https://www.cnblogs.com/52php/p/5851570.html 这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信 – 信号。下面就进入信号量的讲解。一、什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引...转载 2019-02-14 11:23:05 · 1328 阅读 · 0 评论 -
【Linux内核驱动】字符设备驱动框架模板
本文转自https://blog.csdn.net/wr132/article/details/77849488#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/cdev.h>#include <lin...转载 2019-04-28 19:49:09 · 310 阅读 · 0 评论 -
Linux内核定时器
本文转自https://www.ibm.com/developerworks/cn/linux/1308_liuming_linuxtime3/引子时间系统的工作需要软硬件以及操作系统的互相协作,在上一部分,我们已经看到大多数时间函数都依赖内核系统调用,GlibC 仅仅做了一次请求的转发。因此必须深入内核代码以便了解更多的细节。内核自身的正常运行也依赖于时钟系统。Linux 是一个典型...转载 2019-05-23 20:21:48 · 9861 阅读 · 0 评论 -
红黑树原理浅谈(附Linux内核源码注释)
本文转自https://blog.csdn.net/SL_World/article/details/84584503引言:红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewi...转载 2019-05-23 20:52:33 · 483 阅读 · 0 评论 -
Linux监控重要进程的实现方法
本文转自:https://blog.csdn.net/lcy4599/article/details/52267517不管后台服务程序写的多么健壮,还是可能会出现core dump等程序异常退出的情况,但是一般情况下需要在无人为干预情况下,能够自动重新启动,保证服务进程能够服务用户。这时就需要一个监控程序来实现能够让服务进程自动重新启动。查阅相关资料及尝试一些方法之后,总结linux系统监控重要进...转载 2018-04-05 21:23:15 · 3129 阅读 · 1 评论 -
linux下杀死进程(kill)的N种方法
本文转自https://blog.csdn.net/andy572633/article/details/7211546转载一篇,最原始的出处已不可考,望见谅!常规篇: 首先,用ps查看进程,方法如下:$ ps -ef……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 0 11:...转载 2018-04-10 13:23:31 · 339 阅读 · 0 评论 -
【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下
本文转自https://blog.csdn.net/qq_37375427/article/details/79692811#0-qzone-1-9799-d020d2d2a4e8d1a374a433f596ad14401、环境变量(全局变量)-makefile中能够直接使用环境变量的值如果makefile中定义了同名变量,则环境变量将被覆盖运行make时,指定“-e”选项,优先使用环境变量-为什...转载 2018-03-26 20:44:29 · 292 阅读 · 0 评论 -
一个软件实现的Linux看门狗—soft_wdt
本文转自 http://blog.csdn.net/crazycoder8848/article/details/40778947软看门狗介绍soft_wdt(以下简称本软件)是一个软件实现的Linux看门狗。本软件是一款开源、免费软件。下载地址:https://github.com/sunmingbao/soft-wdt/archive/master.zip本软件和/dr转载 2017-03-22 00:03:53 · 3438 阅读 · 0 评论 -
提升SQLite数据插入效率低、速度慢的方法
本文来自 http://blog.csdn.net/swazer_z/article/details/50594561前言SQLite数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作。因此我最近编写有关遥感数据处理的程序的时候,也将SQLite引入进来,以提高数据的结构化程度,并且提高大数据的处转载 2017-03-21 23:47:45 · 2163 阅读 · 0 评论 -
ZLG Linux公开课——嵌入式Linux开发教程
本文转自 http://blog.csdn.net/puyihuan/article/details/49891177本帖将全程连载《嵌入式Linux开发教程》这本书的全部内容,对Linux有兴趣的小伙伴,可以在本帖中,挑选喜欢的章节进行学习,有疑问可在相应帖子页面进行跟帖回复,以下便是本社区连载的全部链接:1、本书简介:连载《嵌入式Linux开发教程》一本文员也能看得懂的教程转载 2017-03-06 22:46:03 · 1050 阅读 · 0 评论 -
SQLite在线备份
转自 http://www.cnblogs.com/stephen-liu74/archive/2012/01/19/2326309.html一、常用备份: 下面的方法是比较简单且常用的SQLite数据库备份方式,见如下步骤: 1). 使用SQLite API或Shell工具在源数据库文件上加共享锁。 2). 使用Shell工具(cp或copy)拷贝数据库转载 2017-03-08 23:49:07 · 4833 阅读 · 0 评论 -
应用层直接操作gpio口及出现的问题sh: write error: Device or resource busy
文章转自http://blog.csdn.net/see_mood/article/details/50826972/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号/sys/class/gpio/unexport 用于通知系统取消导出/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包转载 2017-02-15 23:14:11 · 9662 阅读 · 1 评论 -
bss,data,text,rodata,堆,栈,常量段
本文转自 http://blog.csdn.net/ouyang_linux007/article/details/7448814/红色部分为问题部分section 结构SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr转载 2017-02-09 19:04:47 · 477 阅读 · 0 评论 -
linux内核中链表结构及使用方法
声明:在学习linux 内核数据结构之链表部分时参考了http://blog.chinaunix.net/uid-14114479-id-2932024.html。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开原创 2016-04-21 22:45:46 · 6809 阅读 · 1 评论 -
C语言提高代码效率的几种方法
一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存)。设计的代码比实际执行更难。因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中。本文向你介绍规范你的C代码的几种方法。1、在可能的情况下使用typedef替代macro.当然有时候你无法避免macro,但是typedef更好。typedef int* INT_PTR; IN原创 2016-05-03 10:05:52 · 17539 阅读 · 2 评论 -
Linux内核container_of详解
本文参考了http://my.oschina.net/vazor/blog/87344和http://blog.chinaunix.net/uid-21977330-id-3755194.html整理而成。在学习数据结构课时,我们知道链表元素是个结构体,由数据项和指针项构成,正式里面的指针项是形成链表结构的核心,但数据项才是链表有意义的依托,如果一个链表元素只有指针项,没有数据项,这个原创 2016-04-13 00:19:46 · 1404 阅读 · 0 评论 -
inline函数和宏定义区别 整理
本文转自http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29235952&id=4206608 内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接呗镶嵌到目标代码中。内联函数要做参数类型检查,这是内联函数跟宏相比的优势。 inline是指嵌入代码,就是在调用函数的地方不是跳转转载 2017-09-15 13:42:48 · 7552 阅读 · 1 评论 -
内核头文件使用
转自http://blog.chinaunix.net/uid-22028680-id-3053966.htmlhttp://blog.chinaunix.net/uid-24780853-id-3301606.html1、在内核源码根目录下运行: 'make headers_install',这样内核Makefile会把提供给应用程序的头文件提取并放在内核源码的“usr/in转载 2017-11-09 15:55:13 · 4519 阅读 · 0 评论 -
Linux内核入门——attribute机制
本文来自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86/20151019/335027_3.htmlGNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__是用来设置函数属性(Function Attribute)、变量属性(Variable Attribu...转载 2018-03-20 10:56:49 · 1087 阅读 · 0 评论 -
Linux内核常用数据结构
Linux中最重要最常用如下四种:LIST:链表 <linux/list.h>Linux内核的标准链表就是采用“环形、双向”链表形式实现沿着链表移动智能是线性移动需要随机访问的数据,一般不使用链表链表存放数据的理想情况是:需要遍历所有数据、或者需要动态加入/删除数据有时首元素会用一个特殊的指针表示,称为“头指针”,可以方便的找到链表的“起始端”Linux内核实现特殊性:不是将数据结构塞...转载 2018-03-05 20:41:55 · 3430 阅读 · 0 评论 -
一个Linux下C线程池的实现(转)
本文转自 http://blog.csdn.net/hubi0952/article/details/80450941.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与...转载 2018-03-05 20:22:59 · 160 阅读 · 0 评论 -
【Linux进程间通信】 - 共享内存
文件转自 http://blog.csdn.net/xiejingfa/article/details/50888870今天我们来介绍Linux下最高效的一种进程间通信方式 – 共享内存。1、什么是共享内存?顾名思义,共享内存就是两个(或多个)进程共同占有一段内存空间,这些进程可以是有亲缘关系的进程,也可以是完全不相关的进程。同一块物理内存空间被映射到两个进程,两个进程都可以访问这段共享空间从而实...转载 2018-03-05 18:57:32 · 181 阅读 · 0 评论