![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 68
以终为始001
每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢
展开
-
一篇文章带你搞懂什么是幂等性问题?如何解决幂等性问题?
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于[抽象代数](https://baike.baidu.com/item/抽象代数/1537111)中。在编程中一个幂等操作的特点是其==任意多次执行所产生的影响均与一次执行的影响相同==。**幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数**。这些[函数](https://baike.baidu.com/item/函数/301912)不会影响系统状态,也不用担心重复执行会对系统造成改变。...原创 2022-08-02 10:01:35 · 892 阅读 · 0 评论 -
高效并发:Synchornized的锁优化详解
高效并发是从JDK 5升级到JDK 6后一项重要的改进项,HotSpot虚拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(LockElimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、偏向锁(BiasedLocking)等,这些技术都是为了在线程之间更高效地共享数据及解决竞争问题,从而提高程的执行效率......原创 2022-07-30 17:02:59 · 448 阅读 · 0 评论 -
深入理解Java虚拟机(第3版)学习笔记——类加载机制(超详细)
深入理解Java虚拟机(第3版)学习笔记——类加载机制(超详细)原创 2022-07-24 14:06:00 · 343 阅读 · 0 评论 -
Spring Security 认证与授权流程
Spring Security 认证与授权流程原创 2022-07-22 18:38:13 · 6793 阅读 · 0 评论 -
ArrayList源码分析
JDK17 ArrayList源码分析//容器默认的初始化容量private static final int DEFAULT_CAPACITY = 10;//用于空实例的共享空数组实例private static final Object[] EMPTY_ELEMENTDATA = {};//共享空数组实例,用于默认大小的空实例。我们将其与EMPTY_ELEMENTDATA区分开来,以便知道在添加第一个元素时膨胀多少。 private static final Object[] DEFAU原创 2022-03-23 11:35:26 · 716 阅读 · 0 评论 -
springboot统一处理异常
在三层架构开发中,表现层,业务层,数据层存在一个关系,就是表现层去调用业务层、业务层去调用数据层的关系。这将导致最终所有的异常都会抛给表现层来处理,所以如果我们要在项目中统一处理异常,只需要在表现层中的controller层进行异常处理即可!下面来看一张图因为这里我只用到了异常处理,所以就只简单演示一下前面两个注解。下面我先定义一个Controller的全局配置类import com.zky.util.CommunityUtil;import org.slf4j.Logger;import.原创 2022-02-15 18:22:11 · 1847 阅读 · 0 评论 -
JDK 安装以及环境变量的配置(保姆级教程)
JDK 安装以及环境变量的配置JDK即使Java运行的环境,其中包含了Java虚拟机、java基础类库。只有安装了JDK我们才能编译运行我们的java代码(一) JDK 安装我们首先可以百度搜索 JAVA SE进入网站后选择合适的JDK版本,我用的是8版本,现在最新版本为17,其实就是在低版本的基础上增加了一些新特性,8版本对比与之前出现了很多新特性,但在8版本之后的每个版本特性改动都不是很大,但是现在我们基础学习阶段也暂时也不会涉及到一些很新的特性,所以JDK版本一般不低于8即可,所以可以直接下原创 2022-01-08 22:07:52 · 1903 阅读 · 1 评论 -
拦截器和过滤器的区别
拦截器和过滤器的区别概述SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。过滤器与拦截器的区别:拦截器是AOP思想的具体应用。过滤器servlet规范中的一部分,任何java web工程都可以使用在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截拦截器拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用拦截原创 2021-08-11 14:42:53 · 84 阅读 · 0 评论 -
Mybatis中配置文件的属性顺序
Mybatis中配置文件的属性顺序configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源原创 2021-08-11 09:30:38 · 608 阅读 · 0 评论 -
springMVC文件上传和下载
springMVC文件上传和下载1准备工作web.xml文件导入DispatcherServlet,CharacterEncodingFilter <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>原创 2021-08-07 12:58:46 · 115 阅读 · 0 评论 -
java中的对象序列化(Serializable接口)详解
Java 序列化原文Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。整个过程都是 Java 虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以在另一个完全不同的平台上反序列化该对象。类 ObjectInputStream 和 .原创 2021-08-01 09:32:59 · 548 阅读 · 0 评论 -
JAVA实现邮件发送
JAVA实现邮件发送听说在框架中实现邮件发送比较简单,下面看一看是其底层是如何实现的(B站狂神)简单原理每一种邮箱,都有其对应的服务器来出来相关的请求和响应首先,得到授权码(QQ邮箱)带图片和附件的邮件先认识两个类一个名词:MIME(多用途互联网邮件扩展类型)MimeBodyPart类javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。MimeMultipart类javax.原创 2021-07-31 19:03:17 · 174 阅读 · 0 评论 -
在IDEA中创建mybatis项目
IDEA中创建mybatis项目相比于传统的JDBC代码太复杂了,mybatis框架更加简化,框架,自动化。思路:搭建环境 --> 导入MyBatis --> 编写代码 --> 测试mybatis官方文档1.创建项目并导入相关jar包maven项目首先你需要在pom文件中导入以下三个jar包用于数据库连接的jar包<dependency> <groupId>mysql</groupId> &原创 2021-07-24 16:25:56 · 3028 阅读 · 2 评论 -
JDBC连接数据库
JDBC数据库连接模板import java.sql.*;public class JdbcDemo01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.加载驱动 Class.forName("com.mysql.cj.jdbc.Driver");//固定写法,加载驱动 //2.用户信息和url /原创 2021-06-14 22:45:12 · 115 阅读 · 2 评论 -
JAVA中枚举的简单介绍
Java 枚举(enum)的简单介绍 枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。本质就是,一个类里定义几个静态变量,每个变量都是这个类的实例。 Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。概念定义:1)被enum关键字修饰的类型就是枚举类型.2)如果枚举不添加任何方法,枚举值默认为从0开始的有序数值实例:enum Color{ RED, GREEN, BL原创 2021-05-23 16:09:38 · 240 阅读 · 0 评论 -
JAVA中字符串的两种创建方式
JAVA中字符串的两种创建方式我们知道,在Java中有两种创建字符串对象的方式:1)采用直接赋值的方式赋值 2)采用new关键字新建一个字符串对象。这两种方式在性能和内存占用方面存在着差别。String类是Java使用频率很高的一种对象类型。JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存空间,即字符串常量池。方式一:采用直接赋值的方式赋值,例如:public class Test { public static void main(String[] args原创 2021-05-13 15:21:32 · 2963 阅读 · 0 评论 -
JAVA中StackOverflowError错误
StackOverflowError 原因 根据名字的意思可以大致知道它是跟函数栈有关的错误,就是函数栈调用太深了,可能是代码中有了循环调用方法而无法退出的情况。而像while这样的死循环,不会报错,程序会一直执行下去,占用内存。 原理 StackOverflowError 是一个java中常出现的错误:在jvm运行时的数据区域中有一个java虚拟机栈,当执行java方法时会进行压栈弹栈的操作。在栈中会保存局部变量,操作数栈,方法出口等等。jvm规定了栈的最大深度,当原创 2021-04-18 14:45:24 · 1205 阅读 · 4 评论 -
JAVA类集框架
JAVA类集框架一.基本概念在讲解类集概念前,先来思考这样一个问题, 如果现在要保存一组对象, 按照之前的做法则只能使用对象数组,一但是使用对象数组操作本身有一个限制, 就是数组有长度的限制:而通过一些数据结构的操作,如链表,则可以完成动态对象数组的操作,但是这些如果全部由开发人员来做,则肯定是比较麻烦的。 类集框架恰好解决了 上面的难题,所谓类集就是一个动态的对象数组,是对一些实现好的数据结构进行了包装,这样在使用时就会非常方便,而且最重要的是类集框架本身不受对象数组的长度限制。注:数组最大的缺原创 2021-04-15 19:25:21 · 231 阅读 · 0 评论