自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 事务的传播机制/冒泡机制 propagation

需要事务,有事务则使用已有的,如果没有则创建一个新的,用在写操作上。支持上层事务,有事务则支持,无事务则不做任何处理。若当前有事务,则以嵌套的方式执行事务,若没有执行REQUIRED。必须外部提供事务,若没有则抛出异常。无论是否有事务都创建一个新事务。不支持事务,有事务则抛出异常。不支持事务,如果有事务则挂起。

2024-08-06 22:46:03 473

原创 事务的四大特性和隔离级别

可重复读:mysql InnoDB默认 可能导致幻读。幻读:事务A重复读的数据被另一个事务改了,但事务A看不到。读未提交:可能导致脏读。一个事务能看到另一个事务的数据未提交的数据,若另一个事务提交失败,则导致脏读。

2024-08-06 22:41:54 483

原创 Mybatis一级缓存与二级缓存

当mydatis需要关联查询时,会使一条sql语句附加n条关联查询语句,即1+n问题,为了解决这个问题mybatis提供了延迟加载和缓存机制,本节讲缓存机制。当不开启延迟加载时,1+n条sql语句同时发送至数据库,这时n+1条sql语句是在同一个会话当中,一级缓存自动生效,即相同的sql语句只会执行一次。

2024-08-05 21:28:53 821

原创 Java六种单例模式

确保一个类只有一个实例,并提供该实例的全局访问点。这样做的好处是:有些实例,全局只需要一个就够了,使用单例模式就可以避免一个全局使用的类,频繁的创建与销毁,耗费系统资源。

2024-08-05 21:21:23 313

原创 n-皇后问题的对角线与反对角线的坐标映射

此时若我们从三个数据中找出一个公式且公式的结果是相同的就可以当作我们来判断任意两个点是否在同一条对角线上的依据,不难看出y - x恒等于b,那我们就可以用一个bool数组维护x-y的值,若bool[y - x] = true;说明此对角线上已经有值,则不能放在该点,需要特殊注意的是,若b为负数会导致数组越界,此时要加上一个场数n使得结果恒大于0,即y - x + n;我们假设两个点在一个 y = kx + b上的直线上,当k = 1则线上的点都在一条对角线上,当k = -1则线上的点都在反对角线上,

2024-07-27 22:04:48 575

原创 快速幂速通

当我们要手动实现一个pow(x,n)函数的时候,一般做法是将x迭代n次,每次res*=x,最后res便是答案,可若n的值过长,在竞赛或项目中被卡时间,我们就需要优化这种做法,这种做法就叫做快速幂,或者反复相乘法。

2024-07-27 21:15:31 404

原创 完全背包问题一纬状态是怎么推导出的,结果为什么和01背包问题转移方程如此类似!

这个问题相信对于很多小伙伴来说不难,只是01背包问题的加强版,01背包只能选一个,完全背包可以选无数个,想解决这个问题并不难,只需要再嵌套一层循环,将每个选法的方案数纪录下来即可,代码实现如下。但是,如果题目对于时间有要求,这种三重循环的做法未免太过于暴力,如果n为1000的话时间复杂度高达10^9,显然会超时,那么我们该如何优化呢?

2024-07-22 21:19:44 603

原创 为什么01背包问题可以从二维转换成一纬

题目如图题目来自acwing01背包问题是一个十分经典的dp问题,相信点进这个题目的小伙伴已经对这个问题有了进本的认识,原理我们不多赘述,上正文。

2024-07-22 20:08:04 878

原创 单一括号序列问题(两个条件)

第二个条件题目已经满足,只需要在深搜时判断第一个条件是否满足即可,代码如下。只要满足这两个条件,括号序列就是合法,拿leetcode22题为例子。要想某单一括号序列合法只需要满足两个条件。1、任意前缀左括号数量大于等于右括号数量。2、左右括号数量相等。

2024-07-21 00:15:00 204

原创 优化版的Dijkstra和spfa写法相似的原因以及区别

众所周知,Dijkstra先将所有节点到起点的距离设为正无穷,再将起点到起点的距离设为0,通过n次循环,每次循环找出距离起点最短的点,用该点更新它的相邻节点到起始点的距离,这样n次循环之后即可确定终点到起点的最短距离是多少。而每次寻找距离起点最短距离的点若不使用最小堆来维护,则需要O(n)的时间,若使用堆则只需要O(1),这就是堆优化版的Dijkstra。

2024-07-20 11:26:08 966

原创 关于二分查找的边界问题

二分查找每次缩小范围时有两种情况,一种是l = mid,另一种是r = mid,当l=mid时mid必须要加1向上取整,不然会陷入l = l的死循环,而r = mid时不要用加1,因为下一步l=r会自动退出循环。在处理二分问题时我们总会疑惑mid = l + r >> 1 OR mid = l + r + 1>> 1。只要像记公式一样记住该场景就再也不会出现纠结加不加1了。

2024-07-20 11:00:45 376

空空如也

空空如也

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

TA关注的人

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