自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 【Java】Java char 占 2 字节,为什么 \uFFFF 刚好是 16 位?揭秘字节、位与十六进制的完美对应

这是一个非常基础但极其巧妙的数学与进制转换问题。简单来说,这是因为。

2026-07-01 09:06:36 294

原创 【Java】深入解析Java字符串常量池与StringBuilder:从内存原理到工程实践

怕常量池爆掉?不存在,现代 Java 随便写。为了性能用 StringBuilder 拼长字面量?没必要,现代编译器连"a" + "b"都会自动优化成"ab"放在常量池。根据业务场景(静态/动态/需修改/复杂排版),选择文本块、格式化、数据库配置或模板引擎,一切以**“好维护”**为最高准则。->会在编译期优化成"ab"。->绝对不会在编译期优化成。如果你在代码里连续append好多个长字面量,它确实会在运行时进行多次数组的复制和扩容检查(虽然没有新对象产生,但依然有方法调用的开销)。

2026-06-30 15:26:58 293

原创 【Java】Java永久代:从诞生到终结的演进史

方法区与永久代的关系?方法区是 JVM 规范中定义的一个逻辑区域。永久代是 JDK 7 以前 HotSpot JVM 对方法区的实现。元空间是 JDK 8 及以后 HotSpot JVM 对方法区的实现。字符串常量池在哪里?JDK 6:永久代。JDK 7 及以后:Java 堆中。为什么用元空间替换永久代?因为永久代大小固定,容易 OOM;而元空间使用本地内存,大小随需增长,极大地降低了由于加载过多类导致的OOM问题。注:如果你在运行 JDK 8 或更高版本的代码时,在启动参数中加上了。

2026-06-30 09:25:03 177

原创 深入解析 Java String.intern():从内存模型到实战优化

是什么:返回字符串在常量池中的引用。怎么用。该不该用平时写代码,不要滥用(如是纯纯的脱裤子放屁,因为"abc"本来就在池里)。适合用的场景:在读取外部数据(数据库、网络、文件)时,如果明确知道会有海量且高度重复的字符串,使用intern()可以把内存占用从 GB 级别降到 MB 级别。写在代码里的“字符串字面量”和“编译期可确定的常量表达式”肯定在常量池里。但是,只要你的代码里包含了变量的动态拼接或者new** 关键字**,哪怕你把变量声明死在代码里(比如),它生成的结果也是在堆内存中。

2026-06-29 23:49:19 311

原创 【分析】网关故障排查指南:如何区分并定位‘上游’与‘下游’问题

指的是向网关发送请求的“客户端”或“调用方”。在请求链路中,流量是从上游流向网关的。

2026-05-19 15:09:44 382

原创 【数据库】varchar数据类型

不要为了省事统一把所有字段都设为或。虽然现代数据库对此优化得很好,但过大的定义会影响索引的使用,且容易让应用程序屏蔽真正的数据错误(比如本该限制20字符的名字却存了100字符)。一般建议:根据业务实际可能的最大值,稍微留一点余量即可。

2026-05-07 11:00:46 262

原创 【IDEA】Maven项目编译路径:模块输出vs继承输出的关键区别

特性继承项目编译输出路径使用模块编译输出路径存储位置集中式(如分布式(如多模块隔离否(混在一起)是(互不干扰)Maven 兼容性差(需手动配置路径才能对应 target)完美(自动对应适用场景简单的纯 Java 项目、旧项目Maven 项目、Gradle 项目。

2026-05-07 10:06:40 240

原创 【Linux】grep -F 及 双横线--的妙用

总而言之,grep -F是一个让你的搜索更纯粹、更快速、更安全的选项。记住核心:-F固定字符串。它关闭正则表达式引擎,所有字符都只匹配其本身。关键场景:搜索含元字符的字面量、多模式固定字符串搜索(-f)、追求速度。避坑指南:注意与-f组合时的空行问题;记住它不忽略大小写,需加-i。替代命令:它等同于旧的fgrep命令,但grep -F是更现代、更推荐的方式。💡小贴士:如果你只是想快速查找一个字符串,并且不确定它是否包含特殊字符,直接使用grep -F通常是一个更安全、更省心的选择。

2026-04-07 21:13:37 394

原创 【数学】1加到N-1的奇妙公式

等差数列,高斯算法

2026-03-31 09:49:46 421

原创 【Java】UTF-8变长编码及其3字节存储奥秘

如果读到一个字节,首位是0→ 1 字符,1 字节。如果读到一个字节,首位是110→ 1 字符,2 字节。如果读到一个字节,首位是1110→ 1 字符,3 字节。如果读到一个字节,首位是10→ 这不是头,这是尾巴(跟随字节)。这种设计非常巧妙,既兼容了古老的 ASCII(英文只用 1 个字节,首位为 0),又支持了全世界所有的字符(用变长字节),而且解码速度快,不需要额外的索引表。编码方式存储机制“中”字占用大小原因定长(大部分),直接存储数值2 字节。

2026-03-25 21:27:13 396

原创 【Java】char字符类型的UTF-16编码解析

在 Java 设计之初(1990年代),Unicode 标准中的字符数量还比较少,设计者认为 16 位(2 字节)足以容纳世界上所有的字符。因此,Java 将char定义为 2 字节,并直接对应 Unicode 代码点。

2026-03-24 23:34:04 276

原创 【分析】网络不通会显示404吗?

摘要:404错误与网络不通存在本质区别。404是HTTP状态码,表明网络连接正常但资源不存在;而网络不通时(如连接超时、拒绝连接、DNS解析失败等)根本不会返回HTTP状态码,浏览器会显示ERR_xxx错误提示。判断依据:若能见到HTTP状态码(如404/500),则网络通畅;若显示"无法访问"或ERR_xxx错误,则网络连接存在问题。两者分属不同层级(HTTP/TCP),服务器状态和错误原因也截然不同。

2026-03-24 09:57:19 66

原创 【分析】HTTP请求端口错误诊断:404、502与连接拒绝的区别

场景错误类型端口无服务监听TCP 连接拒绝(非 HTTP 错误)端口有其他服务404 / 400 / 403(取决于该服务)反向代理后端端口错误。

2026-03-23 16:00:55 185

原创 【Java】字符串底层与常量池演变全解析

字符串常量池是 Java 堆中一个用于存储字符串对象引用的哈希表。字符串对象实例同样是存储在 Java 堆中,它们被常量池中的引用所指向。这种设计将容易导致内存溢出的常量池从空间受限的永久代解放出来,并利用了堆更高效的垃圾回收机制,是 JVM 内部优化的重要一环。理解这个区别,对于排查内存溢出问题以及优化字符串使用(如合理使用intern()方法)至关重要。场景代码示例涉及常量池吗?创建对象数显式 new String(字面量)是。构造函数需要解析字面量"xyz"。2个(堆 + 池)

2026-03-22 23:31:19 475

原创 【网络】TCP与HTTP:网络通信的核心机制解析

HTTP 确实是“在 TCP 之上封装”出来的协议,用 TCP 做可靠传输。不过从网络分层看,更严谨的说法是:HTTP 是应用层协议,TCP 是传输层协议,HTTP 利用 TCP 提供的可靠字节流服务来实现请求/响应模型,而 HTTP/3 则把这个“传输层”换成了 QUIC。

2026-03-20 13:32:58 861 1

原创 【Linux】grep命令终极指南

grep(Global Regular Expression Print,全局正则表达式打印)是 Linux 系统中最常用、最强大的文本搜索工具之一。它能够在文件中搜索匹配指定模式的行,并将输出。

2026-03-19 08:35:03 416

原创 【分析】开发必看:502错误终极排查指南

502 Bad Gateway是开发中常见的HTTP错误,表示网关服务器无法从上游服务获取有效响应。主要原因包括:1)后端服务未启动或崩溃;2)端口配置错误;3)后端处理超时或卡死;4)防火墙/权限问题;5)连接数耗尽;6)Nginx配置不当。排查时可检查Nginx错误日志、直接测试后端端口、重启服务等。开发环境中,服务未启动和端口配置错误是最常见原因。

2026-03-17 11:18:37 1280

原创 【Java】Arrays工具类——数组操作终极指南

是一个专门操作数组的工具类,里面全是静态方法,主要功能包括:排序、查找、复制、填充、比较、打印/转字符串、转 List 等。。

2026-03-16 19:44:34 374

原创 【Java】NIO零拷贝技术揭秘:CPU不参与的数据传输

在的实现中,数据本身从未离开过内核空间,也从未经过 CPU 的寄存器进行搬运。磁盘到内核读缓冲区:DMA 拷贝。内核读缓冲区到网卡:DMA 拷贝(依靠 Scatter/Gather 机制,网卡直接来“取”数据)。这就是为什么它被称为“零拷贝”——指的是CPU 拷贝次数为零。

2026-03-15 21:01:58 91

原创 【Java】AIO(异步IO)详解与对比

NIO 不是零拷贝的代名词。普通的依然会发生用户态/内核态切换和数据拷贝。NIO 的优势在于“非阻塞”(节省了线程资源,避免了因等待数据导致的线程挂起),而不是消除内核态切换。只有在使用等特定 API 时,NIO 才能实现真正的零拷贝和减少上下文切换。BIO:线程是“苦力”,一直在傻等,效率最低。NIO:线程是“监工”,虽然不傻等了,但得一直盯着看谁有活干,有活了自己还要动手搬砖。AIO:线程是“老板”,直接把活包给系统(OS),系统干完了再来汇报。老板(业务线程)只负责签收结果。

2026-03-09 18:46:10 431

原创 【Java】NIO零拷贝:为何transferTo需要循环调用?

transferTo不保证原子性(即不保证一次性传完指定 count)。如果你去查看 Java 官方文档或 JDK 源码注释,会发现它明确指出:因此,必须使用while循环来确保文件被完整传输,就像你代码中写的那样。这与或通常需要循环调用的原理是一样的。

2026-03-09 00:52:33 247

原创 【Java】NIO零拷贝:最清晰易懂的逐层递进方式带你了解

内核就是那个躲在幕后,默默为你管理CPU、内存和硬件,确保所有软件能够和平共处、高效工作的那个“隐形管理者没有内核,你的电脑就是一堆毫无生气的金属和硅片。DMA:设备自己直接访问内存,不再占用 CPU 搬运。在 NIO“零拷贝”语境下,DMA 负责:磁盘 -> 内核缓冲区内核 socket 缓冲区 -> 网卡这两段“设备级”拷贝,从而让 CPU 更专注于业务逻辑,提升吞吐。内核就是操作系统的“大脑和管家”。它负责指挥:配置 DMA 控制器,告诉它去哪读、往哪写。它负责中转。

2026-03-09 00:44:37 685

原创 缺页中断与页缓存:高效内存管理揭秘

定义:页缓存是操作系统在物理内存中划出来的一块区域,专门用来缓存磁盘文件的数据。作用:为了加速。当程序读取文件时,OS 先看页缓存里有没有。如果有,直接返回,不用去读慢速的磁盘;如果没有,才去读磁盘。本质:它是内存中的一块数据。定义:当 CPU 试图访问一个虚拟内存地址,但该地址对应的物理页不在物理内存中(或者访问权限不对)时,CPU 会产生一个硬件中断。作用:通知操作系统:“你要的数据内存里没有,赶紧去处理!本质:它是一个硬件/软件协同的动作过程。维度页缓存缺页中断角色资源。

2026-03-09 00:33:53 244

原创 【Java】随机文件读写利器:RandomAccessFile详解

RandomAccessFile是Java中支持随机访问文件读写的类,具有以下特点:1)允许通过文件指针跳转到任意位置读写;2)同时支持读写操作;3)可直接处理基本数据类型。提供四种访问模式(r/rw/rwd/rws),常用方法包括seek()移动指针、read/write系列方法等。典型应用场景包括大文件处理、断点续传等,但需注意其写入是覆盖式而非插入式,且线程不安全。适合需要随机访问的场景,不适合简单文本处理或频繁插入修改的情况。

2026-03-07 15:17:27 457

原创 【Java】I/O:PrintStream与PrintWriter核心区别

*优先选择 **:在处理文本输出(特别是写文件或网络Socket)时,更合适,因为它支持指定编码,避免乱码。注意构造函数的异常:虽然print方法不抛异常,但构造函数(如)会抛出,这个必须捕获。谨慎对待“静默失败”对于日志记录,静默失败通常是可以接受的(日志写不进去不应该崩掉业务系统)。对于关键业务数据(如交易记录、入库单据),不要依赖或,因为它们可能会丢数据且不报错。此时应使用普通的或,并严格处理。

2026-03-07 13:44:34 355

原创 【Java】try-with-resources语法糖

在 Java 中,资源是指实现了接口(或其子接口)的对象。这些对象在使用完毕后必须显式关闭,否则会占用系统资源(如文件句柄、数据库连接池连接等)。ReaderWriterConnectionStatementResultSet(JDBC)Socket优点:代码简洁:消除了大量的finally样板代码。安全性:确保资源一定会被关闭,防止内存泄漏或连接泄漏。调试友好:通过“异常抑制”机制,保留了业务逻辑抛出的原始异常,而不是被关闭资源的异常覆盖。在任何需要管理实现了接口的资源时,

2026-03-06 23:41:36 398

原创 【Java】NIO 中的多路复用(Selector / Channel)机制

直接调用->替换原有兴趣事件保留原有事件->用移除事件->用设置该通道只关心读事件当通道有数据可读时,Selector 会通知你是 NIO非阻塞 I/O的核心机制之一。

2026-03-06 14:07:28 277

原创 【Java】NIO及核心概念

Buffer 是一个容器,用于与 Channel 交互的数据。开始提供的一套新 I/O API,它与传统的。Selector 是 NIO 的核心,用于。,非常适合高并发网络应用。

2026-03-05 23:41:35 967

原创 【Java】I/O流 字节流有无字符编码的说法?

只负责读取文件中的原始字节(byte),不进行任何字符编码的转换。如果你希望将文件内容作为文本读取,就需要用。

2026-03-05 18:10:42 41

原创 【Java】读取输入流后的存放方式实战技巧

在实际项目中,读取输入流的内容一般会根据需求和数据大小选择不同的方式。

2026-03-05 16:19:50 56

原创 【Java】I/O流 将字符流转为字节流

类型说明将字符流转换为字节流,可指定编码内存中保存字节流写入到文件将字节流转换为字符流。

2026-03-05 15:43:54 77

原创 【Java】BIO流

在Java中,是一种传统的、同步的输入输出(I/O)模型。它意味着每次进行I/O操作时,线程会被阻塞,直到数据完全读取或写入完毕。BIO通常是阻塞式的,当程序发出读取或写入请求时,它会等待I/O操作完成才会继续执行后续代码。

2026-03-05 15:01:52 231

原创 异步方法慎用synchronized

使用@Async方法时,不建议同时使用。如果需要保护共享资源,可以考虑在异步方法内部处理同步逻辑,而不是直接在方法签名上使用。

2026-02-26 17:56:36 414

原创 Activiti启动时报错

导致 Activiti 无法正确识别数据库中的表。,但不会直接报错,Activiti 可以继续执行建表逻辑(如果。希望这个解释能帮到你!如果仍有疑问,欢迎继续讨论。),导致 Activiti 启动失败,即使配置了。如果查询的表不存在,会直接抛出。但这样可能会引入其他兼容性问题。如果查询的表不存在,默认返回。

2025-07-19 15:09:45 635

原创 【动态代理】2022笔记 静态代理/JDK动态代理及CGLib子类动态代理

动态代理 JDK动态代理 CGLib动态代理 静态代理

2022-07-28 14:09:37 395

原创 【Maven】自动化构建工具 自学笔记

自动化构建工具;Java;Maven

2022-07-14 09:03:36 410

原创 【jQuery】自学小白笔记!记得收藏!!!

jQuery;javascript;AJAX;

2022-07-14 09:01:01 244

原创 【JavaWeb】最详细的小白笔记!!!

Web;JavaWeb;Jsp;html;js;Java;

2022-07-14 08:53:30 3355 9

原创 【JDBC】自学JDBC笔记 经常回顾加深印象 点赞收藏

1、JDBC是什么?Java DataBase Connectivity(Java数据库连接)。2、JDBC的本质是什么?JDBC是SUN公司制定的一套接口(interface)java.sql.*; (在这个软件包下有很多接口)接口都有调用者和实现者。面向接口调用、面向接口写实现类,这都属于面向接口编程。为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展性。(降低Java程序员和数据库厂家的耦合)多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)思考:为什么SUN制定一套JDB

2022-05-05 21:57:11 345

原创 【已解决】报错原因:java.math.BigInteger cannot be cast to java.lang.Long

报错原因如下:java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) at com.

2022-04-13 15:39:12 5946 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除