面试官:你讲下接口防重放如何处理?
前言
我们的API接口都是提供给第三方服务/客户端调用,所有请求地址以及请求参数都是暴露给用户的。
我们每次请求一个HTTP请求,用户都可以通过F12,或者抓包工具fd看到请求的URL链接,然后copy出来。这样是非常不安全的,有人可能会恶意的刷我们的接口,那这时该怎么办呢?防重放攻击就出来了...[2024/6/11]
dubbo~全局异常拦截器的使用与设计缺陷~续
上一次的介绍,主要围绕如何统一去捕获异常,以及为每一种异常添加自己的Mapper实现,并且我们知道,当在ExceptionMapper中返回非200的Response,不支持application/json的响应类型,而是写死的text/plain类型。
Filter为二方包异常手动捕获
参考...[2024/6/11]
设计模式学习(二)工厂模式——工厂方法模式+注册表
目录工厂方法模式的瑕疵注册表
工厂方法模式的瑕疵
在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下:
考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。
例如,在我的例子中,要...[2024/6/5]
我有点想用JDK17了
大家好呀,我是summo,JDK版本升级的非常快,现在已经到JDK20了。JDK版本虽多,但应用最广泛的还得是JDK8,正所谓“他发任他发,我用Java8”。
其实我也不太想升级JDK版本,感觉投入高,收益小,不过有一次我看到了一些使用JDK17新语法写的代码,让我改变了对升级JDK的看法,因...[2024/6/5]
爪哇,我初窥门径
2017年3月,我大二下学期了。
虽说一直在学习,持续在解决学习中遇到的问题,但迷茫依旧。
对着黑框编程,还是不知道Java在现实工作中是用来干什么的。
说实话,真的挺枯燥无趣的。
逐渐,我开始意识到,持续搞这些基础,是没有意义的。
我在网上看他们讨论的Java问题,很多我都看不懂...[2024/6/5]
面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!
写在开头
面试官:“小伙子,线程池使用过吗,来聊一聊它吧!”
我:“好的,然后巴拉巴拉一顿输出之前看过的build哥线程池十八问...”
面试官满意的点了点头,紧接着问道:“那你知道如何优雅的关闭线程池吗?”
我:“知道知道,直接调用shutdownNow()方法就好了呀!”
面试官脸...[2024/6/3]
java中判断String类型为空和null的方法
1.判断一个String类型的变量是否为空(即长度为0)或者为null
在Java中,判断一个String类型的变量是否为空(即长度为0)或者为null,通常需要使用两个条件语句来进行检查。这是因为null表示变量没有引用任何对象,而空字符串("")表示变量引用了一个没有内容的字符串对象。
下...[2024/6/3]
生产事故-误删文件开发运维险被同时开除
入职多年,面对生产环境,尽管都是小心翼翼,慎之又慎,还是难免捅出篓子。轻则满头大汗,面红耳赤。重则系统停摆,损失资金。每一个生产事故的背后,都是宝贵的经验和教训,都是项目成员的血泪史。为了更好地防范和遏制今后的各类事故,特开此专题,长期更新和记录大大小小的各类事故。有些是亲身经历,有些是经人耳...[2024/6/3]
(工厂+策略)实现登录功能
原始代码
业务层UserService
@Service
public cla UserService {
public LoginResp login(LoginReq loginReq){
if(loginReq.getType().equals("accou...[2024/6/1]
(JAVA)设计模式-适配器模式
模式的定义和特点:
适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性。
结构与实现:
定义一个适配器类来实现业务接口,再继承现有组件库中已经存在的组件。
示例:
创建业务接口类:
点击查看代码
...[2024/6/1]
一文了解JVM面试篇(上)
Java内存区域
1、如何解释 Java 堆空间及 GC?
当通过 Java 命令启动 Java 进程的时候,会为它分配内存。内存的一部分用于创建
堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内部的一
个进程,回收无效对象的内存用于将来的分配。
2、JVM 的主...[2024/6/1]
bashrc和profile区别
转载请注明出处:
作用与目的:
.bashrc:这个文件主要用于配置和自定义用户的终端环境和行为。每次启动新的终端时,.bashrc文件都会被执行,加载用户设置的环境变量、别名、函数等。这使得用户能够根据自己的喜好和需求来定制终端的行为和外观。
profile(通常指的是~/.profile...[2024/5/31]
Java交换map的key和value值
在Java中,我们都知道直接交换Map的key和value是不被允许的,因为Map的接口设计是基于key-value对的,其中key是唯一的,并且是不可变的(在HashMap等常见的实现中,虽然key的引用是不可变的,但key对象本身如果是可变的,它的内容是可以变化的,但这样做可能会导致不正确的...[2024/5/31]
Java遍历Map集合的方法
Java中遍历Map集合的常用方式主要有以下几种:
1.使用keySet()方法遍历
遍历Map的key集合,然后通过key获取value。
Map<String, Integer> map = new HashMap<>();
map.put("one", 1)...[2024/5/31]
爪哇,我初学乍道
>>上一篇(学校上课,是耽误我学习了。。)
2016年9月,我大二了。
自从我发现上课会耽误我学习,只要我认为不影响我期末学分的,我就逃课了。
绝大多数课都是要签到的,有的是老师突击喊名字,有的是手机打卡签到。
如果上课老师一开始就喊名字签到,签到环节结束,我就偷偷溜走了。
...[2024/5/31]
关于《Java并发编程之线程池十八问》的补充内容
一、写在开头
在上一篇文章我们写《Java并发编程之线程池十八问》的时候,鉴于当时的篇幅已经过长,很多内容就没有扩展了,在这篇文章里对一些关键知识点进行对比补充。
二、Runnable vs Callable
在创建线程的时候,一般会选用 Runnable 和 Callable 两种方式。
...[2024/5/31]
springboot~封装依赖引用包jar还是pom,哪种更规范
将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式:
打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单...[2024/5/29]
JavaScript 中的 Range 和 Selection 对象JavaScript 中的 Range 和 Selection 对象
JavaScript 中的 Range 和 Selection 对象
前言
最近在做鼠标框选的需求,鼠标框选就需要用到 Range 和 Selection 对象。
Range 表示选择的区间范围,Selection 表示选择的文档内容。
下面就详细说下这两个对象
一、Range
Range...[2024/5/29]
Java设计模式总结
前言1
刚才整理博客的时候,发觉草稿箱里面躺了一篇文章。这篇文章来自于6年前,2018年,我还在读书的时候。当时csdn,博客园还是行业top,近些年掘金,思否,个人ip站的崛起,也预示着互联网进程的演变。
过了6年之久,这篇文章还没有发布,趁现在有空,补充并且发布一下。
前言2
面试的...[2024/5/29]
一分钟部署prometheus&grafana全方面监控SpringBoot项目
0x01 创建目录
找一个你喜欢的地方,创建项目根目录
example:
[root@demo-78 ~]# mkdir /data/prometheus
0x02 创建配置文件
进入到项目根目录:
[root@demo-78 ~]# cd /data/prometheus
需...[2024/5/29]
关于对于Java中Entity以及VO,以及DTO中Request对象序列化的学习海山了-
关于 Serializable的探讨
前提引入
是由于软件测试上有同学提到说,什么该字段在程序刚运行时,导致jvm激增,所以吸引了我的注意
回顾代码
MybatisPlus Generator自动生成的entity中就经常带有这个,
而且我在开发代码的时候VO,以及DTO常常是直接复制对应的...[2024/5/27]
我对微服务架构的简单理解我对微服务架构的简单理解
在写架构的时候,就要想着,哪些功能是要以后可能要单独部署的,虽然一开始写的时候可以写在一个解决方案里,但那些请求的dto,和返回的视图,业务依赖,能随时独立出去,完全不需要做任何操作,即使是文件夹复制移动都不需要,就能够把该功能独立成一个解决方案,做到独立部署,然后通过远程接口的方法调用处理独立部...[2024/5/27]
Java 对象的揭秘Java 对象的揭秘
前言
作为一个 Java 程序员,我们在开发者最多的操作要属创建对象了。那么你了解对象多少?它是如何创建?如何存储布局以及如何使用的?本文将对 Java 对象进行揭秘,以及讲解如何使用 JOL 查看对象内存使用情况。
本文是基于 HotSpot 虚拟机。
一、对象是如何创建的
1. ...[2024/5/27]
【进阶篇】使用 Stream 流对比两个集合的常用操作分享【进阶篇】使用 Stream 流对比两个集合的常用操作分享
目录前言一、集合的比较1.1需要得到一个新的流1.2只需要一个简单 boolean 结果二、简单集合的对比2.1整型元素集合2.2字符串元素集合2.3其它比较三、Stream 基础回顾3.1基本概念3.2 Stream 操作的三个步骤3.2.1创建 Stream3.2.2中间操作3.2.3终止操...[2024/5/27]
研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?
一、写在开头
? ? 今天和一个之前研二的学妹聊天,聊及她上周面试字节的情况,着实感受到了Java后端现在找工作的压力啊,记得在18,19年的时候,研究生计算机专业的学生,背背八股文找个Java开发工作毫无问题,但现在即便你是应届生,问的考题也非常的深入和细节了,只会背八股,没有一定的代码量和项...[2024/5/27]
Spring Boot中的 6 种API请求参数读取方式
使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。
接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那...[2024/5/24]
Java计算百分比保留整数
1.Java计算百分比保留整数的方法步骤
在Java中计算百分比并保留整数,通常涉及以下步骤:
(1)计算原始数值与基准数值的百分比(通常使用 (原始数值 / 基准数值) * 100 的公式)。
(2)使用 Math.round() 方法对得到的百分比进行四舍五入到最接近的整数。
以下是一...[2024/5/22]
为什么不推荐在Spring Boot中使用@Value加载配置
@Value注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean中。
比如下面这样,就可以轻松的把配置文件中key为com.didispace.title配置信息加载到TestService中来使用
@Service
...[2024/5/22]
京东二面:Sychronized的锁升级过程是怎样的
引言
Java作为主流的面向对象编程语言,提供了丰富的并发工具来帮助开发者解决多线程环境下的数据一致性问题。其中,内置的关键字"Synchronized"扮演了至关重要的角色,它能够确保在同一时刻只有一个线程访问特定代码块或方法,从而有效地防止数据竞争和保持内存可见性。
在传统的Synchro...[2024/5/22]
阿里面试:说说自适应限流?
限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。
常见的限流策略有以下几种:
令牌桶算法:基于令牌桶的方式,限制每个单位时间内允许通过的请求量...[2024/5/22]
13年过去了,Spring官方竟然真的支持Bean的异步初始化了!13年过去了,Spring官方竟然真的支持Bean的异步初始化了!
你好呀,我是歪歪。
两年前我曾经发布过这样的一篇文章《我是真没想到,这个面试题居然从11年前就开始讨论了,而官方今年才表态。》
文章主要就是由这个面试题引起:
Spring 在启动期间会做类扫描,以单例模式放入 ioc。但是 spring 只是一个个类进行处理,如果为了加速,我们取消 s...[2024/5/21]
Spring 对 Junit4,Junit5 的支持上的运用 - Rainbow-Sea
1. Spring 对 Junit4,Junit5 的支持上的运用
@目录1. Spring 对 Junit4,Junit5 的支持上的运用每博一文案2. Spring对Junit4 的支持3. Spring对Junit5的支持4. 总结:5. 最后:
每博一文案
关于理想主义,在知乎上看...[2024/5/21]
Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?
Spring是一个基于Java的企业级应用程序开发框架,它使用了多种设计模式来实现其各种特性和功能。本文将介绍一些在Spring中使用的常见设计模式以及相应的代码示例和说明。
单例模式
单例模式是Spring中最常用的设计模式之一。在ApplicationContext中,Bean默认为...[2024/5/15]
记一次ThreadLocal中的用户信息混乱问题
前言
记录一次开发中遇到的关于 ThreadLocal 问题,场景是数据库表中的操作人总是无缘无故的被更改,排查了几遍代码才发现是 ThreadLocal 没有及时清理导致的。
一、为什么使用 ThreadLocal
1. ThreadLocal 的好处
一般的项目设计开发中,用户登录后,我...[2024/5/15]
MQ消息积压,把我整吐血了
前言
我之前在一家餐饮公司待过两年,每天中午和晚上用餐高峰期,系统的并发量不容小觑。
为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理。
我当时在后厨显示系统团队,该系统属于订单的下游业务。
用户点完菜下单后,订单系统会通过发kafka消息给我们系统,系...[2024/5/15]
谈谈 JVM 垃圾回收机制谈谈 JVM 垃圾回收机制
前言
垃圾回收需要思考三件事情,哪些内存需要回收?什么时候回收?如何回收?
一、哪些内存需要回收
JVM 的内存区域中,程序计数器、虚拟机栈和本地方法栈的生命周期是随线程而生,随线程而灭的。这几个区域的内存分配和回收都具有确定性,不需要过多考虑回收问题,当方法或线程结束时,内存自然...[2024/5/15]
inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装
前言
出现有需要打包 Java 应用和 Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。
环境
JDK17;
MySQL 5.7;
流程
Jpackage打包EXE
Jpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpack...[2024/5/13]
【问题解决】java.lang.NoSuchMethodError错误【问题解决】java.lang.NoSuchMethodError错误
问题现象
近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下:
A类提供了setJumpType(String type),B类调用A类的setJumpType(String type)报错java.lang.NoSuchM...[2024/5/13]
谈谈 Spring 的过滤器和拦截器
前言
我们在进行 Web 应用开发时,时常需要对请求进行拦截或处理,故 Spring 为我们提供了过滤器和拦截器来应对这种情况。那么两者之间有什么不同呢?本文将详细讲解两者的区别和对应的使用场景。
(本文的代码实现首先是基于 SpringBoot,Spring 的实现方式仅简单描述)
...[2024/5/13]
智能工作流:Spring AI高效批量化提示访问方案
基于SpringAI搭建系统,依靠线程池\负载均衡等技术进行请求优化,用于解决科研&开发过程中对GPT接口进行批量化接口请求中出现的问题。
github地址:https: github.com/linkcao pringai-wave
大语言模型接口以OpenAI的GPT 3.5为例...[2024/5/13]
Java面试题:如果你这样做,你会后悔的,两次启动同一个线程~~~Java面试题:如果你这样做,你会后悔的,两次启动同一个线程~~~
当一个线程被启动后,如果再次调start()方法,将会抛出IllegalThreadStateException异常。
这是因为Java线程的生命周期只有一次。调用start()方法会导致系统在新线程中运行执行体,但是如果线程已经结束,则不能再次使用,需要重新创建一个新的线程对象并...[2024/5/13]
Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!
Spring中的Bean是否线程安全取决于Bean的作用域(scope)。Spring提供了几种不同的Scope,其中包括Singleton、Prototype、Request、Se ion、Global Se ion等。
Singleton Scope(单例模式)
默认情况...[2024/5/13]
Java面试题:线程池内“闹情绪”的线程,怎么办?
在Java中,线程池中工作线程出现异常的时候,默认会把异常往外抛,同时这个工作线程会因为异常而销毁,我们需要自己去处理对应的异常,异常处理的方法有几种:
在传递的任务中去处理异常,对于每个提交到线程池中的执行的任务,可以提前通过异常进行捕获,这样即便出现了异常,也不会影响线程池中的工作线程...[2024/5/13]
Spring6 的JdbcTemplate的JDBC模板类的详细使用说明 - Rainbow-SeaSpring6 的JdbcTemplate的JDBC模板类的详细使用说明 - Rainbow-Sea
1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明
@目录1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明每博一文案2. 环境准备3. 数据准备4. 开始4.1 从数据表中插入(添加)数据4.2 从数据表中修改数据4.3 从数据表中删除数...[2024/5/13]
Spring如何控制Bean的加载顺序
前言
正常情况下,Spring 容器加载 Bean 的顺序是不确定的,那么我们如果需要按顺序加载 Bean 时应如何操作?本文将详细讲述我们如何才能控制 Bean 的加载顺序。
场景
我创建了 4 个 Cla 文件,分别命名为
FirstInitialization
Second...[2024/5/11]
美团二面:SpringBoot读取配置优先级顺序是什么?
引言
Spring Boot作为一种轻量级的Java应用程序框架,以其开箱即用、快速搭建新项目的特性赢得了广大开发者的青睐。其核心理念之一就是简化配置过程,使开发者能够快速响应复杂多变的生产环境需求。为了实现这一点,Spring Boot支持丰富的外部化配置机制,允许应用程序根据不同的部署环境灵...[2024/5/11]
apisix~jwt-auth插件
在网关开启jwt-auth插件之后,你的网关就具有了jwt解析和校验的功能,主要是校验jwt token的有效性,包含过期时间和签名等。
https: apisix.apache.org/doc apisix/plugin jwt-auth/
支持的签名算法
"HS256"
"HS512"...[2024/5/11]
关于DDD和COLA的一些总结和思考
写在前面: 其实之前一直想汇总一篇关于自己对于面向对象的思考以及实践的文章,但是苦于自己的“墨迹”,一延再延,最近机缘巧合下仔细了解了一下COLA的内容,这个想法再次被勾起,所以这次一鼓作气,准备好好梳理一篇。至于标题,因为是被DDD和COLA唤起的,索性就叫这个吧。
思维:面向对象和面向过程
...[2024/5/11]
synchronized原理-字节码分析、对象内存结构、锁升级过程、Monitor - lz-zxy
本文分析的问题:
synchronized 字节码文件分析之 monitorenter、monitorexit 指令
为什么任何一个Java对象都可以成为一把锁?
对象的内存结构
锁升级过程
Monitor 是什么、源码查看
synchronized是基于mo...[2024/5/11]
@Async异步失效的9种场景
前言
最近星球中有位小伙伴问了我一个问题:他在项目某个方法使用@Async注解,但是还是该方法还是同步执行了,异步不起作用,到底是什么原因呢?
伪代码如下:
@Slf4j
@Service
public cla UserService {
@Async
public vo...[2024/5/8]