自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 5.1实用工具——noncopyable

5.1实用工具——noncopyable原理在C++定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会默认为我们自动生成这两个函数,如下:class empty_class{public: empty_class(const empty_class &){} empty_class& operator=(const empty_class &){}};为了禁止拷贝操作和赋值操作,所以将构造函数和拷贝赋值操作函数私有化,但是程序中如果出现

2021-05-18 12:13:59 165

原创 4.内存管理

4.内存管理pool库内存池预先分配了一块大的内存空间,然后就可以在其中使用某种算法高效快速的定制内存分配。boost.pool库是基于简单分隔存储的思想实现了一个快速、紧凑的内存池库,不仅能够管理大量的对象,还可以用作STL的内存分配器。在某种程度上讲,它近似于一个小型的垃圾回收机制,在需要大量分配/释放小对象时其效率很高,而且完全不需要考虑delete。pool类pool类的源码template <typename UserAllocator>class pool: protec

2021-05-16 14:30:10 114

原创 3.智能指针

3.智能指针RAII机制​ 为了管理内存等资源,C++通常采用RAII机制(Resource Acquisition Is Initialization,资源获取即初始化),在类的构造函数里申请资源,最终在类的析构函数中释放资源。​ smart_ptr库提供了很多智能指针,常用的有scoped_ptr、shared_ptr、weak_ptr和intrusive_ptr。它们是轻量级的对象,其速度与原始指针相差无几,都是异常安全的。scoped_ptr​ scoped_ptr是一个与auto_ptr

2021-04-28 21:29:28 119

原创 2.日期处理

2.date_time库date_time类我们使用的基本时间度量的依据是地球的自转,但地球的自转是不均匀的,因此需要用闰秒、闰月、闰年对时间进行调整,不同的地区还有夏令营、时区等人为的规定。现实中存在着多个时间度量体系,date_time库是一个非常全面且灵活的日期时间库,成功解决了大部分关于时间的问题。date_time库的日期基于格里高利历,支持从"1400-01-01"到"9999-12-31"之间的日期计算date类的源码#ifndef GREG_DATE_HPP___#define

2021-04-20 21:57:26 108

原创 1.时间处理

1.时间处理1.timer库timer类Boost 中的timer库是一个很小的库早期的timer库:该库的计时精度低,Boost官方已经不再推荐使用(编译会有告警)新的cpu_timer库:基于chrono库使用操作系统的API,计时精度更高**使用:**timer接口简单,适用于大部分要求不高的程序计时任务,elapsed_min()和elapsed_max()计时的精度表明了timer的能力​ timer不适用于高精度的时间测量任务,它的精度依赖于操作系统和编译器,难

2021-04-19 21:58:02 71

原创 IPC——2.有名管道

FIFO#include <sys/stat.h>int mkfifo(const char *path,mode_t mode); //用于创建fifo,path是路径名,mode是用户和组的所有权规则int mkfifoat(int fd,const char *path,mode_t mode);成功,返回0;出错,返回-1mkfifoat的3种形式:1.如果path指定的是绝对路径,fd将会被忽略,功能和mkfifo类似2.如果path指定的是相对路径,fd是一个打开目录

2021-04-18 10:43:18 51

原创 IPC——1.匿名管道

匿名管道局限性:历史上,管道是半双工的,现在某些系统提供全双工的管道,但是为了最佳的可移植性,不应预先假设支持全双工管道。管道只能在具有亲缘关系的进程间使用,通常一个管道由一个进程创建,在进程调用fork之后,这个管道就能在父子进程之间使用。#include <unistd.h>int pipe(int fd[2]); //fd[0]为读而打开,fd[1]为写而打开,fd[1]的输出是fd[0]的输入//成功,返回0;出错,返回-1调用pipe函数时在内核中开辟一块缓冲区,

2021-04-18 10:35:47 268

原创 DNS概述

1.什么是DNS​ DNS(Domain Name System)域名系统,是互联网使用的命名系统,用来把便于人们使用的机器名转换成IP地址。解决Internet上主机/路由器的识别问题。​ 域名解析系统DNS,是多层命名服务器构成的分布式数据库,应用层协议完成名字的解析。问题:为什么不使用集中式的DNS?​ 1.单点失败问题。如果唯一的一个服务点(可能有多台服务器)坏掉了,所有使用域名来提供网络服务的,都需要请求DNS来做事情,那么整个互联网就坏掉了。​ 2.流量问题。如果几十亿台主机都

2021-03-15 20:41:15 1431

原创 17.容器array

1.为什么要将array做成容器?是因为能用操作容器的方法操作array,以便于让算法去询问容器的信息,采取最优化的动作。如果没有包装,就会被摒弃在六大组件之外。2.容器array//TR1 技术报告1,介于1.0和2.0的版本之间template<typename _Tp,std::size_t _Nm>struct array //没有构造函数和析构函数{ typedef _Tp value_type; typedef _Tp* pointer; type

2021-03-10 23:00:48 70

原创 26.迭代器的分类(category)

26.迭代器的分类(category)1.C++标准库中的算法从语言上讲:容器是个class template​ 算法是个function template​ 迭代器是个class template​ 仿函数是个class template​ 适配器是个class template​

2021-02-18 21:26:39 276

原创 第1章 异常处理

第1章 异常处理异常处理增强错误恢复能力是提高代码健壮性的最有利的途径之一。C语言和C++对比C语言:采用的出错处理方法被认为是“紧耦合的”——函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会变得笨拙和难以使用。C++:1.错误处理代码的编写不再冗长乏味,并且不再与“正常的”代码混合在一起。程序员只需要编写希望产生的代码,然后在某个单独的区段里编写错误处理的代码。如果要多次调用同一个函数,则只需在某个地方编写一次错误处理代码。2.错误不能被忽略。如果一个函数必须向调用者发送一条

2021-02-13 23:18:13 443

空空如也

空空如也

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

TA关注的人

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