自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++编译链接详解

C++编译链接,一段代码怎么变成进程

2022-10-31 21:43:53 582 1

原创 CMake教程快速入门

CMake入门学习详细教程

2022-10-24 21:02:15 1164

原创 一图看懂MVCC机制,RC级别解决脏读问题,RR级别怎么解决不可重复读问题【MySQL系列】

MySQL MVCC 多版本并发控制

2021-12-26 22:31:34 3485 3

原创 一图看懂MySQL事务及其实现手段【MySQL系列】

事务 隔离级别

2021-12-19 20:55:02 1045

原创 一图看懂B树和B+树数据存储区别到底在哪里【MySQL系列】

B+树结构 千万级数据

2021-12-18 21:11:27 2154 1

原创 MySQL主从复制通俗讲解【MySQL系列】

MySQL主从复制原理及延时问题分析

2021-12-12 13:02:42 621

原创 一张图看懂聚簇索引、非聚簇索引、回表查询【MYSQL系列】

MySQl、聚簇索引、回表查询

2021-12-11 19:31:58 1444

原创 Redis入门——Redis持久化详解(RDB和AOF)

首先声明,本系列Redis博文内容是本人学习【狂神说Java】Redis最新超详细版教程通俗易懂整理的学习笔记,本人也是初次接触Redis,水平有限,难免有错误不足之处,欢迎大家评论指正交流。目录Redis持久化为什么需要持久化?RDB(RedisDataBase)APPENDONLYFILE (AOF)Redis持久化为什么需要持久化?Redis是内存数据库,如果不将内存中的数据状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据状态也会消失。所以Redis必须持...

2021-04-27 09:13:37 190

原创 Redis入门——配置文件详解

首先声明,本系列Redis博文内容是本人学习【狂神说Java】Redis最新超详细版教程通俗易懂整理的学习笔记,本人也是初次接触Redis,水平有限,难免有错误不足之处,欢迎大家评论指正交流。Redis配置文件相当重要,里面涉及到Redis使用的各种条件配置,了解配置文件对于学习Redis至关重要。在配置文件目录下打开终端,输入命令:sudo vim redis.conf,便可以看到配置文件内容,可以根据需求对配置文件进行修改。1.units单位,对大小写不敏感2.可以包含其他文件,..

2021-04-25 10:13:51 153

原创 Redis入门——Redis事务详解

Redis事务Redis事务本质一组命令的集合!一个事务中所有命令都会被顺序化,在事务执行过程中,会按照顺序执行。一次性、顺序性、排他性!执行一系列的命令Reis事务没有隔离级别的概念!整个事务不保证原子性。先开启事务,再将命令放入队列,执行exec命令时才执行事务!所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis单条命令是保证原子性的,但事务不保证原子性!Redis事务异常一般有两种情况:1.编译行异常,即事务中有命令格式(代码有问题,命

2021-04-25 09:40:57 203

原创 Redis入门——数据类型(五种基本数据类型和三种特殊类型)

首先声明,本系列Redis博文内容是本人学习【狂神说Java】Redis最新超详细版教程通俗易懂整理的学习笔记,本人也是初次接触Redis,水平有限,难免有错误不足之处,欢迎大家评论指正交流。一、Redis基础知识Redis默认有16个数据库,使用select num,可以切换数据库,默认使用下标为0的数据库,下标从0开始[0,15],dbsize可以看数据库当前大小flushdb//清空当前数据库flushall//清空所有数据库二、redis是单线程...

2021-04-24 15:37:56 249

原创 Redis入门——数据库发展历程与ubuntu16.04下载安装

Redis入门一、是什么? Redis(RemoteDictionaryServer),即远程字典服务。开源的、使用ANSI c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。当下最热门的NoSQL技术之一,也称为结构化数据库。 Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master—slave同步(主从同步)二、能干嘛? 1.内存存储、持久化,内存中是断电即失,所以持久化很重要...

2021-04-24 13:01:29 172

原创 ubuntu安装Mysql数据库并简单实用数据详细教程(零基础可完成)

本文介绍ubuntu安装Mysql数据的详细步骤,并介绍了简单的mysql操作过程。如果没有安装ubuntu,本篇博客详细介绍了ubuntu的安装过程虚拟机ubuntu16.04超详细安装教程(零基础照做即可)。首先执行如下语句进行更新。sudo apt-get update随后,执行 sudo apt-get install mysql-server,开始安装,安装过程中根据提示输入y:sudo apt-get install mysql-server安装完毕后..

2021-04-11 16:51:47 1304

原创 ubuntu实现屏幕适应窗口大小,与windows互相复制粘贴文件解决办法(安装VMwareTools详细过程)

安装完ubuntu,原本的ubuntu窗口比较小,如何能让ubuntu自适应虚拟机窗口大小呢?本文告诉你答案。另外,如果想实现ubuntu与宿主机windows互相复制粘贴文件,本文方案也可以解决这个问题,一起来看看。实际上安装完VMwareTools,这两个功能就都能实现,安装过程如下:首先点击虚拟机——安装VMware Tools:点击完随后跳转至如下界面:右键点击这个压缩包,选择复制到桌面。在桌面右键点击,提取到此处,将文件提取出来,进入文件夹,一定要在文件夹目录下打开终端

2021-04-11 15:51:24 5689 4

原创 虚拟机ubuntu16.04超详细安装教程(零基础照做即可)

想在使用windows系统的前提下能拥有linux系统,虚拟机安装linux将是最好的选择,本文将详细介绍在虚拟机安装ubuntu16.04的详细过程,让零基础都能拥有自己的ubuntu系统。话不多说,直接上手跟着做!首先,在虚拟机中点击文件—新建虚拟机。...

2021-04-11 11:07:50 28665 13

原创 C++设计模式之适配器模式详解

适配器模式:将一个类的结构转换成客户希望的另外一个借口。适配器模式使得原本由于借口不兼容而不能一起工作的那些类可以一起工作。在软件开发过程中,如果系统的数据和行为都正确,但借口不符时我们应该考虑适配器模式。主要用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。 其一般形式为:一个目标类(Target,即客户期望的接口),一个需要被适配的类(Adaptee,原接口),一个适配器类(Adapter,通过内部包装一个Adaptee对象,把原接口转换成目标接口),其结构图...

2021-04-08 11:10:39 191

原创 C++设计模式之代理模式详解

代理模式:提供一种代理以控制对某个对象的访问。一般形式为:一个抽象接口类,一个真实的需要被代理的实体类,一个代理类,后两个类都继承于抽象接口类代理模式应用场景:1.代理服务器,远程代理; 2.虚拟代理(打开HTML网页图片加载缓慢时,就是通过虚拟代理替代了真实的图片,此时代理存储了真实图片的路径和尺寸,就是虚拟代理); 3.安全代理(控制真实对象访问时的权限); ...

2021-04-07 22:13:57 403 1

原创 C++设计模式之工厂方法模式详解(对比简单工厂)

前面的文章详细介绍了单例模式和简单工厂模式,有需要的可以点击链接去看看。之前说到,简单工厂模式有一个最大的弊端就是它违背了开放封闭原则,因为如果需要新增功能,则需要工厂类的内部,这违背了对修改关闭的设计原则。为了解决这个问题,工厂方法模式就诞生了。 工厂方法:定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。通俗一点讲工厂方法和简单工厂的区别在于:简单工厂只有一个工厂类,且其中包含了所有可能的操作,根据传入参数的不同返回不同的对象,而工厂方...

2020-12-12 11:09:52 172

原创 C++设计模式之简单工厂模式详解

前面的文章C++设计模式之单例模式详解(懒汉模式、饿汉模式、双重锁)讲了设计模式中最简单的单例模式,有需要的可以点击链接去看看,用C++详细的实现了单例模式包括懒汉式、饿汉式、双重锁等方式。今天讲讲另外一种简单的设计模式:简单工厂模式。 在实际的工作场景中,程序员写的代码实现基本功能仅仅是第一步,更重要的是代码的可维护性、可复用性和灵活性。对于C++程序员,我们要想的如何利用面向对象的编程思想,用好C++的三大特性(封装、继承和多态)来写出符合要求的代码,这点需要我们在实际工...

2020-12-09 09:21:38 234

原创 C++设计模式之单例模式详解(懒汉模式、饿汉模式、双重锁)

有时,我们希望类的实例对象有且仅有一个,比如某个页面,我们希望它如果出现,永远只有一个,那么此时你可能就需要用到单例模式了。(PS:本人亲身经历过手写单例模式的面试,所以以下代码必须能够手撕!!!) 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。首先,怎么让类只有一个实例呢?肯定是构造函数需要做点“手脚”了,如果构造函数一如既往的是public属性,那还是可以任意构造对象,则不满足要求了。所以大神们想出来将构造函数私有化的方法,即把构造函数设置成私有属性,并对外提供一...

2020-12-06 19:50:08 8263 21

原创 C++后端面试知识精选系列(三)

1.说说C++中const关键字的作用?参考解答:1.)修饰全局变量使其不能被修改,存放在全局/静态存储组;2.)修饰函数参数,表明传入的参数在函数内不能被修改;3)修饰函数

2020-06-12 21:32:12 186

原创 基本排序算法——归并排序详解

归并排序的核心就是将待排序元素先不断分割直至不可分割,然后左右合并归一。本质上是分治和递归的使用。话不多说,直接上代码:#include<iostream>#include<vector>using namespace std;class Solution {public: //明确函数功能:将low至mid和mid+1至high的两段数据归并在一起,开辟新空间 void merge(vector<int>&a, int low, int m

2020-06-08 08:56:26 198

原创 C++后端面试知识精选系列(二)

1.new和malloc的区别?参考解答:1)new和malloc都是开辟内存空间用的,且都是在堆区开辟,但是malloc只负责开辟空间,不能初始化,需要用户初始化,new不但能开辟空间还能初始化。2)malloc是函数,开辟内存需要传入开辟空间大小,返回类型是void*,需要转换成指定类型的地址,new是运算符,开辟内存需要指定类型,返回指定类型的地址,因此不需要转换。3)malloc开辟内存失败返回NULL,new开辟内存失败抛出bad_alloc类型的异常(new底层实现也是调用的malloc函数

2020-06-04 21:25:52 341

原创 C++后端面试知识精选系列(一)

1.请问C++中static关键字的作用?(越多越好)参考解答:1)修饰全局变量,不初始化默认初始为0,存储在静态存储区,从声明到程序结束一直存在;2)修饰局部变量,在局部变量的前面加static关键字变为静态局部变量,同样存储在静态存储区,作用域是局部作用域当定义他的函数或者语句块结束时,作用域结束,但该变量并没有被销毁,只不过我们不能访问,知道该函数再次被调用。3)修饰类的成员函数,在成员函数前加static关键字即成员静态成员函数,静态成员函数智能访问静态成员变量,不能访问非静态成员函数,原因是静

2020-06-02 11:15:31 430 3

原创 计算机网络系统学习精华总结(四):应用层

应用层位于计算机网络的最上层,是与用户直接接触的,传输层与应用层都工作在终端设备上。传输层及以下的层提供了完整的通信服务,应用层是面向用户的一层。TCP提供可靠的信息传输,在金融交易、可靠通讯等领域发挥重要;UDP提供不可靠的信息传输不代表平时用不到UDP协议,恰恰相反很多时候都会用到UDP,比如一些传输要求不那么高的情况,如多媒体信息发布、视频、实时消息、随机滚动的信息等等。 应用层:定义应用之间通信的规则。1)应用进程的报文类型(请求报文、应答报文);2)报文的语法、格式;...

2020-05-26 16:17:06 849

原创 计算机网络系统学习精华总结(三):传输层——4(套接字编程实战,全双工通信)

全双工通信。本文在前文单双共通信模式下(连接:计算机网络系统学习精华总结(三):传输层——3(套接字编程实战,半双工通信)),采用简单的多线程编程实现,代码几乎每句都包含注释。 服务端代码: #include <WinSock2.h>#include<iostream>#include <Windows.h>//WSAADATA 关键字#include<WS2tcpip.h>#pragma comme...

2020-05-26 12:01:01 446

原创 计算机网络系统学习精华总结(三):传输层——3(套接字编程实战,半双工通信)

根据上一篇文章的介绍,这里发布一个套接字编程实战项目,实现一个服务端——客户端通信,直接上代码,可直接运行,代码注释非常详细。 服务端:创建套接字(socket)——绑定套接字(bind)——监听套接字(listen)———接收处理消息; 客户端:创建套接字(socket)——连接套接字(connect)——发送消息; 运行需要改动的只是IP地址,改成自己的IP地址或者本地回环地址(127.0.0.1),在两个VS工程项目下分别运行,先运行...

2020-05-26 11:31:58 252

原创 计算机网络系统学习精华总结(三):传输层——2(TCP三次握手、四次挥手)

(1) TCP协议的拥塞控制:流量控制考虑点对点的通信量的控制,而拥塞控制考虑的是整个网络,是全局性的控制。TCP的拥塞控制是慢启动算法和拥塞避免算法相互配合产生的结果。 慢启动算法:1)从小到大逐渐增加发送数据量;2)每收到一个报文确认,发送量翻倍;比如1,2,4,8,16,32......M(慢启动阈值)。 拥塞避免算法:1)来维护一个拥塞窗口的变量;2)只要网络不拥塞,就试探着将拥塞窗口调大。是在达到慢启动阈值之后开始工作的,比如1,2,4,8,16,3...

2020-05-26 11:07:42 326 1

原创 计算机网络系统学习精华总结(三):传输层——1

操作系统中单机进程通信主要有两种方式:共享内存和Unix套接字。而现实中常见的网络通信都是多机、跨平台、跨设备,那么实现这样的网络通信,实际上是不同主机中进程与进程之间的通信。使用端口来标记每台主机上的进程(port,使用16bits来显示,0——65535)。了解了这些我们进入传输层的学习,传输层主要负责管理端到端的连接,某一个主机的进程与另一个主机的进程之间的连接。传输层一般学习两个协议,UDP和TCP。 (1)UDP(User Datagram Protocol)协议,用户数...

2020-05-25 23:10:23 318

原创 计算机网络系统学习精华总结(二):网络层——2

前文讲了虚拟互联网络,IP协议头部信息以及ARP协议,现在介绍IP地址的子网划分:32位的IP地址是由网络号和主机号组成的。根据这两个长度的不同,可以分为A、B、C三类地址。 (1) IP地址的子网划分 A类地址:8位网络号+24位主机号,其首尾是0。最小网络号位00000001(从1开始,因为0表示特殊网络),最大网络号为01111111(127. 表示回环地址),因此减去两个特殊的,A类地址子网数量是2^7-2个;最小主机号是0.0.1(全为0时表示当前网...

2020-05-24 10:51:56 264

原创 计算机网络系统学习精华总结(二):网络层——1

介绍网络层之前,先了解一个概念——虚拟互联网络,然后再介绍网络层最重要的部分:IP协议。 (1)虚拟互联网络: a. 实际的计算机网络错综复杂;b. 物理设备通过IP协议,屏蔽了物理网络之间的差异;c. 当网络中的主机使用IP协议连接时,则无需关注网络细节。可以想象一下主机A与主机B通信,不管之间需要经过多少路由器、网关、主干ISP、地区ISP,我们统统不关心,将AB中间的部分视为虚拟互联网络即可。 IP协议使得复杂的实际网络变为一个虚拟互联的...

2020-05-23 11:57:45 430

原创 计算机网络系统学习精华总结(一):物理层和数据链路层

这个博客好像停滞了几个月了,实在惭愧,边学边写,有点顶不住,之前都用印象笔记粗略的写学习总结,现在写成博客形式,一是让自己重新回顾下知识点准备面试;二是把笔记中的排版整理的更清晰一点,方便自己以后查看;三是驱动以后长久的职业规划。这次从计算机网络开始整理: 我们都知道计算机网络的OSI七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。还有目前市场通用的TCP/IP四层模型:应用层、传输层、网络层、网络接口层。 那么问题来了,为什么会出...

2020-05-20 18:55:39 736 4

原创 快速排序

快速排序在工作面试中经常会被提及,今天记录下快速排序的学习心得。 快速排序核心:让某个基数(通常取第一个)回到它本该位于的位置(右边全部大于基数,左边全部小于基数),然后以该位置为界限,对两边再进行递归(本质上是分治)。首先找一个数作为基数(一般取第一个数),取两个指针,一个指向头,一个指向尾,先让尾指针从右往左找(一定先从尾部找),找到第一个比基准数小的,将值赋给头指针...

2019-12-15 16:19:41 154

原创 递归学习笔记(代码注释详细)

这几天一直在学习递归,看了很多篇帖子,其中有一篇写的特别好给我的启发很大,随后通过一些练习,勉强弄懂了一丢丢(参考https://www.cnblogs.com/kubidemanong/p/10538799.html),但递归的学习不是一朝一夕可以完成的,需要连续不断的学习与反复练习才能达到一定的境界,这篇帖子用来记录这一周的学习过程。 首先谈起递归,有基础的人都知...

2019-11-24 16:09:04 280

原创 基本排序算法——选择排序(注释详细)

这次介绍选择排序,顾名思义,选择排序:遍历数组,每次选择一个最大或最小的存放在“合适”的位置,算法复杂度。 核心,遍历数组时,需要找出每一次遍历的最大值及其下标,然后跟起始位置的值进行交换。注意,N个数排序实际上是把N-1个数排好,因为最后一个“被安排了”。void select_sort(int arr[], int n)//选择排序{ int max = 0...

2019-11-09 18:46:48 347

原创 基本排序算法——冒泡排序(注释详细)

这几章介绍一下几种基本排序算法,这次先讲冒泡排序。 冒泡排序的基本思想:依次比较相邻的两个数,将小的(大的,思想一致)调到前面,时间复杂度。 冒泡算法核心:N个数共计需要进行N-1趟排序,第i趟排序需要进行N-i次比较。 理解:第一趟把最大的数排到右端,此后,最大的数不参与比较了(因为它已经排好序了),第二趟把第二大的数排到右端...

2019-11-09 14:33:31 566

原创 顺序串和链串(注释详细)

看到之前最开始学的时候写的一个代码,关于串(string)的,今天分享一下。 串,在数据结构中即表示字符串,大多数信息都是以字符串的形式展现出来的,它由n个字符组成的一个整体(n>=0),其中可以包括字母、数字或者其他字符组成。双引号(“”)括起来表示串,即使其中只有一个字符,也叫字符串,如“A”,实际上包含两个元素:A+\0,后面有一个结束符。单引号(‘’...

2019-11-03 15:59:33 1307

原创 学习笔记20191031(VMware CentOS 6.5常用基本命令 C/C++指针常量,常量指针)

今天第一次写博客,其实以前很早就想写了,给自己找各种借口就拖到了现在,以后就想把自己平时学习的东西逐渐都写上来,一是巩固学习成果,二是为了以后有个系统的记录,方便自己回顾,三是给大家看看一起讨论一下。可能内容就分为几个大的部分吧,一是leetcode刷题的记录,二是自己平时学习的记录,包括C/C++,linux,数据结构等等一些(包括平时看论文学习的一些理论科研知识),三是记录明年找...

2019-10-31 12:19:28 148

空空如也

空空如也

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

TA关注的人

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