
java基础
文章平均质量分 79
码叔义
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)--轻量级的线程锁
是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为。原创 2025-04-02 17:00:40 · 298 阅读 · 0 评论 -
注解@Build的注解
在Java开发中,我们经常会遇到需要创建复杂对象的情况。传统的构造函数和setter方法有时显得繁琐且不直观。这时候,Lombok的@Builder注解无疑成为了我们的救星,简化了对象创建的过程。然而,正所谓"世上没有免费的午餐",在享受@Builder带来的便利时,我们也需要警惕那些潜藏的陷阱。今天,让我们一起揭开@Builder的神秘面纱,深入了解它的工作机制和常见问题,避免掉进那些意想不到的坑里。@Builder@ToString// 进行额外的初始化或验证AI写代码。原创 2025-03-27 15:35:40 · 1067 阅读 · 0 评论 -
Java中的JSONObject对象
当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程,再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。原创 2025-03-18 15:41:05 · 1239 阅读 · 0 评论 -
调度的概念
当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程,再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。原创 2025-03-16 23:14:55 · 782 阅读 · 0 评论 -
进程调度的几种方式与算法简介
若处理机正在执行第i级队列中的某个进程,此时又有新的进程进入优先级较高的队列[第1到(i-1)级的任意一级],则此时行进程将抢占正在运行的处理机,即由调度程序把正在运行的进程放回第i级队列末尾,把处理机分配给新到的更高优先级进程。①非剥夺(抢占)式优先级调度算法:当一个进程正在处理机上运行时,即使有某个更在重要或者紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于自身的原因而主动让出处理机时(任务完成或等待),才把处理机分配给更重要或紧迫的进程。在优先级越高的队列中,每个进程的运行时间片越小。原创 2025-03-16 23:13:27 · 727 阅读 · 0 评论 -
Java学习笔记10——静态内部类使用及意义
当我们创建一个静态内部类的对象时,并不需要先创建外部类的对象,与类中的静态成员的约定一样,在静态内部类中也不能访问外部类中的非静态成员,可以访问静态成员。(2)由于静态内部类具有这种独立性,所以可以实现一些有意思的功能,比如让接口中的静态内部类实现该接口,相当于接口自带了一个实现,任何需要该接口的地方都可以直接使用接口中的静态内部类的实现。(4)静态内部类与普通的内部类还有一个重要区别:普通的内部类中的成员不能声明为static,因此也就不能再有嵌套的静态内部类;原创 2025-03-14 13:58:06 · 877 阅读 · 0 评论 -
java8 .stream().anyMatch / allMatch / noneMatch用法
跟List接口中的 .size() 一样,返回的都是这个集合流的元素的长度,不同的是,流是集合的一个高级工厂,中间操作是工厂里的每一道工序,我们对这个流操作完成后,可以进行元素的数量的和;:与allMatch相反,判断条件里的元素,所有的都不是,返回true。:判断的条件里,任意一个元素成功,返回true。:判断条件里的元素,所有的都是,返回true。原创 2025-03-14 09:00:00 · 245 阅读 · 0 评论 -
java8 Duration、Period类 - 计算两个“时间”间隔、计算两个“日期”间隔
java8中引入了两个与日期相关的新类Period - 计算两个“日期”间隔的类Duration - 计算两个“时间”间隔的类Period 对应使用 LocalDate ,它们的作用范围域都是日期(年/月/日)Duration 对应使用 Instant、LocalTime、LocalDateTime,它们的作用范围域都是时间(天/时/分/秒/毫秒/纳秒)原创 2025-03-13 10:00:00 · 804 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDate 详解
在从日期获取任何字段之前,我们可以检查该字段是否受支持,否则我们可能会出错。检查是否支持给定的单位。在使用加减之前,我们可以检查是否支持给定的单位,否则我们可能会出错。给出LocalDate实例,该实例包含默认时区的系统时钟的当前日期。在当前日期的输出中,它是星期一。是一个不可变的类,它是对日期的描述,如生日。在上面的代码中,我们为年份设置了新的值。方法返回不包括给定日期的有序的日期流。我们获取从该日期开始到指定日期的日期流。在上面的例子中,我们在当前日期中增加了。在上面的例子中,我们在当前日期中减少了。原创 2025-03-13 09:00:00 · 2034 阅读 · 0 评论 -
Java入坑之类的派生与继承
1、成员变量不变,调用结果为父类的成员变量的值2、成员方法改变,调用结果为子类的成员方法的结果3、静态成员方法不变,调用的结果为父类的静态成员方法。原创 2025-03-12 11:13:12 · 970 阅读 · 0 评论 -
Spring的ReflectionUtils类常用方法学习笔记
ReflectionUtils是中非常实用的一个工具类,为开发人员提供了简便的反射操作方法,使得处理反射相关任务变得更加高效和便捷。原创 2025-03-12 11:30:00 · 940 阅读 · 0 评论 -
三目运算符详解
注意点:当三目表达式的结果给一个变量的时候,表达式1和表达式2为同一个结果类型。三目表达式可以嵌套使用,嵌套次数没有限制,但是不建议使用(因为结构体不清晰,代码的可读性降低)。如果条件表达式为false,就输出打印表达式2的内容。如果条件表达式为true,就输出打印表达式1的内容。案例(获取两个数字中的最大值)如果年龄小于18岁,输出未成年。如果年龄大于55岁,输出老年。原创 2025-03-11 09:45:26 · 447 阅读 · 0 评论 -
AES对称加密算法
AES是一种对称加密算法,它的相关概念在此不赘述。GCM ( Galois/Counter Mode) 指的是该对称加密采用Counter模式,并带有GMAC消息认证码。在详细介绍AES-GCM之前,我们先了解一些相关概念。下文中出现的符号:Ek使用秘钥k对输入做对称加密运算XOR异或运算Mh将输入与秘钥h在有限域GF(2^128)上做乘法。原创 2025-03-07 09:00:00 · 895 阅读 · 0 评论 -
java异常状态显示分类
普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常的信息。原创 2025-03-06 13:26:13 · 485 阅读 · 0 评论 -
圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准
圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。case1方法的圈复杂度为2,因此至少需要2个用例才能完全覆盖到其所有的可能情况。<3>Consolidate Duplicate Conditional Fragments (合并重复的条件)圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。原创 2025-03-05 17:34:50 · 294 阅读 · 0 评论 -
JDK自带的字符编码
JDK自带的字符编码。原创 2025-03-05 10:29:42 · 159 阅读 · 0 评论 -
slf4j和log4j的区别与使用
官网:https://www.slf4j.org/manual.html(1)简单日记门面(simple logging Facade for Java)SLF4J是为各种loging APIs提供一个简单统一的接口。(2)slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade。(3)在部署时,选择不同的日志系统包,即可自动转换到不同的日志系统上。原创 2025-03-04 18:11:54 · 1168 阅读 · 0 评论 -
Java防御性copy
总之,如果一个类有从它的客户端获取或返回的可变组件,那么这个类必须防御性地拷贝这些组件。如果拷贝的成本太高,并且类信任它的客户端不会不适当地修改组件,则可以用文档替换防御性拷贝,该文档概述了客户端不得修改受影响组件的责任。原创 2025-03-03 16:58:56 · 473 阅读 · 0 评论 -
一文涵盖java基础
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。原创 2025-02-25 17:59:16 · 674 阅读 · 0 评论 -
java基础知识之FileInputStream流
结合上面提到的源码我们可以发现,源码中的for循环,尽管len是10(数组长度),但是当i=5时,流中的字节已经读取完毕,指针移到文件的末尾,因此不会继续执行for循环。此时流中只剩余1个字节,根据API说明,读取数组长度(2)个字节到数组中,但接下来已经无法继续读取2个字节了, 是否就应该停止了?且读取到了文件的末尾,因此第4次执行的时候到int c=read()方法时就已经返回-1,并没有替换数组中的值了。实际过程中并未停止,而是进行了第三次读取,只读取了剩余1个字节,并顶替到了数组的0下标位置中。原创 2025-02-25 13:06:10 · 688 阅读 · 0 评论 -
findbugs-defines non-transient non-serializable instance field excelTempFileOutputStream
解决成员变量序列化的问题j。原创 2025-02-23 17:00:00 · 911 阅读 · 0 评论 -
transient关键字以及序列化和反序列化?
说实话学了一段时间java的朋友对于。原创 2025-02-23 11:30:00 · 615 阅读 · 0 评论 -
《Java 中的 SecureRandom 与 Random 深度解析:安全性、性能与应用场景》
对于性能优先、对安全性没有严格要求的场景,Random是首选。对于安全性至关重要的场景(如加密、身份认证),毫不犹豫地选择。原创 2025-02-22 11:30:00 · 901 阅读 · 0 评论 -
Java统计代码的执行时间的6种方法
前言:在日前开发中我们会遇到需要统计运行的时间但是又不想运用JMH测试框架,所以本文就汇总了一些比较常用的统计时间的测试方法,总共有6种,我做了一个大概的思维导图:Servlet的多重映射2 @WebServlet注解方原创 2024-05-09 00:15:33 · 1078 阅读 · 0 评论 -
Java基础_22线程死锁,object类下面线程方法,生产者消费者
如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。死锁是一种状态,当两个线程互相持有对方的资源的时候,却又不主动释放对方的资源。当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。总结:两个线程,其中一个线程 对象.wait()方法,那么这个线程就会阻塞。守护线程依附于非守护线程。一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。原创 2024-04-16 21:13:14 · 1074 阅读 · 0 评论 -
Java基础_21进程__线程【重点】
当使用多个线程来访问同一个数据时,将会导致数据不准确,相互之间产生冲突,非常容易出现线程安全问题,比如多个线程都在操作同一数据,都打算修改商品库存,这样就会导致数据不一致的问题。所以我们用同步机制来解决这些问题,加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。想办法解决,加同步锁,先讲了一个同步方法,发现一个线程进来以后,while循环是一个线程执行的。原创 2024-04-15 09:58:19 · 1756 阅读 · 0 评论 -
Java基础_20常用类相关的东西和枚举
回顾。原创 2024-04-14 11:02:25 · 598 阅读 · 0 评论 -
Java基础_19 IO流【重点】
需求: 从磁盘上面某一个1.txt文件,读取数据到内存 (使用的字节输入流)Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列。需求: c:/aaa/1.mp4 复制到 c:/bbb/2.mp4。可以将一个对象以一个字节序列的形式存到本地磁盘上面做持久化的操作!案例: 将一个字符串 我欲乘风归去 写入到c:/aaa/3.txt。图片 音频 视频 等都必须使用原始的字节流,无法使用字符流。需求: 将Java代码中某一个字符串数据写入到磁盘的4.txt。原创 2024-04-13 23:30:48 · 805 阅读 · 0 评论 -
Java基础_18File类【重点】_递归_IO流【重点】
只能借助于IO流操作,读取文件,图片,音频,视频等文件。获取当前文件夹下面所有的文件和文件夹的对象,返回值是File数组。案例: 从磁盘的C:/aaa/1.txt文件 将数据读取到Java代码中赋值给一个变量。获取当前文件夹下面所有的文件和文件夹的字符串。咱们电脑上面所有的文件(文本,图片,音频,视频)等都是可以进行读和写的!Io流在进行文件读和写的时候,其实是一字节一字节进行读和写的。File类sun公司封装好的一个类,专门处理磁盘的文件和文件夹的类。获取文件夹或者文件的名字。原创 2024-04-12 19:20:06 · 1918 阅读 · 0 评论 -
Java基础_17TreeSet和内部类和Map集合
刚才讲的是Integer和String类型存到TreeSet 没有报错,但是进行排序。在比较。这两个实现了一个接口叫Comparable接口,给类强加了整体的排序功能所以想要将Person类对象存到TreeSet要进行排序,在比较。实现Comparable接口将此对象与指定的对象进行比较以进行排序。返回一个负整数,零或正整数,因为该对象小于,等于或大于指定对象。有返回值的返回值是负数: person1小于person2 person1排在person2的前面。原创 2024-04-12 15:29:52 · 470 阅读 · 0 评论 -
Java基础_16LikedList[开发不用】_Object类_Set集合
/价格@Override//将name 和 price 两个值 进行hash计算变成一个具体的int类型的hahs@Override'}';System.out.println("phone1的hash值:" + phone1.hashCode());System.out.println("phone2的hash值:" + phone2.hashCode());Phone phone3 = new Phone("华为", 4567.2);原创 2024-04-11 16:17:12 · 631 阅读 · 0 评论 -
Java基础_15集合及其方法
学习Collection就是学习这个接口下面的方法,对象调用方法。List接口下面比Collection接口下面的方法更多!Collection 和List 我讲的都要记,明天默写! 2.数组封装的方法是比较少的。List是一个接口,是Collection的子接口。特征 List: 存的数据是有序的,可以重复的。真实的开发的时候,使用的是集合不是数组,为啥?集合和数组是一样的都是用来存储数据的!讲List下面的方法,只讲List独有的。 1.数组的容量是固定的。也是用来遍历数据的。原创 2024-04-11 09:06:09 · 498 阅读 · 0 评论 -
Java基础_14字符串的方法和权限修饰符__泛型【重点】
public 返回值类型 方法名字 (参数) {带有泛型的方案的语法格式public 返回值的类型 方法名字 (参数) {}无意义的占位符:可以是26个英文单词大写, 还可以是?开始中经常使用 T(Type) E(Element) K (key) V(value)?无参无返回值有参无返回值无参有返回值有参有返回值test(23);//T Intgertest("狗蛋");//T Stringtest('嘻');//泛型 代表各种类型的 广泛的类型。原创 2024-04-10 20:58:14 · 839 阅读 · 0 评论 -
Java基础_13多态、异常和String类
执行流程: 先看 try里面的代码 是否有异常,如果没有 直接跳过catch 接着执行代码。Exception: 异常 ,写Java代码的时候发生不可预期的效果。咱们可以在代码的异常处,抛出一个异常。它阻止了程序的正常的执行。以上的类是Java中专门处理Error和Exception的异常的类。同一个事件,在不同的对象操作事件的时候,会有不同的结果!Java代码的时候发生不可预期的效果。构造一个具有指定的详细消息的新的throwable。可以借助于Java封装好的异常的处理机制来解决。原创 2024-04-10 09:14:06 · 972 阅读 · 0 评论 -
Java基础_12接口【重点】和多态【重点】
5.自从jdk1.8之后,接口下面的方法有一些新的特性,方法可以带方法体只不过是默认(default修饰的)的方法,凡是带有方法体的方法,不需要必须重写的!//如果传的参数培根披萨就是生产培根披萨 如果传的是海鲜披萨就是生产的海鲜披萨。将子类的对象赋值给父类的引用。当不同的对象去完成时候,会产生不同的状态。方法的参数(形参)是父类的引用,但是调用方法的传的实参是 子类的真实对象。总的来说: 同一件事情,发生在不同的对象上面,会有不同的结果。咱们的电脑预留很多的接口,目的用来扩展硬件设备功能的。原创 2024-04-09 20:36:48 · 952 阅读 · 0 评论 -
Java基础_11方法的重载_super关键字_static关键字_final关键字_抽象类
在Java中,同一个类中有很多方法,方法的名字是可以一样的,但是参数列表不一样。1.如果一个类中有抽象的方法,那么这个类一定是抽象类。4.由于抽象类无法被实例化,咱们只能新建一个类去继承此抽象类,然后才能使用抽象类中的方法。在类中写了静态代码块,只要这个类被加载,静态代码块一定执行,早于对象创建。2.抽象的方法一定是没有方法体的方法,并且使用abstract修饰的。5.一定要重写抽象类中的抽象方法。但是在继承的时候在非抽象的类中一定要重写抽象方法的。足够的信息描述一个对象的时候,那么这个类就是抽象类。原创 2024-04-09 09:17:05 · 716 阅读 · 0 评论 -
Java基础_10类对象作为方法的参数和另外一个类的属性_继承
重写的目的: 子类是可以继承父类的非私有化的方法,但是有的时候,父类的方法满足不了子类的需求。重写的目的: 子类是可以继承父类的非私有化的方法,但是有的时候,父类的方法满足不了子类的需求。 2.子类有无参的构造方法,那么父类也必须有无参构造方法,不然编译不通过。 1.先执行父类的构造方法,然后再执行子类的额构造方法。 1.公开的和默认的成员变量,子类是可以通过继承使用的。 1.公开的和默认的成员方法,子类是可以通过继承使用的。 2.私有的成员方法,子类是无法使用的。原创 2024-04-08 20:40:26 · 783 阅读 · 0 评论 -
Java基础_09局部变量和成员变量_程序封装【重点】
声明一个Cat类,属性 name age sex weight 属性是private修饰的 对属性进行赋值和取值。 在整这个类中要书写有参构造,通过有参构造进行赋值 在main主函数中取值。 对属性的封装 对方法的封装 对类的封装 等。1.在属性的前面加上private 修饰符。对属性进行赋值,然后再取值。定以在实体类中的大括号后面 咱们的属性。 set方法是对属性赋值的方法。 get方法是对属性取值的方法。今天主要讲对属性的封装。原创 2024-04-08 10:40:10 · 333 阅读 · 0 评论 -
Java基础_8类-对象-构造方法【重点】
咱们上节课已经写过一个狗类,然后通过这个狗类创建(实例化)一个对象。但是类是用衍生出来对象的。 面向过程: 写的冒泡排序 选择排序都是面向过程。对象: 就是一个具体的实体。构造i代码块:也是对对象进行初始化的,功能和构造方法是一样的。但是大家想一个问题?类: 是对一起相似事物的统称。 构造方法: 无参构造方法和有参构造。无参和有参构造方法(对属性进行赋值) 可以用来描述事物的特征和行为。进行赋值,然后对象调用方法!构造方法是用来初始化对象的!无参构造方法和有参构造方法。原创 2024-04-07 18:52:33 · 408 阅读 · 0 评论