- 博客(123)
- 资源 (25)
- 问答 (4)
- 收藏
- 关注
转载 【转载】图解JDK7中的HashMap闭环和丢失问题
最近在复习准备面试,发现对于HashMap的1.7版本下头插法的问题,转载一篇优秀的文章关于HashMap的线程安全问题,网上资料很多。对于1.7版本的闭环问题,看了很多网上的资料一直搞不懂,今天又琢磨了一下,终于明白了,用自己看得懂的方式记录下。
2025-02-10 23:37:29
79
原创 idea新增java快捷键代码片段
最近在写一些算法题,有很多的List<List这种编写,想着能否自定义一下快捷键。直接在写代码输入:lli,即可看见提示。
2025-01-22 12:51:20
545
原创 Leetcode42-环形链表
a:从链表头到环的起始节点的距离。b:从环的起始节点到快慢指针相遇点的距离。c:环的长度。慢指针 slow 从头节点开始,走了 a + b 的距离到达相遇点。快指针 fast 从头节点开始,走了 a + b + n*c 的距离(其中 n 是快指针在环内绕的圈数)。slow 走的距离:a + bfast 走的距离:a + b + n*c由于快指针的速度是慢指针的两倍,得出: 2(a + b) = a + b + nc这表明慢指针走的距离a+b是环长度的整数倍。
2024-12-15 18:24:48
550
转载 LeetCode39-组合求和[回溯]
这道题硬解析会比较麻烦,但是使用回溯算法会比较简单一些,毕竟是个LT中等题;回溯算法:实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。选择。对于每个特定的解,每一步怎么构建,肯定都是有限个选择,要怎么选择,这个要知道;同时,在编程时候要定下,优先或合法的每一步选择的顺序,一般是通过多个if或者for循环来排列。条件。
2024-12-06 11:16:30
43
原创 工作纪实59-推荐结果打散
首先,我们明确打散算法的定义。其输入是算法端根据用户偏好程度排列的有序列表,每个对象拥有一个或多个需要加以区分的属性,输出的要求是将相似属性分散开后的一个列表。1、打散程度。究竟是让相同类目的尽可能分隔开,还是只要间隔一定距离就可以满足要求?2、打散依据的维度。是按照一种属性分开就可以,还是存在多种需要考虑分开的因素?3、打散的性能。
2024-12-02 20:24:30
884
原创 LeetCode-LCR 012. 寻找数组的中心下标【双指针】
一切尽在图中,可以把数组[1, 7, 3, 6, 5, 6]代入进去,最终返回下班应该是:3。
2024-10-07 17:08:20
495
原创 浅谈职业生涯接触到的服务架构
从2016年入行开始,伴随着前期几年的的项目和工作变动,陆续的接触到一些服务架构,包括现在的微服务架构;因为在现有的公司这两年接触的Service Mesh比较多,确切来说我一共在两个团队分别实践和使用了两套框架,虽然对现有的架构脉络梳理清楚(庞大且黑盒),引发了我对之前的架构认知的思考,想着既然打算年后换工作,先整理一下自己对服务架构这块浅显的理解,也欢迎大家指教真要动笔才发现对服务架构理解真的很浅,只能持续的阅读和汲取一些优秀博主的精华,加之自己的理解,产出这一篇文章;
2024-10-02 11:36:25
1303
1
原创 工作纪实58-Idea打jar包
有时候需要配合算法使用spark定时DP,调用java相关的jar包做数据处理。idea打jar包有以下三种场景。
2024-09-24 16:58:14
321
原创 工作纪实56-ES搜索串一致性
最近接收到了一个需求,一个用户有一组数据,比如字符串:abcdefg,如果新增的数据是abdcdfge,则视为是同一条数据,可以理解为即使顺序不同,但是实际上也是唯一串;
2024-08-22 10:15:39
536
原创 工作纪实55-数组取笛卡尔积
比如:arr1=[1,2], arr2=[3,4,5]⇒ result = [1,3],[1,4],[1,5],[2,3],[2,4],[2,5]手上有个需求,需要对历史数据清洗,有一段场景是有N个数组,分别要对每个数组做交叉取一个值,行成笛卡尔积。搞定,使用三次for循环也是没办法;各位是否有其他的好办法,欢迎留言。
2024-08-19 19:19:45
158
原创 工作纪实54-git使用ssh方式
生成秘钥的命令很关键,不要忽视公司的情况去网上搜,有时候是无用功,不同公司的git版本不一样,有的甚至做二次封装,以实际情况为准。
2024-07-30 19:42:00
347
原创 工作纪实53-log4j日志打印文件隔离
指定了包的日志输出,又指定了这个包下面子包的日志输出,如果在子包的定义标签上加上additivity=false,那么子包中的日志不会打印在父包中,只会在子包中输出。在项目中,我有一堆业务日志需要打印,另一部分的日志,是没有格式的,需要被云平台离线解析并收集到kafka或者hdfs、hive等,需要将日志隔离打印到不同的文件。算法同学希望单独在dump.log中进行日志打印,而后他们去配置采集的逻辑,发现web.log居然也有dump.log的日志,重复打印了;关键代码:additivity。
2024-07-19 17:38:57
494
转载 (粉丝福利局)java面试-场景题汇总
这样,在已经得知到已读消息的数量和具体消息 id 的情况下,我们可以直接使用消息 id 来查询没有消费过的数据。这个方案看起来没什么问题,但实际上,我们把所有用户通知的消息全部放在一个表里面,如果有 10W 个用户,那么同样的消息需要存储 10W 条。只需要设计一个消息内容表和一个用户通知表,当创建一条系统通知后,数据插入到消息内容表。每个用户去获取未读消息的时候,只需要查询大于当前维护的 msg_id_offset 的数据即可。如果是站内渠道,在插入消息内容后异步的插入记录到用户通知表。
2024-07-05 16:18:19
3916
原创 LeetCode LCR 016. 无重复字符的最长子串(滑动窗口)
使用滑动窗口算法,left和right指针;right指针遭遇相同的值的时候,意味着left指针需要往右边移动一下,此时需要清空bucket,不用担心丢失数据,因为max早就记录了,只需要不断地移动两个指针比较接口最大值max要反复取下面的代码很关键,如果right指针遭遇了相同的字符串,如果;if (left!= 0) {
2024-07-02 20:13:43
302
原创 3、加密算法-AES和RSA
它是一个唯一对应一个消息或文本的固定长度的值,它由一个单项Hash函数对消息进行计算而产出;不定长的数据===》数字摘要算法(Hash)====>定长的数据不用纠结非对称加密的公私秘钥在前端or后台生成,关键是看场景和主导方RSA拿来做签名是:私钥加密,公钥解密RSA拿来做数据传输加密是:公钥加密,私钥解密jwt的token案例在了解RSA的逻辑之后,会变得非常简单。
2024-07-02 10:11:26
1952
原创 工作纪实51-手撸AB实验分流策略
前几天写了一篇关于哈希算法的文章,起源就是在构思AB实验平台的时候,用到了哈希,所以对其做了深入的了解AB实验平台是一般互联网做策略、样式实验会用到的一个系统,一般开启某个实验之后,需要对线上流量进行分流:客户端->实验平台->策略平台->应用服务,大概是这个链路。
2024-06-28 18:02:10
5139
2
原创 2、Hash算法-自我解读
哈希算法和一致性哈希,不是一回事儿TreeMap 的 ceilingEntry 方法的作用是在 TreeMap 中找到大于或等于指定键值的最小键值对,使用它可以模拟哈希环如果构建了虚拟节点,其实投射到哈希环上的哈希值,都是虚拟节点的哈希值,只不过每个虚拟节点的指向性是一个真实的Node机器,但是这样不妨碍它确实是让数据分布变得更均匀虚拟节点个数挂载的越多,数据分布越均衡,大家可以试一下改一下值,我代码里面设置的是3。
2024-06-28 02:21:31
1187
原创 1、加密算法-MD5随机盐
MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。
2024-06-27 12:17:57
1198
原创 LeetCode80-删除有序数组中的重复项(2-快慢指针)
需要理解题意,数组本身是有序的,也就意味相同值肯定是挨着的需要理解一下为什么slow=2,是因为要从数组的第一个开始重新进行赋值。
2024-06-16 14:44:39
322
原创 LeetCode70-爬楼梯【斐波那契】
其实和高中的数学归纳法有点像,对前面的几个情况进行穷举就会发现是一个斐波那契数列递归法写法简单,但是对栈内存的开销存在一定的损耗,推荐for循环。
2024-06-05 22:17:01
439
原创 LeetCode22-移除元素【双指针】
如果使用单指针遍历数组,每遇到一个目标值就需要将后面所有元素向前移动一位。这样会产生大量的赋值操作,效率较低。双指针方法只需要在遇到目标值时,将当前位置的值替换为数组末尾的值,然后缩小右指针的范围。这样可以大大减少不必要的赋值操作。不要纠结绝对的有序,另外right的边界需要自己理解一下。
2024-05-30 14:33:46
452
原创 LeetCode88-合并两个有序数组(双指针)
使用双指针优点是不用考虑数组的扩容和赋值;直接对两个数组从右往左进行指针移动,哪个大取哪个值放到尾部,同时移动对应数组的指针,较小值的数组指针不动;同时考虑两个数组的边界,移动到下标为-1时,说明已经结束,其他的值直接使用另外一个数组指针移动的值即可拿纸笔画一画更容易理解。
2024-05-30 14:30:59
264
原创 工作纪实50-Idea下载项目乱码
下载了公司的一份项目代码,发现是gbk格式的,但是我的日常习惯又是utf-8,下载项目以后全是乱码,脑瓜子疼借用网友的一张图,如果是一个一个文件这么搞,真的是蛋疼,好几百个文件!
2024-05-28 21:59:16
379
testng官方文档翻译.md
2020-01-10
SpringBoot集成Quartz分布式定时任务
2018-11-01
Netty权威指南第二版 MessagePack部分源码
2018-04-12
msgpack-0.6.7jar包
2018-04-11
hadoop-2.7.5,hbase1.2.6.zookeeper.3.3.6完全分布式安装教程
2018-03-16
SSM整合KindEditor-4.11编辑器
2017-12-26
slf4j-1.7.25jar包+logback-1.2.3jar包
2017-12-05
CXF协议WebService+Spring客户端和服务端程序,实现了多数据源动态切换
2017-12-05
纯Socket编写的client和server端2个程序,多线程文件异步上传,通信
2017-12-05
Mybatis批量插入出现OOM异常
2021-04-16
Spring Security OAuth2获取授权码code的接口跳转的思考
2021-03-26
Idea的debug模式查看整个链路调用
2021-03-25
SpringSecurity OAuth2.0获取授权码的触发问题
2021-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人