自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【剑指Offer】圆圈中最后剩下的数字

【题目描述】0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。【示例】输入: n = 5, m = 3输出: 3输入: n = 10, m = 17输出: 2【实现思路】【第一轮后面的数字应该是[0, 1, 2 ,3 ,4],手误打错了

2022-03-10 21:49:16 113

原创 【LeetCode】5. 最长回文子串

【题目描述】给你一个字符串 s,找到 s 中最长的回文子串。【示例】输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。【实现思路】dp的定义二维dp题,如果定义dp[ i ][ j ] 的意义是i~j中最长回文子串的大小,那么在此基础上 下一次dp时,无法确定最长子串的大小,因此我们用二维bool数组,dp意义是dp[ i ][ j ] 表示 i~j是否是回文

2022-03-10 21:09:16 111

原创 【LeetCode】3.无重复字符的最长子串

题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。题目样例:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路:滑动窗口的思想,先把窗口扩充到最大(右指针指向的字符在窗口出现过),然后计算窗口大小,滑动左指针;代码实现:int lengthOfLongestSubstri

2022-03-10 20:50:56 116

原创 删除排序数组中的重复项 II

题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 不需要考虑数组中超出新长度后面的元素。思路:先把前两个赋值到0,1的

2022-03-08 12:01:46 90

原创 【自我修养】编译、链接底层做了些什么

知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如何表达!文章目录编译预编译(预处理)编译汇编链接编译器做了些什么链接器静态链接和动态链接编译我们以hello.c举例子#include<stdio.h>//这是一些注释int main(){ printf("Hello World\n"); return 0;}预编译(预处理)gcc -E hello.c -o hello.i这一阶段,主要.

2022-02-25 23:24:49 177

原创 【很干】从发展角度深入进程线程

知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如何表达!文章目录单进程/单线程多进程多线程通信进程间线程间进程线程是一个很容易被问到的面试题,在面对这种题时我们应该怎么答呢?进程时资源分配的基本单位,线程是资源调度的基本单位?漏!大漏特漏!我们应该试着从这些方面去答:单线程、多线程(又分内核级线程和用户级线程)单进程、多进程(TLB失效)对于互斥资源我们还要进行 线程/进程 间互斥操作线程/进程 间的同步操作.

2022-02-24 16:09:33 132

原创 【很干】搞懂阻塞非阻塞、同步异步、IO多路复用的同步还是异步

知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如何表达!典型的一次IO分为两阶段:数据准备 和 数据读写 阶段数据准备阶段:根据系统IO的操作状态分为:阻塞:卡在接受函数,直到接收数据完成非阻塞:调用接受函数后直接返回,不需要等待数据读写阶段:根据数据应用程序和内核的交互方式分为:同步:等待数据接收完成才能进入下一个业务逻辑异步:不需要等待,可以处理别的东西,当数据接收完成操作系统通知我们去处理这一段数据.

2022-02-22 16:19:19 248

原创 【很干】终于有一篇把TCP、UDP特性搞明白了

文章目录初衷TCP/UDP报文结构TCP报文结构UDP报文结构何为面向字节流/面向报文TCP和UDP的不同TCP特性初衷陆陆续续面了几家公司,发现面试官问的不少问题我明明知道,可是我根本不知道怎么讲出来、讲准确,复习刷面经时看到许多问题我都默认我会然后带过,这就使得自己白白浪费了许多次面试机会,因此开始写文章记录并且用自己的话表达。之前有看到一句很喜欢的话,分享给大家,共勉。知识的学习在于点滴记录,坚持不懈;知识的学习要有深度和广度,不能只流于表面,坐井观天;知识要善于总结,不仅能够理解,更知道如

2022-02-21 23:50:41 292

原创 【刷题】leetcode.40 组合问题三

点击直达题目描述:给定一个数组 candidates 和一个目标数 target ,找出candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,2,1,2], tar

2021-11-08 21:11:36 81

原创 【C++】深入掌握智能指针

智能指针介绍学习C语言的人一直在接触裸指针,裸指针有很多不好用的地方(对于本菜鸡来讲),比如有以下原因:资源忘记释放,导致资源泄露同一资源释放多次,程序崩溃智能指针的出现就很好的解决了上面的问题。C++11库里面,提供了带引用计数的智能指针 和 不带引用计数的智能指针,这篇文章主要介绍他们的原理和应用和场景,包括auto_ptr, scoped_ptr, unique_ptr, shared_ptr, weak_ptr。自己实现智能指针为了更好理解智能指针的原理,我们最好自己实现一个简单地

2021-11-06 22:40:39 308

原创 C++实现 线程互斥 和 线程通信(实战)

文章目录线程互斥mutex学习使用基于CAS的原子类型线程同步通信条件变量condition_variable生产者消费者模型轮流打印abc线程互斥多线程环境中运行的代码段我们需要考虑竞态条件,如果存在竞态条件,那这段代码就需要进行互斥来避免竞态产生。mutex举个例子三个窗口一起卖100张票,各个窗口对于临界资源tickets需要互斥访问#include <iostream>using namespace std;#include <string>#include

2021-11-06 20:12:52 307

原创 【线程】你应该知道的线程

文章目录进程和线程多线程线程的功能线程状态线程同步***线程分类用户级和内核级线程**用户级线程**内核级线程混合方法Linux的进程和线程管理Linux任务进程执行状态Linux线程进程和线程多线程多线程是指操作系统在单个进程内支持多个并发执行路径的能力。在多线程环境中,进程定义为资源分配单元和一个保护单元。与进程相关联的有:容纳进程映像的虚拟地址空间对处理器、其他进程、文件、IO资源的受保护访问一个进程可能有一或多个线程,每个线程有一个线程执行状态(运行、就绪等)未运行时保存的

2021-10-18 21:51:23 69

原创 【操作系统】小白看过来!进程的基本概念 进程控制块 进程状态转换

进程进程定义是:一个正在执行的程序程序(书上说的是进程)有两个基本元素,一是程序代码,二是与代码相关的数据集。当处理器开始执行这个程序代码,就有了新的元素:标识符:身份证状态:正在执行就是处于运行态优先级程序计数器:存储下一条指令地址内存指针:包括程序代码和数据集的指针,以及 与其他进程 共享内存块的指针上下文:进程执行时,处理器的寄存器中的数据I/O状态信息 记账信息(处理器时间总和啊等等)以上!!这么些元素我们统一管理存放在 PCB 进程控制块 里!

2021-10-18 16:17:40 556

原创 【MySQL】索引:change buffer

文章目录前言查询过程更新过程change buffer使用场景前言假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';由于身份证号字段比较大,不建议你把身份证号当做主键,那么现在你有两个选择,要么给 id_card 字段创建唯一索引,要么创建一个普通索引。如

2021-09-03 01:16:49 184

原创 【MySQL】InnoDB索引模型案例

文章目录前言覆盖索引最左前缀原则索引下推前言在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句:create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;insert into T

2021-09-03 00:38:13 70

原创 【MySQL】InnoDB索引模型

文章目录InnoDB索引模型索引维护小结InnoDB索引模型在 InnoDB 中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。又因为前面我们提到的,InnoDB 使用了 B+ 树索引模型,所以数据都是存储在 B+ 树中的。这里是建表语句mysql> create table T(id int primary key, k int not null, name varchar(16),index (k))engine=InnoDB;表中 R1~R5 的 (I

2021-09-03 00:03:13 102

原创 【MySQL】索引常见数据结构

文章目录索引常见数据结构哈希表有序数组二叉搜索树索引常见数据结构常见的三种有:哈希表、有序数组、搜索树哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的键即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表。图中,User2 和 Use

2021-09-02 23:43:45 180

原创 CentOs7安装mysql-server和libmysqlclient-dev

第一步:安装从网上下载文件的wget命令yum -y install wget1第二步:下载mysql的repo源wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 1第三步:安装mysql-community-release-el7-5.noarch.rpm包[root@master ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

2021-08-31 15:49:19 6407 1

原创 C++11新特性 : 右值引用 & 移动语义 & 完美转发

文章目录右值引用什么是左值和右值对比左值、右值universal references 未定的引用类型移动语义配合右值引用避免深拷贝forward完美转发参考文献右值引用什么是左值和右值左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。所有的具名变量或对象都是左值,而右值不具名。在C++11中,右值由两个概念组成:纯右值。比如非引用返回的临时变量、运算表达式产生的临时变量、原是字面

2021-08-22 20:43:21 192

原创 HTTPS比HTTP到底安全到哪儿了?

文章目录HTTPS比HTTP厉害到哪儿了?HTTPS如何实现安全机制的对称加密非对称加密CA证书机构安全实现参考文献HTTPS比HTTP厉害到哪儿了?HTTPS 是身披 SSL 外壳的 HTTP通常HTTP直接和TCP通信。当使用SSL时,演变成先和SSL通信,再由SSL和TCP通信。简言之,所谓的HTTPS,其实就是身披SSL协议这层外壳的HTTP。在采用SSL后,HTTP就拥有了HTTPS的加密、整数和完整性保护这些功能。HTTPS如何实现安全机制的须知:对称加密非对称加密CA证书

2021-08-22 03:20:31 277

原创 单例模式:线程安全的饿汉、懒汉还搞不懂?

文章目录单例模式饿汉式懒汉式懒汉加强版!!!!!单例模式单例模式意思是:一个类不论创建多少次,永远都只能得到该类的一个实例对象,日志模块通常这么设计。单例模式通常有两种,饿汉式和懒汉式,我们一一来讲解。饿汉式见名知意,看见饭跟没见过吃的似的,生怕自己吃不到。为了限制对象的构造个数,我们就需要限制构造函数的访问方式,同时将拷贝构造和赋值函数delete掉。构造函数私有化定义一个唯一的类对象完成获取类的唯一实例对象的接口方法完整实现如下class Singleton{public:

2021-08-21 20:46:47 190

原创 基于muduo库的聊天集群项目(C++)

文章目录项目概述数据模块表的设计user表friend表allGroup表groupUser表offlineMessage表通信格式网络和业务模块网络模块业务模块注册业务登陆业务添加好友一对一聊天创建群聊加入群聊群聊业务注销业务服务器集群跨服务器通信思考参考文献作者:borange时间:2021/8/9 17:27开发环境:Ubuntu VSCode编译器:g++数据库:MySQL编程语言:C++GitHub链接项目概述完成一个类似于QQ的项目,主要功能有注册、登陆、添加好友、创建群组、加

2021-08-09 17:29:09 911

原创 数据交换好帮手 —— JSON介绍

前言后面进行的一个项目需要JSON,用在网络通信中传递数据JSON介绍Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。优秀的第三方库JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。具有以下特点直观的语法整个代码由一个头文件组成

2021-08-08 17:15:27 216

原创 muduo的入门使用

为什么要学习使用muduo库呢?muduo网络库的编程很容易,要实现基于muduo网络库的服务器和客户端程序,只需要简单的组合 TcpServer和TcpClient就可以。例如在服务器端,网络模块我们只需要做这几件事:1.组合TcpServer对象2.创建EventLoop事件循环对象的指针3.明确TcpServer构造函数需要什么参数,输出ChatServer的构造函数4.在当前服务器类的构造函数当中,注册处理连接的回调函数和处理读写事件的回调函数5.设置合适的服务端线程

2021-08-08 16:57:03 996

原创 统计文本中重复次数最多的前1000的单词,并按次数从高到低输出,并保存到另一个文本中

对于实现这个项目,我在做的过程中出现了许许多多的bug(本人十分小白),在这里我想在展示如何实现的过程中提出来,希望能帮助到和我一起学习的小伙伴!在正式开始实现功能之前,我们需要定义两个结构体(个人做法,欢迎有其他做法的留言我们一起讨论进步); typedef struct Word { char word[20]; //存单词 int count; //记录该单词出现的次数 }...

2020-04-15 18:37:15 885

原创 浅谈作用域(可见性)、生存期和大小端的概念

作用域(可见性)和生存期(生命期)作用域指标识符能够被使用的范围;只有在作用域内标识符才可以被使用此阶段针对的是编译和链接过程1)函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域。2)文件作用域也称全局作用域。定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束。文件中定义的全局变量和函数都具有文件作用域。生存期生...

2020-02-12 23:56:04 224

空空如也

空空如也

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

TA关注的人

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