- 博客(1333)
- 收藏
- 关注

原创 大龄码农的一天
老刘被解雇了。事情来得很突然,那天早上,老刘跟往常一样,骑着一辆蓝色的共享单车,拐过几条狭窄逼仄的小区道路,再穿过一条大街就到了公司写字楼,熟悉的线路,熟悉的骑行,熟悉的环境,一切都让他感觉舒服自在。从家里到公司不足三公里,这是骑行的最佳距离,当初老刘选择这家公司的时候,通行距离是一个重要的加分项。来到办公室,尚未坐定,HR就过来找老刘。平时随和友善的HR小姐姐,今天有点不一样,表情冷峻而严肃...
2019-03-08 10:50:10
480
转载 ThreadLocal内存溢出演示和原因分析!
作者 | 磊哥来源 | 公众号:Java中文社群转载请联系授权(微信ID:GG_Stone)前言ThreadLocal 翻译成中文是线程本地变量的意思,也就是说它是线程中的私有变量,每个线程只能操作自己的私有变量,所以不会造成线程不安全的问题。所谓的线程不安全是指,多个线程在同一时刻对同一个全局变量做写操作时(读操作不会涉及线程不安全问题),如果执行的结果和我们预期的结果不一致就称之为线程不安全,...
2023-09-27 18:12:23
13
原创 一呼百应:监听变化的观察者模式
欢迎关注微信公众号:互联网全栈架构观察者(Observer)模式属于行为型设计模式,它通常包含观察目标和观察者两类对象,当观察目标的状态发生改变时,会通知到所有的观察者,观察者再进行相应的处理。它的定义如下:在对象间定义一种一对多的依赖关系,当一个对象的状态发生了改变,所有依赖它的对象都被通知且会自动更新。观察者模式主要包括以下几个角色:主题(Subject):也被称为被观察者,它维护了一个观察者...
2023-09-20 19:23:42
29
原创 手把手:Spring Cloud Alibaba项目搭建
欢迎关注微信公众号:互联网全栈架构Spring Cloud Alibaba是Spring Cloud下面的一个子项目,它致力于提供分布式服务开发的一站式解决方案。关于Spring相关框架的关系和基础知识介绍,可以参考之前的文章:春天的故事:Spring框架的入门级知识。今天,我们就从零开始搭建一个Spring Cloud Alibaba的入门项目,重点演示项目的创建过程。开发工具使用Idea,并使...
2023-09-17 20:41:01
34
原创 春天的故事:Spring框架的入门级知识
欢迎关注微信公众号:互联网全栈架构现在,几乎所有的Java程序开发都会用到Spring框架,伴随着Spring的广泛应用和技术本身的不断演进,又衍生出了很多相关的框架,比如Spring Boot,Spring Cloud等等,免不了让人眼花缭乱,本文就试图介绍Spring的基本知识,以及这些流行的Spring框架(套件)之间的关系。一、Spring是什么以上是官网关于最新版Spring的定义,略显...
2023-09-15 19:52:40
49
原创 责无旁贷:超酷的责任链模式
欢迎关注微信公众号:互联网全栈架构记得很早以前做过一个小需求,功能很简单,就是查找ip的归属地,先调用某宝的接口,如果找到了则返回结果,如果返回为空或者抛异常,再调用某度的接口,以此类推,一共有三个服务可供调用,那么,这样的代码应该怎么写呢?如何才能让代码变得可扩展性好、便于维护呢?如果你能想到使用责任链模式来实现,那么恭喜你,对于设计模式的实际应用已经有了较为深刻的理解。我们今天就来看看,传说中...
2023-09-13 19:58:30
27
原创 聚沙成塔:聊聊建造者模式
欢迎关注微信公众号:互联网全栈架构建造者(Builder)模式属于创建型设计模式,它的定义如下:将一个复杂对象的创建与它的表示分离,使得同样的创建过程可以产生不同的表示。这样的定义可能略微有点佶屈聱牙,简单来讲,建造者模式可以让你使用同样的步骤创建出不同属性的复杂对象。建造者模式主要包括以下几个角色:抽象建造者(Builder):它声明了通用的产品创建步骤。具体建造者(Concrete Build...
2023-09-12 17:00:55
19
转载 Spring 条件注解没生效?咋回事
条件注解相信各位小伙伴都用过,Spring 中的多环境配置 profile 底层就是通过条件注解来实现的,松哥在之前的 Spring 视频中也有和大家详细介绍过条件注解的使用,感兴趣的小伙伴戳这里:Spring源码应该怎么学?。从 Spring4.0 开始,Spring 提供了一个更加细粒度的条件注解:ConfigurationCondition。从名字上就可以看出来这个是搭配 @Configur...
2023-09-11 17:02:49
14
转载 后端思维篇:如何抽个通用上报模板
前言 大家好,我是田螺。我的后端思维专栏好久没更新啦,本文是后端思维专栏的第六篇哈。我的整个后端思维专栏都是跟日常工作相关的哈。最近刚好优化了安全上报这块的代码,抽了一个基础模板,看起来挺优雅的。所以今天手把手教大家,基于重复代码,如何思考和抽取模板。1. 优化前的代码 我们的业务场景,如修改密码,修改pin等,需要将操作结果上报到安全管理中心系统。优化前的伪代码如下:修改密码的逻辑:public...
2023-09-05 15:59:40
23
转载 为什么ConcurrentHashMap不允许插null?
作者:磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在 Java 语言中,ConcurrentHashMap 和 Hashtable 这些线程安全的集合是不允许 key 或 value 插入 null 值的,而 HashMap 又允许 key 或 value 插入 null 值,这到底是为什么呢?null 值插入演示首先给 Hash...
2023-09-04 18:48:12
19
转载 常见的负载均衡策略有哪些?
作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)负载均衡策略是实现负载均衡器的关键,而负载均衡器又是分布式系统中不可或缺的重要组件。使用它有助于提高系统的整体性能、可用性、可靠性和安全性,同时支持系统的扩展和故障容忍性。对于处理大量请求的应用程序和微服务架构来说,负载均衡器是不可或缺的重要工具。负载均衡分类负载均衡分为服务器端负载均衡...
2023-09-03 10:09:01
48
转载 一道经典面试题:@Configuration 和 @Component 有何区别?
关于 @Configuration 注解有一个特别经典的面试题:@Configuration 和 @Component 有什么区别?无论小伙伴们之前是否背过相关的面试题,今天这篇文章学完之后相信大家对这个问题都会有更深一层的理解,废话不多少,咱们开始分析。1. 情景展现@Configuration 和 @Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直...
2023-08-30 19:54:04
20
转载 单机幂等性的 6 种实现!
作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)有位朋友,前两天突然问磊哥:在 Java 中,防止重复提交最简单的方案是什么?这句话中包含了两个关键信息,第一:防止重复提交;第二:最简单。于是磊哥问他,是单机环境还是分布式环境?得到的反馈是单机环境,那就简单了,于是磊哥就开始装*了。话不多说,我们先来复现这个问题。模拟用户场景根据朋友...
2023-08-29 19:35:55
14
转载 集合 List 分片的 5 种实现
作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示:原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生成一条很长的 SQL,这样程序在执行时就会报错。要解决这个问题,有两种方法:第一,设置 M...
2023-08-28 15:51:03
32
转载 6种限流实现,附代码![通俗易懂]
作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone限流是一种控制访问速率的策略,用于限制系统、服务或API接口的请求频率或数量。它的目的是为了保护系统免受过多请求的影响,防止系统因过载而崩溃或变得不可用。限流是一种重要的性能优化和资源保护机制。限流的好处有以下几个:保护系统稳定性:如果系统接受太多请求,超出了其处理能力,可能导致系统崩溃或...
2023-08-26 15:43:06
21
转载 当注入的 Bean 存在冲突时,到底有多少种解决方案?松哥总结了 5 种!
当我们从 Spring 容器中“拉”取一个 Bean 回来的时候,可以按照名字去拉取,也可以按照类型去拉取,按照 BeanName 拉取的话,一般来说只要 BeanName 书写没有问题,都是没问题的。但是如果是按照类型去拉取,则可能会因为 Bean 存在多个实例从而导致失败。在前面的文章中,松哥和小伙伴们分享了 @Primary、@Qualifier 注解在处理该问题时的一些具体的方案,但是都是...
2023-08-25 14:49:51
89
转载 优化重复冗余代码的8种方式!
前言 大家好,我是田螺。日常开发中,我们经常会遇到一些重复冗余的代码。大家都知道重复代码不好,它主要有这些缺点:可维护性差、可读性差、增加错误风险等等。最近呢,我优化了一些系统中的重复代码,用了好几种的方式,感觉挺有用的。所以本文给大家讲讲优化重复冗余代码的几种方式~抽取公用方法抽个工具类反射泛型继承和多态设计模式函数式LambdaAOP切面1. 抽取公用方法 抽取公用方法,是最常用的代码去重方式...
2023-08-24 07:38:12
24
原创 删除重复记录但保留其中一行数据的sql写法
欢迎关注微信公众号:互联网全栈架构数据库表中存在重复记录的场景并不罕见,导致这种情况的原因可能是进行了数据迁移,或者程序代码有bug(比如并发情况没有处理好),或者在测试库中手动插入了重复数据,不管怎么样,它们可能都违反了业务规则约束,需要删除重复的数据记录,同时又需要保存其中的一条。除了在现实的工作中会碰到这种情况,面试中也经常会问起这个问题。那么,这个sql应该怎么写呢(基于MySQL数据库)...
2023-08-23 19:24:10
93
原创 一条sql搞定这个需求,面试官直呼内行
欢迎关注微信公众号:互联网全栈架构设想一下这种场景,sql应该怎么写:学生表中保存了学生姓名和课程信息,现在需要把选修课程1和课程2的学生姓名打印出来。或者类似的,在订单表中,把既购买了商品A,也购买了商品B的订单号找出来。粗看起来,这样的需求用sql实现比较简单,在WHERE条件中把课程1和课程2的信息加进去即可,但仔细想想,好像又没那么容易,因为有的学生只选修了课程1(或者课程2),如果用IN...
2023-08-22 19:07:02
37
原创 MySQL如何进行表之间的关联更新
在实际编程工作或运维实践中,对MySQL数据库表进行关联更新是一种比较常见的应用场景,比如在电商系统中,订单表里保存了商品名称的信息(冗余字段设计),但如果商品名称发生变化,则需要通过关联商品id,把新的商品名称更新到订单表中;或者,学生表中保存了班级信息,但关联的班级表发生变化,那么学生表也需要同步更新,等等。针对这样的业务场景,我们来看看有什么方法可以实现关联更新,当然,这样的知识相对比较基础...
2023-08-21 20:05:48
702
转载 极氪汽车 APP 系统云原生架构转型实践
前言Aliware新能源汽车已经成为我国汽车市场再次崛起的关键支柱,随着新能源汽车市场的快速发展,不同类型的品牌造车厂商呈现出百花齐放的态势。极氪汽车是吉利控股集团旗下高端纯电汽车新品牌,2021 年 4 月极氪发布首款高端智能电动车型--极氪 001,大获市场好评,截至 2022 年 12 月,001 车型累计交付量突破 7 万台。连续 3 个月问鼎自主品牌 30 万以上豪华纯电车型销量冠军。极...
2023-08-20 16:38:46
40
原创 高频面试题:多线程顺序打印ABC字符20次
一个关于多线程协作的题目经常会出现在大厂的面试中:有三个线程分别打印A、B、C,请让这三个线程按顺序打印出ABC20次。我们知道,线程调度机制是非确定性的,如果不加上额外的并发控制,直接启动三个线程,那么这几个线程的执行顺序是不确定的,打印出来的字符也不一定是按照ABC这样的顺序来显示。同时,题目不光要求按顺序打印出ABC,而且还要打印20次,也就是这样的形式:ABCABCABC...,当然,打印...
2023-08-19 18:44:54
52
原创 这个设计模式的用法,一般人我不告诉他
我们知道,设计模式分为创建型、结构型、行为型三大类,今天要介绍的策略模式属于行为型设计模式,它是一种应用非常广泛的设计模式,在JDK源码、Spring框架中都可以经常看到它的身影,正确地使用策略模式,可以大大提升代码的可扩展性。如果在代码中看到大量的复杂的if-else,可以试试用策略模式来进行改造和优化。一、定义我们先来看看策略模式的定义:翻译过来大意就是:定义一组算法,将每个算法分别封装起来,...
2023-08-18 12:53:15
32
转载 异步编程利器:CompletableFuture详解
前言最近刚好使用CompeletableFuture优化了项目中的代码,所以跟大家一起学习CompletableFuture。公众号:捡田螺的小男孩一个例子回顾 Future因为CompletableFuture实现了Future接口,我们先来回顾Future吧。Future是Java5新加的一个接口,它提供了一种异步并行计算的功能。如果主线程需要执行一个很耗时的计算任务,我们就可以通过futur...
2023-08-17 22:28:58
24
原创 一网打尽:MySQL索引失效的场景大搜罗
索引是数据库优化的利器,它能大大提高SQL的执行效率。然而,索引犹如一把双刃剑,如若使用不当,它不仅不能提升速度,反倒会降低数据库的效率,本来想利用索引进行优化,却遭到了反噬,你说气人不气人。那么,今天我们就来梳理一下,有哪些情况会导致SQL查询不走索引,也就是说,即便我们创建了索引,但SQL语句在执行时依然无视索引的存在,执拗地进行了全表扫描。一、准备工作我们首先在数据库中创建测试用的数据表,并...
2023-08-16 08:00:16
26
转载 Spring AOP 中的代理对象是怎么创建出来的?
今天和小伙伴们聊一聊 Spring AOP 中的代理对象是怎么创建出来的,透过这个过程再去熟悉一下 Bean 的创建过程。最近几篇文章都是和小伙伴们聊 Spring 容器的一些使用细节,结合这些细节再看一看源码,等到这些功能都看完之后,我会再做一个汇总,到时候小伙伴们对 Spring 容器的整个创建过程就会有一个比较完整的了解了。1. AOP 用法先来一个简单的案例,小伙伴们先回顾一下 AOP,假...
2023-08-14 09:37:37
48
转载 简单科普 AI AIGC AGI ChatGPT 分别是什么?
AIAI,全名 “Artificial Intelligence”,中文为人工智能。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。AIGCAIGC,全名 “AI Generated Content”,又称生成式 AI,中文为人工智能生成内容。例如:AI 文本续写,文字转图像的 AI 图、AI 主持人等,都属于 AIGC 的应用。这方面的应用有很多,后面文...
2023-08-14 09:37:37
130
转载 挣得少?加班多?用数据分析挖掘员工离职的真正原因!
今年的大环境大家都看在眼里了,各种怪相也层出不穷:有的公司一边裁员一边招人,结果新招进来的人力成本反而更高了。有的公司觉得大环境不好,员工应该更拼命保住饭碗,结果人反而跑得更厉害了……人力资源问题能不能用数据分析?当然可以,而且比主观判断来得更准确。今天就先聊聊:员工离职问题。 数据角度看离职员工离职是很正常的,因此单纯计算一个离职人数、离职比例其实意义不大。要关注的,是那些会影响收入,推高用工...
2023-08-13 21:13:50
34
转载 Sentinel 2.0 微服务零信任的探索与实践
从古典朴素的安全哲学谈起Aliware网络安全现状现在最常见的企业网络安全架构便是在企业网络边界处做安全防护,而在企业网络内部不做安全防范。这确实为企业的安全建设省了成本也为企业提供了一定的防护能力。但是这类比于现实情况的一个小区,这个小区里面所有的房屋都没有门,小区的门口站着一个保安,由他来鉴别谁能进入小区,谁不能进入小区,只要保安放行了一个人进入小区,这个人就可以在小区里为所欲为。那么大家会住...
2023-08-11 20:57:14
26
转载 什么是Docker?看这一篇干货文章就够了!
作为程序员我们应怎样理解docker?容器技术的起源假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始从头到尾搭建这套环境,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。测试同学测完后终于可以上线了,这时运维同学又要重新从头到尾搭...
2023-08-10 16:20:54
23
原创 创业方法论,《论语》给出了提示
题外话:请大家帮忙一键三连,也就是点击文末的分享、在看、点赞,这样会让我的文章让更多人看到,也会大大地激励我进行更多的输出,谢谢!创业已经成为了越来越多人的梦想,它不仅能实现个人的财务和精神自由,也能为社会产生积极的影响,然而,创业毕竟九死一生,充满了坎坷和巨大的风险,那么,有没有一些通用的方法论,用以指导创业呢?或许,《论语》给出了一些提示。《论语》里仁篇写道(4.10):子曰:“君子之于天下也...
2023-08-10 16:20:54
25
原创 《论语》是很多公司取名的源泉
题外话:抱歉,昨天文章发出后,发现忘记标原创了,所以赶紧删除,今天再发(公众号会优先推荐原创文章,为了十几的阅读量也真是费了心了)《论语》蕴含了很多做人做事的道理,是非常积极、正能量的文学作品,给了人们大量的启发,对于很多创业者而言,搜肠刮肚、四处找寻公司的名字,还不如在《论语》这本书中寻找答案。比如:《论语》为政篇写道(2.15):子曰:“学而不思则罔,思而不学则殆。”译文:孔子说:“只是读书,...
2023-08-09 08:49:01
23
转载 如何判断线程池任务已执行完?
作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)无论是在项目开发中,还是在面试中过程中,总会被问到或使用到并发编程来完成项目中的某个功能。例如某个复杂的查询,无法使用一个查询语句来完成此功能,此时我们就需要执行多个查询语句,然后再将各自查询的结果,组装之后返回给前端了,那么这种场景下,我们就必须使用线程池来进行并发查询了。PS:磊哥做...
2023-08-09 08:49:01
21
转载 设计模式系列:经典的单例模式
单例模式,是设计模式当中非常重要的一种,在面试中也常常被考察到。在小灰的知识星球里,有一位小伙伴分享了单例模式的知识,写得非常清晰详尽。小灰把这篇干货文章分享到公众号上,希望能够帮助到大家。正文如下:一、什么时候使用单例模式?单例模式可谓是23种设计模式中最简单、最常见的设计模式了,它可以保证一个类只有一个实例。我们平时网购时用的购物车,就是单例模式的一个例子。想一想,如果购物车不是单例的,会发生...
2023-08-08 09:23:49
21
原创 程序员的升职加薪技巧,《论语》早已经给出了答案
升职加薪是每个程序员的梦想(除了面向情怀编程的码农),那么,升职加薪之道是什么?如何才能实现这样的目标?其实,《论语》里面早已经给出了答案。《论语》为政篇写道(2.18):子张学干禄。子曰:“多闻阙疑,慎言其余,则寡尤;多见阙殆,慎行其余,则寡悔。言寡尤,行寡悔,禄在其中矣。”译文:子张向孔子学求官职得俸禄的方法。孔子说:”多听,有怀疑的地方,加以保留;其余足以自信的部分,谨慎地说出,就能减少错误...
2023-08-07 11:55:43
16
转载 为什么有了HTTP还要有RPC?
大家好,我是黎杜,今天我们就来聊一聊为什么在我们的分布式和微服务系统中,有HTTP还要有RCP呢?这两者又有什么区别呢?这或许在面试的过程中也会被经常问到,而且会结合者项目来问。问你你们项目用的是哪种通信技术方案?在计算机科学领域,HTTP和RPC都是常用的协议。HTTP协议是一种基于请求和响应模式的协议,用于在Web上进行数据传输。而RPC协议则是远程过程调用协议,它允许一个程序在另一个计算机上...
2023-08-06 20:22:16
31
转载 多线程引发的惨案直接把年终给干没了
你好,我是坤哥前些日子我们线上出现了一个比较严重的故障,这个故障是多线程使用不当引起的,挺有代表性的,所以分享给大家,希望能帮大家避坑问题简述先简单介绍一下问题产生的背景,我们有个返利业务,其中有个搜索场景,这个场景是用户在 app 输入搜索关键词,然后 server 会根据这个关键词到各个平台(如淘宝,京东,拼多多等)调一下搜索接口,聚合这些搜索结果后再返回给用户,最开始这个搜索场景处理是单线程...
2023-08-03 19:31:30
26
转载 如何通过三级缓存解决 Spring 循环依赖
TienChin 视频杀青啦~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来和松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin 项目配套视频来啦。以下内容基于 Spring6.0.4。这个其实是一个特别高频的面试题,松哥也一直很想和大家仔细来聊一聊这个话题,网上关于这块的文章很多,但是我一直觉得要把这个问题讲清楚还有点难度,今天...
2023-08-02 20:37:59
25
转载 两万字详解!Netty经典32连问!
前言 大家好,我是田螺。我们去面试的时候,经常被问到netty的题目。我整理了netty的32连问。小伙伴们,收藏起来慢慢看吧。1. Netty是什么,它的主要特点是什么? Netty是一个高性能、异步事件驱动的网络编程框架,它基于NIO技术实现,提供了简单易用的 API,用于构建各种类型的网络应用程序。其主要特点包括:高性能:Netty使用异步I/O,非阻塞式处理方式,可处理大量并发连接,提高系...
2023-07-31 20:56:24
24
转载 SQL优化13连问,收藏好!
前言 大家好,我是田螺。金三银四已经开始啦,准备了SQL优化的13连问,内容非常干!相信大家看完一定会有帮助的。1.日常工作中,你是怎么优化SQL的? 大家可以从这几个维度回答这个问题:分析慢查询日志使用explain查看执行计划索引优化深分页优化避免全表扫描避免返回不必要的数据(如select具体字段而不是select*)使用合适的数据类型(如可以使用int类型的话,就不要设计为varchar)...
2023-07-26 19:58:25
32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人