- 博客(228)
- 收藏
- 关注
原创 JavaIO之IO常见类使用
ArrayList 中存储数据的数组 elementData 是用 transient 修饰的,因为这个数组是动态扩展的,并不是所有的空间都被使用,因此就不需要所有的内容都被序列化。通过重写序列化和反序列化方法,使得可以只序列化数组中有内容的那部分数据。序列化的类需要实现 Serializable 接口,它只是一个标准,没有任何方法需要实现,但是如果不去实现它的话而进行序列化,会抛出异常。不会对静态变量进行序列化,因为序列化只是保存对象的状态,静态变量属于类的状态。DatagramSocket: 通信类。
2025-03-26 11:32:02
12
原创 JavaIO之IO源码:OutputStream
对比下JDK8中,close方法是没有加锁处理的。这种情况下你可以看JDK8源码中,直接利用java7的try with resources方式,优雅的调用flush方法后对out进行关闭。补充下JDK11为什么会增加nullOutputStream方法的设计?梳理部分OutputStream及其实现类的源码分析。ByteArrayOutputStream 源码如下。BufferedOutputStream 源码如下。FilterOutputStream 源码如下。
2025-03-26 10:28:17
10
原创 JavaIO之IO源码:InputStream
类 java.io.InputStream 中增加了新的方法来读取和复制 InputStream 中包含的数据。的, 而readNbytes(s,0,10)会一直(while循环)查找直到stream尾为止,并返回。:读取 InputStream 中的全部字节并写入到指定的 OutputStream 中。read(byte[], int, int)是尝试读到最多len个bytes,但是。: 从 InputStream 中读取指定数量的字节到数组中。:读取 InputStream 中的所有剩余字节。
2025-03-26 10:25:35
90
原创 JavaIO之IO流基础概述
I/O:是的缩写,指的是某个设备或环境进行数据的输入和输出,java将输入输出问题(如:读写文件,网络传输等)抽象成流对象(Stream)来解决Java环境<=>某个设备或环境数据<=>文本、图片、音频、视频等输入和输出<=>读取文件就是输入,写入文件就是输出Java.io包下提供了各种流的类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出Java中IO流使用了一种。
2025-03-26 10:20:22
16
原创 JDK24更新了,更新内容给你们全部放在这里了
JDK22的JEP463又作为第二次的预览,JDK23的JEP477作为第三次预览,本次作为第四次预览版,其中main方法选择的优先顺序是static的优于非static的,其次是有args的优于没有args的。去年浅浅尝试了一波JDK21,今年刚开始就已经到JDK24了,不得不感慨Java的发展速度已经让我们跟不上了,甚至还有人戏谑称:“它发任它发,我用Java8”,但是作为开发人员,就算你不用,也得知道它做了什么,才能让自己不会被out。:永久禁用安全管理器,简化安全模型,减少相关复杂性。
2025-03-23 23:20:10
1011
原创 序列化和反序列化
ObjectOutputStream 类用来序列化一个对象,如下的 SerializeDemo 例子实例化了一个 Employee 对象,并将该对象序列化到一个文件中。类 ObjectInputStream 和 ObjectOutputStream 是高层次的数据流,它们包含反序列化和序列化对象的方法。该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的(transient)。当序列化一个对象到文件时, 按照 Java 的标准约定是给文件一个 .ser 扩展名。
2025-03-17 17:04:40
380
原创 集合--Map系列之冷门Map(WeakHashMap和IdentityHashMap)
适合生命周期短暂且需自动清理的场景,如缓存、临时数据存储。需注意避免值对象间接引用键。用于严格区分对象实例的场景,如框架中的元数据管理。避免滥用,优先考虑HashMap。
2025-03-17 16:34:40
25
原创 集合--Map系列之EnumMap
EnumMap是Java集合框架中针对枚举类型作为Key设计的高效映射容器,通过结合枚举天然特性(例如:固定的实例集合、有序性)实现比HashMap更优的性能和内存利用率核心定位:类型安全:键严格限定为同一枚举类型空间紧凑:底层基于数组存储,无hash冲突性能卓越:操作时间复杂度接近O(1)//创建枚举集合对象--将枚举类加载到EnumMap集合 em.put(Season.Spring,"春暖花开");em.put(Season.Summer,"夏日炎炎");
2025-03-17 16:30:21
24
原创 集合--Map系列之LinkedHashMap
LinkedHashMap是HashMap的子类,并在HashMap的基础上引入了双向链表来维护键值对的插入顺序或访问顺序。与普通的HashMap不同,LinkedHashMap能够记住元素的插入顺序或访问顺序。
2025-03-17 16:18:10
11
原创 第一个Java程序
了解了Java运行机制,如果是刚入门,必然是一知半解,但是Java运行机制我更建议是先了解,等读完Java入门这一整篇内容后再回过头复习必然是对你的成长大有裨益。
2025-03-07 11:06:05
365
原创 Linux安装配置Java
上传到linux服务器上【这篇主要是Java安装教程,所以不会把上传的方式一一说明,本文是通过WSL虚拟服务器演示】博主正在更新Java全栈知识体系,有兴趣可以关注博主微信公众号,搜索“爱编程的杰尼龟”或扫描下方二维码。首先是将其放置在一个合适的位置,这个位置自己决定,目前我是放在/user/local目录下进行演示的。rpm和yum方式都无需配置环境变量,所以主要以tar包的方式来写这一篇安装教程。安装部署linux版本的JDK,方式有三种:rpm、yum和tar包的方式。手动配置Java环境变量。
2025-03-07 10:16:57
241
原创 Windows安装配置Java
当然,现在的开发工具已经支持指定JDK版本,所以不用担心。原先的JDK8在调整安装目录那一步,提供了选择安装内容的功能,在JDK11的版本之后都取消了。如果不想下载这最新的版本,就要切换到Java archive,选择你所需要的版本即可。打开Java下载官网地址,以JDK21的exec为例,如下图所示。调整安装目录(看自己喜好),无需调整或已经调整点击“下一步”并且现在的JDK版本安装之后,无需进行环境变量配置,即可食用。即使先前用的版本是8,安装完成之后也会使用JDK21版本哦!
2025-03-07 10:11:31
78
原创 SpringBoot配置热部署Dev-tools
热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。热部署在服务器运行时重新部署项目它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。热加载在运行时重新加载class,从而升级应用。热加载的实现原理主要依赖类加载器子系统。
2024-12-12 20:30:01
1927
原创 SpringBoot配置文件详解
在官网中描述了配置文件的一些常用参数,例如日志logging、spring的应用配置,如应用名称、编码格式、本地资源等的配置文件和的配置文件,以及的配置文件,其参数都是一样的,这些参数实质上都是来自于各种jar包中的一些参数,因此只要依赖的jar包不变,配置文件类型再怎么变都是那么几个参数以application.yml文件作为示例,配置SpringBoot服务启动的端口application.properties文件示例实际项目中更多使用yml文件,原因是application.properties结
2024-12-12 20:24:22
441
原创 高级系统架构设计师-数据库系统-数据库设计
例1:在数据库系统中,数据库的视图、基本表和存储文件的结构分别与()对应;A. 模式、外模式、内模式 B. 模式、内模式、外模式。C. 外模式、模式、内模式 D. 外模式、内模式、模式。B. 外模式与内模式之间的映像、外模式与模式之间的映像。D. 外模式与内模式之间的映像、模式与内模式之间的映像。A. 模式与内模式之间的映像、外模式与模式之间的映像。C. 外模式与模式之间的映像、模式与内模式之间的映像。视图对应外模式,基本表对应模式,存储文件对应内模式。
2024-12-12 20:17:22
44
原创 Spring Initializr模块
在Spring Boot中,BOM是一种特殊的 POM ,用于控制项目依赖项的版本。Spring Initializr是一个基于网络的工具,借助Spring Initializr可以轻松生成SpringBoot项目的结构,并提供了用于创建JVM的项目的可扩展API。在软件世界之外, BOM 是创建产品所需的零件,项目,组件和其他材料的列表。initializr-actuator:它提供有关项目生成的其他信息和统计信息。initializr-generator-test:它提供了用于项目生成的测试基础结构。
2024-12-12 20:17:08
378
原创 高级系统架构设计师-数据库系统-三级模式两级映像
当数据库的物理存储方式发生改变(如:更换存储设备、优化存储布局等)时,只要保持概念模式到内模式的映射不变,用户的应用程序和逻辑数据结构不受映像,从而实现了。:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。当概念模式发生变化(如新增表、修改表结构等)时,只要相应的外模式映射得到调整,用户的应用程序通常无需改动,从而实现了。:是表和视图之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。
2024-12-11 20:23:51
61
原创 高级系统架构设计师-数据库系统-数据库
是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。:系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA。:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。:是长期存储的计算机内、有组织的、可共享的大量数据的集合。:统一管理、长期存储在计算机内的,有组织的相关数据的集合。:是数据库中存储的基本对象,是描述事物的符号记录。实现对共享数据有效的组织、管理和存取。
2024-12-11 20:22:28
25
原创 高级系统架构设计师-计算机系统基础知识-文件管理
文件是具有符号名的、逻辑上具有完整意义的一组相关信息项的集合信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录一个文件包括文件体和文件说明文件管理系统是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件结构。文件系统的功能:按名存取统一的用户接口并发访问和控制安全性控制优化性能差错恢复文件的类型:按文件性质和用途可将文件分为系统文件、库文件和用户文件按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。
2024-12-11 17:18:57
45
原创 高级系统架构设计师-计算机系统基础知识-设备管理
设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。在计算机系统中,将负责管理设备的输入/输出的结构称为IO系统。IO系统由设备、控制器、通道、总线和IO软件组成。按数据组织分类:块设备、字符设备按设备功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备资源分配角度分类:独占设备、共享设备、虚拟设备数据传输速率分类:低速设备、中速设备、高速设备设备管理的任务。
2024-12-11 17:16:47
28
原创 高级系统架构设计师-计算机系统基础知识-存储管理
考试真题2【考点:页面置换】:某个进程有4个页面,页号为0~3,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给该进程分配了3个存储块,当访问前页面1不在内存时,淘汰表中页号位()的页面代价最小。根据题中给出:当访问前页面1不在内存时,需要读取页面1的数据,此时系统中只有3个存储块,需要淘汰一个页面,才能读取页面1,此时淘汰哪个页面代价最小。慢表是将页表存于内存中。段表与页表的内容不同,页表中直接是逻辑页号对应的物理块号,而段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。
2024-12-11 17:13:43
55
原创 高级系统架构设计师-计算机系统基础知识-进程管理
e和f处分别填(3)。生产一个商品S,首先需要获取仓库的独立使用权,然后判断仓库中空闲个数,如果有空闲数,则将商品放入仓库中,如果没有,则阻塞;消费者首先会申请仓库的独立使用权,然后判断仓库中商品的个数,如果有商品,则取出一个商品,如果没有,则阻塞;P5执行完后会释放资源,此时R1剩余3个资源,R2剩余1个资源,R3剩余1个资源,因此P2和P3都可以顺利申请资源达到最大需求量。按照选项B,P2优先执行,则释放资源后,R1剩余5个资源,R2剩余2个资源,R3剩余1个资源,因此P1、P3、P4都可以顺利执行。
2024-12-11 17:03:32
44
原创 高级系统架构设计师-计算机系统基础知识-计算机软件
操作系统:能有效地组织和管理系统中的各种软硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口操作系统的三个重要作用:管理计算机中运行的程序和分配各种软硬件资源为用户提供友善的人机界面为应用程序的开发和运行提供一个高效率的平台并发性、共享性、虚拟性和不确定性(异步性)进程管理:实质上是对处理器的执行时间进行管理,采用多道程序等技术将CPU的时间进行合理的分配,主要包括进程控制、进程同步、进程通信和进程调度文件管理。
2024-12-11 16:56:20
38
原创 高级系统架构设计师-计算机系统基础知识-总线结构
外部总线:设备一级的总线、微机和外部设备的总线。代表有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。它的一个重要特征是:由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。系统总线:是板级总线,用于计算机内各个部分之间的连接,具体分为。从广义上:任何连接两个以上电子元器件的导线都可以称为总线。内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。代表的有ISA总线、EISA总线、PCI总线。【千万不要答内部总线、系统总线和外部总线】
2024-12-11 16:40:59
39
原创 高级系统架构设计师-计算机系统基础知识-输入输出技术
DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通道,效率很高。缺点:整个地址空间被分成两个部分,其中一部分分配给接口使用,剩余的为内存所用,经常会导致。程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。,大大增强了对接口的操作功能,而且在指令上不再区分内存或接口指令。中断处理时间是指从中断处理开始到中断处理结束。多级中断嵌套,使用堆栈来保护断点和现场。,即内存单元和接口共用地址空间。
2024-12-11 16:37:27
33
原创 高级系统架构设计师-计算机系统基础知识-指令系统和存储系统
由于R0读取时间为3ms,而处理时,R1读取完成后,缓冲区并没有释放,此时磁头已经移动到R2的开始处(即每次读取时间+等待时间就会跳过一个逻辑记录Rx),但是按照条件必须按照顺序执行,即R0执行完成后,需要等待一个周期才能执行R1。磁头首先要寻找对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读到对应的数据,因此,会产生寻道时间和等待时间。例1:对于一个k段流水线,假设其各段的执行时间均相等(设为t),输入到流水线中的任务是连续的理想情况下,完成n个连续任务需要的总时间是多少?
2024-12-11 16:34:21
42
原创 高级软件架构设计师-计算机系统基础知识-校验码
G(x)的阶为4,则除数的位数为4+1=5,G(x)中x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,则得到串:10011(除数):编码中含有奇数个1,发送方发送编码给接收方,接收方收到后,计算收到的编码中1的个数,如果是奇数则校验通过,是偶数则校验失败。:编码中含有偶数个1,发送方发送编码给接收方,接收方收到后,计算收到的编码中1的个数,如果是偶数则校验通过,是奇数则校验失败。由多项式得到除数,除数的位数为多项式x的最高次幂加一,多项中x的幂指数存在的位置值为1,不存在的位置值为0。
2024-12-11 16:29:29
548
原创 高级系统架构设计师-计算机系统基础知识
计算机系统(Computer System)是指用于数据管理的计算机硬件、软件及网络组成的系统。指令系统:指令操作数寻址方式、CISC和RISC、指令流水线的计算。存储系统:分级存储、局部性原理、cache、主存编址计算、磁盘。计算机系统可划分为硬件(子系统)和软件(子系统)两部分。硬件:由机械、电子元器件、磁介质和光介质等物理实体构成。校验码:奇偶校验码、CRC校验码、海明校验码。输入输出技术:程序查询方式、中断方式、DMA。计算机硬件组成、运算器、控制器。
2024-12-11 16:27:38
47
原创 系统软件架构设计师-计算机系统基础知识-计算机硬件
指令部件通过MMU-Cache的存储结构,从内存等存储设备中取得相应的软件代码指令并完成译码和控制操作,控制存取部件从存储设备中取的新的数据。:一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。:CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格的控制。控制器是CPU的核心,控制器用于控制操作的执行流程和时序,运算器则加工处理程序中的数据。数据处理属于运算器。
2024-12-11 15:56:56
44
原创 第三方jar包对象注入到Bean容器
第三方jar包的对象往往都不会自带@Service、@Component或者其他,但是我们需要让这些对象启动时就注入到Spring容器中,这就需要使用@Bean注解来实现。如果方法的内部需要使用ioc容器中已经存在的Bean对象,只需要在方法中指定入参即可,Spring会自动注入。思考:当配置类多的时候,SpringBoot既然是为了解决项目臃肿问题,是否有更好的方式来优雅的实现。在Spring的启动类上添加@Import注解,可以指定配置类加载到Spring容器中。
2024-08-08 20:59:58
318
原创 SpringBoot的基本概念和使用
Spring框架的特点Spring框架降低了组件之间的耦合性;提供了众多服务、事务管理、WS等;支持面向切面编程;对主流框架提供了很好的集成与支持;代码污染极低;Spring的高度可开放性,使得开发者并不强制依赖于Spring,可以自由选择Spring的部分或全部Spring具有众多优点,为什么还要开发SpringBoot?Spring项目组件代码是轻量级,但是配置却是重量级的,从XML慢慢到注解的方式,再从Spring3.0开始引入的Java的配置来代替xml,所有的配置都会带来开发时间的损耗除此之外,项
2024-07-15 09:03:24
808
原创 Mybatis详解
类类型的处理器,需要一个能够接受该类的class作为参数的构造器,这样Mybatis会在构造一个类型处理器实例的时候传入一个具体的类。...
2024-06-28 18:11:00
941
原创 SpringMVC
MVC是一种软件架构的设计规范,将软件按照、、来划分M:Model,模型层,指工程中的JavaBean[1],作用是处理数据V:View,视图层,指工程中的Html或Jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的Servlet,作用是接收请求和响应浏览器MVC的工作流程:用户通过View层发送请求到服务器,在服务器中请求被Controller层接收,Controller层调用响应的Model层处理,处理完毕后将结果返回到Controller层,Controller层
2024-06-18 15:37:37
1193
原创 SpringMVC的DispatcherServlet处理请求的过程
我们以上个demo中这个GET请求为例,请求URL是http://localhost:8080/011_spring_framework_demo_springmvc_war_exploded/user。然后执行invokeHandlerMethod这个方法,用来对RequestMapping(usercontroller中的list方法)进行处理。我们知道servlet处理get请求是doGet方法,所以我们去找DispatcherServlet类结构中的doGet方法。执行后获得视图和Model。
2024-06-18 15:37:11
426
原创 SpringMVC的DispatcherServlet初始化过程
DispatcherServlet作为一个Servlet,需要根据Servlet规范使用Java配置或web.xml声明和映射。DispatcherServlet会根据Spring的配置来发现请求映射、视图解析、异常处理等所需的委托组件。
2024-06-18 15:33:25
1538
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人