自定义博客皮肤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)
  • 收藏
  • 关注

原创 虚拟机的克隆

重启网络 :systemctl restart network。在这一步勾选创建完整克隆,其他的都下一步。修改完主机名后 reboot 重启虚拟机。点击生成,就会生成一个随机的mac地址。虚拟机右击 -> 管理 ->克隆。把ip地址的最后一位修改即可。3.修改IP地址和UUID。把UUID随便修改一位。1.修改 mac地址。

2023-05-04 23:04:58 3426 1

原创 java反射(易懂)

(1)Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行 期 借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内 部属性及方法。(2)加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。

2022-11-11 18:56:31 1285

原创 手把手教你实现一个JDBC程序

static {//静态初始化器 properties = new Properties();try {} } //关闭数据库连接对象 public void releaseConnection() {try {= null) {} } //定义方法获得数据库的连接对象 public Connection getMysqlConnection() {try {//加载驱动 Class . forName(driver);

2022-11-01 17:31:49 571

原创 JVM中的垃圾回收机制

java相较于c、c++语言的优势之一是自带垃圾回收器,垃圾回收是指不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,程序员唯一能做的就是通过调用System.gc 方法来建议执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最主要的缺点。当然相对于它给程序员带来的巨大方便性而言,这个缺点是瑕不掩瑜的。

2022-10-25 17:46:14 4547

原创 单例模式详解

单例模式:Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。

2022-10-17 16:17:34 312

原创 多线程-线程池解析

线程池就是创建若干个可执行的线程放入一个池(容器)中,有任务需要处理时,会提交到线程池中的任务队列,处理完之后线程并不会被销毁,而是仍然在线程池中等待下一个任务。线程池的设计思路为:线程池为一个创建管理线程的工厂,把执行任务分配给各个线程去执行,当线程数量不满足任务数量时。会暂时把任务防止阻塞队列中,等待空闲线程来执行。当阻塞队列放置满了,就会创建新线程去执行多出的任务。当任务足够多,以至于创建的线程达到最大线程数时,就会采用拒绝策略不接收任务。

2022-10-12 17:15:26 280

原创 内部类,静态内部类,匿名内部类

以动物园来举例子,动物园(class zoo)里面有猴子(monkey)类,有鱼(fish)类,但鱼和猴子都是zoo类的一部分。匿名内部类比较实用,它比较符合当初设计内部类时的场景。内部类:就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我。开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作。静态内部类:就是我跟你没关系,自己可以完全独立存在,但是我就借你的壳用一下,来隐藏自己。一个继承了类的子类的匿名对象 或者一个实现了接口的实现类的匿名对象。

2022-10-07 16:08:37 183

原创 JDK动态代理和CJLIB动态代理

其实动态代理与静态代理的本质一样,最终程序运行时都需要生成一个代理对象实例,通过它来完成相关增强以及业务逻辑,只不过静态代理需要硬编码的方式指定,而动态代理则是以动态方式生成代理(有编译时操作字节码生成的方式、运行时通过反射、字节码生成的式)。2.这个代理类是针对Cat目标类的对象进行设置的,如果再需要添加 Dog 目标类的代理,那就必须再针对 Dog 类实现一个对应的代理类,这样就使得代理类的重用型不友好,并且过多的代理类对维护上也是比较繁琐。1、当bean实现接口时,会用JDK代理模式。

2022-10-04 15:25:02 800

原创 数据库的三大范式解析

数据库的三大范式

2022-09-19 23:22:55 330

原创 ==和equals()的区别

String 中的 equals ⽅法是被重写过的,因为 Object 的 equals ⽅法是比较的对象的内存地址, ⽽ String 的 equals ⽅法比较的是对象的值。equals() ⽅法存在 于 Object 类中,⽽ Object 类是所有类的直接或间接⽗类,因此所有的类都有 equals() ⽅法。因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引⽤数据类型的 变量,其本质比较的都是值,只是引⽤类型变量存的值是对象的地址。3 种:类,接口,数组。

2022-09-08 23:08:43 74

原创 缓存雪崩,缓存穿透,缓存击穿的原因和解决方案

为了使查询速度更快,我们选择使用缓存来保存数据,使原本每次请求都需要查询数据库的操作变成先查询缓存,缓存有直接返回,缓存没有则查询数据库然后再写入缓存中,通常缓存都是有有效时长的,否则就会一直占用内存空间,导致卡顿现象出现。指当请求查询缓存和数据库都不存在的数据时,先查询缓存为空,再查询数据库依然为空,向请求返回空,如果大量请求同时访问这些不存在key那么这些请求依然会造成压垮数据库的现象,这种通常是恶意查询和被攻击几率较大。

2022-09-01 18:29:07 221

原创 MySQl的事务处理机制

1.事务的定义事务(Transaction)就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

2022-08-14 16:23:46 647

原创 JDK动态代理和CGLIB动态代理

1.由于JDK动态代理是通过被代理类实现的接口来创建代理对象的,因此JDK动态代理只能代理实现了接口的学的对象。2.CGLib动态代理,是通过创建被代理类的子类来创建代理对象的,因此即使没有实现任何接口的类也可以通过CGLib产生代理对象。3.创建InvocationHandler接口的实现类,在invoke()方法中完成代理类的功能。2.2.定义getProxy方法创建并返回代理对象(代理对象是通过创建被代理类的子类来创建的>2.将通用的代码放在代理类中实现,提供了代码的复用性。2.创建目标类实现接口。.

2022-08-11 11:36:48 256

原创 Bean的作用域

Bean的作用域和在web.xml文件中的设置

2022-08-10 11:25:02 120

原创 Spring中Bean的装配方式

Spring中Bean的装配方式,注解的应用和装配方式的比较

2022-08-10 11:11:49 399

原创 Spring-Ioc的介绍

IOC(Inversion of Control 即控制反转)将对象交给容器管理。1.创建person类2.创建person属性3.人为通过new的方式创建person对象4.通过set方法给对象赋值Ioc中定义对象1.创建person类2.创建person属性3.将person属性值主动注入到person类中(控制反转,通过反射机制)4.由Ioc容器统一进行管理Bean(person)对象。...

2022-08-09 23:05:19 162

原创 JavaWeb会话跟踪技术,作用域,页面跳转

a.每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效。当一个客户在多个页面间切换时,服务器会保存该用户的信息。......

2022-08-04 12:14:17 172

原创 Servlet详解

这里涉及到一个模板的设计模式问题,HttpServlet类是实现了更高层的一个Servlet类,不过你可以这么认为高层的Servlet类已经实现了service方法,因为service方法里面已经可以根据Http请求的方式post或get自动调用相应的doPostdoGet方法,所以你只要实现相应的doPost或doGet方法就可以了。在 POST 中,可以发送大量的数据,因为数据是在正文主体中发送的。GET 方法的数据是可缓存的,而 POST 方法的数据是无法缓存的。而 POST 方法主要用于更新数据。.

2022-08-02 23:20:53 436

原创 IDEA中单元测试@Test的设置

1.打开IDEA,File——>ProjectStructure。2.点到Modules——>Dependencies点击+4.找到你安装IDEA的路径。4.找到这两个jar包。

2022-08-01 11:48:43 3220

原创 MyBatis中SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession的生命周期和作用域

SqlSession的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。绝对不能将SqlSession实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。也绝不能将SqlSession实例的引用放在任何类型的托管作用域中,比如Servlet框架中的HittpSession。换句话说,每次收到的HTTP请求,就可以打开一个SqlSession,返回一个响应,就关闭它。3.SqlSession的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。.

2022-08-01 11:28:41 992

原创 MyBatis缓存机制详解

1.MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。2.MyBatis系统中默认定义了两级缓存一级缓存和二级缓存。3.默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地缓存)。二级缓存需要手动开启和配置,他是基于namespace级别的缓存。4.。为了提高扩展性,MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存。......

2022-08-01 11:05:54 519

原创 MyBatis执行流程剖析

分别是SimpleExecutor(简单执行器)、ReuseExecutor(重用执行器)、BatchExecutor(批处理执行器)。看是否执行成功SQL语句,因为返回的是结果集所以要使用resultMap,getStudents是接口方法。b.缓存维护这里的缓存主要是为─级缓存服务,功能包括创建缓存Key、清理缓存、判断缓存是否存在。由SqlSession对象获取Mapper(接口),执行接口中的方法。c.事物管理提交、回滚、关闭、批处理刷新。a.基本功能增,删,改,查。...

2022-07-31 16:34:23 87

原创 Mybatis程序

数据持久化1.持久化就是将程序的数据在持久状态和瞬时状态转化的过程。储存在内存中就不是持久化因为断电即失。2.持久化例子数据库(通过jdbc)可以持久化,io流通过把数据存储在文件中保证数据的持久化。............

2022-07-28 12:31:56 267

原创 浅谈Nio编程

1.Selector一般称为选择器,也可以翻译为多路复用器,它是javaNio核心组件中的一个,用于检查一个或多个NioChannel(通道)的状态是否处于可读,可写,如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。2.使用Selector的好处在于使用更少的线程就可以处理通道了,相比于使用多个线程,避免了线程上下文切换带来的开销。.....................

2022-07-27 12:17:56 161

原创 浅谈 B树,B+树

B-树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点;(如果比关键字小则往关键字左边地址进行继续查找,比关键字大则往关键字右边进行查找)B+树是B-树的变体,也是一种多路搜索树1.其定义基本与B-树同,除了2.非叶子结点的子树指针与关键字个数相同;3.非叶子结点的子树指针P[i],指向关键字值属于[K[i],K[i+1])的子树(B-树是开区间);...

2022-07-25 10:53:40 236

原创 MySQL几种存储引擎的比较

支持外键及引用的完整性,包括级联更新和删除。f.在MySQL服务器崩溃后提供自动恢复。非永久需要的数据(在内存中放入的数据)(MySQL数据库默认的存储引擎)g.多版本(MVCC)和行级锁定。这里默认的是InnoDB。大量的数据读而少量数据更新。它管理的表具体有以下特征。提供全部ACID兼容。...

2022-07-24 18:04:00 231

原创 浅谈UDP

UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送、接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。JAVA提供了DatagramSocket类作为基于UDP协议的Socket。1.创建发送端的Socket对象(DatagramSocket)1.创建接收端的Socket对象(DatagramSocket)3.调用DatagramSocket对象的方法接收数据。2.创建数据,把数据打包。.........

2022-07-18 22:21:22 519

原创 浅谈TCP

2.监听客户端连接,返回一个Socket对象Socketaccept()3.如果想要的到服务端的反馈需要创建byte数组用来接收服务端的反馈。3.获取输入流,读取客户端发来的数据,并显示在控制台上。1.创建客户端的Socket对象。2.引入输出流来写数据。.........

2022-07-18 21:57:16 368

原创 数据结构:链表

对链表进行添加操作: 对链表中间进行添加操作:1:首先找到要插入节点位置的前一个结点(这里可以用for循环进行寻找) 2:在进行添加操作的时候 先让要插入的node节点的next指向下一个节点再让要插入位置的前一个结点的next指向node结点 即可完成添加 2:进行结点的删除操作这里假设要删除的结点为delNode1:先用for循环找到要删除结点的前一个结点 再让前一个结点的next指向delNode的next再把delNode.next = null即可 使用虚拟头结点进行删除操作: 不使用虚拟头节点进

2022-06-29 21:23:14 70

原创 正则表达式简明扼要

正则表达式的应用

2022-06-29 17:20:08 81

原创 Static的应用

1:static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。2:static修饰的方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都必须依赖具体的对象才能够被调用。3:静态代码块static代码块也叫静态代码块,作用是对类进行初始化,而且他随着

2022-06-16 16:28:26 121

原创 面向对象的特征

在复杂的文件系统中,文件的分门别类存储在不同的文件夹中,解决了文件的重名问题,在程序设计过程中,一个系统工程需要编写几百个甚至上千个类文件,也经常遇到类名相同的问题,并且由很多程序研发人员共同协作完成,很难保证不同的程序研发人员选择类名的时候,类名不冲突。Java中使用包管理类文件,Java的类文件存储在不同的包中。在每一个类声明前,使用关键字package定义包。package只能放在类文件的最上面,com是包,javatest是com的子包。包名将在磁盘上生成对应的物理目录名。就是说Demo1类文件会存

2022-06-16 16:19:55 46

原创 java的构造方法

构造方法

2022-06-16 16:11:23 1088

原创 java 选择排序 冒泡排序 插入排序 希尔排序

java排序算法

2022-06-08 16:19:17 104

原创 java 快速排序

同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端, 而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分。快排(双边循环):import java.util.Arrays;public class QuickSort_ { public static void quicksort(int[] arr,int

2022-06-08 15:20:58 407

原创 java 归并排序

归并排序:和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序先拆后排 逐渐扩大 长度代码import java.util.Arrays;public class MergeSort { public static void mergesort(int[] arr,int left,int right){ if(left==right){ .

2022-05-26 15:48:11 182

原创 Java中的面向对象

1:什么是对象面向对象是java中特有的功能,也有着万事万物皆对象这一说法。能看的见,摸得着的就是对象。例如猫就是一个对象猫的毛色 ,品种可以算是对象的状态猫的跑,条,做老鼠的行为叫做对象的行为2:什么是类类是具有相同的状态和相同的行为的一组对象的集合。例如有身高,有体重,有姓名,有学号的状态,有听课,有做作业的行为的所有对象可以归纳为同一类,即学生类。3:定义类class 类名{​ 成员变量声明;//即属性​ 成员方法声明;//即行为}...

2022-05-26 14:49:13 66

原创 java中的循环语句

有些程序段在某些条件下重复执行多次,称为循环结构程序。Java提供了3种循环语句实现循环结构,包括while语句、do-while语句、for语句。它们的共同点是根据给定条件来判断是否继续执行指定的程序段(循环体)。如果满足执行条件,就继续执行循环体,否则就不再执行循环体,结束循环语句。1:while循环while循环的语法如下:​ while(布尔表达式){​ 循环体;}说明: 布尔表达式表示循环体执行的条件,当条件为true时执行循环体。 循环体既可以是一条简单的

2022-04-21 10:15:20 24274

原创 java入门

a++和++a的区别

2022-04-11 11:14:34 360

原创 基本的css

什么是cssCSS 是 Cascading Style Sheet 的缩写。译作「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。<style></style>选择器 {属性:属性值;属性:属性值;}选择器的分类: 标签选择器:选择器的名称是某个标签,当前页面里所有的该标签自动应用选择器的样式(例如p标签) id选择器:通过id属性引用的标签中才会起作用 #pp{color: red;}(id="pp")

2022-01-08 17:32:35 60

空空如也

空空如也

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

TA关注的人

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