自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 夺命连环问——Java基础篇之面向对象

这种多态通过函数的重写以及向上转型来实现,我们上面代码中的例子就是一个完整的重写式多态。因为很多人对多态的理解是:程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,这种情况叫做多态。这个定义中描述的就是我们的第二种多态—重写式多态。总而言之我的理解:重载式多态,在编码等过程中,并没有很好的体现出多态的优势,但是不得否认也是多态的一种编写方式,而给出的重写式多态案例中,相比于重载式多态,在编码思路和代码量以及聚合度方面都较好的体现出了多态的优势。

2023-07-12 17:46:37 122

原创 夺命连环问——Java基础篇之语法

答:包装类(Wrapper Class)是为了将基本数据类型转换为对象而引入的一种机制。每种基本数据类型都有对应的包装类,例如Integer对应int,Double对应double等。Wrapper Class的本质是一个类,它提供了一些方法和属性,来操作对应的基本数据类型的值。包装类可以将基本数据类型的值包装成对象,从而拥有对象的特性,可以用来调用方法以及进行类型转换,还可以进行更复杂的操作和计算。答:泛型的本质是参数化类型,可以在编译阶段约束并检查数据类型。

2023-07-12 17:44:23 131

原创 夺命连环问-Java基础篇之集合2

Map是 Java 中的一个接口,它表示映射表,即一种将键映射到值的数据结构。在 Map 中,每个键最多只能映射到一个值。常见的实现类包括 HashMap,TreeMap和 LinkedHashMap。Map接口提供了一系列方法来操作映射表,例如 put()用于添加键值对,get()用于获取指定键所对应的值等。基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。

2023-07-12 11:57:39 122

原创 夺命连环问-Java基础篇之集合1

List:有序集合,元素可以重复。可以使用Collections.sort()方法对List进行排序。Set:无序集合,元素不能重复。可以使用HashSet或者TreeSet等实现类。Map:键值对集合,其中每个键对应唯一的值。可以使用HashMap或者TreeMap等实现类。Queue:队列,按照先进先出(FIFO)的顺序存储元素。可以使用LinkedList或者ArrayDeque等实现类。Stack:栈,按照后进先出(LIFO)的顺序存储元素。

2023-07-12 11:53:45 89

原创 通用日志组件开发

设计好基本的属性后,我们需要设计一个自定义注解用来用于标记日志操作,并指定日志操作的类型。//指定注解的作用目标,即可以用于类(TYPE)和方法(METHOD)上。@Target({ElementType . TYPE , ElementType . METHOD }) //指定注解的保留策略,即注解会在运行时保留,可以通过反射机制读取。@Retention(RetentionPolicy . RUNTIME) //指定注解会被包含在Java文档中。@Documented //指定注解可以被子类继承。

2023-07-01 15:05:08 305

原创 Mybatis进阶

性能更高更安全(防止SQL注入)性能更高:预编译SQL,编译一次之后会将编译后的SQL语句缓存起来,后面再次执行这条语句时,不会再次编译。(只是输入的参数不同)更安全(防止SQL注入):将敏感字进行转义,保障SQL的安全性。在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。而在我们刚才编写的SQL语句中,我们会看到,我们将三个条件直接写死了。如果页面只传递了参数姓名name 字段,其他两个字段 性别 和 入职时间没有传递,那么这两个参数的值就是null。

2023-06-29 23:34:23 102

原创 夺命连环问——Mybatis篇(下)

1、使用 ResultMap 进行结果封装</</</</</2、查询的时候,使用别名3、mybatis 有自动驼峰命名转换的配置。

2023-06-29 16:43:10 48

原创 Mybatis的执行流程解析

​ 首先读取配置文件,然后加载映射文件,由SqlSessionFactory工厂对象去创建核心对象SqlSession,SqlSession对象会通过Executor执行器对象执行sql。然后Executor执行器对象会调用StatementHandler对象去真正的访问数据库执行sql语句。​ 在执行sql语句前会调用ParameterHandler去设置编译参数【#{},${}】,编译在StatementHandler中进行。

2023-06-29 16:00:34 3211

原创 夺命连环问——Mybatis篇上

客户端在执行SQL时,先从连接池中获取一个Connection对象,然后在执行SQL语句,SQL语句执行完之后,释放Connection时就会把Connection对象归还给连接池(Connection对象可以复用)由于没有对用户输入进行充分检查,而SQL又是拼接而成,在用户输入参数时,在参数中添加一些SQL关键字,达到改变SQL运行结果的目的,也可以完成恶意攻击。性能更高:预编译SQL,编译一次之后会将编译后的SQL语句缓存起来,后面再次执行这条语句时,不会再次编译。可以传变化的值,但一些情况是不行的。

2023-06-29 11:12:42 116 1

原创 Mybatis入门

通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。Mybatis框架,就是对原始的JDBC程序的封装。那到底什么是JDBC呢,接下来,我们就来介绍一下。JDBC: ( Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API。本质:sun公司官方定义的一套操作所有关系型数据库的规范,即接口。

2023-06-28 22:11:42 59 1

原创 JBDC底层原理解析

JBDC(Java Database Connectivity),就是使用Java语言操作关系型数据库的一套API。

2023-06-28 21:54:46 451 2

原创 深度解析CopyOnWriteSet

. . . }. . . . }. . . . }声明了一个泛型类,表示一个线程安全的集合,该集合中的元素不允许重复。继承自,说明它是一个抽象集合类的子类,继承了抽象集合类的一些基本行为和方法。实现了接口,表示该类可以被序列化。是一个序列化版本号,用于在反序列化过程中验证序列化对象和反序列化对象的版本是否一致。是一个私有的对象,用于存储集合的元素。

2023-06-26 11:54:38 266 1

原创 深入解析serialVersionUID原理及其使用场景

序列化(Serialization)是将对象转换为字节流的过程,以便将其存储到文件、内存中进行传输或在网络中进行传输。反序列化(Deserialization)则是将字节流转换回对象的过程,以便恢复对象的状态和数据。序列化和反序列化的主要目的是在不同的计算机环境或进程之间传递对象,并且保持对象的完整性和一致性。它们在以下情况下非常有用:持久化对象:将对象保存到磁盘或数据库中,以便后续使用。远程通信:通过网络传输对象,例如在客户端和服务器之间传递数据。对象复制:通过序列化和反序列化创建对象的副本。

2023-06-25 22:16:47 2155

原创 CopyOnWriteArrayList源码解析

如上图是CopyOnWriteArrayList的继承关系。实现了List接口,具有List集合体系的公共特征,比如一系列通过索引操作集合元素的方法!实现了RandomAccess标志性接口,标志着它支持快速随机访问,因此底层一定是使用数组来实现。实现了Cloneable和Serializable标志性接口,支持克隆和序列化。还支持null元素。接一下来在探究的实现之前,我们不妨再思考一下,如果是你,你会怎么来实现一个线程安全的 List。并发读写时该怎么保证线程安全?

2023-06-25 18:58:47 223

原创 数据结构与算法5-队列(内含LeedCode练习)

​ 泛型是JDK5后引入的特性,本质是参数化类型。它提供了编译时类型安全检测机制,只支持引用数据类型。定义类、方法、接口的时候,如果类型不确定,就可以定义泛型如果类型不确定,但能知道是哪个继承体系中的,可以使用泛型的通配符。类型安全,编译时检查和约束类型。提高代码可读性和可维护性避免类型转换和重复代码允许设计者在实现时限制类型如果想深入了解泛型请访问此文章—(2条消息) 面试题——深入理解Java泛型机制_如果我是枫的博客-CSDN博客。

2023-06-25 11:29:48 132 1

原创 面试题——深入理解Java泛型机制

​ 泛型是JDK5后引入的特性,本质是参数化类型。可以在编译阶段约束并检查数据类型。泛型类:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类。但要注意,静态方法上的泛型需要在静态方法上声明,不能直接使用。泛型方法:当方法中形参类型不确定时使用。但要注意,在方法申明上定义的泛型只有本方法能用。类后面定义的所有方法都能用。泛型方法:当一个类型未确定的类实现接口时使用。使用方式有两种:实现类给出具体类型。实现类延续泛型,创建对象时再确定。

2023-06-24 12:01:01 569 1

原创 数据结构与算法4-递归(内含LeedCode练习)

思考:1、什么是递归?有什么优缺点?​ 递归就像剥洋葱,将复杂问题拆分为更小、相似的子问题,并通过递归调用来解决这些子问题。递归通常包括两个部分:基本情况(递归的终止条件)和递归情况(问题规模缩小并调用自身)。优点是简洁、可读、问题分解。缺点是可能会增加额外的性能开销,栈溢出,因终止条件未正确设置或递归调用没有正确控制造成无限递归。2、使用递归思想解题的思路是什么?哪些问题需要用到递归?​ 先判断是否需要递归求解,然后推导出递推关系,以及递归的结束条件。常用到递归的问题:求阶乘、反向打印字

2023-06-24 09:29:35 534

原创 数据结构与算法3-链表(内含LeedCode练习)

1.1定义链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续首先定义一个存储 value 和 next 指针的类 Node,和一个头指针//头指针 private Node head = null;//结点类 private static class Node {int value;Node next;} } }Node 定义为内部类,是为了对外隐藏实现细节,没必要让类的使用者关心 Node 结构定义为 static 内部类,是因为 Node不需要。

2023-06-23 11:43:27 146 2

原创 Iterator_FailFast_FailSafe源码解析

ArrayList是fail-fast的典型代表,一旦发现遍历的同时其他人来修改,则立即抛异常。实现原理:记录了循环开始时的次数,如果在循环的过程中修改次数被改,则会尽快失败,抛出异常,阻止循环继续。

2023-06-15 15:29:49 65 1

原创 Arrays.asList源码解析及常见误区

​数组通过Arrays.asList()方法转成的集合是固定的,因为其使用的ArrayList类是一个内部定义的类,不是java.util.ArrayList类,不支持add()、remove()、clear()等会修改list集合元素个数的方法。要想使用它可以将转换的集合作为参数给ArrayList类对象。

2023-06-15 11:04:58 94 1

原创 ArrayList源码解析及扩容机制讲解

原因:​ 直接给容量的话,数组如果一直没被使用就会一直占用内存。这里采用了单例模式中的懒汉设计模式。即需要的时候再创建,减少了资源的浪费。​ 这些变量和对象大家可能有疑惑,先记住就好了,后面会看到它们的用途。ArrayList的特点:1.ArrayList的底层数据结构是数组,所以查找遍历快,增删慢。2.ArrayList可随着元素的增长而自动扩容,正常扩容的话,每次扩容到原来的1.5倍。3.ArrayList的线程是不安全的。

2023-06-15 09:14:45 195 2

原创 数据结构与算法-数组(内含LeedCode练习)

动态数组实现步骤:1.首先定义三个成员变量size,capacity,array数组。数组的容量为8,ArrayList的容量为10。直接给数组容量存在一个问题,如果这个数组一直没有用到,这种初始化方式就会一直占用一个容量为8的数组。此时 我们这里可以使用懒汉模式的设计思想,给个空数组。即一开始不给你那么大的数组,真正用到的时候我再给你那么大的数组。在数组尾部添加在数组头部或中间添加。

2023-06-13 19:34:36 143 1

原创 数据结构与算法-初识算法(内含LeedCode题)

定义​ 在计算机科学领域,数据结构是一种数据组织、管理和存储格式,通常被选择用来高效访问数据​ 说白了,数据结构是一种存储和组织数据的方式,旨在便于访问和修改接下来我们通过对一个非常著名的二分查找算法的讲解来认识一下算法。

2023-06-13 08:59:29 116 4

原创 2023最新IEDA全网安装、使用、配置保姆级教学

保姆式教程请看(96条消息) 2023全网最全IDEA插件安装、界面、快捷键设置保姆式教学_如果我是枫的博客-CSDN博客到这里我们IDEA基本就配置完了,接下来让我们来系统学习JAVA吧!从JavaSE到数据结构和算法,再到微服务框架、集群、实战项目,本人致力于打造一站式的JAVA学习方案。

2023-06-11 17:33:42 17406

原创 2023全网最全IDEA插件安装、界面、快捷键设置保姆式教学

1.工程界面展示2.设置显示常见的视图3.设置界面结构:这里可以设置主题和设置窗体和菜单的字体和大小。设置背景图片3.2.1设置鼠标悬浮提示3.2.2 设置自动导包功能Add unambiguous imports on the fly:自动导入不明确的结构Optimize imports on the fly:自动帮我们优化导入的包3.2.3 设置显示行号和方法间的分隔符Show line numbers:显示行数。我建议一般这个要勾选上。

2023-06-09 19:49:44 13066 2

原创 Maven下载、安装、配置、脚本全系列保姆教程

我们在下载依赖时如果突然断网,jar下载就会中断,会产生很多无用的jar包,那么我们如果实现自动清理呢?这里我写了一个小脚本,可以自动清理仓库无用的文件和文件夹。maven-clean.bat是我自己写的清除残留依赖包的脚本,感兴趣的可以参考下文配置一下。这里从中央仓库下载的jar包,都会统一存放到本地仓库中,这个文件夹就是本地仓库。file->setting->Build,Execution,Deployment->Maven,修改成自己配置的仓库地址。源码如下:记得路径修改成自己的仓库文件。

2023-06-07 22:34:05 1988 1

空空如也

空空如也

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

TA关注的人

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