自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

转载 BASE64

1、背景:数据在网络中传输是以二进制的形式传输,如果数据是英文,则传输不会出现乱码的情况。如果是中文,不同环境下的编码方式可能造成乱码的现象发生。2、作用:能够将二进制文件、图片等转换成可见的字符,用于传输,确保图片数据不会丢失。3、实现步骤:将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。 将上面的24个二进制位每6个一组,共分为4组。 在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。 根据Base64编码对照表(见下图)

2020-08-23 13:02:08 313

原创 libevent反应堆初识

libevent中的三种事件:I/O事件、定时事件、信号事件libevent库开源。精简。跨平台(Windows、Linux、maxos、unix)。专注于网络通信。源码包安装: 参考 README、readme./configure 检查安装环境 生成 makefilemake 生成 .o 和 可执行文件sudo make install 将必要的资源cp置系统指定目录。进入 sample 目录,运行demo验证库安装使用情况。编译使用库的 .c 时,...

2020-08-22 10:11:15 269

原创 C++之STL初识

STL六大组件: Container(容器):各种基本数据结构 Iterator(迭代器): 连接containers和algorithms Algorithm(算法): 各种基本算法如sort、search.. 等 Adapter(适配器):可改变containers、Iterators或Function object接口的一种组件 Function object( 函数对象) Allocator(分配器):内存分配与管理 容器: 分类: 顺序容器:放进去在哪里,这个

2020-08-21 23:33:08 171

原创 C++之内存管理初识

内存管理内存管理方式 交互给用户管理 ----- C语言 GC机制,垃圾回收机制 ----- Java C++为什么没有GC机制??? ------ C++内存管理方式:计数管理+智能指针 答: 智能指针:帮助用户自动管理内存 ------ 包含头文件#include <memory> shared_ptr ---- 共智能指针 概念:允许多个共享智能指针指向同一个对象,并对指向该对象的指针计数,当计数到0时会释放该对象 shared_ptr是一个类,而

2020-08-21 23:28:42 180

原创 C++之异常处理机制初识

3、异常将可能会抛出异常的函数放入到try块中 用catch来接收异常(注意类型需要一致),可以catch多个不同类型的异常 在可能发生异常的地方抛出异常(throw) 栈解旋:throw-------->catch之间被压入栈的部分会在异常抛出之后被析构 C++内置的异常类:补充:1、一般继承中如果想要使用基类指针指向派生类的话,需要将基类的析构函数写成虚析构函数,否则delete基类指针的时候派生类对象无法释放,从而造成内存泄露。2、析构函数被继承过来了,但是构造函.

2020-08-21 23:24:39 169 1

原创 C++之文件操作初识

2、文件操作文件的分类: 二进制文件:将内存中的数据原封不动的读取和写入文件 文本文件:以字符编码方式保存 以文件流的方式对文件进行操作 ----- 文件流类文件流 -------- 文件流类对象 ---------- 文件文件流类的分类: ifstream -------- 文件输入流 --------> 对应的是文件的读取 ofstream -------- 文件输出流 --------> 对应的是文件的写入 fstream -------- 文件输入输出

2020-08-21 23:23:53 97

原创 C++之继承多态初识

3、继承代码复用的两种方式: 组合 继承 继承的权限:private、protected、public; 子类构造函数:初始化子类成员,调用父类的构造函数初始化父类的成员(对象初始化列表) 注意:若父类没有无参构造函数,则子类中所有构造函数中显示调用父类的构造函数。 构造函数的调用顺序:先构造父类(继承时的前后顺序),子对象(其他类的对象),后构造子类。 缺点:固定的调用时机,一般用自己写的init函数代替构造函数。 析构函数的调用顺序:与构造函数相反。 多继承:

2020-08-21 23:21:35 110

原创 C++之类的封装初识

C++的封装------对外提供接口,对内开放数据1、特征:C++的维护性------将多个实现方法用class封装起来,其中用访问控制权限进行访问控制,从而保证代码的独立性(对内private、对外public),更加便于快速的定位到bug代码段。2、构造函数和析构函数1)构造函数:初始化资源a、特点: 1.自动调用 2.构造函数名和类名一致 3.构造函数没有返回值 4.构造函数可以重载 5.当类中没有任何构造函数时,系统会提供默认无参构造...

2020-08-21 23:19:06 111

原创 C++之string类初识

string类-------头文件包含#include<string>1、string:std提供的标准字符串处理的类 class string;(成员变量,方法)特点:可变长(动态分配,不再关注字符串的长度)2、属性:1)size():string的大小,不包含‘\0’2)length():string的长度,不包含‘\0’3)empty():判断字符串是否为空 返回的是bool值4)capacity():返回的是string当前的容量5)resize():重置

2020-08-21 23:13:54 472

原创 c++中对函数的扩展

c++对函数的扩展1、inline内联函数将函数体中的代码内嵌入函数调用的地方,不再发生函数调用----------内存空间换取运行时 间的操作。(编译时间换取内存空间:宏函数内存空间换取运行时间:inline函数)1)C++对内联函数的扩展:C语言只要声明inline,一定会以内联的方式进行处理;C++请求编译器将该函数内联!(会进行判断,可以拒绝请求)。2)什么时候使用内联函数?功能简单且代码短小,调用频繁。3)使用注意事项:调用内联函数之前必须声明或者定义该

2020-08-21 23:12:38 562

原创 虚拟地址和物理地址之间的映射关系

1、虚拟地址和物理地址之间的映射是以页(4KB)为单位进行映射的;2、每一个进程中都有一个进程控制块(PCB),里面包含了一些进程的信息(页目录,状态,句柄表,ID,PID……);3、映射过程(32位系统下):首先PCB中有一个指向一级分页表的指针,每一个页表的大小均为4096B(4KB),可以存储1024个地址。其中一级页表中每一个地址对应着一个二级页表的首地址,二级页表中也存储着1024个地址,其中每个地址分别对应着物理内存上面的每一个页的首地址。这样一来,虚拟地址空间所能够访问的地址有10

2020-08-21 22:28:55 5843 1

原创 Solyog连接ubuntu下面的mysql

1、关闭ubuntu下面的防火墙 ufw disable(查看防火墙的状态:ufw status)2、开放端口号 iptables -L -n //查看开放的端口 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT3、在mysql中查看系统用户对应的认证插件select user,host,plugin from mysql. user;4、将root用户认证插件更改为mysql_native_password,(...

2020-08-21 13:01:41 100

原创 内存分页初识

1、背景:我们知道进程是跑在虚拟地址空间(对应物理空间上面的某一块)上面的,而数据的存储则是存储在物理内存上面的,所以这之间就涉及到物理地址和虚拟地址之间得翻译过程。如果是以字节为单位的话,则两者之间的对应关系较多,地址翻译过程较为庞大且低效率,所以引用了单位页(4096B)来进行管理。2、地址翻译的过程 解释:偏移量为啥是三位16进制数 ---- 0xfff = 2^12;一页 = 4096个字节,所以用16进制数来表示某一数据在当前页的具体位置优点:内存分页,可以极大地.

2020-08-13 15:04:26 93

原创 C++之可调用对象初识

3、可调用对象把所有的函数抽象成一个个对象,将用函数运算符操作的对象叫做可调用对象 种类(七个):普通函数,类成员函数,函数指针,类的成员函数指针,可转换为函数指针的类、函数对象,lambda表达式#include <iostream>using namespace std;//可调用对象:普通函数,函数指针,类成员函数/静态成员函数,类成员函数指针,可转换为指向函数的类,函数对象,lambda表达式//普通函数int add(int a, int b){ r

2020-08-04 10:45:36 216

原创 mysorts

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#define SIZE 10using namespace std;void bubble(int *num){ for (int i = 0; i < SIZE; ++i) { int flag = 0; for (int j = 0; j &l

2020-08-01 16:44:58 77

原创 C++之类型推导初识

new operator 分配新的空间,调用operator new operator new 运算符 右值引用本身是一个左值,可以对其进行修改操作。!!!1、内存管理重载new、delete、new[ ]、delete[ ] 何时使用:实现内存管理,提高内存使用效率的时候 重载new[ ]的时候会多出一个指针来管理分配的空间,其中就保存了需要delete的字节数 new、delete和构造函数、析构函数的调用顺序: 先调用new,再调用构造函数 先调用析构函数,在调用del

2020-08-01 13:03:42 175

原创 demo_memory_pool.cpp

V1.0#include <iostream>#include <string>using namespace std;//V1.0namespace _nmsp2{//#define MYMEMPOOL 1 class A { public: static void *operator new(size_t size); static void operator delete(void *phead);.

2020-08-01 13:01:36 244

socket作业.rar

socket作业.rar

2021-09-29

空空如也

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

TA关注的人

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