各大实战问题分析
文章平均质量分 73
该分类专栏主要是贴合实际开发,根据业务分析问题。
ABin-阿斌
写一生代码,创一世佳话,筑一览芳华。
展开
-
针对MaxCompute优化案例分享
MaxCompute 是阿里巴巴集团推出的一种大数据计算平台,用于处理海量数据和进行数据分析。它提供了高可靠性、高扩展性和高性能的数据处理能力,支持 SQL 查询、MapReduce 计算和机器学习等多种计算模型。MaxCompute 主要用于数据仓库构建、数据挖掘、数据分析和业务智能等领域。通过MaxCompute,用户可以方便地进行数据处理、分析和挖掘,以支持业务决策和数据驱动的应用场景。原创 2024-04-15 23:05:38 · 286 阅读 · 0 评论 -
Mysql生产问题排查
某天用户反馈线上产品报错,迅速排查发现,上述表中新接入了一个业务:在dataworks接入了一个新的group(假设名字叫bad_group),同步任务在当天异常往mysql表里导了千万量级数据(其中实际有效的只有几千条,其余为脏数据),导致线上产品查询缓慢、报错。定位到问题以后,第一反应是把错误的bad_group的数据先全部清掉,保留其他group的数据,恢复上线查询,然后再慢慢想办法重新导入正确数据,可惜没想到。。。。原创 2024-04-15 22:58:18 · 155 阅读 · 0 评论 -
Collectors.toMap 引起的 Duplicate key xxx 的错误,你真的分析对了?
前言有时候看到报错日志打印出:Duplicate key,乍一看,很简单主键重复。如果项目系统监控日志做的好可能马上能定位出具体的代码方法和具体行数,但是日志系统做的不好,那就单单这个一个报错如何分析呢?那么这个时候就先定位到具体的接口和方法,然后排查方法中的代码是否使用到了:Collectors.toMap 这个方法,因为HashMap的key重复是否引起这个异常的。下面这篇文章我看了一下写的还不错,通俗易懂,也讲明了原理,对新手朋友很友好,有兴趣可以已观看一下。参考文章点击此处可跳转:原创 2024-04-08 23:56:04 · 285 阅读 · 1 评论 -
SpringBoot:自定义线程池配置类
有时候我们在项目中做一些长链路的跑批任务时,基于Springboot项目的定时任务,我们可以指定一个自定义的线程配置类进行单独提供给具体跑批任务使用,而不占用整个系统资源。原创 2024-03-29 23:34:46 · 845 阅读 · 0 评论 -
IDEA:项目启动时报错:java.lang.OutOfMemoryError: GC overhead limit exceeded
项目时,MAVEN一直报错:java.lang.OutOfMemoryError: GC overhead limit exceeded,多次刷新问题依然存在;项目时,MAVEN一直报错:java.lang.OutOfMemoryError: GC overhead limit exceeded,多次刷新问题依然存在;中执行:mvn clean install -DskipTests -Dfull,运行正常可以得到期望的结果;调整webservice。调整webservice。转载 2024-03-22 23:15:22 · 278 阅读 · 0 评论 -
你真的了解所谓的压测吗?
这里就重点介绍一下比较常用的工具:JMeter,JMeter(Apache JMeter)是一个功能强大的开源压力测试工具,主要用于对 Web 应用程序和各种服务进行性能测试。原创 2024-03-18 14:56:13 · 687 阅读 · 0 评论 -
数据同步操作需要注意哪些点?
前言有时候基于业务,我们会做一些数据清洗,或者老项目数据同步新项目的相关操作。在做这些业务的时候,往往需要注意一些必要的关键点,否则会造成数据的错乱,我们知道数据一单错乱是很难处理的。参考文章原作者:捡田螺的小男孩点击此处可跳转:数据同步操作需要思考哪些维度?原创 2024-03-17 17:00:43 · 145 阅读 · 0 评论 -
SOFA 相关框架你有没有听过?
一、 前言1、什么是 SOFA?SOFA 是 Simple Object-oriented and Flexible Architecture 的简称,是阿里巴巴国际技术事业部自研的专门针对复杂业务场景的应用架构SOFA是蚂蚁自研的一套金融级分布式中间件,目前正在逐步向业界开源。SOFA的全称有两个,最早是Service Oriented Fabric Architecture,即面向服务的架构。随着2018年的开源,其全称改为Scalable Open Financial Architectur原创 2024-03-14 15:51:41 · 273 阅读 · 0 评论 -
try catch 应该在 for 循环里面还是外面
前言其实就是看业务。我需要出现异常就终止循环的,就放外头;不需要终止循环,就搞里头但是要注意一点就是,别在for循环里面去查库调用第三方啥的,这些操作,如果必要,需要慎重考虑了参考文章点击可跳转:try catch 应该在 for 循环里面还是外面原创 2024-03-14 13:48:23 · 166 阅读 · 0 评论 -
SQL注入的场景复现和解决方案
SQL注入(SQL Injection)是一种常见的网络攻击技术,它利用应用程序没有正确过滤用户输入的数据,将恶意的 SQL 代码注入到应用程序中执行,从而导致应用程序的安全性受到威胁。通简单来说,就是通过构造恶意的 SQL 语句,将恶意代码注入到应用程序中执行,从而实现各种攻击手段。原创 2024-03-12 16:53:55 · 933 阅读 · 0 评论 -
高并发场景系统需要准备哪里东西
综上所述,设计高并发系统需要从多个方面考虑,需要综合运用各种技术和工具,进行全面的测试和评估,以实现系统的高可用、高性能和高安全性。原创 2024-03-04 16:39:31 · 257 阅读 · 0 评论 -
软件开发:大厂中的灰度发布到底是什么样的一个流程
总的来说,大厂的灰度发布流程非常严谨和规范,需要考虑到各种可能的风险和问题,并采取相应的措施来保证发布的质量和稳定性。原创 2024-01-23 22:36:22 · 499 阅读 · 0 评论 -
Java List集合使用 Comparator.comparing 排序报空指针异常问题
前言有时候对一个List集合的某个字段进行排序的时候会报错,问题就是排序的那个字段可能是个空值,那么下面就是处理这种问题的方式,亲自测试有效。参考点击可跳转:Java List集合使用 Comparator.comparing 排序报空指针异常问题原创 2024-01-21 20:54:13 · 725 阅读 · 0 评论 -
微服务之间Feign调用无法解析IPage报错问题:Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage
最新在做一个对外提供基础信息的需求,我在A服务中写了一个分页接口,本以为很简单的我在B服务用 Feign 调用一下就可以了。原创 2023-12-18 23:28:39 · 825 阅读 · 0 评论 -
深入理解TheadLocal的使用场景和注意事项
是Java中的一个类,它提供了一种线程局部变量的机制。它可以使得每个线程都拥有一个自己独立的变量副本,这些副本之间互不干扰,可以独立修改,而且线程之间互不影响。ThreadLocal 的主要使用场景如下:在多线程环境下,某些变量是线程共享的,如果不采用同步机制,可能会出现线程安全问题。而使用 ThreadLocal 可以使得每个线程都拥有一个自己独立的变量副本,从而避免了线程安全问题。在某些场景下,需要在多个方法之间传递某些数据,但这些数据对于每个线程而言又是不同的。原创 2023-12-13 17:04:42 · 429 阅读 · 0 评论 -
让@RefreshScope注解来帮助我们实现动态刷新
有没有对应的小伙伴去思考过这个东西,这个注解有什么作用?为什么要加?下面我们就来看看这个 RefreshScope 注解是如果使用及底层执行原理。原创 2023-11-28 14:50:20 · 387 阅读 · 0 评论 -
一文搞清楚B端与C端有什么区别
C端:Consumer(也可理解为Customer),通常为消费者、个人终端用户使用的客户端。如:微信、淘宝、网易云音乐等。B端:B端,代表企业用户商家,英文是Business,是互联网产品中的商家界面(即:管理平台)。用户通过它进行日常的商业活动,例如企业库存管理,销售统计,员工出勤考核等等。可以说,用来解决企业需求的产品,都是 B 端产品。原创 2023-07-22 22:00:18 · 3471 阅读 · 0 评论 -
java中优雅地使用List转换String字符串
这里和StringUtils.join()有区别,参数顺序不一样,另外,StringUtils.join()可以传入Integer或者其他类型的集合或数组,而String.join()尽可以传入实现charSequence接口类型的集合或数组。StringUtils.join() 和 String.join()用途:将数组或集合以某拼接符拼接到一起形成新的字符串。此方法将列表转换为具有给定分隔符、前缀和后缀的字符串。如果是字符串类型的集合或数组推荐使用String.join()原创 2023-07-22 21:55:06 · 271 阅读 · 0 评论 -
Java:基于JDBC数据连接池方式同步第三方数据库表信息数据
注意:前置条件两端的网要互通,否则拉取无效。原创 2023-07-14 09:20:04 · 446 阅读 · 0 评论 -
Java:创建文件夹并输出内容到文件中
参数三:存储数据格式,这里用String 类型可以用JSON转换后将整个对象信息存储进去,转换方式:JSON.toJSONString(xxx)这里我把这个操作封装成了一个工具类,方便根据不同业务场景方便调用。参数一:根据实际业务场景路径来,如:本地:“D\”参数二:存储数据的文件,如:data.txt。原创 2023-07-12 19:26:06 · 549 阅读 · 0 评论 -
SpringBoot:整合 Redis BitMap技术及结合场景:实现签到与统计
采用BitMap实现签到功能实现签到接口,将当前用户当天签到信息保存到Redis中我们可以把年和月 作为BitMap的key,然后保存到一个BitMap中,每次签到就到对应的位上把数字从0 变为1,只要是1,就代表是这一天签到了,反之咋没有签到。实现签到接口,将当前用户当天签到信息保存至Redis中说明请求方式POST请求路径/user/sign请求参数无返回值无因为BitMap 底层是基于String数据结构,因此其操作都封装在字符串操作中了。原创 2023-06-30 23:16:57 · 605 阅读 · 0 评论 -
WebSocket:基于 Spring Cloud 配置注解实现 WebSocket 集群方案
WebSocket大家应该是再熟悉不过了,如果是单体应用确实不会有什么问题,但是当我们的项目使用微服务架构时,就可能会存在问题比如服务A有两个实例A1和A2,前端的WebSocket客户端C通过网关的负载均衡连到了A1,这个时候当A2触发消息发送的逻辑,需要将某个消息发送给所有的客户端时,C就接受不到消息这个时候我们很快就能想到一种最简单的解决方案,就是把A2的消息转发给A1A1再把消息发送给C,这样C就能收到A2发送的消息了基于这个思路,我实现了一个库,一个配置注解搞定一切。原创 2023-06-25 00:17:21 · 1233 阅读 · 0 评论 -
SpringBoot项目中基于AOP注解方式实现接口日志记录
原文链接:https://blog.csdn.net/Jnsone/article/details/129934551。还需在springMVC项目中需要开启AspectJ注解支持。原创 2023-06-19 00:16:08 · 401 阅读 · 0 评论 -
Java排查接口调用记录、请求参数、响应结果、执行时长
在Web应用当中记录接口调用记录、请求参数、响应结果、执行时长是再常见不过的事情了,记录的方式有很多。最近阅读之前的历史代码发现以前一些接口的统计时长、记录调用记录、请求参数都是合代码逻辑并存,严重影响了代码可读性。而记录接口调用记录、请求参数、响应结果、执行时长这些操作完全可以抽象出来,用 AOP 横向拦截去处理,实现解耦、提高代码可读可维护性。这篇文章将介绍如何实现。原创 2023-06-17 23:56:30 · 974 阅读 · 0 评论 -
JSON转换异常:Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
其实给出的提示已经很明确了:比如:Cannot deserialize instance of:无法反序列化,比如:through reference chain:指的就是这个参数的类型有问题,这里我这个 data 是一个 String 类型,但是三方返回的格式是这样的:{laoliu:xxxx}原创 2023-06-03 15:46:09 · 10669 阅读 · 2 评论 -
使用 Lombok 的 @Accessors(chain=true) 的注意事项
在我们的实体类或者对象中加入了该注解设置 chain=true,这样我们就可以进行链条式调用参数了。生成setter方法返回this(也就是返回的是对象),代替了默认的返回 void// 生成的setter方法如下,方法体略 public User setId(Integer id) {//开起chain=true后可以使用链式的set User user = new User() . setAge(31) . setName("pollyduan");原创 2023-04-24 00:54:56 · 1213 阅读 · 1 评论 -
Mapstruct的具体介绍与使用
mapstruct是一种实体类映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类。有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,在编译过程中,mapstruct会自动生成该接口的实现类,实现将源对象映射到目标对象的效果。在实体类下面创建即可,方便查找。原创 2023-01-12 21:40:09 · 25994 阅读 · 6 评论 -
IDEA:优雅地查看打包后的 jar包代码信息
有时候我们在 IDEA 中将我们项目打包后的代码部署到生产环境中,但是发现始终有错误信息提示。这时我们想要验证一下我们书写的代码是否被打包成功了,接下来我们就看看如何优雅地查看 jar 包代码。原创 2023-01-06 14:52:22 · 3346 阅读 · 0 评论 -
优雅地处理跨域问题
我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。如果小伙伴们觉得不错就一键三连吧~原创 2022-12-30 14:13:29 · 86 阅读 · 0 评论 -
正确地使用 BeanUtils.copyProperties
我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。如果小伙伴们觉得不错就一键三连吧~声明:原作者:微信公众号:JavaGuide。原创 2022-12-17 23:21:02 · 894 阅读 · 0 评论 -
Postman:调用接口时返回 404 的排查方法
今天同事在快下班的时候问了我一个问题,场景是:他用 Postman 工具测试接口时断点能进入到 idea 中,同时也打印了 SQL查询日志,奇怪的是:Postman 中 响应体一直返回:404状态码。刚开始我第一个想到的就是:URL问题,但是断点能进去,那证明就不是于是我想了一下,后面我直接拉到 Controller 类最上面一看,嘿嘿,找到了。原来是写了一个:@Controller 注解,后来改成 @RestController 就可以了。或者在该方法上加上@ResponseBody 也可以。原创 2022-10-24 23:30:13 · 865 阅读 · 0 评论 -
SpringBoot 优雅地对接口进行数据加解密
这日,刚撸完2两代码,正准备掏出手机摸鱼放松放松,只见老大朝我走过来,并露出一个”善意“的微笑,兴伟呀,xx项目有于安全问题,需要对接口整体进行加密处理,你这方面比较有经验,就给你安排上了哈,看这周内提测行不…,额,摸摸头上飘摇着而稀疏的长发,感觉我爱了。和产品、前端同学对外需求后,梳理了相关技术方案,经测试,响应数据和非加密版万全一致啦,还有GET部分的请求加密,以及后面加解密惨遭跨域问题,后面有空再和大家聊聊。SpringBoot 优雅地对接口进行数据加解密。原创 2022-10-24 09:16:18 · 278 阅读 · 0 评论 -
接口查询优化:优雅的处理大批量数据及 in 超过 1000 问题
ListUtil.partition(),这个方法从某种意义上说并没有达到真正分页的效果,因为当我们使用这个方法时,List结果早已执行出来了;我们要做的就是在结果没有出来之前就减少 DB 的压力。直接使用 Hutool 工具类中的 ListUtil.partition(list,100)方法,当然,具体业务具体分析,少量的数据可以使用这个方法。原创 2022-10-19 15:30:08 · 647 阅读 · 0 评论 -
Linux:最全的开发常用命令
我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。原创 2022-09-15 23:47:51 · 319 阅读 · 0 评论 -
Spring事务:一文带你升入 @Transactional 底层
我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。原创 2022-08-14 23:05:58 · 245 阅读 · 0 评论 -
Java8日期处理,十八个示例让你更加优雅地处理日期格式
System . out . println(dayAfterTommorrow + " 格式化后的日期为: " + formatted);} }原创 2022-08-11 21:16:07 · 175 阅读 · 0 评论 -
StringUtils的具体操作
在日常开发当中我们会使用很多的判空工具进行校验,今天我们就看看对字符串判空有哪些骚操作StringUtils 是我们比较常用的工具类了,也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外并不知道还有isAnyEmpty//isAnyBlank/的存在。那么,接下来让我们一起来探索这个工具类。...原创 2022-08-07 22:51:32 · 123 阅读 · 0 评论 -
Java基础:for循环内外创建对象的区别,哪个性能更优?
最近在项目中看到同事写的代码for循环中,创建对象时喜欢声明成员变量,于是我就查了一下这样写的好处是什么?下面这些文章对这两种写法做了深入的测试说明,记得一定要看哦【JAVA】变量声明在循环体内还是循环体外的争论,以及怎样才真正叫『避免在循环体中创建对象』?java中的for循环里面创建对象和for循环外面创建对象之间的区别for循环中创建对象https。......原创 2022-07-23 23:03:19 · 3806 阅读 · 7 评论 -
分布式ID生成系统
在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一 ID 来标识一条数据或消息,数据库的自增 ID 显然不能满足需求。特别一点的如订单、骑手、优惠券也都需要有唯一 ID 做标识。此时一个能够生成全局唯一 ID 的系统是非常必要的。概括下来,那业务系统对 ID 号的要求有哪些呢?上述这几点对应三类不同的场景,3 和 4 需求还是互斥的,无法使用同一个方案满足。同时除了对 ID 号码自身的要求,业原创 2022-06-25 14:35:43 · 121 阅读 · 0 评论 -
for循环与forEach循环效率对比问题
执行后的结果从上图结果中可以看到效率排行,从高到低:foreach > java8-forEach > forArrayList: ArrayList 是采用数组的形式保存对象的,这种方式将对象放在连续的内存块中,所以插入和删除时比较麻烦,查询比较方便。LinkList: LinkList 是将对象放在独立的空间中,而且每个空间中还保存下一个空间的索引,也就是数据结构中的链表结构,插入和删除比较方便,但是查找很麻烦,要从第一个开始遍历。1万一内的数量,直接使用 foreach即可,如果超过1万那就是用 J原创 2022-06-17 10:29:04 · 181 阅读 · 0 评论