首页
关于
留言
归档
动态
友链
推荐
虫洞
开往
憶夣
累计撰写
57
篇文章
累计创建
11
个标签
累计收到
2
条评论
栏目
首页
关于
留言
归档
动态
友链
推荐
虫洞
开往
目 录
CONTENT
Java-憶夣
以下是
Java
相关的文章
2023-04-04
8、脚本、编译与注解处理
八、脚本、编译与注解处理8.1 Java 平台的脚本获取脚本引擎脚本引擎是一个可以执行用某种特定语言编写的脚本的类库。当虚拟机启动时,它会发现可用的脚本引擎。枚举虚拟机中的引擎构造一个 ScriptEngineManager调用 getEngineFactories 方法可以向每个引擎工厂询问它们所
2023-04-04
34
0
0
Java
2023-04-04
7、国际化
## 摘要 本文系统介绍了Java国际化(i18n)的核心机制,涵盖以下关键内容: **Locale对象**:由语言、脚本、国家、变体和扩展五部分组成,通过语言标签(如"en-US")构建,Java提供了大量预定义Locale,也可通过`getDefault`获取系统默认值。 **数字与货币格式化**:利用`NumberFormat`的工厂方法(`getNumberInstance`、`getCurrencyInstance`、`getPercentInstance`)实现本地化格式化与解析,配合`Currency`类灵活控制货币类型。 **日期时间格式化**:使用`java.time`包的`DateTimeFormatter`处理月份名称、日期顺序、日历和时区等本地差异,通过`withLocale`切换区域设置。 **排序与范化**:`Collator`提供区域敏感的字符串排序,支持设置强度(PRIMARY/SECONDARY/TERTIARY)和分解模式(D/KD等范化形式),`CollationKey`可用于批量高效比较。 **消息格式化**:`MessageFormat`支持占位符替换及choice条件格式,实现复数等复杂语法本地化。 **资源包(ResourceBundle)**:采用属性文件或`ListResourceBundle`子类管理本地化资源,按"包名_语言_国家"命名规则,通过`getBundle`自动查找匹配的资源包。 **字符编码**:推荐UTF-8编码,通过`Charset.defaultCharset()`获取平台编码,注意源文件、类文件和虚拟机三层的编码差异,可用`native2ascii`工具转换非ASCII字符。
2023-04-04
142
0
0
Java
2023-04-04
6、日期和时间API
## 摘要 本文系统介绍了Java日期和时间API(java.time包)的核心内容。该API的时间线以1970年1月1日为原点(与UNIX一致),通过**Instant**表示时间线上的瞬时点,**Duration**表示两个时刻之间的时间量。本地日期和时间方面,**LocalDate**表示不含时区的日期,**LocalTime**表示当日时刻,二者组合形成**LocalDateTime**;**Period**用于本地日期间的间隔计算。**TemporalAdjusters**类提供了灵活的日期调整功能,并支持自定义调整器。带时区的时间处理由**ZonedDateTime**完成,需特别注意夏令时对时间偏移的影响,跨越夏令时边界时应使用Period而非Duration进行日期调整。格式化与解析通过**DateTimeFormatter**实现,支持预定义、Locale相关和自定义模式三种格式器。此外,该API还提供了与旧版java.util.Date等遗留类的互操作转换方法。所有核心类均为不可变类,线程安全。
2023-04-04
50
0
0
Java
2023-04-04
5、数据库编程
五、数据库编程5.1 JDBC 的设计JDBC 驱动程序类型JDBC 规范将驱动程序驱动程序将JDBC 翻译成ODBC, 然后使用一个ODBC 驱动程序与数据库进行通信。较早版本的Java 包含了一个这样的驱动程序: JDBC/ODBC 桥,不过在使用这个桥接器之前需要对ODBC 进行相应的部署和正
2023-04-04
77
0
0
Java
2023-04-04
4、网络
## 摘要 本文介绍了Java网络编程的核心知识,涵盖客户端与服务器通信的完整流程。 **连接服务器**方面,通过`Socket`类建立TCP连接,利用`setSoTimeout`设置读写超时,并通过无参构造+`connect`方法实现连接超时控制。`InetAddress`类负责主机名与IP地址的互转。 **实现服务器**方面,`ServerSocket`监听端口并通过`accept()`等待客户端连接。为服务多个客户端,文章给出了基于多线程的示例,将每个客户端交由独立线程处理。此外,介绍了**半关闭**机制(`shutdownOutput`/`shutdownInput`),适用于HTTP等一问一答的场景。 **可中断套接字**方面,推荐使用`SocketChannel`替代阻塞式Socket,使通道操作在线程中断时能及时抛出异常,避免无限阻塞。 **获取Web数据**方面,区分了`URI`(纯语法解析)与`URL`(可打开资源流)。`URLConnection`提供了更丰富的控制,包括设置请求头、查询响应头、读写超时等。提交表单数据支持**GET**(参数拼接至URL)和**POST**(通过输出流写入)两种方式,需配合`URLEncoder`进行编码。 总体而言,文章系统梳理了Java网络编程从底层Socket到高层HTTP请求的关键API与最佳实践。
2023-04-04
158
0
0
Java
2023-04-04
3、XML
# XML 技术概要总结 XML(可扩展标记语言)与 HTML 同源,但在语法上更严格:大小写敏感、结束标签不可省略、自闭合标签须以"/"结尾、属性值必须加引号且所有属性必须有值。XML 文档以可选的声明头开始,可包含文档类型定义(DTD),正文以唯一根元素为核心组织层级结构,还支持字符引用、实体引用、CDATA段、处理指令和注释等特殊标记。 **XML 解析**主要分两类:DOM(树型解析器)将整篇文档构建为内存中的节点树,便于随机访问和遍历;SAX(事件驱动流式解析器)在解析过程中回调事件处理方法,适合大文档且无需完整树结构的场景;StAX(拉式解析器)则允许开发者主动迭代获取解析事件,兼顾灵活性与效率。 **文档验证**可通过 DTD 或 XML Schema 实现。DTD 使用 `ELEMENT` 和 `ATTLIST` 规则定义元素结构与属性约束;Schema 基于 XML 本身编写,支持更丰富的数据类型(如内置类型及自定义枚举)、复杂类型组合、命名空间以及属性的可选/默认值设置,表达能力更强。 **XPath** 提供简洁的路径表达式语言,可快速定位 XML 树中的节点、节点集及属性值,支持谓词筛选和内置函数,极大简化了节点查询操作。 **命名空间**机制通过 URI 标识解决元素与属性名冲突问题,子元素继承父级命名空间,解析时需启用命名空间感知以正确区分限定名、本地名和命名空间 URI。 **XML 生成**既可使用 DOM API 在内存中构建节点树后序列化输出(支持 Transformer 或 LSSerializer),也可使用 StAX 的 `XMLStreamWriter` 逐步写出事件流,适用于带或不带命名空间的文档。**XSL 转换(XSLT)**则通过样式表将 XML 文档转换为其他格式(如 XHTML、纯文本等),实现灵活的数据格式适配。
2023-04-04
79
0
0
Java
2023-04-04
2、输入与输出
## 摘要 本文系统介绍了 Java I/O 的核心知识体系,涵盖七大模块: **1. 流体系**:Java 通过 InputStream/OutputStream(字节流)和 Reader/Writer(字符流)两大层次结构处理 I/O,支持通过嵌套过滤器灵活组合功能,同时实现 Closeable、Flushable 等接口管理资源。 **2. 文本 I/O**:使用 PrintWriter 进行文本输出,Scanner 和 Files 工具类读入文本,需关注 UTF-8、UTF-16 等字符编码方式的正确选择。 **3. 二进制数据**:DataInput/DataOutput 接口以二进制格式读写基本类型;RandomAccessFile 支持文件随机定位读写;ZipInputStream/ZipOutputStream 处理 ZIP 压缩文档。 **4. 对象序列化**:ObjectOutputStream/ObjectInputStream 实现 Java 对象的序列化与反序列化。通过 transient 关键字、自定义 readObject/writeObject 方法以及 Externalizable 接口可定制序列化行为,readResolve 方法保障单例与枚举的类型安全,serialVersionUID 实现版本兼容管理。序列化还可用于深拷贝。 **5. 文件操作**:NIO 的 Path 和 Files 类提供路径解析、文件读写、目录创建、复制移动删除、属性查询等功能,DirectoryStream 和 Files.walkFileTree 支持目录遍历与文件树递归操作。 **6. 内存映射与缓冲区**:通过 FileChannel 将文件映射到 ByteBuffer 实现高效内存映射访问,Buffer 类管理容量、位置、界限等属性,FileChannel 还提供文件加锁机制(lock/tryLock)实现进程间并发控制。 **7. 正则表达式**:Pattern 和 Matcher 类提供强大的字符串模式匹配、查找、分组捕获与替换功能,支持多种匹配标志(忽略大小写、多行模式等)。 整体而言,Java I/O 通过分层抽象、过滤器组合与 NIO 扩展,构建了功能全面且灵活的输入输出处理框架。
2023-04-04
67
0
0
Java
2023-04-04
1、Java SE 8的流库
一、Java SE 8的流库1.1 从迭代到流的操作统计单词长度大于12的单词数量List<String> words = ...;// 方法一long count = 0;for (String w : words){ if (w.length() > 12) count+
2023-04-04
75
0
0
Java
2023-04-04
14、并发
## 摘要 本文系统介绍了Java并发编程的核心知识,涵盖线程基础与高级特性。 **线程基础**:讲解了线程的创建(应调用`start()`而非直接调用`run()`)、中断机制(通过`interrupt()`设置中断标志)、六种线程状态(New、Runnable、Blocked、Waiting、Timed Waiting、Terminated)及其转换,以及线程属性(优先级、守护线程、未捕获异常处理器)。 **同步机制**:详述了`ReentrantLock`与`Condition`的使用、`synchronized`关键字及内部锁的原理与局限、`volatile`域和`final`变量的可见性保证、原子变量(如`AtomicLong`、`LongAdder`)、读写锁(`ReentrantReadWriteLock`)、锁测试与超时、`ThreadLocal`线程局部变量,以及死锁问题,并说明了弃用`stop`和`suspend`方法的原因。 **并发工具**:介绍了阻塞队列(如`ArrayBlockingQueue`、`LinkedBlockingQueue`等)用于线程间安全数据传递;`java.util.concurrent`包中的高效线程安全集合(如`ConcurrentHashMap`及其原子更新、批操作方法);`Callable`与`Future`用于获取异步任务结果;执行器(`Executor`)框架实现线程池管理,包括缓存池、固定大小池、预定执行、任务组控制、Fork-Join框架和`CompletableFuture`异步编程;以及同步器(信号量`Semaphore`、倒计时门栓`CountDownLatch`、障栅`CyclicBarrier`、交换器`Exchanger`、同步队列)用于协调线程间的协作。 整体而言,文章全面覆盖了Java并发编程从底层线程管理到高层并发工具的使用方法与最佳实践。
2023-04-04
63
0
0
Java
2023-04-04
9、集合
## 摘要 本文系统介绍了Java集合框架的核心知识,涵盖六大主题: **1. 集合框架架构**:框架的核心思想是将接口与实现分离,基础接口为Collection和Map。Iterator迭代器用于遍历集合,支持forEach循环和lambda表达式。集合类层次包括List(有序)、Set(不重复)和Map(键值对)等接口。 **2. 具体集合实现**:LinkedList适用于频繁插入删除,ArrayList适用于随机访问;HashSet基于散列表实现高效查找;TreeSet基于红黑树提供有序集合;ArrayDeque和LinkedList实现双端队列;PriorityQueue基于堆结构实现优先级排序。 **3. 映射**:HashMap和TreeMap是两种主要实现,Java 8新增了merge、compute等方法简化映射更新。WeakHashMap使用弱引用管理键,LinkedHashMap可按插入或访问顺序迭代,支持LRU缓存实现;EnumSet和EnumMap为枚举类型提供高效实现。 **4. 视图与包装器**:包括轻量级包装器(Arrays.asList、nCopies等)、子范围视图、不可修改视图、同步视图和受查视图,它们包装底层集合而非复制数据。 **5. 算法**:Collections类提供排序(归并排序)、混排、二分查找、批操作等实用算法。 **6. 遗留集合**:包括Vector、Hashtable、Properties、Stack和BitSet等,其中Properties支持文件读写,BitSet高效存储位序列。
2023-04-04
102
0
0
Java
1
2
3
4