![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 76
喜马拉雅强
这个作者很懒,什么都没留下…
展开
-
getInputStream has already been called for this request 问题记录
*** @desc 重复读取HttpServletRequest reader/inputstream/**try {if(ins!if(isr!} }/*** @desc 重复读取HttpServletRequest reader/inputstream/**try {if(ins!原创 2023-07-27 11:36:59 · 3818 阅读 · 0 评论 -
Arthas线上故障案例分析——内存使用率上升,负载突然变高
arthas是阿里的一款线上故障分析工具,对jvm当前的上线文可以进行实时监控,下文会介绍我在实际过程中是如何使用arthas来定位问题的。原创 2023-06-20 10:00:30 · 4817 阅读 · 0 评论 -
Java并发编程系列(一)-Synchronized和ReentrantLock爱恨纠葛
Java提供了两种锁机制来控制多个线程对共享资源的互斥访问。原创 2022-11-16 09:16:14 · 220 阅读 · 1 评论 -
JVM虚拟机知识点(保姆级教程)
字节码:即.class文件。javac工具将,java文件进行编译,产生的.class文件即为字节码机器码:机器指令。操作系统能够识别的语言本地代码:机器指令。操作系统能够识别的语言垃圾回收器指的是标记-清除、复制算法、标记-整理的具体实现年轻代老年代在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。初始堆值和最大堆内存内存越大,吞吐量就越高,但是也要根据自己电脑(服务器)的实际内存来比较。原创 2022-11-15 10:54:42 · 227 阅读 · 0 评论 -
自定义注解(切面实现)
假如开发人员新增了一个接口httpService.post(),那上述方式切面的方式就不够用了,我还得在Pointcut里指定新的切点。如果接口耗时功能的入口不在切面,而在方法上,那开发人员就可以根据自己的需要,自己选择是否启用了,这样的动态配置,谁不喜欢呢?随着时间发展,有越来越多的系统要对接,每个接口的http请求都要写一撮low low的代码,自己看了怪恶心的🤮。于是我另起炉灶,把埋点的方式抛弃掉,使用spring切面的方式去实现,通过上面描述的,大家应该可以知道切面的由来,以及切面和注解的关系了。原创 2022-11-11 09:08:38 · 1125 阅读 · 0 评论 -
自定义函数模板实现动态创建字符串、动态加密
前言最近开发一个中间平台,用于对接各种平台系统,其他平台需要向中间平台注册就会自动发起调用。而项目上遇到了一个比较棘手的问题——认证(Authentication)为了安全沟通,降低风险,这是系统交互间必不可少的认证环节。而问题恰恰就出在这里,认证机制一般由接口暴露者提供,也可以理解为服务端。情况:当其他系统调用我方系统时,认证方式由我方提供。这样我只需要设计一套认证方式即可,其他系统必须按照我的意思来对接(主场优势)当我方系统调用其他系统时,认证方式由对方提供。此时场景就比较尴尬了😓(俺不得原创 2022-03-28 11:19:32 · 974 阅读 · 2 评论 -
如何正确使用工具类java.util.Arrays
大家最常用的应该是使用jdk自带工具类Arrays来生成链表比如List list = Arrays.asList("winnie");注意:这个方法必须慎用。先看下这种方式会导致什么问题。List list = Arrays.asList("winnie");// throw UnsupportedOperationExceptionlist.add("Jhon"); 看我精心给大家截的几张图哈我看到不少帖子说Arrays.asList()生成的对象长度不可变。我直接呜呼哀哉,原创 2021-04-08 16:43:20 · 167 阅读 · 0 评论 -
HashMap1.8源码解读(细品版)
HashMap作为最常用集合框架,我们应该知道它的组成部分是什么,使用场景是什么,这样我们才能更加合适地使用它大家都知道(顶级)接口Map的数据结构是key:value,而HashMap作为Map的子类,自然也是以键值对的形式存在。接下来,让我们来看看hashmap里面有什么我们需要注意的地方基础知识集成自AbstractMap,实现了Cloneable,Serializable接口。 那么就有Object.clone的对象拷贝、还有序列化的能力public class HashMap<原创 2020-12-04 15:17:21 · 166 阅读 · 0 评论 -
Spring-aop切面编程收集接口日志
场景:项目需要实现每个接口请求都把url、所有参数、ip记录下来。实现:业务埋点,编码不优雅(否决)基于spring aop注解方式拦截请求(pick~!)实现流程编写注解类编写切面类验证编写注解类InterfaceMsgAnnotation.javapackage com.winnie.annotion;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;impor原创 2020-11-27 14:22:50 · 141 阅读 · 0 评论 -
Springboot自动装配@EnableAutoConfiguration(源码篇)——看不懂cute我
看完本章内容能学到什么?自动装配原理学会自动装配失败从哪里手动跟踪代码,自己排查问题,而不是谷哥度娘。玩SpringBoot的小伙伴都知道,在项目中要创建一个DataSource对象,只需要引入部分jar依赖,并且对applicatiom.yml进行一些小的配置改动,就可以很轻松的创建目标对象。这里维尼带大家走一波自动配置到底是如何实现的↓↓↓走一波application.yml应用启动类@SpringBootApplication@RestControllerpublic cla原创 2020-08-06 18:01:59 · 403 阅读 · 0 评论 -
Shiro异常源码解析java.lang.IllegalArgumentException: Odd number of characters
java.lang.IllegalArgumentException: Odd number of characters 字符长度奇数个异常各位猿友可以自行尝试Hex.decode(),传入奇数个字符数组都会报错。下面主要讲解引入shiro框架后出现此问题的缘由。这个异常其实是Hex过程中抛出的异常,下面由我来分析一下起因经过一般的,使用权限框架中为了加强密码强度,防止被恶意破解,我们会在使用加盐加密循环N次去强化密码,如下所示/** * 配置凭证匹配器 */@Beanpublic Cre原创 2020-05-12 23:17:58 · 5003 阅读 · 1 评论 -
分布式事务中间件Seata+Springcloud+Mybatis
简介Seata是基于AT模式设计出来的一套分布式事务中间件。2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback)和社区一起共建开源分布式事务解决方案,后更名为Seata。它继承了XA和TCC的优点,以一种基本无代码入侵的方式,减轻分布式环境下事务的各种压力。既然Seata是一个分布式事务的中间件,那么它就...原创 2020-05-05 02:57:42 · 986 阅读 · 0 评论 -
java通过反射机制获取对象属性和值
话不多说,直接上码方式一,通过Field类获取String calssName = "com.xxx.xxx.CacheLoader";Class clazz = Class.forName(className);Object obj = clazz.newInstance();// 获取对象属性Fields[] fields = clazz.getDeclaredFields();...原创 2019-03-15 14:15:32 · 30602 阅读 · 4 评论