- 博客(28)
- 收藏
- 关注
原创 Spring Aop基础
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。包围一个连接点的通知,类似 Web 中 Servlet 规范中的 Filter 的 doFilter 方法。=> getUser。切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,SpringAOP就是将切面所定义的横切逻辑织入到切面所制定的连接点中。
2023-02-24 11:15:26
142
原创 redis总结,收藏背过,面试必过!!!
redis就是一个底层由C语言编写的非关系型数据库,它主要是用来做缓存,因为他把数据主要以键值对的形式存放在内存上,所以读取非常快。一般应用于消息队列(支付、排行榜等)、会话缓存、消息通知等场景它有五种数据类型:字符串String、哈希Hash、列表List、集合Set、有序集合Zset,常用的主要是前四种。redis是一个用C语言编写的非关系型(Nosql)的数据库,可以存储键和五种不同类型的值之间的映射,键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的时
2022-06-29 15:17:42
218
原创 ==和eqauls()的区别
.==和eqauls()的区别?public class Object { ...... public boolean equals(Object obj) { return (this == obj); } ...... }不难看出此时equals()是比较两个对象的地址,此时直接==比较的的结果一样.对于可能用于集合存储中的对象元素而言,通常需要重写其equals()方法.a==b与a.equals(b)有什么区别如果a 和b 都是对象,则 a==b 是比较两个对象内存地址,只有当 a 和 b 指向的是
2022-06-29 15:16:04
139
原创 String,StringBuffer和StringBuilder区别
String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);StringBuilder 字符串变量(线程不安全).此外StringBuilder和StringBuffer实现原理一样,都是基于数组扩容来实现的.
2022-06-29 13:24:47
83
原创 重载和重写
重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类
2022-06-27 14:56:11
115
原创 简述java异常体系
首先我们来看一下java异常体系结构图java异常体系Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。Error与Exception Error是程序无法处理的错误,它是由JVM产生和抛出的,比如
2022-06-27 08:59:00
270
原创 HashMap 的实现原理
HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap 基于 Hash 算法实现的1.当我们往Hashmap
2022-06-25 09:18:32
284
原创 深拷贝和浅拷贝的区别
浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍....
2022-06-22 09:13:33
115
原创 HashMap和Hashtable的区别
1 HashMap不是线程安全的HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重 复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个ent
2022-06-21 09:05:49
102
原创 为什么重写equals()方法一定要重写hashCode()方法
想要接受这个问题我们必须了解一下三个对象==在引用数据类型当中进行的是地址的比较,equals()方法在Object类当中其底层也是用==比较地址,但是不同的类可能会重写equals()方法,比如String类中的equals()方法就是先比较地址是否相同,如果相同直接返回true,地址不同在比较值,如果值相等那么同样返回true();hashCode()方法我们首先观察一个这个方法,它本身其实是一个native方法,他使用c++实现的,我们暂时可以将其理解为它将我们的对象的地址映射为一个int类型的数据。
2022-06-18 21:59:53
498
原创 对象包装类与自动装箱
1.java是类型的语言(前置课程是讲过java在内存当中是如何存储的)在这个地方我们可以看到我们定义了几个变量,变量的基本赋值并没有什么问题,但是后边我们让 a = b; a = cat;却不能这样赋值,这是为什么呢?可能有些同学知道,java是强类型的语言,可是什么是强类型呢?强类型的语言本质其实来自于数据在内存当中的存储。我们知道java有8种基本数据类型和3种引用数据类型 比如int 在内存当中分配是1个符号位,31位数值位, float在内存当中分配是1个符号位,8位阶位和23位的数值位 那么我们
2022-06-13 04:55:04
66
原创 方法重载和方法重写
1.方法重载2.方法覆盖在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。例如public class Person { public void run() { System.out.println("任何人都可以跑。。。"); } } class Student extends Person{ public void run() { System.out.println("这个学生在跑。。。"); } private void eat
2022-06-12 00:23:27
130
原创 简述java 128陷阱
public static void main(String[] args) { Integer num1 = 100; Integer num2 = 100; System.out.println(num1 == num2); Integer num3 = 128; Integer num4 = 128; System.out.println(num3 == num4);}解析:答案就在
2022-06-10 23:01:26
159
原创 什么是继承?新手超简单理解!必看,一看就会
继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。public class Person { public void run() { System.out.println("任何人都可以跑。。。"); } } class Student extends Person{ priv
2022-06-10 00:53:07
587
原创 排序二叉树的删除
一、二叉排序树的删除正在上传…重新上传取消转存失败重新上传取消二叉排序树的删除情况比较复杂,有以下三种情况需要考虑1)删除叶子节点 (比如:2,5,9,10)2) 删除只有一个子树的节点(比如:1)3)删除有两个子树的节点 (比如:7,3,10)正在上传…重新上传取消转存失败重新上传取消分析情况一:删除叶子节点 (比如:2,5,9,10)思路正在上传…重新上传取消转存失败重新上传取消分析情况二: 删除只有一个子树的节点(比如:1)思路正在上传…重新上传取消转存失败重新上传取消分析情况三: 删除有两个子树的节
2022-06-09 09:35:00
1770
原创 面向对象的三大特性是什么
封装: 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。继承: 所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分
2022-06-08 17:49:57
590
原创 ArrayList的基本使用
一、ArrayList的简介ArrayList底层的数据结构是线性表中的顺序表,底层是一个长度可以动态增长的数组。数组有很多缺点,ArrayList弥补了数组的缺点。基本格式:ArrayList list = new ArrayList();备注:从JDK1.7+开始,右侧的尖括号内部可以不写内容,但是本身还是要写的。二、ArrayList的使用(1)add(Object element) 向列表的尾部添加指定的元素。size() 返回列表中的元素个数get(int index) 返...
2022-06-08 00:33:32
586
原创 有没有哪些专属于对象的方法呢?------this
大纲:Java 中为解决变量的命名冲突和不确定性问题,引入关键字 this 代表其所在方法的当前对象的引用正在上传…重新上传取消重点强调:this代表当前对象1.this.属性名一个方法当中的局部变量和成员变量名称相同,我们的程序需要在这个方法当中访问成员变量,这个时候就必须使用this关键字,用来区分成员变量和方法当中的参数。例如,我们set方法public void setName(String name) { this.name = name; }2.this.方法名让类中的一个方法来访问类中的另一个
2022-06-06 23:57:35
72
原创 http协议
一、认识urlurl被称为统一资源定位符,用来表示从互联网上得到的资源位置和访问这些资源的方法。他的表示方法一般为:://:/如下我们启动一个servlet程序,来看一下我们的url表示http://localhost:8080/BuyechengServlet/login.html大家可以看到我们采用的是我们这里采用的是 http协议localhost:代表的是我们本机的IP地址8080:代表我们的端口号BuyechengServlet/login.html :代表的是我们...
2022-06-05 22:48:05
91
原创 jdk中的动态代理
Jdk中的动态代理JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的,但是JDK中所有要进行动态代理的类必须要实现一个接口,也就是说只能对该类所实现接口中定义的方法进行代理,这在实际编程中有一定的局限性,而且使用反射的效率也不高......
2022-06-05 09:32:15
193
原创 jdk动态代理是什么?和cglib的区别?jdk动态代理的核心类有哪几个?
Jdk中的动态代理JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的,但是JDK中所有要进行动态代理的类必须要实现一个接口,也就是说只能对该类所实现接口中定义的方法进行代理,这在实际编程中有一定的局限性,而且使用反射的效率也不高...
2022-01-15 11:18:15
154
原创 String、StringBuffer、StringBuilder
总的来说String.不可变Stringbuffer可变对象类型有安全线程多线程被synchronized修饰Stringbuilder可变对象类型无安全线程性能高详细来说String 被声明为final class,所有属性都是final的 不可变类 值不可变, 在使用频繁的时候往往对应用性能产生影响(每次使用都会创建大量对象)StringBuffer 和StringBuilder 为了解决String在拼...
2021-12-13 21:56:57
172
原创 final用法
final是最终的意思final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。1 final在java中是修饰符关键字这句话有两个意思:修饰符是放在变量名、方法名、类名前面的,用来起到修饰作用的,比如public,private,这些都是修饰符。 关键字的意思是这个单词是java内已经使用的,程序员不可以当做变量名、方法名或者类名使用。2 final可以修饰变量、方法和类3 final修饰变量的特性final修饰的变量,这个变量是不可修改的。这里又分为...
2021-12-13 21:38:40
2948
原创 IDEA Debug调试
IDEA Debug调试debug方式启动(Shift + F9)正常运行右边的蜘蛛图标断点:打在程序可执行的行 基本用 法& 快捷键 f8 单步调试,一行一行运行 f9 跳过当前断点,直到遇到下一个断点或者运行结束 f7 进入方法内部 controller =》 service 调试源码追踪方法调用 控制台查看变量 计算表达式: alt + f8 去除所有断点 在非断点所在行使用:ctrl+shift+f8 条件断点 光标放在断点所.
2021-12-10 03:29:15
384
原创 sql中排序和只显示排名第几个的数据以及distinct用法
排序用法:order by 字段 desc/asc 根据字段进行倒序/顺序排序在user表里面根据age进行倒序排序SELECT * FROM user ORDER BY age desc如果要显示年纪最大的:在user表里根据age排序后,限制查询从索引0开始查询一个SELECT * FROM user WHERE age =(SELECT DISTINCT age FROM employees ORDER BY age DESC LIMIT 0,1)这里要借助limit用法,.
2021-11-30 12:02:49
2020
原创 sql中批量插入数据用法
单次插入数据方法INSERT INTO 表名(字段1,字段2,字段3)VALUES(第一个值,第二个值,第三个值)多次插入方法第一种INSERT INTO 表名(字段1,字段2,字段3)VALUES(第一个值,第二个值,第三个值),-----------------注意有个逗号(第1个值,第2个值,第3个值)插入整行数据时可以省略字段,但是values里要对其第二种利用 UNION SELECT 批量插入U...
2021-11-30 11:39:51
33727
原创 limit用法,左右内连接的写法和区别
sql里limit用法和左右内连接在数据展示里,如何查看第几页的数据?如何定义几条数据算一页?这篇文章着重来写limit的用法。limit是限制的意思。sql中用法分两种 {"limit:x,y", "limt:y"}第一种:limit后面跟两个参数。limit:x,y x代表从第x的索引开始,y代表查询几个数据。第二种:limit后面跟一个参数。limt:y...
2021-11-25 11:50:25
2161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人