
Java
文章平均质量分 67
java知识点汇总
蓝带915
不管结果怎样,我一直在路上!
展开
-
Java虚拟机栈的出栈入栈流程及栈内存大小设置
Java虚拟机栈和线程同时创建,用于存储栈帧。每个方法在执行时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。转载 2023-06-29 11:25:58 · 749 阅读 · 0 评论 -
Servlet中使用@Autowired注解报错空指针问题
定位到是 Servlet 的问题后才查到原因所在,说是 Bean 都是归 Spring 容器管理的,但是 Servlet 单独有一个容器,归 Tomcat 管理,所以这样注入是有问题的。确定当前Servlet是加了 @Component 注解的,非常纳闷的是,被注入的那个类,在别处就注入成功了,唯独在当前这个 Servlet 中是空指针。最近在修改某银行项目代码时遇到一个这样的问题,就是我定义的 Servlet 中用到了@Autowired 注解,但是运行项目时会报错空指针异常。原创 2023-05-12 16:42:53 · 509 阅读 · 1 评论 -
ConditionalOnBean详解及ConditionalOn××总结
在学习 Springboot 自动装配的时候遇到时,查阅了相关内容了解到 @Conditional 和 @ConditionalOnBean 注解,深入学习之后受益匪浅。原创 2023-02-01 16:58:01 · 756 阅读 · 0 评论 -
解决AOP切面在嵌套方法调用时不生效问题
解决AOP切面在嵌套方法调用时不生效问题转载 2022-08-04 14:49:47 · 2808 阅读 · 0 评论 -
设计模式六大原则
设计模式六大原则原创 2022-08-02 11:36:19 · 182 阅读 · 0 评论 -
Java元注解之 @Retention
Java元注解之@Retention原创 2022-07-19 15:10:26 · 5043 阅读 · 3 评论 -
一文搞清深拷贝和浅拷贝
一文搞清深拷贝和浅拷贝文章目录一文搞清深拷贝和浅拷贝值类型 vs 引用类型赋值 vs 浅拷贝 vs 深拷贝对象赋值浅拷贝深拷贝浅拷贝代码实现深拷贝代码实现深度遍历式拷贝利用反序列化实现深拷贝对象拷贝在我们日常写代码的时候基本上是刚性需求,经常遇到,只不过很多人天天忙于写业务,忽视了一些细节问题和理解,有时候这方面一旦出了问题,就不太容易排查了。值类型 vs 引用类型这两个概念的准确区分,对于深、浅拷贝问题的理解非常重要。正如Java圣经《Java编程思想》第二章的标题所言,在Java中一切都可以转载 2021-12-28 17:23:52 · 595 阅读 · 0 评论 -
Java之try,catch,finally与return的执行
Java之try,catch,finally与return的执行在开始我的博客之前,我先引用马士兵老师的一句话,掌握了内存你就掌握了一切(滑稽)。一般情况下,程序执行到try里面的内容一定会执行finally里面的内容。如果在try或者catch里面遇到return,那么函数在执行完return后面的表达式之后,会先去执行finally里面的语句块,然后再结束方法体。但有一种特殊情况,如果在try里面有System.exit(0)这样的语句,System.exit(0)是终止Java虚拟机JVM的,连J转载 2021-12-23 10:47:21 · 434 阅读 · 0 评论 -
Java 函数式接口
目录简介常用函数式接口代码Consumer 消费型接口Supplier 供给型接口Function简介函数式接口即有且仅有一个抽象方法的接口。可以通过 Lambda 表达式创建该接口的对象。开发者一般会在函数式接口上方定义 @FunctionalInterface 注解,如果接口是函数式接口,则编译通过;如果不是则编译失败。注意:定义函数式接口时也可以不加 @FunctionalInterface,即使不写这个注解,只要保证满足函数式接口定义的条件,该接口依然是函数式接口。但是,建议加上该注解原创 2021-09-10 10:58:03 · 124 阅读 · 0 评论 -
Java 跨平台原理
前言与 C/C++ 不同,Java 规范中没有“依赖具体实现”的地方,基本数据类型大小以及有关算法都做了明确的说明。例如,Java 中 int 类型永远为 32 位整数,而 C/C++ 中 int 的类型大小有可能是16位,32位,也可能与编译器的设置有关。在java中,数据类型具有固定的大小,从而具有很好的可移植性。C/C++ 中 int 的类型大小在不同的环境存在不一,有这几方面原因:C/C++规定int字长和机器字长相同;操作系统字长和机器字长未必一致;编译器根据操作系统字长来定义int字原创 2021-09-09 14:41:36 · 501 阅读 · 1 评论 -
Java 中 getDeclared×() 和 get×() 的区别
Class 类中的 getDeclared✳() 和 get✳() 的区别Java 的 Class 类提供了很多的 getDeclared✳() 方法和 get✳() 方法,如 getDeclaredMethod() 和 getMethod() 成对出现,getDeclaredConstructors() 和 getConstructors() 也是成对出现。两者的区别如下:getMethod() 方法获得的是所有 public 访问级别的方法,包括自身的所有public方法,和从基类继承的、从接口原创 2021-09-06 10:49:59 · 225 阅读 · 0 评论 -
@PropertySource 的详细介绍
@PropertySource 的详细介绍功能该注解可以加载指定的配置文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和 @ConfigurationProperties 使用。@PropertySource 和 @Value 组合使用,可以将配置文件中的属性值注入到当前类的使用 @Value 注解的成员变量中。@PropertySource 和 @ConfigurationProperties 组合使用,可以将配置文件与 Java 类绑定原创 2021-08-18 16:55:00 · 967 阅读 · 0 评论 -
@Import 注解和 @ImportResource 注解的详细介绍
目录@Import 注解的作用1.简介2.源码解析2.1 导入配置的三种类型2.2 源码解释3、测试例子3.1 导入普通类3.2 导入带有 @Configuration 的配置类3.3 通过 ImportSelector 方式导入的类3.4 通过 ImportBeanDefinitionRegistrar 方式导入的类4. 详细过程解析4.1 getImports 方法4.2 processImports 方法@ImportResource 注解的作用1.简介2.作用解析3.测试例子@Import 注解的转载 2021-08-17 21:39:27 · 4852 阅读 · 0 评论 -
java接口中的default方法
java接口中的default方法是怎么回事转载 2021-08-16 22:29:02 · 3670 阅读 · 1 评论 -
JSP&Servlet知识点记录
JSP九大内置对象page页面对象page对象是javax.servlet.jsp.HttpJspPage类的实例。page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象,相当于Java类中的关键字this。request请求对象request对象是javax.servlet.ServletRequest类的实例,代表客户端的请求。request包含客户端的信息以及请求的信息,附带的地址参数等。每次客户端的请求都会产生一个request实例。response响应对象resp原创 2021-02-24 15:45:30 · 328 阅读 · 1 评论 -
常见设计模式代码加类图
设计模式本文没有关于设计模式的讲解,主要以示例代码和类图为主,适合有一定基础想要复习设计模式的小伙伴,想看详解请点击这里设计模式详解,类图均为亲手绘制,建议一定理解类图。工厂模式// 顶层人类接口public interface Person { void say();}// 中国人实现类public class Chinese implements Person { public void say() { System.out.println("中国人说话:原创 2020-11-20 18:21:10 · 711 阅读 · 0 评论 -
Java 8 Stream 知识点详细讲解
Java 8 Stream 知识点详细讲解什么是StreamStream 是 java 8 的新特性,Stream 是对集合功能的增强,它不是集合元素也不是数据结构,更不能用于保存数据,它是有关于算法和计算的。Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API 对流中的元素进行操作,如查询、筛选、删除、过滤、统计、映射等。也就是说 Stream 本身不负责存储数据,存储数据是用集合,数组等数据结构,它只负责对数据进行处理、加工。Stream 的操作流程创建 S原创 2020-11-18 23:45:54 · 521 阅读 · 0 评论 -
注解和反射知识点详细讲解
注解什么是注解内置注解// 什么注解public class TestAnnotation extends Object{ @Override public String toString() { return super.toString(); } // 不推荐使用,但是可以使用,或者推荐更好的方式 @Deprecated public static void test01() { System.out.pri原创 2020-11-15 01:45:00 · 213 阅读 · 0 评论 -
多线程知识点详细讲解
多线程学前总结进程与线程的区别多线程的方法执行顺序多线程核心知识点实现多线程创建线程有3种方法,分别是继承Thread类,实现Runnable接口和实现Callable接口。继承Thread类// 继承父类实现多线程public class TestThread extends Thread { @Override public void run() { for (int i = 0; i < 300; i+原创 2020-11-12 14:52:05 · 770 阅读 · 4 评论 -
微服务的定义以及优劣
微服务的定义以及优劣一、什么是微服务单体架构存在很多问题,微服务的出现就是为了解决单体架构面临的困难。就目前来看,微服务本身并没有一个严格的定义,Martin Fowler是这样定义微服务的。In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own p原创 2020-10-22 11:36:01 · 211 阅读 · 0 评论 -
单体应用架构在应用中存在的问题
单体应用架构存在的问题一个归档包(例如war格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。以一个电影售票系统为例,架构如图所示。该应用尽管已经进行了模块化,但由于UI和若干务模块最终都被打包在一个war包中,该war包包含了整个系统所有的业务功能,这样的应用系统称为单体应用。相信很多项目都是从单体应用开始的。单体应用比较容易部署、测试,在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加,越来越多的人加人开发团队,代码库也在飞速地膨胀。慢慢地,原创 2020-10-22 10:53:14 · 812 阅读 · 0 评论 -
Spring的java代码配置方式
我们以一个简单的图书管理系统作为例子,给大家分析java代码的Spring配置。首行看一下代码结构,该系统有两个接口,分别是查询书籍接口和卖书规则接口,其中查询书籍接口分别有按出版社查询和按书本类别查询两个实现类,卖书规则接口分别有满额减价优惠和满额打折优惠。然后AppConfigutration就是我们的配置类,TaobaoSell就是我们的装配类啦!看看各个类首先是实体类,还不知道...原创 2019-12-23 11:43:54 · 499 阅读 · 0 评论 -
Java的参数传递是值传递还是引用传递
Java的参数传递是值传递还是引用传递关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题。有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问。关于值传递和引用传递其实需要分情况看待。一、Java数据类型Java数据类型分为「基本数据类型」和「引用类型」两大类。基本数据类型(8种)引用类型(3种)引用类型可分为类引用类型(类)、接口引用类型(接口)和数组引用类型(数组)。以下代码定义了3个引用变量:user、myThread、in转载 2020-10-22 09:39:20 · 731 阅读 · 0 评论 -
代理模式的使用总结
代理模式的使用总结目录一、代理模式 二、静态代理 (一)静态代理 (二)静态代理简单实现 三、动态代理 (一)动态代理 (二)动态代理简单实现 四、动态代理原理分析 五、InvocationHandler接口和Proxy类详解 六、JDK动态代理和CGLIB动态代理代码示例比较与总结 (一)定义创建用户管理接口 (二)用户管理实现类,实现用户管理接口(被代理的实现类) (三)采用JDK代理实现:JDK动态代理实现InvocationHandler接口 (四)采用CGLIB代理转载 2020-09-18 01:05:46 · 928 阅读 · 0 评论 -
List遍历的八种写法
List遍历的八种写法最近在使用List的时候看到了非常方便遍历方法,汇总一下发现竟然有这么多种写法。具体如下:package com.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.function.Consumer;/** * @author 蓝带 * @date 2020/9/17 0017 0:07 */public class原创 2020-09-17 00:35:45 · 1035 阅读 · 0 评论 -
HashMap底层实现原理及面试问题
HashMap底层实现原理及面试问题①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。当转载 2020-09-16 23:59:57 · 1134 阅读 · 0 评论 -
AVL与红黑树的区别
AVL1.简介AVL树是最先发明的自平衡二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,每个节点的左右子树高度差不超过1,和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有结点的左右子树高度差不超过1)。如图所示:2.局限性增加和删除可能需要通过一次或多次树旋转来重新平衡这个树,而因为旋转非常耗时,维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。当然,如果应用场景中对插入删除不频繁,只.原创 2020-09-05 17:28:15 · 419 阅读 · 0 评论 -
面向对象的基本特征和基本原则
面向对象的三大基本特征和五大基本原则虽然都是一些基础的问题,面试人人都能答的上来都有哪些基本特征和基本原则,背完之后暗道好险还好没有忘,但是细节的使用和体现在哪些方面,想要流利地说出来并举出几个例子可能有点困难(我是这样的),所以还是总结一下。三大基本特征1.封装定义:把对象的属性和操作(或服务)结合为一个独立的整体,即属性私有化,根据需要提供setter和getter方法来访问,尽可能隐藏对象的内部实现细节。特点:使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员。我们常用的US.原创 2020-09-04 23:50:01 · 305 阅读 · 0 评论 -
Queue中常用的element/peek,remove/poll,add/offer有什么不同
Queue中常用的element/peek,remove/poll,add/offer有什么不同虽然ArrayList底层是数组,但是优化之后的增删操作依然不慢,这就使得LindedList的很少出现在我们视野当中。但是在涉及到Stack和Queue时候(主要是刷题)时,LinkedList的还是很常见的,由于底层是双向链表,又实现了Deque接口,经常被繁多的方法搞得头晕,主要方法如下:其中的接口Queue的element/peek,remove/poll,add/offer三对方法作用很相似,细.原创 2020-09-04 18:38:53 · 718 阅读 · 0 评论