- 博客(47)
- 收藏
- 关注
原创 Tomcat 乱码问题彻底解决
直接执行“chcp 65001”,即可临时修改当前命令行窗口的编码方式。输入chcp 即可查看到当前系统编码方式,(我这里已测试过编码设置)。快捷键 win+R,进入。
2024-09-21 13:08:26
3925
1
原创 Java—IO流总结
在Java中,IO(Input/Output)是指输入和输出操作。Java提供了丰富的IO类和接口,用于处理文件、网络、标准输入输出等各种IO操作。以上是Java中常用的IO类和接口的总结,通过它们可以进行文件读写、网络通信、标准输入输出等各种IO操作。根据具体的需求,选择合适的IO类进行操作即可。
2024-06-15 21:58:53
558
原创 Java—装饰器模式
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地将行为添加到现有的对象中,而无需修改其代码。装饰器模式提供了比继承更灵活的功能扩展方式。// ConcreteComponent 被装饰者@Override// Decorator 装饰者 (增强)@Override@Override// 简单的模拟加密逻辑@Override。
2024-06-15 18:04:20
1934
原创 Java—集合简述
在Java集合框架中,线程安全和有序性是两个重要的概念。线程安全表示一个类的实例可以安全地被多个线程访问而不会产生数据不一致的情况,而有序性则表示集合中的元素是否可以按照某种顺序进行访问或遍历。下表总结了Java集合框架中常见类的线程安全性和有序性:需要注意的是,虽然HashTable和ConcurrentHashMap都是线程安全的,但是ConcurrentHashMap通过分段锁实现更好的并发性能,推荐在多线程环境中使用。
2024-06-13 21:34:07
295
原创 Java—自定义异常
在你的自定义异常类中提供一个构造函数来调用父类 Exception 的构造函数,并传递异常消息。这样做可以确保异常消息能够被正确地设置并且可以被捕获和处理。// 自定义异常类// 使用自定义异常类try {// 某些代码可能会抛出自定义异常throw new MyCustomException("这是我自定义的异常消息");System.out.println("捕获到自定义异常: " + e.getMessage());在这个例子中,类提供了一个带有消息参数的构造函数,通过调用。
2024-06-01 13:44:02
397
原创 Java—二分查找
二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。如果目标值等于中间元素,则查找成功。如果目标值小于中间元素,则在数组左半部分继续进行二分查找。如果目标值大于中间元素,则在数组右半部分继续进行二分查找。这个过程将不断重复,直到找到目标值或搜索范围为空为止。
2024-05-22 14:30:49
556
原创 Java—选择排序
它的基本思想是从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),然后再从剩余未排序的元素中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),以此类推,直到全部元素排序完成。选择排序的时间复杂度为O(n^2),其中n为待排序数组的长度。尽管选择排序的时间复杂度较高,但它简单易懂,适用于小规模数据的排序。对于大规模数据,更高效的排序算法如快速排序和归并排序更为常用。以上代码通过遍历整个数组,找到剩余未排序部分的最小值,并将其与当前位置的元素交换,重复这个过程直到数组排序完成。
2024-05-22 13:02:21
489
原创 Java—冒泡排序
冒泡排序是一种简单的排序算法。它重复地遍历要排序的数组,比较相邻两个元素,如果他们的顺序错误就交换他们的位置,直到遍历完整个数组。实现步骤以下是冒泡排序的实现过程:从数组的第一个元素开始,对相邻的两个元素进行比较,如果第一个元素比第二个元素大,则交换它们的位置。 继续进行比较,直到把最大的元素放到了最后一个位置。 重复以上步骤,但是不包括已经排序好的最后一个元素(因为它已经排好序了),直到整个数组都被排序好。实现代码import java.util.Arrays;public c
2024-05-22 12:56:42
568
2
原创 Java—junit单元测试
JUnit 5是Java编程语言中的一个单元测试框架,它提供了一组API和注解,用于编写和运行测试。以下是JUnit 5的主要特点:支持多种扩展模型:JUnit 5采用了插件架构,开发人员可以通过不同的扩展模型来定制测试框架,以满足其特定需求。改进的注解支持:JUnit 5提供了一系列新的注解,如@Test、@BeforeEach和@AfterEach等,这些注解使得编写测试更加简单和直观。
2024-05-21 23:07:36
1517
原创 Java—对象的克隆
在上面的示例中,我们定义了一个Student类,并实现了Cloneable接口。在Main类中,我们创建了一个Student对象student1,并通过调用clone()方法创建了student2作为其副本。最后,我们修改了student2的属性,并打印出两个对象的值,可以看到它们是相互独立的。这种方式可以确保整个对象的所有属性都被正确地复制,但需要注意的是,序列化和反序列化会对性能产生较大的影响。在Java中,对象的克隆是通过实现Cloneable接口和重写clone()方法来实现的。
2024-05-21 21:26:51
437
原创 Java—方法的重写和方法重载
当涉及到Java中的方法时,重载(Overloading)和重写(Overriding)是两个重要的概念。它们允许我们在类中定义具有相同名称但参数列表或实现方式不同的方法。请注意,在进行方法重载和方法重写时,需要遵循一些规则和约束,如方法签名必须相同等。此外,方法重载和方法重写是面向对象编程的重要特性,使得代码更加灵活和可扩展。
2024-05-19 20:28:27
307
原创 Java—单例模式
单例模式是一种软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在单例模式中,类自身负责创建自己的唯一实例,并且保证在整个应用程序中只能访问到这个实例。
2024-05-19 17:11:29
685
原创 Java—字节码文件解读
2. 将槽位1 的值 取出压栈 到操作数栈中 ,值加一,弹栈到槽位1。1. 将槽位1 的值 取出压栈 到操作数栈中 ,值加一,弹栈到槽位1。这是类的构造方法,第一个先执行类的构造方法。具体内容不过多介绍。1. 将槽位1的值(10) 复制一份 压栈到操作数栈中。2. 将槽位1 的值 (12)复制一份到操作数栈中。将字面量数字 10 压入。3. 操作数栈弹栈到槽位2。3. 操作数栈弹栈到槽位3.
2024-05-15 20:15:26
338
原创 Java—如何判断两个浮点数相等
我们知道在Java中浮点数float 和 double 的值不能很精准的表示一个小数,因为会有精度损失。使用做差法比较结果是否小于一个极小的数。如果小于规定的极小数,我们就认为他们是相等的。一旦有浮点型数据参与运算的结果,一定不要使用 “ == ” 与其比较。
2024-05-15 17:35:36
308
原创 JavaWeb-学习笔记
第一章 Tomcat 介绍前言使用Tomcat服务器,必须先安装JDK,因为Tomcat使用的是java语言开发的。在系统环境变量中,必须包含**%JAVA_HOME%\bin**。否则Tomcat无法启动环境变量配置:此电脑 --> 右键 --> 属性高级系统设置环境变量系统环境变量 --> 新建变量名: JAVA_HOME变量值:D:\java\jdk-17.0.5确定点击 Path – > 编辑 --> 新建%JAVA_HOME%\bin
2024-05-15 15:29:32
487
原创 Git—常用命令
项目根目录右键 -----> Git ----> Commit to master -----> 填写提交信息 -----> Commit /Commit and Push。------> 点击帮助人帮助修改的内容请求 ------->如果觉得不靠谱可以给他发消息 ----->如果觉得满意点击。当然不可能这样一个一个文件的添加,直接在项目根目录上右键 ------> Git ------> Add.# ==============也可以直接将修改了的文件提交到工作区==================
2024-05-15 14:57:23
2139
原创 Java——CLASSPATH配置
答: classpath类似于windows中的系统环境变量path。在windows中,如果要想在DOS命令窗口中执行一个程序。系统会先去当前文件路径下找对应命令的执行程序。如果找不到,就会到系统环境变量path中挨个遍历每一个路径。看那个路径下有当前命令的执行程序,然后执行该程序。系统环境变量path隶属于windows操作系统,告诉系统去哪里找可执行的运行程序。在Java中,我们编写的程序是通过javac命令生成字节码文件.class 文件,然后是使用java命令。
2024-05-12 20:50:12
3381
原创 JUC学习笔记-概念
进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在方法执行过程中,不需要等待方法返回结果,就能继续运行的称为异步。在方法执行过程中,需要等待方法返回结果,才能继续运行就是同步。
2024-05-05 22:52:39
349
3
原创 EasyExcel 学习笔记
官网案例// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去@Slf4j/*** 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收*//*** 缓存的数据*//*** 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。*/// 这里是demo,所以随便new一个。
2024-04-04 11:47:56
1920
1
原创 38. 外观数列
然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。countAndSay(2) = 读 "1" = 一 个 1 = "11"即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "
2024-03-22 13:30:52
372
1
原创 27. 移除元素
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。你不需要考虑数组中超出新长度后面的元素。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中。的元素,并返回移除后数组的新长度。
2024-03-13 19:01:17
290
2
原创 88. 合并两个有序数组
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。最终,合并后数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。个元素表示应合并的元素,后。需要合并 [1] 和 []。中,使合并后的数组同样按。合并结果是 [1]。合并结果是 [1]。
2024-03-13 18:40:33
127
原创 三数之和为零
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。
2023-12-06 23:29:50
351
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人