自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 引用本地仓库私有jar包爆红问题

repositores里包含仓库地址,每次更新的适合都想要取拉去最新的代码,但是又因为网络不通,所以一直拉取不到,所以把这个文件删除之后,他就不会去拉去最新的,直接去本地仓库的。前言:各个公司都有自己的私有核心jar包,只能在公司maven仓库中拉取,如果当前环境无法链接到公司maven仓库,可以将jar包放到本地仓库,但是idea会出现无法识别的情况。本地仓库jar包目录下的 .lastUpdated 和 .repositories 文件,即可解决。

2024-08-25 17:09:34 206

原创 docker部署容器,当修改错配置文件导致容器无法启动,无法进入容器后的处理方案

首要目的就是将修改错误的配置文件进行还原。现在假设我们要修改的。

2024-08-21 16:13:54 258

原创 两个相同的对象,当对象A的属性为空,从对象B从拿到不为空的属性并赋值

【代码】两个相同的对象,当对象A的属性为空,从对象B从拿到不为空的属性并赋值。

2024-08-13 17:06:56 117

原创 spring源码阅读-推断构造方法

1、默认情况下,或者只有一个构造方法的情况下,就会使用默认构造方法或者唯一的一个构造方法2、由程序员指定构造方法入参值,通过getBean()的方式获取,可以指定参数类型以及个数,但是该bean需要为LazyBean或者原型bean,否则在spring启动的时候就已经创建好存入单例池中,getBean()也只会取到单例池种的bean。3、由程序员自己注册Bean然后指定参数个数以及类型4、由程序员自己指定第N+1个参数的类型或bean名字类型名字5、通过指定spring自己选择构造方法。

2024-08-06 00:00:03 738

原创 Spring-bean销毁

在bean的声明周期中,存在一个记录bean销毁方法的阶段,以备于spring关闭的时候可以执行bean的销毁方法(单例bean)

2024-08-03 09:55:06 354

原创 Spring-依赖注入

inject方法中if (this.cached) 调用缓存的地方,针对于方法注入点和对象注入点使用的是不同的类,所以在方法注入点中即便cached变为true,但是在字段注入点中还是false,还是要重新找对应的bean,cached主要用于原型bean创建的时候第一次走流程查找bean,后面则可以从缓存中获取。

2024-08-03 09:52:49 304

原创 Spring-创建bean

根据传入的名字获取bean真正的名字(有可能传入的是别名或者工厂类别名,以&开头的),特别需要说明的是,spring针对于别名专门使用一个map(aliasMap)进行存储,key为别名,而value则是bean真正的名字。所以在创建bena第一步就需要先根据名字获取到bean真正的名字。tips:最终调用getBean使用的是RootBeanDefinition进行构建的。什么是抽象BeanDefinition?合并BeanDefinition。

2024-08-03 09:50:21 453

原创 Spring-包扫描

二次判断类是否可独立实例化对象,内部类或者接口,抽象类都会对应生成一个.class文件,但是这些文件部分是不能够实例化的,不可以生成bean,所以在生成BeanDefinition之前需要进行过滤判断。对扫描到的BeanDefinition进行赋值,但是此时只是将className赋值到BeanDefinition中,因为还没有创建该类。spring在启动的时候就会往includeFilters中加入component注解。判断当前类是否需要当作bean进行处理。

2024-08-03 09:34:55 325

原创 rabbitMQ

5 如果web管理页面使用过程中出现RabbitMQ Management API returned status code 500报错。4 访问rabbitMQweb可视化管理页面。访问:http://ip:15672/#/用户名、密码均是:guest。3 重启rabbitMQ。4 重启rabbitmq。

2024-07-30 16:10:05 282

原创 Spring-循环依赖

简单了说,就是互相依赖,例如A对象含有B对象作为成员变量,而B对象含有A对象作为成员变量,两个对象互相依赖。

2024-06-20 00:24:50 667 1

原创 Spring

二次判断类是否可独立实例化对象,内部类或者接口,抽象类都会对应生成一个.class文件,但是这些文件部分是不能够实例化的,不可以生成bean,所以在生成BeanDefinition之前需要进行过滤判断。对扫描到的BeanDefinition进行赋值,但是此时只是将className赋值到BeanDefinition中,因为还没有创建该类。spring在启动的时候就会往includeFilters中加入component注解。判断当前类是否需要当作bean进行处理。

2023-11-30 01:00:19 1154

原创 Redis高并发缓存架构

bigkey也就意味着每次获取要产生的网络流量较大,假[[设一个bigkey为1MB,客户端每秒访问量为1000,那么每秒产生1000MB的流量,对于普通的千兆网卡(按照字节算是128MB/s)的服务器来说简直是灭顶之灾,而且一般服务器会采用单机多实例的方式来部署,也就是说一个bigkey可能会对其他实例也造成影响,其后果不堪设想。当命中缓存的时候,设置key的过期时间为默认时间,相当于时间设满,设置过期时间所需要的时间是非常非常少的,对性能的影响也是微乎其微。对于热数据的获取可以实现无线续期的效果。

2023-11-25 00:38:15 1072

原创 ORACLE查询死锁以及杀死死锁

2、执行下面语句杀死对应的会话,其中sid,serial为上述语句查询的值。1、执行预计查询死锁,这条语句直接复制执行即可。

2023-11-23 10:36:27 1008

原创 Redisson分布式锁源码解析、集群环境存在的问题

然后在正常运行的时候,会启用定时任务调用重置时间的方法(间隔为开门看配置的默认过期时间的三分之一,也就是10秒)* 带参方法:手动设置解锁时间,到期后自动解锁,或者业务完成后手动解锁,不会自动续期。调用lockInterruptibly()方法会默认传入lease 为-1,该值再后面起作用。* 空参方法:会默认调用看门狗的过期时间30*1000(30秒)* 当出现错误的时候就会停止续期,直到到期释放锁或手动释放锁。lock有两种方法 一种是空参 另一种是带参。

2023-11-22 23:32:00 810

原创 redis-持久化

优势适合大规模数据恢复对数据完整性和一致性要求不高更适合使用节省磁盘空间(rdb文件一般来说都会比aof文件要小很多)数据恢复快劣势数据不完整性在fork子进程的时候需要消耗两倍的内存。优势备份机制更加稳健,丢失数据概率更低可读的日志文本,通过操作AOF稳健,可以处理错误操作劣势比起rdb更占用磁盘(除了要记录数据,还记录了指令)恢复备份速度更慢每次读写都同步的话,有一定的性能压力。

2023-11-21 00:40:32 275

原创 java深拷贝

【代码】java深拷贝。

2023-11-20 18:39:38 84

原创 java后端返回给前端不为空的属性

目前遇到的一个问题。一个对象里面定义了数组、集合、和字符串属性等,但是返回给前端的时候数组和集合都是空的,前端接收到的是“” 一个空字符。然后保存的时候又把空字符传给后端,出现了数据结构不匹配导致报错。当返回前段的时候,如果对应的字段为空或为null,则不会返回给前端该属性。只需要注解写在属性字段上面即可。

2023-10-26 09:29:58 320

原创 JUC并发编程--------AQS以及各类锁

从源码上可以看到,当线程调用lock的时候,进来这个方法,前驱节点都是0,然后设置完前驱节点的状态为-1之后,会返回一个false,在外层又会进行一次自旋,如果前驱节点是头节点,则可以尝试通过cas尝试获取锁,当获取锁失败再次进来的时候,通过 if (ws == Node.SIGNAL)判断成功,直接返回ture,表示需要中断。首先进来会先判断前驱节点的状态,默认都是0,而该方法的目的就是要即将前驱节点状态设置成-1,在-1状态下,如果前驱节点释放锁,就会激活该节点,然后重新尝试获取锁。

2023-10-11 23:44:27 152

原创 FastJSON将对象转JSON字符串引发的血案

最近工作中需要将一个将近两百页的pdf的base64作为value转成JSON字符串,而代码中使用的方案就是JSONObject.toJSONString(obj);看网上资料有介绍JSON的最大支持处理对象可以到达1G,通过配置可以实现。不过我这里目前没有找到设置方案,先草草结束了。也就是说FastJSON内部设置了一个阈值,只要处理的对象大于67M,就会直接抛出OOM异常。而结果就是引发了OOM内存溢出。使用其他工具例如jackSon。

2023-09-14 23:15:25 1163

原创 JUC并发编程--------线程安全篇

简单的说就是局部变量。因为多线程下的使用,固然user这个对象的实例会不正常,但是对于StatelessClass这个类的对象实例来说,它并不持有UserVo的对象实例,它自己并不会有问题,有问题的是UserVo这个类,而非StatelessClass本身。让状态不可变,加final关键字,对于一个类,所有的成员变量应该是私有的,同样的只要有可能,所有的成员变量应该加上final关键字,但是加上final,要注意如果成员变量又是一个对象时,这个对象所对应的类也要是不可变,才能保证整个类是不可变的。

2023-09-11 23:49:13 747

原创 JUC并发编程--------CAS、并发工具类

实现原子操作可以使用锁,锁机制,满足基本的需求是没有问题的了,但是有的时候我们的需求并非这么简单,我们需要更有效,更加灵活的机制,synchronized关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候,访问同一资源的其它线程需要等待,直到该线程释放锁,并发里的原子性和原子操作是一样的内涵和概念,假定有两个操作A和B都包含多个步骤,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,执行B的线程看A的操作也是一样的,那么A和B对彼此来说是原子的。

2023-09-03 12:34:02 154

原创 JUC并发编程--------基础篇

counter 就好比背包中的备用干粮(0 为耗尽,1 为充足) 调用 park 就是要看需不需要停下来歇息 ,如果备用干粮耗尽,那么钻进帐篷歇息 ,如果备用干粮充足,那么不需停留,继续前进 ,调用 unpark,就好比令干粮充足 ,如果这时线程还在帐篷,就唤醒让他继续前进,如果这时线程还在运行,那么下次他调用 park 时,仅是消耗掉备用干粮,不需停留继续前进,因为背包空间有限,多次调用 unpark 仅会补充一份备用干粮。从数据来说,以程序员的角度来看, 是方法调用过程中的各种局部的变量与资源;

2023-09-03 11:40:08 867

原创 docker常用指令

1、 创建容器一:docker run -it --name=c1 centos7 /bin/bash (i表示容器不中断运行,t表示为容器分配一个指令终端(立即进入容器,通过exit退出后关闭容器),name表示给容器取名,centoros7是要创建容器的镜像,/bin/bash 进入容器)5、停止容器运行:docker stop c2 (c2指容器的别名,可以使用容器的id或者别名作为对象)4、查看所有的容器(包括历史容器):docker ps -a (去掉-a后只能看到正在运行的容器)

2023-08-15 23:31:19 842

原创 oracle xx is not null and xx !=‘‘ 查不到数

原因 :当数据为'' 的时候,在数据库中会被自动设置成null,也许是因为数据库中就没有''这个东西,所以设置成查不到(具体的底层原因没有查阅过)处理方式: 在''中加上一个空格即可。前端时间刚写了一条sql查不到数据。

2023-08-02 20:26:13 689 1

原创 mysql开启binlog并配置定期删除以及文件大小,删库跑路之数据恢复

一、开启并binlog日志并配置一、开启并binlog日志并配置1、配置文件2、参数说明log_bin=ON # 是否激活二进制日志。

2023-07-17 23:58:11 1534

原创 由spring定时任务@Scheduled(cron = “0 0 0/1 * * ?“)引起的坑

")可能会存在毫秒级别的误差,例如此时是2023-06-27 06:59:59.688 ,这时候虽然还没到七点,但是scheduled会检测到最近的时间(精确到秒) 是七点钟,就会开始执行定时任务,而此时new Date() 得到的实际是。定时任务执行之后使用new Date() 拿到当前本机时间,作为记录的创建时间,使用时间格式化(yyyy-MM-dd HH:mm:00) 将秒钟设置成0。存入数据库之后发现创建时间正常是整点,但是记录时间(格式化之后的时间)少了一分钟。意为每整点执行一次。

2023-06-27 11:42:18 2108

原创 Mysql性能监听

慢查询日志就是可以自动收集一些执行比较慢的sql,对于这个慢的阈值需要我们手动设置,sql收集的位置也需要我们手动设置。方式1 : 通过命令行的方式打开(mysql重启后失效)方式2 : 在配置文件中添加(永久生效)一、什么是慢查询日志。

2023-05-17 23:17:32 149

原创 JUC----ThreadLocal

这样一来,ThreadLocalMap中就会出现key为null的Entry,就没有办法访问这些key为null的Entry的value,如果当前线程再迟迟不结束的话,这些key为null的Entry的value就会一直存在一条强引用链:Thread Ref -> Thread -> ThreaLocalMap -> Entry -> value,而这块value永远不会被访问到了,所以存在着内存泄露。将当前线程局部变量的值删除,目的是为了减少内存的占用,该方法是JDK 5.0新增的方法。

2023-05-08 23:09:44 750

原创 JUC并发----多线程基础与常用API

会打断当前的等待状态,如果需要锁的则会等待获取锁,如果不需要所得会进入就绪状态,等待获取时间片interrupt的作用。

2023-03-19 20:51:40 850

原创 JSR303基本使用以及整合springboot统一异常处理

JSR303使用,整合springboot全局异常处理器使用!

2023-02-20 10:30:00 813

原创 通过文件路径快速读取文件内容返回文件内容为字符串,快速写入数据至文件中工具类

通过文件路径快速读取文件内容返回文件内容为字符串,快速写入数据至文件中工具类

2023-02-17 13:54:23 173

原创 将浮点数类型转换成字符串,如果有小数则保留小数字符串,小数位为0则保留整数字符串

将浮点数类型转换成字符串,如果有小数则保留小数字符串,小数位为0则保留整数字符串示例:传入参数1.52,输出1.52 传入参数1.00,输出1。

2023-02-17 13:45:22 572

原创 Mysql索据-Mysql的innodb引擎为什么要使用b+tree作为索引数据结构?

什么是索引?索引有什么优点?索引有什么缺点?b-tree和b+tree的区别为什么Innodb要选择B+tree作为数据结构什么是聚簇索引?何时使用聚簇索引与非聚簇索引联合索引是什么?为什么需要注意联合索引中的顺序?b+tree中innodb不需要回表查询吗?myisam一定会回表查询吗?什么情况使用了索引,查询还是慢什么情况下适合建索引什么适合下不适合建索引?

2023-01-09 21:47:59 951

原创 java调用外部接口

通过java对webservice接口、http接口调用

2022-12-17 14:30:11 1062

原创 JUC并发编程--------线程池

线程池基本概念Executors提供的几种线程池源码解析execut方法addworker方法runworker方法getTask方法processWorkerExit方法一、newCachedThreadPool二、newFixedThreadPool三、newSingleThreadExecutor四、newScheduledThreadPool

2022-08-26 15:47:20 464

原创 mysql的sql语句!=‘‘不起作用?

mysql的sql语句!=''不起作用?

2022-08-26 10:55:03 1588

原创 @ConditionalOnProperty的妙用

@ConditionalOnProperty

2022-08-23 16:43:44 1092

原创 JDK1.8----Stream流(过滤、分组、循环、映射、排序、计算等方法的详细使用)

steam流的常用用法,有它就够了

2022-07-13 00:21:32 5807

原创 Java的基本程序设计结构

1、数据类型java是一种强引用类型语言。这就意味着必须为每一个变量声明一种类型。在Java种,共有八种基本类型,其中4种整型、2种浮点型、一种字符类型char、一种用于表示真假的boolean类型1.1整型JAVA整型 类型 大小 取值范围 byte 1字节 负数:-128。正数:127 short 2字节 负数:-32768。正数:32767 int 4字节 负数:-2147483648。正数:2147483647 lon

2022-03-26 14:32:21 569

原创 JVM常见知识点

GC如何判断对象可以被回收判断是否为垃圾的方式有两种引用计数法:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收, 可达性分析法:从 GC Roots 开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GCRoots 没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是可回收对象。java中使用的是可达性算法分析,为什么不适用引用计数法呢?引用计数法,可能会出现A 引用了 B,B 又引用了 A,这时候就算他们都不再使用了,但因为相

2022-03-04 15:54:05 461

rabbitMQrabbitMQ

rabbitMQrabbitMQ

2024-08-01

docker-mysql-compose文件

docker-compose部署mysql集群

2023-11-14

Mycat-server-1.6-RELEASE-20161028204710-linux.tar.zip

linux版本Mycat

2021-10-25

空空如也

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

TA关注的人

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