自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL - 基础三

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一 个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的;事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。

2024-04-05 14:34:03 1116

原创 MySQL - 基础二

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)语法:案例:由于 主键 或者 唯一键 对应的值已经存在而导致插入失败可以选择性的进行同步更新操作语法:语法:案例:语法:比较运算符:逻辑运算符:案例:语法:注意:没有 ORDER BY 子句的查询,返回的顺序

2024-04-04 16:36:00 1168

原创 MySQL - 基础一

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径示例:将mytest库备份到文件(退出连接)这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中;

2024-04-03 17:36:55 630

原创 高级 IO

阻塞IO是最常见的IO模型;非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询. 这对CPU来说是较大的浪费, 一 般只有特定场景下才使用;小结。

2024-03-25 20:40:45 721 1

原创 网络基础(三)

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称;域名使用 . 连接com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等;baidu: 二级域名, 公司名;www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格 式, 来表示主机支持的协议;数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据;以太网是一种技术标准;

2024-03-25 18:32:12 1080

原创 网络基础(二)

程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层;

2024-03-21 23:44:22 634

原创 网络编程 - 套接字

在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址;思考: 我们光有IP地址就可以完成通信了嘛?想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上, 但是还需要有一个其他的标识来区分出, 这个数据要给哪个程序进行解析;

2024-03-18 20:36:21 1068

原创 网络基础(一)初识

1. 独立模式: 计算机之间相互独立;2. 网络互联: 多台计算机连接在一起,完成数据共享;3. 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;4. 广域网WAN: 将远隔千里的计算机都连在一起;所谓 "局域网" 和 "广域网" 只是一个相对的概念;比如,覆盖我国的广域网, 也可以看做一个比较大的局域网;

2024-03-18 15:25:15 1033

原创 Linux - 多线程

单例模式是一种 "经典的, 常用的, 常考的"设计模式;大佬们针对一些经典的常见的场景,给定了一些对应的解决方案,这个就是设计模式;

2024-03-12 20:09:50 927

原创 Linux - 进程信号

每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定 义 #define SIGINT 2;编号34以上的是实时信号,本章只讨论编号34以下的信号,不讨论实时信号。这些信号各自在什么条件下 产生,默认的处理动作是什么,在signal(7)中都有详细说明: man 7 signal;上面所说的所有信号产生,最终都要有OS来进行执行,为什么?OS是进程的管理者;信号的处理是否是立即处理的?在合适的时候;

2024-03-09 19:45:29 918

原创 Linux - 进程间通信

管道是Unix中最古老的进程间通信的形式;我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”;

2024-03-07 16:48:09 1013

原创 Linux - 基础IO

打开文件的方式w Truncate(缩短) file to zero length or create text file for writing.pathname: 要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。

2024-03-05 18:49:23 965

原创 Linux - 进程控制

在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程;当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。但每个进程都将可以 开始它们自己的旅程,看如下程序;这里看到了三行输出,一行before,两行after。进程43676先打印before消息,然后它有打印after。另一个after 消息有43677打印的。注意到进程43677没有打印before,为什么呢?如下图所示;

2024-03-04 12:15:26 868

原创 Linux - 进程概念

描述起来,用struct结构体组织起来,用链表或其他高效的数据结构为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在 Linux内核里,进程有时候也叫做任务);下面的状态在kernel源代码里定义:/**/R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里;S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠 (interruptible sleep));

2024-03-04 12:14:49 1036

原创 Linux - 基本开发工具

1. 三种模式正常模式插入模式底行模式2. vim 操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作;

2024-03-02 15:28:30 1141 2

原创 Linux - 权限概念

目录的可执行权限是表示你可否在目录下执行命令如果目录没有-x权限,则无法对目录执行任何命令,甚至无法 cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

2024-03-01 17:09:49 1072

原创 Linux - 基本指令

ls [选项][目录或文件]对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

2024-02-29 18:29:30 1095

原创 Linux - 基本背景

互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开 源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进 行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作 系统。据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速 崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。

2024-02-29 14:39:42 1064

原创 STL - 跳表

skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是 一样的,可以作为key或者key/value的查找模型;那么相比而言它的优势是什么?skiplist是由发明的,最早出现于他在1990年发表的论文《skiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一 个有序的链表,查找数据的时间复杂度是O(N)

2024-02-26 09:00:00 2349

原创 STL - LRU Cache

LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。什么是 Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用 DRAM技术,而使用昂贵但较快速的SRAM技术;广义上的Cache指的是位于速度相差较大的两种 硬件之间,用于协调两者数据传输速度差异的结构;

2024-02-26 08:00:00 396

原创 STL - B树

B树:有序数组+平衡多叉树;B+树:有序数组链表+平衡多叉树;B*树:一棵更丰满的,空间利用率更高的B+树mysql是目前非常流行的开源关系型数据库,不仅是免费的,可靠性高,速度也比较快,而且拥有灵活的插件式存储引擎,如下:MySQL中索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的注意:索引是基于表的,而不是基于数据库的。

2024-02-26 07:00:00 835

原创 STL - 并查集

在一些应用问题中,需要;在此过程中适合于描述这类问题的抽象数据类型称为比如:某公司今年校招全国总共招生10人,西安招4人,成都招3人,武汉招3人,10个人来自不 同的学校,起先互不相识,每个学生都是一个独立的小团体,现给这些学生进行编号:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};给以下数组用来存储该小集体,数组中的数字代表:该小集体中具有成员的个 数。(负号下文解释)

2024-02-25 01:43:08 833

原创 STL - 图

图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E),其中:顶点集合 V = {x|x属于某个数据对象集}是有穷非空集合;边的集合 E = {(x,y)|x,y属于V}或者E = {<x,y>|x,y属于V && Path(x, y)}是顶点间关系的有穷集合;(x, y)表示x到y的一条双向通路,即(x, y)是无方向的;Path(x, y)表示从x到y的一条单向通路,即 Path(x, y)是有方向的顶点和边:图中结点称为顶点,第i个顶点记作vi,两个顶点vi和vj相关联称作顶点vi和顶点

2024-02-24 18:45:31 916

原创 STL - hash

unordered_map是存储<key, value>键值对的关联式容器,其允许通过keys快速的索引到与 其对应的value在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此 键关联。键和映射值的类型可能不同在内部,unordered_map没有对<kye, value>按照任何特定的顺序排序, 为了能在常数范围内 找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。

2024-02-21 20:54:46 875

原创 STL - map 和 set

set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的;set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行 排序set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对 子集进行直接迭代set在底层是用二叉搜索树(红黑树)实现的。

2024-02-09 23:31:17 960

原创 STL - 容器适配器

deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和 删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组双端队列底层是一段假象的连续空间,实际是分段连续的,为了维护其“整体连续”以及随机访问的假象,落 在了deque的迭代器身上。

2024-02-09 15:31:11 1555

原创 STL - list

listlist是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。

2024-02-02 16:25:55 1339

原创 STL - vector

vectorvector是表示可变大小数组的序列容器就像数组一样,vector也采用的连续存储空间来存储元素;也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效,但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理本质讲,vector使用动态分配数组来存储它的元素;当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间,其做法是分配一个新的数组,然后将全部元素移到这个数组;

2024-02-01 12:17:56 947

原创 STL - string类

如果一个类中涉及到资源的管理,其拷贝构造函数、赋值运算符重载以及析构函数必须要显式给出。一般情 况都是按照深拷贝方式提供。

2024-01-31 17:12:17 1052

原创 C++的IO流

在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?使用itoa()函数使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定, 而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃int main()return 0;在C++中,可以使用stringstream类对象来避开此问题在程序中如果想要使用stringstream,必须要包含头文件;

2024-01-27 10:00:00 2525

原创 C++特殊类设计

为了代码可重用性、让代码更容易被他人理解、保证代码可靠性;设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

2024-01-26 17:30:00 3256 1

原创 C++智能指针

什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况;内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死1.内存申请了忘记释放2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.

2024-01-26 12:33:17 879 1

原创 C++类型转换

每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用 域,以减少发生错误的机会;RTTI:Run-time Type identification的简称,即:运行时类型识别。因此C++提出了自己的类型转化风格,注意。

2024-01-25 21:15:28 817

原创 C++异常

实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本没办法正常使用,所以实际中都会定义一套继承的规范体系,这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了服务器开发中通常使用的异常继承体系public:,_id(id){}protected:int _id;public:{}

2024-01-25 20:50:19 831

原创 C++11

左值是一个表示数据的表达式(如变量名或解引用的指针),

2024-01-25 18:00:19 802

原创 C++多态

必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。

2024-01-23 12:45:23 840 1

原创 C++继承

派生类 继承方式 基类public:int _stuid;int _major;有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂;所以一般不建议设计出多继承,不要设计出菱形继承,否则在复杂度及性能上都有问题继承和组合public继承是一种is-a的关系;也就是说每个派生类对象都是一个基类对象组合是一种has-a的关系;假设B组合了A,每个B对象中都有一个A对象优先使用对象组合,而不是类继承继承允许你根据基类的实现来定义派生类的实现。

2024-01-21 15:34:13 952 1

原创 C++模板

class 类模板名类内成员定义动态顺序表注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}使用析构函数演示:在类中声明,在类外定义。~Vector();注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)

2024-01-20 12:40:01 735 1

原创 C++内存管理

int main()new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;

2024-01-20 11:07:59 879 1

原创 C++类与对象

类体:由成员函数和成员变量组成注意后面的分号class为定义类的关键字ClassName为类的名字,{}中为类的主体注意类定义结束时后面分号不能省略类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理//preson.hpublic:private:int _age;一般情况下,更期望采用第二种方式。

2024-01-19 14:45:42 804 1

空空如也

空空如也

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

TA关注的人

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