自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis篇三:在Ubuntu下安装Redis

Redis也是一个客户端-服务器结构的程序(MySQL也是)。自带了命令行客户端(也就是上面所展示的那样)图形化界面客户端(桌面程序、web程序)基于redis的api自行开发的客户端在之前我们说到的redis快,是相较于MySQL这样的关系型数据库而言的,如果是和内存中的操作变量相比,就是慢了。但是还需要根据场景来判断是否需要redis。比如说在一个单机中,当需要存储用户id和与之对应的年龄,那么是直接在内存中使用unordered_map呢?还是使用redis呢?

2024-08-23 20:28:13 802 11

原创 Redis篇二:特性介绍及应用场景

几乎所有的编程语⾔都提供了类似字典的功能,例如 C++ 里的 map、Java 里的 map、Python 里的 dict 等,类似于这种组织数据的方式叫做基于键值对的方式,与很多键值对数据库不同的是,Redis 中的值不仅可以是字符串,而且还可以是具体的数据结构,这样不仅能便于在许多应用场景的开发,同时也能提⾼开发效率。我们现在已经知道Redis是在内存种存放数据的,但是我们又知道内存的数据式易失的,比如进程退出、系统重启都会造成内存中的数据丢失,因此Redis也是支持持久化的。,其中有关于缓存的讲解。

2024-08-22 20:51:38 748

原创 Redis篇一:初识Redis

used by millions of developers as a database,cache streaming engine,and message broker.——开源的内存数据存储,被数百万开发人员用作数据库、缓存流引擎和消息中间件。我们先来看看一个单机架构,就是只有一台服务器,这个服务器负责所有的工作。初期,我们需要利用我们精干的技术团队,快速将业务系统投⼊市场进行检验,并且可以迅速响应变化要求。

2024-08-20 21:40:34 1132 9

原创 牛客TOP101:寻找峰值

我们先取到数组中间的值,让它与它的前一个或者后一个进行比较(下面的代码实现是与后一个进行比较),如果大于的话,说明它。,之间排除一半数据,如果小于的话,说明后一个值大于它,那么。,然后不断循环,最终的值就是我们需要的结果。这个很重要,要记住。

2024-07-26 21:35:39 536 3

原创 牛客TOP101:二分查找-I

使用双指针算法,因为它是有序的,我们直接判断数组最中间的值,进行比较,如果大于目标值,说明结果在数组的左半区间,那么我们之间将左半区间当成一个完整的数组,这样我们一次就可以排除一半的数据。

2024-07-26 21:30:39 486

原创 牛客TOP101:删除有序链表中重复的元素-II

一开始按照我的思路,就是同样使用三个指针进行标记,如果cur和next的值一样,那么就使用一个变量去保存这个出现的重复值,然后从cur一直将等于该值的结点删除,如果cur和next不等于,那么三个指针就集体向后移动。然后看了题解,重新开辟一个虚拟头节点,使用两个指针进行标记,只要cur和next不想等,那么就将cur连接到虚拟头节点上。思路很简单,但是当我实际写的时候,发现要处理的边界情况蛮复杂的,因为这个就相当于原地删除,情况很复杂,有兴趣的可以试试。两个代码我都会贴上。

2024-07-25 22:08:04 504 1

原创 牛客TOP101:删除有序链表中重复的元素-I

原因:首先删除一个结点,本质上就是将删除结点的前一个结点的next,指向被删除节点的下一个,所有需要三个指针来标记。使用三个指针prev,cur,next分别标记连着的三个结点,如果prev和cur的值相等,那么就删除cur。

2024-07-25 22:01:31 341

原创 牛客TOP101:链表的奇偶重排

使用一个指针指向头部,然后再一次走两步,就可以遍历到奇数结点了,将其一一拷贝构造到一个新链表上即可。然后再指向头节点的下一个结点(可能为空,需要判断),重复上面的操作即可。

2024-07-24 19:50:20 335 2

原创 牛客TOP101:判断一个链表是否为回文结构

我们知道,回文的结构就是从前和从后遍历的结果是一样的,那么我们就可以先将链表保存一份,然后进行逆置,与原链表进行比较,判断是否相同就可以了。

2024-07-24 19:46:56 464

原创 牛客TOP101:单链表的排序

left和mid一次走一步,right一次走两步,这样当right到最后一个结点时,mid就在中间,然后再让left->next指向nullptr,断开两个链表。按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个位置和另一个离它很远的位置进行比较交换位置,这在链表中是不切实际的。其原理就是先通过递归将一个链表分成一个一个单个的结点,然后两两进行比较、排序、连接,这是第一次排序,再往后就是。,其实针对于单个链表的排序,

2024-07-20 21:59:34 702 5

原创 牛客:TOP101链表相加(二)

运算也很简单,取出链表中的数据,进行相加,将结果重新构建一个结点(为了方便连接,我们可以先开辟一个头节点),然后连接到我们的头节点上,然后两个链表都往后移,进行下一位运算,一直到结束。这里要注意两个链表长度不一样,可能会遇到一个链表先走完的情况噢。按照我们习惯的加法运算,肯定是要从个位开始相加,然后十位……,但是在链表中如果我们先运算后面的,那么接下来我们是无法找到前一位的。想要解决这个问题也很简单:。逆置完成之后我们就可以从头开始相加了。那么接下了就是两个链表一位一位进行相加了,要注意进位问题噢。

2024-07-20 21:42:09 571

原创 牛客TOP101:两个链表的第一个公共结点

如果两个链表相交的话,它们相交之后的长度是一样的,我们不用考虑。问题就在于我们不知道两个链表的前面的长度,不知道它们何时会相遇,那么我们可以先求出两个链表从头到尾的长度,求它们的差,让长度长的先走它们的长度之差步,这样它们剩余的路径长度就一样了。

2024-07-19 22:48:44 557 3

原创 牛客TOP101:链表中倒数最后k个结点

求的是倒数第k个结点,我们可以先让一个快指针走k步,慢指针指定头节点,这样快慢指针之差就是倒数第k个结点到空节点的距离,因此只要快指针走到空,那么慢指针指向的就是倒数第k个结点。

2024-07-19 22:30:20 368

原创 牛客TOP101:链表中环的入口结点

【代码】牛客TOP101:链表中环的入口结点。

2024-07-18 21:41:57 776 4

原创 牛客TOP101:判断链表中是否有环

快慢指针,原理就是快指针一次走两步,慢指针一次走一步,快指针会先进入到环中进行循环,慢指针后进行。以相对来看,快指针是比慢指针多走一步,只要进入到环中,那么快指针迟早会追上慢指针。如果没有环,就会走到nullptr。

2024-07-18 21:32:40 354

原创 牛客TOP101:合并k个已排序的链表

因此我们就可以采用归并排序的思想,分治。其原理就是先两两进行合并,比如:下标为1和2的合并,3和4的合并,依次类推。多个链表的合并本质上可以看成两个链表的合并,只不过需要进行多次。最简单的方法就是一个一个链表,按照。另外一个思路,我们已经可以完成两个链表的合并了,那么这个工作就可以抽象出来,不去考虑这个工作。那么问题就转化成了将一个数组中的两两值(链表)进行合并。的思路,循环多次就可以了。

2024-07-16 22:25:44 418 5

原创 牛客TOP101:合并两个排序的链表

与正常的合并两个有序数组思路一样,这里可以定义一个头节点(虚拟节点),可以方便我们一开始进行连接。用两个指针标记两个链表的结点,进行循环比较,谁小谁连接到我们开辟的头节点上。最后判断谁没连接完,直接连接上就可以了。

2024-07-16 22:16:25 304 1

原创 protobuf简介

编写 .proto ⽂件,⽬的是为了定义结构对象(message)及属性内容。使⽤ protoc 编译器编译 .proto ⽂件,⽣成⼀系列接⼝代码,存放在新⽣成头⽂件和源⽂件中。依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对 .proto ⽂件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化。

2024-07-16 15:16:09 17775 10

原创 牛客TOP101:链表内指定区间反转

如果翻转的区间包含了头节点,那么翻转之后的函数返回值就不再时原来的头节点了,而是我们翻转之后的结点(做过翻转链表这个题就知道为什么了),如果翻转区间不包含头节点,那么最终的返回值依旧是原来的头节点。(因此这里是需要进行判断的)我们可以将翻转区间之外的部分先忽略掉,这样问题就转化为了翻转整个链表。在翻转完成后,在将剩余的部分连接起来就可以了。这道题和反转链表的区别在于:它仅仅只翻转其中的某一个区间,但是我们可以将问题进行转化,转化为翻转链表。我在代码实现部分详细说明的每一步的代码意义,相信会对大家有所帮助。

2024-07-15 23:18:52 813 6

原创 牛客TOP101:反转链表

具体做法就是,使用cur标记当前结点,代表这我们将要翻转这个结点的指向,prev指向它的前面的一个结点,next保存它后面的一个结点,然后循环修改cur的指向结点就可以了。简单粗暴的写法,就是从头到尾挨个将所有结点的指向翻转即可。需要注意的是,翻转之后会失去原有指向的结点,所以需要提前保存。

2024-07-15 21:27:12 403 1

原创 MySQL篇十二:用户管理

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。

2024-07-14 18:11:38 351 1

原创 牛客:DP25 删除相邻数字的最大分数(动态规划)

如果选择了,那么 f [i] = nums [ i ],但是我们得到的只是这一个数,应该在加上前面的结果,这个数被选了,那么前面的数就是被删除的,也就是不选的,那么 f [i] = nums [ i ] + g [ i - 1]。的分数,因此为了能快速统计出选择某一个数所能得到的分数,我们可以在输入数据时,使用一个数据来计算出选择一个数所能得到的分数(哈希)。对于某一个数,如果我们选择它,那么就会得到它对应的分数,我们使用 f [ ] 数组进行保存,使用 g [ ] 数组保存不选择这个数所能得到分数。

2024-07-14 18:09:06 388 2

原创 牛客:组队竞赛(贪心)

很简单——贪心,因为要保证第三个数比第二书还要大,所以我们将数据进行排序后(升序),选取倒数第二个数作为我们第一组数据的第二的数,从最前面选一个小数作为第一个数,这样一组数据就完成分组了。然后将倒数第三个数作为第二组数据的第三个数,倒数第四个数据作为第二组数据的第二个数,以此类推……题目的意思就是三个数为一组,并且是有序的,如果才能将所有组的第二个数之和最大,也就是尽可能的将每一组的第二个数弄成最大值。

2024-07-14 17:44:57 394

原创 牛客:乒乓球筐(哈希)

使用两个哈希表将A和B盒中的字符全部同统计出来,进行比较大小就可以了。

2024-07-14 17:35:57 252

原创 MySQL篇十一:视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

2024-07-14 17:18:35 237 1

原创 MySQL篇十:事务

CURD不加控制,会有什么问题?当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库时,客户端B检查了票数,发现大于0,于是又卖了一次票。然后A将票数更新回数据库。这是就出现了同一张票被卖了两次。CURD满足什么属性,能解决上述问题?买票的过程得是原子的吧买票互相应该不能影响吧买完票应该要永久有效吧买前,和买后都要是确定的状态吧事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。

2024-07-13 19:39:28 894 3

原创 MySQL篇九:索引

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。主键索引(primary key)唯一索引(unique)普通索引(index)全文索引(fulltext)–解决中子文索引问题。

2024-07-12 16:55:20 1611 2

原创 MySQL篇八:表的内外连接

表的连接分为内连和外连。

2024-07-12 14:33:02 246

原创 MySQL篇七:复合查询

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。

2024-07-10 15:13:37 1502 7

原创 MySQL六:内置函数

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)

2024-07-10 15:04:33 365

原创 MySQL篇五:基本查询

表的增删改查:CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)。

2024-07-09 19:13:11 1746 11

原创 MySQL篇四:表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default,comment,zerofill,primary key,auto_increment,unique key。约束的本质是通过技术手段,倒逼程序员加入正确的数据。反过来站在MySQL的视角,凡是插入进来的数据,都是符合数据约束的。

2024-07-08 16:13:57 973 1

原创 MySQL篇三:数据类型

  数据类型分类:  注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。  基本语法:  bit使用的注意事项:  语法:  float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。比如说先就是只能插入-99.99 ~ 99.99,但是实际上的范围是-99.994 ~ 99.994。decimal(5,2) 表示的范围是 -999.99

2024-07-06 19:18:58 833 1

原创 强化训练:day13(牛牛冲钻五、最长无重复子数组、重排字符串)

1. 牛牛冲钻五2. 最长无重复子数组3. 重排字符串前两个题都是由固定的算法思路,进行专项训练就可以了,至于第三个题那么就只能看个人的想法了。不过多做题肯定是没错的,希望大家可以继续练习下去。那么第十三天的内容就到此结束了,如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续坚持训练的,希望能与大家共同进步!!!那么本期就到此结束,让我们下期再见!!

2024-07-06 19:18:34 505

原创 MYSQL篇二:数据库的操作

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

2024-07-05 13:49:51 856 4

原创 MYSQL篇一:数据库基础

存储数据用文件就可以了,为什么还要弄个数据库?一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度)。对数据存储的一套解决方案,你给我字段或者要求,我直接给你结果。文件的安全性问题。文件不利于数据查询和管理。文件不利于存储海量数据。文件在程序中控制不方便。MySQL是一套给我们提供数据存取的网络程序。数据库一般是指,在磁盘或者内存中存储的特定结构组织的数据 - — 将来在磁盘上存储的一套数据库方案。数据库服务— mysqld。磁盘内存。

2024-07-03 18:57:26 1166 4

原创 Linux:网络基础1

在早期的计算机发展中,一开始其实是一个个独立的设备,通俗来说就是电脑和电脑之间不是像现在这样可以互相传输数据的,只能通过,比如将这个电脑上的数据通过软盘拷贝下来,再到另一台电脑下载。而有人的参数,效率定然是低下的,因此就有了网络,通过网络来实现不同设备之间的数据传输。协议本质就是一种约定。

2024-07-02 19:22:34 1915 4

原创 强化训练:day12(删除公共字符、两个链表的第一个公共结点、mari和shiny)

1. 删除公共字符2. 两个链表的第一个公共结点3. mari和shiny

2024-06-05 17:16:20 500 2

原创 C++特殊类的设计

有时间在特定场景,我们需要特殊从类来处理事务,比如这里类只能有一个实例化对象。其中的单例模式是重点,很多面试都会提问到,要做到手撕单例模式。如果大家发现有什么错误的地方或者有什么问题,可以私信或者评论区指出喔。我会继续深入学习C++,希望能与大家共同进步,那么本期就到此结束,让我们下期再见!!!

2024-06-05 17:15:28 683 7

原创 强化训练:day11(游游的水果大礼包、 买卖股票的最好时机(二)、倒置字符串)

1. 游游的水果大礼包2. 买卖股票的最好时机(二)3. 倒置字符串

2024-05-28 15:52:40 845 3

空空如也

空空如也

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

TA关注的人

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