- 博客(16)
- 收藏
- 关注
原创 request.getRequestedSessionId()与session.getId()的异同
同理我们可以通过删除JSESSIONID验证,每次删除JSESSIONID的cookie再进行访问时,在session.getid()之前调用request.getRequestedSessionId()获取到的值一定为null。如果未删除相应cookie,重启服务器,第一次调用request.getRequestedSessionId()时,所获取到的值,为上一次(即重启服务之前的最后一次)session.getid()的值。这里可以分成两种情况。如果我们是第一次创建session。
2023-04-20 17:43:29 1678
原创 Java中遇到的地址问题【与C语言的不同】
如果将对象的创建放在while内,则输出改变为。如果保持上述代码不变,结果就是。这就会导致了一个问题。
2023-04-13 11:33:42 145
原创 SpringCloud学习笔记
类的choose方法,RoundRobinRule翻译过来就是轮询调度,至此,了解到了通过微服务名获取微服务真实地址并且实现负载均衡的全过程。中,发现他执行了一个IRule接口的一个实现类的choose方法,我们找到这个IRule接口的实现类,结果发现了他的default_rule。从Eureka-server中获取对应的实例列表,然后通过轮询调度的方法实现负载均衡,最后交给我们的微服务调用该实例的方法。类中发现了这个对象,这个对象包装了在eureka中获取到的真实地址以及端口号。我们最终发现,他调用的。
2023-04-11 19:40:19 64
原创 delete触发器在设置级联删除和级联更新产生的异常问题,导致触发器无法找到对应id
这是user表和comment表的创建语句,有对应的foreign key约束,现在讨论如何在有约束和级联删除的情况下直接删除user表中的数据。
2023-04-11 11:42:31 168
原创 关于Hashtable 与 HashMap的异同
Hashtable 与 HashMap 从表面上看有着众多不同但是 我希望各位能够理解 造成这种表面不同的本质是的不同。那么这两个类的设计思想有什么不同呢?设计思想的不同又是如何导致这些表面上的不同呢?这是我们接下来要讨论的核心。
2023-04-06 17:49:14 61
原创 关于Huffman编码的叶子节点与根节点权相等时的数学等价证明
如图,我们假设灰色填充的节点为叶子节点,白色填充的为根节点(证明过程非常简单,但重要的不是证明过程,而是发出证明的想法,以及发现Huffman编码的精妙)。Huffman编码的基础构建模式就是将两个权最小的节点组成一个新的节点,并将这个新节点放入到原数组当中当作一个新的节点,我们上面说过,Huffman编码是为了减少存储空间而存在的一种重写字符集的算法,那么,设白15的深度为X,权为N则在如图所示结构的情况下,编码长度为。证明完毕,在权相等的情况下,根节点与叶子节点等价。首先我们需要回答两个问题,
2023-03-15 09:53:37 151
原创 关于基本数据类型的封装类的思考
个人认为没有将这两个数据声明为抽象函数的原因是这两个类对应的基本数据类型所占的字节数太小,导致其他大部分数据类型进行拆箱操作时会导致严重的数据丢失,所以并没有强制让其他封装类继承。都拥有这个性质(Byte,Short,Integer,Long)包括Char也同样拥有这个性质,相关源代码除了Character类,都与Byte类类似。,当我们封装一个该范围内的byte类型数时,我们将直接返回那个Byte数组中的对应值,此方法提高了[-128,127]的封装速度而这个。实际上,不止Byte类拥有这个性质,
2023-03-14 16:58:24 100
原创 Springboot+Redis 重写Redistemplate实现序列化
通过 RedisSerializer接口的实现方法中我们可以看出,有如下几种序列化方法,我们接下来主要使用的是Jackson2JsonRedisSerializer和StringRedisSerializer(分别用来序列化value和key)至于为什么是四种,源码中只有四种,所以设置四种就好了(源码部分在代码中注释起来了)这个类里面只有一个RedisTemplate一个方法,首先我们需要将序列化配置好。首先,因为系统自带的序列化方式并不复合我们自己的需求,而源码中。并不复合我们的实际需求。
2022-12-15 23:31:59 992
原创 SpringBoot整合Shiro笔记
doGetAuthorizationInfo方法检查是否被授权,我们通常会通过数据库中的用户数据来查询用户是否具有该权限,该用户数据可以通过在doGetAuthenticationInfo中已经获得过的principal进行验证,如果发现不具有该权限,则像认证操作时一样,我们同样会抛出异常,进入到在shiroFilterFactoryBean中已经设置好的controller例如。其中的登录操作是交由shiro来进行的,密码并不需要我们来验证,由shiro来做这件事(个人认为体现了shiro的安全性)
2022-11-22 15:03:45 341
原创 高精度除法(附源代码)
2.与乘法不同,我们需要先将结果数组翻转再进行去除前导0的工作(因为除了除法,我们都是从低位开始计算,只有除法是从高位,所以最终结果与其他算法相反,需要翻转除0)1.虽然在高精度除法看来,从高位开始存储的方式明显更加复合除法逻辑,但是为了迎合高精度数的加减乘法,这里我们依旧采用的是从低位开始存储。该算法的适用场景是超大数除一般数。
2022-11-13 12:30:53 225
原创 高精度乘法(附源代码)
2.涉及到的边界问题是当A乘到最高位时,t中依然存在需要进位的数(这个情况肯定是普遍存在的),我们需要把t中剩下的数按照进位规则加到数的末尾(由于数据的存储方式,加到末尾的意思是加大最高位)该算法的适用场景是超大数乘一般数。1.存储结构是从低位开始存储。
2022-11-13 12:16:42 191
原创 高精度加减法(附源代码)
2.存储算法时,从低位开始存储,(虽然会导致之后的高精度除法需要稍微多一些的操作,但是数据在计算的过程中应该遵守其源数据不变的原则)整体思路就是回想自己做加法时的步骤就可以了.该算法的适用场景是超大数的加法运算。1.保证A的位数大于B。
2022-11-13 12:08:18 565
原创 跳跃游戏Ⅲ(递归超时版 附标准答案)
遍历所有非0元素,判断是否可以跳跃至该location元素点,如果不行,则返回false,如果可以则跳跃至该点设为location并令该点为50001,并判断是否为start点,如果不是,则重复以上操作,直到找到start点为止.输入:arr = [4,2,3,0,3,1,2], start = 5。输入:arr = [4,2,3,0,3,1,2], start = 0。输入:arr = [3,0,2,1,2], start = 2。下标 0 -> 下标 4 -> 下标 1 -> 下标 3。
2022-09-06 21:15:33 99
原创 跳跃游戏Ⅱ(超时版 附贪心算法)
总的来说,就类似于深度遍历,遍历到最后一个能到达终点的节点时返回上一个节点比较父节点下所有节点的跳跃次数,取最小的跳跃次数为该节点的跳跃次数然后交给该父节点的父节点,依次类推,得到的就是第一个节点的最小跳跃数.获取当前节点跳跃范围里的子节点能够到达的最远距离,并以此节点为父节点重复上述步骤,这个算法的时间复杂度,只有O(1),目前是解决这类问题最好的算法.这种算法的思路是通过局部的最优解来得到全局最优解,也就是贪心算法的本质思路.以下是标准答案(贪心算法版)
2022-09-06 16:38:16 669
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人