- 博客(42)
- 收藏
- 关注
原创 Neo4j 入门到精通(Cypher语言详解)
Neo4j是一款开源图数据库,采用节点、关系和属性存储数据,支持高效的复杂关系查询。它提供ACID事务、集群部署和Cypher查询语言,适用于社交网络、推荐系统等场景。与关系型数据库相比,Neo4j在图遍历和连接查询方面具有天然优势。通过原生图存储结构和多种索引优化,Neo4j成为处理高度关联数据的理想选择,尤其擅长路径查找和关系分析。
2025-06-18 22:01:19
937
1
原创 RBAC(基于角色的访问控制)权限管理详解
RBAC(基于角色的访问控制)是一种权限管理模型,通过角色作为中间层连接用户和权限。核心是将用户与角色绑定,角色与权限绑定,实现灵活高效的权限控制。RBAC包含基础模型(RBAC0)、角色继承(RBAC1)、约束(RBAC2)和混合模型(RBAC3)。优势包括解耦用户权限、灵活角色分配、支持继承和便于审计。适用于企业管理系统、CMS、云平台等场景。相比ABAC,RBAC更适合角色固定的系统。现代开发框架已广泛支持RBAC实现。
2025-06-08 21:54:09
640
原创 LeetCode Hot100(技巧)
不难发现,我们可以统计所有的0,1,2的数量,但是看完其他人的题解后发现不太正确,因此可以通过指针去走,我采取的是一个三指针的方法,我们利用当前点为i,因为我们所有的2肯定是一定放在最后面,所以定义r指针为标记为2的,再创建一个指针标记为1的,那么当i遇到当前节点不是0的时候,l就往后去走找0,当l位置为2时,就放到r的地方,也就是把2从后往前放,就可以了,但是这样写起来代码比较复杂。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。,返回其中的多数元素。
2025-06-08 21:12:51
429
原创 LeetCode Hot100 (贪心)
我们知道对于每个位置有一个长度到达后面,其实,对于当前位置的长度,他可以是前一个位置的长度-1,或者是前两个位置的长度-2,那么我们就可以贪心下去,看看最后一格的长度是否大于0即可。实际上就是模拟题,我们记录每个字符所能够到达的最远的右边届,当当前位置等于遇到的所有的字符的最大右届的时候,就是一个分割的字符的答案了。这边思考了一个简单dp做法,我们发现,对于每一个位置,他应该是由前面的可以到达他的最小值+1转移过来的,那么我们直接模拟即可。数组中的每个元素代表你在该位置可以跳跃的最大长度。
2025-05-31 15:19:07
521
原创 LeetCode Hot100(动态规划)
我们直接可以手动模拟,设置dpi是当前位置是否能够被拼接成功,那么我们每一次枚举到一个位置,就去枚举所有的字串,如果当前的字串能够完全的匹配i和i-length+1的字串,就去看看i-length是否可以,如果可以当前位置也就可以了。我们由于只能分成两个集合,那么两个集合的和明显是总的和/2 ,记录总和为sum,每个数组的和也就是sum/2,又发现,每个元素只能拿一个,那我们如果能够抽起来sum/2就可以了,去跑一便01背包。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
2025-05-30 17:58:58
1047
原创 LeetCode Hot100(多维动态规划)
也算是比较板子的dp了,我们设dp[i][j]为以i和j为结尾的最长子序列,它实际上有两种可能,一个是i和j对应的字符相等,那么直接就是i-1,j-1加1即可,如果不同,就是i-1,j,或者i,j-1转移过来即可。比较板子的dp,实际上就是到达一个点有两种方式,从上面来或者是左边,加起来就可以了。这边直接采取的暴力的做法,枚举每一个字符串,看看是不是回文的即可。跟上一题一样,该题取一下最小值即可。与上一题几乎一致,看一下代码即可。
2025-05-29 21:30:59
406
原创 LeetCode Hot100(矩阵)
也就是围着图一直顺时针的绕行,我们开一个标记当前节点是否走过的数组,就会发现每一次我们会先往左走,然后下,然后右,然后上,模拟即可,但是需要注意一点,就是在判断是不是向左边走的时候,应该先判断可不可以向上面走。我们不难发现,n*m的时间复杂度是完全ok的,但是为了降低时间复杂度,我们可以根据当前矩阵的性质,枚举列,找到当前列第一个》=的,如果等于直接返回,然后由于每一列每一行都是递增的,一点点向上枚举即可。
2025-05-29 19:14:41
608
原创 LeetCode Hot100 (普通数组)
我们定义前一个为a,后面一个为b,进行排序之后(a小的在前面,其次b小的在前面),这样就成为了一个线段覆盖问题,就会出现三种情况,简单的前缀和问题,我们记录当前位置前面的乘机,与当前位置后面的乘机即可,注意末尾和0位置应当为1。简单的dp问题实际上,如果当前位置的前一个位置的和大于0我们直接加上,不大于就忽略即可。不难发现,最大的正数也不会超过数组的长度,建立数组,一个一个放入即可。2.当前线段与前一个交接了一部分(两条线段合并)1.当前线段被前一个包围(忽略即可)3.不包含(再起一段)
2025-05-28 22:01:45
329
原创 LeetCode Hot100(字串)
跟之前的滑动窗口非常像,我们只需要统计当前区间是否满足完全包含t就可以了,需要注意的一点是,最好通过左端点+len放最小值最后提取字符串时间较短。优先队列维护即可,因为自定义优先队列返回的是自定义最大最小值,我们每一次放入值之后,开始特判当前位置过期的就可以了。因为存在负数,该题只能直接暴力了,当然,也可以使用前缀和,但是时间复杂度一样。
2025-05-23 15:23:12
272
原创 LeetCode Hot100(滑动窗口)
跟上一题实际上是一样的思路,但是我们需要注意一点,一个是当前的字符长度应当等于我们需要的字符长度,另外一方面就是每个字母的数量也应当相等就可以了。我们都知道,每一个字母都对应一个ascii码,那我们从前往后遍历,当出现重复字符的时候,左边的指针开始走,直到把重复的字符删除。
2025-05-22 21:00:38
441
原创 LeetCode Hot100 (哈希)
排序之后进行hash,如果存在直接放到后面,不存在,新创一个即可,最后通过stream流拿到答案。比较简单,建立个map,看看有没有当前对应的相反的值就可以了。
2025-05-22 20:39:39
565
原创 Java 11 线程
建立一个中间的类,就相当于判断中间的类的状态,为true时开启生产的,关闭消费的,false则相反为了处理他们之间的关系,通常会采取共享的数据区域(缓存区),就像是一个仓库,生产生产完餐品之后放到生产区,不需要关心消费者,对于生产者也是一样的池里均为线程的对象线程创建一个线程的成本比较高,因为他涉及到与系统的交互,因为相当于来了个任务,我现创建对象线程池就相当于养着一些对象线程资源必须通过线程池维护,不允许在应用中自行显示/* 参数1:核心线程的数量(正式员工);
2025-05-20 22:28:29
196
原创 Java 08集合
/@Override//0 只有一个数据return 0;//1 正序排列return 1;//-1 倒叙排列return -1;//****也可以//升序排列this-o首先需要继承Comparable接口,该接口需要带着需要的实现类,加入需要比较的实现类即可重写里面的compareTo方法,进行比较即可就是自定义比较排序即可但是需要注意的是,一定要进行比较才可以。
2025-05-20 22:20:05
757
原创 Java 07异常
自定义编译时异常,继承Exception运行时异常,继承RuntimeException实际上就是创建一个类,去继承我需要的那个类,在编译或者运行的时候,实际上抛出的就是我自己写的那个类,那么就可以实现我自己写的异常去进行抛出。
2025-05-20 22:13:55
169
原创 Java 02入门,封装继承多态
让类与类之间产生关系(子父类关系),子类可以之间使用父类中的非私有成员父类也称为基类和超类子类也称为派生类格式:public class erzi extends fuqin{代表本类对象的引用代表父类储存空间的标识可以修饰方法,类,变量不能被重写,不能被继承,不能被赋值1.本质上就是文件夹,用来管理类文件的2.建包的语法格式,一般是公司域名的倒写+技术名称。,建议全部小写1.特殊的父类2.内部允许编写抽象的方法1.本质上就是规则的声明2。如果发现一个类,所有的组成,都是抽象方法。
2025-05-20 21:52:47
512
原创 Java 01简单集合
1. 一个可变的字符序列 2. 是字符串缓冲区,其理解为容器,可以储存任意数据类型,但只要进入这个容器,就会成为字符串跟 StringButter 是差不多的 StringBuilder 是多个线程是不安全的但是 StringBuffer 是线程安全的;但是需要的一点是,效率 StringBuilder 是效率较高的也就是安全的东西他的效率低,不安全的效率高为啥要用因为数组是固定长度的,但是集合可以自由扩容,也就是可变的。
2025-05-20 21:45:56
306
原创 Codeforces Global Round 27(A-D)
那么我们从前往后走,我们发现到了一个位置,会出现一个状态,是应该让前面的一个数字去乘以他前面的2的数量还是让全部的2去乘以最后的2的数量,这个情况其实很好解决,我们到达一个位置,如果前面那个数字到达当前的数字所有的2依旧小于前面的那个数字,那就不用选当前的位置,否者,就选最后的这个位置就可以了,可能翻译出来题意比较无语,实际上就是一个n*m的表格,第r,c走了,剩下的在他后面的点移动道他们前面的那个点的位置,问移动的麦哈顿距离,我们画图就能够发现第r+1到第n行的第一个会移动m搁,其他就是一格。
2024-10-28 13:00:43
1030
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人