自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BeanPostProcessor子类中无法使用@GrpcClient或者@Autowired注入普通bean

BeanPostProcessor 的实例会在Spring IoC容器初始化过程中非常早的阶段就被创建和初始化。当Spring容器遇到带有此注解的字段时,会在适当的时候(通常是IoC容器生命周期的正常bean初始化阶段)根据注解的配置信息来创建并注入对应的gRPC客户端bean。依赖注入顺序:Spring容器内部bean的初始化和依赖注入遵循一定的顺序和策略,直接在BeanPostProcessor中访问其他bean可能导致依赖注入的顺序错误,即访问的bean还没有按照正常的依赖关系链路进行初始化。

2024-03-16 16:41:58 519

原创 springboot常用“钩子”:CommandLineRunner,ApplicationRunner,ApplicationListener,SmartLifecycle......

这两个接口在应用程序启动完成后的阶段执行。它们的 run 方法会在 Spring Boot 应用程序的 run 方法执行完成后立即调用。

2024-03-13 17:32:20 640 1

原创 SpringBoot中创建bean的两种方式:spring.factories 和 @Configuration + @ComponentScan

使用 spring.factories是springboot加载bean的一种方式,通常用于自动装配环境配置相关的类,和其机制和java的SPI机制类似,不同的是其配置规则 : spring.factories以key,value的键值对列表存在。value是类的完全限定类名。类之间用逗号(,)分隔,后面跟着反斜杠(\)和换行符,以提高可读性。

2024-03-13 17:16:32 789 1

原创 auth0.jwt生成token

auth0.jwt生成token

2022-08-26 09:34:21 506

原创 打jar包部署到服务器后,读取resource中的文件

打jar包部署到服务器后,读取resource中的文件

2022-08-26 09:15:19 551

原创 Spring的@EventListener简单使用

Spring的@EventListener基本使用

2022-08-09 20:40:16 308

原创 Centos7.9虚拟机采用Docker容器形式部署jar包,mysql

Centos7.9虚拟机采用Docker容器形式部署jar包,mysql

2022-07-10 15:06:51 604

原创 jooq自定义GeneratorStrategy报错ClassNotFoundException

jooq自定义GeneratorStrategy报错ClassNotFoundException

2022-07-01 11:55:49 444

转载 @RunWith与@SpringBootTest

@RunWithRunWith注解 When a class is annotated with @RunWith or extends a class annotated with @RunWith, JUnit will invoke the class it references to run the tests in that class instead of the runner built into JUnit. We added this feature late in developmen

2021-11-04 09:40:10 574

原创 Lua脚本教程

Lua脚本教程一、数据类型1、常量、变量2、变量名:字母、数字、下划线(不能以数字开头)3、几种数据类型二、运算符三、初识函数一、数据类型1、常量、变量a=10a=2.5a=“abcd”左边是变量、右边是常量lua中注释符是 –2、变量名:字母、数字、下划线(不能以数字开头)内置关键字:andbreakdoelseelseififorendinfalseturefunctionnotlocalwhilerepeatnilthenr

2021-10-05 10:43:28 40586 3

原创 leetcode-array

leetcode-array42. 接雨水42. 接雨水题解:按列求解,计算每列积水数量时,只需要将当前列墙的高度和左右最高墙的较低者比较。使用动态规划计算出每列左右两边最高的墙。class Solution { public int trap(int[] height) { if (height==null||height.length==0)return 0; int res = 0; //左边最高的墙 int[] le

2021-07-28 16:46:30 155

原创 leetcode-Tree

leetcode-Tree687. 最长同值路径687. 最长同值路径*题解:*递归函数的作用:当前节点的最长同值路径(左子树+右子树+当前节点)因为当前节点的最长同值路径是由左右子树节点的和,所以采用后序遍历。class Solution { int res = 0; public int longestUnivaluePath(TreeNode root) { if (root==null)return 0; longPath(root,root

2021-07-16 21:06:42 106

原创 每日一题leetcode

每日一题leecode91.解码方法leecode91.解码方法题解:class Solution { public int numDecodings(String s) { int n = s.length(); int[] f = new int[n + 1]; f[0] = 1; for (int i = 1; i <= n; ++i) { if (s.charAt(i - 1) !=

2021-04-21 11:30:18 1153 1

原创 HashMap的长度为什么是2的幂次方

HashMap的长度为什么是2的幂次方HashMap底层采用数组+链表+红黑树的结构存储。首先通过key的hash定位数组的位置,然后再根据equals判断key是否重复。这也是HashMap最基础的原理。如何利用 hash值?才能让数组每个位置的元素数量更均匀。我们首先想到的是%。任何数对2的幂次方取余,都等价于以下操作:hash % length == hash & (length - 1)而 & 比 % 的运行效率要高很多。...

2021-04-20 16:32:45 443

原创 下降路径最小和(动态规划)

下降路径最小和(动态规划)题目描述:给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1) 。示例 1:

2021-04-20 12:35:25 517

原创 JVM下篇(性能调优)

JVM性能调优一、概述1、背景说明2、性能优化的步骤3、性能评价指标二、JVM监控及诊断工具-命令行篇1、-jps:查看正在运行的Java进程1.1、基本情况1.2、测试1.3、基本语法2、-jstat:查看JVM统计信息2.1、基本情况2.2、基本语法一、概述1、背景说明2、性能优化的步骤3、性能评价指标二、JVM监控及诊断工具-命令行篇1、-jps:查看正在运行的Java进程1.1、基本情况1.2、测试1.3、基本语法jps -v2、-jstat:查看J

2021-03-31 21:19:46 1048

原创 leecode剑指offer集合及题解(持续更新。。)

leecode剑指offer集合及题解剑指 Offer 03. 数组中重复的数字剑指 Offer 04. 二维数组中的查找剑指 Offer 06. 从尾到头打印链表剑指 Offer 07. 重建二叉树剑指 Offer 03. 数组中重复的数字题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2

2021-03-28 17:12:25 589

原创 deadlock死锁案例及分析判断方法

死锁是并发中常见的问题,在业务逻辑复杂,锁较多时发生死锁饿的概率极大。死锁产生的主要原因在于线程之间“死等”对方手里的锁。案例:package com.yc.uc.test;class Resouces{ private String lockA; private String lockB; public Resouces(String lockA, String lockB) { this.lockA = lockA; this.lockB

2021-03-08 11:10:36 463

原创 CyclicBarrier循环屏障使用案例

CyclicBarrier与CountDownLatch功能类似,都带有计数阻塞功能。关于CountDownLatch的讲解案例CountdownLatch阻塞主线程,等所有子线程完结了再继续下去。Syslicbarrier阻塞一组子线程,直至某个状态之后再全部同时执行(一般为子线程数量达到预期值)。并且所有线程都被释放后,还能通过reset来重用。CyclicBarrier通过 cyclicBarrier.await(); 方法对子线程进行拦截。所以,业务逻辑在await() 前后就有两种完全不同的执

2021-03-04 10:55:41 330 1

原创 CountDownLatch闭锁的使用案例

CountDownLatch闭锁作为JUC中带计数功能的锁之一(另外两个常用的为CyclicBarrier和Semaphore),其主要使用方法和功能为:在当前线程A中启动多个子线程a,b,c。在不使用CountDownLath时,主线程不会等待子线程a,b,c执行结束再运行自己的逻辑。使用CountDownLatch后,主线程会在所有子线程a,b,c都执行完后,再执行自己的逻辑。import java.util.concurrent.CountDownLatch;/** * @Author Al

2021-03-04 10:09:34 232 3

原创 读写锁ReentrantReadWriteLock案例

public class ReadWriteLock { public volatile Map<String,String> map = new HashMap<>(); ReentrantLock reentrantLock = new ReentrantLock(); ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); //独占锁 public vo

2021-03-03 18:12:07 305 1

原创 stream的Collectors.toMap()方法遇到空指针

all.stream() .collect(Collectors.toMap(FiltoBaseColumnPropertiesPO::getCode, FiltoBaseColumnPropertiesPO::getValue)); }debug定位到FiltoBaseColumnPropertiesPO中有的value值为null,导致转map的时候value值为空,抛出NPE异常Collectors.toMap底层是基于Map.merge方法来实现的,而merge中value是不能为.

2021-02-24 10:49:18 4300

原创 pom文件导入本地jar包依赖

将模块打成jar包到本地maven仓库,作为其他模块的依赖引入。第一、二步:使用maven工具使用clean、install打包子模块到本地仓库。第三步:在本地仓库中找到该模块的jar包所在文件夹中的.xml文件。第四步:将蓝色部分复制到其需要导入依赖的模块的pom文件中。...

2021-01-18 17:36:01 1710

原创 SpringBoot自动装配原理(到注册beanDefinition)

SpringBoot自动装配原理(到注册beanDefinition)总体结构:return (new SpringApplication(primarySources)).run(args);new SpringApplication(primarySourcespublic SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.sources = new Linke

2020-12-01 18:42:32 616

原创 Unable to connect to localhost/<unresolved>:6379 springboot2.x调用虚拟机VM Virtualbox中的redis容器

解决方案:使用本地配置文件的方式创建docker容器:docker run -d -p 6379:6379 -v /test/redis/redis.conf:/etc/redis/redis.conf --name myredis redis redis-server /etc/redis/redis.conf --appendonly yes参数解析:-d 后台运行-p 将redis的6379端口映射到虚拟机的6379端口-v /test/redis/redis.conf:/etc

2020-11-08 20:24:44 8678 3

原创 [ERROR] 不再支持源选项 6。请使用 7 或更高版本。 [ERROR] 不再支持目标选项 6。请使用 7 或更高版本。

在pom.xml中添加 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>14</maven.compiler.source> <maven.compiler.target>14</maven.compiler.targe

2020-11-03 10:15:54 5591 4

原创 SpringMVC跨服务器文件上传中的坑403 409.,特此记录!!Request processing failed;nested exception is com.sun.jersey.api

问题描述:springMVC跨服务器文件上传,一直报错定位到PUT。错误类型:403tomcat服务器默认readonly属性为true。这样服务器会拒绝写入文件,就是403错误了。 <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet

2020-11-01 13:28:17 347

原创 基于注解的Spring AOP后置通知和最终通知执行顺序问题

问题描述:基于注解的Spring AOP后置通知@AfterReturning和最终通知@After执行顺序异常 /** * 开启事务 */ //前置通知 @Before("expression()") public void beginTransaction(){ System.out.println("前置通知。。"); Connection connection = connectionFactory.getCon

2020-10-31 20:51:58 2934 7

原创 Ajax请求$.post在SpringMVC中使用Jackson传输json信息,public User testAjax(@RequestBody User user)参数获取不到的问题

问题描述:在学习SpringMVC时,使用jackson对Ajax请求传输json信息进行自动解析。在Controller使用注解@RequestBody获取请求体并封装成user对象。如果使用$.post发起请求会出现bug,使用$.ajax则无异常。 // 发送ajax请求 $.ajax({ // 编写json格式,设置属性和值 url:"user/testAj

2020-10-31 20:29:10 417

原创 Linux搜索

根据文件名全盘搜索find / -name xxx.aaafind / -name config.php

2020-09-30 23:40:00 95

原创 OpenCV实现视频防抖技术

# Import numpy and OpenCVimport numpy as npimport cv2def fixBorder(frame): s = frame.shape # Scale the image 4% without moving the center T = cv2.getRotationMatrix2D((s[1] / 2, s[0] / 2), 0, 1.04) frame = cv2.warpAffine(frame, T, (s[1].

2020-09-28 23:27:35 1741 2

空空如也

空空如也

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

TA关注的人

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