安益空间
码龄11年
关注
提问 私信
  • 博客:187,950
    187,950
    总访问量
  • 76
    原创
  • 26,256
    排名
  • 619
    粉丝
  • 学习成就

个人简介:在适当的时候做适当的重构

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2014-03-08
博客简介:

u013978512的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    548
    当月
    3
个人成就
  • 获得195次点赞
  • 内容获得24次评论
  • 获得458次收藏
  • 代码片获得167次分享
创作历程
  • 6篇
    2024年
  • 13篇
    2023年
  • 9篇
    2022年
  • 15篇
    2021年
  • 20篇
    2020年
  • 10篇
    2019年
  • 5篇
    2018年
  • 18篇
    2017年
成就勋章
TA的专栏
  • 算法
    7篇
  • 工具
    1篇
  • spring boot
    1篇
  • 数据库
    4篇
  • java
    17篇
  • 函数表达式
    1篇
  • 线程池
    2篇
  • elasticsearch
    2篇
  • JSON
    1篇
  • 计算机技术
    5篇
  • 配置中心
    1篇
  • 监控
    1篇
  • 操作系统
    3篇
  • 计算机原理
    4篇
  • 多线程
    1篇
  • 锁
    2篇
  • 序列化
    1篇
  • 定时器
    1篇
  • kafka
    1篇
  • spring
    10篇
  • 设计模式
    8篇
  • 网络编程
    4篇
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

175人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

多层时间轮实现延迟消息

多层时间轮通常包含多个时间轮,每一层的精度和范围不同。例如,第一层(细粒度)可以管理毫秒级任务,第二层(中等粒度)可以管理秒级任务,第三层(粗粒度)可以管理分钟级任务。对于单层时间轮来说,如果要拉长延迟的时间,要么增加时间轮中槽的数量,要么增大前进指针的时间间隔。:每个时间轮都有一个指针,用于指向当前时间槽,随着时间的推移指针向前移动。这里的代码实现只是一个demo,主要是为了了解其中的思想。:每个时间轮包含若干时间槽,每个槽代表一个时间片段。:每个时间槽中包含一个任务链表,用于存储定时任务。
原创
发布博客 2024.09.25 ·
395 阅读 ·
10 点赞 ·
0 评论 ·
3 收藏

时间轮实现延迟消息

时间轮的精度由每个时间槽的间隔决定。这是因为时间轮只是管理任务的到期时间,很难确保同一槽内任务的先后顺序。多层时间轮虽然扩展了定时任务的时间范围,但也增加了实现和管理的复杂度。时间轮通过时间槽来组织定时任务,时间槽的数量是固定的,这使得时间轮的内存开销是有限的,不会随定时任务数量的增多而大幅增加。时间轮非常适合管理大量定时任务,尤其是在需要处理高频率的定时任务的应用场景中,例如网络数据包重传、缓存过期和调度任务等。轮盘实现的延迟消息(也称为时间轮)是一种高效的时间调度算法,用于管理和执行时间延迟操作。
原创
发布博客 2024.09.24 ·
346 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

用idea debug时,怎么在某个map对象中再加个key value

在用idea 进行 debug时,我们经常喜欢对某行代码打断点,然后对某个对象重新设置值,以快速地实现我们预期想覆盖的场景。通常的方式是用鼠标右键点击某个对象,然后选择。进行设置值,但是如果想在map中添加新的key value,这种方式就爱莫能助了,针对这个场景,我们可以采用Evaluate Expression实现。当然了,直接通过Evaluate Expression的图标直接进入Evaluate Expression窗口,再对需要修改的对象进行修改也是可以的。
原创
发布博客 2024.02.21 ·
1721 阅读 ·
9 点赞 ·
0 评论 ·
12 收藏

数据库事务

我们在数据库表中看到的一行记录可能实际上有多个版本,每个版本的记录除了有数据本身外,还要有一个表示版本的字段,记为 row trx_id,而这个字段就是使其产生的事务的 id,事务 ID 记为 transaction id,它在事务开始的时候向事务系统申请,按时间先后顺序递增。如:拿转账来说,假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是1000,这就是事务的一致性。读的时候加共享锁,也就是其他事务可以并发读,但是不能写。
原创
发布博客 2024.02.04 ·
1004 阅读 ·
18 点赞 ·
0 评论 ·
25 收藏

commons lang包常用方法集锦

在开发代码的时候,有一些工具类帮助的情况下,会更高效的完成代码实现。我们经常用的有commons-lang和guava工具包。下面针对common-lang包下常用的几个工具类进行函数说明。
原创
发布博客 2024.01.07 ·
1478 阅读 ·
23 点赞 ·
0 评论 ·
21 收藏

函数式编程及应用

Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的Java代码。Lambda 表达式描述了一个代码块(或者叫匿名方法),可以将其作为参数传递给构造方法或者普通方法以便后续执行。​()为 Lambda 表达式的参数列表(允许没有参数),->标识这串代码为 Lambda 表达式(也就是说,看到->就知道这是 Lambda),就是执行的代码,将“hello”打印到标准输出流。两者对比就可以看出代码的优雅程度。
原创
发布博客 2024.01.05 ·
935 阅读 ·
21 点赞 ·
0 评论 ·
22 收藏

es性能强悍的推演过程

es底层复用的Lucene的能力,Lucene在以前的文章中有所讲解,感兴趣可查看 https://blog.csdn.net/u013978512/article/details/125474873?blog本文主要讲解es的数据存储过程。Lucene中, 倒排索引一旦被创建就不可改变, 要添加或修改文档, 就需要重建整个倒排索引, 这就对一个index所能包含的数据量, 或index可以被更新的频率造成了很大的限制.
原创
发布博客 2023.11.13 ·
376 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程池创建、执行、销毁的原理解析

当一个线程执行完就会自动退出,但是我们知道线程池中的核心线程会一直存活着,想要一直存活,不退出程序就可以了,即循环,从上面的代码也可以看出来确实是这样的。从上面的解析可以看出,如果队列中没有任务时,小于核心数的线程(核心线程数不销毁的情况下)会一直阻塞在获取任务的方法,直到返回任务。当来第七个任务的时候,因为线程数量到最大限度了,taskQueue也满了,所以就会走拒绝策略,把其中一个任务给抛弃掉,具体抛弃哪个需要根据选择的拒绝策略来定。上面说了任务来了之后,是怎么创建线程的,又是怎么暂存任务的。
原创
发布博客 2023.11.10 ·
1409 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

JSONObject和JSONArray区别及注意事项

可以使用JSON.parse()方法,该方法会自动判断json的类型,然后调不同的方法进行反解析。若需要需要知道具体对象,通过如下的方式进一步判断就可以了。而JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , …, { } ] 来表示。则会抛异常,即对象形式的json不能用parseArray进行解析,数组形式的json也不能用parseObject进行解析。JSONObject的数据是用 { } 来表示的,jsonObject对象如下。
原创
发布博客 2023.10.17 ·
1482 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

elasticsearch基本语法

elasticsearch简介基本语法索引创建索引修改索引删除索引查询简单查询精确查询条件查询Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建而成。它提供了一个快速、可扩展和分布式的全文搜索引擎,适用于各种类型的数据和用例。以下是 Elasticsearch 的一些主要特点和功能:分布式架构:Elasticsearch 使用分布式架构,可以在多个节点上存储和处理数据。它具有高可用性和容错性,可以自动处理节点故障和数据复制。
原创
发布博客 2023.10.08 ·
330 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java中list对象拷贝至新的list对象并保持两个对象独立的方法

【代码】java中list对象拷贝至新的list对象并保持两个对象独立的方法。
原创
发布博客 2023.08.06 ·
5908 阅读 ·
1 点赞 ·
1 评论 ·
4 收藏

Get请求参数过多导致请求失败

这样,就可以加大请求头字节数量限制。这样虽然可以解决当前问题,但是指标不治本,对于请求参数过多的接口,最好是更换为post请求,或者从业务上思考,更换实现方式,减少类似大数据量传参。看了服务方没有打印日志,刚开始以为是客户端的问题,就在客户端侧打断点进行调试,但是结论是请求发给服务端了,并返回的结果,通过postman进行重新调佣,返回的结果如下。最后发现是tomcat默认请求头最长为8192,而get请求的参数全部在请求头里。在某几个Filter的doFilter方法打断点,请求没有走到断点处。
原创
发布博客 2023.06.17 ·
1937 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java中堆栈的实现总结

与Stack不同,Java里的Queue不是一个类,而是一个接口。Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue,因此Java集合大致也可分成List、Set、Queue、Map四种接口体系.接口中共定义了6个主要的方法方法描述add在队列尾部插入一个元素(队列满时抛异常)offer在队列尾部插入一个元素(队列满时返回false)remove返回队列头部的对象,并从栈中移除它(队列为空时,抛异常)
原创
发布博客 2023.03.20 ·
923 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

有重复数值的旋转排序数组的搜索

已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k)上进行了,使数组变为(下标计数)。例如,在下标5处经旋转后可能变为。给你的数组nums和一个整数target,请你编写一个函数来判断给定的目标值是否存在于数组中。如果nums中存在这个目标值target,则返回true,否则返回false。你必须尽可能减少整个操作步骤。
原创
发布博客 2023.03.01 ·
254 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

“合并区间”问题解析及其思考

不管见没见过,这样的写法都是没问题的,因为数组也是一个对象,可以放在list中。super T> c),通过指定要比较哪个字段,就可以实现对二维数组的排序了。从第二个开始,比较区间左边界是否小于等于基准区间的有边界,若符合,则说明两个区间有重叠,可以聚合,也就是说两者的右边界,哪个大选哪个作为基准区间的右边界。List list 想转化为list,就可以通过list.toArray()方法直接转化为二维数组。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。//list转为二维数组。
原创
发布博客 2023.02.17 ·
682 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

跳跃游戏 II 解析

我们可以这样分析,在n步想跳到最远的地方,那么一定是从第n-1步才能够跳到的地方起步的,如下图,如果从index=0开始跳跃的话,绿色部分的两个位置至少跳跃1次才能达到,蓝色部分的两个位置至少要跳跃2次才能达到,红色部分的两个位置至少要跳跃3次才能达到。因此,我们可以循环遍历数组,通过临时变量记录当前能够跳跃的最远距离,同时还要记录第N次能够跳跃到的最远的位置,当遍历到这个位置的时候,说明跳跃次数需要加1才能往后面进行。上面是一个长度为7的数组,最少用3步就可以达到末尾:index=[0,1,4]。
原创
发布博客 2023.02.09 ·
382 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

回溯法及与深度搜索和递归概念的区别

什么时候达到了终⽌条件,树中就可以看出,⼀般来说搜到叶⼦节点了,也就找到了满⾜条件的⼀条答案,把这个答案存放起来,并结束本层递归。一般大家用深度搜索时,或多或少会剪枝,因此深度搜索与回溯法没有什么不同,可以在它们之间画上一个等号。深度搜索能够在候选答案生成到一半时,就进行判断,抛弃不满足要求的答案,所以深度搜索比暴力搜索法要快。这个题就是需要穷举出所有符合条件的答案,那么通过前面的讲述,我们就可以很容易想到用回溯法进行实现。回溯法⼀般是在集合中递归搜索,集合的⼤⼩构成了树的宽度,递归的深度构成的树的深度。
原创
发布博客 2023.02.05 ·
1379 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

搜索旋转排序数组

用二分查找就可以,只不过与常规的二分查找相比,有更复杂的判断条件。如下图,假如target介于left和mid之间,那么会有下面三种可能,所以只要把三种情况的条件找准确,那么就变成基本的二分查找了。,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。整数数组 nums 按升序排列,数组中的值。
原创
发布博客 2023.02.02 ·
124 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

有限状态机

在讲有限状态机之前,我们先了解一下什么是计算。计算,简单来说就是有一个问题,然后给出答案。比如知道边长,求正方形的面积;又比如知道两个点和已知路径,求最短路径等等,有无穷无尽的问题。如果用计算机的模型去处理这些问题的话,我们希望是统一的。那么怎么将问题统一化呢?把所有问题都变成判定问题,即是和否有限状态机,顾名思义,就是在有限个状态之间流转,即FSM的下一个状态和输出是由输入和当前状态决定的。
原创
发布博客 2023.01.08 ·
2691 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

apollo配置中心的client端分析

apollo是携程开源的一款配置中心的产品。什么是配置中心呢?我们在开发的过程中最简单的就是在代码中hard coding,写好之后直接部署到生产环境,但是这样的弊端是每次修改一个简单的配置,就需要重新改代码重新上线,极大的浪费人力。apollo的作用正是在不上线的情况下可以动态实时的修改系统的配置数据。...
原创
发布博客 2022.08.14 ·
1985 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多