- 博客(450)
- 收藏
- 关注
原创 复杂度分析
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。它描述的是算法在执行过程中所需的额外空间,不包括输入数据本身所需的空间。有些输入的东西是不能改的,是十分危险的⚠️,要和面试官去进行沟通。
2025-05-20 08:32:41
576
原创 Go语言中空struct的用途
2. 空结构体在 channel 中:通过信号量控制并发,无需传输数据。3. 空结构体实现接口:当行为不需要依赖状态时,简化代码结构。1. 空结构体作为集合:节省内存,仅用键判断存在性。
2025-05-18 09:03:15
465
原创 死锁的概念
▪ 死锁是说一个进程拥有某种资源,而又等待其他进程释放他们手上的资源,在这种状态未发生改变前无法向前推进,则称这组进程陷入了死锁的状态,通俗来说就是一组进程无限期阻塞,相互等待的一种状态。• 第二个是请求和保持条件,一个进程拥有某个资源时,并且请求其他资源,要保持当前资源不放;• 第三个是不可剥夺条件,当进程拥有某个资源时,该资源不可被强行剥夺;• 第四个条件是循环等待条件,请求资源的一组进程形成一个循环等待的状态。◦ 什么是死锁(进程,拥有,等待,无法推进,无限期阻塞,互相等待)。
2025-05-17 10:27:14
211
原创 Git和SVN的区别
svn:Apache Subversion是Apache许可证下的开源软件版本和版本控制系统。git:Git是由Linus Torvalds在2005年开发的开源分布式版本控制系统。它强调速度和数据完整性。
2025-05-15 09:01:31
617
原创 数据结构算法指引
比方说 O(2n2+3n+1)O(2n2+3n+1) 等同于 O(n2)O(n2),O(1000n+1000)O(1000n+1000) 等同于 O(n)O(n)。比方说时间复杂度 O(n)O(n) 的算法比 O(n2)O(n2) 的算法执行效率高,空间复杂度 O(1)O(1) 的算法比 O(n)O(n) 的算法内存消耗小。是的,还是 O(n2)O(n2)。数组需要 O(n)O(n) 的时间复杂度,包含一个 for 循环,时间复杂度也是 O(n)O(n),总的时间复杂度是还是 O(n)O(n) 其中。
2025-05-14 14:20:32
914
原创 Golang最长连续序列
这样可以避免大量重复计算。比如 nums=[3,2,4,5],从 3 开始,我们可以找到 3,4,5 这个连续序列;而从 2 开始,我们可以找到 2,3,4,5 这个连续序列,一定比从 3 开始的序列更长。如果 nums=[1,1,1,…,1,2,3,4,5,…](前一半都是 1),遍历 nums 的做法会导致每个 1 都跑一个 O(n) 的循环,总的循环次数是 O(n。核心思路:对于 nums 中的元素 x,以 x 为起点,不断查找下一个数 x+1,x+2,⋯ 是否在 nums 中,并统计序列的长度。
2025-05-13 09:01:42
205
原创 HTTP 和 HTTPS 有什么区别?
2. 建立连接:HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。4. 证书:HTTPS需要使用数字证书来验证服务器的身份,并确保数据传输的安全性。而HTTPS通过使用SSL/TLS协议对数据进行加密,提供了更高的安全性和数据保护。从安全性、 建立连接、端口号、证书三个方向来说明 HTTP 和 HTTPS 的区别。我的理解主要有 4 个方面的区别:。
2025-05-12 13:22:25
162
原创 常见的加密算法
在 HTTPS 协议里,对称加密算法和非对称加密算法这两种算法都会用到,对称加密算法就是用一个密钥进行加解密,比如 AES 算法,非对称加密则是有 2 个密钥,分别是公钥和私钥,比如RSA算法。公钥可以任意分发,而私钥必须保密,可以通过公钥加密对称密钥,私钥解密的方式,保证对称密钥的安全传输,常见的非对称加密算法有RSA、ECC等。对称加密和解密都是用同一个密钥进行操作,加密和解密过程速度较快,适合对大量数据进行加密,对称密钥必须保密,不能明文传输,常见的对称加密算法有AES、DES等。
2025-05-12 13:21:45
447
原创 3. 无重复字符的最长子串
c. right在前面进行扫描,经过验证没问题的就放置到left这个空间当中进行保存。4. 当这个字符串在cnt存储的空间中是大于1的,就删除这个元素,并且让后面的左指针前移一位。b. 这个双指针本质上就是一种快慢指针的想法。3. 使用right指针对原本的字符串中的数据进行遍历。1. 创建一个存储不重复元素的空间进行去重元素的存储。2. 使用滑动窗口的思想进行实现,怎么使用滑动窗口?a. 使用双指针的想法。典型的哈希表,滑动窗口的问题。
2025-05-11 14:33:12
165
原创 Hot Key和Big Key引发的问题怎么应
你可以通过提前熟悉 Cache 的经典问题,提前构建防御措施, 避免大量 key 同时失效,避免不存在 key 访问的穿透,减少大 key、热 key 的缓存失效,对热 key 进行分流。如果业务中这种大 key 很多,而这种 key 被大量访问,缓存组件的网卡、带宽很容易被打满,也会导致较多的大 key 慢查询。另外,如果大 key 缓存的字段较多,每个字段的变更都会引发对这个缓存数据的变更,同时这些 key 也会被频繁地读取,读写相互影响,也会导致慢查现象。对于大多数互联网系统,数据是分冷热的。
2025-02-23 15:08:51
903
原创 Redis集群搭建
Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。
2025-02-23 08:34:18
727
原创 Redis集群
客户端能够快捷的连接到服务端,主要是将slots与实例节点的映射关系存储在本地,当需要访问的时候,对key进行CRC16计算后,再对16384 取模得到对应的 Slot 索引,再定位到相应的实例上。回到我们刚刚的场景中,如果把 25GB 的数据平均分成 5 份(当然,也可以不做均分),使用 5 个实例来保存,每个实例只需要保存 5GB 数据。切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。如何保存更多的数据。
2025-02-23 08:33:37
159
原创 Redis持久化RDB和AOF优缺点是什么,怎么实现的?我应该用哪一个?
AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。AOF 将 Redis 执行的每一条命令追加到磁盘中,处理巨大的写入会降低 Redis 的性能,不知道你是否可以接受。
2025-02-22 19:05:00
198
原创 MySQL进阶注意事项-锁
MySQL 中的锁机制非常重要,因为它直接影响到并发控制和数据的一致性。MySQL 支持多种锁类型,不同的锁类型在不同的操作和隔离级别下有不同的行为。
2025-02-16 14:07:58
924
原创 事务的隔离级别与MVCC
隔离级别的事务来说,都必须保证读到已经提交了的事务修改过的记录,也就是说假如另一个事务已经修改了记录但是尚未提交,是不能直接读取最新版本的记录的,核心问题就是:需要判断一下版本链中的哪个版本是当前事务可见的。如果一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来,那就意味着发生了。的特性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。
2025-02-16 09:23:11
852
原创 万物皆索引
这一讲,我们对上一节索引的部分做了更为深入的介绍,你应该了解到MySQL InnoDB 存储引擎是索引组织表,以及索引组织表和堆表之间的区别。索引组织表主键是聚集索引,索引的叶子节点存放表中一整行完整记录;除主键索引外的索引都是二级索引,索引的叶子节点存放的是(索引键值,主键值);由于二级索引不存放完整记录,因此需要通过主键值再进行一次回表才能定位到完整数据;索引组织表对比堆表,在海量并发的OLTP业务中能有更好的性能表现;每种不同数据,对二级索引的性能开销影响是不一样的;
2025-02-15 10:46:12
715
原创 mysql B+树中为什么同层的非叶子节点所在的页也使用双向链表连接?
实际采取的做法是,只遍历了10个叶子节点,根据这10个节点算出每个节点平均包含多少条数据,然后用这个数据乘以m,就是n的值了。同理可以知道q的值。同样的办法,只要10个页,算出平均值,然后找到倒数第三层遍历,用倒数第三层的条数,乘以这个平均值,就得到了k和t。: 在B+树的操作中,非叶子节点通过双向链表连接的设计能让多个查询操作更加独立,减少了节点之间的锁竞争,提升了数据库的并发性能。总结来说,非叶子节点用双向链表连接,是为了优化范围查询和顺序扫描的效率,减少重复查找路径,提升数据库的整体查询性能。
2025-02-15 10:45:13
648
原创 MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%[特殊字符]
需要存储文本字符时,可以选择TEXT相关的类型,读取时需要从磁盘中获取,但可以存储的空间多适合存储大文本需要存储二进制流可以选择BLOB相关的类型char是固定的字符串,varchar是可变长的字符串,它们占用的空间与选择使用的字符集和分配的长度有关varchar长度255及以下会使用一个字节记录可变长长度,以上会使用两个字节记录可变长长度char中未存满的值会用空格填充,因此字符串末尾无法存储空格,而varchar不会填充末尾可以存储空格。
2025-02-14 15:55:41
1164
原创 MySQL的数据类型
MySQL 支持多种数据类型,包括数值型、字符串型、日期时间型、二进制型等。数据类型的选择应该根据存储的数据类型和范围来确定。例如,对于存储性别的字段,可以使用 ENUM 类型,因为该字段的取值范围较小,只有男、女两个取值。对于存储长文本的字段,应该使用 LONGTEXT 类型,而不是 TEXT 类型,以支持更大的文本内容。
2025-02-13 21:25:44
406
原创 MySQL的DDL
这些 DDL 语句可以通过 MySQL 命令行客户端或图形化客户端(如 MySQL Workbench)等工具执行。在执行 DDL 语句时,需要注意语法的正确性,避免错误操作导致数据库结构的损坏。同时,DDL 操作具有较高的权限,应该谨慎使用。MySQL 的 DDL(Data Definition Language)是用于定义数据库、表、列、索引等数据库对象的语言。
2025-02-13 21:25:07
415
原创 SQL语句的分类
SQL(Structured Query Language,结构化查询语言)是一种用于关系数据库管理系统的标准化查询语言,主要用于数据库中数据的增删改查、表的创建与删除、表之间的关联和约束等方面。
2025-02-13 21:23:21
331
原创 MySQL可视化客户端
MySQL 可视化客户端是一个图形化界面的工具,可以帮助用户更方便地管理和操作 MySQL 数据库。这些 MySQL 可视化客户端都有其优缺点,用户可以根据自己的需求和使用习惯选择适合自己的工具。
2025-02-13 21:22:49
1078
原创 MySQL OR 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 OR 运算符组合多个查询条件过滤查询数据。当使用SELECT查询数据时,如果WHERE子句中有多个条件,可以根据需要使用ANDOR, 或者NOT运算符将他们组合起来。本文主要介绍OR运算符。
2025-02-09 19:34:17
903
原创 MySQL AND 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 AND 运算符组合多个查询条件过滤查询数据。当使用SELECT查询数据时,如果WHERE子句中有多个条件,可以根据需要使用ANDOR, 或者NOT运算符将他们组合起来。本文主要介绍AND运算符。
2025-02-09 19:33:39
738
原创 MySQL 使用 WHERE 子句过滤数据
WHERE子句允许您为SELECT查询指定搜索条件。以下是WHERESELECTFROMtable_nameWHERE其中就是查询条件,它的结果是一个布尔值,其值可能为TRUEFALSE或UNKNOWN。最终,SELECT语句返回的结果集就是满足查询条件结果为TRUE的记录。查询条件也可以是使用ANDOR和NOT逻辑运算符一个或多个表达式的组合。除了用在SELECT语句之外,WHERE子句还可以用在UPDATE和DELETE语句中,用来指定要更新或删除的行。
2025-02-09 19:32:31
675
原创 MySQL SELECT 语句
本文介绍了 MySQL 中的SELECT语句的基本形式,以及如何使用SELECT语句从数据库中查询数据。SELECT语句用于从一个或多个表中检索数据,是 MySQL 中使用最多的语句。
2025-02-09 19:31:44
640
原创 执行一条 select 语句,期间发生了什么
这里说的查询缓存是 server 层的,也就是 MySQL 8.0 版本移除的是 server 层的查询缓存,并不是 Innodb 存储引擎中的 buffer pool。命令,这样就会输出这条 SQL 语句的执行计划,然后执行计划中的 key 就表示执行过程中使用了哪个索引,比如下图的 key 为。我下面这条查询语句,test 这张表是不存在的,这时 MySQL 就会在执行 SQL 查询语句的 prepare 阶段中报错。,比如在表里面有多个索引的时候,优化器会基于查询成本的考虑,来决定选择使用哪个索引。
2025-02-09 19:30:33
288
原创 MySQL聚合函数
在 MySQL 中,聚合函数用于在查询中对一组数据进行计算并返回单个结果。子句一起使用的,以对每个分组计算结果。需要注意的是,聚合函数通常是与。
2025-02-08 11:11:55
135
原创 MySQL查询like
在 MySQL 中,LIKE 运算符用于模糊查询满足指定模式的数据,通常用于字符串类型的字段。LIKE 运算符可以与通配符一起使用,通配符用于指定要匹配的模式。以上示例将返回所有名字以 "Tom" 开头的员工的信息。以上示例将返回所有名字以 "son" 结尾的员工的信息。以上示例将返回所有名字中包含 "Tom" 的员工的信息。以上示例将返回所有名字长度为 3 的员工的信息。需要注意的是,使用 LIKE 运算符进行模糊查询可能会影响查询性能,特别是在处理大量数据时。
2025-02-08 11:09:37
491
原创 MySQL条件查询where子句
在使用 WHERE 子句时,需要注意语句的性能和效率,避免对数据库造成不必要的负担。以上示例将返回所有年龄大于 30 岁且薪水高于 5000 的员工的信息,或者返回所有年龄大于 30 岁或薪水高于 5000 的员工的信息。以上示例将返回所有薪水在 5000 到 8000 之间的员工的信息。以上示例将返回所有年龄为 25、30 或 35 的员工的信息。以上示例将返回所有名字以 "Tom" 开头的员工的信息。以上示例将返回所有薪水高于 5000 的员工的信息。IN 运算符用于从表中检索符合指定值列表的数据。
2025-02-08 11:07:00
208
原创 MySQL DQL
DQL 还有许多其他功能,例如使用 GROUP BY 和 HAVING 子句进行分组、使用 JOIN 子句连接多个表等等。在使用 DQL 语句时,需要注意语句的性能和效率,避免对数据库造成不必要的负担。ORDER BY 子句用于按指定列对结果进行排序,可以按升序或降序排序。WHERE 子句用于过滤检索结果。可以根据多个条件过滤数据。可以使用 SELECT 语句选择表中的指定列。SELECT * 语句用于检索表中的所有列。LIMIT 子句用于限制检索结果的数量。
2025-02-08 11:04:43
160
原创 MySQL DML
DML 是 MySQL 中的一种语言,用于操作表中的数据,包括 SELECT、INSERT、UPDATE 和 DELETE 四种操作。在使用 DML 语句时,需要小心使用 WHERE 子句和其他限制条件,以免意外删除或修改数据。另外,需要注意语句的性能和执行效率,避免对数据库造成不必要的负担。需要指定表名和要插入的数据。UPDATE 语句用于更新表中的数据。需要指定表名、要更新的字段和新的值,以及 WHERE 子句指定更新的条件。需要指定表名和 WHERE 子句指定要删除的数据。
2025-02-08 11:03:42
127
原创 小王打怪之路-语雀文章创作记录
大家好,我是小王,今天想和大家分享一下我在技术文章创作过程中的一些感想和心得。作为一名技术爱好者,我一直在探索如何更好地表达和分享我的知识。在这个过程中,我积累了一些经验,希望能对大家有所帮助。于是,我决定将自己的学习过程和解决问题的经验记录下来,方便自己回顾,也希望能帮助到遇到类似问题的朋友。未来,我计划继续坚持写作,并尝试更多元化的内容形式,比如视频教程和在线课程。我希望能够帮助更多的人,也期待在技术分享的道路上走得更远。如果你也有兴趣写技术文章,不妨从现在开始,记录下你的学习和思考。
2025-02-07 17:52:39
466
1
原创 MySQL简介
MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前由Oracle公司进行开发和维护。MySQL使用标准的SQL数据语言进行数据的管理和操作,支持多种操作系统平台,包括Linux、Windows和Mac OS等。开源、免费:MySQL是一个完全开源的软件,可以免费下载和使用。稳定、可靠:MySQL是一种经过广泛测试和验证的数据库管理系统,具有良好的稳定性和可靠性。高性能:MySQL使用多种技术和优化策略,可以提供高效的数据存储和检索功能。
2025-02-07 10:24:33
886
原创 数据库的基本概念
数据库是一种用于存储、组织和管理数据的电子系统,可以让用户方便地存储和检索数据。数据库通常由一个或多个数据表组成,每个表都有一些列,每列代表了一个特定的数据类型。在表中,每一行都代表了一条记录,其中每个列都包含了相应的数据值。数据库可用于各种类型的应用程序,包括商业、科学、医疗、社交媒体等等。它们提供了一种安全、可靠的数据存储方式,可以让多个用户同时访问和处理同一个数据集。用户可以在数据库中进行各种操作,例如添加、修改、删除和查询数据。
2025-02-07 10:20:01
715
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人