![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
躺平的乐子人
少说话,多做事
展开
-
稀疏数组的保存优化(java版本)
非 0 元素的数目,并且非 0 元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非 0 元素数目占大多数时,则称该矩阵为稠密矩阵。这种稀疏矩阵保存有价值的数据较少,所以可以进行压缩,建议一个新的数组,记录每个非0的坐标和值,比如一个n维数组可以建议一个(n+1)维数组来记录值,这样可以大大减少保存成本,但需要注意的是,当元素个数超过1/(n+1)的时候,这种存储算法会超过其原来的成本。矩阵中,若数值为 0 的元素数目。原创 2023-11-12 22:05:25 · 354 阅读 · 0 评论 -
dubbo集成Springboot的简单教程
我使用的环境是dubbo3.0版本,SpringBoot2.4.2,为了简单起见,我定义prodcuer和consumer两个模块,基本还原了Dubbo远程调用的流程,在实验之前必须先开启zk。原创 2022-09-19 22:26:34 · 673 阅读 · 0 评论 -
牛客BM78-动态规划之打家劫舍问题
回到题目,这道题说,小偷偷了这一家人,就偷不了前一家和后一家的人,那么核心就在于偷不偷这一家人,偷痛失前后两家的收益,不偷则失去这一家的收益, 为了简单,我们可以 设定拿出三个的数组dp[1,2,3],dp的最大的收益是 dp[0]+dp[3] 或者是dp[2],所以我们的每一个计算最大的收益都是两者比较的值的累计之。做法如下,我们从第三个只要我们每次获得上上一个,上一个和自己的最大值,就可以获得自己的最大收益,再用数组存起来,最后一个的值,就是最后的收益。原创 2022-09-30 17:14:57 · 105 阅读 · 0 评论 -
牛客BM68-动态规划之最小路径之和
【代码】牛客BM68-动态规划之最小路径之和。原创 2022-09-27 13:01:01 · 92 阅读 · 0 评论 -
牛客BM63-动态规划之跳台阶问题
如果我们从头开始看,从第三个台阶有几种跳法?为什么要说从第三个台阶开始呢,因为第三个台阶包含了青蛙跳两步 和青蛙跳一步的所有情况,即 1+2,1+1+1,2+1的情况,我们在简化一下把(1+1)+1 简化为 2+1,其实第三台阶的就是只有1+2或者2+1的跳法,第三个跳法就是前一步,前两步跳法的总和。这就和我们的斐波那契数列很相似了,类比到第四和第五都是类似的情况,到了这里,解决的思路就很清晰了。原创 2022-09-27 11:50:19 · 199 阅读 · 0 评论 -
浅析Java的static和synchonrized的线程安全性
java的static其实和线程的安全性一点关系都没有,static定义的就是用在类成员变量,在jvm里面就是共享的,一个不恰当的比喻是 像没关门的房子,谁来都能进。如果想保证线程安全又想使用static,最好加上synchonrized。那么static有什么用,正如前面说的没关上门的房子,staitc定义一些无关线程安全的东西,如配置类,工具类这些东西,因为static在jvm里面是独一份的,避免这些方法反而创建而消耗内存,直接调用反而省事。原创 2022-09-18 13:55:51 · 1083 阅读 · 0 评论 -
浅析java的Runnable,Callable和Thread三种创建线程的方式
java线程的创建方式有三种,但形式各不相同,具体的差异如下单继承。原创 2022-09-17 22:59:44 · 595 阅读 · 0 评论 -
HashMap1.8的扩容的核心方法-resize()源码分析
HashMap1.8以后的扩容机制为当Node数组占用超过0.75,就进行扩容,扩容大小为原长度*2。原创 2022-09-13 15:17:32 · 367 阅读 · 0 评论 -
SpringBoot集成Hutool防止XSS攻击实现
xss是跨站攻击脚本的简写。xss的攻击方式是发生在用户使用浏览器时候运行,通过嵌入脚本窃取用户信息(如cookie等)。相比钓鱼网站更难被发现,一般是用JavaScript实现。//拦截请求@Override}@Override//先进行转义在把请求返回}@Override}}原创 2022-09-03 18:24:23 · 3008 阅读 · 0 评论 -
Java的反射理解
关于java反射机制的理解原创 2022-08-20 23:57:17 · 177 阅读 · 1 评论