自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 macbook m1 docker中使用go

但是,执行 go version时会报错:qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory。已经有一个centos8的镜像,本来打算在centos8中安装go。

2023-08-25 22:50:20 853

原创 c++回调函数

回调函数最清晰的理解~~

2023-03-25 19:39:12 185

原创 回溯算法(leetcode93、22)

回溯算法

2023-03-23 22:34:02 308

原创 归并排序-leetcode148

归并排序--链表

2023-03-19 15:29:47 111

原创 mac下ssh连接docker使用centos

使用docker代替虚拟机中安装centos系统,记录详细配置步骤及docker简单入门

2023-01-15 20:25:52 1277

原创 快速排序算法(leetcode题解分析)

快排算法leetcode题解代码分析

2023-01-01 16:31:52 257

原创 大小端转换

计算机中是以字节为基本单位,每个地址单元都对应着一个字节,一个字节为8bit。但是在c语言中,除了8bit的char之外,还有16bit的short型…存在如何将多个字节安排的问题,因此就出现了大端存储模式和小端存储模式。小端:高数据位存在内存的高地址位置;在小端机器中,多字节数据类型的二进制存储的最后一个字节首先存储。大端和小端是存储多字节数据类型(int、float等)的两种方式。大端:高数据位存在内存的低地址位置;在大端机器中首先存储第一个字节。假设整数被存储为4字节。从左往右是低地址到高地址。

2022-10-30 17:24:34 3163

原创 rabbitmq如何保证消息的可靠传输

rabbitmq消息可靠传输

2022-10-23 20:24:50 874

原创 键入网址后发生了什么

一个数据包在网络中的心路历程。

2022-10-03 21:02:02 695

原创 回溯法实现全排列(leetcode46)

回溯算法实现全排列leetcode

2022-09-12 15:59:42 280

原创 开源日志库log4cpp & muduo

c++开源日志库log4cpp、muduo

2022-09-11 22:55:14 584

原创 c++备忘录

c++代码中省略类的继承方式

2022-09-11 16:05:43 227

原创 Linux安装log4cpp

log4cpp安装及问题解决

2022-09-03 23:04:35 464

原创 MySQL的索引优化

MySQL的索引优化

2022-09-03 16:08:58 198

原创 MySQL常见的索引模型

索引是为了提高数据的查询效率,像书的目录一样。

2022-08-28 21:41:20 405

原创 c++ 优先队列(priority_queue)

c++的优先队列

2022-07-02 15:23:20 365

原创 计算机内存数值存储方式&进制

进制概念进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制,x进制表示某一位置上的数运算时是逢x进一位。十进制是逢十进一、十六进制是逢十六进一、二进制是逢二进一。各进制数表示八进制是逢8进1,所以到8的时候向前进一位,变成10;十六进制10-15用A-F表示,逢16向前进一位,即为10(所有进制都是从最小0开始)64进制,所用的字符是0-9,a-z,A-Z,+,/“0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS

2022-05-29 00:32:06 3072

原创 虚拟内存技术

虚拟内存是一个非常重要的概念,涉及到内存相关,先从内存的基础知识学起来~内存1. 什么是内存?内存的作用?背景:我们的数据、程序都是存放在硬盘中(外存),程序是在CPU中执行,外存是一种非常慢速的设备,CPU又是非常快速的设备,如果CPU需要处理的数据/程序直接从外存中取的话,会有大量的等待时间,等待存取操作的完成,所以引入了内存。定义:内存是用于存放数据的硬件,是一种高速的存储设备,程序执行前需要先放到内存中才能被CPU处理。(CPU直接从内存中取数据,这样就可以解决CPU与硬盘间

2022-01-22 17:33:29 1509

原创 MySQL连接池

1. 池化技术如果没有池的话,我们需要多次的创建和释放对象;如果放在池中可以统一的创建和销毁。池化技术能够减少资源对象的创建次数,提高程序的响应性能,特别是在高并发下这种提高更加明显。使用池化技术缓存的资源对象有如下共同特点:对象创建时间长 对象创建需要大量资源 对象创建后可被重复使用常见的线程池、内存池、连接池、对象池都具有以上的共同特点。线程池和连接池区别线程池:主动操作,主动执行任务连接池:被动操作(类似内存池),池的对象被任务获取,执行完任务后归还2. 数据库连

2022-01-15 20:06:17 1155

原创 c++程序调用c函数(extern “C“的使用)

一、概念c++程序调用c函数,即为在xx.cpp文件中调用在func.c文件中实现的函数extern "C"的主要作用是为了实现c++代码能够调用c语言代码。加上extern "C"后,这部分代码编译器按c语言的方式进行编译和链接,而不是c++的方式。二、原理由于c++中需要支持函数重载,所以c和c++中对同一个函数经过编译后生成的函数名是不同的,这就会导致一个问题,如果在c++中调用一个使用c语言编写模块中的某个函数,c++是按照c++的名称修饰方式来查找并链接这个函数,就会发生链接错误。

2022-01-15 00:17:54 7553

原创 树相关题目总结

1. 二叉树的中序遍历94. 二叉树的中序遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/中序遍历:遍历节点顺序为 左根右使用栈来存储节点步骤:1)遍历树的左节点-->入栈--> 一直找到最后一层的节点,该值即为中序遍历的第一个值2)获取该节点的右节点重复上述步骤/** * Definition for a binary tree node. * struct TreeNode {

2022-01-09 22:18:05 400

原创 二分法问题总结

1. leetcode33 搜索旋转排序数组解题:( 时间复杂度O(logN),空间复杂度O(1) )二分法,找到中间值,不断缩小搜索范围,下一搜索范围是中间值左侧或右侧旋转排序数组的特点是局部有序,中间值左/右,有一侧一定是有序的,通过有序区间可以判断出target值是否在该区间内,如果不在,则在另外区间---> 这样就缩小了搜索范围该题目需要注意数组中元素个数为0或1。class Solution {public: int search(vector<

2022-01-02 23:46:45 572

原创 快速排序法

流程:1. 先确定一个基准位pivot,一般选最左边元素2. 把比基准位值小的元素放到基准位左边,比基准位大的元素放到基准位右边3. 对左右区间分别进行递归排序,重复上述步骤#include <iostream>#include <vector>using namespace std;void quick_sort(vector<int>& arr, int low, int high) { int i, j, pivot; //

2022-01-02 15:56:20 467

原创 刷题指南-链表类问题总结

1、链表类问题中使用while循环,循环条件怎么定看是否需要处理最后一个结点,如果需要的话,即while(node!=nullptr){} 如果要使用node->next!=nullptr来做判断,前面一定要有node!=nullptr,只有node不为空,才能取到node->next;否则会报错2. 从中间将链表拆成两个(找链表中点的方法)使用快慢指针ListNode* split(ListNode* head) { ListNode* fast = head;

2021-12-25 19:44:03 648

原创 mysql的auto_increment

auto_increment作用:用来指定一个自增的初始值; 如果不指定值默认初始值为1建表语句插入数据插入第一个数据可以看到id是从2开始自增主键不能保证连续递增在空表执行insert into aa values(null,1,1); 插入一条数据后,再执行show create table命令表定义中AUTO_INCREMENT=3,表示下一次插入数据时,如果要自动生成自增值,会生成id=3。自增值保存在表结构定义里。实际上,表结构定义存放在后缀名为.frm的文件中,但

2021-12-11 17:55:34 12652 2

原创 最长公共子序列(leetcode1143题)

题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。解题要点该题使用动态规划的方法,要先找出状态转移方程画图如下所示,如果两个字符串 str1=“abcde”, str2=“ace”,将两个字符串写到表格的行列中1)每个字符和空字符公共长度为02)从左上角开始,如果行列两个字符相同,到该字符为止的最长公共子序列=左上角数字+1;如果不同,到该字符为止的公共子序列=max(左,上) + 1class Sol

2021-12-03 22:28:54 113

原创 堆排序(heapsort)

堆是一种数据结构,分为大根堆(大顶堆)、小根堆(小顶堆)这种数据结构需要满足下面2个特点:(1)是一棵完全二叉树(2)根节点的值大于子节点的值(大根堆)/ 根节点的值小于子节点的值(小根堆)即所有父节点的值都大于/小于子节点的值完全二叉树:从上到下,从左到右依次填充。分为两种:1)最后一层没有满,最后一层的结点都要在左边 2)最后一层满了,全满才行,即完全二叉树堆上各结点下标的关系1)如下图所示,跟结点下标从0开始,假设某个结点下标为iparent = (i-1)/2 根节点

2021-12-01 21:00:33 796

原创 IO多路复用(select、poll、epoll)

TCP服务器可以用下面图示来解释:迎宾相当于listenfd,一直在监听客户端的请求,当有客户到来,将客户指引给大堂内的服务员,此时即建立了连接,大堂服务员相当于connfd,之后和当前客户端的所有交互都是connfd进行。建立连接的三次握手是在协议栈中完成的,不发生在服务端的任何api中,不受应用程序控制IO多路复用IO多路复用的三种实现方式:select,poll,epollselect函数定义:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的

2021-11-28 17:13:32 1724

原创 【mysql】insert select 同一个表

最近遇到的一个mysql的问题,记录下来分享给大家~建一个测试表,并插入数据# 建表语句mysql> show create table test;+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------

2021-11-27 16:56:46 1648

原创 c++11 右值引用和移动语义

c++11引入了右值引用和移动语义,可以避免无谓的复制,提高了程序性能。左值表达式结束后仍然存在的持久对象,可对表达式用&取地址;变量,可以放在=的左边(也可以放右边)。常见的左值:变量、函数或数据成员的名字返回左值引用的表达式,如++x、x=1、cout << ’ ’字符串字面量如 “hello world”右值表达式结束时就不存在的临时对象,不可用&取地址,临时对象;只能放在=右边,没有名称无法对其进行赋值。常见的右值:返回非引用类型的表达式,如 x

2021-11-24 21:57:56 544

原创 c++11 智能指针

一、智能指针c++程序设计中经常会用堆内存,程序员要自己管理内存的申请和释放。使用原始指针,容易造成堆内存泄漏(忘记释放),二次释放;使用智能指针能更好的管理堆内存。c++中四个智能指针:auto_ptr,unique_ptr,shared_ptr,weak_ptr,auto_ptr已被c++11弃用头文件 #include <memory>1. shared_ptr(共享的智能指针)1)定义:允许多个指针指向同一个对象,内部维护一个计数器,无论何时拷贝一个shared_ptr,计数器

2021-11-22 23:25:17 4320 1

原创 红黑树知识总结

为了解决二叉树多次插入新结点而导致的不平衡–> 诞生了红黑树一、红黑树的性质(红黑树是一种自平衡的二叉查找树)每个结点是红的或黑的根结点是黑的每个叶子结点是黑的如果一个结点是红的,它的两个儿子都是黑的对于每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点红黑树中有key,value。结点上我们可以看到的数字是key,value一般不会显示出来// 定义红黑树的结点typedef int KEY_TYPE;typedef struct _rbtree_node {

2021-11-20 21:33:27 503

原创 B树与B+树

一、内存与磁盘区别内存:速度快,断电以后数据消失磁盘:速度慢,数据持久存储大小CPU < 内存 < 磁盘CPU可以通过CPU指令访问内存,但不可以访问磁盘二、B树特征:多叉树,叉的个数不限,是平衡的性质:一棵M阶B树,满足以下条件B树是一棵多路平衡的查找树,每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中所有关键字都小于它,右子树中的所有关键字都大于它。1)每个结点至多拥有M棵子树 (结点有5个元素/关键字,最多拥有6棵子树)2)根结点至少拥有两棵子

2021-11-20 15:41:24 455

原创 ubuntu16.04卸载并重新安装mysql

ubuntu卸载并重新安装mysql查了好多资料,终于找到一个好用的方法,分享给大家,希望可以帮到你~sudo dpkg -r mysql-client-5.7sudo dpkg -r mysql-server-5.7sudo dpkg -r libmysqlclient20:i386sudo dpkg -r libmysqlclient20:amd64sudo dpkg -r libmysqlclient18:amd64sudo dpkg -r mysql-common在上述命令运行过程

2021-02-28 18:46:13 247

原创 vscode编辑Makefile文件需要注意

vscode编辑Makefile文件需要注意使用vscode默认配置,打开文件时会将其中tab自动转成空格。Makefile中命令行必须是tab开头,不能使用空格,会报错。需要修改vscode配置使其不对tab进行转换:preferences->settings->Editor:Insert spaces不勾选vscode显示隐藏的tab和空格:settings配置中操作1)修改配置项renderControlCharacters 勾选2)修改配置项renderWhitespac

2020-11-22 00:05:06 2011

原创 Mac vscode leetcode插件登录失败

如果使用中文版leetcode选择小地球–>启用中国版–> 直接输入账号密码即可登录如果使用英文版leetcode英文版账号直接登录会失败,解决办法:安装node.js 官网直接下载安装即可https://nodejs.org/zh-cn/安装leetcode-clihttps://skygragon.github.io/leetcode-cli/ins...

2020-04-13 21:20:56 2205

原创 Macbook vscode安装cpplint

cpplint是Google开发的一个C++代码风格检查工具,如果是遵循google code style的,可以使用cpplint作为代码规范的一个检查工具。在vscode中安装cpplint方法如下(Mac)打开macbook自带终端sudo easy_install cpplint在vscode插件中搜索cpplint并安装即可...

2019-06-01 17:40:33 2446

原创 c++中什么时候使用.hpp文件

分文件编写类模板类模板的声明和定义要写在一个.hpp文件中,声明和定义不可以分开,因为分文件的话,main.cpp中只引入.h,在类模板进行二次编译的时候,无法找到类的定义,会出错。所以要将其声明和定义放到一个头文件中。类模板必须要写在.hpp文件中。...

2018-10-01 14:26:37 6130

原创 c++中为什么函数形参多用引用

将函数形参定义为引用的好处:1)引用不产生新的变量,减少形参与实参传递时的开销2)如果希望实参随形参改变,用一般引用;如果不希望实参随形参改变,用常引用...

2018-07-29 21:51:39 2141

空空如也

空空如也

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

TA关注的人

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