自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java内省机制(Introspector)读写 对象

Introspector是JDK中java.beans包下的类,它为目标JavaBean提供了一种了解原类方法、属性和事件的标准方法。通俗的说,就是可以通过Introspector构建一个BeanInfo对象,而这个BeanInfo对象中包含了目标类中的属性、方法和事件的描述信息,然后可以使用这个BeanInfo对象对目标对象进行相关操作。

2024-03-06 15:29:46 210 1

原创 springBoot设置多数据源

Target({@Target({@Target({//切面,略微有些问题,根据自己需要修改@Aspect@Componentif(signature instanceof MethodSignature ms){// java 17写法//方法上的注解//class上的注解//设置数据源。

2023-11-28 16:30:24 302 2

原创 groovy在SpringBoot中的使用

【代码】groovy在SpringBoot中的使用。

2023-11-22 14:39:28 242

原创 @FunctionalInterface注解

FunctionalInterface 是 Java 中的一个注解,它用于标记函数式接口。函数式接口是一个只包含一个抽象方法的接口,它可以用作 Lambda 表达式的类型函数式接口:函数式接口是具有单个抽象方法的接口。这个抽象方法定义了接口的功能,可以由 Lambda 表达式提供具体的实现。函数式接口是函数式编程的基础,在 Java 8 中引入了 Lambda 表达式以便更容易地使用它们。

2023-10-31 15:02:18 310

原创 动态feign调用

动态feign

2023-10-23 11:44:05 267

原创 获取nacos配置文件的内容

【代码】获取nacos配置文件的内容。

2023-05-09 15:10:51 1415 1

原创 类型转换工具类

json转换,用的是fatsjson2的依赖。

2023-04-21 13:57:04 103

原创 解决前后端交互,Long类型数据精度丢失问题

实现InitializingBean接口,重写afterPropertiesSet方法实现这个接口,Spring启动后,初始化Bean时,若该Bean实现InitialzingBean接口,会自动调用afterPropertiesSet()方法,完成自定义的初始化操作。

2022-07-07 11:04:03 538

原创 CountDownLatch和CyclicBarrier

CountDownLatch(减法)CountDownLatch允许一个或者多个线程去等待其他线程完成操作。CountDownLatch countDownLatch = new CountDownLatch(10); for(int i=1;i<=10;i++){ new Thread(()->{ System.out.println(Thread.currentThread().getName()+"玩家准备完成")

2022-04-18 15:31:34 238

原创 CPU使用率过高排查

1. 通过top找到占用率高的进程2. 通过top -Hp pid找到占用CPU高的线程ID3. 再把线程ID转化为16进制4. 通过命令jstack 进程id | grep 线程id -C5 --color 或者 找到有问题的代码

2022-04-06 16:39:35 739

原创 Spring事务失效的原因

非public修饰的方法会失效,在org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute返回null,即不支持事务。final或static修饰的方法失效,spring事务底层使用了aop动态代理,用final修饰了,那么在它的代理类中.

2022-03-22 17:10:08 1517

原创 java引用方式

1. 强引用当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现OOM也不会对该对象进行回收。强引用是最常见的普通对象引用,只要还有强引用指向一个对象,就表明这个对象还活着,垃圾回收器就不会回收这种对象。在Java中,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用时,它处于可达状态,它是不可能被垃圾回收机制回收的。因此强引用是造成Java内存泄漏的主要原因之一。对于一个普通对象,如果没有其它引用关系,只有超过了引用的作用域或者显式地将强引用赋值为null,一般热认为

2022-03-21 16:53:52 422 1

原创 Redis持久化

redis持久化过程客户端向数据库 发送写命令 (数据在客户端的内存中)数据库 接收 到客户端的 写请求 (数据在服务器的内存中)数据库 调用系统 API 将数据写入磁盘 (数据在内核缓冲区中)操作系统将 写缓冲区 传输到 磁盘控控制器 (数据在磁盘缓存中)操作系统的磁盘控制器将数据 写入实际的物理媒介 中 (数据在磁盘中)RDB定义:在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也

2022-03-21 14:35:17 712

原创 Redis缓存穿透,击穿,雪崩

缓存雪崩缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。解决:缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。设置热点数据永远不过期,定时刷新。缓存穿透缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

2022-03-19 20:51:48 790

原创 linux命令

1.整机top命令用于实时显示 process 的动态(看cpu和内存)uptime 查看启动运行时间 用户数和负载均衡2.cpuvmstat -n 2 3(表示每两秒采样一次,采样三次)进程信息字段:-r:运行和等待的进程数,数量越大,系统越繁忙。(不能超过总核心线程数的2倍,否则代表系统压力过大)-b:阻塞进程数量,数量越大,系统越繁忙。内存信息字段:-swpd:虚拟内存的使用情况,单位为 KB。-free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为

2022-03-19 19:55:28 196

原创 Java排序算法

冒泡排序两个数比较大小,较大的数下沉,较小的数冒起来。 /** * *冒泡排序 * * @param nums */ public static void bubbleSort(int[] nums) { for (int i = 0; i < nums.length; i++) { boolean flag = false; for (int j = 0; j < nums.

2022-03-01 17:48:01 385

原创 类的初始化加载顺序

java类及实例初始化顺序1、静态变量、静态代码块初始化顺序级别一致,谁在前,就先初始化谁。从上而下初始化(只在类加载时,初始化一次)2、非静态变量、非静态代码块初始化顺序级别一致,谁在前,就先初始化谁。从上而下初始化(只要对象实例化一次,就初始化一次)3、构造方法在非静态变量、非静态代码块之后执行。4、子类静态变量、静态代码块在父类的静态变量、静态代码块之后执行。5、子类非静态变量、非静态代码块在父类构造方法之后执行。5、子类构造方法在父类构造方法之后执行。6、静态方法不会被子类重写。父类

2022-02-23 17:12:35 1333

原创 计算机网络之http和https

HTTP1.什么是httpHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。2.工作流程HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。HTTP默认端口号为80。3.HTTP三点注意事项:HTTP是无连接:无连接的

2022-02-23 16:37:12 1928

原创 mysql数据库切换达梦,适配 LocalDateTime日期类型

问题数据库字段日期类型:timestampJava日期类型:LocalDateTime数据持久层框架:mybatis-plus报错Error attempting to get column 'create_time' from result set. Cause: dm.jdbc.driver.DMException: 不支持的接口或功能解决更换达梦驱动(目前只有这个驱动支持,以后的版本应该也行) <dependency> <gr

2021-11-29 11:28:29 3790 1

原创 springboot中运用线程池

1.线程池配置类package com.example.demo.asyn;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.c

2021-08-31 14:17:21 158

原创 linux解决下载docker-compose慢

配置阿里云镜像选择linux对应版本,按操作就行(我的是centos7,7版本以下的一些命令不一样)或者执行命令,将刚刚镜像地址复制进去vim /etc/docker/daemon.json然后重新加载配置文件和重启dockersystemctl daemon-reloadsystemctl restart docker更换国内下载地址 curl -L https://get.daocloud.io/docker/compose/releases/download/1.24..

2021-06-08 10:43:57 545

原创 win10家庭中文版,解决application indentity修改属性拒绝访问

管理员身份启动cmd命令窗口输入命令sc config Appidsvc start= auto 回车win+r 输入 services.msc 查看application indentity是否修改成功

2021-06-05 11:09:13 11579 10

原创 类加载器及初始化顺序和双亲委派

类加载器启动类加载器(BootstrapClassLoader)负责将 Java_Home/lib下面的类库加载到内存中扩展类加载器(ExtClassLoader)是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将Java_Home /lib/ext或者由系统变量 java.ext.dir指定位置中的类库加载到内存中。应用类加载器(AppClassLoader)AppClassLoader 会加载 jav

2021-04-20 16:54:39 314 1

原创 算法位运算——只出现一次的数字系列

1.只出现一次的数字I先看题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。方法一:map集合看完题干,脑子第一反应就是用map来解决,数组中的元素作为key,出现的次数作为value。于是两三下就敲好代码,果然困难题我唯唯诺诺,简单题我重拳出击。 public int singleNumber(int[] nums) { Map<Integer, Integer> map = new HashMap<&

2021-04-07 16:49:47 606

原创 数据库事务的隔离级别

1.什么是事务事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。事务是恢复和并发控制的基本单位。2.事务的特性(ACID)原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。一致性(consistency):事务必须是使数据库从一个一致性状态变到另

2021-03-28 20:40:50 1893 5

原创 Spring 循环依赖

1.什么是循环依赖?简单来讲,多个bean之间相互依赖,或者自己依赖自己,形成了一个闭环。如:A依赖B,然后B又依赖了A。2.Spring是怎么解决循环依赖的?下面是截取Spring官网关于循环依赖的原话:Circular dependenciesIf you use predominantly constructor injection, it is possible to create an unresolvable circular dependency scenario.For exa

2021-03-23 16:32:38 200

原创 Java基础之线程篇

什么是线程?线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。线程的状态:新建(NEW):新创建了一个线程对象。可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。阻塞(BLOCKED):阻塞

2021-03-13 22:10:17 296 1

原创 阻塞队列(BlockingQueue)

阻塞队列1.什么是阻塞队列?阻塞队列首先是一个队列,当队列是空的时候,从队列获取元素的操作将会被阻塞,当队列是满的时候,从队列插入元素的操作将会被阻塞。    线程1往队阻塞列里添加元素,线程2从阻塞队列中移除元素。    试图从空队列里移除元素的线程2(包括其他线程)会被阻塞,直到线程1(或其他线程)往队列里新增元素。    试图往已满的阻塞队列里新增元素的线程1(包括其他线程)会被阻塞,直到线程2(或其他线程)移除一个(或多个)是阻塞队列变得空闲才能继续新增元素。    至于何时挂起线程

2021-03-01 15:41:42 1676 1

原创 集合篇之ArraryList

1.ArraryList是什么?ArrayList就是数组列表,主要用来装载数据,当我们装载的是基本类型的数据int,long,boolean,short,byte…的时候我们只能存储他们对应的包装类,它的主要底层实现是数组Object[] elementData。与它类似的是LinkedList,和LinkedList相比,它的查找和访问元素的速度较快,但新增,删除的速度较慢。小结:ArrayList底层是用数组实现的存储。查询效率高,增删效率低,线程不安全。2.ArraryList的大小与扩

2021-02-27 23:41:48 1018 1

原创 volatile关键字详解

1.概念volatile是java虚拟机提供的轻量级的同步机制,有三大特性:可见性,不保证原子性,禁止指令重排。1.可见性在了解可见性之前,你首先要知道JMM(java内存模型)。JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中

2021-02-11 19:44:40 2688 11

原创 设计模式之策略模式(java)

策略模式描述:策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。1. StrategyContenxt类,进行策略的注册和和提供策略服务package com.example.sk.strategy;import com.example.sk.util.SpringContextHelper;import java.util.HashMap;public class

2021-01-26 15:46:19 227 4

原创 java借用idea查看字节码

方法一1. 找到对应的class文件,右键选中Open in Terminal,并点击2. 控制台输入 javap -c +对应的class文件的名字 然后回车方法二1. settings里面选中Tools,然后找到External Tools ,点击新建2. name输入javap -c(名字可以随便输)Program是选你jdk里bin目录下的javap.exe的地址,Arguments是 -c $FileClass$ ,其中 $FileClass$ 表示你字节码文件地址,Working

2021-01-22 10:45:11 203

原创 设计模式之单例模式(java)

单例模式概念:一个系统中只有一个类的实例对象可以被获取和使用(且该实例对象是自行创建的)。单例模式分为饿汉式和懒汉式两种。饿汉式:直接创建实例对象,线程安全。1. 枚举类package com.sk.singleton;public enum Singleton { INSTANCE}2. 直接实例化(两种对外提供实例的方式)package com.sk.singleton;public class Singleton { public static fina

2021-01-14 12:42:05 195 1

原创 链表相关实现

链表类package com.sk.Tree;public class ListNode { int val; ListNode next; ListNode() {} ListNode(int x) { val = x; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } public int getVal() {

2021-01-06 17:14:33 156

原创 pdf利用icepdf包转图片

添加依赖<dependency> <groupId>org.icepdf.os</groupId> <artifactId>icepdf-core</artifactId> <version>6.2.2</version> </dependency>测试类package com.example.demo;import org.icepdf.cor

2020-12-30 10:37:47 605

原创 wkhtmltopdf插件java使用

html生成pdfpublic class HtmlToPdfInterceptor extends Thread { @Value(value = "${toPdfTool.path}") private String toPdfTool; private InputStream is; public HtmlToPdfInterceptor(InputStream is) { this.is = is; } public voi

2020-11-03 14:39:00 424

原创 File与byte数组和inputstream相互转换

File工具类与byte数组和inputstream转换package com.sk.Util;/** * *sk */import java.io.*;import java.nio.channels.FileChannel;public class fileUtils { /** * *byte数组转inputstream * @param bytes * @return */ public static InputStream

2020-10-27 11:40:47 4786

原创 Redis学习之路

Redis()

2020-04-12 16:47:15 198

原创 @Target:注解和@Retention注解

@Target:注解的作用目标@Target(ElementType.TYPE)——接口、类、枚举、注解@Target(ElementType.FIELD)——字段、枚举的常量@Target(ElementType.METHOD)——方法@Target(ElementType.PARAMETER)——方法参数@Target(ElementType.CONSTRUCTOR) ——构造函数...

2020-03-25 10:26:33 769

空空如也

空空如也

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

TA关注的人

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