- 博客(37)
- 资源 (19)
- 收藏
- 关注
原创 GTest学习---Google单元测试框架
参考文档,共8篇系列文档:初识gtesthttps://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html断言https://www.cnblogs.com/coderzh/archive/2009/04/06/1430364.html事件机制https://www.cnblogs.com/coderzh/archive/2009/04/06/1430396.html参数化https://www.cnblogs.com/coder
2020-10-24 16:06:20
206
原创 自定义bash命令
自定命令,所有用户,永久生效vim /etc/bashrc...source /etc/bashrc自定命令,当前用户,永久生效vim ~/.bashrc...source ~/.bashrc自定命令,当前终端,临时生效alias mytest= 'chmod 777 tesh.sh && ./test.sh'取消自定命令unalias mytest...
2020-09-01 20:18:45
697
原创 流量监控脚本net_monitor.sh
#!/bin/bash ethn=$1 while truedo RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}') TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}') sleep 1 RX_n
2020-08-24 23:22:27
807
1
原创 计时器C++
#pragma once#include <chrono>class CountTime {private: std::chrono::steady_clock::time_point beginTime;public: CountTime(){ begin(); } ~CountTime(){ } inline void begin(){ beginTime = std::chrono::steady_clock::now(); } inline void restart(
2020-08-16 15:25:59
138
原创 配置文件读写:ConfigFile.hpp(支持无段名的配置项)
支持无段名的配置项#ifndef __CONFIGFILEINI_H_#define __CONFIGFILEINI_H_#include <unordered_map>#include <fstream>#include <string>#include <vector>#include <sstream>#include <memory>#include <mutex>#define CONF_DEF
2020-08-16 15:25:10
438
转载 python压缩、解压文件
python压缩、解压文件#!/usr/bin/env python3# coding: utf-8import os, tarfiledef make_targz(output_filename, source_dir): """ 一次性打包目录为tar.gz :param output_filename: 压缩文件名 :param source_dir: 需要打包的目录 :return: bool """ try: wit
2020-08-16 08:13:04
131
原创 自制GDB使用教程
GDB使用教程参考文档:https://www.cnblogs.com/liangyc/p/11631823.html文章目录GDB使用教程开始调试设置断点: `break`或`b`删除断点: `delete`或`d`禁用/启用断点设置监视点查看断点/监视点信息查看代码: `list`或`l`打印变量信息: `print`或`p`查看调试信息: `info`或`i`查看变量的类型查看内存: `examine`或`x`流程控制多线程调试: `thread`或`t`查看堆栈帧: `backtrace`或
2020-07-26 23:16:22
276
原创 GIT自学教程
自制GIT教程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86LPN4dJ-1594375264038)(C:\Users\x30006331\AppData\Roaming\Typora\typora-user-images\image-20200709145833887.png)]git clonegit addgit commitgit checkout例1:git checkout -- readme.txt解释:将readme.txt文件在工作
2020-07-12 00:01:18
404
原创 线程安全队列和线程安全MAP
//ThreadsafeQueue.h#ifndef COMMON_THREADSAFEQUEUE_H#define COMMON_THREADSAFEQUEUE_H#include <queue>#include <memory>#include <mutex>#include <condition_variable>#include <chrono>#include <vector>// 调用等待函数时的返回值
2020-06-25 22:16:39
195
原创 图的最小生成树算法:Kruskal算法与Prim算法
图的最小生成树算法Kruskal算法Prim算法Kruskal算法<\span>struct Node {public: int val; Node * father; Node(int _val) { val = _val; father = this; }};struct Edge{ Node * snode; Node * enode; int weight; Edge(Nod
2020-06-25 22:14:48
131
原创 二叉查找树的实现C++
二叉查找树代码实现struct NODE{ NODE * left; NODE * right; NODE * father; int val; NODE(int v) :val(v){ left = nullptr; right = nullptr; father = nullptr; }};class BST{public: //插入节点,并返回根节点 NODE * Inser
2020-06-25 22:12:04
88
原创 设计模式实例代码-C++版本
[创建型-简单工厂模式](# 创建型-简单工厂模式)[创建型-工厂方法模式](# 创建型-工厂方法模式)[创建型-抽象工厂模式](# 创建型-抽象工厂模式)[行为型-责任链模式](# 行为型-责任链模式)[行为型-策略模式](# 行为型-策略模式)[创建型-单例模式](# 创建型-单例模式)[结构型-外观模式](# 结构型-外观模式)[行为型-观察者模式](# 行为型-观察者模式)[结构型-桥接模式](# 结构型-桥接模式)[结构型-组合模式](# 结构型-组合模式)[创建型-原型模式.
2020-06-25 21:52:12
363
原创 字符串处理相关函数
字符串处理相关函数//删除字符串开头的空格void trim_left(string & str){ auto it = std::find_if_not(str.begin(), str.end(), isspace); str.erase(str.begin(),it );}//删除字符串结尾的空格void trim_right(string & str){ while (std::isspace(str.back())) { str.pop_back();
2020-06-15 22:57:41
136
原创 设计模式-学习记录
设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。当一个设计优良的程序遇上需求新增或变更的情况,应该具有很好的扩展性,而不是直接修改原有的接口。要达到这种效果,我们可以在程序中将一类方法或对象抽象成统一的抽象类。2、里氏代换原则(Liskov Substitution Principle)所有引用父类的地方必须能透明地使用其子类的对象。里氏替换原则告诉我们:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常。
2020-06-14 21:39:29
97
原创 设计模式-单例模式C++实现
设计模式-单例模式C++实现本实现线程安全//Singleton.hpp#include <mutex>template<class T>class Singleton{public: static T *getInstancePtr() { if (m_instance == nullptr) { std::unique_lock<std::mutex> lock(m_mutex);
2020-06-14 21:36:48
144
原创 物理内存和虚拟内存
物理内存和虚拟内存 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多。因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提供的内存大小,是真正的内存。相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为 交换空间(Swap Space)。 作为物理内存的扩展,linux会在物理内存
2020-06-14 21:28:05
2119
转载 进程调度 [转载]
进程调度 [转载]调度程序复杂决定哪个进程投入运行,合适运行以及运行时长。调度程序可看做在可运行态进程之间分配有限的处理器时间资源内核子系统。只有通过调度程序的合理调度,系统资源才能最大程度地发挥作用,多进程才会有并发执行的效果。1.多任务多任务就是操作系统能同时并发地交互执行多个进程。实际上是使多个任务处于阻塞或睡眠状态,这些任务位于内存,但是并不处于可运行状态,知道某一时间发生。Linux系统中往往有多个程序在内存,但是仅有一个处于可运行状态。多任务系统划分为两类:抢占式和非抢占式。Linux采
2020-06-14 21:25:52
112
原创 进程空间简介
进程空间简介进程空间分为:内核空间和用户空间。进程空间的分布如下图所示。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uAqqeQex-1592141032908)(C:\Users\36262\AppData\Roaming\Typora\typora-user-images\image-20200603162443715.png)]32位windows下,一个进程空间4G:内核占2G,用户占2G。一个线程默认栈是1M,所以一个进程最大开2048个线程。当然内存
2020-06-14 21:24:24
2541
转载 进程管理[转载]
进程管理[转载]进程是操作系统的基本概念,本节主要总结Linux内核如何管理进程:进程在内核中如何创建,消亡。1.进程与线程进程是处于执行期的程序,但不仅包含可执行的程序代码,还包括其他资源:打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间和执行线程以及存放全局变量的数据段等。执行线程,简称线程,是进程中活动的对象。拥有独立的程序计数器、进程栈和进程寄存器。**内核调度的对象是线程而不是进程,**在Linux中线程是一种特殊的进程。2.进程描述符内核把进程的
2020-06-14 21:23:43
86
原创 AES对称加密C++实现及使用方法
AES对称加密高级加密标准(AES,Advanced Encryption Standard)是最常见的对称加密算法。对称加密算法也就是加密和解密用相同的密钥.明文P , 没有经过加密的数据。密钥K,用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏。AES加密函数 , 设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。密文C ,经加密函数处理后的数据
2020-06-14 21:17:54
3565
2
原创 (一)基于BOOST ASIO封装的定时器
(一)基于BOOST ASIO封装的定时器代码//20190831 xushuilong#pragma once#include <iostream> #include <boost/asio.hpp>#include <boost/thread.hpp>#include <boost/bind.hpp>#include <boost/date_time/posix_time/posix_time.hpp>class Timer
2020-06-09 12:30:35
372
原创 常用STL算法
常用STL算法1、概述STL算法部分主要由头文件<algorithm>,<numeric>,<functional> 组成。要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含 <numeric>,<functional>中则定义了一些模板类,用来声明函数对象。算法由模板函数体现,这些函数不是容器类的成员函数,是独立的函数,它们可以用于STL容器,也可以用于普通的C++数组等。<function
2020-05-29 21:36:43
492
原创 valgrind工具的使用
一、valgrind简介Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。Valgrind 是运行在Linux 上的多用途代码剖析和内存调试软件。主要包括Memcheck、Callgrind、Cachegrind 等工具,每个工具都能完成一项任务调试、检测或分析。可以检测内存泄露、线程违例和Cache 的使用等。Valgrind 基于仿真方式对程序进行调试,它先于应用程序获取实际处理器的控制权,并在实际处理器的基础上仿真一个虚拟处理器,并使应用程序运行于这个虚拟处
2020-05-29 21:35:54
402
原创 std::promise介绍及使用
[C++11]std::promise介绍及使用一、std::promise介绍std::promise (#include <future>)是C++11并发编程中常用的一个类,常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值,可供相绑定的std::future对象在另一线程t2中获取。二、代码示例:下面我们通过几个简单小例子逐渐深入了解std::promise的使用方法。#include <iostream>#includ
2020-05-29 21:34:27
567
原创 Shell脚本编写的基础知识
一、Shell简介Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。实例如下:#!/bin/bashecho "Hello World !"#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序二、Shell变量定义变量your_name="runoob.com"
2020-05-29 21:33:13
426
原创 MarkDown流程图与时序图
一、简述流程图、时序图、甘特图,这些复杂图形的绘制都是使用代码块来实现的。指定代码块的解析语言,按照相应的绘制语法即可实现。图形类型解析语言样式流程图mermaid标准流程图flow样式时序图mermaid标准时序图sequence甘特图mermaid二、标准流程图的绘制绘制流程图分为两步:1.定义元素;2.定义元素之间的走向。定义元素的语法element_name=>element_type: content:>url/
2020-05-29 21:31:22
1959
1
原创 (二)基于mongoose的常用摘要算法
一、十六进制转字符串/****************************************************************************函数名称: hex_to_str函数功能: 十六进制转字符串*****************************************************************************/static void hex_to_str(char *dst, unsigned char *src, in
2020-05-29 21:29:31
252
原创 linux文本分析工具之`awk`
linux命令之awk一、awk的功能awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据进行分析处理时,显得尤为强大。简单来说awk就是把文件逐行的读入,以指定的分隔符(默认为空格)将每行分成若干个field。然后可以通过编写各种逻辑,对这些field进行处理。实际上 awk 的确拥有自己的语言: AWK 程序设计语言。它允许你创建简短的程序,这些程序可以实现:读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。二、awk的命令格式
2020-05-29 21:27:12
257
原创 MySQL 之全文索引
最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录。引入概念通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。你可能会说,用 like + % 就可以实现模糊匹配了,为什么还要全文索引?like + % 在文本比较少时是合适的,但是对于大量的文本数据检索,是
2020-05-18 16:44:16
166
转载 Qt中漂亮的几款QSS
Qt中漂亮的几款QSS转载:https://www.cnblogs.com/newstart/p/4370203.html/* === Shared === */QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox,QGroupBox, QStatusBar, QToolButton, QComboBox, QDialog...
2019-08-07 12:03:02
1263
原创 c语言string.h中的函数详解
linux kernel code : kernel/lib/string.cstrsep,strtok,strchr ,strstr …PS:本文包含了大部分strings函数的说明,并附带举例说明。本来想自己整理一下的,发现已经有前辈整理过了,就转了过来。@函数原型: char *strdup(const char *s)函数功能: 字符串拷贝,目的空间由该函数分配函数返回: ...
2019-06-22 20:46:48
5019
转载 linux的 find 命令详解
linux的 find 命令详解find命令:用来在给定的目录下查找符合给定条件的文件命令格式: find [OPTIONS] [查找起始路径] [查找条件] [处理动作]一、OPTIONS参数-P、-L、-H:控制软连接的对待方式,用的不多。不介绍了二、查找路径就是个目录路径,相对和绝对都可以。三、查找条件1、根据名称查找(1) -name “PATERN”(2) -ina...
2019-06-22 20:45:02
172
转载 MYSQL学习笔记-1
MYSQL学习笔记-1相关专业术语MYSQL数据库操作MYSQL数据类型常用SQL语句相关专业术语数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余降低了性能,但提高了数据的...
2019-06-22 20:44:39
151
已编译V120boost_1_61_0.rar
2020-08-16
mongoose.rar
2020-08-14
glog_LIB.rar
2020-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人