自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小胡同学的博客

每天进步一点点

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

原创 第三方库httplib的使用

第一种方法第二种方式在使用的时候,主要使用<httplib.h>头文件里的httplib::中的Server和Client进行创建服务器和客户端。httplib安装和使用简单,可以以一个很低的时间成本去搭建一个http服务器,让更多的事件进行到处理业务上。

2024-12-04 18:30:00 2296

原创 使用bundle文件压缩库压缩文件

bundle库的安装方式:直接使用git clone 把源代码拷贝到文件中在使用这个库的时候 ,根据拷贝的目录找到bundle.h文件进行包含进行在编译的时候需要进行联合编译,就是编译自己的.cpp文件时也要编译bundle.cpp文件BundleBundle 是⼀个嵌⼊式压缩库,⽀持23种压缩算法和2种存档格式。使⽤的时候只需要加⼊两个⽂件 bundle.h 和bundle.cpp即可。

2024-12-04 18:00:00 593

原创 使用Jsoncpp进行序列化和反序列化

安装jsoncpp在Ubuntu os下会使用到apt-get,如果apt-get版本过低需要进行升级版本升级完进行安装jsoncpp安装完需要查看jsoncpp是否安装成功,查看安装的文件目录安装成功查看目录能看到jsoncpp里面的头文件在代码使用jsoncpp应该包含下面路径即可使用。

2024-11-28 19:00:00 2500

原创 C++项目(多设计模式下实现同步&异步日志系统)

通过测试得出:在同步写日志的情况下,单线程的性能优于多线程。是因为同步单线程在日志写入是一个串行化过程。在同步多线程的情况下,每个线程在输出日志时都会进行调用锁和是否锁,每个线程都执行的话锁的开销性能就大了。且在同步处理日志的时候,每条日志需要日志落地都是往磁盘上写入的,当多个线程往磁盘写入磁盘被写满了线程就会进行阻塞等待,这个时候的性能效率更加考验磁盘IO能力,越好的磁盘写入能力则会大大提升。

2024-11-28 18:00:00 2137

原创 代理设计模式

代理模式的结构包括⼀个是真正的你要访问的对象(⽬标类)、⼀个是代理对象。⽬标对象与代理对象实现同⼀个接⼝,先访问代理类再通过代理类访问⽬标对象。代理模式指代理控制对其他对象的访问, 也就是代理对象控制对原对象的引⽤。静态代理指的是,在编译时就已经确定好了代理类和被代理类的关系。也就是说,在编译时就已经确定了代理类要代理的是哪个被代理类。动态代理指的是,在运⾏时才动态⽣成代理类,并将其与被代理类绑定。这意味着,在运⾏时才能确定代理类要代理的是哪个被代理类。

2024-11-27 20:00:00 196

原创 建造者设计模式

通过设计模式的六大原则,每个类都需要职责分明,生产完的零件要怎么组装,所以需要有一个指挥者Diretor进行安装特定的顺序来组装零件,提供一个接口给用户,进行构造产品。我们生产一个电脑需要有对应的零件,这些零件就由builder类进行生产,用computerbuilder具体类进行实现对应的抽象接口,组装零件的方法。需要有一个电脑产品抽象类,这个类存放了电脑的各个部件,抽象类把组装电脑的接口放出。, 使⽤多个简单的对象⼀步⼀步构建成⼀个复杂的对象,能够将⼀个复杂的对象的。具体产品类:⼀个具体的产品对象类。

2024-11-27 18:30:00 228

原创 工厂设计模式(简单工厂模式,工厂方法模式,抽象工厂模式)

它提供了⼀种创建对象的最佳⽅式。在⼯⼚模式中,我们创建对象时不会对上层暴露创建逻辑,⽽是通过使⽤⼀个共同结构来指向新创建的对象,以此实现。每个工厂模式都有它们的优缺点,针对不同场景使用不同的方式。

2024-11-26 19:00:00 638

原创 C++ 单例模式(饿汉模式和懒汉模式)

即单例模式,该设计模式可以保证系统中该类只有,并,该实例被所有程序模块共享。⽐如在某个服务器程序中,该服务器的配置信息存放在⼀个⽂件中,这些配置数据由⼀个单例对象统⼀读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种⽅式简化了在复杂环境下的配置管理。

2024-11-26 18:30:00 635

原创 设计模式六大原则

使⽤建议:⼦类必须完全实现⽗类的⽅法,孩⼦类可以有⾃⼰的个性。⽤例:跑步运动员类-会跑步,⼦类⻓跑运动员-会跑步且擅⻓⻓跑, ⼦类短跑运动员-会跑步且擅⻓短跑。⽤例:修改密码,不应该提供修改⽤⼾信息接⼝,⽽就是单⼀的最⼩修改密码接⼝,更不要暴 露数据库操作。⽤例:⽼师让班⻓点名--⽼师给班⻓⼀个名单,班⻓完成点名勾选,返回结果,⽽不是班⻓点。使⽤建议:两个完全不⼀样的功能不应该放⼀个类中,⼀个类中应该是⼀组相关性很⾼的函。客⼾端不应该依赖它不需要的接⼝,类间的依赖关系应该建⽴在最⼩的接⼝上。

2024-11-25 19:00:00 443

原创 C/C++ 不定参宏函数与不定参函数实现方式

上述代码是基于c++11的,c++11对sizeof也增加了能对参数包进行取大小,sizeof使用的时候需要声明...是一个参数包,这个参数包的变量需要使用()进行括起来。通过不定参宏函数认识到了一个宏,__VA_ARGS__ 这个宏是在stdarg.h 头文件下的,查看下这个文件下有多少个“接口”。不定参变量就是在传入参数的时候,不确定需要传入的个数是多少,例如printf();需要注意的是,使用vasprintf时,需要使用一个定义宏,不然会报错。这是一个宏,使用的时候需要包含头文件。

2024-11-25 18:30:00 520

原创 C++11 智能指针(auto_ptr&unique_ptr&shared_ptr&weak_ptr)

内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。

2024-11-24 19:00:00 865

原创 Git的使用

git叫做版本控制器,在项目开发过程中,能够对代码进行更新和回退,能查看每次更新的代码内容。同时也能进行多人协作。还需要再明确⼀点,所有的版本控制系统,Git 也不例外,其实只能跟踪⽂本⽂件的改动,⽐如 TXT ⽂件,⽹⻚,所有的程序代码等等。版本控制系统可以告诉你每次的改动,⽐如在第5⾏加了⼀个单词“Linux”,在第8⾏删了⼀个单词 “Windows”。⽽图⽚、视频这些⼆进制⽂件,虽然也能由版本控制系统管理,但没法跟踪⽂件的变化,只能把⼆进。

2024-11-24 18:15:00 866

原创 C++ 继承(继承基础知识、虚拟继承和棱形继承)

(在子类成员函数中,可以。

2024-11-23 17:59:44 598

原创 C++ 多态(虚函数、虚函数表和多态的原理)

多态的概念:多态顾名思义就是有多种状态,一个接口能实现多个不同的内容。多态的定义:多态就是不同继承关系的类对象,去调用同一函数产生的不同行为。

2024-11-23 17:59:21 838

原创 【Linux系统编程】基础IO(文件操作,文件描述符fd,inode,缓冲区,动静态库)

记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。这些是我们c语言层面的文件函数调用,那在linux下,会有系统的调用接口,系统的函数来对文件来进行操作,我们学习的语言的各种文件函数都是基于系统的函数调用的,在系统函数的基础上进行封装。那么我们可以看到,当我们创建文件的时候,是从3开始的,之后连续创建的文件都是连续的!

2023-05-27 18:52:09 358

原创 【C++】STL——priority_queue(介绍和模拟实现)

priority_queue被叫做优先级队列,他具有队列的特性,但他底层是用堆来实现的,因此他具有堆特性的队列,可以进行大小堆的构建来初始化,在显示的时候,需要对堆算法的熟悉,向上向下调整,建堆。

2023-05-24 15:41:42 117

原创 【C++】STL——stack&&queue

stack和queue是一种容器适配器,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

2023-05-24 15:23:19 217

原创 【C++】STL——list(部分功能模拟实现、迭代器、反向迭代器)

STL中的list底层实现是用带头循环的双链表,这种结构设计巧妙的使得list能够在随机位置插入删除的效率搞,但处理不了大量数据,相比于vector,vector的随机位置删除的速度就低于list ,因为vector需要挪动数据,而list直接把链子相接就可以了那么list在使用的时候不难,stl的容器相似性很强,所以这次list的实现能更让我们学会c++关于封装的理解,c++类和对象的巩固,通过各种模板的类型,迭代器的封装,反向迭代器的封装使用。

2023-05-23 21:37:15 361

原创 【C++】STL——vector (vector 的使用、部分功能模拟实现、深拷贝、迭代器失效)

vector是STL的容器之一,他是一个类似顺序表的这么一个结构,能够进行插入删除、随机访问,一般像数组那样使用。在学vector 的过程中,遇到了关于深拷贝的问题,通过实现vector 能够更深层次的认识到这个容器的特性。

2023-05-23 20:37:22 578

原创 【C++】STL——string(部分功能模拟实现)

string和普通与此不同的是能够像数组一样的字符串,学习STL还能让我们认识到浅拷贝和深拷贝的知识,泛型模板的使用,认识到STL的六大组件,迭代器失效的问题。在学习string 的时候需要了解使用,和底层的部分实现原理,对于学习容器都需要了解他们的四大成员函数,还有其中的功能。string是STL容器之一,存放的是char类型值,被称为字符串,俗称串。

2023-05-21 20:39:06 177 2

原创 【Linux系统编程】进程控制(进程创建、终止、等待、替换)

其实那么多函数,都是由一个execve系统函数进程封装那么多类型的,他们本质还是不变的。子进程和父进程发生写时拷贝,两个进程修改的值互不影响,都是独立的进程页表进行映射。wait 是等待进程,wait是等待子进程,那么我们为什么要等待子进程呢?进程替换能够把当前进程进行的数据进行替换我们想要执行的。进程替换是直接替换当前进程的物理内存的进程映射。我们可以看到有大约六种函数,但他们都大差不差。总的来说fork是创建子进程的函数。

2023-05-15 20:15:21 378 1

原创 【Linux系统编程】进程概念

S:表示睡眠状态,因为每个进程在进行运行的时候都有规定的时间片,当运行时间超过这个时间片后,进程就会被调度到等待状态,也就是睡眠状态。僵尸进程的造成是因为,子进程的意外退出,父进程读不到子进程的退出码,子进程就会进入僵尸状态,演示一个程序,让子进程进入僵尸状态。那么进行在底层运行的时候,是通过数据结构进行运行程序的,程序的信息会被保存在一个叫task_struct 的结构体中。我们知道,一个进程,会被操作系统进行管理,那么如果把我们创建的进程叫做子进程,那操作系统就叫做接管我们的父进程。

2023-05-09 18:24:34 72

原创 【linux系统编程】基本指令

没写完

2023-05-03 18:03:42 102

原创 【C++】初始模板

模板类型

2023-05-02 17:14:39 107

原创 【C++】new和delete

new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。new和delete就是在堆上进行开辟空间,c语言上会有malloc和free,学下来会发现其实new和delete实现也是运用了malloc和free,是将功能进行封装,再加上其他的功能,使得用起来更加方便。基本上和内置类型相同。

2023-05-02 01:30:00 81

原创 【C++】类和对象——补充

在写法上,实在构造函数的时候,在作用域上面,使用冒号将成员变量进行初始化,用逗号进行隔开,这种初始化方式有点像拷贝构造。友元的用法是,能够声明类外面的函数进行访问类里面私有的成员变量,友元能够声明函数外,还能够声明类,叫友元类。需要注意的是,static 修饰的变量,初始化的时候需要在类外面初始化。一个函数能够是多个类的友元,声明的友元函数不能被const修饰。内部类就是在一个类里面定义另一个类,他们之间的关系天生自带友元。初始化列表是对成员进行初始化,但它在写法上会有点不同。使用explicit。

2023-05-01 19:57:11 119 1

原创 【C++】类和对象——六个默认成员函数

六个默认成员函数的使用

2023-04-30 01:44:06 143 1

原创 【C++】类和对象——初始

类是c++里面的叫法,如果是c语言,那么他就叫做结构体struct而在c++中,struct也能使用,但c++引入了新的名称叫做class。//class的使用跟struct的使用是一样的 //都包含了 关键字(class)函数名和作用域 //作用在类里面的函数叫做成员函数 void func();//在类里面的变量叫做成员变量 int a;//分号不可省略在类里面声明和定义的函数会被当作是内联函数(inline)声明和定义分离时需要在函数名前加入类名(Date:: )

2023-04-29 17:36:39 173 1

原创 【C++】学C++类和对象时需要掌握的基本知识

时为函数的。

2023-04-23 21:53:51 300 1

空空如也

空空如也

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

TA关注的人

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