自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 idea编译报错(Maven项目)

idea编译报错 找不到符号。

2024-01-11 21:53:50 510

原创 Java Properties配置文件使用方法详解

它有一些特有的方法,可以把集合中的数据,按照键值对的形式写到配置文件当中。也可以把配置文件中的数据,读取到集合中来。properties是一个双列集合,拥有Map集合所有的特点。因此可以像使用Map对象一样去使用Properties对象。文件后缀名为.properties,其内容是按键值对存储的。前面为键,后面为值。好处2:如果我们要修改参数,不需要改动代码,直接修改配置文件就可以了。好处1:可以把软件的设置永久化存储。

2023-12-20 13:55:28 580

原创 Java多线程​(一)基本概念及三种实现方式

前面2中方式创建的多线程,run方法的返回值类型是void,也即没有线程运行的返回值,为了解决这个问题可以使用第三种线程实现方法。本方式可以获取到多线程运行的结果,但是实现方式相比前面的2种方式略显复杂。创建新线程的方法是实例化该线程类,然后将该实例作为参数传入Thread类创建线程实例类,开辟新线程的方法是调用Thread类实例的start()方法。创建新线程的方法是实例化线程类,开辟新线程的方法是调用该实例的start()方法。扩展性强,实现该接口的同时还可以继承其他的类。进程是程序的基本执行实体。

2023-12-20 13:53:03 428

原创 Arrays工具类二分查找方法binarySearch方法详解

因此,调用本方法要保证源数组是有序的,且内部的元素是唯一的。该方法的一般形式是public static int binarySearch(T[] a, T key),对于基本类型,都有相应的重载方法,如针对int类型有binarySearch(int[] a, int key)等。插入点被定义为将键插入数组中的点:第一个大于键的元素的索引,或者如果数组中的所有元素都小于指定的键,则为a.length。如果数值中找不到要查找的值(也即key),则返回值为:(-(插入点)- 1)。

2023-12-18 16:22:47 517

原创 Java正则操作类Pattern和Matcher

Matcher对象的没有公开的构造器,需要通过Pattern.mathcer方法创建实例,Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持。find()对字符串进行匹配,匹配到的子字符串可以在子字符串的任何位置。start(),end(),group()均有一个对应的重载方法,分别是start(int i),end(int i),group(int i),它们专用于分组操作,Mathcer类还有一个groupCount()方法用于返回有多少组。组号按照左括号来数,只认左括号。

2023-12-16 19:50:10 74

原创 抓取网页姓和名,生成假数据

最终生成格式为:张三-男-23,分辨代表姓名、性别和年龄。

2023-12-15 16:51:13 85

原创 Java读取网页内容

利用URL类和URLConnection类打开指定的HTML网址,然后利用InputStream获取网页内容,为了便于字符读取,使用InputStreamReader将输入流转为字符流,提高操作便捷性。同时这也是制作网络爬虫等内容的第一步。

2023-12-13 15:45:08 480 1

原创 Java IO流(六)(字符流FileReader和FileWriter)

细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符。:就从文件中获取数据,装到缓冲区中,每次尽可能装满缓冲区如果文件中也没有数据了,返回-1。遇到中文,一次读多个字节,读取后解码,返回一个整数。细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关。输入流:一次读一个字节,遇到中文时,一次读多个字节。:读到文件末尾了,read方法返回-1。将缓冲区中的数据,刷新到本地文件中。

2023-12-10 18:00:09 226

原创 Java IO流(五)(字符集基础知识简介)

发布时间:1994年发布1.0版本,期间不断添加新的文字,最新的版本是2022年9月13日发布的15.0版本。:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。一个中文占三个字节,二进制第一位是1,第一个字节转成十进制是负数。在UTF-8编码下,英文使用1个字节保存,中文使用3个字节保存。一个英文占一个字节,二进制第一位是0,转成十进制是正数。一个中文占两个字节,二进制高位字节的第一位是1。一个英文占一个字节,二进制第一位是0。

2023-12-10 17:57:04 52

原创 Java IO流(四)(Autocloseable接口)

实现Autocloseable的IO类在特定的情况下,可以自动释放资源。

2023-12-10 17:54:16 54

原创 Java IO流(三)(字节流FileInputStream)

引入finally语句块:finally里面的代码一定被执行,除非虚拟机停止。因此释放资源之类的代码非常适合写在finally语句块内。read(byte[] buffer)方法可以一次读一个字节数组的数据,每次读取会尽可能把数组装满。操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来。细节1:一次读一个字节,读出来的是数据在ASCII上对应的数字。细节2:读到文件末尾了,read方法返回-1。细节1:如果文件不存在,就直接报错。细节1:每次使用完流必须要释放资源。一次读一个字节数组数据。

2023-12-10 17:52:04 88

原创 Java IO流(二)(字节流FileOutputStream)

细节:write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符。细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。细节1:参数是字符串表示的路径或者File对象都是可以的。:参数是字符串表示的路径或者是File对象都是可以的。可以把程序中的数据写到本地文件上,是字节流的基本流。创建对象:文件存在、文件不存在、追加写入。细节3:如果文件已经存在,则会清空文件。,但是要保证父级路径是存在的。

2023-12-08 22:06:23 161

原创 Java IO流(一) 基本知识

IO流即存储和读取数据的解决方案。

2023-12-08 22:03:16 70

原创 Java File类详解(下)练习二

然后是统计各种文件类型数量的实现,使用Map存储,key为String类型表示文件扩展名,value为Integer类型,表示对应扩展名文件的数量。需求:统计一个文件夹中每种文件的个数并打印。:需求:统计一个文件夹的总大小。需求:删除一个多级文件夹。

2023-12-07 19:26:52 61

原创 Java File类详解(下)练习一

需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(暂时不需要考虑子文件夹)需求:找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)需求:在当前模块下的aaa文件夹中创建一个a.txt文件。

2023-12-07 19:25:34 64

原创 Java File类详解(中)

2:这个方法无法获取文件夹的大小,如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起。如果调用者是文件,本方法将返回该调用者的文件和后缀名,也即扩展名。如果调用者是文件夹:则返回的就是文件夹的名字。1:这个方法只能获取文件的大小,单位是字节,如果单位我们要是M,G,可以不断的除以1024。方法length的作用是返回文件的大小(字节数量)。利用文件名过滤器获取当前该路径下所有内容。利用文件名过滤器获取当前该路径下所有内容。利用文件名过滤器获取当前该路径下所有内容。

2023-12-05 21:55:45 196

原创 Java File类详解(上)

如路径1:"a.txt"路径2:"abc\\a.txt"是相对路径,路径1:“C:\\a.txt”File对象表示路径,可以是文件、也可以是文件夹。这个路径可以是存在的,也可以是不存在的。●File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径。路径2:"C:\\abc\\a.txt"是绝对路径。File对象代表路径,路径分为相对路径和绝对路径。根据父路径对应文件对象和子路径名字符串创建文件对象。●这个路径可以是存在的,也允许是不存在的。根据文件路径创建文件对象。绝对路径是带盘符的。

2023-12-05 21:53:31 161

原创 Java异常机制入门详解(下)

以上代码将会抛出java.lang.ArrayIndexOutOfBoundsException,由于采用的是JVM默认的处理方式,因此在执行输出语句时遇到异常后将停止执行,异常出现后的代码将不会执行。try语句块下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体,但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理。写在方法内,结束方法,表示手动抛出异常对象,交给调用者,方法中下面的代码不再执行了。注意:只有当出现了异常才会执行catch里面的代码。

2023-12-04 14:54:04 576

原创 Java异常机制入门详解(上)

异常的引入不是让我们以后不出异常,而是程序出了异常之后,该如何处理。●运行时异常:RuntimeException本身和所有子类,都是运行时异常。编译阶段不报错,是程序运行时出现的。●编译时异常:除了RuntimeExcpetion和他的子类,其他都是编译时异常。:叫做异常,代表程序可能出现的问题。运行时出现的异常(如:数组索引越界异常)编译阶段没有错误提示,运行时出现的。●编译时异常:没有继承RuntimeExcpetion的异常,直接继承于Excpetion。●异常分为两类:编译时异常、运行时异常。

2023-12-04 14:51:19 292

原创 Java方法引用(下)

1.什么是方法引用?把已经存在的方法拿过来用,当做函数式接口中抽象方法的方法体2.::是什么符号?方法引用符3.方法引用时要注意什么?●需要有函数式接口●被引用方法必须已经存在●被引用方法的形参和返回值需要跟抽象方法保持一致●被引用方法的功能要满足当前的需求引用方法说明1.引用静态方法类名::静态方法2.引用成员方法对象::成员方法(引用任一个类对象的方法)this::成员方法(只能由成员方法引用)super::成员方法(只能由成员方法引用)3.引用构造方法类名::new4.使用类名引用成员方法类名::成员

2023-12-03 10:37:25 58

原创 Java方法引用(上)

另外,引用本类的成员方法时,也不能在本类的静态方法里使用this关键字引用,需要首先new一个本类的对象才可以。:表示被引用方法的调用者,其决定了可以引用哪些类中的方法在Stream流当中,第一个参数一般都表示流里面的每一个数据。比如,使用Arrays.sort方法时我们需要实现一个Comparator接口的匿名类,使用方法引用后,可以使用已定义的满足上述条件的方法进行实现。:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法。4.被引用方法的功能需要满足当前的需求。

2023-12-03 10:36:00 301

原创 Java流Stream使用详解(练习)

定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10过滤奇数,只留下偶数,并将结果保存起来。创建一个ArrayList集合,并添加以下字符串,字符串中前面是姓名,后面是年龄。保留年龄大于等于24岁的人,并将结果收集到Map集合中,姓名为键,年龄为值。备注:演员类Actor,属性只有二个:name,age。3,把过滤后的男演员姓名和女演员姓名合并到一起。5,将所有的演员对象都保存到List集合中。第一个集合中:存储6名男演员的名字和年龄。第二个集合中:存储6名女演员的名字和年龄。

2023-12-02 16:22:09 234

原创 Java流Stream使用详解(下)

收集到List、Set中比较简单,收集到Map中是重点,有点复杂,需要好好的理解。注意收集的Map中的数据键不能重复,否则会抛出异常。中间方法:filter, limit, skip, distinct, concat, map。●单列集合:Collection中的默认方法stream。终结方法:forEach, count, collect。●数组:Arrays工具类型中的静态方法stream。●一堆零散的数据:Stream接口中的静态方法of。●使用中间方法处理数据。●使用终结方法处理数据。

2023-12-02 16:20:40 54

原创 Java流Stream使用详解(中)

元素去重,依赖(hashCode和equals方法)收集流中的数据,放到数组中。收集流中的数据,放到集合中。合并a和b两个流为一个流。

2023-12-01 17:08:12 681

原创 Java流Stream使用详解(上)

其在使用时一般结合Lambda表达式,简化集合、数组的操作。无法直接使用stream流,需要先使用keySet()、entrySet()转换成单列集合才可使用。需求:按照下面的要求完成集合的创建和遍历创建一个集合,存储多个字符串元素。2.把“张”开头的,长度为3的元素再存储到新集合中。1.把所有以“张”开头的元素存储到新集合中。list.add("张无忌");list.add("周芷若");list.add("张三丰");list.add("赵敏");list.add("张强");

2023-12-01 17:04:28 127

原创 Java不可变集合

Map.of方法使用起来有点麻烦,在JDK10以后,Map中引入新方法Map.copyOf()在List、Set、Map接口中,都存在静态的of方法,可以获取一个不可变的集合。●如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。●List、Set、Map接口中,都存在of方法可以创建不可变集合。●当集合对象被不可信的库调用时,不可变形式是安全的。注意:这个集合不能添加,不能删除,不能修改。不可变集合:也就是不可以被修改的集合。创建一个具有指定元素的Map集合对象。● List:直接用。

2023-11-30 16:24:21 422

原创 java集合小练习

Random.nextInt(int bound)方法返回[0,bound)中的一个数(前包后闭),说白了就是随机选取0-99这100个数中的一个,这100个数字中的任意一个被抽中的概率都是相同的。可以先按性别定义两个列表,使用Random对象按30-70的概率选择访问女生-男生列表,再使用Collections.shuffle方法洗牌,选择0号索引的元素,即已经实现按指定概率抽取。提示:本题需要用到集合,IO,权重随机算法,有基础的同学可以试试,0基础的同学等IO学完之后再做。

2023-11-25 20:06:24 31

原创 Java工具类Collections详解

java.util.Collections:是集合工具类,注意它不是集合类而是集合的工具类,用于操作集合类。(只能添加类型为T的单列集合)根据默认的自然排序获取最大/小值。打乱List集合元素的顺序。交换集合中指定位置的元素。根据指定的规则进行排序。使用指定的元素填充集合。以二分查找法查找元素。

2023-11-23 14:28:14 32

原创 Java可变参数方法的定义详解

其底层原理就是在实际调用时将传入的可变参数装入一个数组当中。●可变参数必须放在形参列表的最后面。2. 作用:在形参中接收多个数据。3. 格式:数据类型…●形参列表中可变参数只能有一个。

2023-11-22 23:10:56 45

原创 Java随机数生成Random类​使用示例

java.Util.Random类,此类的一个实例用于生成伪随机数流,如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列。所以,要知晓Random对象的伪随机特性,随机只是表明调用随机方法时生成的数是按相等概率分布的,并不代表不能被预测,否则就是真随机数了,而这在计算机里是做不到的。此构造函数将随机生成一个种子,它的值很可能与此构造函数的其他任何调用者使用的值都不相同(确保种子的唯一性)。返回的值是(近似)均匀分布在该范围内的伪随机值。

2023-11-22 14:20:07 161

原创 ESP32检测家中温湿度上云,随时随地多端查看温湿度

因此,我觉得使用ESP32板子来实现温湿度检测就有了非常大的优势,利用ESP32自带的WiFi模块,考虑到实现的便利性,使用HTTP协议可以轻松将采集到的温湿度信息上传到云服务器上,这样在服务器段只需要简单的编写2个网页即可实现信息的存储和读取,这样在手机或者办公室电脑上只需通过访问网页的方式就能查看家里的温湿度,真正做到随时随地监控家里的温湿度。图中红色线连接DHT11的1脚,为3.3v供电,黑色线连DHT11的4脚,为GND,棕色线连接DHT11的2脚,数据传输线,此线另一头连接ESP32的22脚。

2023-11-19 15:02:37 672

原创 Java集合类API详解(下)双列集合Map类

如果键存储的是自定义对象,需要重写hashCode和equals方法,如果值存储自定义对象,不需要重写hashCode和equals方法。方法put具有添加和覆盖的效果:在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中;在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回。通过Map的keySet方法获取Map的所有键集合,然后对键进行遍历取出对应的值。Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的。

2023-11-17 22:22:36 84

原创 Java集合类API详解(上)单列集合Set类

由于对象的序列化形式中不存在瞬态字段(也即被transient修饰的字段不会被序列化,在保存后的文件里也不会存在瞬态字段的值),因此在从序列化形式创建对象时,反序列化过程将使用此类字段的默认值(为null或0)。而对于Set对象,如果添加的元素不存在,返回true,表示添加成功,否则返回false,表示添加失败。在Idea中查看类的方法,Ctrl + N打开搜索框,搜索相应的内容,在打开的类中,按Alt+7打开侧边栏的大纲视图,同时也可以按Ctrl+F12弹出相应的大纲对话框。包含的元素是可以有重复的;

2023-11-17 22:21:40 211

原创 jUnit测试框架入门详解(加强版)

单元测试是针对最小的功能单元编写的测试代码。Java程序最小的功能单元是方法,因此单元测试就是针对单个Java方法的测试。

2023-11-13 11:14:32 196

原创 jUnit测试框架入门详解

●可以用来对方法进行测试,它是第三方公司开源出来的测试工具(很多开发工具已经集成了Junit框架,比如IDEA)

2023-11-12 12:58:01 115 1

原创 IDEA常用设置(开发ready级)及常用快捷键汇总

在右边的对话框中找到Comments下的Block Comment和Line Comment,设置显眼的颜色。Appearance & Theme - Appearance在右边的Theme选项框中选择适合的主题。打开设置:File - Settings设置。设置为Consolas - 18号。

2023-11-09 15:19:25 114 1

原创 Java泛型Generics入门详解

创建该类对象时,E就确定类型。此处E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,一般可以写成:T、E、K、V等。1.如果我们在定义类、方法、接口的时候,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口。有时候类或方法虽然不确定类型,但是希望只能传递具有继承关系的一类类型时,我们就可以使用泛型的。2.如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以泛型的通配符泛型的通配符。此处T可以理解为变量,但是不是用来记录数据的,而是记录类型的,可以写成:T、E、K、V等。

2023-11-08 21:45:09 143 1

原创 Java正则表达式从入门到精通

规则字符说明任意一个字符\d一个数字[0-9]\D一个非数字[^0-9]\h水平空白字符,如\t\H非水平空白字符\s空白字符,如\t \n等\S非空白字符\v垂直空白字符,如\n\V非垂直空白字符\w一个词字符(英文字母、数字及下划线),等价于[a-zA-Z_0-9]\W非词字符。

2023-11-07 14:32:16 686

原创 Arduino UNO使用DHT11温湿度传感器通过串口向PC发送温湿度信息

DHT11的1脚和4脚分别连接VCC和GND(我连接的是面板包上的USB供电板供电,也可以使用UNO主板上的3.3v、5V和GND接口,为传感器通电即可),2脚连接开发板CPU针脚通信,本例中我连接的CPU引脚也是2号脚,记住你连接的针脚,在后面的编程中需要用到。DHT11传感器为四脚封装样式,从正面看引脚从左往右依次为1、2、3、4引脚,其中1引脚为VCC 3~5V,2引脚为通信引脚要与单片机引脚相连,3引脚是个NC,4引脚GND接地。此外,还有面包板、直插面包版的USB供电模块和若干必要的杜邦线。

2023-11-04 22:42:06 633 1

原创 Java注解Annotation从入门到精通

注解(Annotation)是Java代码里的特殊标记,比如:@Override、@Test等,其作用是:通过反射机制让其他程序根据注解信息来决定怎么执行该程序。比如要解析类上面的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解。比如要解析成员方法上的注解,则应该获取到该成员方法的Method对象,再通过Method对象解析其上面的注解。模拟JUnit框架,运行加注注解的方法,实现步骤:定义若干个方法,只要加注了MyTestAnno注解,才会触发该方法执行。

2023-11-03 22:39:09 503 1

java集合小练习,五道练习题及解答

java集合小练习,五道练习题及解答

2023-11-25

jUnit测试框架入门详解(加强版)

jUnit测试框架入门详解(加强版)

2023-11-13

Arduino-DHT温湿度传感器支持库

Arduino-DHT温湿度传感器支持库

2023-11-04

padis-int人口预测软件

padis-int人口预测软件

2023-08-10

空空如也

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

TA关注的人

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