自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线性DP(动态规划)

学习线性DP之前,请确保已经对递推有所了解。

2025-05-03 15:39:40 790

原创 Twitter 工作原理|架构解析|社交APP逻辑

这样做的目的是为了提高留存率,因为“For you”大部分是推荐内容,如果推荐的内容不感兴趣,可能会导致点击率低,从而影响留存率。所以在召回时,会召回一些“Following”的内容,以保持留存率,并根据算法推送可能感兴趣的内容,来调整推荐和关注内容的比例。推荐模块包括召回动作,尽可能的召回数据,然后进行特征提取,做特征工程,输出的特征是后续推荐系统的输入,也就是推荐系统会推出具备这些特征的内容,而这些内容是符合用户特征的,尽可能的留住用户。:需要召回的广告,并且是该用户可能感兴趣的广告。

2025-04-29 23:13:49 864

原创 黑马点评redis改 part 6

GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEODIST:计算指定的两个点之间的距离并返回GEOHASH:将指定member的坐标转为hash字符串形式并返回哈希降维:先将经纬度坐标值 转换成 二进制的数字,然后再利用特殊的编码 转换成 对应的字符串[1.转换成字符串

2025-04-27 15:42:30 596

原创 黑马点评redis改 part 5

那第一张表block表它里边的结构呢是这个首先呢第一个字段是i d,就是主键,第二个呢是shop id,就是商户你发的这个比例啊,它是跟哪个商户有关系的。第三个呢用户id就是谁发的这篇笔记,第四个呢标题,第五个呢是照片,照片呢最多不超过九张,多个呢以道号隔开,所以呢他这个是一个字段,里面包含了多张图片的实际生产中不会加外键,这会给每次操作进行验证,会大大降低性能,

2025-04-23 23:52:18 702 1

原创 黑马点评redis改 part 4

消息队列(MessageQueue),字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色: mq是独立于jvm以外的项目,不受jvm内存的限制消息队列不仅仅是做数据存储,还确保我们的数据安全,所有数据均实现持久化,这样呢不管是服务岩机还是重启,数据不会丢失。而且啊他要在消息投递给消费者以后要求消费者做消息的确认,如果消息没有确认,那么那么这个消息就会在队列当中依然存在,下一次呢会再投递给消费者直到成功为止。Redis提供了三种不同的方式来实现消息队列:消息队列(MessageQueue),字面意思

2025-04-22 21:25:21 628

原创 黑马点评redis改 part 3

每个店铺都可以发布优惠券:我们redis里string数据结构是自增特性的,有一个increase的命令,而这个首先可以确保唯一,因为什么redis是独立于数据库之外的,第二高可用是redis将来有集群方案和主从方案哨兵方案全局id生成器里,为了增加ID的安全性,我们可以不直接使用Redis自增的数值,而是拼接一些其它信息:ID的组成部分:符号位:1bit,永远为0时间戳:31bit,以秒为单位,可以使用69年序列号:32bit,秒内的计数器,支持每秒产生2^32个不同ID。

2025-04-20 14:47:25 678

原创 黑马点评redis改 part 2

比如说那么这是因为这种数据读写的能力远远的低于预算能力,所以说计算机性能受到了一个限制。所以为了解决这个问题,人们就在CPU的内部添加了一个缓存,什么意思?就是CPU会把经常需要读写的一些数据放到CPU的缓存里面去,当我们去做高速运算的时候,就不必要每次等半天从内存或磁盘里把数据读过来再运算了,而是直接从缓存里拿到数据进行一个运算,那么这样一来是不是可以充分的让CPU的运算能力得到释放 衡量一个CPU它是否强大的一项标准,就是CPU的缓存的大小缓存越大,能缓存的数据自然也越多,那么处理起来的性能是不是也越好

2025-04-12 15:32:42 821

原创 黑马点评redis改 part 1

举个例子,我们的首页,商户的详情页,那么这些都是不需要登录就能看的,那么这样拦截器就不生效,那么它就不会去刷新。将hmdp.sql导入(本人是mysql8.0.27版本),即可看到包括tb_user:用户表,tb_user_info:用户详情表,tb_shop:商户信息表,tb_shop_type:商户类型表,tb_blog:用户日记表(达人探店日记),tb_follow:用户关注表,tb_voucher:优惠券表,tb_voucher_order:优惠券的订单表 的一共11个表。

2025-04-04 19:00:10 877

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part19

数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL数据迁移方案大致可以分为物理迁移和逻辑迁移两类。

2025-03-31 11:57:17 612

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part18

在实际工作中常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。但并不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的。

2025-03-31 11:56:29 576

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part17

中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。从服务器名-relay-bin.序号。从服务器名-relaybin.index,用来定位当前正在使用的中继日志。

2025-03-31 11:56:05 910

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part16

多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC 没有正式的标准,在不同的 DBMS 中 MVCC 的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的 DBMS 文档)。这里讲解InnoDB中 MVCC 的实现机制(MySQL其它的存储引擎并不支持它)。

2025-03-31 11:55:13 911

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part15

给一条记录加了。

2025-03-31 11:54:43 789

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part14

事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?·事务的隔离性由锁机制实现。·而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。1.REDOLOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。2.UNDOLOG称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为UNDO是REDO的逆过程,其实不然。

2025-03-31 11:24:58 718

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part13

事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失.

2025-03-29 17:09:37 842

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part12

我们需要调优的对象是整个数据库管理,它不仅包括SQL查询,还包括数据库的部署配置、架构等。从这个角度来说,我们思考的维度就不仅仅局限在S化上了。通过如下的步骤我们进行梳理:DBMS的选择关系到了后面的整个设计过程,所以第一步就是要选择适合的DBMS。如果已经确定好了DBMS,那么这步可以跳过。

2025-03-21 16:45:20 1099

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part11

总之,开始设置数据库的时候,我们就需要重视数据表的设计。为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。

2025-03-21 13:35:34 950

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part10

理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引 的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT到FROM之间查询的列。比如说上面过程二中增加limit过滤条件,这一句。

2025-03-20 22:44:59 990

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 9

当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。整个流程划分成了观察(Showstatus)和行动(Action)两个部分。字母S的部分代表观察(会使用相应的分析工具),字母A代表的部分是行动(对应分析可以采取的行动)。show profiling 我们可以去查找每一个步骤的时间成本我们可以通过观察了解数据库整体的运行状态,通过性能分析工具可以让我们了解执行慢的SQL都有哪些,查看具体的SQL执行计划,甚至是SQL执行中的每一步的成本代价,这样才能定位问题所在,找到了问题,

2025-03-18 15:34:26 955

原创 图 最 短 路

对于图G=<V,E>,源点为s,d[i] 表示s到i的最短路。(1)初始化所有顶点d[i]=inf,令d[s]=0,计数器c=0;

2025-03-17 23:56:18 1055

原创 数据库系统导论 15-445 2023Fall part1

现在的情况就像是,好的,我得到了所有这些从之前使用的聊天GPT或其他工具返回的向量:我需要将这些信息存储在一个能够原生存储向量的数据库中。它们的功能有限,随着时间的推移基本上将不得不演变成关系型数据库,实际上向量数据模型中的向量就是一维数组,但这些向量通过神奇的转换器,能让你以某种方式嵌入更深层次的意义,揭示出数据实际的样貌。它表示,随着行数的增加,速度将会变得非常、非常缓慢。在我看来,关系模型是构建或使用数据库的主导模型,接下来我们将讨论关系代数,即我们与关系模型数据库交互所使用的机制或操作符。

2025-03-14 16:42:05 928

原创 C++系统小复习

本文是应我开发数据库相关内容而想到。

2025-03-14 16:41:47 917

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 8

133-不适合创建索引的7种情况_哔哩哔哩_bilibili。

2025-03-13 13:03:36 725

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 7

页a、页b、页c..页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。以及每个页都会存储最小记录和最大记录现在假设我们通过B+树找到了在页A中,页A共有1000条数据 , 但是你也知道单链表的查找较慢,时间复杂度O(N) , 于是页目录应运而生 ,

2025-03-12 14:42:36 906

原创 黑马程序员Redis入门到实战教程基础篇

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样,stringHash ,List,Set,Sortedset(基本类型),GEO,BitMap,HyperLog(特殊类型)KEYS *KEYS a* 不建议在生产环境设备上使用#这是一种基于通配符搜索的,这种通配符查询对于单线程的redis是有巨大负担的DEL name#即可删除name#批量插入OK1) "k3"2) "k2"3) "name"4) "k1"

2025-03-07 12:40:54 917

原创 哈 希 算 法

朴素算法 :1、遍历这n 个数。2、对于遍历到的第i个数×,查询辅助数组 a中存在多少个x-1和x+1;;(有多少个就能够和×组成多少个"差1数对"),所以直接累加到计数器 c 上。3、把当前遍历到的×这个数,放入辅助数组a 的末尾。O(N^2)的时间复杂度hash算法:辅助数组h[1002], h[x] 代表×出现的次数 , 整数计数器c. 我们拿下标来映射数组 1、遍历这 n 个数。

2025-03-06 21:33:24 764

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 6

索引(Index是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。

2025-03-01 11:45:24 721

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 5

MySQL从3.23.34a开始就包含lnnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。比如说现在有2个DML操作,分别是 小a- 100元和小b +100元除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

2025-02-27 22:51:36 923

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 4

首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?

2025-02-26 23:12:40 978

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 3

MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。MySQL数据库的安全性需要通过账户管理来保证。

2025-02-23 15:09:16 691

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 2

MySQL数据库文件的存放路径:/var/lib/mysql/MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录。MySQL把数据都存到哪个路径下呢?从结果中可以看出,在我的计算机上MysQL的数据目录就是/var/lib/mysql/。

2025-02-20 14:30:22 862

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 1

首先在vmware中下载centos7,实际上8更好一点,不过centos已经是时代的眼泪了,我之前已经教过了,不过是忘了,所以重新说一遍,看文档即可2.开机前修改mac地址(注意:如果是动态生成IP地址,请在启动前先启动被克隆的虚拟机,以保证原来虚拟机的ip不会变,否则原来虚拟机ip会变,克隆后的虚拟机ip是原来的虚拟机ip点击编辑虚拟机设置选择网络适配器,点击右下角高级然后下边就是mac地址,这个mac地址和被克隆的是一样的,我们点击生成,重新生成一个新的:3.

2025-02-19 23:30:58 1168

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 18

1. 更简便的NoSQL支持 NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展,传统 的关系型数据库已经越来越不能满足需求。从5.6版本开始,MySQL就开始支持简单的NoSQL存储功能。MySQL 8对这一功能做了优化,以更灵活的方式实现NoSQL功能,不再依赖模式(schema)。2. 更好的索引 在查询中,正确地使用索引可以提高查询的效率。MySQL 8中新增了 隐藏索引和 降序索 引。隐藏索引可以用来测试去掉索引对查询性能的影响。

2025-02-18 10:58:03 1048

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 17

MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所谓事件就是指 用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。

2025-02-17 22:43:23 683

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 15

存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过预先编译的 SQL 语句的封装执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用 存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。好处:1、简化操作,提高了sql语句的重用性,减少了开发程序员的压力2、减少操作过程中的失误,提高效率3、减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)

2025-02-16 10:56:02 915

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 14

1. 操作简单将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。2. 减少数据冗余视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询语句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据冗余。3. 数据安全。

2025-02-15 14:08:05 751

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 13

约束是表级的强制规定。可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定 约束。1.3 约束的分类:角度1:约束的字段的个数单列约束 vs 多列约束角度2:约束的作用范围列级约束:将此约束声明在对应字段的后面表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束角度3:约束的作用(或功能)① not null (非空约束)② unique (唯一性约束)③ primary key (主键约束)

2025-02-14 13:30:16 986

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 12

第三章到第10章是DDL,第11章是DML,接下来就是DCL了,TCL之类的吧单值类型:GEOMETRY、POINT、LINESTRING、POLYGON;集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、 GEOMETRYCOLLECTION。

2025-02-13 18:16:10 762

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 11

首先得先有一个表: 1.增加数据 # 说明:emp1表中要添加数据的字段的长度不能低于employees表中查询的字段的长度。# 如果emp1表中要添加数据的字段的长度低于employees表中查询的字段的长度的话,就有添加不成功的风险。可以一次更新多条数据。 如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、b列值为2,c列 不需要手动插入,定

2025-02-12 18:35:25 480

原创 MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 10

DDL:数据定义语言。DML:数据操作语言。INSERT \DELETE \UPDATE \SELECT(重中之重)DCL:数据控制语言。前面讲的都是DML ,即数据操作语言,现在讲一讲DDL .存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢?

2025-02-11 19:04:06 950

空空如也

空空如也

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

TA关注的人

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