![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语言
文章平均质量分 87
普通网友
这个作者很懒,什么都没留下…
展开
-
Qt C++ C 常用数据类型转换汇总
//int转QStringQString QString::number ( long n, int base = 10 ) [static]long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t == "3F"QString s = QString("%1").arg(a);//s ==...原创 2021-01-05 18:12:50 · 1453 阅读 · 0 评论 -
C++ 类的静态成员及静态成员函数总结及C语言中的__FILE__、__LINE__和__func__等预定义跟踪调试小记录
对象与对象之间的成员变量是相互独立的。要想共用数据,则需要使用静态成员和静态方法。 只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量。(因为静态成员变量在对象创建之前就已经被分配了内存空间) 静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放)。静态成员变量是在程序编译时分配空间,而在程序结束时释放空间。 静态成员的定义和声明要加个关键static。原创 2020-10-19 14:28:48 · 463 阅读 · 0 评论 -
Qt 日志之Qdebug 二次封装类
简单的日志库可以用Qdebug做一个注册InstallMessageHandle,还有一种是使用开源的日志库,如Boost 库,Log4Qt 等。开源这些日志功能比较强大,Qdebug的话做些本地运行日志跟踪状态,还是足够的。文件夹存放日志,按时间命名,大于1024 * 1024 * 4 ,(4M)自动新建文件。大小可以根据具体项目更改.时间,文件名+行号+level +信息 :[18:03:58.210][..\testQdebug\main.cpp-11][Info]: test qDebug原创 2020-10-17 18:27:04 · 648 阅读 · 0 评论 -
C、C++语言实现日志封装
logger.h/** * logger.h * @brief 简易日志模块 */#ifndef __LOGGER_H__#define __LOGGER_H__#include <iostream>#include <iomanip>#include <fstream>#include <string>#include <cstdlib>#include <stdint.h>typedef enum原创 2020-10-17 14:43:48 · 1020 阅读 · 0 评论 -
ROS2 Dashing源码编译和安装
ROS2 Dashing源码编译和安装安装前的准备 1 2 3 4 5 官方教程: https://index.ros.org/doc/ros2/Installation/Dashing/Linux-Development-Setup/ 环境信息: UBUNTU18.04LTS 可选项:安装系统备份和恢复工具timeshift,避免发生灾难性错误后无法恢复,使用方法:链接 修改DNS(有助于避免安装过程中频.原创 2020-08-12 13:29:31 · 1013 阅读 · 0 评论 -
linux常用c函数 文件权限控制篇
access(判断是否具有存取文件的权限) 相关函数 stat,open,chmod,chown,setuid,setgid 表头文件 #include 定义函数 int access(const char * pathname,int mode); 函数说明 access()会检查是否可以读/写某一已存在的文件。参数mode有几种情况组合,R_OK,W_O原创 2015-07-22 22:49:58 · 516 阅读 · 0 评论 -
linux常用c函数 信号处理篇
alarm(设置信号传送闹钟) 相关函数 signal,sleep 表头文件 #include 定义函数 unsigned int alarm(unsigned int seconds); 函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下原创 2015-07-22 22:51:09 · 566 阅读 · 0 评论 -
linux常用c函数 进程操作篇
atexit(设置程序正常结束前调用的函数) 相关函数 _exit,exit,on_exit 表头文件 #include 定义函数 int atexit (void (*function)(void)); 函数说明 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用原创 2015-07-22 22:51:39 · 416 阅读 · 0 评论 -
Linux shell脚本全面学习
1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行:编译 chmod +x filenam原创 2015-07-22 22:52:11 · 339 阅读 · 0 评论 -
读C++ Primer 之句柄类
我们知道C++中最令人头疼的当属指针,如果您申请了对象却没有释放它,时间一长就会造成系统崩溃,大量的内存溢出使得您的程序的健壮性出现问题而句柄类就是为了能够解决这一问题而出现的,句柄类有点类似于智能指针。好了,废话不多说,我们来看代码首先我们来看 sample.h文件的代码:/* * author:xizero00 * mail:xizero00@163.com转载 2015-07-22 23:21:36 · 480 阅读 · 0 评论 -
C++内存池实现
利用C/C++开发大型应用程序中,内存的管理与分配是一个需要认真考虑的部分。本文描述了内存池设计原理并给出内存池的实现代码,代码支持Windows和Linux,多线程安全。内存池设计过程中需要考虑好内存的分配与释放问题,其实也就是空间和时间的矛盾。有的内存池设计得很巧妙,内存分配与需求相当,但是会浪费过多的时间去查找分配与释放,这就得不偿失;实际使用中,我们更多的是关心内存分配的速度,而不是内存的原创 2015-07-22 22:55:34 · 376 阅读 · 0 评论 -
五个 Linux 下用户空间的调试工具
根据定义,调试工具是那些那些使我们能够监测、控制和纠正其他程序的程序。我们为什么应该用调试工具呢? 在有些情况下,运行一些程序的时候我们会被卡住,我们需要明白究竟发生了什么。 例如,我们正在运行应用程序,它产生了一些错误消息。要修复这些错误,我们应该先找出为什么产生这些错误的消息和这些错误消息从哪里产生的。 一个应用程序可能突然挂起,我们必须了解其他什么进程同时在运行。我们可能还必须弄清楚原创 2015-07-22 22:53:59 · 383 阅读 · 0 评论 -
Linux系统进程间隔定时器Itimer
所谓“间隔定时器(Interval Timer,简称itimer)就是指定时器采用“间隔”值(interval)来作为计时方式,当定时器启动后,间隔值interval将不断减小。当interval值减到0时,我们就说该间隔定时器到期。与上一节所说的内核动态定时器相比,二者最大的区别在于定时器的计时方式不同。内核定时器是通过它的到期时刻expires值来计时的,当全局变量jiffies值大于原创 2015-07-22 22:53:36 · 2468 阅读 · 0 评论 -
linux下检测网卡与网线连通状态
在linux下使用ifconfigl命令能很方便的查看网卡与网线是否连通,运行ifconfig eth0命令大致输出如下:# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:25:35:68:CC:D6 inet addr:192.168.1.168 Bcast:192.168.原创 2015-07-21 22:45:59 · 841 阅读 · 0 评论 -
Linux的mmap文件内存映射机制
在讲述文件映射的概念时, 不可避免的要牵涉到虚存(SVR 4的VM). 实际上, 文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施, 好似用户将文件映射到自己地址空间的某个部分, 使用简单的内存访问指令读写文件;另一方面, 它也可以用于内核的基本组织模式, 在这种模式种, 内核将整个地址空间视为诸如文件之类的一组不同对象的映射. 中的传统文件访问方式是, 首先用open系统调原创 2015-07-21 22:39:46 · 347 阅读 · 0 评论 -
linux常用c函数 数据结构及算法篇
crypt(将密码或数据编码) 相关函数 getpass 表头文件 #define _XOPEN_SOURCE #include 定义函数 char * crypt (const char *key,const char * salt); 函数说明 crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字原创 2015-07-21 22:56:46 · 575 阅读 · 2 评论 -
linux静态库和动态库分析
1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 本文仅限于介绍linux下的库。 2.库的种类 linux下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不原创 2015-07-21 22:52:25 · 431 阅读 · 0 评论 -
编写模块遍历系统中的进程
编写内核模块实现进程的遍历。这个有点类似ps命令了。 源程序:list.c /***************************************** *功能:利用进程链表遍历当前系统中的所有进程 *同时可以打印出进程的相关信息 * * ***************************************/ #include l原创 2015-07-21 22:43:13 · 543 阅读 · 0 评论 -
Linux下Socket编程
一 、socket介绍 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是转载 2015-07-20 15:13:28 · 322 阅读 · 0 评论 -
Linux 线程实现机制分析
自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性、效率。本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足,描述了 Linux 社区是如何看待和解决兼容性和效率这两个问题的。 一.基础知识:线程和进程 按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的原创 2015-07-22 22:52:53 · 404 阅读 · 0 评论 -
linux fcntl()函数
linux fcntl()函数 功能描述:根据文件描述词来操作文件的特性。 #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); [描述]原创 2015-09-14 14:55:21 · 478 阅读 · 0 评论 -
linux 下关于用户的操作
Linux 的账号与群组管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦! 在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的! 使用者标识符: UID 与 GID虽然我们登陆 Li原创 2015-10-27 20:11:27 · 1129 阅读 · 0 评论 -
SQLite应用之实例代码
目录一、获取表的Schema信息二、常规数据插入三、高效的批量数据插入四、数据查询一、获取表的Schema信息 1). 动态创建表。 2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型。 3). 删除该表。 见以下代码及关键性注释:#include <sqlite3.h>#include...原创 2019-06-05 14:43:08 · 2385 阅读 · 0 评论 -
SQLite剖析之编程接口详解
前言 使用过程根据函数大致分为如下几个过程:sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_finalize() sqlite3_close() 这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作...原创 2019-06-05 14:42:24 · 364 阅读 · 0 评论 -
SQLite安装、编译与应用
什么是 SQLite SQLite是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、支持事务的SQL数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。第一个Alpha版本诞生于2000年5月,直到今天已经成为最流行的嵌入式数据库,包括Google在内的许多公司在其桌...原创 2019-06-05 14:41:28 · 518 阅读 · 0 评论 -
SQLite剖析之C/C++接口
SQLite3是SQLite一个全新的版本,它虽然是在SQLite2的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API。SQLite3是为了满足以下的需求而开发的:支持UTF-16编码、用户自定义的文本比较方法、可以对BLOBs字段建立索引。SQLite 3.X版的和SQLite2.X版的API非常相似,但是有一些重要的改变需要注意。3.X版的API增加到超过185个,所有A...原创 2019-06-05 14:40:29 · 359 阅读 · 0 评论 -
SQLite剖析之数据类型
许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类型系统的数据库引擎。在某种意义上,工作在静态类型数据库上的SQL声明也同样能工作在SQL...原创 2019-06-05 14:38:29 · 568 阅读 · 0 评论 -
I/O复用之Select模型
I/O复用之Select模型I/O复用使得程序能够同时监听多个文件描述符,但是,他本身也是阻塞的,并且当一个或多个文件描述符准备就绪时,如果不采用其他措施,程序只能按顺序处理其中的每个文件描述符。如果要使程序能够并行运行,只能使用多进程或多线程的方式。Linux下实现I/O复用的系统调用主要有select、poll和epoll,下面将详细介绍select的系统调用。Select...原创 2019-04-24 14:04:04 · 400 阅读 · 0 评论 -
在map中保存struct,及map的文件输入输出
用函数的方法实现:从map输出到文件,map的value是struct#include#include#include#includeusing namespace std;struct studentID { string name; string address;};studentID MakeStuden转载 2015-11-30 14:57:41 · 2624 阅读 · 0 评论 -
C++11学习总线及相关资料----悲惨了好多天,奉献了!
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型原创 2015-10-14 18:39:48 · 2058 阅读 · 0 评论 -
设计模式之单例模式
Recently I've bumped into a realization/implementation of the Singleton design pattern for C++. It has looked like this (I have adopted it from the real life example):// a lot of methods are omitted原创 2015-10-14 18:49:59 · 548 阅读 · 0 评论 -
linux 下文件的搜寻(转)
which (寻找『运行档』)[root@www ~]# which [-a] command选项或参数:-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名[root@www ~]# which ifconfig/sbin/ifconfig 用 root转载 2015-10-27 20:05:05 · 617 阅读 · 0 评论 -
linux grep命令详解
简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更转载 2015-10-27 19:41:18 · 474 阅读 · 0 评论 -
linux vi(vim)常用命令汇总(转)
前言首先介绍一下 vim vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有 vi 有各种变种, 在不同的机器上常用不同的变种软件 其中 vim 比较好用也用得比较广泛 vim 是 Vi IMproved 的缩写, 表示更好的 vi 本文就说些其中比较有用, 比较常用的命令, 若能熟练运用这些命令, 那么会发现编辑文件很大帮助,尤其是做开发的人员,能快速的提高开发效转载 2015-10-27 20:01:00 · 502 阅读 · 0 评论 -
linux 下常用的文件和目录操作命令(转)
cdpwdmkdirrmdirlscprmmvcattacnl morelessheadtailtouch cd (变换目录)我们知道vbird这个使用者的家目录是/home/vbird/,而root家目录则是/root/,假设我以root身份在 Linux系统中,那么简单的说明一下这几个特殊的目录的意义是:[ro转载 2015-10-27 20:06:22 · 1078 阅读 · 0 评论 -
pthread相关资料整理(1)
1. pthread线程概念Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。与vxworks上任务的概念类似,都是调度的最小单元,都有共享的堆、栈、代码区、全局变量等。 2. 创建线程int pthread_create(pthread_t原创 2015-07-20 15:08:31 · 637 阅读 · 0 评论 -
C 语言中的 srand 和 rand
大家在写 C/C++ 程序时,难免会遇到要求获取某个范围内的随机数,我查阅了一些资料后,总结如下。本文分两部分,先介绍 C 语言中与随机数相关的两个函数 srand 和 rand,后介绍 C++ 中的 random 库,每一部分最后会给出生成特定范围内的随机数模板供参考。1 C 语言中的 srand 和 rand1.1 实现下面是 VC 的实现,GCC 的实现比 VC转载 2015-08-13 17:15:29 · 1795 阅读 · 0 评论 -
[数字信号处理]IIR滤波器的间接设计(C代码)
1.模拟滤波器的设计 1.1巴特沃斯滤波器的次数 根据给定的参数设计模拟滤波器,然后进行变数变换,求取数字滤波器的方法,称为滤波器的间接设计。做为数字滤波器的设计基础的模拟滤波器,称之为原型滤波器。这里,我们首先介绍的是最简单最基础的原型滤波器,巴特沃斯低通滤波器。由于IIR滤波器不具有线性相位特性,因此不必考虑相位特性,直接考虑其振幅特性。转载 2014-02-11 10:32:15 · 1047 阅读 · 0 评论 -
[数字信号处理]IIR滤波器基础
1.IIR滤波器构造 之前在介绍FIR滤波器的时候,我们提到过,IIR滤波器的单位冲击响应是无限的!用差分方程来表达一个滤波器,应该是下式这个样子的。 这个式子是N次差分方程的表达式。我们明显可以看出,计算输出y(n)的时候,需要以前的输出值与输入值。换言之,这个可能表达式还有反馈环节。当为0的时候,这个滤波器由于没有反馈,其单位转载 2014-02-11 10:31:01 · 1195 阅读 · 0 评论 -
相位特性解卷绕
1.什么是解卷绕?为什么要解卷绕? 对于FIR滤波器的系数,也就是FIR滤波器的单位冲击响应,做离散时间的傅里叶变换。比如,像下面这样。所得到的结果是这个FIR滤波器的频率响应。然而,频率响应又表示为振幅特性和相位特性,就像这样所以,振幅特性和相位特性就按下式可以计算出来。 既然如此,我们就把一个系统转载 2014-02-11 10:29:43 · 7797 阅读 · 1 评论