自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何自定义异常Java

情况确实如此,无论是在Java自带异常还是,用户自定义异常,他们都是去掉用父类有参或者无参构造方法,异常这种一层一层的去调用父类构造方法,是异常发生的基本流程,最终干实事的是最终类Throwable,所以上述的我的自定义的异常是符合异常的基本规范的,最后的是如何去使用自定义的编译时异常去规范我们的程序呢,下面是我对异常的使用,如图。这样看是不是舒服多了,自定义编译时异常的功能用处广泛,应用的方向广泛,也体现Java高度面向对象的包容性。下面是他的具体用法,如图。下面是控制台输出,如图。

2023-06-29 14:34:02 3640 2

原创 如何使用关键字sychronized

尽管线程1和线程2都在交替执行,但是数据的输出出现了问题,当线程1出售了一张了,线程二还在出售第一张,这是由于线程并发而引发的问题,具体原因是由于每开一个线程,都会开出新的一个栈,而公用的数据,票数,都会被拷贝到新的栈里,当在栈中修改数据时,都不会改变原来的数据,需要返回去修改原始数据,所以,在这段时间里,没有被修改的数据可能被新的线程拿到,这就会导致,数据不同步情况,为了解决这个问题,我们将引入关键字sychronized,这个能够解决这个数据不同步的情况,我在下面演示代码。下面是控制台输出,如图。

2023-06-19 14:11:34 165

原创 怎么使用配置文件Properties

当需要与文件进行交互的时候自然需要使用IO流,显然这里的参数确实使用了IO流接口,load()方法的作用是加载文件中的数据进入到流中,从而进行数据的读入,与之对应的是getProperty(String key),相反,store()方法是用来,将流中的数据储存到文件中,与之对应的是setProperity(String key,String value),如下图。Properties是一个以键值对形式储存数据的一个工具类,这里可以看出Properties是Map的一个实现类,如图可以知道。

2023-06-11 22:04:22 306

原创 Java中的序列化和反序列化

它们所接受的参数是InputStream,OutputStream的实现类,可以是Buffered,也可以是FileInputstream,FileOutputStream(这两个是FilterInputStream,FileOutputStream的实现类),当然这个类建立之后并不能,对它进行序列化,还需要实现一个接口Serializable,这是一个标记,意思是这个类的对象可以序列化,我们看一看这个接口里实现了什么,如图。下面是对象转换成了字节码,能看出来这个对象的id是1212,名字是王小胖。

2023-06-05 20:38:09 350

原创 使用Buffered流读写文件数据

还是很明显的使用Buffered流比原始流的输出操作更加快,在你做这个输出的时候,有可能两个的输出都是相等的,这是由于文件过于小,另外就是用于CPU的占有,在相同的情况下,有可能一个分配的比较小,一个分配的比较多造成的,从某种角度上考虑,如果原始流CUP占有的足够多,读写操作是可能比Buffered流快的,但是如果文件够大,Buffered流的优势将会明显的发挥出来。

2023-05-29 19:44:30 972

原创 关于文件读写的操作

文件的读写,一般采用的是抽象类InputStream和OutputStream,实现类FileInputStream,FileOutputStream,在这两个实现类的构造方法可以传字符串,也可以是,文件File,这两种可以比较高效的提高文件的读写效率,但如果还想继续提高,可以使用缓冲字节流,这种流实际是一种包装流,包装原始流,也就是上面的两个流。在这两个类中方便实现了read(),和write()方法,可以通过这两个方法对文件进行读写操作。下面是java.txt文件内容。java.txt文件内容是。

2023-05-28 21:52:30 48

原创 如何在不关闭流的前提下反复读取文件数据

但是这并不能适用于任何情况,就比如说我们在使用Buffered和PrintWriter时,这两个流其实是包装流,也可以说是高级流,在他们被创建的时候,实际上会在底层创建一个原始流,就说是底层流吧,我们在关闭Buffered和PrintWriter时,也将会把底层流给关闭,若是底层正在进行数据的读与写操作,这很可能会将数据丢失, 显然如果我们把底层流关闭,也将会出异常,原始流都没有了,包装流还有什么用呢。在BufferedInputStream类中有两个成员属性,关于缓冲区域大小的,可供参考,如下图。

2023-05-28 21:18:16 498

原创 怎么处理StreamCorruptedException

当我们在读序列化文件时,需要需要创建ObectIntputStream对象,这个构造器将读取文件的头信息,而且只能读一次,如果后面还有文件头信息,它是无法继续读取的,在readobject()中调用的readobject0()方法回抛异常,就如下图所示。我们重点关注一下writeStreamHeader()方法,可以知道如果我们每一次创建一个ObjectOutputStream对象,都将会给文件写一个文件头,除非你只创建一个对象,当然这几乎不可能,因为你总该把流关闭的。

2023-05-28 12:30:35 567 1

原创 【使用动态规划解决最短路径问题】

1.由于路径的方向只能是向下或向右,因此网格的第一行的每个元素只能从左上角元素开始向右移动到达,网格的第一列的每个元素只能从左上角元素开始向下移动到达,此时的路径是唯一的,因此每个元素对应的最小路径和即为对应的路径上的数字总和。对于不在第一行和第一列的元素,可以从其上方相邻元素向下移动一步到达,或者从其左方相邻元素向右移动一步到达,元素对应的最小路径和等于其上方相邻元素与其左方相邻元素两者对应的最小路径和中的最小值加上当前元素的值。

2023-04-29 15:28:08 1568

原创 【寻找数组的最少数元素和最多数元素】

2.我们假设有一组数组,里面装的都是整数,且最少的元素只有一个,其他元素也对出现,我们如何去找到这个元素。显然,我们可以通过异或运算来解决这个问题,我们通过上述的异或性质,我们可以知道,当我们对这组数组全体元素做异或运算时,最终得到的元素就是我们要找到最少数元素,理由是由于最少元素只有一个,则其他元素可以通过性质(3),使得成对的元素呈对地在一起,那么,由性质(2)可以知道,这些成对的元素都将成为0,在通过性质(1)可以知道最后剩下的元素就是我们要寻找的最少数元素。

2023-04-23 19:07:48 114

原创 【如何使用位运算实现整数的加减】

③如果步骤 ② 所得进位结果 carry 不为 0,对步骤 ① 所得 sum(1),步骤 ②所得 carry(1) 重复步骤 ①、②、③;α:对 sum(1) = 12 和 carry(1) = 10 重复以上三个步骤:不考虑进位:sum(2) = 22;①不考虑进位,分别对各位数进行相加,结果为 sum(1):个位数 3 加上 9 为 2,十位数 1 加上 0 为 1;②考虑进位:有两处进位,第 0 位和第 3 位,只考虑进位的结果为:carry(1) = 0001 0010;

2023-04-15 09:24:41 302

原创 【使用双指针来解决来解决盛水问题】

这个题目的可以通过暴力列举法和双指针,但最好方法是使用双指针,我们可以知道由水桶定律,木桶容纳水的体积是取决于最短的那块木板,木桶的水容还与底面积的大小有关,我们先将指针指向数组的最左右两侧,先判断最短的木板,去求得水桶内可容纳最大的体积,保存这个值,之后是关键的一步,我们需要考虑之后的指针,我们需要怎么移动,自然指针应该是相向移动,同样的,我们期望我们每一次移动,我们都希望这是可能增大水容的,我们不希望每一次的移动是不可能增大水容。这就是双指针算法的体现。

2023-04-09 14:22:55 62

原创 【怎么求数的平方根】

可得(x + a/x) / 2,x可以一般取大与x的平方根,越小越好,迭代公式是有顺序的逐步逼近x的平方根,这样迭代几次就可以达到精度很高的值,由于不知道x的具体值,一般取x = a,(注意a不能等于0,由于分母等于0,迭代公式就没有意义了),所以需要去分情况讨论,这样就可以写出代码了。所以x - f(x)/f'(x),这就是一个近似x的平方根的值,带入f(x)这个题目可以通过牛顿的迭代法(公式法),(x + a/x) / 2(这个就是迭代公式),a(可以为任意数)

2023-04-02 19:28:09 160

原创 求解最长回文子串Java(暴力求解)

【代码】求解最长回文子串Java(暴力求解)

2023-03-27 13:37:29 105

原创 JDK环境变量配置详解教程

(7)回到上一个界面,点击path,进入之后点击新建,添加如下信息:"%JAVA_HOME%\bin" 和 “%JAVA_HOME%\jre\bin”,然后点击确认。(1)进入此界面,输入java -version(中间有空格),后按回车,检验配置的版本,该版本一般与你下载版本一致 ,则出现以下情况。(2)检验版本后,在检验java的执行功能,在键盘上输入java,并点击回车,如果是以下这种情况则成功。(8)最后一直点击确认直到到达操作(3)的界面,"win+R"打开运行行窗口,输入cmd,点击确认。

2023-03-19 20:31:35 763

原创 【我理解Java数的累加累乘的基本思路】

1.对于数的累加累乘一般采用for循环的方法,也可以使用while循环,但由于需要知晓循环的次数。3.学过C语言的人会发现Java的累加与累乘是一样,也是Java与C语言的基本算法。我们一般采用for循环(while循环此节不讲)。2.累乘的算法与累加相似,基本思想是一样的。(2)此下为累乘的算法:java。

2023-03-12 23:27:43 1978 1

空空如也

空空如也

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

TA关注的人

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