
java学习
文章平均质量分 69
Bridge Fish
这个作者很懒,什么都没留下…
展开
-
Java maven的下载解压配置(保姆级教学)
mamen基本概念Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。原创 2023-07-31 14:02:36 · 918 阅读 · 0 评论 -
Java 反射
其中,bird在编译时类型为Bird,运行时类型为Animal,通过反射机制就能在程序运行时发现该对象和类的真实信息。)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。此处使用的是Object类中的getClass()方法,因为所有类都继承Object类,所以调用Object类中的getClass()方法来获取。调用某个类的对象的getClass()方法,即:对象.getClass();原创 2023-07-29 17:02:13 · 261 阅读 · 0 评论 -
Java 注解
对于注解 Annotation 是从 Java 1.5 开始加入,对于 Java 17 来说,主要是来自模块 java.base 下的包java.lang.annotation。该包提供了 Java 编程语言注解的类库支持。在没有注解之前, Java 中大量的使用了 XML 配置文件的方式, 比如 Java 之首的 Spring 框架, 在 3.0之前,之后也保留了 xml 配置的方式, 来进行框架相关的配置。 这在项目越来越大的情况下配置文件越来越多,越繁杂,无疑对开发和使用都不是友好的,这个时候就引入了原创 2023-07-29 15:47:59 · 252 阅读 · 0 评论 -
Java的代理模式
java有三种代理模式静态代理jdk动态代理cglib实现动态代理及优缺点原创 2023-07-28 21:15:01 · 797 阅读 · 0 评论 -
Java 多线程练习
1.定时器操作(实现电脑定时关机)。2.每个月的月末(02:00:00)执行一次代码3.模拟售票模拟了多个线程同时售票的场景,保证了并发环境下的票的售卖过程的正确性和一致性。4.用15个线程实现,求123456789之间放+-和为100的表达式(11结果),如果一个线程求出结果, 立即告诉其它停止。原创 2023-07-28 20:44:24 · 2838 阅读 · 4 评论 -
Java 悲观锁 乐观锁
悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。原创 2023-07-27 21:56:40 · 1648 阅读 · 0 评论 -
Java 聊天程序案例
单线程版本多线程版本:Server、Client、Read接收类、Send发送类原创 2023-07-26 21:26:48 · 270 阅读 · 0 评论 -
Java 多线程
背景:经常创建和销毁线程,消耗特别大的资源,比如并发的情况下的线程,对性能影响很大。线程池就是问题为了解决这个问题,提前创建好多个线程,放在线程池中,使用时直接获取,使用完放回线程池中,可以避免频繁的创建、销毁,实现重复利用。在多线程场景下,如果多个线程修改同一个资源,或者一个线程修改共享资源,另一个线程读取共享资源,可能会导致结果不对的问题,这就导致线程不安全,即并发。解决线程并发问题的方法是线程同步,线程同步就是让线程排队,就是操作共享资源要有先后顺序,一个线程操作完之后,另一个线程才能操作或者读取。原创 2023-07-26 20:56:23 · 322 阅读 · 0 评论 -
Java Stream流
Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。Java中的Stream并不会存储元素,而是按需计算。数据源流的来源。可以是集合,数组,I/O channel, 产生器generator 等。聚合操作类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。Pipelining: 中间操作都会返回流对象本身。这样多个操作可以串联成一个管道, 如同流式风格(fluent style)。原创 2023-07-25 21:17:40 · 390 阅读 · 0 评论 -
Java Lambda入门
Lambda表达式,也可称为闭包,它是推动Java 8发布的最重要新特性。Lambda允许把函数函数式接口作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变的更加简洁紧凑,有效避免内部匿名类出现。Lambda 语法每个 Lambda 表达式都遵循以下法则:() 中的 parameter-list 是以逗号分隔的参数。你可以指定参数的类型,也可以不指定(编译器会根据上下文进行推断)。原创 2023-07-25 19:10:47 · 387 阅读 · 0 评论 -
Java 二维码生成解析
将下载后的jar包添加项目依赖。可以判断图片中是否有二维码信息。生成二维码需要两个jar包。原创 2023-07-25 11:35:09 · 337 阅读 · 0 评论 -
Java io生成验证码及easy-captcha实现验证码功能
要使用 EasyCaptcha,首先你需要添加 EasyCaptcha 的依赖到你的项目中。EasyCaptcha 是一个简单易用的 Java 验证码生成工具,它提供了简单的 API 来生成和验证各种类型的验证码。EasyCaptcha 还提供了一些其他的配置选项,例如自定义验证码的宽度、高度、字体、干扰线等等。用户输入验证码后,你可以通过比较用户输入的验证码和生成的验证码的值来验证其正确性。一旦你添加了 EasyCaptcha 的依赖,你就可以开始使用它了。在 Gradle 中,你可以在。原创 2023-07-24 21:28:52 · 722 阅读 · 0 评论 -
Java Object字节流及序列化和反序列化
Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程。序列化可以将数据永久保存在磁盘上(通常保存在文件中)。deserialization(反序列化):将保存在磁盘文件中的java字节码重新转换成java对象称为反序列化。实现了数据的持久化,通过序列化可以把数据持久地保存在硬盘上(磁盘文件)。利用序列化实现远程通信,在网络上传输字节序列。原创 2023-07-24 20:30:47 · 1364 阅读 · 0 评论 -
Java 实现文件复制及文件夹复制
在Java中,有多种方法可以实现文件的复制。以下是几种常用的方式:使用字节流进行复制:通过FileInputStream和FileOutputStream分别创建源文件和目标文件的输入输出流,然后通过循环读取源文件内容,并将数据写入目标文件中进行复制。可以使用字节数组作为缓冲区,提高复制效率。需要手动处理流的打开、关闭和异常处理。使用字符流进行复制:通过FileReader和FileWriter分别创建源文件和目标文件的字符流,然后通过循环读取源文件内容,并将数据写入目标文件中进行复制。原创 2023-07-24 10:48:57 · 6538 阅读 · 0 评论 -
JAVA 根据文件头判断文件类型
例如,一张jpg格式的图片直接修改后缀名为png也可以打开,但当一些方法需要调用后缀为png格式图片的时候,再使用这个文件,则会出现报错。是因为这张图片的本质没有变,他还是个png格式的文件。使用java.io包中的FileInputStream类。通过读取原始字节流,根据字节流头部获取到文件格式。从而判断一个文件是否被修改过。那么,该如何去掉文件名的伪装,拿到文件的真实格式呢?这里给出一个讲数组转换成为十六进制字符串的方法。原创 2023-07-24 10:09:25 · 2630 阅读 · 1 评论 -
Java IO
stream 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成 无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出读取写入。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。原创 2023-07-21 20:42:53 · 138 阅读 · 0 评论 -
Java 泛型
Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。当调用fun()方法时,根据传入的实际对象,编译器就会判断出类型形参T所代表的实际类型,使用泛型的时候,前后定义的泛型类型必须保持一致,否则会出现编译异常。原创 2023-07-20 20:01:25 · 158 阅读 · 0 评论 -
Java 集合
程序中可能通过数组来保存多个对象,因为数组长度是不可变的。JDK中提供了一些特殊的类,这些类 可以存储任何对象,并且长度可变,在java中这些类被为集合。集合类位于 java.util 包中。数组存储的特点:一旦初始化以后,其长度就确定了。数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。数组存储的弊端:1.一旦初始化以后,其长度就不可修改。2.数组中提供的方法非常限,对于添加、删除、插入数据等操作,非常不便,同时效率不高。原创 2023-07-19 21:07:47 · 217 阅读 · 0 评论 -
Java 正则表达式小测试
将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔随机生成指定长度的密码或指定长度的验证码字符串查询身份证号归属地,查询ip所有地注册项目时,用户的姓名要么是全中文,要么是全英文,不能其它符号,不可以使用混合。1-9之间随机放+ - 数字顺序不变,要求计算结果是100,请写一个这样的表达式?原创 2023-07-18 21:47:40 · 640 阅读 · 0 评论 -
Java 正则表达式(regexp)
正则表达式基本语法规则\d: 匹配任意数字字符。\D: 匹配任意非数字字符。\w: 匹配任意字母、数字或下划线字符。\W: 匹配任意非字母、数字或下划线字符。\s: 匹配任意空白字符(空格、制表符等)。\S: 匹配任意非空白字符。: 匹配除换行符外的任意字符。[]: 匹配括号内任意字符。: 匹配行的开始。: 匹配行的结束。: 匹配两个或多个模式之一。: 匹配前面的模式一次或多次。: 匹配前面的模式零次或多次。?: 匹配前面的模式零次或一次。{n}: 匹配前面的模式恰好 n 次。原创 2023-07-18 20:12:40 · 749 阅读 · 0 评论 -
Java String、StringBuilder、StringBuffer的区别
如果你处理的字符串是固定的,不需要对其进行修改,使用 String 是最合适的选择。如果你需要频繁地进行字符串连接、修改等操作,并且在单线程环境下使用,使用 StringBuilder 可以获得更好的性能。如果你需要在多线程环境下进行字符串操作,使用 StringBuffer 来保证线程安全性。原创 2023-07-18 19:49:27 · 233 阅读 · 0 评论 -
Java hashCode()和toString()
当我们用到hashCode()可以看到我们将name计算为3373707,age计算为98511,这样的话我们存值的时候就根据计算后的数值进行对应位置的存储,同样当我们get取值的时候再次将key计算为hashCode()值,因为同一个字符串hashCode()值相等,这个时候我们就可以直接根据hashCode()值将对应位置的数据取出,就不需要对key一个一个进行对比了,这样大大提高了效率,这就是为什么有 hashCode()存在的原因了。该方法的实现返回一个包含类名和对象内存地址的字符串。原创 2023-07-17 20:44:37 · 237 阅读 · 0 评论 -
判断字符出现次数、有没有大写字母、汉字、数字及标准的手机号
判断字符出现次数,可以使用循环遍历字符串并计数(使用循环遍历字符串的每个字符,然后通过判断字符是否与目标字符相等来计数)只能判断单字符出现次数,不太方便,建议使用正则表达式replace方法。这种形式的 replace 方法将字符串中所有的 target 字符序列替换为 replacement 字符序列。matches是 Java 中用于判断一个字符串是否匹配某个正则表达式的方法。这种形式的 replace 方法将字符串中所有的 oldChar 字符替换为 newChar 字符。原创 2023-07-17 20:21:51 · 129 阅读 · 0 评论 -
Java 实现字符逆序
这种形式的 substring 方法将返回原始字符串中从 beginIndex 开始到 endIndex(不包括 endIndex)之间的子串。在 Java 编程语言中,substring 是一个常用的字符串方法,用于截取字符串的子串。这种形式的 substring 方法将返回原始字符串中从 beginIndex 开始到字符串末尾的子串。实现字符串逆序,我们可以倒着选取字符拼接起来。我们也可以使用substring方法。原创 2023-07-17 19:25:47 · 557 阅读 · 0 评论 -
Java Class类
Class类的作用Class类是一个特殊类,它用于表示JVM运行时类或接口的信息。Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。原创 2023-07-14 19:32:54 · 165 阅读 · 0 评论 -
Java 什么是面向对象
类是对一组有相同数据和相同操作的对象的定义,是对象的模板,其包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象则是类的具体化,是类的实例。它是指在确定系统的某一部分内容时,应考虑到其它部分的信息及联系都在这一部分的内部进行,外部各部分之间的信息联系应尽可能的少。所以类的实例化结果就是对象,而对一类对象的抽象就是类,类描述了一组有相同属性和相同方法的对象。对象是由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)组成的封装体,描述客观事物的一个实体,是构成系统的基本单元。原创 2023-07-13 21:32:10 · 91 阅读 · 0 评论 -
Java 自动生成密码 自动生成双色球 判断数字最大值最小值求和
判断数字最大值最小值求和。原创 2023-07-13 20:33:02 · 97 阅读 · 1 评论 -
Java 数组Array
数组Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组 的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序 的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。数组是对象类型(引用类型)数组是固定长度,下标是从0开始,结束下标是,length属性-1。原创 2023-07-12 21:53:02 · 5223 阅读 · 1 评论 -
冒泡排序简单解释
冒泡排序是一种基本的比较排序算法,它通过不断交换相邻的元素,将最大(或最小)元素逐渐“冒泡”到数组的末尾,从而实现排序。- 因为 5 > 2,所以交换它们的位置,数组变为 [2, 5, 8, 3, 9];- 因为 8 > 3,所以交换它们的位置,数组变为 [2, 5, 3, 8, 9];- 因为 5 > 3,所以交换它们的位置,数组变为 [2, 3, 5, 8, 9];此时,第三轮比较结束,最小的元素已经“冒泡”到数组的第一位。最终,整个排序完成,数组变为 [2, 3, 5, 8, 9]。原创 2023-07-12 20:35:29 · 157 阅读 · 1 评论 -
Java 数组冒泡排序的简单实现
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序的元素并比较相邻的元素,然后交换它们的位置,直到整个序列是有序的。冒泡排序的基本思想是通过相邻元素的两两比较和交换,将较大的元素逐步后移,从而达到排序的目的。冒泡排序的时间复杂度为O(n^2),其中n是待排序数组的长度。在最坏的情况下,即待排序数组是逆序的,冒泡排序需要进行n*(n-1)/2次比较和交换操作。尽管冒泡排序在时间复杂度上并不是最优的排序算法,但它是一种基础的排序算法,有助于理解排序的基本原理和算法思想。原创 2023-07-12 18:45:37 · 216 阅读 · 1 评论 -
分支语句和循环语句
在使用switch-case时,需要注意每个case后面的break语句的使用,以控制代码块的执行流程。如果条件表达式为假(即结果为False),则会跳过if代码块,继续执行下面的else或后续代码。循环适用于当你不确定循环需要执行多少次时,只要给定条件为真,就会一直执行循环体中的代码块。你可以在循环体内根据需要更新循环条件,以便在适当的时候退出循环。在上面的例子中,如果x大于0,则打印"x是正数";if-else语句在程序中起到了根据不同条件执行不同代码的作用,使得程序具有更好的灵活性和逻辑性。原创 2023-07-11 21:22:35 · 93 阅读 · 0 评论 -
程序的简单输入输出
2表示保留两位小数。格式化参数(Format Arguments):是一个包含要输出的变量或表达式的参数列表,按照格式化字符串中的格式化指示符的顺序进行匹配。4. 在右侧窗格中的 "Program arguments" 栏目中,输入你想要传递给args参数的值,用空格分隔多个参数。无论是使用以上步骤设置args参数,IDEA都会在运行Java程序时,自动使用你配置的参数值作为args数组的输入。3. 在弹出的 "Run/Debug Configurations" 窗口中,找到你的主类的配置,并选中它。原创 2023-07-11 20:36:21 · 1077 阅读 · 2 评论 -
循环语句实现输出九九乘法表和菱形
倒三角只需把i换成int i = 9;我们还可以加上随机颜色,这样变得更好看。目标输出一个菱形图案。原创 2023-07-11 18:46:46 · 148 阅读 · 0 评论 -
3个for语句解决百钱百鸡问题,算出100以内的质数和
【代码】3个for语句解决百钱百鸡问题。原创 2023-07-11 16:59:46 · 583 阅读 · 0 评论 -
Java时间日期
注意:在使用set方法之前,最好先clear一下,否则很多信息会继承自系统当前时间。同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等。roll()方法在本月内循环,一般使用add()方法;(1) Calendar转化为Date。(2) Date转化为Calendar。(1)计算某一天是一年中的第几星期。(2)计算一年中的第几星期是几号。(1)add()方法。原创 2023-07-10 21:31:48 · 239 阅读 · 1 评论 -
Java 猜数字小游戏
【代码】猜数字小游戏。原创 2023-07-06 20:55:26 · 193 阅读 · 1 评论 -
Java 简单报时
是Java 8及以上版本中用于表示日期和时间的类。它提供了许多方法来处理日期和时间的各种操作和计算。等:对日期和时间进行增加或减少指定的年、月、日、时、分、秒等单位。:根据指定的年、月、日、时、分、秒创建一个。:将日期和时间格式化为指定的字符串。等:获取日期和时间的各个部分的值。:比较两个日期和时间的先后顺序。:获取当前系统的日期和时间。原创 2023-07-06 20:29:37 · 176 阅读 · 2 评论 -
Java变量及运算符
掌握声明使用常量?掌握声明使用成员属性(变量)、局部变量?掌握数据类型分类,8大基本类型?掌握算术运算符 + - * / % ++ --?利用入口方法String[] args,编写一个求两个数商和余数的案例程序,并运行出结果?掌握赋值运算符 += = *=掌握关系运算符 > >= <原创 2023-07-06 19:46:21 · 160 阅读 · 1 评论 -
了解java程序类基本结构
在一些语言中,一些保留字可能并没有 应用于当前的语法中,这就成了保留字与关键字的区别。在计算机 编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与 使用之间的关系。Java关键字是对Java编译器有特珠含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明变量类型、类、方法特性等信息,关键字是Jave在程序设计语言中的不能其作为标识符的。一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等等。原创 2023-07-05 20:45:17 · 281 阅读 · 0 评论 -
Java day03 三种注释的写法和javadoc.exe生成api
可以在File>>Settings>>Editor>>Code Style>>Java>>Code Generotion。这样注释就在语句前边了,当语句较多时,就会显得比较整洁(大家可以按照自己的喜好来)取消勾选Line comment at first column。可以在设置中设置类模板,这样以后写项目,文档注释就可以自动生成了。这样新建java文件就会自动生成我们设置的注释了。命令可以根据文字的这些信息,快速生成类的。或者 /*+enter(不推荐)各种注释和类的结构属性和一个。原创 2023-07-05 20:02:07 · 100 阅读 · 0 评论