
java进阶
文章平均质量分 88
类和对象、常用类、IO流的一些笔记,若有不足之处望,见谅
缘友一世
我是缘友一世博主,我的博客(全部文章永久免费阅读无需关注博主,如果出现VIP文章,请及时评论联系,我会及时手动解除)专注于计算机科学和软件开发领域的学习和实践经验。同时,我也关注技术行业的发展趋势和前沿研究。感谢您的关注和支持!部分文章内容辅助使用gpt等人工智能编辑,如果出现错误之处,请指正。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java面向对象设计的七大原则:让代码更优雅的基石
单一职责原则(Simple Responsibility Pinciple,SRP)是最简单的面向对象设计原则,它用于控制类的粒度大小。一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。软件实体应对扩展开放,对修改关闭软件实体,如类、模块和函数应该对扩展开放,对修改关闭。其中,对扩展开放是针对提供方来说的,对修改关闭是针对调用方来说的。里氏替换原则(Liskov Substitution Principle)是对子类型的特别定义。原创 2025-01-26 16:51:43 · 740 阅读 · 0 评论 -
JAVA设计模式:依赖倒转原则(DIP)在Spring框架中的实践体现
依赖倒转原则(Dependency Inversion Principle):高层模块不应该依赖低层模块,二者都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。// 抽象层在Spring框架中实践DIP原则的关键:✅ 通过接口定义抽象契约✅ 利用依赖注入解耦组件✅ 善用Spring的自动装配机制✅ 保持适度的抽象层级✅ 结合设计模式增强扩展性更高的可测试性更好的可维护性更强的扩展能力更清晰的架构分层记住:依赖倒转不是目标,而是实现软件高质量设计的手段。原创 2025-01-26 16:37:31 · 1358 阅读 · 0 评论 -
JDK14特性Java 原生代码编译工具jpackage
是 Java 14 引入的一项新特性,旨在提供一个工具来将 Java 应用程序打包为平台特定的原生可执行文件(native executables)。这个工具叫做 jpackage。在 Java 14 之前,开发者通常需要在目标机器上安装 JDK 或 JRE 才能运行 Java 应用程序,但。提供了一种方式,使得 Java 应用程序可以作为独立的可执行文件运行,无需外部的 Java 运行时环境。,它允许开发者将 Java 应用程序打包成操作系统特定的安装包或可执行文件,从而简化部署和分发过程。原创 2025-01-20 21:35:35 · 1301 阅读 · 0 评论 -
.gitignore配置忽略out目录
目录和文件已经被 Git 跟踪(即它们已经被添加到版本控制中),那么你需要先将它们从 Git 的跟踪中移除,然后再忽略它们。目录或者其中的文件已经被 Git 跟踪(已经提交到 Git 仓库),仅仅修改。还需要从 Git 的索引中移除它们。目录以及其中的所有文件和子目录。原创 2025-01-18 23:56:54 · 528 阅读 · 0 评论 -
Java 8 Stream API
中间操作是惰性操作(Lazy),它们不会立即执行,直到你触发一个终止操作时,才会开始执行整个流的计算。:用于将流中的元素通过函数转换成另一个类型的元素(通常是映射操作)。:将流中的每个元素映射成多个元素,然后再将所有这些元素合并成一个流。:将流中的元素收集到集合中,是最常用的终止操作。:检查流中的任何一个元素是否符合指定的条件。:用于过滤流中的元素,返回符合条件的元素。:对流中的每个元素进行操作,通常用于打印。:检查流中的所有元素是否符合指定的条件。:对流中的元素进行排序。:计算流中元素的数量。原创 2025-01-18 23:43:21 · 1227 阅读 · 0 评论 -
java实现网络IO高并发编程java NIO
NIO(,非阻塞 I/O)是 Java 在JDK 1.4中引入的一套新的 I/O API,旨在解决传统 I/O(即 BIO,阻塞 I/O)在高并发场景下的性能和扩展性不足的问题。原创 2024-12-27 22:41:20 · 1325 阅读 · 0 评论 -
java实现网络IO高并发编程java AIO
AIO(,异步非阻塞 I/O)是 Java 在JDK 1.7中引入的一种 I/O 模型,基于操作系统提供的异步 I/O 能力。AIO 是对 NIO 的进一步优化,旨在提高 I/O 操作的效率,减少线程阻塞和资源浪费。异步操作:I/O 操作的调用是非阻塞的,由系统内核完成 I/O 操作后,直接通知应用程序(通过回调机制)。事件驱动:通过回调函数处理完成的 I/O 操作,无需手动轮询或阻塞等待。Java AIO 是一种适用于高并发场景的异步网络编程模型,能够有效提升性能和资源利用率。原创 2024-12-27 22:32:33 · 1149 阅读 · 0 评论 -
JAVA代理模式和适配器模式
模式适用场景优点缺点代理模式功能增强(日志、权限、远程调用等)灵活添加功能,解耦目标对象和功能实现静态代理增加代码量,动态代理可能增加复杂度适配器模式接口不兼容(老接口适配新接口、第三方库整合等)解决接口兼容问题,增强代码复用性若接口变化频繁,适配器可能需要频繁修改。原创 2024-12-27 22:09:56 · 1202 阅读 · 0 评论 -
使用 Protobuf 时User类不需要实现 Serializable接口的解答
user.protoProtobuf 自动生成的类不需要实现,因为它内置了自己的序列化和反序列化机制。Protobuf 的序列化机制更高效,与 Java 的完全无关。在绝大多数情况下,不要让 Protobuf 的类实现,以避免混用问题。原创 2024-12-27 12:57:53 · 813 阅读 · 0 评论 -
序列化protobuf简介和使用
序列化是将对象转换为一种可存储或传输的格式(如字节流)的过程,便于将数据存储到文件、数据库,或者通过网络传输到其他系统。反序列化是将这种字节流恢复为原始对象的过程。JSON:轻量级,易读,但占用空间较大。XML:类似 JSON,但冗余信息更大。Protobuf(Protocol Buffers):一种高效的二进制序列化协议,由 Google 开发。创建一个用于描述用户的 Protobuf 文件(user.proto):// 用户 ID,编号为 1// 用户名称,编号为 2。原创 2024-12-27 11:53:03 · 1159 阅读 · 0 评论 -
JDK9~17部分新特性浅学
JKD9新特性—模块发开发JKD10新特性—var局部变量推导JDK11新特性—`sheBang`脚本JDK14新特性—文本块JDK14新特性—instanceof增强JKD16新特性—record类JDK17新特性—sealed类JDK17新特性—switch增强原创 2024-02-04 15:36:47 · 869 阅读 · 0 评论 -
JAVA之网络编程学习
Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件,数据信息等资源。原创 2023-01-01 18:25:11 · 634 阅读 · 0 评论 -
JAVAGUI编程初识之Swing
Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。Icon是接口,在使用Icon接口的时候,必须实现Icon接口的三个方法前两个方法用于获取图片的长宽,paintIcon()方法用于实现在指定坐标位置画图硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。原创 2022-12-31 12:50:59 · 1594 阅读 · 0 评论 -
JAVAGUI编程初识之AWT
刚开始的概念可以不太懂,先学会使用,然后有一定了解了,可以再回过头来看。GUI:Graphical User Interface 图形用户界面两个常用技术AWT:Abstract Window Toolkit 抽象窗口工具包。Swing:用于开发Java应用程序用户界面的工具包。以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。原创 2022-12-30 22:57:45 · 1421 阅读 · 0 评论 -
java注解(Annotation)和反射(Reflection)
interface@interface@interface自定义注解,自动继承了java.lang.annotation.Annotationjava.lang.annotation.Annotation接口@interface@interface@interfacepublic@interface。原创 2022-12-28 11:41:00 · 861 阅读 · 0 评论 -
Java集合框架【三Map接口、Iterator送代器、Collections工具类】
Map接口定义了双例集合的存储特征。Map中的容器称为双列集合。双例集合的存储特征是以key与value结构为单位进行存储。Map中常用的容器为HashMap,TreeMap等。HashMap底层实现采用哈希表。哈希表的本质是"数组"+“链表”数组特点:占用空间连续。寻址容易,查询速度快。缺点:增加和删除效率非常低。链表:占用空间不连续。增加和删除效率非常高。缺点: 寻址困难,查询速度慢。原创 2022-12-25 22:58:32 · 413 阅读 · 0 评论 -
Java集合框架【二容器[LinkedList容器类、Set接口]】
【代码】Java集合框架【二容器[LinkedList容器类、Set接口]】原创 2022-11-23 14:07:25 · 365 阅读 · 0 评论 -
Java集合框架【二容器(Collection)[Vector容器类]】
Stack栈容器,是Vector的一个子类,它实现了一个标准的后进先出(LIFO:LastinFristOut)的栈。Stack特点是:后进先出。它通过5个操作方法对Vector进行扩展,允许将向量视为堆栈。原创 2022-11-18 14:50:32 · 443 阅读 · 0 评论 -
Java集合框架【二容器(Collection)[ArrayList]】
程序中的“容器”,用来容纳和管理数据。我们在之前所学习的数组就是一种容器,可以在其中放置对象或基本数据类型数据。数组的优势:一种简单的线性序列,可以快速访问数组元素,效率高。从效率和类型检查角度来讲,数组是最好的。劣势:不灵活。容量需要事先定义好,不能根据需求的变化而变化。由于数组并不能满足我们对“管理和组织数据的需求”,所以我们需要一种更强大、更灵活、容量可以随时变化的容器来装载对象。Collection是单例集合跟接口,它是集中收集的意思。原创 2022-11-17 23:27:44 · 441 阅读 · 0 评论 -
Java集合框架【一泛型(Generics)】
泛型可以帮助我们建立类型安全的集合。泛型的本质就是“数据类型的参数化”,处理的数据类型不是固定的,而是可以作为参数传入。这样一来我们的程序更加灵活、功能更加强大。可以把“泛型”理解为数据类型的一个占位符(类似:形式参数),即告诉编译器,在调用泛型时必须传入实际类型。这种参数类型可以在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。参数化类型把类型当作是参数一样传递只能是引用类型E、T、K、V、N、?泛型标记对应单词说明EElement。原创 2022-11-15 00:02:45 · 187 阅读 · 0 评论 -
Java多线程探究【四线程协作】
注意:以上方法均是Object类的方法,都只能在同步方法或者同步代码块中使用,否则会抛出异常IegalMonitorStateException。原创 2022-11-12 18:50:59 · 497 阅读 · 0 评论 -
Java多线程探究【三线程同步】
ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存请义,在实现线程安全的控制中,比较常用的ReentrantLock,可以显式加锁、释放锁。从JDK5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。接口是控制多个线程对共享资源进行访问的工具。程序相互僵持,一直无法结束。同步锁使用Lock对象充当。原创 2022-11-12 12:15:33 · 1359 阅读 · 0 评论 -
Java多线程探究【二线程状态】
【代码】Java多线程探究【二线程状态】原创 2022-11-11 21:30:37 · 582 阅读 · 0 评论 -
Java多线程探究【一线程简介、实现】
Java多线程探究【一线程简介、实现】;本文是学自狂神说java整理的笔记,并非里面的内容都有认真的整理、代码也有认真的练习本文仅供学习和交流之用,禁止非商业用途原创 2022-11-02 20:56:08 · 297 阅读 · 0 评论 -
java进阶专栏的学习指南
java进阶专栏的学习指南原创 2022-10-28 12:51:42 · 306 阅读 · 0 评论 -
Java(类和对象笔记)
非静态类创建的学生,不可以直接调用2.2.2 创建时间的不同静态方法和类一起加载非静态方法 在类实例化之后才存在2.2.3 感受java的参数传递是值传递值传递使用new关键字创建对象使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点。终极秘诀:属性私有,get/set3.1.3 初识构造器构造器简介构造器,也称构造方...原创 2022-06-25 15:16:32 · 246 阅读 · 2 评论 -
java内部类精讲
java内部类精讲:成员内部类、静态内部类、局部内部类、匿名内部类。原创 2022-10-08 22:08:10 · 335 阅读 · 0 评论 -
Object类
object常用类的初识: getClass类、hashCode()方法、、toString()方法、equals()方法、finalize()方法原创 2022-10-09 22:55:00 · 284 阅读 · 0 评论 -
包装类的认识
java包装类的认识:拆箱与装箱原创 2022-10-13 16:24:33 · 121 阅读 · 0 评论 -
String类、BigDecimal类初探
字符串是常量,创建之后不可改变字符串字面值存储在字符串池中,可以共享函数定义解释返回字符串的长度根据下标获取字符判断当前字符串中是否包含str将字符串转为数组查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。查找字符串在当前字符串中最后一次出现的下标索引。去掉字符串前后的空格把字母小写转成大写把大写转成小写判断字符串是否以str结尾判断字符串是否以str开始将旧字符串替换成新字符串根据str做拆分。原创 2022-10-13 17:12:13 · 530 阅读 · 0 评论 -
Date类、Calendar类、SimpleDateFormat类的认识
Date类、Calendar类、SimpleDateFormat类的认识提示初识一 准备:JDK1.8 文档二 Date类4.1 jdk文档2.2 例子三 Calendar类3.1 简介3.2 例子四 SimpleDateFormat类4.1 认识4.2 例子一:输出当前的时间4.3 例子二:计算本年的二月天数原创 2022-10-14 21:20:32 · 454 阅读 · 0 评论 -
java Random类、File类、System类初识
java Random类、File类、System类初识原创 2022-10-14 23:57:30 · 414 阅读 · 0 评论 -
java IO流【1】简介、入门
对于任何程序设计语言而言,输入输出(lnput/output)系统都是非常核心的功能。程序运行需要数据,数据的获取往往需要跟外部系统进行通信,外部系统可能是文件、数据库其他程序、网络、IO设备等等。外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象、屏蔽外部的差异,从而实现更加便捷的编程。输入(lnput)指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据)。常见的应用:读取硬盘上的文件内容到程序。例如:播放器打开一个视频文件、word打开一个doc文件。原创 2022-10-16 23:05:48 · 378 阅读 · 1 评论 -
java IO流【file类】
File类是Java提供的针对磁盘中的文件或目录转换对象的包装类。一个File对象而可以代表一个文件或目录,File对象可以实现获取文件和目录属性等功能可以实现对文件和目录的创建,删除等功能。原创 2022-10-17 12:40:31 · 393 阅读 · 1 评论 -
java IO流【常用流对象一】
package IO流;/*** @author 缘友一世copyFile("basic grammar/src/IO流/girl.jpg" , "basic grammar/src/IO流/CopyGirl4.jpg");System . out . println("执行程序用了" +(begin - end) / 1000 + "秒");} /*** 文件拷贝方法//文件的字节输入流 BufferedInputStream bis = null;原创 2022-10-20 23:50:54 · 409 阅读 · 0 评论 -
java IO流【常用流对象二】
以字节的方式写入不同类型的数据,然后编码和解码,就会出现乱码。原创 2022-10-21 23:21:36 · 364 阅读 · 0 评论 -
java IO流【常用流对象三】
8 对象流8.1 java对象的序列化和反序列化8.1.1 序列化和反序列化8.1.2 对象序列化的作用8.1.3 序列化涉及的类和接口8.2 操作基本数据类型8.2.1 写出基本数据类型数据8.2.2 读取基本数据类型数据8.3 操作对象8.3.1 将对象序列化到文件8.3.1.1 创建对象8.3.1.2 序列化对象8.3.2 将对象反序列化到内存中9 随机访问流9.1 三个核心方法10 FIle类在IO中的作用原创 2022-10-27 21:11:48 · 313 阅读 · 0 评论 -
java IO流【常用流对象四】
下载地址添加jar包方式一:创建libs目录,添加commons-io的jar包右键将libs设置为库,即可方式二:如下图。原创 2022-10-27 22:55:43 · 296 阅读 · 0 评论 -
java IO流【常用流对象总结】
按流的方向分类:输入流:数据源到程序(Inputstream、Reader读进来)输出流:程序到目的地(OutPutStream、Writer写出去)按流的处理数据单元分类字节流:按照字节读取数据(Inputstream、OutputStream)字符流:投照字符读取数据(Reader、Writer)。按流的功能分类:节点流:可以直接从数据源或目的地读写数据处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。原创 2022-10-27 23:05:55 · 265 阅读 · 0 评论