自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小鲁班-JAVA开发

热衷于技术,喜欢java开发工作,实践来自理论,随时记笔记

  • 博客(154)
  • 资源 (13)
  • 论坛 (1)
  • 收藏
  • 关注

原创 serialVersionUID的作用

serialVersionUID是一个非常重要的字段,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本的一致性。在进行反序列化时,JVM会把字节流中传来的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果一致,则可以进行反序列化,否则会出现序列化版本不一致的问题,InvalidClassException异常。一般来说定义InvalidClassException有两种方式①、默认的1L,private static.

2021-11-21 14:24:18 263

原创 Spring AOP中Introduction的使用

Introduction是啥?在Spring中如果有一个已经存在的service,我们想对其进行增强,但是又不想改变其代码,这个时候就可以使用Introduction来处理。具体怎么实现,看下面的详细例子。引入jar包 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId&gt

2021-11-13 21:45:40 451

原创 Spring中Lookup注解的使用

我们知道在spring容器中单独的一个抽象类是不能成为一个bean的,那么有没有办法呢?这个时候我们可以使用Lookup注解,我们可以看下spring的扫描bean部分逻辑。我们知道在spring中要想成为一个bean,必须先生成BeanDefinition对象,如果一个抽象类中没有含有Lookup注解的方法,在spring扫描时就会被排除掉。 /** * 1、判断是不是独立的类,非静态内部类则无法生成bean, * 2、判断是不是接口或者抽象类(有一种特殊情况),是则无法生成 * 3、判

2021-10-26 11:32:24 20

原创 阅读Spring之前需要了解的部分基础组件

BeanDefinition:Class可以用来描述一个类的属性和方法等等其他信息,BeanDefintion可以描述spring的bean信息,比如beanClass,scope、lazyInit,autowireMode以及属性和方法等等其他信息重要的实现接口和类:...

2021-10-19 19:28:09 17

原创 spring framework源码编译步骤

最近又在重新系统地研究spring源码,避免不了需要偶自己看源码和调试,所以总结了spring源码编译的方法和步骤1.源码github下载地址:https://github.com/spring-projects/spring-framework可以选择不同的分支下载2、本文以5.3版本为例,在idea中导入源码...

2021-10-18 19:57:19 10

原创 简单模拟手写Spring框架

只是简单的按照Spring的执行流程写了一下代码,当然跟Spring源码是有很大的差别,可以拿来学习,不喜勿碰。支持单例和原型的bean,以及初始化前、初始化、初始化后的方法执行,可以解析各种定义的注解执行流程工程机构关键代码,代码路径:xqc-structure: 模拟手写springpackage com.xqc.context;import com.xqc.annotation.*;import com.xqc.aware.XqcBeanAware;impor..

2021-10-17 11:06:17 22

原创 Spring推断构造方法和应用场景初步分析

1.工程结构依赖jar包<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.4.RELEASE</version> </dependency>2、将Ord.

2021-10-15 09:59:42 12

原创 ApplicationContext相关功能说明和使用

ApplicationContext继承了EnvironmentCapable、 ListableBeanFactory、HierarchicalBeanFactory、 MessageSource、 ApplicationEventPublisher、 ResourcePatternResolver 6个接口。如图而其中ListableBeanFactory和HierarchicalBeanFactory又继承了BeanFactory,所有ApplicationContext也是BeanFacto

2021-09-22 12:53:38 19

原创 解决zookeeper写入数据前几位乱码问题

在springboot+dubbo+zookeeper+seata框架整合时,需要将seata的配置信息写入到zookeeper中,发现在zookeeper创建节点,写入的数据前几位一直是乱码,困扰了很久,最终完美解决。所有的节点下面的值都有这个问题。seata配置信息transport.type=TCPtransport.server=NIOtransport.heartbeat=truetransport.enableClientBatchSendRequest=falsetran

2021-06-26 09:43:05 66

原创 org.apache.dubbo.config.ApplicationConfig#0“ contains illegal character, only digit, letter, ‘-‘, ‘_

java.lang.IllegalStateException: Invalid name="org.apache.dubbo.config.ApplicationConfig#0" contains illegal character, only digit, letter, '-', '_' or '.' is legal. at org.apache.dubbo.config.utils.ConfigValidationUtils.checkProperty(ConfigValidation...

2021-06-22 16:31:23 162

原创 prometheus+grafana运维监控系统搭建

环境

2021-04-10 17:32:36 60 2

原创 本机MySQL-1862密码过期解决方法

错误信息截图意思就是密码过期,解决方法如下:1、用root用户登录cmd窗口,执行命令mysql -uroot -p,然后输入密码如果直接输入以上命令不行,则进入mysql安装目录的bin文件夹下输入上面的命令2、直接执行命令set password=password('密码')以上两步即可解决...

2021-04-10 14:23:02 57

原创 Redis压测工具

执行redis-benchmark命令可以看到每个命令的压测结果:

2021-04-07 00:28:29 57

原创 Redis是单线程吗?

严格来讲Redis并不是单线程的。单线程只是在执行客户端提交的命令时会进行排队然后逐条执行,而其他的操作,比如持久化、异步删除、集群同步都是由其它的额外线程执行的。

2021-04-07 00:21:33 126

原创 Redis使用

Redis5种数据类型string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(sorted set 有序集合)

2021-04-05 22:50:15 55

原创 JAVA并发三大特性

1、原子性2、可见性3、有序性

2021-03-28 23:23:20 54

原创 MySQL解压版的安装方法

1.找到解压之后的目录2.在目录下新建my.ini文件

2021-03-28 20:53:04 13

原创 JAVA内存模型

对象头、指针类型、对齐填充

2021-03-28 00:35:27 15

原创 操作系统底层认知

CPU发展中,比较著名的摩尔定律: 摩尔定律是英特尔创始人之一戈登·摩尔的经验之谈,其核心内容为:集成电路上可以容纳的晶体管数目在大约每经过18个月便会增加一倍。换言之,处理器的性能每隔两年翻一倍。摩尔定律是内行人摩尔的经验之谈,汉译名为“定律”,但并非自然科学定律,它一定程度揭示了信息技术进步的速度。CPU经过几年的发展,速度已经非常快,而内存虽然经过几年的发展,也比较快,但CPU的性能远远快于内存性能。CPU每次都要去内存中读取数据,内存性能比较慢,效率比较低,而且CPU和内...

2021-03-27 23:23:18 60

原创 ForkJoin框架原理

ForkJoin是java1.7才引入的,由大神Doug Lea写的任务性质类型CPU密集型CPU密集型也叫计算密集型,系统的硬盘、内存性能相对于CPU会好很多,此时系统运作大部分的状况是CPU Loading 100%、CPU要读写I/O(硬盘、内存),I/O在很短的时间内就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在大部分系统中,大部分时间用来做计算、逻辑判断等CPU动作的程序成为CPU bound。CPU bound的程序一般CPU使用率比较高。这可能是任务

2021-03-23 23:57:19 33

原创 ActiveMQ、RabbitMQ、RocketMQ、Kafka的比较

特性 ActiveMQ RabbitMQ RocketMQ Kakfa 开发语言 java erlang java scala 单机吞吐量 万级 万级 10万级 10万级(可达18万) 时效性 ms级(毫秒) us级(微秒) ms级(毫秒) ms级(以内毫秒) 可用性 高(主从架构) 高(主从架构) 非常高(分布式架构) 非常高(分布式架构) 功能特性 1

2021-03-21 21:49:34 46

原创 java常用的对象转map的几种方式

创建对象Userpackage com.xqc; import java.util.Date; public class User { /** * * ID */ private Integer id; /** * * 用户名 */ private String userName; /** * * 岗位ID */ private Long jobId;

2021-01-17 15:04:44 1240

原创 MapStruct使用和原理分析

在代码开发中,经常会遇到不同实体类之间的字段copy,以前经常用到的有通过set赋值或者apache、spring的BeanUtils.copyProperties(),原生的set赋值随便速度比较快,但是当字段多的时候,就显得比较麻烦了,每个都要自己手动set一下值,而apache、spring的BeanUtils.copyProperties()可以解决这种字段比较多的情况,但是这种方式有个弊端,就是,字段的类型和名称都必须一样才可以,否则copy时会被忽略掉。知道接触了一种新的方式,使用MapStru

2020-12-25 21:31:19 842

原创 java设计模式-外观模式

外观模式:隐藏系统的复杂性,向客户端提供了一个客户端可以访问系统的接口、减少客户端对系统的复杂性。代码示例:1.创建接口Shapepublic interface Shape { void draw();}2.创建实现类Rectangle、Circle、Square类/** * 矩形 */public class Rectangle implements Shape{ @Override public void draw() { Sys

2020-12-13 14:46:53 34

原创 java设计模式-装饰器模式(包装模式)

装饰器模式:在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰器模式的使用过程:1.创建一个接口,然后写方法2.创建类实现该接口,并实现接口里的方法3.创建包装类,也实现上面的接口和方法4.在包装类中声明被包装类的类型,通过构造器的方式注入5.在包装类中,不需要修改的方法,直接调用被包装类的方法即可,只需要修改的自己关注的方法。代码示例1.创建接口Ups,并声明了3个方法public interface Ups {

2020-12-13 14:17:00 249

原创 线程笔记分享

在一个进程中,多个线程可以共享进程中的相同的内存和文件资源。单线程:排队执行、在同一时间内,只能执行一个任务,CPU利用率大幅度降低,这是最大的缺点。多线程:在同一时间内可以执行多个任务、这是多线程最大的优点。实现线程的方式,继承Thread,实现Runnable接口,Thread实际上也是实现了Runnable接口,之间是多态关系,继承Thread最大的局限是java不支持多继承,所以一般建议实现Runnable接口。线程调用start方法比较耗时,大概四个步骤,1.通过jvm告诉操作系统创建T

2020-12-06 13:22:48 19

原创 系统CPU飙高分析步骤

1.top命令,查看cpu比较高的进程ID2.找到cpu比较高的进程ID之后,然后使用top -Hp 进程ID查看占用cpu比较高的线程3.找到占用cpu比较高的线程ID,使用printf '%x\n' 线程ID,将线程ID转化为16进制显示4.使用jstatck 进程ID|grep -a 线程的16进制(-a 30是显示前30行)打印出线程栈信息然后通过打印出的线程栈信息分析cpu比较高的原因打印进程下所有的线程栈信息,输出到指定目录,便于进行日志分析jstack 进程ID >/hom

2020-12-06 13:16:22 165

原创 命令查询mysql安装位置

show VARIABLES like '%base%';结果

2020-11-26 21:03:54 80

原创 理解SPI机制

SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。Dubbo、JDBC中都使用到了SPI机制,springboot也使用了spi机制,但是它并没有使用原生的,而是自己做了扩展。例子说明工程结构新建spi-interface工程,编写接口StuService和方法run新建spi-girl类,引入spi-interface工程依赖,StuGirlSe

2020-11-02 23:48:37 123

原创 Spring循环依赖问题分析和解决

项目路径:https://gitee.com/wuhan1/spring-parent.git下的spring-10循环依赖出现的三种情况1、构造器参数循环依赖2、setter方式单例,singleton3、setter方式原型模式,prototype一、构造参数依赖,新建StuServiceA和StuServiceB,之间相互引用public class StuServiceA { private StuServiceB stuServiceB; public Stu.

2020-10-12 23:09:49 80

原创 Spring 自定义标签的使用

工程目录:https://gitee.com/wuhan1/spring-parent/tree/master/spring-12自定义标签有什么用? 自定义标签可以说是spring为了给类似你我这样的开发人员扩展组件使用的,因为它提供了一个标准的公共可插拔的接口;目前我们都知道spring非常强大,不过实际上除了spring-core和spring-beans外,其他都是通过自定义标签扩展实现的,其次还有一些开源组件也是,如dubbo等。所以,对于想扩展spring组件的小伙伴来说,了解如何...

2020-10-12 23:07:12 85

原创 Spring源码日志分析

1.jdk自带的java util logging,即jul日志输出格式:从源码可以看到jul的Logger是个具体的类2.apache的commons-logging,即jcl输出结果,没有任何配置从表面看起来是使用的jul,实际上是什么样的,查看源码Log是一个接口,而不是具体的实现类看LogFactory.getLog源码,实际上是有一个数组,里面放了4种日志打印方式然后通过反射获取数组里的对象 private Log createLogFromClass(String lo

2020-10-09 23:38:26 82

原创 DCL实现单例要不要加volatile修饰

单例模式的DCL(Double-checked locking 双重校验锁定模式)写法:public class DclSingleton { private static volatile DclSingleton dclSingleton = null; public static DclSingleton getDclSingleton(){ if(dclSingleton == null){ synchronized (DclSing

2020-09-28 23:15:46 234

原创 Spring bean的生命周期总结

bean的行为模式分两种:单例模式:由ioc容器负责非单例模式:spring ioc容器不负责此种模式的生命周期,只负责创建初始化bean生命周期最简单的一种情况:实例化——》设置属性——》使用复杂的情况(实际可能只会用到其中的几步):1.实例化2.设置属性3.如果实现了BeanNameAware接口(bean名字关注接口),则可以获取正在实例化的bean的名字(bean id)4.如果实现了BeanFactoryAware接口(bean 工厂关注接口),则可以获取bean工厂5.如果实

2020-09-20 21:10:59 136

原创 Spring 组件开发利器Aware接口

我们可以使用的组件,Aware及其子接口。

2020-09-19 20:06:29 43

原创 Spring @Autowired注解使用总结

1.Autowired 属性注入不会调用set方法2.Autowired注解标注在set方法前,则会调用3.Autowired在三层注解(即标注有@service,@Repository,@Controller)的方式中不能放在方法参数前,否则报错4.Autowired在@Bean+返回值的这是形式中可以放到方法的参数前5.Autowired默认根据类型注入,如果有多个类型相同的怎么处理?,默认是报错的,报错解决方法方式一:可以@Autowired+@Qualifier组合,指定名称

2020-09-19 19:34:38 1013

原创 Spring bean初始化和销毁时执行方法的几种写法

1.指明initMethod和destroyMethod,新建Stu类,public class Stu { public void myInit(){ System.out.println("学生初始化"); } public void myDestroy(){ System.out.println("学生销毁"); }}把Stu注入当容器中,并增加初始化myInit和销毁方法myDestroy@Configuratio

2020-09-19 18:26:32 275

原创 Spring bean作用域介绍

什么是spring bean?在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。spring中的bean默认的是单例模式,前提是基于同一个JVM实例。作用域1.单例singleton,在spring ioc容器中仅存在一个bean,ioc容器启动时创建。可以设置为懒加载,第一次使用时创建,后续的直接使用,不再创建新的实例,避免bean过

2020-09-17 13:36:13 94

原创 linux查看文件命令介绍

du -sh 查看当前文件夹大小du -sh * 查看每个文件的大小du -sh * | sort -n查看每个文件的大小,按照数字大小排序du -sk filename 查看指定文件大小,不显示单位du -sh filename 查看指定文件大小,显示单位du-lh--max-depth=1:查看当前目录下一级子文件和子目录占用的磁盘容量。df命令可以显示目前所有文件系统的可用空间及使用情形...

2020-09-16 10:24:37 45

原创 Spring配置文件的几种读取方式

1.新建spring工程,引入需要依赖的最少jar包,spring-aop,spring-beans,spring-content,spring-core,spring-expression <properties> <spring.version>5.0.4.RELEASE</spring.version> </properties> <dependencies> <depend

2020-09-16 08:53:48 72

mycat-linux版

mycat linux版的中间件,mysql分库分表、读写分离,

2018-07-28

client-0.0.1-SNAPSHOT.jar

Java Redis线程池ShardedJedisPool 使用方法,Java Jedis连接池的使用

2019-12-09

elastic-job-lite-console.zip

Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能(PS:我在这里只说Elastic-Job-Lite,因为Job-Cloud我没去研究)

2019-09-30

zookeeper-3.4.6.zip

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2019-09-30

Mycat-server-win

mycat windows版的中间件,mysql分库分表、读写分离,

2018-07-27

jd-gui-windows-1.6.3.zip

java反编译工具,支持用java8 lambda表达式写的代码,进行反编译查看

2019-10-28

Redis-x64-3.2.100.zip

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

2019-09-30

tomcat-8.5.32-win-x64

tomcat-8.5.32-win-x64,欢迎大家多多下载,使用时记得给好评,谢谢!!!

2018-07-30

vue.min.js

vue开发,欢迎大家多多下载,使用时记得给好评,谢谢!!!

2018-07-30

jenkins.zip

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能

2019-11-08

nginx_win.rar

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

2019-09-30

zookeeper文件

zookeeper工具,本地一台电脑搭建zookeeper伪集群,经测试可以使用

2018-08-11

dubbo-admin

分布式,dubbo-admin,分布式服务查看,微服务等等等等等等等等

2018-07-29

CSDN发表的文章被莫名其妙的改的乱七八糟的东西了

发表于 2018-10-12 最后回复 2018-10-13

空空如也

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

TA关注的人 TA的粉丝

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