自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tyler_Zx的博客

天天向上,认真的做每一件事,总是会有进步的。

原创 C++ map 使用详解(含C++20新特性)
原力计划

简介 map是一个关联容器,它提供一对一(其中第一个称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。 map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动...

2020-05-03 22:23:40 3234 0

原创 C++ vector 使用详解(含C++20新特性)
原力计划

目录 介绍两个关键词 元素访问 迭代器 空间 修改操作 简介 C++的vector本质上是一个动态数组,它的元素是连续存储的,这意味着不仅可以通过迭代器访问元素,还可以使用指向元素的常规指针来对其进行访问。还可以将指向vector元素的指针传递给任何需要指向数组元素的指针的函数。 ...

2020-05-02 23:20:48 4672 0

原创 Raft算法的Leader选举和日志复制过程
原力计划

Raft概念 Raft是一种为了管理复制日志的一致性算法。它提供了和Paxos算法相同的功能和性能,但是它的算法结构和Paxos不同,使得Raft算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft将一致性算法分解成了几个关键模块,例如Leader选举、日志复制和安全性。同时它通...

2020-04-16 01:39:10 3848 0

原创 I/O多路复用:select、poll和epoll详解
原力计划

I/O多路复用 I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。通常,网络程序在下列情况下需要使用I/O复用技术: 客户端程序要同事处理多个socket。比如将讨论的非阻塞connect技术。 客户端程序要同时处理用户输入和网络连接。 TCP服务器要同时处理监听s...

2020-04-10 22:47:29 4890 1

原创 TCP三次握手,握的是啥?

前言 最近在知乎上看到一个问题——TCP为什么是三次握手,而不是两次或四次?这个问题我原先也发过博客,之前我的回答是:为了防止两次握手情况下已失效的连接请求报文段突然有传送到服务端,而产生了错误(主要是参考谢希仁版的《计算机网络》)。以及四次握手不能有效的增加TCP连接的安全性,反而让客户端等待...

2020-02-17 14:10:18 5308 1

原创 OceanBase——双十一海量交易背后的复杂技术

前言: 其实这篇博客我早就想完成它了,计划着在十一月初就搞定的,可是双十一活动太多,前几天一直在淘宝和天猫看要买的东西。这篇博客也是断断续续的写着,到今天才算是把它整理出来了。这篇博文主要介绍了OceanBase的系统框架,以及框架内各个成员的功能。主要是学习它的框架,以及分析问题、解决问题的方...

2019-11-15 18:40:54 4864 0

原创 TCP 可靠传输机制详解

TCP协议的特点 TCP报文段 TCP"三次握手" TCP"四次挥手" 客户端和服务器端所经历的状态 TCP可靠传输 TCP流量控制 TCP拥塞控制 面试相关问题 前言 本篇博文主要是为了复习TCP协议而做的总结。其中很多内容都是来自于《...

2019-08-31 20:23:44 6808 0

原创 数据结构——排序算法(含动态图片)

前言 插入排序 直接插入排序 折半插入排序 希尔排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 归并排序 常用排序算法复杂度和稳定性总结 前言 排序是《数据结构》中最基本的学习内容。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排...

2019-07-21 14:09:57 4208 0

原创 数据结构——绪论以及线性表的顺序表示

绪论 数据类型 数据类型是一个值的集合和定义在此集合上一组操作的总称。 (1)原子类型:其值不可再分的数据类型,如int,char,float。 (2)结构类型:其值可以再分解为若干成分的数据类型。 struct Student { long no; char na...

2019-07-17 20:00:05 4901 0

原创 0-1背包问题的4种解决方法&&算法策略

蛮力法 递归与分治策略 动态规划 贪心算法 回溯法 分支限界法 前言 0-1背包是一个经典的问题,而它能用不同的算法思想去解决。恰巧最近在看算法,学习算法就是学习解决问题的思路。现在将0-1背包问题与解决方法整理出来,这样不仅能区分不同的算法思想,还能加深对0-1背包问题的理解。虽然...

2018-11-01 15:39:54 16571 7

原创 使用wireshark抓包并进行网络协议分析

前言 今天想通过抓包实验,巩固一下所学习的网络协议。同时,在知识点上会加上以前遇到的一些问题。这次实验并不是对所有的网络协议都进行分析,而是从下面这个问题出发(面试常被问)。从这一过程中复习学过的网络协议。使用的工具是wireshark。 问题:在浏览器中输入URL后,执行的过程。会用到哪些协...

2018-10-18 15:37:35 13952 1

原创 快速排序的4种优化

快排思想 快排基准的选择 固定基准 随机基准 三数取中 快速排序的优化 优化1:序列长度达到一定大小时,使用插入排序 优化2:尾递归优化 优化3:聚集元素 优化4:多线程处理快排 快排思想 快排算法是基于分治策略的排序算法,其基本思想是,对于输入的数组...

2018-09-15 22:14:28 17343 12

原创 C++学习笔记:(四)运算符重载 & 类型转换

目录 6.运算符重载 6.1运算符重载的基本概念 6.2成员函数重载运算符 6.3友元函数重载运算符 6.4成员函数重载运算符和友元函数重载运算符比较 6.5类型转换 6.运算符重载 面向对象程序设计的重载有函数重载和运算符重载。函数重载是指在相同作用域内,若干个参数特征不同的函数...

2018-08-08 15:32:43 7220 0

原创 操作系统中的同步和异步

操作系统中同步、异步性概念 首先我们从操作系统的发展中学习什么是异步性。在操作系统发展的初期阶段,CPU处理的是作业,而且是单道批处理。什么意思呢?就是一个作业从提交到结束,程序员都不能干预,此时整台计算机就为这一个作业服务(可想有多少资源被"浪费"),这样有一点好处就是整个...

2018-07-12 11:23:38 8713 3

原创 计算机网络:子网划分、子网掩码、CIDR 、路由聚合相关计算详解
原力计划

目录 IPv4 的分类 IPv4 的划分 无分类编址CIDR IPv4 地址应用规划 IPv4 的分类 连接到 Internet 中的每一个主机(或路由器)都分配一个 32 比特的全球唯一的标识符,即 IP 地址。传统的 IP 地址是分类的地址,分为A、B、C、D、E五类。无论哪类 I...

2020-07-03 21:31:16 154 0

原创 网络安全:与 TCP 连接管理相关的网络攻击

目录 攻击方法1:SYN 泛洪 攻击方法2:影响路径最大传输单元 攻击方法3:破坏现有的TCP连接 攻击方法4:欺骗攻击 攻击方法1:SYN 泛洪 SYN 泛洪是一种 TCP 拒绝服务攻击,在这种攻击中一个或多个恶意的客户端产生一系列 TCP 连接尝试( SYN 报文段),并将它们发送...

2020-06-28 19:10:07 879 0

原创 Linux 安装 MySQL 5.7 并连接 Navicat 详细过程
原力计划

目录 MySQL 安装及配置 MySQL 设置 连接 Navicat 其他问题 MySQL 安装及配置 官方下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压 tar -xvf mysql-5.7.3...

2020-06-18 17:07:59 1626 0

原创 图文并茂的讲解 ICMP (网际控制报文)协议

ICMP 网际控制报文 为了提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议来允许主机或路由器报告差错和异常情况。ICMP 报文作为网际层数据报的数据,加上数据报的首部,组成 IP 数据报发出去。ICMP 协议是网际层协议。 ICMP 报文的种类有两种,即ICMP 差错报告报文...

2020-06-18 09:18:00 1659 0

原创 C++ std::thread 和 std::jthread 使用详解 (含C++20新特性)
原力计划

在C++ 11之前,官方并没有支持线程库。在Linux下完成多线程编程时,多数情况下是使用#include <pthread.h>的函数。C++ 11通过标准库引入了对thread类的支持,大大方便了完成多线程开发的工作。在C++20中,引入的jthread类是thread自动合并和取...

2020-06-16 11:35:54 1526 0

原创 C++ priority_queue 的使用和源码详解

目录 简介 priority_queue 的使用 泛型算法make_heap()、push_heap()、pop_heap() make_heap() push_heap() pop_heap() 简介 priority_queue 是一个拥有权值观念的 queue,它允许加入新的...

2020-06-14 17:01:31 1547 0

原创 Socket编程:必须要了解的网络字节序和转换函数
原力计划

目录 主机字节序和网络字节序 转换函数 htonl 、htons 、ntohl 和 ntohs inet_addr 、inet_aton 和 inet_ntoa inet_pton和 inet_ntop 主机字节序和网络字节序 现代 CPU 的累加器一次能装载至少 4 字节,即一个整...

2020-06-12 21:33:52 754 0

原创 C++ string 使用详解(含C++20新特性)
原力计划

目录 元素访问 迭代器 容量 操作 查找 std::erase,std::erase_if(std::basic_string) 元素访问 at 返回到位于指定位置pos的字符的引用 constexprreference at(size_type pos); co...

2020-06-11 16:10:07 1734 2

原创 快用一用 lambda 表达式吧,让你的代码更简洁、更漂亮!
原力计划

目录 lambda 表达式 定义 lambda 表达式 捕获子句 按值捕获 按引用捕获 捕获特定的变量 捕获this指针 使用lambda的优势 lambda 表达式 lambda 表达式提供了一种便捷、简洁的语法来快速定义回调函数或函数对象。而且,不只语法简洁,lambda ...

2020-06-09 00:09:38 1998 0

原创 C++易被忽略的知识点:移动语义 & 左值右值
原力计划

lvalue 和 rvalue 每个表达式都会得到 lvalue 或 rvalue。它们的区别是,lvalue是一个持久存在的值,其内存地址可被用来持续存储值;rvalue是一个暂时存储的结果。之所以称为 lvalue,是因为得到 lvalue 的表达式通常出现在赋值运算符的左边,而 rvalu...

2020-06-03 19:26:18 1436 0

原创 阿里巴巴(Alibaba)笔试编程题

前言 最近在牛客网上找了点阿里巴巴笔试的编程题做,现在做个简单的总结。有的代码还在调,会慢慢发出来。有的问题可以直接暴力破解的就直接放出来了,什么代码性能优化的就先不考虑了。 问题1: 问题描述:小明在双十一晚会上抽奖赢得了一次天猫超市免单的机会,享受在一个包裹内最大体积V,最大重量M内...

2020-06-02 00:29:29 961 0

原创 Linux gdb多进程、多线程调试
原力计划

目录 常用命令 堆栈相关命令 更为详细的断点调试 gdb多进程调试 gdb多线程调试 前言 gdb 是linux平台下进行程序调试的最常用的工具。简单的程序调试就是加断点,然后一步一步让程序运行,直到找到 bug 。一般的程序调试起来比较简单,但是在多进程或多线程情况下调试起来就比较...

2020-05-21 17:00:45 2126 0

原创 C++ deque、queue、stack 使用详解

目录 元素访问 迭代器 容量 修改操作 std::erase,std::erase_if(std::deque) std::swap(std::deque) stack queue 简介 双端队列 (double-ended queue,缩写为deque)是一个容量可以动态变化...

2020-05-15 17:30:24 1723 0

原创 C++ 动态二维数组(二维vector)

在完成一项任务时可能会需要用到动态二维数组,在C++中,可以使用二维vector创建二维数组。对二维数组的使用,其操作可分为增删查改。其中修改操作可以通过简单赋值操作完成,之后便不再赘述。 创建二维数组: vector <int> vec(4,2); //将含有4个数据的一维动态...

2020-05-11 13:55:39 1634 0

原创 C++ 二维、三维 map 的使用

最近复习了一下map的使用,因为使用的都是一维的,所以使用常规操作就能满足需求。以前看到过有人在工作环境中使用多维度的map,当时没有尝试实现这种需求,今天想起来了就试了下。基本的思路就是嵌套map,类似于map<string, map<string, string>> 这...

2020-05-09 16:36:03 1004 0

原创 C++ unordered_map 使用详解(含C++20新特性)

目录 查找元素 迭代器 容量 修改操作 通接口 哈希策略 观察器 std::swap(std::unordered_map) std::erase_if(std::unordered_map) 简介 本篇博客介绍C++常用的无序关联容器unordered_map。unorde...

2020-05-06 12:19:52 1765 0

原创 C++实现字符串分割函数split()
原力计划

目录 使用strtok()完成分割 使用strsep()完成分割 使用strtok_r()完成分割 实现字符串分割 前言 最近遇到了一个字符串分割的问题,在C++的标准库里面没有字符分割函数split()。我想这个问题今后可能还会再遇见,所以使用C/C++中的字符串分割方法完成相应的功...

2020-04-30 22:31:47 2618 0

原创 腾讯2020暑期实习4.26在线笔试编程题

前言 腾讯2020暑期实习笔试在4.26号进行,总共有5道编程题,其中两道是数据结构中的队列和栈的考察。这里我只截了4道题的图,第一道题的队列会用就行了,按照要求处理输入和输出。这里我也给出一些题的代码,虽然不是最优的,但是能解决问题。 用栈实现队列 最接近点对问题 #i...

2020-04-29 15:43:57 4770 0

原创 内存对齐详解

为什么要进行内存对其? (1)空间原因:没有进行内存对齐的结构体或类会浪费空间。 (2)性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。 (3)平台原因:不是所有的硬件平台都能访问任意地址上...

2020-04-25 11:56:22 1362 0

转载 mmap内存映射详解

mmap基础概念 mmap是一种内存映射的方法,这一功能可以用在文件的处理上,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。 在编程时可以使某个磁盘文件的内容看起来像是内存中的一个数组。如果文件由记录组成,而这些记录又能够用结构体...

2020-04-23 20:05:30 215 0

原创 腾讯2020暑期实习后台开发面试经验及技术栈
原力计划

前言 前一段时间参加了腾讯提前批的面试,也算是试了试水。遇到了一些问题,现在整理出来,也算是做个总结,以后不要再犯同样的错误。参加这次提前批面试,主要是通过电话和视频面试进行的。我将从岗位需求,简历书写及面试内容等方面先介绍。然后罗列出面试过程中遇到的问题,供大家参考。关于提前批的问题: ...

2020-04-17 18:07:45 4451 0

原创 解决Linux因非正常关机或死机重启后进入 initramfs 问题

问题描述 昨晚一直整理资料到1.30。然后就运行代码让它自己跑着,结果今天发现电脑死机了。只有鼠标能用,其他按键和终端完全没用。这种情况下我只能强制关机,重启后进入initramfs。Linux对这类非正常关机或死机导致的问题应该有解决的办法,当时搜了很多博客,不过他们遇到的大多是磁盘出错。我也...

2020-04-16 14:57:12 213 0

原创 尾递归及快排尾递归优化
原力计划

尾递归 概念 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自...

2020-04-13 15:17:19 2506 0

原创 Topk问题及代码实现
原力计划

Topk 问题描述 如从海量数据中寻找最大(或最小)的 k 个元素,这类问题被称为 Topk问题。这个问题无论在实际应用还是面试都会被问到。那我们今天就来看看到底有几种解决方案,以及各个方案的优劣情况。以下解题思路的前提条件是:从数组array[1, n]中,寻找出最大的 k 个数。 全局...

2020-04-08 23:19:24 2644 0

原创 通俗易懂的讲解堆排序(含Gif图)
原力计划

堆的定义 堆排序是一种树形结构选择排序方法,其特点是:在排序过程中,将序列视为一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的关系,在当前无序区间中选择关键字最大(或最小)的元素。堆的定义如下: n个关键字序列L[1,2,3...n]称为堆,当且仅当该序列满足: ①L(...

2020-04-07 16:07:17 4054 0

原创 自信和优越感的区别

来自陈铭: 自信是我觉得我很好,优越感是我觉得我比你好。一个自信的人,真正骨子里自信的时候,当他跟自己说我很好的时候。我是一等奖,二等奖;我是第一名,第二名,亦或是第五名。其实,没有影响到他对自己价值的判断和认可。但是,如果是优越感,体现出来的是”我一定要比你好”才能证明我好。那个目标就有一点变...

2020-03-24 15:00:20 292 0

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