Java基础及进阶

JAVA特性

基础语法

一、Java程序的命令行工具

在这里插入图片描述

二、final、finally、finalize

在这里插入图片描述

三、继承

在这里插入图片描述

class 父类 {
//代码
}class 子类 extends 父类 {
//代码
}

四、Vector、ArrayList、LinkedList

五、原始数据类型和包装类

在这里插入图片描述

六、接口和抽象类

在这里插入图片描述

JAVA进阶

Java引用队列

在这里插入图片描述

Object counter = new Object();
ReferenceQueue refQueue = new ReferenceQueue<>();
PhantomReference<Object> p = new PhantomReference<>(counter, refQueue);
counter = null;
System.gc();
try {// Remove是一个阻塞方法,可以指定timeout,或者选择一直阻塞Reference<Object> ref = refQueue.remove(1000L);if (ref != null) {// do something}
} catch (InterruptedException e) {// Handle it
}

七、JAVA IO

三种IO方式

java.io包

也叫BIO。它基于流模型实现,在进行读取输入流或者写入输出流操作时,读、写动作完成之前,线程会一直阻塞,它们之间的调用是可靠的线性顺序优点是代码比较简单、直观,缺点是IO 效率和扩展性存在局限性。

java.nio包

NIO 框架,提供了 Channel、Selector、Buffer 等新的抽象。它可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层的高性能数据操作方式。

NIO2

也叫AIO(Asynchronous IO),它是NIO的进一步改进,引入了异步非阻塞 IO 方式。异步 IO 操作基于事件和回调机制,应用操作直接返回,而不会阻塞在那里,当后台处理完成,操作系统会通知相应线程进行后续工作。

IO 工具类

File

这里是引用

RandomAccessFile

这里是引用

字节流

InputStream和OutputStream。
字符流
Reader和Writer。
补充知识点
Closeable 接口:

try-with-resources、 try-finally

Cleaner 或 finalize 机制:资源释放的最后把关

在这里插入图片描述

NIO
1.主要组成

主要由Buffer、Channel、Selector、Charset四部分组成。

Buffer(缓冲区):

NIO 中,数据都是通过 Buffer 处理的; 除了布尔类型,所有原始数据类型都有相应的 Buffer 实现( ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer 和 DoubleBuffer)。

Buffer详细介绍:

Buffer的几个基本属性:capacity、position、limit、mark。

capacity:	Buffer的大小,即数组的长度。
position:要操作的数据的起始位置。
limit:操作的限额。(注意,在读取和写入时,limit的意义是不同的)
mark:记录上一次position的位置,但不是必须的。(默认是0)

Channel(通道):

NIO 中被用来支持批量式 IO 操作的一种抽象,可以进行异步的 IO 操作。
常见的 Channel 类有 FileChannel、SocketChannel、ServerSocketChannel 和 DatagramChannel。

Selector(选择器):

Selector 可以用来实现 Reactor 模式,用于监听多个 Channel 的事件。因此,可以检测到注册在 Selector 上的多个 Channel 中,是否有 Channel 处于就绪状态,实现了单线程对多 Channel 的高效管理,是javaNIO 实现多路复用的基础

Charset:

提供 Unicode 字符串定义。

2.NIO的核心

Buffer 和 Channel 之间的交互:数据可以从 Channel 读取到 Buffer 中,也可以从 Buffer 写入到 Channel 中。

3.NIO的优点

NIO通过高效地定位就绪的 Channel,高效分配任务。仅select 时是阻塞的,所以可以避免大量客户端连接时,频繁切换线程。因此,应用的扩展性有了非常大的提高。

在这里插入图片描述

异常处理时的基本原则

在这里插入图片描述

补充概念

同步或异步(synchronous/asynchronous)

同步:当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步。

异步:其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系

阻塞与非阻塞(blocking/non-blocking)

阻塞状态:无法从事其他任务,只有当条件就绪才能继续。

非阻塞:不管 IO 操作是否结束,直接返回,相应操作在后台继续处理。

序列化(Serialization)

这里是引用

补充知识点

不能一概而论认为同步或阻塞就是低效。

网络编程中,比如 Socket 通信,都是典型的 IO 操作目标

在这里插入图片描述

补充

FileSystemProvider
两种特别的Buffer:Direct Buffer和MappedByteBuffer

DirectBuffer:

DirectBuffer是ByteBuffer的一种特殊形式,用于在堆外(Off-heap)内存中存储数据。

DirectBuffer创建方法:

调用ByteBuffer的allocateDirect()方法来创建。(不是使用传统的allocate()方法)

DirectBuffer的主要特点:

特点内容
直接访问因为内存是在堆外分配的,所以DirectBuffer对象可以通过JNI(Java Native Interface)直接访问,从而避免了在Java堆和本机堆之间来回复制数据的开销
堆外内存存储DirectBuffer对象分配的内存不在Java虚拟机的堆中,而是直接在操作系统的本机内存中分配的
性能优化DirectBuffer适用于需要频繁访问大量数据或需要与本地(native)代码进行交互的场景,它们可以显著提高数据访问和操作的效率,因为避免了额外的内存拷贝。

DirectBuffer的使用需要注意:

  • 它们的创建和销毁通常比普通的堆上的ByteBuffer更昂贵,因为涉及到操作系统的本机内存管理。
  • 对于小数据量的操作,并不一定比普通的堆上操作性能更好,甚至可能更差,因为操作系统在小块内存分配和释放上的开销相对较大。

垃圾收集方面的特殊性。

Buffer的基本操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL行级安全策略探究

前言 最近和朋友讨论oracle行级安全策略(VPD)时&#xff0c;查看了下官方文档&#xff0c;看起来VPD的原理是针对应用了Oracle行级安全策略的表、视图或同义词发出的 SQL 语句动态添加where子句。通俗理解就是将行级安全策略动态添加为where 条件。那么PG中的行级安全策略是怎…

使用UDP通信接收与发送Mavlink2.0协议心跳包完整示例

1.克隆mavlink源码 https://github.com/mavlink/mavlink.git 2.进入mavlink目录,安装依赖 python3 -m pip install -r pymavlink/requirements.txt 3.生成Mavlink的C头文件 mavlink % python3 -m pymavlink.tools.mavgen --lang=C --wire-protocol=2.0 --output=generated…

1-5岁幼儿胼胝体的表面形态测量

摘要 胼胝体(CC)是大脑中的一个大型白质纤维束&#xff0c;它参与各种认知、感觉和运动过程。尽管CC与多种发育和精神疾病有关&#xff0c;但关于这一结构的正常发育(特别是在幼儿阶段)还有很多待解开的谜团。虽然早期文献中报道了性别二态性&#xff0c;但这些研究的观察结果…

【Linux网络】select{理解认识select/select与多线程多进程/认识select函数/使用select开发并发echo服务器}

文章目录 0.理解/认识回顾回调函数select/pollread与直接使用 read 的效率差异 1.认识selectselect/多线程&#xff08;Multi-threading&#xff09;/多进程&#xff08;Multi-processing&#xff09;select函数socket就绪条件select的特点总结 2.select下echo服务器封装套接字…

C++ 类和对象 赋值运算符重载

前言&#xff1a; 在上文我们知道数据类型分为自定义类型和内置类型&#xff0c;当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的&#xff0c;那我想给类比较大小那该怎么办呢&#xff1f;这时候运算符重载就出现了 一 运算符重载概念&…

安全防御:防火墙基本模块

目录 一、接口 1.1 物理接口 1.2 虚拟接口 二、区域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路检测模式 3.4 混合模式 四、安全策略 五、防火墙的状态检测和会话表技术 一、接口 1.1 物理接口 三层口 --- 可以配置IP地址的接口 二层口&#xff1a; 普通二层…

车载终端_RTK定位|4路摄像头|驾驶辅助系统ADAS定制方案

现代车辆管理行业的发展趋势逐渐向智能化和高效化方向发展&#xff0c;车载终端成为关键的工具之一。在这个背景下&#xff0c;一款特别为车队管理行业设计的车载终端应运而生。该车载终端采用8寸多点触控电容屏&#xff0c;搭载联发科四核处理器&#xff0c;主频2.0GHz&#x…

如何安装node.js

Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。 主要特点和优势&#xff1a; 非阻塞 I/O 和事件驱动&#xff1a;能够高效处理大量并发连接&#xff0c;非常适合构建高并发的网络应用&#xff0c;如 Web 服务器、实时聊天应用等。 例如&#xff0c;在…

网络安全——防御(防火墙)带宽以及双机热备实验

12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区上网用户限制流量不超过100M&#xff0c;其中销售部人员在其…

排序相关算法--3.选择排序

之前涉及的堆排序就是选择排序的一种&#xff0c;先进行选择。 基本选择排序&#xff1a; 最简单&#xff0c;也是最没用的排序算法&#xff0c;时间复杂度高并且还是不稳定的排序方法&#xff0c;项目中很少会用。 过程&#xff1a; 在一个长度为 N 的无序数组中&#xff0c;…

智慧公厕系统助力城市卫生管理

在当今快速发展的城市环境中&#xff0c;城市卫生管理面临着诸多挑战。其中&#xff0c;公共厕所的管理一直是一个重要但又常被忽视的环节。然而&#xff0c;随着科技的不断进步&#xff0c;智慧公厕系统的出现为城市卫生管理带来了全新的解决方案&#xff0c;成为提升城市品质…

OrangePi AIpro 浅上手

OrangePi AIpro 浅上手 OrangePi AIpro 介绍开发版介绍硬件规格顶层视图和底层视图接口详情图 玩转 OrangePi AIPro烧录镜像串口调试连接 WiFissh 连接配置下载源 使用感受优点&#xff1a;缺点或需注意的点&#xff1a; OrangePi AIpro 介绍 开发版介绍 OrangePi AIpro是香橙…

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU&#xff0c;算力和效果较差) 2.GPU模式&#xff08;需要有NVIDIA显卡支持&#xff09; Ollama网络配置 Ollama前…

【问卷系统】TDucKX更新速览

TDuck是一款在线表单问卷收集工具&#xff0c;开源地址&#xff1a;https://gitee.com/TDuckApp一款免费的表单问卷系统&#xff1b;可快速创建问卷或业务表单&#xff0c;采用无代码理念支持开发自定义组件。采用SpringBootVueElementUI技术栈&#xff0c;功能强大界面清新&am…

Catena-x标准解读:CX-0007 Minimal Data Provider Service Offering v1.0.2 最小数据提供商服务产品

为了更好地理解&#xff0c;最小数据提供者服务也将被称为“上传工具”。 对于数据供应工具来说&#xff0c;数据主权的概念尤为重要。数据主权是Catena-X网络的核心价值观之一。每个参与者都应该尽可能多地控制自己的数据。这包括 他总是确切地知道他在与谁交换数据。参与者…

软件测试面试200问(全)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xff0…

【matlab】智能优化算法优化BP神经网络

目录 引言 一、BP神经网络简介 二、智能优化算法概述 三、智能优化算法优化BP神经网络的方法 四、蜣螂优化算法案例 1、算法来源 2、算法描述 3、算法性能 结果仿真 代码实现 引言 智能优化算法优化BP神经网络是一个重要的研究领域&#xff0c;旨在通过智能算法提高…

变量筛选—特征包含信息量

在变量筛选中,通过衡量特征所包含信息量大小,决定是否删除特征,常用的指标有单一值占比、缺失值占比和方差值大小。单一值或缺失值占比越高,表示特征包含信息量越少,不同公司设置不同阈值,一般单一值、缺失值占比高于95%,建议删除。方差值越小,代表特征包含信息量越小。…

入职前回顾一下git-01

git安装 Linux上安装git 在linux上建议用二进制的方式来安装git&#xff0c;可以使用发行版包含的基础软件包管理工具来安装。 红帽系 sudo yum install gitDebian系 sudo apt install gitWindows上安装git 去官网下载和操作系统位数相同的安装包.或者可以直接安装GitHub…