自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot Admin调整类的日志级别

点击 “日志” – “日志配置” ,输入类名,即可调整 这个类的日志级别。进入 SpringBoot Admin ,通过服务名称, 找到服务后。

2024-09-20 16:09:17 240

原创 Spring源码(12)-- Aop源码

Advice 抽象类。AOP的基类,包装 AspectJ切面的Advice方法。代码: org.springframework.aop.aspectj.AbstractAspectJAdvice#invokeAdviceMethodinvokeAdviceMethod() 这个方法,调用的频率非常高。// 通过JoinPoint(连接点),调用各种 Advice 方法。try {// 调用 advice 方法。

2024-09-16 00:00:32 1035

原创 Spring源码(11)--Spring AOP及动态代码的基础知识

CGLb采用底层的字节码技术,可以为一个类创建子类,在子类中采用方法拦截的技术拦截所有父类方法的调用并顺势织入横切逻辑。位信息,所以Spring所提供的增强接口都是带方位名的,如BeforeAdvice(前置增强)、通过Advice(增强)描述横切逻辑和方法的具体织入点(方法前、方法后、方法的两端等)。Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入切面所指定的连。之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理。

2024-09-15 23:56:00 616

原创 leetCode2:两数相加(链表)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。

2024-09-15 12:43:24 161

原创 leetCode46:全排列

【代码】leetCode46:全排列。

2024-09-06 00:02:11 157

原创 base64和字符串的转换

【代码】base64转换为字符串。

2024-09-04 22:57:16 216

原创 Spring源码(9)--FactoryBean简介

FactoryBean 是一个工厂对象,用于创建和管理其他 Bean 的实例。FactoryBean 接口定义了一种创建 Bean 的方式,它允许开发人员在 Bean 的创建过程中进行更多的自定义操作。通过实现 FactoryBean 接口,开发人员可以创建复杂的 Bean 实例,或者在 Bean 实例化之前进行一些额外的逻辑处理。此接口在框架中大量使用,例如用于AOP的org.springframework.AOP.framework.ProxyFactoryBean。

2024-09-02 23:26:22 972

原创 leetcode 1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

2024-08-25 11:47:41 167

原创 leetcode 20. 有效的括号

有左括号就入栈,遍历到对应的右括号就将其左括号出栈。匹配到对称的括号,就出栈。如果是有效括号,最后栈为空。

2024-08-22 23:49:34 110

原创 leetcode 141. 环形链表

如果链表中存在环 ,则返回 true。否则,返回 false。给你一个链表的头节点 head ,判断链表中是否有环。

2024-08-21 23:56:56 193

原创 后端兼容app新旧版本的功能

在开发中,有时需要对 app的新版本和旧版本,做不同的处理。可以根据版本号判断。新版本app交互有变化时,同一个接口在 不同版本可能要返回不同的数据。如果不区分新旧版本,有可能会导致旧版本app 不可用。比如 旧版本1.2.1有一个功能是跳转 微信,到了新版本修改了 app的交互,变成跳转 微信小程序,如果不区分处理,旧版本就没法使用了。

2024-08-20 23:05:01 199

原创 AES加密解密常用的代码示例

加密模式,有 ECB模式 和 CBC 模式等等,ECB 不需要 iv偏移量,而CBC需要。Hutool 的 AES, 默认加密方式为ECB ,默认的填充方式为 PKCS5。填充方式,有 PKCS5 、PKCS7、NoPadding。输出格式,可以有 16进制的 Hex ,或者是 Base64。如果不确定,可以使用 在线加密解密的网站,判断是哪一种模式。非对称加密是指加密和解密使用不同的密钥的加密算法。对称加密是指加密和解密使用相同的密钥的加密算法。AES是 对称加密。

2024-08-19 23:15:04 496

原创 java.net.UnknownHostException: Failed to resolve after 2 queries

UnknownHostException 说明这是无法识别的 host。需要加上 host。可以看到没有丢包,并且 abc.com 对应的 网址为 11.22.33.44。打开 cmd ,使用 ping,看网络是否正常。比如 网址为 abc.com ,

2024-08-19 23:01:58 221

原创 MongoDb常用代码及配置

MongoDB不需要建表,直接插入数据就会建表。日期用 ISODate() 转换。@Document 指定表名。

2024-08-19 22:56:45 348

原创 leetcode 21.合并两个有序链表

leetcode 21.合并两个有序链表。

2024-08-17 12:36:01 97

原创 feign性能配置调优

最近在使用 feign 时,有时会出现连接异常/阻塞的情况,对 feign 的配置进行了简单的调优。替换了 feign 的 client, 并调整了连接数。

2024-08-16 00:01:13 253

原创 系统设计:推送通知/消息

需要制定一个通知模板,发送给用户的通知,是什么格式的,包括 唯一key、标题、内容、最后更新时间、创建时间、创建人、是否删除等。包括: push服务商的消息id 、状态 、类型、通知是否发送成功、失败的次数、推送时间、通知的json字符串。通知的内容,通常是有一些相同的格式,对属性进行替换,可以制定一些占位符,比如。如果是要求推送一定要成功的,可以用数据表写入推送的通知记录。包括 用户id,推送的类型,是否选择接收通知等。通知模板、用户信息、通知设置、设备信息。推送的类型,比如:通知、邮件、短信等。

2024-08-14 23:29:45 261

原创 leetcode3.无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。

2024-08-10 11:46:18 135

原创 java中正则表达式的运用及示例

{n}表示n次,{n,}表示至少n次。中括号内的-表示范围。[0-9]表示数字0到9中的一个,[0-9]+表示至少一个数字。\d表示一个整数,\d{4}表示4个整数,\d+表示任意个整数。\s表示一个空白字符(如空格、制表符、换页符等等),\s+表示任意多的空白字符。比如.*表示任意个非换行符\n的字符。\d{4}-\d{2}-\d{2}表示年月日,比如2016-05-05。[A-Za-z]表示一个任意字母。[A-Za-z]+表示任意多个字母。[]表示或. 如[afg]表示一个为a或者f或者g的字母。

2024-08-07 21:56:47 945

原创 Spring源码(10)--Transactional注解的源码

方法路径: org.springframework.jdbc.datasource.DataSourceTransactionManager#doGetTransaction。方法路径: org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin。包括 :begin(开启事务) 和commit(提交事务)、rollback(回滚事务)这是 Transactional 事务的核心代码,使用了 AOP。

2024-08-02 23:10:54 453

原创 Spring源码(8)--Spring实例化的策略

Spring实例化的策略有几种 ,可以看一下 InstantiationStrategy 相关的类。

2024-07-30 23:39:39 425

原创 使用Lombok和建造者模式简化代码

在项目开发中,我们经常需要构建对象。常见的做法有getter/setter,或者构造器构建对象。也可能写了一个参数非常冗长,传参特别容易出错的构造方法。

2024-07-27 11:44:41 272

原创 业务开发常用的开关

或者是逻辑复杂,开发环境造数据麻烦时,也可以配置开关,把前置条件关掉,方便验证数据,也方便测试。某些关键的容易变更的逻辑,加上一个开关。如果要关上开关,就修改为 false。不需要的逻辑,可以及时用开关关掉。需要的时候,打开开关。

2024-07-27 11:44:11 321

原创 BigDecimal代码示例

在平常开发中,如果涉及到计算,要求准确的精度,比如单价*数量=总价之类的计算,那么得用到BigDecimal。###初始化比如那么有可能这个BigDecimal会从0.06变成0.059999999,传入double类型来初始化本身就是不精确的。

2024-07-27 11:42:43 195

原创 mysql分库分表 sharding-jdbc 5.0的代码实现 (二)

分库策略的类,该类必须实现 StandardShardingAlgorithm 接口,且类对应的Component注解名称为 preciseShardingTableAlgorithm./*** 分库策略* StandardShardingAlgorithm<Integer> 后面的泛型,需要跟分库字段保持一样的类型**/@Slf4j/*** 主库别名*//*** 分库策略,按用户编号最后一位数字对数据库数量取模。

2024-07-27 11:27:48 427

原创 mysql分库分表 sharding-jdbc 5.0的代码实现

它表示的是 分表策略的类,该类必须实现 StandardShardingAlgorithm 接口.且类对应的Component注解名称为 preciseShardingTableAlgorithm./*** 分表策略**/@Slf4j/*** 分表数量*//*** 分表策略* @param tableNames 所有表名* @param preciseShardingValue 精确分片值,包括(columnName,logicTableName,value)

2024-07-27 11:24:58 260

原创 java8多线程的lambda

()里面是函数的参数,中间是箭头, {}是函数的代码块,{}包含了函数的执行以及返回结果。lambda表达式,实际上就是匿名函数。

2024-07-27 10:17:23 275

原创 Spring源码(7)--Bean生命周期相关的接口

详情见: https://blog.csdn.net/sinat_32502451/article/details/140425175。如果Bean在Spring的 xml 配置文件中配置了init-method属性,会自动调用其配置的初始化方法。BeanPostProcessor常见的使用的场景,是处理标记接口实现类,或者为当前对象提供代理实现。Bean工厂实现应该尽可能支持标准的Bean生命周期接口。Bean生命周期接口相关的这些类和接口,都可以多看看。

2024-07-26 00:01:27 459

原创 Spring源码(6)--BeanFactory 实现与继承关系

由bean工厂实现的BeanFactory接口的扩展,这些bean工厂可以枚举它们所有的bean实例,而不是按客户端请求逐个按名称进行bean查找。Spring 的 IoC 容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器;这个扩展的接口只是为了允许框架内部的即插即用和对bean工厂配置方法的特殊访问。由bean工厂实现的子接口,可以是层次结构的一部分。

2024-07-23 23:59:16 716 1

原创 feign 报错 Connection reset executing POST

注意:由于 Spring的 @Retryable注解 的底层使用了AOP,如果是调用同一个类里带有@Retryable注解的方法,注解不会生效,Feign在默认情况下使用的是JDK原生的 URLConnection 发送HTTP请求,没有连接池。由于是在 使用 feign 进行网络连接时,发生了异常导致出错,因此也可以尝试 重试。可以尝试替换成 httpclient 或者 okhttp。在 feign 的接口,或者是其他服务的 接口,添加重试的注解,因此要放在不同的类里面。

2024-07-21 14:30:02 599

原创 Spring源码(5)--ApplicationContext 源码

详情见: https://blog.csdn.net/sinat_32502451/article/details/140247662。可以看到 ApplicationContext 间接继承了 BeanFactory。可以先简单了解下 ApplicationContext 和 BeanFactory。

2024-07-21 13:51:42 178

原创 Spring源码(4) Aware 接口

可以参阅 org.springframework.context.support.ApplicationContextAwareProcessor 和org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory。首先会判断对象是否属于 Aware接口类型,接着根据不同的Aware接口实现类,调用不同的实现类的逻辑。Aware 接口 表示bean可以通过回调方法从Spring容器接收特定框架对象的通知。

2024-07-14 23:06:52 208

原创 Spring源码(3) Spring IoC之BeanFactory创建bean和获取bean

bean 对象主要放在 map 里面,map 作为缓存。map 的key 是 bean对象的名称, value 是 bean 对象或者对象工厂。代码详情见: https://blog.csdn.net/sinat_32502451/article/details/140155044。详情见: https://blog.csdn.net/sinat_32502451/article/details/140247662。根据 bean 名称,返回已经注册的单例对象,如果没有注册,则创建并注册一个新对象。

2024-07-11 14:56:13 1008

原创 Spring源码(2) refresh () 方法

refresh()方法的路径: org.springframework.context.support.AbstractApplicationContext#refresh。详情见: https://blog.csdn.net/sinat_32502451/article/details/140155044。详情见: https://blog.csdn.net/sinat_32502451/article/details/140247662。BeanFactory 是在这个方法生成的。

2024-07-10 22:36:38 443

原创 常见的系统设计

建一个任务表,当任务失败时,写入到任务表中。通过定时任务,扫描任务表,对逻辑进行补偿。一般用 mysql。数据量达到两千万以上的考虑分库分表。当业务逻辑执行失败时,可以做一些补偿处理。根据业务,设置重试的次数、重试的时间间隔。多次自动补偿,仍失败的,考虑人工补偿。高并发场景,考虑加入缓存。

2024-07-10 19:46:55 209

原创 Spring之 IoC、BeanFactory、ApplicationContext

Martin Fowler提出了DI(Dependency Injection,依赖注入)的概念用来代替IoC, 即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。Spring的IoC容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。

2024-07-07 16:07:26 421

原创 记一次接口超时

近期,收到线上告警,某个接口在中午12点时,突然超时了。

2024-07-07 00:10:40 208

原创 k8s 常用的命令

查找资源 kubectl get: 获取所有的资源,包括node、namespace、pod 、service、deployment等,可以展示一个或者多个资源。更新资源 kubectl apply :将配置更改应用于Kubernetes资源对象,适合进行部分更新。通过 shell 命令,进行容器。这个命令会显示 Deployment 的详细状态,包括它创建的 Pod 的信息。删除资源 kubectl delete:删除对应的资源。首先编辑 deployment-demo.yml ,

2024-07-04 00:05:24 527

原创 Spring源码(1) 如何阅读 Spring 源码

学习 Spring 的源码,也可以通过 SpringBoot 搭环境。不管是什么源码,最好写个 demo,跑起来,然后从常用的类和方法入手,跟踪调试。

2024-07-03 16:09:52 681

原创 PropertyDescriptor动态反射setter和getter设置对象属性

BeanWrapper和BeanWrapperImpl是 Spring的接口和类,可以通过BeanWrapper和BeanWrapperImpl获取 PropertyDescriptor。使用传统的反射 Method、Field等类去处理,需要对方法名进行大量拼接,比较麻烦。我们在开发的过程中,有时会需要动态地设置属性,也就是动态getter、 setter。可以使用 PropertyDescriptor.

2024-06-26 14:43:39 351

空空如也

空空如也

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

TA关注的人

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