自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 异步方法导致的请求头丢失

异步方法导致的请求头丢失

2022-04-23 21:51:00 1460

原创 RocketMQ安装与初步使用

RocketMQ

2022-04-09 17:05:22 2857

原创 mysql 普通用户登录报错

问题描述: root的登录没报错、普通用户报错。普通用户测试能连接,但是真正连接是会报错。 错误截图: 原因: 排查出来的问题是 配置了init_connect变量。该变量是每次执行sql都会执行的。该变量配置错误,导致了出错。 应该改成 'SET NAMES utf8mb4’或者配置成空串 在my.cnf 配置中调整 设置语句 show variables like ‘init_connect’; set global init_connect=‘SET NAMES utf8mb4’; ...

2021-07-15 15:19:25 255

原创 Gradle配置阿里镜像

指定gradle全局镜像地址: 创建文件GRADLE_HOME/init.d/init.gradle 文件内容: allprojects{ repositories { def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public' def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repos

2020-08-12 02:22:52 559

原创 JVM2-类加载机制

本文参考的《深入理解Java虚拟机》一书第七章,属于个人对这一章节的总结笔记。《深入理解Java虚拟机》有更多的代码解释。 什么是java虚拟机的类加载机制? 就是java虚拟机讲描述类的数据从class文件中读取到内存中,对数据进行验证,转换解析和初始化,最终转换成能够被java虚拟机直接使用的java类型。 生命周期? 一个类从加载到卸载,经过7个步骤 加载–>验证–>准备–>解析–>初始化–>使用–>卸载 何时加载类?何时初始化类? 对于何时加载类,《JAVA虚拟机

2020-08-10 23:56:38 144

原创 JVM1--oop-klass模型

Metadata–>元数据,用于描述数据的数据。或者说是用于提供某种资源有关信息的数据结构。 简单的理解,元数据和java中的实体类类似,抽象出一类东西所具有的的特征,利用这些特征区分同一类东西的不同属性。 类加载器将.class文件加载进系统,将.class文件解析,生成的是什么?类的元信息在JVM中是如何存储的? 也就是说oop-klass模型,就是jvm用于存储类加载器加载、解析.class文件的“实体类”。 InstanceKlass–>表示的是java类(非数组,数组的),表示java

2020-08-07 17:29:52 358

原创 简单了解BeanFactory和FactoryBean

BeanFactory是spring bean容器的根接口,BeanFactory提供了,获取bean,判断是否包含bean,判断单例或者原型,获取bean类型,获取bean别名的api。 我们常见的AnnotationConfigApplicationContext、FileSestemXmlApplicationContext、ClassPathXmlAplicationContext都继承了BeanFactory FactoryBean FactoryBean是spring提供创建bean的一个接口

2020-07-31 14:35:51 184

原创 动态代理

一、什么是代理 学动态代理,就得知道为啥出现有动态代理。那就是静态代理不能满足日常开发的使用了。 学动态代理和静态代理,那就得知道为啥要有代理这个东西。就比如,A类中有一个去菜市场买菜的方法。那么我去菜市场要骑车,买完菜要付钱,回来还得骑车回来。那么我就可以创建一个B类,调用B类,就能够完成上面的所有操作。 这就要扯到代理模式了。 代理模式:有两个类,分别是代理类和委托类。代理类为委托类进行预处理消息,过滤消息,接着把消息转发给委托类,最后处理一下事后消息。 那按照上面的意思就是,B类是代理类,A类是委托类

2020-07-31 01:12:11 108

原创 浅谈自己理解的深拷贝和浅拷贝

在自己之前的文章中写过原型模式的笔记,原型模式中稍微理解了一下深克隆和浅克隆。今天在复习中用具体的方法进行一下深克隆。 一、为什么用到克隆 我们对一个对象进行一番操作后,这个对象就有着很多属性。这个时候我们如果去新建一个对象,又得进行刚才操作的一溜串的操作,就略显麻烦。这个时候克隆就出现了。 二、深克隆和浅克隆的区别 讲讲区别前,来讲讲要克隆的对象的一些属性。 比如 一个person对象,中包涵了另一个对象phone java中只有两种变量类型,一个基本数据类型,一个是引用数据类型。除了那8个基本数据类型,

2020-07-29 23:33:55 158

原创 Mybatis PLUS能查出数据,但是total和page为0

通过接口返回的数据,发现是接口问题,能查出数据,但是页数和总数有问题。 断点查看page信息,原因处在mybatis plus 解决方案 给项目添加一个分页的配置类 @Configuration public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new Paginati

2020-07-18 15:08:36 3177

原创 Spring源码编译

第一下载源码 地址:https://github.com/spring-projects/spring-framework/tree/5.0.x 安装gradle 版本4.x以上 地址:https://gradle.org/releases/ 解压,添加环境变量 在path中加入 如:E:\gradle-5.5\bin 在控制台 查看是否成功 ...

2020-07-17 02:14:11 118

原创 Spring依赖注入的分析

讲依赖注入前,先分析分析代码层面是如何实现手动依赖的注入,这样才能知道spring为我们实现了什么功能,有什么区别。 一、代码手动的依赖 准备了几个类 首先是Dao和其实现类 public interface UserDao { public void findName(); } public class UserDaoImpl implements UserDao{ @Override public void findName() { System.out.p

2020-07-16 23:38:33 153

原创 Spring依赖的自动注入

一、准备类 public interface UserDao { public void findName(); } public class UserDaoImpl implements UserDao{ @Override public void findName() { System.out.println("我是dao实现类1"); } } public class UserDaoImpl2 implements UserDao{ @O

2020-07-16 23:37:24 182

原创 Spring解析xml实现依赖注入

一、环境准备 引入依赖 <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> 相关类 public interface UserDao {

2020-07-16 14:59:18 521

原创 偏向锁、轻量级锁、重量锁运行时间

由于JVM启动的时候,前4秒带synchronized的方法,上的是轻量级锁。原因是应为在JVM启动时,本身就运行了很多带synchronized关键字的方法,但是这些大多都是轻量级锁。如果直接设置成偏向锁,在锁升级的过程中,偏向锁清除锁的过程比较复杂,导致在升级锁过程中消耗太多的资源和时间。所以延迟偏向锁。 public class A { int i=0; public sy...

2020-04-09 19:50:36 720 2

原创 Java注解

元注解 java.lang.annotation提供了四中元注解 @Target 表示作用的位置,比如类,方法,变量等等 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Target { ElementType[] value();...

2019-12-26 13:49:56 904

原创 Spring IOC工作基本流程

当一个类声明了 @Component、@Rpository、@Service、@Controller 这几个注解时,当我们启动服务器的时候,Spring通过代理反射来生成这个类的对象,把这个对象放在了IOC容器中。 @Service Class CarServiceImpl 1.服务器启动 通过反射生成一个对象 carService 2.这个容器呐,其实就是一个map对象,通过map.put(“k...

2019-12-26 12:40:45 1255

原创 Spring基础

1.1Spring概述 Spring的历史 第一阶段 Spring1.x阶段,使用的都是xml配置的Bean,随着项目的扩大,需要把xml文件放在不同的配置文件里,频繁的切换配置文件有点不方便。 第二阶段 在spring2.X阶段,由于JDK1.5支持注解开发,spring也提供了声明Bean的注解。两个方式都有自己的好处,就比如我们的基本配置用xml,比如数据库配置,业务配置用注解。 第三阶段 ...

2019-12-26 11:03:01 103

原创 Maven学习

1.项目管理 提供了一套完整的构建生命周期的框架 2.整合工具 自动完成一些工程的基础构建配置 maven安装 1.配置jdk 2.下载maven 3.配置一下maven的环境变量 4.查看maven是否配置成功 命令:mvn -v maven配置 1.镜像资源配置 在maven的路径在config中的settings配置文件中配置镜像 配置国内路径比较快 <mirror> ...

2019-12-23 20:12:22 112

原创 代码块和代码块的执行顺序

构造方法 构造方法是类的一种特殊方法,用来初始化类的一个新的对象。没个类都有构造方法,构造方法和类名相同,而且没有返回类型,构造方法的默认返回类型就是对象本身,并且狗杂方法不能被static、final、synchronized、abstract、native修饰。 同时一个类可以有多个构造方法,只要参数不同 子类构造方法调用父类构造方法 构造方法是不能被继承的,子类构造方法都是要调用父类的构造方...

2019-12-23 19:30:26 699

原创 分析ClassLoader工作机制

ClassLoader顾名思义就是叫作类加载器,负责把Class文件加载到虚拟机中。ClassLoader除了上面提到的功能,还有一个重要的作用,那就是审查每个类由谁来加载,是一种父优先的等级加载机制。还有一个任务将字节码重新解析成虚拟机统一要求的对象格式。 加载class文件的过程 常见的加载类错误分析 ClassNotFoundException 类找不到问题,虚拟机要加载指定的文件的字节码...

2019-12-23 11:26:22 139

原创 Javac编译原理

Javac是什么 Javac就是一种编译器,能将一种语言规范转化成另一种语言贵方。 Javac的任务就是将Java源文件编译成Java字节码,也就是JVM能够识别的二进制码。 Javac编译器的基本结构 首先先读取源代码,一个一个读进来,找出这些字节中有哪些是我们定义的语法关键词,比如if,else,while等关键词。这一个步骤就是词法分析器的作用了。语法分析器把源码变成了token流。 接下来...

2019-12-23 10:00:58 171

原创 Git的基本使用

git init :初始化git仓库 git status:查看状态 我们可以知道这个仓库啥都没有 这个可以知道有hello.html git add:将文件添加到git仓库的暂存区中 这个时候的状态变成了绿色 git commit:将添加到暂存区的文件提交到git仓库 git log:查看日志 git branch :查看当前仓库的分支 git branch hh:创建一个叫作hh的...

2019-12-23 00:11:12 112

原创 抽象类与接口

抽象类:给出了方法的定义,自己却没有实现的类。 抽象类就是为了让别的类继承的,没有别的类来继承抽象类的话,那这个抽象类就没有存在的意义了,由于抽象类是为了被继承的,所以就不能用final修饰了。 abstract 使用abstract修饰符类表示抽象类以及抽象方法 public abstract class MyTest { public abstract void t1();//抽象方法没有...

2019-12-22 18:38:34 115

原创 深入了解Java I/O的工作机制

Java I/O操作类 在i/o类中有将近80个类,大致分为四组 1.基于字节操作的I/O接口:InputStream和OutStream 2.基于字符操作的I/O接口:Writer和Reader 3.基于磁盘操作的I/O接口:File 4.基于网络操作的I/O接口:Socket 其实不管是磁盘操作还是网络传输,最小的存储单元还是字节,而不是字符。所以I/O操作的还是字节。那为什么还设有I/O的字...

2019-12-22 13:00:49 145

原创 final使用

final变量 final变量有成员变量和局部变量,在类成员中final经常和static一起使用,作为类常量使用。其中类常量必须在声明是初始化,final成员常量可以在构造函数初始化。 public class test { public static final int a;//报错 public static final int b=1; } 由static和final修饰的常量...

2019-12-20 19:26:14 228

原创 String详解

String基础

2019-12-20 16:06:36 238

原创 Java数据类型

Java数据类型 Java数据类型分为两个大类:基本数据类型和引用数据类型 基本数据类型 Java语言提供了八种基本类型 基本类型中的,数字类型默认值为0,布尔类型默认值为false byte *byte数据类型是8位 *最大值为127(2^7-1) *最小值为-128(-2^7) short *short数据类型是16位 *最小值为-2^15 *最大值为2^15-1 int *int数据类型有3...

2019-12-19 21:15:22 163

原创 面向对象基础

面向对象(Object Oriented),面向对象分析(OOA)、面向对象设计(OOD)、面向对象设计(OOP) 一、对象的概念 对象 就是java类产生的实体 二、面向对象和面向过程的区别 面向过程:最小的程序单元是函数,每个函数负责完成一个功能,用于接收输入数据,函数对输入数据进行处理,然后输出结果数据,整合软件由一个一个的函数组成,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现...

2019-12-19 00:33:33 946

原创 责任链模式

责任链模式 Servlet中的过滤器就是责任链模式的应用,我们就可以用过滤器来学习我们的责任链模式。 流程:首先过滤请求时,第一个过滤器接受请求,如果它能够处理则自己处理,如果不能处理就交给下一个过滤器,依次类推。 ConcreteFilter 具体的过滤器,每个具体的过滤器都维护着一个引用,指向下一个具体的过滤器,需要检查它自身能否处理这个请求,如果不能就传递给链中的下一个过滤器。 ...

2019-11-25 21:45:56 143

原创 对象池模式

对象池模式 对象是实例化是很耗费性能的,有些对象是共享或者频繁使用到的。这个时候用一次就创建和销毁一次那就很耗费性能了。解决这些共享和重用的对象方案称为对象池模式。典型的对象池模式就是数据库连接池。 当客户端申请资源时,会向资源池申请,资源池获取可用资源返回给客户端。客户端使用完资源时释放回资源池中重复使用。 ...

2019-11-24 22:06:11 134

原创 原型模式

原型模式 原型模式实际上就是一种克隆对象的方法。 什么时候需要用到原型模式呐?当一个对象获取了多个状态,这时候你如果再去创建新的对象,再去获取状态,会很浪费资源和时间,这个时候用克隆就非常合适。或者当你要实例化一个对象时,但你并不知道所属的具体类的时候。 Prototype 为抽象原型类,声明了clone()方法的接口或者基类 ConcretePrototype 为具体的实现类,实现抽象原型类的...

2019-11-24 21:34:45 138

原创 建造者模式

建造者模式 当实例化一个对象时,我们要得到不同的结构和不同的内部状态的对象时,我们可以使用不同的类(建造者)对它们进行实例化操作逻辑分别进行封装,这些类就是建造者。 Builder 为抽象建造者类,用于构建产品类的组成部分的抽象类或者接口 ConcreteBuilder 为具体的建造者类,实现或者继承抽象继承者类 比如我们需要轿车和跑车,我们可以创建具体的轿车建造者类和跑车建造者类,分别再各自实...

2019-11-24 21:05:16 121

原创 Java单例模式

单例模式:一个对象只能创建一个实例。 为了确保单例实例的唯一性,所有的单例构造器都要被声明为私有的,再通过声明静态方法实现全局访问获得该单例实例。 懒汉式单例模式 public class Singleton { //懒汉式这里没有马上new instance private static Singleton instance = null; private Singleton(){ ...

2019-11-17 00:02:53 100

原创 javax.servlet.http.HttpServlet找不到

创建了一个web项目时,html页面和jsp页面报错, 解决方案: 右键项目,选择properties,在选择Java Build Path,再选择Server RunTime ,再选中tomcat,最后finish。 ...

2019-10-22 22:40:00 322

原创 ssm整合练习

1.创建数据库 创建数据库以及表结构 2.导入需要的jar包 1)spring以及springmvc 2)mybatis和mybatis-spring整合包 3)数据驱动包 4)连接池包 5)json依赖包 3.整合配置文件 dao 1)SqlMapConfig.xml 2)applicationContext-dao.xml applicationContext-dao.xml下配置数据库连接、...

2019-08-20 13:11:28 320

原创 springmvc学习笔记day2

1.Conveter1转换器 public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { try { // 把字符串转换为日期类型 SimpleDateFormat simpleDateFormat = ...

2019-08-19 23:23:56 115

原创 springMvc学习笔记day1

1.什么是springmvc springMvc是和struts2都属于表现成框架 2.前端控制器 <!--前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.D...

2019-08-18 22:03:29 149

原创 Mybatis学习笔记day2

1.resultType和resultMap Mapper.xml文件的顶级元素的子元素 resultType,如果实体类中的属性与表中的字段名相同,用resultType方便,会自动映射。如果表中的字段名与实体类的属性名不一致,可以用resultMap将字段名与属性名做一个对应关系。resultMap还需要将查询结果映射在实体类对象中。 resultMap可以实现将查询结果映射为复杂类型的实体类...

2019-08-17 21:54:23 117

原创 Mybatis学习笔记day1

SqlSessionFactoryBuilder SqlSessionFactoryBuilder用于创建SqlSessionFactory,创建完sqlSessionFactory后,SqlSessionFactoryBuilder的任务就完成了 SqlSessionFactory SqlSessionFactory是一个接口,SqlSessionFactory的最佳使用范围是整个应用运行期间,...

2019-08-15 11:17:24 153

空空如也

空空如也

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

TA关注的人

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