- 博客(388)
- 资源 (22)
- 收藏
- 关注
原创 Java(六十)网络编程-TCP和UDP协议通讯
(1):public static InetAddress getByName(String host):可以通过主机名或者IP地址,获取的是InetAddress对象。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,2.接收端 对 发送端 说: 好的,我知道了!协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。
2025-02-26 08:17:43
603
原创 Java(五十九)类加载器
任何类都是由最下层的加载器来加载,既系统类加载器来加载的,由于Java具有委托机制,所以系统类加载器它不会马上加载,而是先委托给它的上一层类加载器来加载,既扩展类加载器来加载,如果扩展类加载器没有加载到,它在自己去加载。由于Java具有委托机制,扩展类加载器不会马上加载它所管辖的范围,它会先委托给上一层类加载器去加载,既引导类加载器来加载,如果引导类加载器没有加载成功,它在自己去加载,如果它也没有加载到,就去下一层继续加载。今天我们来学习类的加载器(很重要),那什么是类的加载器呢?最上层:引导类加载器。
2025-02-26 08:15:05
336
原创 Java(五十八)双列集合Properties
ss1.store(new FileOutputStream("aaa.txt"), "字节流写入");ss1.store(new FileOutputStream("aaa.txt"), "字节流写入");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");
2025-02-24 09:17:01
315
原创 SpringCloud重制(一)整合分布式事务seata
3) AT模式:Seata默认模式,最终一致性的分阶段事务模式,无业务侵入,一阶段直接提交事务,减少了事务的锁定时间,提高了性能。2) TCC模式:最终一致性的分阶段事务模式,有业务侵入,需要业务方在 try、confirm、cancel 三个阶段进行编程,实现资源的预留、确认提交和回滚。1) XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入,存在严重的资源独占和阻塞问题,对系统性能有较大影响。有好的建议,请在下方输入你的评论。再次启动项目,问题解决。
2025-02-24 09:13:24
855
原创 Java(五十七)对象操作流(序列化流和反序列化流)
今天来学习序列化流ObjectOutputStream,反序列化流ObjectInputStream。接下来,我们修改一下person类,增加一个sex属性。然后,我们再来读取aaa.txt文件,看会发生什么情况。这里需要注意一下,要想将对象写入文件对象需要实现序列化父类Serializable。很简单,就是制定这个类的serialVersionUID即可。执行上方的代码,我们将person类的对象就写入了aaa.txt文件。类修改了之后,就变成了一个新类。有好的建议,请在下方输入您的评论。
2025-01-18 15:57:51
276
原创 Java(五十六)打印流(PrintStream和PrintWriter)
本来以为转换流就是流部分的最后一个了,结果还是我年轻了,今天继续学习java的打印流PrintWriter,还是老套路,先学构造方法,再学成员方法。但其实区别不是很大,反正到最后都要释放资源,释放资源的时候是自己刷新文件的。(2):println()中可以接收任何数据类型的参数,write()中只能接收字符串,字符或者字符数组。(3):println()可以自动刷新,writer()不能自动刷新。(1):println()自带换行,write()不带换行。第一种方法和第二种方法的区别就在于,第二种方法的。
2025-01-18 15:54:58
356
原创 Java(五十五)转换流(InputStreamReader和OutputStreamWriter)
今天我们来学习流的最后一部分:转换流InputStreamReader和OutputStreamWriter,缓冲转换流:BufferedReader和BufferedWriter。这几个我们学一下构造方法就可以了。成员方法跟字符流的都一样。转换流是所有流中唯一能设置编码方式的流。有好的建议,请在下方输入你的评论。以上大概就是转换流的基本使用。可以将字节流转换成字符流。具体使用参见文件复制粘贴。具体使用参见文件复制粘贴。
2025-01-17 16:25:44
313
原创 Java(五十四)字符流的文件复制实现
字符流我们学习了FileReader和FileWriter,缓冲字符流我们学习了BufferedReader和BufferedWriter,接下来我们使用字符流来实现一下文件的复制粘贴。最后我们来总结一下,我们学习了这么多的文件复制方法,那么我们在使用的时候到底使用哪一种呢?这个五个方法算是对字符流部分学习的一个总结。比较简单,没有太难的部分。有好的建议,请在下方输入你的评论。
2025-01-17 16:24:35
305
原创 Java(五十三)字符缓冲流(BufferedReader和BufferedWriter)
(2):public void write(char[] cbuf):写出一个字符数组。(3):public void write(String str):写出一个字符串数据。qwertqwert凭君莫话封侯事,?(2):public int read(char[] cbuf):读取一个字符数组。(1):public void write(int c):写出一个字符数据。(3):public String readLine():读取一行的数据。(1):public int read():读取一个字符数据。
2025-01-16 09:35:54
236
原创 Java(五十二)字符流(FileReader和FileWriter)
(4):public FileWriter(String fileName,boolean append):创建一个追加字符输入流(追加写入文件)对象。(2):public FileWriter(File file,boolean append) :创建一个追加字符输入流(追加写入文件)对象。(3):public FileWriter(String fileName):创建一个字符输入流(写入文件)对象。(1):public FileWriter(File file):创建一个字符输入流(写入文件)对象。
2025-01-16 09:33:55
358
原创 Java(五十一)字符串的编解码
Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。上面我们学习了java中IO流和缓冲流的基本使用,这些都是字节流,下面我们接着来学习java中的字符流,但是在学习字符流之前,我们先来学习一下java中的字符串的编解码。1:ASCII:是所有编码表的最基本的编码表,里面主要是针对一些大小写英文字母,数字,和其他的少数标点符号进行编码的。常见的编码表有ASCII,utf-8,GBK等。
2025-01-15 09:39:25
347
原创 Springboot(五十八)SpringBoot3使用Redisson实现接口的限流功能
通过使用@RateLimiter 注解配置:count = 2, time = 10;即:每10秒钟产生2个令牌。对接口实现限流,主要使用了Redisson提供的限流API方法;第三步:试图获取一个令牌,获取到,返回true;否则,返回false。使用redission实现自定义限流注解成功。举例:5秒中产生2个令牌。有好的建议,请在下方输入你的评论。关于自定义注解,请移步《第一步:声明一个限流器;
2025-01-15 09:37:41
1553
原创 Java(五十)java-IO流-缓冲流(BufferedInputStream和BufferedOutputStream)
接下来我们学习一下java缓冲流中的读取和写入类BufferedInputStream(缓冲字节输入流)和BufferedOutputStream(缓冲字节输出流)类,这个两个类的使用方法和IO流中的FileOutputStream和FileInputStream类是差不多的。2.一次读取一个字节数组,一次写出一个字节数组的一部分 4562。通过上方的对比,我们可以发现,还是使用缓冲流的读取字节数组的方式效率最高。以上大概就是java缓冲流的基本知识,有好的建议,请在下方输入你的评论。
2025-01-09 07:37:19
600
原创 Java(四十九)java-IO流-异常处理
正常我使用的话,我就写一个catch就完事了,所有的异常都在这里捕获,有问题我就修改程序就好了,但是可能有的同学会有捕获不同异常通过不同的处理方式来解决异常的情况。那就按照上边的框架来写就可以,但是这里要注意,不要捕获不必要的异常,例如InterruptedException,它不可能发生在io流的操作中。正常我们写读取文件的代码就是按照上方的异常处理框架来写的,查看我之前的代码,其实都是有问题的。Java的IO流部分到这里我们基本上学习的就差不多了,最后我们再来了解一下java异常的处理方式。
2025-01-09 07:36:06
152
原创 Java(四十八)java-IO流-实现文件复制粘贴
我们学完了java.io流中的FileOutputStream类和FileInputStream类,那我们接下来使用他们两个来实现一下文件的复制粘贴。整个流程就比较简单了,从文件a.txt中读取文件内容,将内容暂存至java程序中,再将文件内容写入到b.txt中。以上大概就是使用FileOutputStream类和FileInputStream类实现复制粘贴的小例子。下面我们有两种方式来实现这个功能,文件就使用我们之前测试使用的aaa.txt和bbb.txt文件。有好的建议,请在下方输入你的评论。
2025-01-08 09:15:46
157
原创 Java(四十七)java-IO流-字节流(FileInputStream)
那现在有一个问题,我这每一次读一个字节的数据,我现在想读取整个文件的所有数据,该如何实现呢?现在还有一个问题,就是我不知道这个文件中有多少数据,我怎样使用上面的方式将其一次都读取出来呢?字节流我们来学习一下FileInputStream读取类,学习类嘛,就还是那些:先学习构造方法,再学习成员方法。但是我们的程序中输出的A之后还有一个?@,这是什么原因呢?以上大概就是FileInputStream类的基本使用。是因为我们是使用byte数组来装数据的。有好的建议,想在下方输入你的评论。
2025-01-08 09:14:54
250
原创 Springboot(五十七)SpringBoot3使用JVM调优工具Arthas Tunnel
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。最后切记:arthas Tunnel是没有权限控制的,只要是知道地址,既可以访问,所以呢,使用的时候需要注意一下。到这里,你就可以启动你的项目了,应用启动后,spring 会启动 arthas,并且 attach 自身进程。有好的建议,请在下方输入你的评论。
2025-01-07 10:21:03
1539
原创 Java(四十六)java-IO流-字节流(FileOutputStream)
字节流我们来学习一下FileOutputStream写入类,学习类嘛,就还是那些:先学习构造方法,再学习成员方法。以上大概就是FileOutputStream类的基本使用。其实就是对应写入数据的ASCII码。有好的建议,想在下方输入你的评论。打开文件,发现其中是有内容的。文件中被写入了一个字符“7”
2025-01-07 10:18:43
267
原创 Java(四十五)java-IO流
因为数组容器和集合容器只能满足运行一次的时候可以对数据进行存储,但是运行完之后,容器中的数据就丢失了。即便学习了容器,也无法满足为了的开发需求,比如说我们在注册某宝账号,或者登录某宝账号的时候,使用容器就无法解决了。我们在写程序的时候,经常会用到各种数据,数据多了,就不方便管理和操作了,为了方便管理和操作,但是在做PHP的时候,也有文件上传,那时候叫文件流,其实也是IO流的一种。我们学习了容器,将很多数据存储容器,就方便管理和操作了。也就说可以将数据从内存,写出到,输出到本地磁盘中。
2025-01-07 10:17:13
765
原创 Java(四十四)file
Java中的file类:代表文件或者文件夹(目录)类,也就是说将文件或者文件夹通过File类来封装成对象。控制台输出:E:\camellia\doc\Java\aaaaa.txt。第一个参数是目录地址,第二个参数是这个目录下的某个文件名称。使用file类,需要通过构造方法创建一个file对象。这种构造就比较有意思了,他的第一个参数是file对象。传入一个文件地址,或者传入一个目录地址。以上大概是java中file的基本使用。有好的建议,请在下方输入你的评论。控制台输出:aaaaa.txt。
2025-01-03 21:59:28
822
原创 Java(四十三)递归
在书中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,那么一对刚出生的兔子,在一年内繁殖成多少对兔子?自身调用:原问题可以分解为子问题,子问题和原问题的求解方法是一致的,即都是调用自身的同一个函数。递归这个玩意儿,老生常谈了,目前接触的几种语言中都是有的。没接触过的咱也不敢说。这个问题翻译一下就是使用递归计算 5 * 4 * 3 * 2 * 1 的结果。上方代码就是简单的实现了:5 * 4 * 3 * 2 * 1。
2025-01-03 21:54:24
264
原创 Java(四十二)可变参数
4:可变参数在编译为字节码后,在方法签名中是以数组形态出现的,如果两个方法签名编译后的是一致的话,是不能编译通过的,不可以作为方法的重载。5:可变参数作为参数的方法可以传入数组类型的数据或者直接传入多个数据,但是数组作为参数的方法只能传入数组类型的数据。3:可变参数只能做为函数的最后一个参数,前面有没有其他参数都可以,一个函数最多只能有一个可变参数。1:java可变参数是指在调用方法时传入不定长度的参数,本质上是基于数组实现的。那可变参数在调用那头是啥我不知道,在接受参数这边,他是个数组。
2025-01-01 22:46:24
358
原创 Java(四十一)HashSet
通过输出结果,我们可以发现,在存储的值是对象的时候,hashset也会为我们去重。以上大概是java中hashset的基本使用。有好的建议,请在下方输入您的评论。通过观察上方的输出结果,我们可以发现,HashSet是无序的且唯一的。HashSet是Set的实现类。和Set方法是一样的。
2025-01-01 22:45:29
180
原创 Springboot(五十六)SpringBoot3集成SkyWalking
Dskywalking.collector.backend_service:表示skywalking的collector服务的IP及端口。注意上图中红框标注的位置,我们可以根据启动Springboot项目启动时候控制台输出的ID进行筛选。注意上图中红框标注的位置,我们可以根据启动Springboot项目启动时候控制台输出的ID进行筛选。其他的版本的 APM 地址(这个我不需要,我们是在docker中部署的,留给有需要的同学)其他的java 版本的 Agents 地址。
2024-12-30 08:49:22
2118
原创 Java(四十)二叉树结构
在进行左旋的时候,我们当6这个子节点不存在,因此,根节点变成了8,再将6插入到平衡二叉树中,6比8小,在左边,6比5大,因此在右边,就形成了上边的图。4:如果一个节点没有子节点了,那它会默认指向的是名为Nil的节点,可以视为Nil节点为叶子节点,叶子节点一定是黑色的。如果叔叔节点是红色,父亲节点由红变黑,叔叔节点由红变黑,爷爷节点由黑边红,如果爷爷是根节点,再由红变黑。3:如果一个节点是红色的,那它的两个子节点一定是黑色的,也就是说不能有连续两个红色的节点连在一起。2:根节点一定是黑色的。
2024-12-30 08:46:21
242
原创 Java(三十九)Comparable和Comparator
运行结果报错,为什么呢?TreeSet是会对其中的元素进行排序的,java底层没有办法对Object类型的元素进行排序。需要我们做一下处理,那么如何处理呢?上方的代码在编写的时候没有报错,是在运行的时候编译报错,这个问题需要注意一下,TreeSet只能存储一种类型的数据。这就要使用到我们标题中的Comparable或者Comparator。有好的建议,请在下方输入你的评论。以上大概就是java中自然排序。那么我们如何实现自然排序呢?那么我们如何实现比较器呢?
2024-12-30 08:45:34
262
原创 Java(三十八)集合-set
通过控制台输出值我们会发现,TreeSet是有排序的。按照字典顺序进行由小到大排序。1:不保证顺序(存入的顺序和取出的顺序是不一样的)1:不保证顺序(存入的顺序和取出的顺序是不一样的)观察上方输出的结果。印证了set集合的三大特点。4:TreeSet是可以排序的(由小到大)以上大概就是java集合Set的基本使用。有好的建议,请在下方输入你的评论。和set中的方法是一样的。
2024-12-28 07:33:24
298
原创 Java(三十七)泛型
这个我们在之前学习ArrayList的时候是学习过的。强语法语言类型中是有泛型这个概念的,而在我之前使用的javascript以及PHP中是没有这个概念的。参数化类型,就是指在定义泛型的时候,就像定义形参一样,在使用泛型的时候,需要传递数据类型。就有点类似 typescript中的any了,就随意了,啥都行。下面我们分别尝试一下,一个类型的泛型类和多个类型的泛型类。这部分我同样使用了泛型接口来测试,这个应用的就比较多了。我们可以定义一种类型的泛型,也可定义多种类型的泛型。有好的建议,请在下方输入你的评论。
2024-12-28 07:32:04
324
原创 Java(三十六)集合-List ArrayList LinkedList接口
通过运行结果,我们可以发现,java会优先执行带索引的添加,在执行不带索引的添加,这里需要注意一下。以上大概就是集合List、ArrayList、LinkedList接口付饶基本使用。(1):有序的(存入的顺序和取出的顺序是一样的)(1)有序的(存入的顺序和取出的顺序是一样的)1:有序的(存入的顺序和取出的顺序是一样的)有好的建议,请在下方输入你的评论。(2):元素可以重复的。(2)元素可以重复的。
2024-12-27 08:45:06
1518
原创 Java(三十五)集合-Collection接口
通过上方代码,我们可以发现,removeIf是根据条件删除,运行的时候,会调用内部的test方法,返回true,则删除,返回false,则跳过。通过观察上方的代码,我们可以发现,集合中有两个bbbbb元素,我们执行remove方法,只删掉了集合中靠后的那个元素。ArrayList 实现类。3:一个集合容器中可以存储不同引用数据类型的数据,一个数组容器中只能存储同一种数据类型的数据。针对不同的集合容器,会有不同的迭代器,而且迭代器是以内部类的形式,定义在集合容器中的。
2024-12-27 08:42:53
1353
原创 Java(三十四)异常
解释一下上方代码:程序执行,先进入main方法,输出“程序开始执行”,进入method1方法中,输出“进入异常”,执行a/b报错,这里没有对错误进行处理,因此此段程序结束,回到main方法中。通过上方的代码,我们可以发现,try中的代码报错,进入catch中,最后进入finally中,也就是说,无论如何,代码最终都会进入到finally中。在子父类中,如果父亲没有抛,子类重写方法也不能抛,而且就算父亲抛异常了,子类抛的异常的类只能是父类异常的子类或者本身。运行时异常,多数 java.lang 异常的根类。
2024-12-26 10:55:11
764
原创 Java(三十三)BigDecimal类
通过观察,我们会发现不对啊,使用BigDecimal类运行的结果是比之前的结果精确了一些,但是也并不是我们想要的数据呀。Java中数字计算,都是从十进制转换成二进制再进行运算,运算结束之后,再从二进制转换成十进制,这个过程可能会产生精度丢失。以上大概就是Java中BigDecimal的基本使用。上方代码报错了,嗯……我们尝试一下下方的方法。我们可以使用BigDecimal类。那遇到上方的问题我们该如何处理呢。有好的建议,请在下方输入你的评论。
2024-12-26 08:51:42
267
原创 Java(三十二)日期时间类
Java中的calender是一个抽象类。抽象类不能实例化对象,在调用它的时候使用到了面向对象的多态。时期格式化是将变量的类型从Date转换成String。时期格式化是将变量的类型从String转换成Date。注意上方代码中,我们是需要指定日期格式的,否则SimpleDateFormat无法解析。(2):public long setTime()设置指定的毫秒值。我们下面以localDateTime举例子,他们三者的用法相同。以上大概就是java中日期时间类的基本使用。有好的建议,请在下方输入你的评论。
2024-12-25 09:10:28
502
原创 Java(三十一)包装类
以上几种数据类型中我们常用的只有Integer类,我们下面来看下Integer的基本使用。Java包装类就是指基本数据类型的4类8中所对应的8个引用数据类型。自动装箱就是java会自动的为我们从 int 转换成 Integer。自动拆箱就是java会自动的为我们从Integer转换成 int。(2):可以将int类型的数字转换成Integer类型的数字。(2):可以将字符串格式的数字转换成Integer类型的数字。(1):创建Integer对象。(1):创建Integer对象。
2024-12-25 09:07:56
450
原创 Java(三十)Math类
返回带正数的double值,该值大于等于0.0且小于1.0。Java中还有很多工具类,工具类具有以下两个特点。最后做一个小尝试,获取0-100的一个随机数。以上大概是java中math工具类的基本使用。有好的建议,请在下方输入你的评论。Math是一个工具类。
2024-12-24 08:47:44
194
原创 Java(二十八)String类常见成员方法
上方的例子中,两个字符串第一维都是a,则比较第二位,一个是a,一个是s,则ASCII码相减输出。上文我们了解了String类部分的构造方法,这里我们来看一下String类常用的成员方法。使用这个方法的时候,要注意索引长度不能超过字符串长度减一。两个字符串对位比较,如果对位相同,去下一位继续比。以上大概就是对String类常用方法的一些小尝试。有好的建议,请在下方输入你的评论。
2024-12-24 08:46:06
939
原创 Springboot(五十五)SpringBoot整合ELK实现日志可视化
这里需要注意一下,将文件中“你的ip”换成你服务器的ip,并且端口号5044要与Logstash服务器配置的监听端口一致。要先部署elasticsearch,在部署logstash,部署logstash需要用到es的账号和密码。我的es是有用户名密码的,如果你的es没有,那就不需要。到这里,Springboot就配置完成了,启动项目。ELK部署完成之后,下边我记录一下我在Springboot框架中集成的全过程。这里需要注意一下,ELK的版本需要一致,我这里使用的事7.17.3版本。关于他们的部署,请移步。
2024-12-23 09:15:22
2606
原创 Java(二十七)String类
超出索引了,byte数组只有9个元素,s2是从索引为1开始的元素开始取,取到索引为10的元素。初始化一个新创建的String对象,使其表示一个与参数相同的字符序列。初始化一个信创建的String对象,使其表示一个空字符序列。前面我们了解的java的基本数据类型中字符串是char。分配一个新的String,将字符数组一部分转换成字符串。分配一个新的String,将字符数组转换成字符串。通过直接赋值的对象,在内存中只有1个对象。通过new出来的,在内存中有2个对象。有好的建议,请在下方输入你的评论。
2024-12-23 08:58:23
266
原创 Java(二十六)Object类equals与toString
比较两个对象是否相等,我们可以在子类中重写他,让他来比较类中的某个属性是否相同等。让当前线程处于等待(阻塞)状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过参数设置的timeout超时时间。toString方法重写的功能大概就是输出类中的属性的值,方便我们检查类中的属性是否赋值成功。当 GC (垃圾回收器)确定不存在对该对象的有更多引用时,由对象的垃圾回收器调用此方法。当我们创建一个类,没有指定其继承的类的时候,他默认继承object类。
2024-12-21 14:12:31
687
原创 Java(二十五)final关键字
final 修饰的类叫作 final 类,final类通常是功能完整的,不能被继承,Java 中有许多类是 final 的,比如 String, Interger 以及其他包装类。final修饰引用数据类型的变量,不能改变的是变量存放的地址值,地址值上(对象)的。final修饰局部变量,该变量在定义的时候可以不被赋值,但是在使用之时,该变量必须。final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。使用final修饰的的类,是“断子绝孙”的。有好的建议,请在下方输入你的评论。
2024-12-21 14:11:38
1030
小程序(三)配置tabbar及自定义tabbar样式
2020-09-26
blur-admin-master.zip
2020-09-26
gentelella-master.zip
2020-09-26
startbootstrap-sb-admin-2-master
2020-09-26
startbootstrap-sb-admin-master.zip
2020-09-26
设计模式(十六)之抽象工厂模式.zip
2020-02-17
设计模式(十五)之观察者模式.zip
2020-02-17
设计模式(十二)迪米特原则(最少知识原则).zip
2020-02-17
设计模式(十一)之模板方法模式.zip
2020-02-17
设计模式(十)之原型模式.zip
2020-02-17
设计模式(八)之静态代理模式.zip
2020-02-17
设计模式(六)之里氏替换原则.zip
2020-02-17
设计模式(五)之依赖倒转原则.zip
2020-02-17
设计模式(四)之开放封闭原则.zip
2020-02-17
设计模式(三)之单一职责原则.zip
2020-02-17
设计模式(一)之简单工厂模式
2020-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人