
JavaSE
文章平均质量分 82
Java SE (Java Platform, Standard Edition) 是 Java 平台的一部分,用于开发和部署桌面应用程序和企业级应用程序。它提供了一组核心的 API 和工具,使开发人员能够编写跨平台的 Java 应用程序。Java SE 包括 Java 编程语言、Java 虚拟机。
Dddddduo_
江苏省高中数学竞赛三等奖 阿里云认证专家博主 字节跳动青训营后端优秀奖
展开
-
Spring设计模式 八股速记 高层模块底层模块 依赖倒置原则 开闭原则 接口隔离原则
基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标通过面向接口编程,打破传统“高层调用低层”的依赖关系,实现模块间解耦。例如:传统依赖:司机类直接调用奔驰车类的方法,导致更换车型需修改司机代码。倒置后:司机依赖“车辆接口”,奔驰车、宝马车均实现该接口,实现灵活扩展。基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标。原创 2025-03-17 07:37:01 · 884 阅读 · 0 评论 -
JUC Java并发编程 并发编程三大特性 原子性 可见性 有序性
在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。试想一下,如果这2个操作不具备原子性,会造成什么样的后果。假如从账户A减去1000元之后,操作突然中止。然后又从B取出了500元,取出500元之后,再执行往账户B加上1000元的操作。这样就会导致账户A虽然减去了1000元,但是账户B没有收到这个转过来的1000元。原创 2025-01-18 21:58:31 · 621 阅读 · 0 评论 -
Java锁 从乐观锁和悲观锁开始讲 面试复盘
要通过不同的实现方式进行不同操作。乐观锁认为自己在操作数据的时候不会有别的线程修改数据,所以不会加锁,所以他只会在自己操作数据的时候检查是否有其他线程修改更新的这个数据。这种方式在判断和更新之间,确保了只有一个线程能够成功更新值,其他线程则会重试或失败,从而保证了乐观锁的行为。,在方法级别加锁时,锁是针对该对象的,保证同一时刻只有一个线程能够执行该方法。相对较低,特别是在高并发环境下,由于JVM的锁优化不足,可能导致性能瓶颈。可以通过锁的竞争情况动态升级为不同的锁类型(如偏向锁、轻量锁、重量锁)。原创 2025-01-18 21:57:25 · 783 阅读 · 0 评论 -
Java算法 数据结构 栈 队列 优先队列 比较器
ComparatorComparatorJava 提供了多种方式来实现比较器Comparator使用内置的Comparator方法(如等)。定制比较器,使用等进行多重排序。使用自定义Comparator对象来排序集合,如等。通过灵活地使用这些比较器,你可以对各种类型的对象进行多样化的排序。4o。原创 2025-01-13 19:22:23 · 1189 阅读 · 0 评论 -
Javase 复习 接口 Java8引入默认方法 Java21新特性
接口通过关键字interface方法声明:接口中定义的方法默认是public和abstract的,方法没有方法体。常量:接口中可以定义常量,常量默认是的。接口是 Java 中用于定义抽象行为的工具,它定义了类需要实现的方法。接口提供了多继承的功能,一个类可以实现多个接口。Java 8 引入了默认方法和静态方法,使得接口变得更加灵活,允许接口中包含方法的实现。接口常用于解耦、实现多态和回调机制,是面向对象设计中不可或缺的一部分。sealed和non-sealed。原创 2025-01-12 17:05:53 · 839 阅读 · 0 评论 -
Javase 复习 接口与抽象类的关系 代码示例
在 Java 中,接口定义了一组方法的契约,任何实现该接口的类都需要实现接口中的所有抽象方法(没有方法体的方法)。不过,Java 8 引入了。原创 2025-01-12 17:05:17 · 743 阅读 · 0 评论 -
Javase 基础复习 函数式接口 lambda表达式 方法应用
函数式接口:只有一个抽象方法的接口,能够接受 Lambda 表达式或者方法引用。Lambda 表达式:一种简洁的表示接口实现的方式,适用于函数式接口。方法引用:Lambda 表达式的简化版本,直接引用已有的方法,提升代码可读性。这些概念和特性是 Java 8 及以后的重要变化,它们帮助我们写出更简洁、更具表现力的代码。相似点:Lambda 表达式和方法引用都用于函数式接口,简化代码,提升代码的可读性和简洁性。不同点:Lambda 表达式更加灵活,可以处理更复杂的逻辑;原创 2025-01-12 16:21:41 · 602 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO 综合练习 利用糊涂包生成假数据 随机点名器 登录案例
保存格式为:username=zhangsan & password=123 & count=0;将正确的用户名和密码手动保存在本地的userinfo.txt文件中。比较用户录入的和正确的用户名密码是否一致。制造假数据也是开发中的一个能力。可以爬取开源中国的开源资讯。让用户键盘录入用户名和密码。利用了hutool工具包。求出每一个数据的权重占比。如果不一致则打印登录失败。如果一致则打印登录成功。原创 2024-07-12 11:06:42 · 96342 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO 工具包 Commons-io和Hutool 导架包
Commons-io是开源基金组织提供的一组有关io操作的开源工具包。导入架包后我们就可以正常使用里面的方法。作用:提高IO流的开发效率。在让框架包和项目产生关联。原创 2024-07-12 10:53:40 · 785 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO 压缩流 解压缩流
压缩包里面的每一个文件在java中都是一个ZipEntry对象。把每一个ZipEntry按照层级拷贝到另一个文件夹当中。原创 2024-07-12 10:49:18 · 96517 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO 打印流 字节打印流 字符打印流
字节打印流,特殊的打印流,系统中的标准输出流,是不能关闭的,在系统中是唯一的。开自动刷新后只要运行文件中的数据就能改变并立马显示出来。System.out就是获取了一个打印流的对象。我们每天都用的输出语句就使用到了打印流。开不开自动刷新都会直接写到目的地。平时我们是使用链式编程去写的。字节缓存流的底层没有缓冲区。这是由虚拟机自动创建的对象。常用的是能开启自动刷新的。静态变量可以用类名.调用。原创 2024-07-12 10:45:20 · 96192 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 序列化流 反序列化流
Java底层会根据类里面所有内容进行计算获取序列号。标记性接口 没有抽象方法 相当于一个物品的合格证。如果一个类实现了Serializable接口。序列化流把数据写到文件当中 让人无法修改。又可以把java中的对象写到本地文件当中。但是如果修改了JavaBean里面的代码。关键字 瞬态关键字 transient。可以把Java中的对象写到本地文件中。把序列化到本地文件中的对象再读回内存。可以把序列化到本地文件中的对象。代表这个类的对象是可以序列化的。所以我们要固定版本号。不想序列化到本地文件。原创 2024-07-11 12:55:05 · 96131 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO 练习读取多个对象
我们会把所有的对象先都放到集合里面去。用反序列流将文件中的数据读取出来。然后直接把数据读取到集合里面去。以后多个文件序列化到文件中时。用序列化流将对象写入文件。不知道写出了多少个对象。然后我们直接序列化集合。原创 2024-07-11 12:56:59 · 95721 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 转换流 练习
字节流在读取中文的时候,是会出现乱码的,但是字符流可以搞定。字节流里面是没有读一整行的方法的,只有字符缓冲流才能搞定。开发中如果用的JDK8也要掌握指定字符集读写数据的方法。将本地文件的GBK文件,转化成UTF-8。可以根据字符集一次读取多个字节。只是创建对象的时候稍微有点麻烦。是字符流和字节流之间的桥梁。这样读取数据就不会乱码了。原创 2024-07-11 12:50:12 · 96146 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流练习 拷贝文件 修改文本数据 软件运行次数
字符流字符缓冲流写代码是先整理整体思路 再写。输出流关联文件的时候(BufferWriter)如果文件存在就会清空请注意IO流是什么时候用什么时候创建什么时候不用,什么时候关闭原创 2024-07-11 12:38:06 · 96118 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流练习 字节缓冲流 字符缓冲流 底层原理
对四个基本流进行封装,添加了新的功能,叫做缓冲流。底层自带长度为8192的缓冲区。循环重复一直到读取完文件到末尾。默认的缓存区 长度为8192。内存中的读取速度是非常快的。刚刚学习的四个流是基本流。原创 2024-07-11 12:32:57 · 96837 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流练习 拷贝文件夹 文件加密 修改文件中的数据
字节流 拷贝任意类型的文件字符流 读取纯文本文件中的数据 往纯文本文件中写出数据则为1101110 100^10=110 110^10=100。如果一个数字异或另外一个数字两次,那么还是本0身。两边相同 false。原创 2024-07-10 13:45:43 · 96194 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流 字符输入输出流及底层原理
如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上所对应的字符。输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中。如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。默认也是一个字节一个字节读取,如果遇到中文就好一次读取多个。如果遇到中文就会一次读取多个字节 GBK一次两个字节。输入流 一次读一个字节 遇到中文时 一次读多个字节。输入流:一次读一个字节,遇到中文时,一次读多个字节。如果文件中的数据较少,那么有多少数据就读取多少数据。原创 2024-07-10 13:38:22 · 96724 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流 字符集 解码编码
国际标准字符集,将世界各种语言的每一个字符定义为一个唯一的代码。一个字节 八个比特 可以存256个数据 2的8次方为256。高位字节的二进制一定是1开头的 是为了和英文区分开。第一个字节叫高位字节 第二个字节叫低位字节。字节流读取中文会乱码,为什么拷贝不会乱码呢。中文:三个字节 而且第一个字节的首位是1。任意数据都是以二进制的形式来存储的。汉字两个字节存储 65536个字。字节是计算机中最小的存储单元。2.编码和解码的方式不统一。xxx的内容用二进制填补。不要用字节流读取文本文件。但是系统提示ANSI。原创 2024-07-10 13:31:53 · 96385 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 IO流 字节流详解 抛出异常
存储和读取数据的解决方案内存中数据不能永久化存储 程序停止运行 数据消失File只能对文件本身进行操作 不能读写文件里存储的数据读写数据必须要有IO流可以把程序中的数据保存到文件当中还可以把本地文件中的数据读取到数据当中。原创 2024-07-10 13:22:25 · 96606 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 Lambda表达式 2024年详解
简化匿名内部类的书写排序包装类数组改写匿名内部类代码实现函数式编程一种思想特点面向对象:先找对象,再去让对象做事情因为对于我们最重要的是方法里面的逻辑函数式编程忽略面向对象的复杂语法强调做什么,而不是谁去做Lambda是函数式编程的方法体现关注逻辑,而不是创建对象可以简化内部类书写不可以用在其他对方但只能简化函数式接口的匿名内部类的写法有且只有一个抽象方法的接口叫做函数式接口接口上方有注解 @FunciationInterface匿名内部类利用lambda表达式改写函数式接口原创 2024-07-05 14:31:26 · 95872 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 抽象类和接口 2024年详解
关键字interface 定义接口接口不能实例化,不能创建对象关键字implements 表示类与接口之间的实现关系public interface 接口名{}public class 类名 implements 接口名{}接口的子类 实现类1.要么重写接口中所有的抽象方法2.要么是抽象类。原创 2024-06-21 12:54:11 · 96590 阅读 · 0 评论 -
JavaSE 面向对象程序设计初级 静态static 包package 常量final 代码块 代码实操理论内存原理详解
包是文件夹,用来管理不同功能的java类,方便后期代码维护 分门归类包名规则:公司域名反写+包的作用,需要全部英文小写,见名知意使用同一个包中的类时,不需要导包。原创 2024-06-21 12:47:21 · 96901 阅读 · 0 评论 -
JavaSE 利用正则表达式进行本地和网络爬取数据(爬虫)
正则表达式的作用作用1:校验字符串是满足规则作用2:在一段文本中查找满足需要的内容。原创 2024-06-20 11:30:12 · 96693 阅读 · 0 评论 -
JavaSE 面向对象程序设计 正则表达式
正则表达式(Regular Expression,简称Regex)是用于匹配文本中模式的字符串表达式。它由普通字符(例如字母、数字)和特殊字符(称为元字符)组成,可以非常灵活地定义搜索模式。常见的一些正则表达式元字符包括:.:匹配任意单个字符,除了换行符 \n。*:匹配前面的字符零次或多次。+:匹配前面的字符一次或多次。?:匹配前面的字符零次或一次。^:匹配字符串的开始。$:匹配字符串的结束。\d:匹配任意一个数字字符,等价于 [0-9]。\w:匹配任意一个字母、数字或下划线字符,等价原创 2024-06-20 11:19:51 · 96531 阅读 · 0 评论 -
JavaSE 面向对象程序设计高级 方法引用 2024详解
在编程中,方法引用(Method Reference)是一种技术,它让你能够直接引用一个现有的函数或方法,而无需通过对象实例来调用。这种方法在函数式编程和高阶函数中非常有用,因为它提供了简洁的方式来传递函数行为,使代码更加灵活和可复用。以下是方法引用的一些特点和用法:直接引用:你可以创建一个方法引用,它直接指向某个类的静态方法或实例方法。例如,std::sort(myVector.begin(), myVector.end(), std::greater()) 中的 std::greate原创 2024-06-19 21:51:58 · 96355 阅读 · 0 评论 -
JavaSE 面向对象程序设计初级 2024方法变量封装javabean结合内存图详解
javaBean是什么JavaBean(是java类)是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,通过set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者原创 2024-06-19 08:55:11 · 97184 阅读 · 0 评论 -
JavaSE 面向对象程序设计进阶 继承和方法重写 2024理论与内存详解
面向对象三大特征:封装 继承 多态封装:对象代表什么,就封装对应的数据,并提供数据对应的行为,把零散的数据变成一个整体。原创 2024-06-18 09:49:47 · 96800 阅读 · 0 评论 -
JavaSE 面向对象程序设计 包装类 纯理论详解以及相关综合练习
基本数据类型对应的引用数据类型把基本数据类型变成对象创建对象后在栈内存里开辟空间在堆内存里开辟空间成员变量记录数值栈内存记录对象的地址包装类就是创建一个对象,对象记录相应的数据值用一个对象把数据包装起来。原创 2024-06-15 14:30:50 · 96057 阅读 · 0 评论 -
用多线程的知识使电脑宕机
我们先通过命令行窗口获取CPU的核心数CPU的核心数为CPU实际的物理核心数量 现在普遍的电脑都是16核拥有16个独立的运算单元我们用循环创建16个线程 进去占用这些运算单元执行占用CPU资源的代码就会使CPU的利用率达到100%我试了十几遍 总结概括就是无限接近于宕机但是不宕机勉强能操作 但是会一卡一卡的我电脑的snipaste就用不了了。原创 2024-03-30 21:33:51 · 102916 阅读 · 0 评论 -
多线程的等待唤醒机制的自我理解
我们假设有生产者和消费者用桌子上的共享数据控制线程的执行消费者先拿到CPU的执行权 就会wait生产者后拿到CPU的执行权 唤醒消费者生产者等待是因为没有消费者生产者先抢到CPU的执行权然后等待消费者然后消费者没有出现 生产者又抢到了CPU的执行权就会wait。原创 2024-03-29 20:47:21 · 103565 阅读 · 1 评论 -
Java 五种内部类演示及底层原理详解
在A类的内部定义B类,B类就被称为内部类发动机类单独存在没有意义 发动机为独立个体可以在外部其他类里创建内部类的对象去调用方法1.什么是内部类写在一个类里面的类叫做内部类2.什么时候用到内部类B类表示的事物是A类的一部分,且B单独存在没有意义比如汽车的发动机 ArrayList类的迭代器 人的心脏静态内部类只能访问外部类中的静态变量和静态方法如果想要访问非静态的需要创建对象只要是静态的东西都可以用类名.直接使用特殊的成员内部类 静态内部类创建静态内部类对象的方式如何调用静态内部类中的方法。原创 2024-05-28 13:16:36 · 103440 阅读 · 0 评论 -
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
java不会字符串即凉一半 学好字符串很重要API 为应用程序编程接口。字符串的存储原理直接赋值的字符串会复用字符串常量池中的new出来的字符串不会复用,而是开辟一个新空间字符串池Java字符串池(String Pool)是一个存储字符串的缓存区域,它位于堆内存中,用于提高字符串的使用效率和节约内存空间。在Java中,字符串属于不可变对象,即一旦创建就不能修改。因此,为了避免重复创建相同的字符串对象,Java提供了字符串池机制,将相同的字符串对象缓存到字符串池中,供后续使用。当需要创建新的字原创 2024-05-27 15:29:18 · 103257 阅读 · 0 评论 -
JavaSE 面向对象程序设计 文件File 介绍练习加千行代码详解
在Java中,File类是用于表示文件和目录路径的抽象。它提供了一组方法来创建、删除、重命名、检查文件/目录的存在性、以及查询文件/目录的属性等功能。File类可以用于执行文件系统操作,如创建新文件、删除文件、检查文件是否存在等。目的是把字符串先表示为路径然后转化成File对象去调用里面的方法通过父级路径和子级路径拼接的方法或者是\ 在Java里是转义字符字符串和文件拼接。原创 2024-05-27 14:43:24 · 103989 阅读 · 1 评论 -
JavaEE开发重中之重 异常 捕获并抛出异常 自定义异常 2024详解
根据不同的情况可以创建不同的异常对象自己写一个异常类定义异常类 类名要见名知意写继承关系空参构造带参构造 就是为了让控制台的报错信息更加见名知意 就是为了自定义异常的名字try {System.out.println("请录入名称");System.out.println("请录入年龄");//如果捕获到了异常,会进入catch()//如果所有数据都正确,那么会跳出循环break;System.out.println("输入的年龄不符合规范,请重新输入");原创 2024-05-13 12:08:45 · 103735 阅读 · 0 评论 -
JavaEE企业级开发中常用的Stream流
在Java编程中,Stream流是Java 8引入的一个重要概念,它提供了一种新的处理集合的方式,可以更加简洁、高效地进行数据操作。Stream流支持各种常见的操作,比如过滤、映射、排序、聚合等,同时也支持并行处理,可以充分利用多核处理器的性能优势。Stream流通常采用延迟执行的策略,即在调用流操作方法时,并不会立即执行,而是会生成一系列的中间操作对象,这些操作对象会按照声明的顺序组成一个流水线。只有在遇到终止操作时,才会触发实际的计算。中间操作可以是过滤、映射、排序等,而终止操作可以是收集结果、聚合操作原创 2024-05-09 12:53:07 · 103564 阅读 · 0 评论 -
JavaEE企业级开发中常用的JDK7和JDK8的时间类
全世界的时间有一个统一的计算标准在同一条经线上的时间是一样的格林威治时间 简称GMT计算核心 地球自转一天是24小时 太阳直射正好是12小时但是误差太大现在用原子钟来代替用铯原子震动的频率来计算时间,作为世界的标准时间UTC中国标准时间等于世界标准时间加8小时是JDK写好的一个javabean类,用来描述时间,精确到毫秒利用空参构造创建的对象,默认表示系统当前的时间利用有参构造创建的对象,表示指定的时间创建对象表示一个时间成员变量 fasttime 表示时间的毫秒值空参方法 调用system类下的方法。有参原创 2024-05-05 17:02:49 · 104973 阅读 · 1 评论