- 博客(44)
- 收藏
- 关注
原创 前序+中序、中序+后序构造二叉树
后序遍历根是从后往前,即。所以,确定某根后,也可以根据中序遍历判断。所以,确定某根后,可以根据中序遍历判断。,所以构造时也要符合这个顺序,先初始化。代码区别也不大,需要注意的是。,可以构造出二叉树。
2024-07-24 23:31:14
335
原创 力扣 快慢指针
定义两个指针,一快一慢。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针和快指针都在位置。,这样一来,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表为环形链表。指针走过链表末端,说明链表无环,此时直接返回。( 解析: 双指针在环内绕圈直到重合,重合时。同时每轮向前走 1 步。当两指针重合时,说明。循环,可以把快慢指针的初始值都置为。时,有环,且两指针在环中第一次相遇。重新指向链表头部节点,此时。多走了 n 个环的长度,即。多走环的长度整数倍 )。
2024-07-24 12:49:13
581
原创 MySQL MVCC
总结自说的都是并发读取的问题,最简单的方式就是给记录加一把锁,不管是更新、读取记录都需要竞争到这把锁之后才能操作。但这种方式的并发性能可想而知会有多么低。于是 InnoDB 就设计了MVCC来解决并发读取的问题,MVCC就是多版本并发控制(在RCRR这两种隔离级别下执行SELECT查询时,通过访问记录的版本链,而不需要加锁,这样使得不同事务的读-写操作可以并发执行,从而提升数据库的性能。MVCC需要依赖undo log版本链:对于使用RU。
2024-07-10 23:10:06
1046
原创 MySQL Undo Log
总结自undo log称为撤销日志或回滚日志。在一个事务中进行增删改操作时,都会记录对应的 undo log。在对数据库进行修改前,会先记录对应的 undo log,然后在事务失败或回滚的时候,就可以用这些 undo log 来将数据回滚到修改之前的样子。InnoDB 在内存维护了一个全局变量来表示,每当要分配一个事务ID时,就获取这个变量值,然后把这个变量自增1。在行记录格式中DB_ROW_ID:如果没有为表显式的定义主键,并且表中也没有定义唯一索引,那么InnoDB会自动为表添加一个row_id。
2024-07-10 23:07:29
1199
原创 MySQL Buffer Pool
LRU链表分为冷、热数据区域,前63%为热数据区域,后37%为冷数据区域,加载缓存页先放到冷数据区域头部。冷数据区域的缓存页第一次访问超过1秒后,再次访问时才会被移动到热数据区域头部。热数据区域中,只有后3/4的缓存页被访问才会移到头部,前1/4被访问到不会移动。淘汰数据优先淘汰冷数据区域尾部的缓存页。
2024-07-08 19:28:21
1233
原创 48. 旋转图像
先沿右上 - 左下的对角线翻转(270°+ 一次镜像),再沿水平中线上下翻转(−180°+ 一次镜像),可以实现顺时针 90 度的旋转效果。为什么要转换,因为顺时针90涉及到的元素较多(不好控制),对角旋转相当于固定了要变换的点,能直接下标定位。把问题从顺时针转90度转化为两次旋转。
2024-07-06 23:50:06
222
原创 238.除自身以外数组的乘积
如果直接把前缀积数组和后缀积数字对应相乘,得到的值是。即不要包含当前这个数,这样就是想要的结果了。的【不计算返回值】。算法是一样的,只不过省去了。所以要略微变化,从原来的前后缀定义变为:元素。可以考虑使用类似前/后缀积的方法,把他。
2024-07-05 18:44:56
324
原创 SpringBoot 参数校验
已有的注解不能满足校验要求,需要自定义注解首先定义自定义注解// 指定校验规则// 校验失败后的提示信息String message() default "只能是“已发布”或者“草稿”";// 指定分组Class<?// 获取附加信息Class<?定义处理规则@Override// 提供校验规则return "已发布".equals(s) || "草稿".equals(s);使用方式和其他注解一致。
2024-06-29 14:58:20
611
原创 NAT和内网穿透
NAT(Network Address Translation,网络地址转换)是一种广泛应用于计算机网络的技术,其主要目的是为了解决IPv4地址空间的短缺问题,并且增强网络安全。NAT技术允许一个私有网络内的多个设备共享一个或几个全局唯一的公共IP地址访问互联网。
2024-06-26 17:10:18
767
原创 二叉搜索树及其Java实现
二叉搜索树(Binary Search Tree,简称BST)是一种特殊的二叉树数据结构,它满足以下特性:有序性:对于树中的任意一个节点,其左子树中所有节点的值都小于该节点的值,而其右子树中所有节点的值都大于该节点的值。这意味着,对二叉搜索树进行中序遍历(先遍历左子树,再访问根节点,最后遍历右子树)会得到一个递增的有序序列。结构特性:每个节点最多有两个子节点,通常称为左子节点和右子节点。没有父节点的节点称为根节点,而没有子节点的节点称为叶子节点。
2024-06-22 21:34:23
384
原创 堆及其java手写实现
堆(Heap)是计算机科学中一种常用且高效的数据结构,通常被实现为一个完全二叉树。这个树形结构中的每个节点都有一个关联的值,并且这个值遵循一定的规则,从而使得堆具备特殊的性质,主要分为两种类型:大顶堆和小顶堆。基本概念:完全二叉树:这是一种特殊的二叉树,除了最后一层外,每一层都被完全填满,最后一层的节点都尽可能地靠左排列。数组表示:由于完全二叉树的特性,堆常通过数组来紧凑存储,其中数组的索引关系反映了节点间的父子关系。
2024-06-22 20:37:45
402
原创 Select语句执行过程
执行一条 SQL 查询语句,期间发生了什么?连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;执行 SQL:执行 SQL 共有三个阶段:预处理阶段:检查表或字段是否存在;将select *中的符号扩展为表上的所有列。优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;
2024-06-18 19:52:19
826
原创 Java线程池参数和处理流程
线程池是一种管理和重用线程资源的机制,是利用池化思想设置和管理多线程的工具。线程池维护一定数量的线程,当有任务需要时,就从中选择一个的线程用来执行任务,当使用完成后该线程就会被重新放回线程池中,通过这样循环使用的方式来节省创建线程和销毁线程的各项资源开销。
2024-06-13 19:18:03
525
1
原创 JWT的组成和优势
JSON Web Token (JWT) 是一种开放标准(RFC 7519),提供了一种紧凑且自包含的方法,用于在各方之间安全地传输信息。JWT主要作为Web应用中的安全令牌使用,其核心特点是它的自包含性——即验证JWT有效性的所有必要信息都直接包含在JWT内部,无须查询数据库或其他外部资源。身份验证:用户登录后,服务器返回JWT,客户端后续请求携带JWT即可证明用户身份。授权:JWT可以包含用户角色或权限信息,服务端解析JWT后决定用户访问权限。单点登录(SSO)
2024-06-12 22:45:04
679
原创 CDN、CNAME、DNS
在进行A记录设置时,用户需要将域名的DNS记录设置为A类型,并指定要映射到的IP地址。完成设置后,当用户访问该域名时,计算机将通过A记录找到对应的IP地址,并访问该网站。通过将内容缓存到全球各地的节点,CDN可以减少用户访问网站的延迟。CNAME(Canonical Name)是一种DNS记录类型,用于将一个域名映射到另一个域名。通过CNAME设置,用户可以将一个域名指向另一个域名或IP地址。当用户在浏览器中输入域名时,计算机需要在DNS系统中找到对应的IP地址,以便能够访问该网站。
2024-06-11 21:11:24
665
原创 Redis中过期键删除
Redis中可以设置键的过期时间,并且通过取出过期字典(expires dict)中键的过期时间和当前时间比较来判断是否过期。那么一个过期的键是怎么被删除的呢?
2024-05-18 22:49:57
1070
原创 Redis持久化
这就是 RDB 快照的缺点,在服务器发生故障时,丢失的数据会比 AOF 持久化的方式更多,因为 RDB 快照是全量快照的方式,因此执行的频率不能太频繁,否则会影响 Redis 性能,而 AOF 日志可以以秒级的方式记录操作命令,所以丢失的数据就相对更少。使用子进程,fork创建子进程时,父子进程是共享内存数据的,不过这个共享的内存只能以只读的方式,而当父子进程任意一方修改了该共享内存,就会发生「写时复制」,于是父子进程就有了独立的数据副本,就不用加锁来保证数据安全。在整个 AOF 后台重写过程中,除了。
2024-05-17 20:34:13
840
原创 TCP/UDP通信中的部分函数
UDP(User Datagram Protocol,用户数据报协议)和TCP(Transmission Control Protocol,传输控制协议)是互联网协议套件中最常用的两种传输层协议,它们负责在互联网中端到端地传输数据。尽管它们服务于相似的目的,即在网络中的两个进程间传输数据,但它们的工作方式、特性和应用场景有所不同。
2024-05-14 13:00:00
721
原创 FairMOT环境搭建
环境搭建 FairMOT CenterTrack BuildTool Ninja RTX4060 GTX1650 cython-bbox DCnv2 cudatoolkit GPU Cuda
2023-10-28 20:41:12
273
1
原创 WSL2(Ubuntu 22.04.2 LTS) + Win11 + Bochs-Gui
Win11 + WSL2(Ubuntu 22.0.4.2 LTS) + Bochs debug gui
2023-03-29 22:12:23
904
原创 基于WebSocket + SpringBoot的聊天系统
使用Vue + WebSocket + SpringBoot + MongoDB + Mysql + Github图床 + GitHub Api调用+ BootStrap完成
2022-11-15 21:15:19
1581
原创 树的重建
树的重建已知二叉树的两序遍历求另一遍历注意已知前后遍历是无法唯一确认一棵树的,建议和笔者一样尝试一下。思路是根据前(后)序遍历,依次确定每个根节点,再根据中序遍历确认左右子树从而建树,因为建树过程(前+中->后)和后序遍历过程一致,故可以在建树时遍历,无需建完树再遍历。前序遍历是根->左->右,后序遍历是左->右->根,这就是为什么两断核心代码很是相似//前序和中序==>后序#include<iostream>using namespa
2021-03-17 21:37:38
1254
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人