自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 乐观锁

当对一个共享变量执行操作时,我们可以使用循环 CAS 的方式来保证原子操作,但是对多个共享变量操作时,循环 CAS 就无法保证操作的原子性,这个时候就可以用锁,或者有一个取巧的办法,就是把多个共享变量合并成一个共享变量来操作。悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞,直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。对线程1来说,旧的预期值A=10,要修改的新值B=11。

2024-06-12 10:31:38 763 1

原创 JDK1.8新特性

需求:对一个数进行运算,比如乘方、加减另一个数等自定义一个函数式接口/*对一个数进行运算,比如乘方、加减另一个数等*///定义一个方法,将函数式的接口作为参数使用//计算一个数的平方。

2024-05-27 09:57:30 678

原创 19.JDBC

规定了数据库厂商和Java连接的一些规则(接口),将来数据库厂商如果想编写程序连接到Java,必须要遵守指定的规则,需要实现规定的接口。执行此 PreparedStatement对象中的SQL查询,并返回查询 PreparedStatement的 ResultSet对象。执行给定的SQL语句,这可能是 INSERT,UPDATE,或DELETE语句,指的是编写SQL语句的时候,使用字符串拼接的方式,拼接数据,将来传值进来的时候,以Java编程语言中的 int此 ResultSet对象的当前行中指定列的值。

2024-05-23 10:26:52 1078

原创 18.网络编程

网络编程又称为Socket编程。Java中网络编程主要是以Java语言完成信息数据在网络上的传输。

2024-05-23 08:52:39 989

原创 线程池

池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在 Java 中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就是”池化资源”技术产生的原因。

2024-05-16 17:17:36 778

原创 17.多线程

进程可以指运行中的程序,特点:动态性、独立性、并发性。线程是进程内部的执行单位,它是程序中一个顺序控制流程。多线程就是一个进程中,同时有多个线程,用于完成不同的工作。

2024-05-15 08:45:34 976

原创 16.Set、泛型、枚举、反射、Class

return obj;//创建一个没有泛型的ObjectTool//指定泛型1.获取Class类对象,可以通过以上3种方式2.获取到类对象之后可以做什么?(1)可以通过类对象,直接调用newInstance()方法,创建这个类的实例对象(2)也可以通过类对象,调用getConstructor(Class<?这个方法,返回 Constructor对象后,再调用newInstance(),根据参数创建这个类的对象。

2024-05-13 15:48:35 1084

原创 设计模式

从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,讲述面向对象编程思想的理解,梳理面向对象四大基本特性、七大设计原则和23种设计模式之间的关系软件开发中疑难问题:软件复杂庞大;很多软件很难维护;需求不断变更;软件开发中存在很多很多的问题,上面三个问题只是从程序开发和设计的角度看到的部分问题。要解决上面软件开发的问题,就要求我们编写(设计)的软件具有很好的可读性、可维护性和可扩展性,并且还要保证代码具有高内聚低耦合。提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

2024-05-13 10:18:13 1260

原创 15.Map

散列表其实是结合了数组和链表的优点,组合成的一个数据结构,散列表不在意元素的顺序,也能够快速地找到元素中的数据。hashMap存放数据无序,可以存放null值,null键,键不能重复,线程不安全,1. JDK8中的hashMap的底层结构是 数组+单向链表+红黑树2. hashMap对象在构造的时候,默认需要一个初始容量值和负载因子, 当存入的元素超过 初始容量*负载因子的值后,会扩容2倍。3. 负载因子默认是0.75,太大太小都不太好。

2024-05-08 10:00:55 1034 1

原创 时间复杂度和空间复杂度

比如,示例1中,执行次数最多的是第三第四行,n次,时间复杂度就是0(n),示例2中,执行次数最多的是第五第六行,n^2次,时间复杂度就是O(n^2)同一个算法,在不同的机器上,执行的时间是不同的,但是在不同的机器上,算法语句执行次数是一样的。mod执行完了,mod出栈,add执行完,add出栈,main执行完,main出栈,程序结束。所以,最终的栈的结构如上图,调用的次数跟数据n是成正比关系,这里的空间复杂度就是O(n)比如以上的示例中,声明了一个长度为n的数组,不管是2n还是3n,空间复杂度都是O(n)

2024-05-06 08:51:04 676

原创 14.集合、常见的数据结构

Java是一个面向对象语言,将来肯定会处理对象。为了方便操作多个对象,就需要把这些对象存储起来,存储多个对象,就需要一个容器Java之前提供了数组、StringBuffer这两个容器,但是他们用来存放对象不是很方便所以,Java就提供了Collection集合。ArrayList底层是一个可以动态扩容的数组,可以存放任意类型的元素,可以存放null元素,存取有序,元素可以重复,线程是不安全的。

2024-05-02 18:18:56 991 2

原创 13.异常、IO流、序列化和反序列化

自定义异常,需要继承异常类,自定义一个构造方法,将异常通过super传递到父类中/*自定义异常,需要继承异常类,自定义一个构造方法将异常通过super传递到父类中*/

2024-04-29 14:22:06 1188 1

原创 12.Object类、System类、包装类、Math类、Calendar类、正则表达式

当声明了字符串之后,会将这个字符串常量值,存放在内存堆的字符常量池中,如果下次继续使用这个字符串,就直接拿去这个值。将来集合中,只能存放对象的,不能存放基本数据类型,所以也需要通过包装类来将基本数据类存入集合中。如果使用new的话,会先将字符常量串值的引用放在堆中,所以比较的时候是false。Java中的正则,表示的是符合一定规则的字符串,用来限定一些字符串的格式、内容。如果在表达式中,直接拼接字符串,JVM会将拼接好的字符串存入字符串常量池,返回整数参数的字符串表示形式,作为16位中的无符号整数。

2024-04-25 10:15:20 1192 1

原创 11.final关键字、内部类

局部变量随着方法加载而调用,随着方法调用完毕而消失,而内部类的对象,是在堆中,堆中的对象将来有垃圾回收器回收,所以,即使对象不用了,也不会马上消失。jdk1.8中,对于局部内部类访问的局部变量做了优化,,如果被局部内部类访问了,默认认为你是一个final修饰的常量。本质上,匿名内部类,其实是继承了某个类的子类或者是接口的实现类对象。成员内部类:在类中的成员位置,定义的类,称为成员内部类。局部内部类:在局部位置定义的类,称为局部内部类。把类定义在其他类的内部,这个类就称为内部类。

2024-04-22 10:32:42 545 1

原创 10.接口、多态

向下转型的对象,必须是原对象本身,如果是别的对象,无法还原成自己的对象, 类似于,一个Cat对象,可以被当作Animal对象,但是不能被还原成一个Dog对象。方法重载具有不同的参数,当我们调用重载的方法的时候,会根据传入参数的不同,自动调用对应具体参数的方法。运行时多态,在创建对象之后,调用方法的时候,才去确定调用的是哪个方法, 通过动态绑定来实现的。接口就是一种规范和约定,将来实现接口的实现类,必须遵守接口的规则去重写接口中的抽象方法。类实现接口后,要么这个类是抽象类,要么重写接口中的所有抽象方法。

2024-04-19 19:11:39 846

原创 9.继承、抽象类

继承关系中,被继承的类,称为父类、超类、基类,继承的类称为子类。一个类如果没有显式的继承,默认继承object类,object类是所有父类的创始类。类和类之间只能单继承,可以多重继承。子类可以直接继承父类非私有属性、方法,私有属性可以间接使用,不能直接访问。子类可以扩展父类信息,可以拥有自己的属性和方法。继承可以提升代码复用性。

2024-04-18 09:21:20 834 1

原创 8.封装、修饰符

default:默认的,不写任何修饰符,就表示默认的,同包下的类可以访问。protected:受保护的,同包下的类,不同包下的子类可以访问。将来如果某个类的属性,实例化对象后,属性值都是相同的常量值的话,3.static修饰代码块,称为静态代码块,随着类的加载而加载,1.static修饰成员变量,成为类属性,随着类的加载而加载,将来如果有属性的初始化操作,可以通过静态代码块完成属性的初始化。2.static修饰成员方法,就是类方法,随着类加载而加载,static表示静态的,修饰的内容,随着类的加载而加载。

2024-04-15 16:53:56 841 1

原创 7.String类、Random类、Date类

所以,系统中提供了StringBuffer类,可以在不改变字符串引用的情况下去操作字符串,从而达到节省资源的目的。String类型,声明的字符串内容是不可变的,将来想要改变字符串的内容,只能以字符串拼接的方式去改变内容,用给定的替换替换与给定的 regular expression匹配的此字符串的第一个子字符串。用给定的替换替换与给定的 regular expression匹配的此字符串的每个子字符串。构造一个 SimpleDateFormat使用给定的模式和给定的区域设置的默认日期格式符号。

2024-04-13 21:19:04 1178

原创 6.面向对象、方法重载、方法的参数传递

早期,程序开发是结构化程序设计语言随着软件规模扩大,结构化语言的弊端就出现了,开发慢、质量不好后来程序设计者就引入了面向对象的开发思想面向过程:需要做什么操作,每次需要的时候,都去重新编写一遍面向对象:将所有的操作,封装到方法中,然后通过对象,去调用方法,执行想要的操作,这样就可以,一次编写,多次调用。

2024-04-11 20:30:00 1043

原创 5.面向对象、构造器、方法重载

早期,程序开发是结构化程序设计语言随着软件规模扩大,结构化语言的弊端就出现了,开发慢、质量不好后来程序设计者就引入了面向对象的开发思想。

2024-04-10 19:24:26 756 1

原创 4.数组、查找、Array工具类

普通变量只能存放一个数据,如果需要一个变量,去存放多个数据, 那么就可以将变量声明为数组。

2024-04-07 16:33:59 1164

原创 3.字符串 方法

return:如果方法体上,定义了返回值类型,那么必须要有return,并且要返回对应返回值一样类型的值。如果定义的方法,只是为了完成某些功能,并不需要返回一个结果,返回值类型就是数据类型,可以是基本类型,也可以是引用类型。如果方法体上,返回值类型是void,则不需要使用return。将需要执行的代码,分装在方法中,然后通过方法名,调用方法,就可以获得他封装的功能。返回值类型:如果定义的方法将来需要返回一个结果,那么就需要返回值类型。参数列表:指的是,将来调用方法的时候,是否需要传入值去使用方法。

2024-03-31 18:28:54 965 1

原创 2.Scanner、分支、循环

通过scanner对象来完成,数据的录入,Scanner类是Java提供的,供用户输入使用的类使用步骤:1.先导包,将系统提供的类包,导入到类中进行使用,在类名的上面导入2.创建Scanner对象,创建了对象之后,才能去使用调用系统提供的方法3.通过scanner对象,调用方法,获取需要的数据接收用户输入一个int类型的值,将这个值赋给i。

2024-03-28 13:54:51 667 1

原创 1.Java基本概念 数据类型

定义:指的是在程序运行过程中,固定不变的量分类:字符串常量:双引号引起来的整数常量:整数数值浮点数常量:带小数点的小数数值字符常量:单引号引起来的单个字符布尔常量:两个值,true和false空常量:null,表示没有任何内容//字符串常量System.out.println("你好");//整数常量//浮点数常量//字符常量//报错//布尔常量//空常量不能直接输出定义:指的是,在程序运行期间,值可以改变的量。

2024-03-28 13:52:39 984 1

Spring-boot

Spring-boot

2024-06-12

空空如也

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

TA关注的人

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