自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux文件和目录权限(umask)

umask命令用来设置所创建文件和目录的默认权限 。umask默认的值为0022(掩码),其中第一位代表了一项特别的安全特性,叫作粘着位(sticky bit),后面三个数值组成了umask的八进制值。其中读(r)写(w)执行(x)分别代表着值4、2、1。相对于文件来说,权限全部开启时只有读取和写入两种权限。所以全权限时对应的八进制值为666;相对于目录来说,权限全部开启时有读取、写入和执行三种权限。所以全权限时对应的八进制值为777。umask值只是个掩码,它会屏蔽掉不想授予...

2021-07-12 21:42:06 2950

原创 创建ubuntu之后的更新操作

1、设置随机生成的root用户的密码由于刚开始创建的Ubuntu时root用户的密码是随机生成的,此时我们可以使用sudo passwd root用于设定初始的root用户的密码。sudo passwd root2、更改镜像源操作步骤1、安全起见,先备份:cp /etc/apt/sources.list /etc/apt/sources.list.bak2、替换为国内镜像源cat /dev/null > /etc/apt/sources.listvi /e

2021-02-22 17:49:26 203

转载 BASE64

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

2020-08-23 13:02:08 342

原创 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 281

原创 C++之STL初识

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

2020-08-21 23:33:08 194

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

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

2020-08-21 23:28:42 197

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

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

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

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

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

2020-08-21 23:23:53 109

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

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

2020-08-21 23:21:35 127

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

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

2020-08-21 23:19:06 121

原创 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 519

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

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

2020-08-21 23:12:38 585

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

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

2020-08-21 22:28:55 5991 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 111

原创 内存分页初识

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

2020-08-13 15:04:26 107

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

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

2020-08-04 10:45:36 229

原创 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 88

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

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

2020-08-01 13:03:42 184

原创 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 262

原创 C++类模板和函数模板初识

宏定义 函数的重载: 内存管理方式 交互给用户管理 ----- C语言 GC机制,垃圾回收机制 ----- Java 1、模板类和模板函数宏定义:简单的替换不安全,而且不能实现复杂的函数 函数的重载:需要重载多个版本 模板:一段程序实现能够处理不同的类型的对象,使参数的多态(使相同的逻辑代码处理不同的数据类型),是一个实现多态的工具。 分类:类模板、函数模板、成员函数模板。 函数模板 可以进行重载的 格式template <typename T1, typen.

2020-07-30 10:53:53 192

原创 C++之多态及RTTI初识

继承的缺点:关联性太强了(父类改变一个函数参数,则所有子类都需要改变) 所有的类不能够将其写的太实,(扩展性)1、多态纯虚函数 ---- 接口 含有纯虚函数的类叫做抽象类 --- 实现抽象层,隔离变化的部分与不变化的部分----依赖倒立原则 子类如果没有实现纯虚函数,则子类也叫作抽象类 子类中实现纯虚函数的成员函数也是几个虚函数 具体类 ------> 抽象类 (只将可能发生变化的方法抽象化) 面向对象和面向过程面试题? 面向过程它主要的是更加注重一件事情完成的具体步骤,

2020-07-30 10:53:08 288

原创 C++之运算符的重载初识

空类占一个字节!!!1、友元机制种类: 友元类 友元函数 友元成员函数 作用:提高程序的运行效率(让类的非公有函数可以直接访问类的非公有成员,省去了函数的调用过程) 缺点:破坏了C++的封装性 注意事项: 单向访问(只有friend才可以访问我的变量) 不可以传递 友元成员函数:声明另外一个类中的某一个成员函数可以访问本类(所有成员函数必须在类外声明)2、函数运算符的重载类型转换运算符的重载 ++i i++ i ++

2020-07-26 14:22:01 140

原创 C++之类型转换初识

一、类型的转换1、static_cast<T> (expr) ------ 类似于C中的转换 1)用于相关类型的转换2)用于子类转父类3)用于void* 转换成任意类型指针 eg:void * p2; int * p1 = static_cast<int *>(p2) ;4)不可以用于指针之间的类型之间的转换void *可以接受任意类型的指针,从而提高了代码的实用性(多态)。2、reinterpret_cast<T> (expr) ---

2020-07-23 08:35:12 72

原创 C++之引用初识

1、所有的数组名都是指针常量,不可以修改。形参为数组名的时候,编译器会自动转换成相应对的指针。eg: str[3][4]; str为数组名(指针常量),不可以被更改。2、内存池:多次malloc化为一次,减少多次malloc带来的内存消耗。一、引用1、引用使用的注意事项:1)一个引用只能绑定到一个变量上面。2) const对const,常引用;3)引用必须初始化a、常引用可以用常量来赋值;b、普通引用不可以用常量来赋值,因为常量没有地址空间。2、引用的使用:.

2020-07-22 08:51:35 152

原创 多级指针及数组

1、ptr是数组名,指向的是该数组的首地址。2、str是一个二维数组的数组名,指向的是二维数组的首地址,也可以认为是一个指向一维数组的一个指针(不过类型为str[]);

2020-07-19 17:39:29 221

原创 C到c++的过渡知识点

C++学习的实用性网站:https://en.cppreference.com/q1: 为什么嵌入式要使用c语言?a1: c语言的可移植性较强,因为c语言中的智能指针可以直接访问其硬件的地址;q2: 为什么嵌入式开发要学习c++?a2: C++可以更好进行GUI界面图形化。嵌入式的组成部分包括软件,中间件,操作系统,硬件,其中软件和中间件大部分使用的是C++,主要利用的还有C++面向对象的思想。q3: 系统调用和库函数的调用的区别?a3: 系统调用的效率较低,因为当用...

2020-07-19 10:30:06 228

转载 多态

https://www.cnblogs.com/alinh/p/9636352.html

2020-07-15 21:20:18 124

原创 二级指针访问二维数组

(p+i) 由于p是指向int[4]类型的,所以p+i就向后移动了44个字节,也就是下一行的首地址。所以这个表达式表示的是某一行。((p+i))[j] 在此基础上加()的原因是因为[]的优先级高于,所以需要添加()。![在!首先明白二维数组在内存的存放是线性的,先存放第一行的内容,再存放下一行……而指针向后移动的字节数是根据自己的指向来决定的在这里插入图片描述...

2020-05-23 13:29:56 900

socket作业.rar

socket作业.rar

2021-09-29

空空如也

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

TA关注的人

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