自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 资源 (7)
  • 收藏
  • 关注

原创 使用Linux的Autotools来生成Makefile

使用Linux的Autotools来生成Makefile#-----------------------------------------------------$ mkdir Autotools_DemoHello$ cd Autotools_DemoHello#-----------------------------------------------------# 我们的 源文件是myprintMain.c 包名是hello 版本号是1.0echo >> myprint

2021-09-18 13:48:06 202

原创 注释转换(C的多行注释 转换为C++的单行注释)

目录题目描述AnnotationConvert.h (状态划分)AnnotationConvert.c (处理每个字符)main.c (测试代码)Makefile (编译)test_in (待测试数据)test_out (输出)题目描述把C的多行注释转换为C++的单行注释如:把/** int a;*/转换为//// int a;//利用状态转换AnnotationConvert.h (状态划分)分为四个状态#ifndef __ANNOTATION_CONVERT_H

2021-04-17 00:27:19 410

原创 vim常用操作 && Linux常用命令

001-粘贴代码到文件中遇到的问题vim粘贴后格式错乱解决办法运行如下命令,进入 paste 模式::set paste进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 进入普通模式并执行如下命令结束 paste 模式::set nopaste...

2021-04-14 10:22:30 358

原创 22_ChainOfResposibility职责链-学习笔记

C++设计模式-李建忠22-Chain of Resposibility 职责链1. “数据结构”模式常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。典型模式CompositeIteratorChain of Resposibility2. 动机(Motivation)在软件构建过程中,一个请求可能..

2021-04-14 09:42:50 134 1

原创 12_Singleton单件模式-学习笔记

C++设计模式-李建忠12-Singleton 单件模式1. “对象性能”模式面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。典型模式SingletonFlyweight2. 动机(Motivation)在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制..

2021-04-11 22:30:56 143

原创 09_AbstractFactory_抽象工厂-学习笔记

C++设计模式-李建忠09-Abstract Factory 抽象工厂1. 对象创建”模式通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilder2. 动机(Motivation)在软件系统中,经常面临着 “一系列相互依赖的对象” 的创建工作;同时,由于需求的变化,往往存在更多..

2021-04-11 22:29:03 82

原创 08_FactoryMethod工厂方法-学习笔记

08-FactoryMethod工厂方法1. “对象创建”模式通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilder2. 动机(Motivation)在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对.

2021-04-11 22:24:37 117

原创 07_Bridge桥模式

Bridge“单一职责”模式:在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式DecoratorBridge动机(Motivation)由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度?代码1.代码1//-----------

2021-04-11 22:22:06 75

原创 06_Decorator装饰模式

Decorator装饰.模式“单一职责”模式:在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式DecoratorBridge动机(Motivation)在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展

2021-04-11 22:18:33 88

原创 05_Observer观察者模式-学习笔记

C++设计模式整理自李建忠老师的《C++设计模式》视频教程Observer观察者模式(常用)(组件协作模式)“组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式Template MethodStrategyObserver / Event1. 动机(Motivation)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”:一个对象(目标

2021-04-11 22:06:42 102

原创 04_Strategy策略模式_笔记

C++设计模式整理自李建忠老师的《C++设计模式》视频教程“组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式Template MethodStrategyObserver / Event04_Strategy策略模式(组件协作模式)1.动机(Motivation)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编.

2021-04-11 21:58:59 78

原创 03_TemplateMethod-笔记

C++设计模式整理自李建忠老师的《C++设计模式》视频教程GOF-23 模式分类从目的来看:创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。从范围来看:类..

2021-04-11 21:48:53 110

原创 02_面向对象设计原则-学习笔记

C++设计模式整理自李建忠老师的《C++设计模式》视频教程02-面向对象设计原则面向对象设计,为什么?变化是复用的天敌!面向对象设计最大的优势在于:抵御变化!重新认识面向对象理解隔离变化从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小各司其职从微观层面来看,面向对象的方式更强调各个类的“责任”由于需求变化导致的新增类型不应该影响原来类型的实现——是所谓各负其责对象是什么?从语言实现层面来看,对象封装了代码和数据。从

2021-04-11 21:41:04 79

原创 01-设计模式简介-学习笔记

C++设计模式整理自李建忠老师的《C++设计模式》视频教程01-设计模式简介课程目标理解松耦合设计思想掌握面向对象设计原则掌握重构技法改善设计掌握GOF核心设计模式什么是设计模式“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。——Christopher AlexanderGOF 设计模式历史性著作《设计模式:可复用面向对象软件的基础》一书中描述了23种经典面向对象设计模式,创立了模

2021-04-11 21:31:51 94

原创 CentOS7的日常使用

目录常用操作1. 共享文件夹(centos7虚拟机和Windows之间)网络常用操作1. 共享文件夹(centos7虚拟机和Windows之间)VMware设置centos7共享文件夹https://blog.csdn.net/nesxiaogu/article/details/85274626https://www.cnblogs.com/skyheaving/p/12286513.html操作如下:1、在VMware上设置共享文件夹我设置的是 C:\Users\WHaoL\De

2021-02-02 15:27:21 1712

原创 VMware下CentOS7扩展root目录磁盘容量

VMware下CentOS7扩容/root/目录磁盘容量具体步骤我们给CentOS7虚拟机的/root/扩展20G空间//---------------------------------------------------------------//1、关闭虚机,然后在vmware给CentOS7扩展20G,然后启动CentOS7查看分区信息。 查看磁盘信息,可以看到系统下只有一块硬盘sda;[root@lwh ~]# df -h 查看磁盘使用情况 Filesystem

2021-01-28 19:15:20 428

原创 C++设计模式-学习笔记

目录C++设计模式-李建忠Observer 观察者模式1. “组件协作”模式:2. 动机(Motivation)3. 模式定义4. 结构(Structure)5. 需要改进的C++伪代码6. 改进后的C++伪代码7. 要点总结Factory Method工厂方法1. “对象创建”模式2. 动机(Motivation)3. 模式定义4. 结构(Structure)5. 需要改进的C++伪代码6. 改进后的C++伪代码7.要点总结Abstract Factory 抽象工厂1. 对象创建”模式2. 动机(Moti

2021-01-15 21:56:53 384

原创 Makefile 5、Makefile 模板

Makefile (C/C++)#------------------目标 ------------------EXECUTABLE := main #------------------文件后缀 ------------------# .o文件SrcSuf = cSrcSuf2 = cppSrcSuf3 = ccObjSuf = oLibSuf = soLibSuf2 = a.SUFFIXES: .$(SrcSuf) .$.

2021-01-12 15:37:51 186

原创 mysql++安装、使用详解、编程Demo

目录mysql++1 mysql++简介2https://tangentsoft.com/mysqlpp/homemysql++1 mysql++简介MySQL++是官方发布的;MySQL++是c++对MySQL和MariaDB C api的再次封装;所以MySQL++是一套C++ API。它建立在与标准c++库相同的原则之上,使处理数据库如同处理std容器(STL)一样简单。MySQL++还提供了一些工具,可以让您在自己的代码中避免重复的SQL,为这些常见任务提供了本地c++接

2021-01-07 20:36:59 2941

原创 Redis 学习 - hiredis(官网 2021-01-06)

目录Hiredis1. Hiredis简介2. Synchronous API(同步API)2.1 Connecting(连接)2.2 Sending commands(发送命令)2.3 Using replies(使用回复)RESP2RESP32.4 Cleaning up(清理)2.5 Sending commands (cont'd)(发送命令)(二进制安全)2.6 Pipelining 流水线2.7 Errors错误3. Asynchronous API(异步API)3.1 Connecting(连

2021-01-06 23:27:27 1565

原创 Centos7安装redis6.0.X时遇到的问题

目录错误1安装redis-6.0.9错误1在make的时候,提示如下错误:server.c:5170:39: error: ‘struct redisServer’ has no member named ‘maxmemory’if (server.maxmemory > 0 && server.maxmemory < 1024*1024) { ^server.c:5171:176: error: ‘s

2021-01-06 22:31:58 600 2

原创 centos7安装openssl

centos7安装opensslyum install opensslyum install openssl-devel[root@lwh hiredis-master]# openssl versionOpenSSL 1.1.1f 31 Mar 2020[root@lwh hiredis-master]#

2021-01-06 20:41:21 792 3

原创 Linux Protobuf的安装和使用

发掘到一篇非常优秀的Protobuf的学习笔记,转载一下,用时回顾原版博客如下google protobuf安装与使用:https://www.cnblogs.com/luoxn28/p/5303517.html另一位大佬的改进整理如下:https://blog.csdn.net/u012414189/category_8355858.htmlProtobuf安装步骤: https://blog.csdn.net/u012414189/article/details/84074036Prot

2020-12-20 00:35:18 71 1

原创 数据结构-第二讲 线性结构-学习笔记(MOOC 浙江大学 陈越 何钦铭)

目录第二讲 线性结构2.1 线性表及其实现2.1.1 引子:多项式表示2.1.2 线性表及顺序存储2.1.3 顺序存储的插入和删除顺序存储-数组实现-code2.1.4 链式存储及查找2.1.5 链式存储的插入和删除2.1.6 广义表与多重链表顺序存储-链表实现-code2.2 堆栈2.2.1 什么是堆栈2.2.2 堆栈的顺序存储实现(数组实现)堆栈的顺序存储实现-数组实现-code2.2.3 堆栈的链式存储实现(链表实现)堆栈的链式存储实现-链表实现-code2.2.4 堆栈应用:表达式求值2.3 队列2

2020-12-17 19:26:43 665 2

原创 数据结构-第一讲 基本概念-学习笔记(MOOC 浙江大学 陈越 何钦铭)

目录第一讲 基本概念1.1 什么是数据结构1.1.1 关于数据组织 - 例:图书摆放1.1.2 关于空间使用 - 例:PrintN函数实现1.1.3 关于算法效率 - 例:计算多项式值计算函数 花费的时间1.1.4 抽象数据类型1.2 什么是算法1.2.1 算法的定义1.2.2 什么是好的算法?1.2.3 复杂度的渐进表示1.3 应用实例:最大子列和问题1.3.1 应用实例 - 算法 1 & 21.3.2 应用实例 - 算法 31.3.3 应用实例 - 算法 4https://www.icou..

2020-12-16 15:56:16 307

原创 MarkDown中插入数学公式(CSDN的MarkDown编辑器、Typora的MarkDown编辑器)

CSDN中如何插入数学公式https://blog.csdn.net/the_lastest/article/details/73350493MarkDown 数学公式https://blog.csdn.net/qq_36667170/article/details/79503835

2020-12-08 23:20:19 94

转载 git分支管理 git 代码合并

git分支管理https://www.jianshu.com/p/402131fe615cgit 代码合并https://www.jianshu.com/p/b15574f50939https://www.jianshu.com/p/e4919f1c3a28https://www.jianshu.com/p/e20b659f4ebahttps://www.jianshu.com/p/1a65293d722e

2020-12-08 22:02:24 88

转载 Linux中的零拷贝技术

目录引文什么是零拷贝技术(zero-copy)?让数据传输不需要经过user space使用mmap使用sendfile使用splice原文:浅析Linux中的零拷贝技术 https://www.jianshu.com/p/fad3339e3448本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入:引文在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中

2020-12-08 21:41:32 60

原创 JSON-03 cJSON的安装、使用 以及 官方的Demo案例

cJSON 库是C语言中的最常用的 JSON 库https://github.com/DaveGamble/cJSONgit clone https://github.com/DaveGamble/cJSON.gitcd cJSON/mkdir buildcd build/cmake ..makemake install

2020-12-03 23:54:36 720

原创 JSON-02 CJsonObject 及 CJsonObject 的官方例程 demo.cpp

目录CJsonObject1. CJsonObject 介绍2. CJsonObject 的官方例程 demo.cpp3. CJsonObject 使用中遇到的问题3.1 如何遍历json的key,并取其value?3.2 Replace一个key时,是否需要原value类型与替换后value类型一致?3.3 []和()的重载有什么区别,为什么要重载这两个操作符?3.4 如何用CJsonObject创建类似以下二维数组?3.5 请问一下使用CJsonObject如何创建如下形式的数组?CJsonObjec

2020-12-03 09:01:49 882

原创 JSON-01 JSON语法

这里写目录标题1.JSON是什么2.JSON的语法规则是怎样的1.JSON是什么JsoN,全称是Javascript object Notation,即Javascript对象标记法。JsoN是一种轻量级(Light-Weight)、基于文本的(Text-Based)、可读的(Human-Readable)格式。JSON的名称中虽然带有Javascript,但这是指其语法规则是参考Javascript对象的,而不是指只能用于JavaScript 语言。JSON无论对于人,还是对于机器来说,都是十分

2020-12-03 08:58:57 134

原创 15_libevent

目录1. Libevent1.1 libevent特点1.2 libevent安装2. 事件处理框架 : 创建event_base2.1 创建和检测event_base的API01event_method.c2.2 event_base和fork02event_method.c3. 事件处理框架: 启动event_base循环3.1 设置事件循环 : event_base_dispatch()3.2 终止事件循环(不常用)4. 事件(不带缓冲区的): event4.1 事件的创建、添加、删除4.2 练习:0

2020-12-02 21:30:42 179

原创 shell学习笔记

目录一、为什么要学习shell二、 shell基础2.1 确定当前用户的shell2.2 shell的内建命令2.3 shell的执行test.sh 01三、 shell 基础语法3.1 变量1.变量的定义2.删除变量3.2 变量的分类1. shell内变量:全局变量、局部变量2. 环境变量test.sh 02test_sub.sh 023.3 文件名代换main.c 033.4 命令代换test.sh 04curPath.sh 043.5 算数代换test.sh 053.6 转义字符3.7 引号四、she

2020-11-26 23:03:15 212

原创 《C++ Premier》第5版 第12章 动态内存(智能指针)读书笔记

目录

2020-11-22 21:50:26 119

原创 《C++ Premier》第5版 第10章 泛型算法 10.3 定制操作(Lambda)读书笔记

目录返回捕获列表参数传递混合使用隐式捕获和显示捕获时何时使用函数?何时使用lambda?类似普通类的数据成员,lambda的数据成员在lambda对象创建时被初始化返回返回如果一个lambda体包含任何单一return语句之外的内容,且未指定返回类型,则编译器假定此lambda返回void;只包含单一return语句时,编译器会根据体中的代码推导出返回类型。被推断为返回void的lambda不能返回值;此时如果需要返回能正常执行,需要明确指定lambda的返回类型捕获列表捕获

2020-11-20 12:31:46 137

原创 《C++标准库第2版》侯捷译 - 第3章 C++11 语言新特性 - 3.1.10 Lambda - 读书笔记

目录Lambda1. Lambda 语法2. capture(用以访问外部作用域)Lambda1. Lambda 语法lambda是一份功能定义,可被定义与语句或表达式内部。因此你可以拿lambda当做inline函数使用lambda表达式形式如下[capture list] (parameter list) -> return type { functiono body}[capture list] (parameter list) mutable -> return

2020-11-19 22:48:20 102

转载 C++中的Lambda表达式详解

https://www.jb51.net/article/56147.htm目录我是搞C++的一段简单的Code基本语法Lambda的使用关于Lambda那些奇葩的东西总结我是搞C++的一直都在提醒自己,我是搞C++的;但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C++代码了。今天看到了C++中的Lambda表达式,虽然用过C#的,但是C++的,一直没有用,也不知道怎么用,就可怜的连Lambda语法都看不懂。好了,这里就对C++中的La

2020-11-19 14:01:56 186

原创 C/C++ 断言(assert)的用法

目录assert() / 断言1. assert()原型2. assert()的开启和关闭3. 一般在什么情况下使用assert()?4. 使用assert()应该养成的良好习惯assert() / 断言1. assert()原型#include "assert.h" void assert( int expression );assert() 是个宏。assert() 是一个调试程序时经常使用的宏。写代码的时候熟练的使用assert,可以给自己的代码调试带来极大的便利。其作用是先计算表

2020-11-19 12:49:13 1472

原创 Linux系统编程-面试题:多线程顺序打印输入的字符串

Linux系统编程:多线程顺序打印输入的字符串效果C语言实现#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#include <sys/stat.h>#include <pthread.h>using namespace std;pthread_mutex_t mu

2020-11-19 00:10:28 561

原创 14_UDP_广播_组播_本地套接字

目录1. UDP1.1.UDP概念1.2.UDP通信流程1.2.1.UDP操作函数1.2.2.通信流程client.cserver.c2. 广播概念UDP广播:通信流程设置广播属性的函数广播的特点:client.cserver.c3. 组播/组播概念&特点组播地址UDP组播:通信流程UDP设置组播属性03_multicast_client.c03_multicast_server.c4. 本地套接字结构体通信流程04_localipc_client.c04_localipc_server.c代码

2020-11-17 22:27:42 303

sourceinsight_4.0.86.0.zip

代码查看神器sourceinsight_4.0.86.0 安装包

2020-10-04

MAKEFILE.zip

《Makefile 1、入门》 https://blog.csdn.net/liangwenhao1108/article/details/104915602 的文中代码

2020-03-19

Linux0.01 Linux0.11 Linux0.12 Linux1.0 源码,大家一起学!

Linux0.01 Linux0.11 Linux0.12 Linux1.0 源码,不要积分下载,大家一起学!;;;Linux0.01 Linux0.11 Linux0.12 Linux1.0 源码,不要积分下载,大家一起学!

2020-02-20

vs2010 vs2012 vs2013 vs2015 vs2017 vs2019 的番茄插件.rar

vs2010 vs2012 vs2013 vs2015 vs2017 vs2019 的番茄插件 isual assist x是一款非常好用的Microsoft Visual Studio插件,它可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。软件支持Microsoft Visual Studio 2003-2017,C/C++,C#,ASP,VisualBasic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等。使用Visual Assist X能够非常有助于提高用户开发过程的自动化和开发效率。

2020-02-01

GNU-make-manual-v3.80.pdf

//---------------网上很多Makefile文章,应该都在自这个PDF-----------------------------// Linux 环境下的程序员如果不会使用 GNU make 来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix 程序员。在 Linux(unix)环境下使用 GNU 的 make 工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为 Makefile 文件的编写。此文件正是 make 正常工作的基础。

2019-12-13

dos程序员参考手册-chm类型文件-平时查找各种知识点特别方便

dos程序员参考手册-chm类型文件-平时查找各种知识点特别方便

2019-04-08

CC++参考手册-chm类型文件-平时查找CC++各种函数和概念特别方便

CC++参考手册-chm类型文件-平时查找CC++各种函数和概念特别方便

2019-04-08

空空如也

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

TA关注的人

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