自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++如何在主函数(main)运行之前打印hello world

主函数(main)运行之前打印hello world主函数(main)运行之前打印hello world参考主函数(main)运行之前打印hello world主函数是永远是最先运行的函数,那么如果我们可不可以实现在主函数运行前在屏幕上打印一句话,比如“hello world”呢?要想做到这点,首先明确一件事:对于在全局作用域中定义的对象,它们的构造函数是在文件中所有其他函数(包括主函数)开始执行前被调用的,对应的,析构函数是在终止main之后调用的。方法一:全局变量的构造函数,会在main之前执

2020-08-31 08:48:22 829

原创 数据结构常见排序算法——快速排序(定义、特征、递归和非递归实现、优化、快速排序 Vs. 归并排序 Vs. 堆排序)

快速排序快速排序1、定义2、特征3、实现过程4、C++代码5、优化5、快速排序 Vs. 归并排序 Vs. 堆排序参考快速排序1、定义快速排序的基本思想是,通过一轮的排序将序列分割成独立的两部分,其中一部分序列的关键字(这里主要用值来表示)均比另一部分关键字小。继续对长度较短的序列进行同样的分割,最后到达整体有序。在排序过程中,由于已经分开的两部分的元素不需要进行比较,故减少了比较次数,降低了排序时间。总结:1、先从数列中取出一个数作为基准数2、分区过程,将比这个数大的数全放到它的右边,小

2020-08-30 08:47:26 664

原创 C++ 内存管理 —— 如何避免内存泄漏

内存泄漏1、什么是内存泄漏以及发生情况2、如何避免内存泄漏参考1、什么是内存泄漏以及发生情况1、定义wikipedia中这样定义内存泄漏:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。简单来说:内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由

2020-08-29 08:45:41 2887 1

原创 C++ 内存管理 —— 如何定位内存泄漏(valgrind)

定位内存泄漏(valgrind)定位内存泄漏(valgrind)1.1、基本概念1.2、使用方法参考定位内存泄漏(valgrind)1.1、基本概念应用环境:Linux编程语言:C/C++使用方法: 编译时加上-g选项,如 gcc -g filename.c -o filename,使用如下命令检测内存使用情况:#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./filename就会看到内存使

2020-08-28 00:18:05 3854

原创 浅谈C++内存管理 —— 内存对齐

内存对齐内存对齐1、为什么要内存对齐2、什么是内存对齐3、实例说明4、#pragma pack(n)参考内存对齐1、为什么要内存对齐#include<iostream>using namespace std;struct A{ char a; int b; short c;};struct B{ short c; char a; int b;};int main(){ cout<<sizeof(A)<&

2020-08-27 08:06:33 232

原创 程序链接链的是什么?链接器通过什么进行的链接?为什么需要extern “C“?

程序链接程序链接1、链接链的是什么?2、链接器通过什么进行的链接?3、为什么需要extern "C"?参考程序链接源代码(source coprede)→预处理器(processor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→链接器(Linker)→可执行程序(executables)分配程序执行所需的栈空间、代码段、静态存储区、映射堆空间地址等,操作系统会创建一个进程结构体来管理进程,然后将进程放入就绪队列,等待CPU调度运行。1、链接链的

2020-08-26 08:24:58 1010

原创 操作系统的程序内存结构 —— data和bss为什么需要分开,各自的作用

操作系统的程序内存结构1、操作系统的程序内存结构1.1、程序编译运行过程1.2、程序的内存分布1.3、.data和.bss分开的理由1.4、程序的指令和数据分开原因:参考1、操作系统的程序内存结构1.1、程序编译运行过程源代码(source coprede)→预处理器(processor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→链接器(Linker)→可执行程序(executables)分配程序执行所需的栈空间、代码段、静态存储区、映射堆空

2020-08-25 07:53:58 4080 1

原创 map和unordered_map的使用和差别?unordered_map查询效率这么高,为啥还需要map?

map和unordered_map的差别和使用?map和unordered_map的差别和使用?1、map的基本使用操作2、unordered_map的基本使用操作3、map和unordered_map的差别和使用场景参考map和unordered_map的差别和使用?map和unordered_map都是c++中可以充当字典(key-value)来用的数据类型,但是其基本实现是不一样的。1、map的基本使用操作map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树

2020-08-24 09:07:37 2155

原创 vector如何避免多次不必要的扩容带来的性能损失(reserve函数的调用)

vector如何避免不必要的扩容vector如何避免不必要的扩容1、vector数据结构性质2、push_back后iterator失效程序崩溃的原因3、reserve()避免多次不必要的扩容参考vector如何避免不必要的扩容1、vector数据结构性质vector占用一块连续分配的内存,一种可以存储任意类型的动态数组,与array不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。v

2020-08-23 08:24:51 3002

原创 linux中查看端口状态以及是否被占用的相关操作指令(netstat、isof)

linux中查看端口状态linux中查看端口状态1、netstat1.1、查看服务器上服务和端口1.2、查看某个端口是否被占用2、lsof:进程打开文件的相关信息2.1、列出80端口目前打开的文件列表2.2、列出所有的网络连接2.3、查看进程打开了某个文件2.4、查看某个用户打开的所有文件参考linux中查看端口状态端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须

2020-08-22 12:55:33 3865

原创 当面试官问你什么是单例模式、实现方式、或者单例模式的线程安全问题,请这么回答他!

单例模式单例模式1、什么是单例模式2、单例模式的实现方式2.1、懒汉式创建单例对象2.1.1、懒汉式如何保证只创建一个对象2.1.2、懒汉式如何保证线程安全2.2、饿汉式创建单例对象3、 总结参考单例模式1、什么是单例模式单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。2、单例模式的实现方式单例模式有两种类型:懒汉式:在真正需要

2020-08-21 11:02:54 328

原创 剑指offer 关于链表的例题 —— 链表的环的入口结点、倒数第k个结点、两个链表的第一个公共结点、反转链表、合并两个排序的链表、删除排序链表中的重复元素

递增数组中查找目标值递增数组中查找目标值(双指针or二分查找)1、子序列1.1、最长上升子序列1.1.1、思路1.1.2、题解1.2、最长公共子序列递增数组中查找目标值(双指针or二分查找)1、子序列1.1、最长上升子序列1.1.1、思路1.1.2、题解1.2、最长公共子序列...

2020-08-20 11:18:06 128

原创 面试官,不要再问我三次握手和四次挥手了!—— 关于三次握手和四次挥手很全面的常见面试问题汇总

三次握手和四次挥手三次握手和四次挥手背景1、请画出三次握手和四次挥手的示意图2、为什么连接的时候是三次握手?3、什么是半连接队列?4、ISN(Initial Sequence Number)是固定的吗?5、三次握手过程中可以携带数据吗?6、如果第三次握手丢失了,客户端服务端会如何处理?7、SYN攻击是什么?8、挥手为什么需要四次?9、 四次挥手释放连接时,等待2MSL的意义?参考三次握手和四次挥手背景面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报

2020-08-19 09:06:22 248

原创 网络数据到底怎样的传输过程?什么是网络编程?一文教你清晰入门linux下socket网络编程—— 服务端篇(TCP协议传输)!

socket网络编程入门篇之客户端socket网络编程入门篇之客户端1、网络编程入门篇——前章1.1、网络数据传输过程1.2、什么是socket套接字1.3、网络结构体1.4、网络字节序 (Network Byte Order)和本机转换2、网络编程入门篇——客户端篇2.1、创建socket()2.2、发起连接(connect(),面试常问)2.3、数据读写(send()+recv())2.3.1、数据读(recv())2.3.2、数据写(send())2.4、关闭连接 (close() and shut

2020-08-18 00:14:01 519

原创 网络数据到底怎样的传输过程?什么是网络编程?一文教你简单入门 linux下socket网络编程 —— 客户端篇(TCP协议传输)!

socket网络编程入门篇之客户端socket网络编程入门篇之客户端1、网络编程入门篇——前章1.1、网络数据传输过程1.2、什么是socket套接字1.3、网络结构体1.4、网络字节序 (Network Byte Order)和本机转换2、网络编程入门篇——客户端篇2.1、创建socket()2.2、发起连接(connect())2.3、数据读写(send()+recv())2.3.1、数据读(recv())2.3.2、数据写(recv())2.4、关闭连接(close())2、网络编程入门篇 —— 服

2020-08-17 11:50:24 3966 3

原创 linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)

文件操作相关命令文件操作相关命令1、创建文件夹mkdir2、创建文件touch3、移动文件(夹)(类似于剪切)4、删除rm5、重命名mv6、复制cp7、查看文件(cat、head、tail..)8、查找文件 find (重要)9、归档压缩tar10、修改文件权限chmod参考文件操作相关命令1、创建文件夹mkdir# mkdir a 创建一个名为a的文件夹2、创建文件touch# touch a.txt 创建一个名为a.txt的文件3、移动文件(夹)(类似于剪切)# m

2020-08-16 00:06:27 472

原创 leetcode416、322、518—— 0-1背包问题(笔试热点)、完全背包

背包问题背包问题1、0-1背包问题1.1、标准0-1背包1.1.1、思路1.1.2、题解1.2、分割等和子集1.2.1、思路1.2.2、题解2、完全背包问题2.1、零钱兑换12.1.2、思路2.1.3、题解2.2、零钱兑换22.2.2、思路2.2.3、题解参考背包问题1、0-1背包问题1.1、标准0-1背包背包问题是什么给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少?N =

2020-08-15 18:26:32 564

原创 leetcode34、704、剑指offer 57 —— 在递增数组中查找目标值的问题(双指针法)

递增数组中查找目标值递增数组中查找目标值(双指针or二分查找)1、二分查找1.1、二分查找1.1.1、思路1.1.2、题解1.2、寻找左侧边界1.3、寻找右侧边界1.3、在排序数组中查找元素的第一个和最后一个位置1.3.1、题解2、和为S的连续正数序列2.1、题解3、和为s的两个数字3.1、题解递增数组中查找目标值(双指针or二分查找)1、二分查找1.1、二分查找原题链接给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 targe

2020-08-14 10:34:22 319

原创 Linux下的I/O复用技术 — epoll如何使用(epoll_create、epoll_ctl、epoll_wait) 以及 LT/ET 使用过程解析

epoll如何使用?epoll如何使用?LT/ET 使用过程LT水平触发(Level Triggered)ET边沿触发(Edge Triggered )epoll如何使用?LT/ET 使用过程LT水平触发(Level Triggered)1、Level Triggered (LT) 水平触发socket接收缓冲区不为空 ,说明有数据可读, 读事件一直触发socket发送缓冲区不满 ,说明可以继续写入数据 ,写事件一直触发符合思维习惯,epoll_wait返回的事件就是socket的状态

2020-08-14 09:25:54 4457 2

原创 Epoll常见面试问题,LT和ET区别?将socket设为非阻塞?正确的读写方式?关于epoll的数据结构?epoll与select、poll的对比?

epoll——常见面试问题epoll——常见面试问题常问面试问题epoll——常见面试问题常问面试问题1、Linux epoll ET模式下 EPOLLOUT和EPOLLIN触发场景?1、EPOLLOUT事件:EPOLLOUT事件只有在连接时触发一次,表示可写,其他时候想要触发,那你要先准备好下面条件:1.某次write,写满了发送缓冲区,返回错误码为EAGAIN。2.对端读取了一些数据,又重新可写了,此时会触发EPOLLOUT。简单地说:EPOLLOUT事件只有在不可写到可写

2020-08-13 18:01:41 1736 1

原创 linux常用操作指令3—— 网络管理常用命令(netstat、ping 、host 、ifconfig、tcpdump )

网络管理常用命令网络管理常用命令1、netstat(检验本机端口的网络连接情况)参考网络管理常用命令1、netstat(检验本机端口的网络连接情况)Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。使用方式netstat [选项] [参数]命令参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示

2020-08-13 14:54:44 1178

原创 网络编程最最最重要的面试热点(没有之一)—— Linux下的I/O复用技术 之 epoll为什么更高效 ? epoll涉及的数据结构?epoll与select、poll的对比?

排列组合问题排列组合问题参考排列组合问题EPOLL事件的两种模型:Level Triggered (LT) 水平触发.socket接收缓冲区不为空 有数据可读 读事件一直触发.socket发送缓冲区不满 可以继续写入数据 写事件一直触发符合思维习惯,epoll_wait返回的事件就是socket的状态Edge Triggered (ET) 边沿触发.socket的接收缓冲区状态变化时触发读事件,即空的接收缓冲区刚接收到数据时触发读事件.socket的发送缓冲区状态变化时触发写事件,即满的缓

2020-08-12 18:51:48 2142

原创 leetcode53、300、1143—— 子序列和子数组问题(动态规划)

子序列和子数组子序列和子数组1、子序列1.1、最长上升子序列1.1.1、思路1.1.2、题解1.2、最长公共子序列1.2.1、思路1.2.2、题解2、子数组2.1、连续子数组的最大和2.2、思路2.3、题解参考子序列和子数组1、子序列1.1、最长上升子序列题目链接给定一个无序的整数数组,找到其中最长上升子序列的长度。输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,

2020-08-11 21:46:08 398 1

原创 leetcode 热点——排列组合问题

排列组合问题排列组合问题1、子集问题1.1、求数字的所有子集。1.2、思路1.3、题解2、组合2.1、无重复字符串的排列组合2.2、思路2.3、题解3、排列问题3.1、求算法输出这些数字的所有子集。3.2、思路3.3、题解参考排列组合问题1、子集问题1.1、求数字的所有子集。题目链接添加链接描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。输入: nums = [1,2,3]输出:[ [3], [1], [2],

2020-08-10 22:10:23 949

原创 服务器编程框架的两种高效的事件处理模式——Reactor模式 + Proactor模式

两种高效的事件处理模式——Reactor模式 + Proactor模式Reactor模式 + Proactor模式1、背景(两句话把握基本思想)2、Reactor模式2.1、事件处理流程2.2、Reactor模型发展3、Proactor模式3.1、事件处理流程3.2、同步I/O方式模拟Proactor模式4、Reactor和Proactor优缺点和对比参考Reactor模式 + Proactor模式1、背景(两句话把握基本思想)reactor:老板,饭做好了你跟俺说一声,俺自己来拿

2020-08-10 17:51:32 410

原创 linux常用操作指令2—— 查看磁盘、内存使用情况(df、du、free、top)

查看磁盘、内存使用情况查看磁盘、内存使用情况1、df 显示磁盘分区上可以使用的磁盘空间2、du 显示每个文件和目录的磁盘使用空间2.1、Linux du命令和df命令区别3、free 显示内存使用情况4、使用top命令监控系统进程参考查看磁盘、内存使用情况1、df 显示磁盘分区上可以使用的磁盘空间显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以

2020-08-09 23:51:18 9429

原创 Linux常问面试问题之——用户态与内核态、用户态访问内核态资源的方式、用户态到内核态的切换

用户态与内核态用户态与内核态1、背景2、定义3、用户态访问内核态资源的方式3.1、系统调用3.2、库函数3.3、Shell脚本4、用户态到内核态怎样切换?参考用户态与内核态1、背景当我们在写程序是,凡是涉及到IO读写、内存分配等硬件资源的操作时,往往不能直接操作,而是通过一种叫系统调用的过程,让程序陷入到内核态运行,然后内核态的CPU执行有关硬件资源操作指令,得到相关的硬件资源后在返回到用户态继续执行,之间还要进行一系列的数据传输。假设没有这种内核态和用户态之分,程序随随便便就能访问硬件资源,比如说

2020-08-09 22:28:32 6689

转载 浅谈5种IO模型——阻塞式IO、非阻塞式IO、信号驱动IO、多路复用IO及异步IO

5种IO模型5种IO模型1、背景2、IO模型2.1、阻塞式IO(blocking IO)2.2、非阻塞式IO(nonblocking IO)2.3、多路复用IO(IO multiplexing)2.4、信号驱动IO(signal driven IO)2.5、异步IO( asynchronous IO)参考5种IO模型1、背景从TCP发送数据的流程说起要深入的理解各种IO模型,那么必须先了解下产生各种IO的原因是什么,要知道这其中的本质问题那么我们就必须要知一条消息是如何从过一个人发送到另外一个人的;

2020-08-09 21:01:09 2606

原创 浅谈MySQL 数据库中InnoDB存储引擎的 MVCC机制 实现的基本原理

MVCC 机制MVCC 机制(Multiversion Concurrency Control)1、背景2、定义和特征3、实现原理3.1、表格的隐藏列参考MVCC 机制(Multiversion Concurrency Control)1、背景InnoDB 相比 MyISAM 有两大特点,一是支持事务而是支持行级锁,事务的引入带来了一些新的挑战。相对于串行处理来说,并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,从而可以支持可以支持更多的用户。但并发事务处理也会带来一些问题,主要

2020-08-08 12:59:54 612

原创 浅谈什么是Mysql数据库中的悲观锁和乐观锁?

悲观锁和乐观锁悲观锁和乐观锁1、什么悲观锁?2、什么乐观锁?参考悲观锁和乐观锁1、什么悲观锁?悲观锁是基于一种悲观的态度类来防止一切数据冲突,以一种预防的姿态在修改数据之前把数据锁住;然后再对数据进行读写,在它释放锁之前任何人都不能对其数据进行操作直到前面一个人把锁释放后下一个人数据加锁才可对数据进行加锁,然后才可以对数据进行操作,一般数据库本身锁的机制都是基于悲观锁的机制实现的;悲观锁更适用于多写少读的情况。特点:可以完全保证数据的独占性和正确性,因为每次请求都会先对数据进行加锁,

2020-08-07 22:07:36 337

原创 MySQL事务:ACID特性的实现原理(redo log 与 undo log)

ACID特性的实现原理ACID特性的实现原理1、背景(什么是事务)2、四大特性(ACID)2.1、原子性(Atomicity)2.1.1、定义2.1.2、undo log(回滚日志)2.2、持久性(Durability )2.2.1、定义2.2.2、redo log(重做日志)2.3、隔离性(Isolation)2.3.1、定义2.3.2、锁机制(后续详细介绍)2.3.3、并发读写问题2.3.4、事务隔离级别2.3.5、MVCC(多版本并发控制,后续详细介绍)2.4、一致性(Consistency)2.4.

2020-08-06 23:54:32 1423 2

原创 leetcode 26、剑指offer(调整数组顺序,使奇数位于偶数之前)—— 排头兵思想(个人理解,仅供参考)

排头兵问题排头兵(又有双指针思想的味道在里面)题目1、leetcode 261.1、思路1.2、题解2、调整数组顺序,使奇数位于偶数之前2.2、题解排头兵(又有双指针思想的味道在里面)题目1、leetcode 26原题链接给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长

2020-08-06 11:21:40 105

转载 leetcode3、76、438、567、剑指offer滑动窗口最大值—— 滑动窗口问题

滑动窗口问题滑动窗口1、滑动窗口3问题2、题目2.1、滑动窗口最大值(最纯粹的窗口算法)2.1.1、思路2.1.2、题解2.2、leetcode76、最小覆盖子串(往下都是基于滑动窗口思想)2.2.1、思路2.2.2、题解2.3、leetcode 762.3.1、思路2.3.2、题解2.4、leetcode 4382.4.1、思路2.4.2、题解2.5、leetcode 5672.5.1、思路2.5.2、题解参考滑动窗口1、滑动窗口3问题- 1、如何向窗口中添加新元素?- 2、如何缩小窗口,也就是

2020-08-05 23:10:53 238

原创 浅谈MySQL数据库的两个主要的存储引擎 —— InnoDB & MyISAM(对比、存储结构、应用场景以及常见面试题目)

MySQL存储引擎MySQL存储引擎1、什么是存储引擎?2、存储引擎的分类2.1、InnoDB存储引擎特征(mysql默认存储引擎)2.2、MyISAM存储引擎特征3、InnoDB & MyISAM的区别(基于上述特征,重点,五颗星)4、常见其他问题(重要)参考MySQL存储引擎1、什么是存储引擎?MySQL的逻辑架构如下:存储引擎在MySQL的逻辑架构中位于第三层。数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存

2020-08-04 22:51:10 590

原创 服务器负载均衡——加权轮询调度算法(WeightedRound-Robin)以及负载均衡算法的C++简单实现

权重轮询调度算法权重轮询1、轮询算法(Round-Robin)2、加权轮询算法(WeightedRound-Robin)参考权重轮询1、轮询算法(Round-Robin)轮询算法是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器:从服务器1开始,直到服务器N,然后重新开始循环。//其中currentindex是当前位置,totalserver是所有服务器节点数量。 int Server round() { currentIndex = (curr

2020-08-04 15:57:31 3119

原创 一文让你弄明白什么是MySQL数据库的索引?索引的基本原理(底层数据结构实现的对比)?基于不同数据库引擎的索引分类?索引的使用场景?

MySQL数据库的索引数据库的索引1、背景2、定义和特征3、索引的分类(功能上分类)4、MySQL下索引的基本操作4、索引 的底层实现原理(重点)5、索引的分类(实现上分类)参考数据库的索引1、背景我以为我对Mysql索引很了解,直到我遇到了阿里的面试官我们是怎么聊到索引的呢,是因为我提到我们的业务量比较大,每天大概有几百万的新数据生成,于是有了以下对话:面试官:你们每天这么大的数据量,都是保存在关系型数据库中吗?我:是的,我们线上使用的是MySQL数据库面试官:每天几百万数据,一

2020-08-03 23:46:00 1693 5

原创 linux常用操作指令1—— 查看和管理进程指令(ps、top、pstree、kill)

linux下查看和管理进程查看和管理进程1、使用ps命令监控系统进程2、使用pstree命令监控系统进程3、使用top命令监控系统进程4、结束进程参考查看和管理进程1、使用ps命令监控系统进程ps:查看进程状态 (一个瞬间的进程状态,静态)语法: ps [options]参数格式:    UNIX格式:一个"-"开头    BSD格式:没有"-"开头    GNU长格式:两个"-"开头常用参数: a  # 显示与终端相关的所有进程,包含每个进程的完整路径  u  # 显

2020-08-02 18:46:49 2582

原创 leetcode 448、645 —— 找到所有数组中消失的数字(错误的集合)

数组中消失和重复的数字数组中消失和重复的数字1、题目2、思路3、题解4、错误的集合(leetcode545,解法和448一样)数组中消失和重复的数字1、题目448. 找到所有数组中消失的数字给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。输入:[4,

2020-08-02 16:43:03 233

原创 什么是信号(signal)?信号的处理机制?利用信号进行简单的进程通信过程设计(c++)?

信号(signal)信号(signal)1、背景2、定义3、处理机制3.1、信号来源3.2、信号的响应动作(前32种)3.3、信号在内核中的表示3.4、信号处理流程3.4.0、信号发送3.4.1、信号接收3.4.2、信号的检测3.4.3、信号的查看与处理3.4.4、简单实例过程说明4、相关API函数4.1、信号发送函数5、实验测试参考信号(signal)1、背景信号(Signal)主要用来通知进程某个特定事件的发生,或者是让进程执行某个特定的处理函数。所以,信号可以说是进程控制的一部分。我们以普通的

2020-08-02 11:14:53 2999

原创 什么是共享内存?在内存中的具体位置?shmget的具体使用原理以及其他关联函数(shmat ( ),shmdt ( ),shmctl ( ))、以及C++应用案例?mmap和shm的区别?

共享内存(shared memory)共享内存1、背景2、定义3、两种方式(mmap上一篇博客说明)3.2、shmget3.2.1、使用流程和基本原理3.2.2、函数原型(创建共享内存)3.2.3、其他相关AP函数3.2.3.1、shmat ( ):挂接共享内存3.2.3.2、shmdt ( ):去关联共享内存3.2.3.3、shmctl ( ):控制共享内存3.2.4、应用实例4、mmap和shm的区别参考共享内存1、背景当存在客户-服务程序中复制文件时候,其数据流如下,要经历四次数据复制,开销很大

2020-08-01 18:53:06 2527

空空如也

空空如也

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

TA关注的人

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