自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 收藏
  • 关注

原创 一个基于更新频率和卡片等级、浏览量的动态推荐排序算法

可以看到这个算法本身的逻辑并不难,它的难点在于如何分析出合理的参数,要基于当前系统的数据情况,未来业务的发展预期和想要达到的推荐效果,来得到算法的参数。

2024-04-23 15:50:30 681

原创 一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口

前言如何注册chatGPT,怎么和它交互,本文就不讲了;因为网上教程一大堆,而且你要使用的话,通常会再包一个算法服务,用来做一些数据训练和过滤处理之类的,业务服务基本不会直接与原生chatGPT交互。而下面阐述的,就是业务服务与算法服务的交互。

2024-04-23 11:28:58 810 1

原创 关于分布式锁的释放和spring事务提交时机不符合预期从而带来的数据不一致的问题

首先注意,本文探讨的不是分布式事务,请读者注意区分!在我们的日常开发种,分布式锁和spring事务是常见的两种控制数据一致性的方式。分布式锁和spring事务各自的作用就不做阐述了,不是本文重点,本文重点阐述一下锁释放和事务提交的问题。

2024-04-18 18:30:30 676

原创 关于fail-fast机制和集合中删除元素报错这件事

ConcurrentModificationException、fail-safe、fail-fast,循环遍历中删除元素报错

2024-04-17 11:49:41 232

原创 全网最全的订单超时状态更新的几种实现思路

全网最全的订单超时状态更新的实现思路,使用了jdk的delay,redis,rocketmq,订单超时系统等

2024-02-18 13:59:26 507

原创 思维发散之科学与魔法

魔法和科学分别怎么定义 有什么关系?哪个更厉害?神存在么?小说中的魔法、影视化魔法和科学化魔法又分别有什么区别

2024-01-08 16:45:03 834

原创 xxl-job日志调度没问题日志一直报错xxl-job provider netty_http server caught exception java.io.IOException: Con

[EmbedServer$EmbedHttpServerHandler:exceptionCaught:230] [TID:N/A]: >>>>>>>>>>> xxl-job provider netty_http server caught exceptionjava.io.IOException: Connection reset by peer

2023-09-21 12:02:37 1401

原创 漏洞修复-服务端请求伪造(SSRF)

点击上方名片关注我,为你带来更多踩坑案例- 什么是SSRF-SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统,因为服务器请求天然可以穿越防火墙。漏洞形成的原因大多是因为服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做正...

2023-03-31 12:00:52 1721 1

原创 排坑日记-事务回滚异常

点击上方名片关注我,为你带来更多踩坑案例现象这个报错不知道大家遇到过没有org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only报错的含义就是spring的事务回滚有...

2023-03-29 15:18:37 438

原创 系统设计-批量插入

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2023-03-28 18:44:02 208

原创 系统设计-文本内容保存之XSS过滤

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2022-11-25 10:00:06 404

原创 系统设计-常见的点赞功能如何实现?如何防止刷赞?

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2022-11-24 10:00:21 4364 1

原创 排坑日记-文件上传报错?全局异常处理!

点击上方名片关注我,为你带来更多踩坑案例有一个业务场景,是客户端(类似百度网盘)需要上传文件列表到服务端然后发现服务端抛了FileSizeLimitExceededException异常,部分文件上传失败接口如下:@RequestMapping("file-list")public ApiResponse<Object> batchUploadAssets(@...

2022-11-22 11:36:14 304

原创 系统设计-参数还能这么优雅校验?

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2022-11-15 09:00:12 149

原创 系统设计-当服务重启时,大部分人没考虑到的一点

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2022-11-14 10:30:06 112

原创 系统设计-领导让我设计一个任务系统

点击上方名片关注我,为你带来更多踩坑案例- 引言-如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈资而且,不同设计之间理念都是有借鉴性参考性的,你见过的设计多了,思考的多了,再次面临一个问题的时候,就会有很多点子不由自主的冒出来。希望这个系列的文...

2022-11-12 21:00:29 241

原创 每日小知识-redis热点key还能这么处理?

点击上方名片关注我,为你带来更多踩坑案例引导当你没时间阅读厚厚的书籍或者厌倦了长篇大论的面经那么这个系列适合你只需要在地铁上、吃饭时、厕所里,几分钟的时间就可以获得一个小知识每天一点小进步,日积月累之下你会感谢自己请关注我,持续为您带来更新小知识不管是在面试的时候,还是在日常工作中,很多人都会用到redis而redis的大部分用法都是日常缓存,用来减少数据库的读压力但是即便是redis如此的高性能...

2022-11-11 10:00:02 261

原创 每日小知识-学会这招,再也不怕依赖冲突!

点击上方名片关注我,为你带来更多踩坑案例引导当你没时间阅读厚厚的书籍或者厌倦了长篇大论的面经那么这个系列适合你只需要在地铁上、吃饭时、厕所里,几分钟的时间就可以获得一个小知识每天一点小进步,日积月累之下你会感谢自己请关注我,持续为您带来更新小知识你是否遇到过依赖冲突呢?特别是在创建新的项目或者引入新的依赖的时候No Such Method XXX上面的报错相信大家都遇到过90%的情况是因为依赖冲突...

2022-11-07 20:49:25 88

原创 排坑日记-获取不到类上的注解?空指针?

点击上方名片关注我,为你带来更多踩坑案例引导废话不多说,本文从现象-原因-解决办法三个方面来简述解决办法有多种,大家根据自己的情况自行选择想看解决办法的直接拉到最下面现象使用springboot,在执行类似如下代码的时候AbstractDataAuthHandler是一个抽象类类下面有几个标有DataAuthHandler注解的子类,分别实现了不同的功能想把注解中指定的value作为key,han...

2022-11-03 11:44:12 388

原创 排坑日记-jpa中字段总是自己莫名更新?

点击上方名片关注我,为你带来更多踩坑案例引导废话不多说,本文从现象-解决办法-原因三个方面来简述解决办法有多种,大家根据自己的情况自行选择现象使用springboot+mysql+jpa,在执行类似如下代码的时候List<ProjectEntity> projectEntityList = projectRepository.findAll();for(inti...

2022-11-02 11:25:20 929

原创 mysql中的bigint类型竟变成了它?

点击上方名片关注我,为你带来更多踩坑案例引导废话不多说,本文从现象-解决办法-原因三个方面来简述解决办法有多种,大家根据自己的情况自行选择现象mysql中的字段是bigint(20)类型,java中实体类的字段是Long类型,写了一个方法大概如下:@Query(value="selectidfromtest_peoplewherestatus=1",nativeQuery=...

2022-11-01 15:44:40 352

原创 排坑日记-docker中的服务,注册到xxljob中必须要注意的一点!

点击上方名片关注我,让你开发少踩坑还是在部署xxljob的时候,遇到的一个坑,其他基本操作按照官方文档来,不会出现什么问题,我这里列出的都是一些文档上没提到的可能会忽略的点。本文适合准备或者已经接入xxljob或者其他分布式调度平台的朋友查看出现的坑xxljob部署在docker容器中(以下简称服务端)业务应用的测试环境也部署在docker容器中(以下简称客户端)客户端整合了xxljob...

2022-10-28 22:30:33 388

原创 排坑日记-xxljob接入eureka必会遇到的坑!

背景在做一个项目时,需要引入分布式调度框架,最后选了xxl-job,在xxl-job部署的时候,自然要需要接入eureka,这个坑就是这个时候出现的。(客户端接入eureka的教程很简单,大家不清楚的可以自行百度)坑1-eureka的包要选对<!-- eureka --><dependency> <groupId>org.springframework.c...

2022-10-27 21:01:55 360

原创 记录一次接入xxl-job的踩坑记录

接入企业公用邮箱的邮箱告警改造关于xxl-job接入eureka的坑关于xxl-job注册到容器中关于调度器无法访问容器中的执行器的坑

2022-08-25 12:12:48 1452

原创 关于一次fullgc告警分析与分布式任务调度框架的选型调研

但是这次定时任务导致的fullgc引发了我的思考,其实在当今分布式应用的大环境下,我们还用之前老一套的定时任务去处理,确实会带来很多不便,比如这次的问题,如果采用分布式任务调度框架的话,是不是就能避免或者更早的发现这样的问题了?task1与task2的调度间隔为1s,但是因为task1与task2的执行时间都超过了1s,所以预期的时间间隔应该是。这里没有写每种分布式框架的原理,其实分布式调度框架的目的是一样的,所以注定了它的原理不会有太大的差异。对我们的业务场景而言,分布式调度框架的优点就是。...

2022-08-17 18:02:12 306

原创 一种通过部分下载zip快速解析目录结构的方法

在涉及到多文件上传时,为了效率,往往会打成压缩包上传,而有些场景需要将压缩包中文件的层级结构保留并做以展示,以供用户下载前预览。若按照正常流程,需要业务线服务端将压缩包下载并解压,然后得到文件大小、类型、相对路径等信息后做层级封装,返回给前端展示。但是此场景下的压缩包,往往文件数量和体积都不会小,所以服务端去一一下载并解压就会很耗费资源。于是此方案目的就是通过不完全下载压缩包来获取压缩包内文件结构。......

2022-08-16 17:51:18 530

原创 线程池的自定义策略

有一个上传任务,文件大概有数万,上传后发现有部分文件数据异常,查看日志发现有部分文件的异步事件未调用,所以猜测是否是调用的异步事件比较多,线程池阻塞队列满了。

2022-08-16 17:07:58 312

原创 100 万请求同时从 Redis 取相同的 Key,如何优化(热点key的问题)

背景其实这是一个很常见的场景我们单台redis的承载是有上限的业务场景中经常会有这种,比如热点商品抢购场景,热搜等,都会出现同时搜索同一个key的场景。哪怕部署了集群,通过一致性hash之后,这些请求还是会打到一个机子上,因为是一个key。如何发现热点数据主要针对的是C端,B端的话一是不会有这么高的并发,二是也能够预测中哪些是热点key。即便是C端,其实有些业务场景也是能够预测出热点key的,比如在做某些电商活动的时候,可以给一些热销商品做一个提前缓存。某些无法预测的,只能实时去处理,比

2022-03-24 11:57:41 2386 1

原创 用redis做注册中心如何感知服务的上线和下线?

这里是引用众所周知,分布式或者说微服务之间能够互相感知对方的存在,互相通信,就是因为有着注册中心的存在。springcloud常用的eureka、zookeeper,以及dubbo常用的zookeeper、redis等。这都是注册中心的不同实现。redis是相对来说使用的比较少的一种实例。redis注册中心的使用1. 存储形式服务在zookeeper中存放是以文件路径的形式存在的。而在redis中是以key-value形式存在的。外层的key是表明这个key存储的是生产者列表或者消费者.

2022-03-24 11:39:53 4143

原创 断言和异常的区别

二者的最大区别是业务异常还是需要修改代码的异常或者换句话讲断言:如果正常运行中不可能出现的错误,这种错误出现意味着编码有问题,是个bug,那就使用断言检测。它的目的是开发阶段用来检测编码异常的,一版在线上的版本都会使其失效。它属于契约式编程的一种。异常一般我们的业务异常,就是用户正常使用过程中会出现的异常,比如密码错误之类的,都会使用这个。...

2022-02-21 19:05:26 316

原创 jvm在分配内存的时候如何保证线程安全?

分配内存的时候为什么会线程不安全?因为JVM堆内存是共享的创建对象是会在多个线程中都会出现的操作线程在new对象的时候,需要拿一块内存去存放,可以理解为需要从一个空闲内存列表中拿取空闲内存。如果不做任何限制,那么多线程的场景下,极有可能出现多个线程分配到同一块内存的情况。也就是所谓的线程不安全了如何解决解决线程不安全的思想大概可以归为两类给线程不安全的方法加锁线程隔离解决方法1-加锁:一个很通用的思想就是,给线程不安全的操作加锁同样适用于分配内存如果我们给jvm堆中,分配内存这

2022-02-21 17:39:59 1617

原创 通过代理类获取原生类的方法

通过代理类对象获取原生类的工具类。因为有时候代理类上面没有一些原生类的信息,比如注解等,需要先获取到原始的类,再去获取注解。所以找到一个工具类方法,记录一下package com.shinedata.util.aop; import org.springframework.aop.framework.AdvisedSupport;import org.springframework.aop.framework.AopProxy;import org.springframework.aop.su

2022-02-21 15:37:23 2111

原创 jpa查询语句自动变成了update

今天在循环中查数据的时候,到了其中一条,每次断点一过去,就变成了update语句,最后发现问题所在,记录一下场景是我在循环中有个查询比如id分别为1,2,3的循环每次到查询2的时候,断点一过就会变成一条update语句。然后因为数据库设置了字段不为null,所以就会报一个更新错误。导致我一直以为是2的查询语句变成了更新语句其实不是,这条更新语句是1的更新语句因为在1查出来之后,对1的实体属性做了修改,但之后没有数据库操作,所以update语句没有提交,还在缓存中知道执行了2的查询,这个时候把

2022-02-18 18:58:13 1059

原创 循环依赖2-为什么会遇到循环依赖

上一篇文章主要阐述了解决循环依赖的几个方案,从简单到复杂,按照问题的紧急程度依次列出。在解决了循环依赖的问题后,空闲下来,我们肯定会思考一些问题,比如为什么会出现循环依赖?以后该如何避免?我的项目里还有没有循环依赖?解决bug并了解bug出现的深层次原因,才会使我们进步。循环依赖1-遇到循环依赖怎么解决.阅读本文前最好了解spring中的bean是怎么加载的,已经了解的可以直接往下了。没了解的可以参见我之前的一篇文章,这篇文章详解了spring几大思想,包括了bean的装载和使用,主要是整体的.

2022-02-18 18:07:04 1501

原创 循环依赖1-遇到循环依赖怎么解决

BeanCurrentlyInCreationException: Error creating bean with name 'TestService1':Requested bean is currently in creation: Is there an unresolvable circular reference?spring不是解决了循环依赖么?异步方法异步线程@Async导致的循环依赖?从设计层面解决循环依赖?怎么消除idea的依赖注入警告?依赖注入和构造方法注入哪个好?

2022-02-15 19:32:23 6062 3

原创 [问题记录]mysql中的bigint转换成Long?BigInteger?

java.math.BigInteger cannot be cast to java.lang.Long,mysql中的bigint和Long、BigInteger的问题

2022-02-08 20:00:33 3452

原创 java中的线程与操作系统的线程有什么区别

答:在多核操作系统中,jvm也会允许在一个进程内同时并发执行多个线程。java中的线程和操作系统中的线程分别存在于虚拟机和操作系统中,他们虽然不同,但却是一一对应,息息相关的。先总述一下,尽量概括到要点,接下来仔细阐述,阐述的详略程度视情况而定,别太简略就行。但是一定一定要条理,哪怕你讲的点都对,但是如果东一榔头西一棒槌,只会让人觉得你思路不清晰,或者知识不系统。阐述:我以线程创建与结束,来阐述一下他们的关系吧首先,日常开发中都是会使用线程池来获取或者创建线程的,而线程在创建时,其实是先创建一

2022-02-07 19:55:59 3173

原创 HashMap的初始值设定

在阅读代码的时候,发现使用hashMap的地方基本都没有指定初始值,尽管不会有太大的问题,但是这不是一个的好的编程习惯。我们需要注意两点,一个是hashmap中承载数组元素的大小,一个是负载因子如果我们可以确定hashMap中元素的数量,那么可以指定hashMap中table的初始大小,具体的对应如下new HashMap(m);mtable.length011122344458…888916…16.

2021-08-20 14:41:31 1947

原创 方法间的互相调用艺术

当我们写接口、写方法的时候,往往是一连串的方法,方法一致性原则、同步异步、事务、复用性等都要考虑到。中心的思想是类似的,但是具体的规范可能不同的公司、部门或者团队有着不同的习惯。命名的艺术接口名首先接口名字最好有一个统一的规范,比如一个controller或者Resource,总之一个模块内的接口,除了关键字外尽量保持一致。当然也有同学说过,api尽量保证restful风格的,注明是一个资源,多用名词少用动词,用get、post、delete来体现动作。这个我个人觉得倒是没必要太强求,毕竟有些.

2021-07-23 16:28:03 98

原创 eslasticsearch学习第二步:elasticsearch-head下操作数据

上一篇文章中,我们安装好了es及其相关的插件,这一篇文章就是使用es-head的可视化界面来对数据进行一些简单的操作es的api格式首先大概了解一下es的api格式,太详细的可以先不用管ES以RESTFul风格来命名API的, 其API的基本格式如下:http://<ip>:<port>/<索引>/<类型>/<文档id>也就是说,如果我想发送一个这样的请求http://localhost:9200/user/admin/1这里.

2021-07-06 18:19:42 620 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除