- 博客(42)
- 收藏
- 关注
原创 JVM相关学习
d.虚引用:必须配合引用队列使用,主要配合ByteBuffer使用,例如,在其本身所指向的ByteBuffer被回收之后,直接内存并不会被回收,这时需要把虚引用的直接内存地址放入引用队列中,从而调用Unsafe.freeMemory()方法回收掉直接内存的空间。b.1.6 将这个字符串对象尝试放入串池,如果有则不放入,如果没有会把此对象复制一份,放入串池,并且会把串池中的对象返回;操作符创建一个对象时所返回的引用即为强引用,只有所有GC Root对象都不通过强引用引用该对象,该对象才能被垃圾回收。
2022-12-08 15:27:50
492
原创 Java常见问题
notifyAll():notifyAll()方法会将所有在等待集合中的线程唤醒,但由于所有的被唤醒的线程仍然要去争用synchronized锁,而synchronized锁具有排他性,最终只有一个线程获得该锁,进行执行状态,其他线程仍要继续等待。当线程调用wait()方法后,Java虚拟机会让当前的线程进入到休眠状态,并释放对对象的同步锁的控制权,允许其他线程执行该同步代码,要唤醒该线程,需要在同一个对象上调用notify()或notifyAll()方法。s1 = s1+1;
2022-09-22 17:30:39
814
原创 数据结构与算法
(2)若添加元素个数小于基础扩容个数,则同add()方法扩容规则一致。若添加元素个数大于基础扩容个数,则在元素个数和相近的扩容个数里选较大值作为扩容个数。(2)添加数据,先扩容10,之后扩容为原基础的1.5倍(准确说是位数转换为二进制数,右移一位再加上原位数);(1)初始数组长度为0;无参构造数组长度为0;(1)初始数组长度为0;
2022-09-21 15:58:13
172
原创 Spring整合
mybatis主要以Sqlsesssionfactory对象为主,则需要用Spring注解方式替换掉原有mybatis方法创建Sqlsessionfactory对象。
2022-08-12 15:38:14
291
原创 注解开发模式
使用@Component定义bean@Controller:用于表现层bean定义@Service:用于业务层bean定义@Repository:用于数据层bean定义核心配置文件中通过组件扫描加载bean。
2022-08-10 17:22:09
136
原创 Bean相关
由于所有请求都共享一个bean实例,所以这个bean要是有状态的一个bean的话可能在并发场景下出现问题,而原型的bean则不会有这样问题(但也有例外,比如他被单例bean依赖),因为给每个请求都新创建实例。新生成实例消耗包括两方面,第一,spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。1、单例的bean只有第一次创建新的bean 后面都会复用该bean,所以不会频繁创建对象。由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。...
2022-08-10 11:55:13
325
原创 13. 正则表达式
在项目开发中String是一个重要的程序类,String类除了可以实现数据的接受、各类数据类型的转型外,其本身也支持正则表达式(Regular Expression),利用正则表达式可以方便的实现数据的拆分、替换、验证等操作。范例:使用正则表达式public class Main { public static void main(String[] args){ String str="123"; //字符串对象 if (
2022-05-13 21:17:02
347
原创 15.8 Math数学计算
程序开发的本质就是数据处理,Java提供有java.lang.Math类来帮助开发者进行常规的数学计算处理,例如,四舍五入、三角函数、乘方处理等。范例:使用Math类进行数学计算package cn.kuiba.util;public class Main { public static void main(String[] args) throws Exception { System.out.println(Math.abs(-10.1));
2022-05-11 18:17:38
434
原创 15. 常用类库
现代程序开发需要依附于其所在平台的支持,平台支持功能越完善,开发也就越简单。Java拥有世界上最庞大的开发支持,除了丰富的第三方开发仓库外,JDK自身也提供有丰富的类库开发者使用。1.StringBuffer类在项目中String是一个必不可少的工具类,但String自身有一个最大的缺陷:内容一旦声明则不可改变。所以在JDK中提供StringBuffer类供用户修改字符串内容。 StringBuffer()类并不像String类那样可以直接通过声明字符串常量的方式进行实例化,而是必...
2022-05-10 23:41:05
125
原创 14.10 线程自我检测
1.设计4个线程对象,其中两个执行减操作,另外两个执行加操作。package cn.kuiba.util;class Resource{ private int num=0; //加减操作的数据 private boolean flag=true; //转换加减线程的标志 //flag=true:加法线程执行,减法等待 //flag=true:减法线程执行,加法等待 public synchronized void add()th
2022-05-09 10:40:08
125
原创 14.6 优雅地停止线程
在Java中,一个线程对象是有自己的生命周期的,如果想要控制好线程的生命周期,则首先应该认识其生命周期,如图。从图中可以发现,大部分线程生命周期的方法都已经学过了,那么这里主要介绍下面3种新方法。1.停止多线程:public void stop()。2.挂起线程:public final void suspend()、暂停执行。3.恢复挂起的线程执行:public final...
2022-05-07 21:58:15
545
原创 14.4线程的同步与死锁
程序利用线程可以进行更高效的程序处理,如果没有多线程,那么一个程序在处理某些资源的时候会有主方法(主线程全部处理),但是这样的处理速度一定会比较慢,但是如果采用了多线程的处理机制,,利用主线程创建出许多的子线程,那么效率会更高。4.1 线程同步问题引出线程同步是指若干个线程对象并行进行资源访问时实现资源处理的保护操作,下面通过一个程序说明。范例:卖票操作(3个线程卖3张票)package cn.kuiba.util;class MyThread implements R...
2022-05-07 20:58:46
314
原创 14.3多线程常用操作方法
3.1 线程的命名和取得 线程本身属于不可见的运行状态,即每次操作的时间都是无法预料的,所以如果要想在程序中操作线程,唯一依靠的就是线程名称,而要想取得和设置线程的名称可以使用如表所示的方法。由于多线程的状态不确定,线程的名字就成为唯一的分辨标记,所以在定义线程名称的时候一定要在线程启动前设置名字,而且尽量不要重名,尽量不要为已经启动的线程修改名字。由于线程的状态不确定,所以每次可以操作的都是正在执行run()方法的线程实例,依靠Thread类的以下方法实现。取得当前线程对象...
2022-05-06 18:16:10
276
原创 14.多线程编程(二)
2.3 Thread和Runnable区别现在Thread类和Runnable接口都可以以同一功能的方式来实现多线程,那么Java的实际开发来讲,肯定使用Runnable接口,因为采用这种方式可以有效地避免单继承的局限,但是从结构上也需要来观察Thread与Runnable的联系。首先来观察Thread类的定义:public class Thread extends Object implements Runnable {} 可以发现Thread类也是Runnable接口的子类,...
2022-04-26 17:21:44
118
原创 14.多线程编程
多线程编程是Java语言最为重要的特性之一,利用多线程技术可以提升单位时间内的程序处理性能,也是现代程序开发中高并发的主要设计形式。1.进程与线程进程是程序的一次动态执行过程,他经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,使得所有程序好像是在“同时”运行一样。 虽然多进程可以提高...
2022-04-22 23:58:06
567
原创 12.链表综合案例
1.宠物商店 面向对象的程序设计可以实现生活概念的程序抽象化,应用面向对象的程序设计解决一个实际问题。现在假设有一个宠物商店,在这个商店里会出售各种宠物共用户选择,现在要求通过程序逻辑描述实现宠物商品的上架,下架,关键字模糊查询的功能。完整程序如下: 2.package cn.kuiba.util;interface ILink<E> { //设置泛型避免安全隐患 public void add(E e) ; //增加数据 pu...
2022-04-21 22:19:58
604
原创 13.链表(三)
7.数据内容查询在一个集合里面往往会保存大量的数据,有时需要判断某个数据是否存在,这是就可以利用迭代的方法进行对象比较(equals()方法)来完成判断。(1)【ILink】在ILink接口中定义数据查询方法。/** * 查询指定内容是否存在,要求查询对象所在类覆写equals()方法 * @param data要查找的数据 * @return 数据存在返回true,否则返回false */public boolean contains(E data);(2)【LinkImpl.
2022-04-21 17:11:58
381
原创 13.链表(二)
4.返回链表数据 链表中所有的数据都通过Node封装后实现了动态保存,并且取消了数组长度的限制。但是保存在链表中的数据也需要被外界获取,那么此时就可以利用数组的形式返回链表中的保存数据。考虑到此功能的通用性,所以返回的数组类型应该是Object,操作结构如图。在进行链表数据获取时,应该根据当前链表所保存的集合长度开辟相应的数组,随后利用索引的方式从链表中取得相应的数据并将其保存在数组中。(1)【ILink】在ILink接口中追加方法用于返回链表数据。/** * 获取链表中的...
2022-04-21 16:05:03
757
原创 13.链表
在项目开发中数组是一个重要的逻辑组成,在项目中可以用于描述“多”的概念,例如,一个人有多本书,一个国家有多个省份等。传统数组中最大的缺陷在于其一旦声明则长度固定,不便于程序开发,而想要解决这一缺陷,就可以利用链表数据结构实现。...
2022-04-20 17:20:58
408
原创 12.内部类(五)
8.内建函数式接口在方法引用的操作过程中,可以发现,不管如何操作,对于可能出现的函数式接口的方法最多只有4类:有参数有返回值、有参数无返回值、无参数有返回值、判断真假。所以为了简化开发者的定义以及操作的统一,从JDK1.8开始提供了一个新的开发包:java.util.function,在此包中提供了许多内置的函数式接口,下面通过具体的范例来解释4个核心函数式接口的使用。提示:java.util.function包中存在有大量类似功能的其他接口。在4个函数式接口内部除了指定的抽象方法之外,还提供了
2022-04-19 21:16:00
55
原创 12.内部类(四)
6.Lambda表达式 Lambda表达式时JDK1.8中引入的重要技术特征。所谓的Lambda表达式,是指应用在SAM(Single Abstract Method,含有一个抽象方法的接口)环境下的一种简化定义形式,用于解决匿名内部类的定义复杂问题,在Java中Lambda表达式的基本语法形式如下。在给定的格式中,参数与要覆写的抽象方法的参数对应,抽象方法的具体操作就通过方法体来进行定义。范例:编写第一个Lambda表达式package cn.kuiba.u...
2022-04-18 18:32:35
133
原创 12.内部类(三)
3.static定义内部类在进行内部类定义的时候,也可以通过static关键字来定义,此时的内部类不再受到外部类实例化对象的影响,所以等同于是一个“外部类”,内部类的名称为“外部类.内部类”。使用static定义的内部类只能够调用外部类中static定义的结构,并且在进行内部类实例化的时候也不再需要先获取外部类实例化对象,static内部类对象实例化格式如下。外部类.内部类 内部类对象=new 外部类.内部类()范例:使用static定义内部类package cn.kui...
2022-04-18 16:33:22
74
原创 12.内部类(二)
2.内部类相关说明在内部类的结构中,不仅内部类可以方便地访问外部类的私有成员,外部类也同样可以访问内部类的私有成员。内部类本身是一个独立的结构,这样在进行普通成员属性的访问时,为了明确地标记处属性是外部类所提供的,可以采用“外部类.this.属性”的形式进行标注。范例:外部类访问内部类私有成员package cn.kuiba.util;class Outer{ //外部类 private S...
2022-04-18 15:15:46
210
原创 12.内部类
1.内部类基本概念内部类(内部定义普通类、抽象类、接口的统称)是指一种嵌套的结构关系,即在一个类的内部除了属性和方法外还可以继续定义一个类结构,这样就使得程序的结构定义更加灵活。范例:定义内部类package cn.kuiba.util;class Outer{ //外部类 private String msg="www.kuiba.cn"; //私有成员属性 public
2022-04-16 21:06:34
158
原创 11.异常(三)
5.throws关键字在程序执行的过程中往往涉及不同类中方法的调用,为了方便调用者进行异常处理,往往通过关键字throws在这些方法声明时对可能产生的异常进行标记。范例:观察throws关键字的使用package cn.kuiba.util;class MyMath{ /* * 定义数学除法计算,该执行时可能会产生异常 * @param x 除数 * @param y 被除数 * @return 除法计算结果 * @throws Except
2022-04-16 17:25:02
500
原创 11.异常(二)
11.3处理多个异常 在进行异常捕获与处理时,每一个try语句后也可以设置多个catch语句,用于进行各种不同类型的异常捕获。范例:捕获多个异常
2022-04-16 12:43:34
444
原创 11.异常
1.认识异常异常是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。范例:不产生异常的代码package cn.kuiba.util;public class Main { public static void main(String args[]){ System.out.println("【1】****程序开始执行****"); System.out.println("【2】****数学计算:"+(10/2)); //执
2022-04-15 20:14:34
72
原创 枚举练习题
1.定义简单枚举类package cn.kuiba.util;enum Month{ JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER;}2.定义简单枚举类,以月份为例,输出十二个月份(英文)package cn.kuiba.util;enum Month{ JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,A
2022-04-15 17:16:17
790
原创 枚举的学习
Java语言从设计之初并没有提供枚举的概念,所以开发者不得不使用多例设计模式来代替枚举的解决方案,从JDK1.5开始,Java支持了枚举结构的定义,通过枚举简化多例设计的实现。1.定义枚举类:JDK1.5开始,Java提供了一个新的关键字:enum,利用此关键字可以实现枚举类型的定义,简化多例设计模式的定义。package cn.kuiba.util;enum Color{ //枚举类 RED,GREEN,BLUE; //
2022-04-15 16:28:55
113
原创 构造方法私有化
在类结构中每当使用关键字new都会调用构造方法并实例化新的对象,然而在设计中,也可以利用构造方法的私有化形式来实现实例化对象的控制。1.单例设计模式:单例设计模式是指在整个系统中一个类只允许提供一个实例化对象,为实现此要求就可以通过private进行构造方法的封装,这样该类将无法在类的外部利用关键字new实例化新的对象。同时为了方便使用本类的方法,则可以在内部提供一个全局实例化对象供用户使用。package cn.kuiba.util;class Singleton{ .
2022-04-14 17:00:54
1403
原创 泛型练习题
package cn.kuiba.util;import java.util.List;import java.util.ArrayList;abstract class Animal{ private String name; public void setName(String name){ this.name=name; } public String getName(){ return this.name; } .
2022-04-13 21:30:09
219
原创 继承类自我检测题
1.建立一个人类(Person)和学生类(Student),功能要求如下。(1)Person中包含4个私有型的数据成员name,addr,sex,age,分别为字符串型,字符串型,字符型及整型,表示姓名,地址,性别和年龄。一个4参构造方法,一个2参构造方法,一个无参构造方法,一个输出方法显示4种属性。(2)Student类继承Person类,并增加成员math,english存放数学和英语成绩。一个6参构造方法,一个2参构造方法,一个无参构造方法和输出方法用于显示6种属性。2....
2022-04-12 14:50:20
742
原创 接口类自我检测题
1.定义一个ClassName接口,接口中只有一个抽象方法getClassName(),设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序时使用Company类。 2.考虑一个表示绘图的标准,并且可以根据不同的图形来进行绘制。3. 定义类Shape,用来表示一般二维图形。Shape具有抽象方法area()和perimeter(),分别用来计算形状的面积和周...
2022-04-10 21:11:05
635
原创 标准类构造方法
构造方法是一种特殊的方法;格式如下:public class 类名{ 修饰符 类名(参数){}}功能:主要是完成对象数据的初始化要求:1.构造方法的名称和类名称保持一致2.构造方法不允许有返回值类型声明注意事项:1.一个类中至少存在一个构造方法(如果类中没有明确定义构造方法,则会自动生成一个无参数并且无返回值的构造方法)2.一旦开始定义构造方法,那么类中就会存在构造方法与普通方法两种方法,区别在于:“...
2022-03-10 14:38:10
1159
原创 Java范例题5
1、打印乘法表。2、不死神兔(斐波那契数列)需求:有一对兔子,从出生后第三个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?像这类的题目难点并不在编程上,而在于对需求的理解,对于斐波那契数列,只要能够在编程之外找出这个数列的规律,那么接下来要做的就只是利用java编写出这个规律并让他可以运行出结果就行。3、比较任意两个数组是否相等。一般的简单的数组比较,都是从两个方面比较,其一是数组的长度,第二..
2022-02-10 15:26:03
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人