高斯模糊基于高斯分布函数对邻域像素加权平均,离中心越远的像素影响越小,通过卷积实现低通滤波。采样半径通常按经验公式r=3σ确定(σ为标准差),如σ=1时需采样(3*2+1)²个像素。优化方面,二维高斯核可分解为两个一维高斯核的乘积,将2D卷积拆分为两次1D卷积,使每个像素的计算量从N²降至2N,显著提升效率。

阅读更多 »

本文系统梳理了计算机图形学中的光照渲染核心技术。传统光照模型涵盖Lambert漫反射(基于法线与光线夹角余弦)、Phong模型(环境光+漫反射+高光)及改进的Blinn-Phong(用半程向量简化高光计算)。渲染流程分前向渲染(片段即时计算光照)与延迟渲染(先G-buffer再光照计算)。阴影贴图技术通过光源视角深度图实现阴影,级联阴影映射(CSM)优化远距离阴影,PCF滤波实现软阴影。PBR引入金属度、粗糙度等物理属性,结合视差映射等技术增强真实感。色调映射(如Reinhard)压缩HDR范围,gamma校正适配显示设备并保留暗部细节。此外还涉及环境光遮蔽、各向异性材质及光线追踪等进阶技术,共同构建逼真渲染体系。

阅读更多 »

本文阐述了法线变换矩阵与仿射变换矩阵线性部分的关系。设法线变换矩阵为N,仿射变换矩阵的线性部分为M,二者满足N=(M^T)^{-1}。推导基于法线与切向量点积为零的特性:变换后切向量v'=Mv,新法线n'需满足n'^T·v'=0,代入得n'^T·Mv=0。由原条件n^T·v=0,推导出n'^T·M=n^T,转置后得M^T·n'=n,解得n'=(M^T)^{-1}n。特殊情况是当变换无非均匀缩放(仅含位移、旋转、均匀缩放)时,M为正交矩阵,满足M^T=M^{-1},故(M^T)^{-1}=M,可直接用M作为法线变换矩阵。

阅读更多 »

正交矩阵定义为实矩阵R∈Rⁿˣⁿ,满足RᵀR=RRᵀ=I,其行向量和列向量均构成标准正交基。由RᵀR=I展开可知,列向量rᵢ满足∥rᵢ∥²=1(单位向量),且不同列向量rᵢᵀrⱼ=0(正交)。旋转矩阵必为正交矩阵,因旋转变换保持向量长度与夹角不变,故点积不变:uᵀv=(Ru)ᵀ(Rv)=uᵀRᵀRv,推导得RᵀR=I,满足正交矩阵定义。

阅读更多 »

本文概述了Java的多项重要更新:语法上,接口支持声明静态与private方法,try-with-resource可使用外部声明的Resource;@Deprecated注解新增since(标记弃用起始版本)与forRemoval(标记是否将移除)属性;字符串底层存储从char[]改为byte[],根据字符特性选择LATIN1或UTF16编码;模块化系统优化代码组织,支持最小化导入与精细访问控制;CompletableFuture增强子类扩展能力,支持自定义实例与执行器,新增延时完成、超时操作;VarHandle作为变量的强类型引用,替代Unsafe的部分功能,已在JUC包中广泛应用。

阅读更多 »

GC(垃圾回收)是自动内存管理机制,可避免手动内存管理,减轻开发者负担,但不适合嵌入式或高性能场景。垃圾判别算法包括引用计数法(无法处理循环引用)和可达性分析算法(主流);回收算法有标记清除(快但碎片化)、标记整理(无碎片但慢,用于老年代)、复制算法(无整理开销,用于新生代)。回收器分新生代(如Serial串行、Parallel并行、Parallel Scavenge注重吞吐量)和老年代(如CMS低延迟但碎片化、G1可预测停顿、ZGC超低延迟)。GC Roots包括虚拟机栈、本地方法栈、静态属性及常量引用的对象。

阅读更多 »

Java 7的ConcurrentHashMap采用分段锁机制,Segment继承ReentrantLock实现高并发,读操作无锁、写操作加锁,HashEntry通过volatile和CAS保证可见性与原子性;并发级别决定Segment数量(默认16)。Java 8则抛弃分段锁,改用桶级锁,数据结构升级为哈希表+链表/红黑树,结合CAS与synchronized保障线程安全,支持多线程协同扩容(通过sizeCtl和transferIndex管理迁移任务),读操作仍无锁。两者均通过优化锁策略提升并发性能,Java 8进一步细化锁粒度以减少竞争。

阅读更多 »

Lock接口定义了锁获取(阻塞、非阻塞、超时)、释放及Condition操作等核心方法。AQS作为JUC核心抽象类,通过双向链表和volatile状态值支持串行化场景,acquire方法自旋尝试获取资源失败则入队挂起,release方法则唤醒下一个节点。ReentrantLock的Sync继承AQS,FairSync与NonfairSync分别实现公平锁(需检查队列)与非公平锁(直接尝试获取),区别在于锁竞争时的队列逻辑;tryLock()不涉及队列,逻辑与NonfairSync一致。Condition依赖AQS的ConditionObject,线程调用await时加入Condition链表并释放锁阻塞,signal唤醒后重新入队竞争锁。

阅读更多 »

JWT是JSON Web Token,用于安全传递信息的开放标准,通常指JWS(仅签名不加密,防篡改不防窃取)。结构为Header.Payload.Signature,Base64编码,签名通过服务端密钥生成,确保数据不被篡改,支持无状态认证。需注意,JWT不能存储密码等敏感信息,存在三大缺陷:用户无法主动退出登录、用户信息无法实时同步、Token泄漏后难以立即失效。

阅读更多 »

作者在此致谢中,首先感谢妻子Megan在生活中承担的琐碎事务,为写作创造了必要条件;感谢EA同事Malone、Nallet和Wifall在项目初期的支持与反馈。因放弃传统出版,作者虽失去编辑指导,却收到数十位读者的来信及250余份Bug Report,帮助改良文本,Lauren Briise的适时编辑和Colm Sloan的细致反馈亦至关重要。作者强调,写作虽孤独,却因读者持续的鼓励(邮件、评论、转发等)从未孤单,最终在读者支持下完成目标。感谢所有参与者的支持,称此为“众筹出版”的成果。

阅读更多 »