Java25 新特性
Java 25 是继 Java 21 之后的又一个长期支持(LTS)版本,于 2025 年 9 月 16 日发布,包含 18 个 JEP。Java 21 引入的虚拟线程、记录模式等在 25 中继续打磨成熟,同时 25 带来了模块导入、紧凑源文件、作用域值正式化等一批新特性,并在 AOT 提前编译、对象头压缩、JFR 可观测性等方面有显著提升。以下是对 Java 25 相比 Java 21 的主要新特性的详细总结,重点突出其提升,并尽量简洁: 语言特性改进 紧凑源文件与实例 main 方法(Compact Source Files and Instance Main Methods,JEP 512,Java 25 正式化) 允许省略类声明、String[] args 参数和 public static 修饰符,直接写一个 main 方法即可运行,新手和脚本场景更友好;同时默认隐式导入 java.io.IO,可直接用 println、readln 等方法。 示例: 12345// 整个文件就这一段,无需 class 包装void main() { Str...
Java Class
类(class)是 Java 面向对象编程的基本构建单元,它既是数据抽象的载体,也是行为封装的边界。理解 class 的核心内容,本质上是理解 Java 如何用类型系统组织数据与行为。本文从现代 Java(25 LTS)视角出发,梳理 class 设计的核心要素。 类的本质:状态与行为的封装 一个 class 由两部分构成:字段(状态)和方法(行为)。封装的目的是把可变状态收敛到最小范围,对外只暴露不可变视图。 123456789101112public final class User { private final String name; // 不可变状态 private final String email; public User(String name, String email) { this.name = Objects.requireNonNull(name); this.email = Objects.requireNonNull(email); } public St...
C++ 中的 const 家族
C++ 里有三个"编译期求值"相关的关键字:constexpr、consteval、constinit。名字里都带 const,但职责各不相同——一个承诺"编译期可算",一个强制"只能在编译期算",一个解决"静态变量别出初始化顺序问题"。这篇把三者一次性梳理清楚。 一张表先建立全局印象 关键字 作用于 求值时机 能否修改 constexpr 变量、函数 必须可在编译期求值 否 consteval 函数 仅编译期,禁止运行期调用 — constinit 静态/线程存储期变量 编译期初始化 是(运行期可改) 记住一句话:constexpr 管"编译期可算",consteval 管"只能在编译期算",constinit 管"静态变量别出初始化顺序坑"。 constexpr:编译期就能算出来 constexpr(constant expression)要求对象或函数必须能在编译期求值。相比只承诺"运行期不可改&q...
Intel TBB
TBB (Threading Building Blocks) 是 Intel 出品的 C++ 并行编程库,也贡献给了 oneAPI 项目(oneAPI TBB)。它提供了高层抽象的任务并行、并行算法、并发容器和同步原语,让开发者不用直接操作 pthread/win32 thread 就能写出跨平台的高效并行程序。 安装与配置 获取方式 oneAPI TBB(推荐):https://github.com/oneapi-src/oneTBB 包管理器:Ubuntu 下 apt install libtbb-dev,macOS 下 brew install tbb CMake 集成 12find_package(TBB REQUIRED)target_link_libraries(my_app PRIVATE TBB::tbb) 头文件引用 12345#include <tbb/tbb.h> // 全量包含(方便但不推荐)#include <tbb/parallel_for.h> // 按需包含(推荐)#include <tbb/b...
vite_handbook
Vite 是当前前端工程里最值得掌握的构建工具之一。它的核心思路很直接:开发时利用浏览器原生 ESM 按需加载,借助高性能预构建和插件体系,把“启动慢、热更新慢、构建慢”这些老问题尽量压到最低。 如果你已经熟悉 Webpack,那么理解 Vite 的方式可以简单粗暴一点:它不是在开发阶段先把整个应用打成一个大包再提供给浏览器,而是让浏览器直接加载源码模块,只有确实需要的依赖和资源才会被处理。这样一来,项目越大,体验差异越明显。 Vite 到底解决了什么 传统打包器在开发模式下通常要做两件事:分析依赖图和重新生成 bundle。项目一旦变大,这个过程就会变慢,热更新也会被牵连。Vite 则把开发期和生产期分开处理:开发期更像一个高性能的本地服务器,生产期才交给 Rollup 做最终打包。 它的优势主要体现在几个方面。 启动快:不用先全量打包,直接启动开发服务器。 HMR 快:热更新只影响变化的模块,而不是整个应用。 配置相对简单:大多数常见场景开箱即用。 插件生态清晰:开发和构建阶段都能通过插件扩展。 对于 Vue、React、Svelte、Solid 这类现代框架,Vite ...
前端调试技巧与工具大全
浏览器开发者工具 Chrome DevTools 核心功能 Console 面板 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091// 基础输出console.log('普通日志');console.info('信息日志');console.warn('警告日志');console.error('错误日志');// 格式化输出console.log('字符串: %s', 'hello');console.log('数字: %d', 42);console.log('对象: %o', { name: '张三...
JavaScript 核心要点详解
ES6+ 关键特性 解构赋值 解构赋值是一种从数组或对象中提取值并赋给变量的语法糖。 数组解构 1234567891011121314151617181920212223242526// 基本数组解构const [a, b, c] = [1, 2, 3];console.log(a, b, c); // 1, 2, 3// 跳过某些元素const [first, , third] = [1, 2, 3];console.log(first, third); // 1, 3// 剩余元素const [head, ...tail] = [1, 2, 3, 4, 5];console.log(head); // 1console.log(tail); // [2, 3, 4, 5]// 默认值const [x = 10, y = 20] = [5];console.log(x, y); // 5, 20// 交换变量let m = 1, n = 2;[m, n] = [n, m];console.log(m, n); // 2, 1// 嵌套解构const nested = [1, [...
前端工程化工具链:ESLint、Prettier、Tailwind CSS
ESLint ESLint 是 JavaScript 和 TypeScript 的代码检查工具,用于发现和修复代码中的问题。 安装与配置 12345678# 安装 ESLintnpm install -D eslint# 初始化配置(交互式)npx eslint --init# 或手动安装推荐的配置npm install -D eslint @eslint/js typescript-eslint ESLint v9+ 扁平配置 ESLint v9 使用新的扁平配置文件 eslint.config.js。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108// eslint.config.jsimport...
前端性能优化实战指南
性能优化概述 前端性能优化的目标是提升用户体验,让页面加载更快、响应更及时、交互更流畅。 核心 Web 指标 (Core Web Vitals) LCP (Largest Contentful Paint): 最大内容绘制,衡量加载性能,应在 2.5 秒内 INP (Interaction to Next Paint): 交互到下次绘制,衡量响应性,应在 200 毫秒内 CLS (Cumulative Layout Shift): 累积布局偏移,衡量视觉稳定性,应小于 0.1 性能优化原则 减少请求数量:合并资源、使用雪碧图 减少资源体积:压缩、Gzip、Tree Shaking 优化加载顺序:关键资源优先加载 利用缓存:浏览器缓存、CDN 缓存 延迟加载:非关键资源延迟加载 优化渲染:减少重排重绘 代码分割与懒加载 路由级别的代码分割 1234567891011121314151617181920212223242526272829// Vue Router 懒加载import { createRouter, createWebHistory } f...
包管理器完全指南:NPM、Yarn、PNPM、Bun
NPM (Node Package Manager) NPM 是 Node.js 默认的包管理器,也是世界上最大的软件注册表。 安装与初始化 123456789101112131415# 检查版本npm --version# 或npm -v# 初始化项目(交互式)npm init# 快速初始化(使用默认值)npm init -y# 安装所有依赖npm install# 或npm i 包安装 123456789101112131415161718192021222324252627# 安装到 dependencies(运行时依赖)npm install expressnpm install lodash axios momentnpm i <package-name># 安装到 devDependencies(开发依赖)npm install --save-dev typescript jest eslintnpm install -D @types/node @types/expressnpm i -D vite# 全局安装(命令行工具)npm install -g ...



