自定义博客皮肤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++(八股文) —— static、this指针、inline、volatile、assert、explicit

目录1、static2、this 指针3、inline 内联函数4、volatile5、assert6、explicit(显示)1、static作用修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在main函数运行前就分配了空间,如果有初始值就用初始值初始化它。static int temp = 10;修饰普通函数,表名函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定为static。static v

2022-03-26 15:41:01 962

原创 LeetCode(104) —— 二叉树的最大深度

1、题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。2、思路递归递归退出条件:节点为 nullptr取左右子树长度的最大值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode

2022-03-25 16:59:08 206

原创 leetcode(100) —— 相同的树

1、题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:p = [1,2,3], q = [1,2,3]输出:true2、思路2.1 两个树的节点比较,分 3 种情况2.1.1 两个节点都不为空,且 val 相同2.1.2 两个节点都为空2.1.3 其他前两种情况都可以认定 两个节点相同/** * Definition for a binary tree node. * str

2022-03-25 16:53:48 1385

原创 Linux的IO模型 —— 多路复用(select、poll、epoll)

目录1、前言2、内核空间、用户空间、同步、异步、阻塞、非阻塞3、同步阻塞 IO4、同步非阻塞IO5、多路复用5.1 select5.2 poll5.3 epoll1、前言  应用进程和内核之间的数据交互方式一直在演进,下面我们对各种形态的交互方式进行介绍。在这之前,我们先明确几个概念:内核空间和用户空间、同步和异步、阻塞和非阻塞。2、内核空间、用户空间、同步、异步、阻塞、非阻塞2.1 内核空间  操作系统单独拥有的内存空间为内核空间,这块内存空间独立于其他的应用内存空间,除了操作系统,其他应用程序

2022-03-25 12:10:24 5241

原创 CentOS —— 安装 Redis(超详细)

1、前言Redis版本 6.2.5服务器版本 Linux CentOS 7.6 64位2、下载 Redis下载网址:https://redis.io/download/笔者使用wget在线下载wget http://download.redis.io/releases/redis-6.2.5.tar.gz3、解压、安装3.1 使用 tar 解压压缩包tar -xzvf redis-6.2.5.tar.gz3.2 进入解压后的目录cd redis-6.2.53.3 这两个文件的路

2022-03-25 10:40:23 6188 5

原创 C++(八股文) —— 指针和引用的区别

1、定义和性质指针是一个变量,存储的是地址引用是原变量的一个别名,和原变量本质是同一个东西2、指针可以有多级,引用只能是一级int **p; // 合法int &&a; // 不合法3、指针定义时可以不初始化,引用定义时必须初始化int *p; // 合法int &r; // 不合法int a = 996;int &r = a; // 合法4、指针为 null 值,引用不能int *p = NULL; // 合法int &r = NULL

2022-03-21 17:51:12 643

原创 MySQL —— 外键

目录1、外键是什么2、外键的作用3、如何创建外键1、外键是什么定义: 一张表中的非主键字段指向了另一张表中的主键,称之为外键。一张表可以有多个外键,但是表之间不能跨引擎。只有 InnoDB引擎才支持外键。2、外键的作用外键的作用:保持数据的一致性、完整性。具体体现在以下两个方面:2.1 阻止执行从表插入新行,其外键值不是主表的主键值便阻止插入从表修改外键值,新值不是主表的主键值便阻止修改主表删除行,其主键值在从表里存在便阻止删除(即必须先删除从表的相关行,才能删除主表行)主表修改主键值,

2022-03-19 21:37:28 1391

原创 分布式架构(一) —— 理解什么是是分布式

2022-03-19 15:38:55 2584

原创 深入理解 MySQL 主键和唯一(unique)索引

1、主键和唯一索引的区别  1.1 主键一定时唯一性索引,唯一性索引并不一定是主键  1.2 一个表中可以有多个唯一性索引,但只能有一个主键  1.3 主键不允许有空值,而唯一索引允许有空值  1.4 主键可以被其他字段作外键引用,而唯一性索引不能...

2022-03-19 14:26:52 5855

原创 GDB调试 —— 史上最完整 GDB 指令大全

目录   1、GDB下载   2、GDB编译   3、GDB下载   4、GDB下载   5、GDB下载   6、GDB下载1、GDB下载CentOS$ yum -y install gdbUbuntuapt-get install gdb2、GDB 编译-g示例gcc -g program.c -o program 3、GDB 启动、退出启动语法: gdb + 可执行文件gdb program 退出quit/q使用帮助:help

2022-03-18 18:08:52 6573 1

原创 HTTP/1.1 协议 Expect: 100 -continue 分析与禁用

1、基础知识背景1.1 “Expect: 100-continue”的是什么:  HTTP/1.1 协议里,设计 100 - continue HTTP 状态码的,目的是为了在 client 发送 Request Message 之前, HTTP/1.1 协议允许 client 判定服务器是否愿意 接受 client 的消息主体(基于 Request Message )。  如果 client 预期等待 100-continue 应答,那么它发送的请求必须包含一个 Expect: 100 -conti

2022-03-17 21:11:43 4597

原创 Linux 环境 VIM编辑器 配置 自动显示行号、回车自动缩进

1、VIM   VIM 是Linux环境下程序员,必须要熟悉的系统自带的编辑器,虽然和主流的 VS 等编辑器相比,VIM对新手并不是那么的友好,但是VIM绝对是能在某些场合排的上用场的。笔者在大学时期学习 Linux 编程时,还是花了很多时间在VIM编辑器的使用上的。2、设置 永久 显示行号两种配置方式/etc/vimrc 是系统范围的初始化配置或者~/.vimrc 个人的vim初始化配置方法是一样的下面介绍 第二种1、终端输入 vim ~/.vimrc2、在打开的配置文件

2022-03-17 14:14:09 3707

原创 CentOS 环境 MySQL 开启 慢查询 日志

1、修改my.cnfsudo vim /etc/my.cnf添加或配置 [mysqld] slow_query_log = 1 slow_query_log_file = /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.log long_query_time = 1 log_queries_not_using_indexes = 1分析slow_query_log = 1  表示开启慢查询,0

2022-03-17 14:03:46 1089

原创 剖析 HTTP 响应报文

1、HTTP 响应报文格式HTTP/1.1 200 OKBdpagetype: 1Bdqid: 0xf3c9743300024ee4Cache-Control: privateConnection: keep-aliveContent-Encoding: gzipContent-Type: text/html;charset=utf-8Date: Fri, 26 Feb 2021 08:44:35 GMTExpires: Fri, 26 Feb 2021 08:44:35 GMTSer

2022-03-17 10:43:30 798

原创 剖析 HTTP 请求报文

1、HTTP 请求报文格式示例:GET / HTTP/1.1Host: www.baidu.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8Accept-Language: zh-CN,zh;q=0.

2022-03-17 10:31:13 431

原创 剖析 基于HTTP 协议的web服务器

1、开门见山 —— B/S结构模型  交互过程  1.1 通常用户使用 浏览器(也可以使用客户端软件)和服务器进行通信,在浏览器中键入"域名" 或 “IP地址:端口”。  1.2 浏览器则先将你的域名解析成相应的 IP 地址或者直接根据你的IP地址向对应的服务器发送一个 HTTP 请求。  1.3 这一过程首先要通过 TCP 协议的三次握手建立与目标 Web 服务器的连接,然后 HTTP 协议生成针对目标 Web服务器的HTTP请求报文,通过 TCP、IP等协议发送到目标 Web 服务器上。2、

2022-03-17 09:55:10 3821 1

原创 剖析 TCP协议内部结构

1、TCP协议2、组成结构分析1、源端口号:发送方端口号2、目的端口号:接收方端口号3、序列号:报文段的数据的第一个字节的序号3、确认序号:期望收到对方下一个报文段的第一个数据字节的序号4、首部长度(数据偏移):TCP报文段的数据起始距离TCP报文段的起始处有多远,即首部长度6、保留:保留不用是置为07、紧急URG:此置为 1 ,紧急指针字段才有效,它告诉系统此报文段中有紧急数据,应尽快传送8、确认位ACK:此置为 1,确认号字段才有效,TCP规定,在连接建立后所有传达的报文段都必须把

2022-03-17 09:05:22 4657

原创 Linux readv/writev 函数

1、函数原型#include <sys/uio.h>ssize_t readv(int filedes, const struct iovec *iov, int iovcnt);ssize_t writev(int filedes, const struct iovec *iov, int iovcnt);返回值: 成功:读入或写出的字节数 失败:-1作用: readv和writev允许 单个系统调用 读入或写出 自一个或多个缓冲区; 分散读和集中写2、函数参数 i

2022-03-16 23:08:22 593

原创 Linux 系统调用

1、系统调用2、系统调用具有以下功能和特性:  操作系统为我们管理硬件,⽤户态进程不用直接与硬件设备打交道。极⼤地提高系统的安全性。如果用户态进程直接与硬件设备打交道,会产⽣安全隐患,可能引起系统崩溃。  使用户程序具有可移植性。用户程序与具体的硬件已经解耦合并用接⼝(api)代替了,不会有紧密的关系,便于在不同系统间移植。...

2022-03-16 22:57:52 327

原创 LeetCode 103 二叉树的锯齿形层序遍历

1、题目描述给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。2、思路   2.1 使用 双端队列 对一层进行存储   2.2 设定一个 isOrderLeft 标记为class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vec

2022-03-15 14:50:58 7303

原创 C++正则表达式 指定字符 分割字符串

/*按制定字符,分割字符串*/std::vector<std::string> split(const std::string& input, \ const std::string& regex){ std :: regex patten(regex); std :: sregex_token_iterator first{input.begin(), \

2022-03-15 09:37:00 1865

原创 LeetCode 25 K个一组反转链表

1、题目描述给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:  你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。2、思路将链表依次拆分,通过递归从链表尾部开始翻转class Solution {public://翻转单链表,//参数prev:即翻转后的尾节点 -> next 指向

2022-03-14 11:44:36 596

原创 LeetCode 21 合并两个有序链表

1、题目描述示例1  输入:l1 = [1,2,4], l2 = [1,3,4]  输出:[1,1,2,3,4,4]示例 2:  输入:l1 = [], l2 = []  输出:[]示例 3:  输入:l1 = [], l2 = [0]  输出:[0]2、思路class Solution {public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { if(!list1 || !list

2022-03-14 10:37:20 732

原创 LeetCode 102 二叉树的层序遍历

1、题目描述输入:root = [3,9,20,null,null,15,7]  输出:[[3],[9,20],[15,7]]示例 2:  输入:root = [1]  输出:[[1]]示例 3:  输入:root = []  输出:[]2、思路  使用 队列 缓存每一层的节点  每次 遍历队列,将出队的节点的左右子树入队(如果存在的话)class Solution {public: vector<vector<int>> levelOrder(T

2022-03-14 10:16:15 1244

原创 LeetCode 19 删除链表的倒数第 N 个节点

1、题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:  输入:head = [1,2,3,4,5], n = 2  输出:[1,2,3,5]示例 2:  输入:head = [1], n = 1  输出:[]示例 3:  输入:head = [1,2], n = 1  输出:[1]2、思路  递归  从尾节点开始,计数,计数到 n 时,跳过第 n 个节点,直接返回倒数 n - 1 节点class Solution {public: L

2022-03-14 10:07:44 613

原创 CentOS 找不到 #include <mysql/mysql.h>

1、问题描述../code/pool/sqlconnpool.h:8:10: 致命错误:mysql/mysql.h:没有那个文件或目录 #include <mysql/mysql.h> ^~~~~~~~~~~~~~~2、解决方法这是因为缺少了 mysql-community-devel.x86_64安装 mysql-community-devel.x86_64 就解决了[dzl@localhost win-win-C++11]$ sudo yum instal

2022-03-12 20:45:58 2319

原创 Linux 配置GitHub秘钥 并上传

1、生成秘钥[dzl@localhost packServer]$ ssh-keygen -t rsa -C "GitHub上的邮箱"Generating public/private rsa key pair.Enter file in which to save the key (/home/dzl/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your ident

2022-03-12 17:31:29 1213

原创 CentOS8 按照 MySQL5.7———错误:没有任何匹配: mysql-community-server

问题[dzl@localhost ~]$ sudo yum -y install mysql-community-server上次元数据过期检查:0:32:16 前,执行于 2022年03月12日 星期六 16时08分29秒。所有的匹配结果均已经被参数的模块化过滤条件筛除: mysql-community-server错误:没有任何匹配: mysql-community-server解决方法1、执行 yum -y install mysql-community-server 之前先禁用默认的

2022-03-12 16:50:09 5238 4

原创 CentOS7 彻底卸载 MySQL5.7 (保姆级)

1、关闭MySQL服务[root@VM_0_8_centos ~]# systemctl stop mysqld2、使用 rpm 命令查看已安装的安装包[root@VM_0_8_centos ~]# rpm -qa|grep mysqlmysql-community-libs-5.7.29-1.el7.x86_64mysql-community-common-5.7.29-1.el7.x86_64mysql-community-client-5.7.29-1.el7.x86_64mysql-

2022-03-12 15:22:51 3146

原创 LeetCode 118 杨辉三角

1、题目描述  给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:  输入: numRows = 5  输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:  输入: numRows = 1  输出: [[1]]2、思路class Solution {public: vector<vector<int>> generat

2022-03-12 15:12:55 51

原创 LeetCode 566 重塑矩阵

1、题目描述  在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:  输入:mat = [[1,2],[

2022-03-12 15:12:25 60

原创 计算机网络 —— 面试八股文

1、OSI七层、TCP/IP四层的关系和区别1、OSI七层从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层2、TCP四次从下往上依次是:网络接口层、网络层、传输层、应用层特点: 应用层协议:HTTP、FTP、SMTP、POP3 传输层协议:TCP、UDP 网络处协议:IP/IPv6 网络接口层协议:ARP地址解析协议 层与层之间相互独立又相互依靠 上层依赖于下层、下层为上层提供服务TCP/IP四层模型是 OSI 七层的简化版,

2022-03-12 15:12:01 5808

原创 LeetCode 24 两两交换链表中的节点

1、题目描述  给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:  输入:head = [1,2,3,4]  输出:[2,1,4,3]示例 2:  输入:head = []  输出:[]示例 3:  输入:head = [1]  输出:[1]2、思路  递归,每两个节点进行一次反转class Solution {public: //思路,对链表,每 2 个节点进行一次翻转

2022-03-11 14:44:26 167

原创 LeetCode 26 删除有序数组中的重复项(空间复杂度O(1))

1、题目描述  给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。  将最终结果插入 nums 的前 k 个位置后返回 k 。  不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成

2022-03-11 14:38:13 667

原创 LeetCode 88 合并两个有序数组

1、题目描述  给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:  输入:nums1

2022-03-11 14:29:26 66

原创 LeetCode 350 两个数组的交集 II

1、题目描述给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。示例 1:  输入:nums1 = [1,2,2,1], nums2 = [2,2]  输出:[2,2]示例 2:  输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]  输出:[4,9]2、思路  使用 map 键值容器  保存 nums

2022-03-11 14:19:45 54

原创 LeetCode 121 买卖股票的最佳时机

1、题目描述  给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:  输入:[7,1,5,3,6,4]  输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。

2022-03-11 14:11:36 65

原创 LeetCode 9 回文数

1、题目描述  给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:  输入:x = 121  输出:true示例 2:  输入:x = -121  输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:  输入:x = 10  输出:false解释:从右向左读, 为 0

2022-03-11 14:00:53 189

原创 LeetCode 94 二叉树中序遍历

1、思路理解中序遍历的思想:   左根右class Solution {public: void function(TreeNode* root, vector<int>&nums){ if(!root){ return; } //左孩子 function(root -> left,nums); nums.push_back(root -> val);

2022-03-11 12:05:59 224

原创 LeetCode 215 数组中第 K 个最大元素

1、题目描述  给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:  输入: [3,2,1,5,6,4] 和 k = 2  输出: 5示例 2:  输入: [3,2,3,1,2,4,5,5,6] 和 k = 4  输出: 42、思路2.1使用基本排序算法排序后 返回第 数组长度 - k 个元素class Solution {public: //先排序:快速排序

2022-03-11 12:01:08 660

空空如也

空空如也

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

TA关注的人

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