- 博客(368)
- 资源 (4)
- 收藏
- 关注
原创 redisson可重入锁
本文介绍了Redisson分布式锁的实现原理与使用方法。首先通过WSL启动Redis服务,然后使用Maven搭建Java测试程序,演示了通过RedissonClient获取锁的代码实现。重点分析了Redisson的加锁原理,通过Lua脚本实现基于Redis哈希结构的锁重入计数和过期时间设置。详细讲解了等待机制中信号量和消息订阅的实现方式,以及锁释放时的异步/同步处理流程,包括修改Redis哈希值和发布释放消息两个关键步骤。
2026-01-05 16:42:36
323
原创 5.3 斐波那契数列的矩阵算法
摘要:本文介绍了计算斐波那契数列的矩阵算法原理及其优化方法。通过将斐波那契递推公式转化为矩阵乘法,提出两种优化方案:约当标准型法(实际效果不佳)和二进制快速幂法(复杂度O(log n))。重点分析了二进制快速幂的实现原理,并提供了Python代码示例,展示了如何利用矩阵快速幂高效计算斐波那契数列。测试结果验证了算法的正确性。
2025-12-31 20:49:38
98
原创 Spring Cloud Gateway
本文介绍了Spring Cloud Gateway作为Zuul替代方案的技术演进。文章首先指出Zuul已被Spring放弃,由核心开发者Spencer Gibb带领团队转向Gateway开发。随后详细说明了Gateway的基本配置方式,包括Maven依赖、启动类编写和路由配置。重点分析了Gateway的两大核心特性:谓词系统(Path、Query等8种路由规则)和过滤器机制(请求处理、响应处理等11种过滤器)。最后通过源码分析揭示了Gateway基于WebFlux的转发实现原理,核心转发逻辑位于NettyR
2025-12-30 22:55:00
672
原创 1.2 多维数组(markdown版本)
本文介绍了使用动态规划求解最长公共子序列(LCS)问题的方法。通过分析两种场景:字符串尾部字符相同和不同时的情况,推导出递推公式,并采用二维数组存储中间结果。文章提供了Python和Java的代码实现,展示了如何通过填充二维数组来计算两个字符串的最长公共子序列长度。该方法的时间复杂度为O(mn),其中m和n分别为两个字符串的长度。
2025-12-30 18:09:47
996
原创 10.3 多项式Toeplitz矩阵算法
本文介绍了多项式乘法的矩阵表示方法。多项式可视为向量空间中的向量,其系数对应各次幂的坐标。通过构造Toeplitz矩阵,将多项式乘法转换为矩阵乘法运算。具体演示了(2x²+4x+7)与(2x+3)相乘的过程,并给出Python实现代码,通过构建特定矩阵结构实现多项式乘法运算,最终输出正确结果[21,26,14,4]。该方法为多项式运算提供了矩阵化思路。
2025-12-27 00:30:14
116
原创 1.1 一维数组(markdown版)
摘要:本文介绍了数组作为基础数据结构的特性,并通过计算n个节点构成不同二叉树的案例展示了数组的应用。文章详细分析了问题本质,推导出卡特兰数列的递归公式C(n)=∑C(i)C(n-i-1),并提供了Python和Java的实现代码。该案例展示了如何将数学问题转化为编程问题,通过选择合适的数据结构和算法来解决组合计数问题。
2025-12-25 16:02:56
405
原创 Float-Point Representation in Java
This article introduces the floating-point representation in Java, focusing on the application principles of scientific notation.
2025-12-25 11:49:15
545
原创 《线性空间》专栏写作计划(目录)
本文总结了线性代数多个核心主题的学习进度,包括线性空间(已完成基变换等)、内积空间(完成欧几里得空间等)、赋范空间(完成各类范数)、线性映射(完成多项式映射)等内容。同时列出了待学习的重点领域:相似矩阵(约当标准型)、多项式环、二次型、矩阵微积分、多重线性代数(张量)和几何空间(仿射几何等)。已完成部分包含详细参考链接,整体呈现了线性代数从基础到高阶的完整知识体系框架。
2025-12-24 22:39:08
272
原创 字符串搜索算法之有限自动机
本文介绍了有限自动机(Finite Automaton)的基本原理及其在字符串匹配中的应用。有限自动机由状态集合、初始状态、区分集合、输入字母表和转移函数五部分组成。文章详细解释了如何通过转移函数实现状态转换,并给出了一个具体的匹配示例。随后介绍了生成状态表的方法,重点阐述了后缀函数σ的计算逻辑。最后提供了Python实现代码,包括后缀判断函数is_suffix、状态转移函数sigma_value以及有限自动机类FiniteAutomaton的实现。测试案例展示了该自动机对模式"ababaca&q
2025-12-23 14:15:24
282
原创 Java浮点数编码
本文介绍了科学计数法在计算机浮点数表示中的应用。Java中浮点数采用IEEE 754标准,通过尾数、基数和阶码表示数值。文章详细解释了浮点数的二进制编码规则,包括符号位、尾数规范化处理和移码表示阶码的方法。通过比较float和long的范围,说明浮点数能表示更大范围的数值。最后介绍了Java中十六进制和八进制的表示方法,特别是十六进制浮点数的科学计数法表示形式。全文从理论到实践,系统阐述了计算机中浮点数的表示原理和Java中的具体实现方式。
2025-12-23 11:39:00
859
原创 Java classloader
本文介绍了Java类加载器的继承性和隔离性。类加载器分为四个层级:Bootstrap、Extension、System和Plugin,遵循"父委托"机制。隔离性体现在父级不能调用子级类、同级加载器不能互相调用、无法获取Bootstrap实例。文章展示了如何使用URLClassLoader加载外部jar包,并提供了自定义ClassLoader的示例代码,通过读取jar文件字节码实现类加载。最后指出规范实现应优先调用父加载器并缓存已加载类,以提升性能。
2025-12-22 21:19:42
830
原创 Java Compiler API使用
Java Compiler API 提供了在运行时编译 Java 源代码的能力,主要应用于 JSP 编译、代码生成工具、动态脚本引擎和热部署等场景。使用该 API 可以通过两种方式:编译磁盘源码和编译内存源码。前者直接编译文件系统中的 Java 文件,后者则支持动态生成的代码。内存源码编译需要自定义 JavaFileObject 来存储源代码和编译结果,并重写关键方法以实现内存操作。这种技术为动态代码生成和执行提供了灵活支持,是 Java 生态中重要的底层能力。
2025-12-22 18:57:45
737
原创 递归三种分类方法
摘要:本文系统梳理了递归算法的三种分类方法。按调用路数分为线性递归(单次调用)和树形递归(多次调用);按调用关系分为直接递归(自调用)和间接递归(相互调用);按调用位置分为头递归(先递归后计算)和尾递归(递归为最后操作)。重点分析了各类递归的特点、代码示例及优化方案,指出尾递归可通过尾调用优化避免栈溢出。文末以表格形式总结了递归分类的关键特征,为递归算法的理解和优化提供了系统参考。
2025-12-22 18:11:03
607
原创 6.8 组合数学-子集合问题(markdown版)
本文探讨了三种求集合所有子集的算法:1)DFS解法通过树状结构递归遍历每个元素的取舍;2)BFS解法采用队列按层级扩展子集;3)位运算解法利用二进制掩码表示元素存在状态。三种方法时间复杂度均为O(2^n),但空间复杂度不同:DFS为O(n),BFS为O(2^n),位运算最优为O(1)。位运算实现简洁高效,性能最佳;DFS空间效率高;BFS则需存储中间状态。实验表明位运算解法在代码可读性和运行效率上表现最优。
2025-12-20 20:55:10
221
原创 4.1 空间直线方程
本文介绍了空间直线的基本概念和性质。首先解释了直线的方向向量定义,即直线上任意两点的坐标差构成方向向量,并通过二维几何图形进行了直观说明。然后推导了空间直线的对称式方程(点向式方程)和参数方程。接着讨论了直线间夹角的计算方法,利用方向向量的点积和范数公式求解。最后分析了直线与平面夹角的求解方法,通过平面法向量与直线方向向量的关系,给出了相应的计算公式。文中还包含了用于绘制说明图形的LaTeX代码。
2025-12-16 23:20:45
1148
原创 1.1 三角函数和角公式
本文通过几何方法推导了正弦和余弦的和角公式。借助单位圆构造图形,利用三角函数定义和线段关系,得出sin(α+β)=sinαcosβ+cosαsinβ和cos(α+β)=cosαcosβ-sinαsinβ。证明过程通过分解线段长度,直观展示了公式的几何意义。
2025-12-13 14:36:15
765
原创 redis源码研究方法
本文介绍了在Windows环境下使用Clion和WSL Ubuntu虚拟机调试Redis 8.0源码的方法。首先通过华为云镜像下载源码,然后配置WSL环境并安装必要的开发工具。文章详细说明了编译步骤和调试过程,包括如何设置断点跟踪keys命令执行。最后列出了Redis源码的主要目录结构,涵盖核心数据结构、持久化、数据类型实现、集群管理等关键模块。该方法为开发者提供了便捷的Redis源码研究环境,特别适合Windows平台用户。
2025-11-22 02:04:13
285
原创 9.12 sinc插值
摘要:本文介绍了Sinc插值公式及其应用,该公式可以将离散采样点还原为连续函数。公式核心为$x(t) = \sum x[n] \cdot \operatorname{sinc}((t-nT)/T)$,其中sinc函数定义为$\sin(\pi x)/(\pi x)$。通过一个采样周期T=0.5的数值示例(5个采样点),演示了公式的具体应用。Python代码实现了Sinc插值,并绘制出重建曲线,结果显示在采样范围外重建效果明显失真。这表明Sinc插值虽然能完美通过采样点,但在外推时会出现偏差。
2025-11-18 00:42:53
706
1
原创 9.11 傅里叶变换家族介绍
本文介绍了傅里叶变换家族及其应用,包括傅里叶变换(FT)、Sinc插值、离散时域傅里叶变换(DTFT)、离散傅里叶变换(DFT)和Dirichlet插值。通过具体实例展示了如何将时域信号转换为频域信号,以及不同变换方法之间的转换关系。傅里叶变换能够实现时域与频域信号的双向转换,而Sinc插值则用于将采样数据还原为连续时间信号。文章还详细说明了离散傅里叶变换的计算过程和Dirichlet插值的实现方法,揭示了傅里叶变换在信号处理中的重要性。
2025-11-17 23:30:57
837
原创 11.3 Sobol序列
本文介绍了Sobol序列的生成方法及其实现。Sobol序列是一种n维均匀分布序列,具有确定的起始点(0和0.5)和低差异性特点。文章详细解释了基于灰码和方向数的递推公式,并提供了两种Python实现算法:算法1直接套用公式,算法2采用结果缓存提升性能。通过二维示例展示了前16个Sobol点的均匀分布特性,并通过可视化图表验证了两种算法的等效性。代码实现包含方向数初始化、两种生成算法及结果对比,适用于需要高质量低差异性序列的数值计算场景。
2025-11-17 00:44:40
407
原创 9.10 插值法应用之照片修复
本文介绍了使用线性插值和拉格朗日插值方法将128×128的Lena图像放大4倍至512×512的过程。首先说明了图像插值的基本步骤,包括确定照片类型、选择插值范围和算法应用。重点展示了线性插值(双线性插值)的实现原理和Python代码,通过2×2像素块计算中间值,但结果存在模糊和锯齿问题。接着改用3×3像素块的二次拉格朗日插值来改善效果,提供了核心插值函数代码。两种插值方法都通过坐标转换实现图像放大,比较了它们的效果差异。
2025-11-16 20:40:48
907
原创 9.9 有理立方贝塞尔曲线
有理立方曲线是一种可有理参数化的三维曲线,包括圆锥曲线及其退化形式。它可通过有理Bézier曲线或NURBS算法实现插值。文中重点介绍了平面有理Bézier立方曲线的参数化公式,并详细展示了de Casteljau算法的计算过程:先将控制点转换为齐次坐标,通过迭代线性插值后投影回二维空间。同时提供了Python代码实现该算法,通过权重和控制点的齐次坐标转换,最终得到参数t对应的曲线点坐标。该方法能有效计算有理Bézier曲线上的任意点。
2025-11-16 17:07:28
878
原创 9.8 贝塞尔曲线
本文介绍了贝塞尔曲线的基本概念与实现方法。贝塞尔曲线由控制点决定,n次曲线需要n+1个控制点,其数学表达式类似于二项式定理。文章展示了用Python直接实现贝塞尔曲线的公式计算方法,并提供了三次贝塞尔曲线的示例代码和效果图。针对高次曲线计算误差问题,介绍了更优的德卡斯特柳算法,通过递归线性插值降低计算复杂度。文中详细图解了该算法的计算过程,并提供了对应的Python实现。两种方法都展示了如何从控制点生成光滑曲线,德卡斯特柳算法在精度和扩展性上更具优势。
2025-11-16 13:39:12
1138
原创 9.7 Kochanek-Bartels样条曲线
本文介绍了TCB样条曲线(Kochanek-Bartels样条)的原理与实现。TCB样条通过张力(Tension)、连续性(Continuity)和偏差(Bias)三个参数控制曲线形态,区别于传统样条曲线。其核心在于计算每个控制点的进入和离开切向量,当二者相等时满足C1连续性。文章详细推导了切向量计算公式,并给出Python实现代码,包括参数化控制、Hermite插值和可视化方法。实验展示了不同参数组合下的曲线效果,该算法适用于需要精细控制曲线平滑度和形状的图形应用场景。
2025-11-15 21:53:53
790
原创 9.6 Catmull-Rom样条曲线逼近
摘要:Catmull-Rom样条曲线是一种具有C1连续性的插值曲线,通过4个控制点生成平滑路径。文章给出了曲线的矩阵定义公式,其中u∈[0,1]为参数,τ为控制曲线松紧的张力系数。通过将矩阵展开为u的三次多项式参数方程,分析了各系数分量。针对示例点(1,0)~(4,5),使用Python绘制了τ在[-1.5,1.5]范围内7种取值时的曲线形态变化图。结果显示曲线仅经过中间两个控制点,当τ=0时退化为直线,直观展示了张力参数对曲线形状的影响。
2025-11-15 14:55:45
692
原创 12.3 Newton Raphson方法
牛顿-拉夫逊方法是一种高效的数值解非线性方程算法,通过迭代逼近方程根值。其核心公式为xₙ₊₁=xₙ-f(xₙ)/f'(xₙ),利用切线与x轴交点逐步逼近解。以求解x²-2=0为例,Python实现显示该方法能精确计算√2,结果与math.sqrt(2)一致,验证了其有效性。该方法收敛速度快,适合求解高次方程,代码实现简洁且精度可达1e-12。
2025-11-15 01:34:04
557
原创 多重组合问题与矩阵配额问题
实际生活中,一定会遇到多重组合问题。多重组合就是把n个元素分配到大小为k1k⋯km的集合中。符号用的还是组合的符号,上面代表总数$n),下面是拆分的数量。举个例子,把6个不同的小球,拿出5个,放到两个盒子里,第一个盒子放2个,第二个盒子放3,最后一个小球留着,其实相当于最后1个小球放入了第三个盒子。2362!3!6−2−3。
2025-11-14 23:22:32
744
原创 12. 2 不动点迭代法
本文介绍了不动点迭代法的原理与应用。该方法通过构造迭代等式x=g(x)进行数值计算,可用于求解方程。文章分析了收敛条件(Lipschitz条件),指出该方法存在收敛性不确定、只能求正根、迭代速度慢等局限性。以x^6+x^4-12=0为例,通过Python代码演示了迭代过程,计算结果接近√2。相比其他算法,不动点迭代法在高次方程求解中存在明显不足。
2025-11-12 23:41:41
436
原创 mockito-junit使用
本文介绍了Mockito框架的基本使用方法,包括环境配置、Mock对象创建、静态方法Mock、Spy技术以及验证方法执行情况的技巧。重点讲解了如何通过@Mock和@InjectMocks注解创建测试对象,使用Mockito.mockStatic()处理静态方法,以及利用verify()方法验证方法调用次数。文章还特别强调了静态Mock需要及时关闭和多线程环境下Mock的局限性,并提供了Spy技术用于部分Mock真实对象的方法。通过具体代码示例展示了各种测试场景的实现方式,帮助开发者快速掌握Mockito的核
2025-11-05 22:43:28
344
原创 5.1 恒功率启动问题
本文研究了新能源汽车在恒定功率启动时的动力学特性。通过建立微分方程模型,分析了汽车速度随时间的变化关系。模型假设不考虑空气阻力,仅考虑恒定摩擦力f,推导出速度v(t)满足的微分方程dv/dt=(P-fv)/(mv)。通过变量替换和积分求解,得到了包含对数项的速度时间关系表达式。数值计算表明,当功率为300马力时,汽车速度随时间呈非线性增长趋势,最终趋近于理论最大速度P/f。研究提供了理解新能源汽车启动特性的理论框架,并附有Python代码实现数值求解和可视化。
2025-08-08 00:32:45
599
原创 java解析word文档
本文介绍了使用Apache POI库处理Word文档的方法,重点包括段落样式和图片的读取。在段落处理方面,展示了如何获取文本内容、首行缩进、字体颜色和大小等样式属性,并指出了API存在的空指针异常问题及解决方法。在图片处理部分,详细列出了Word支持的11种图片格式及其特点,提供了读取图片数据的代码示例。文章还深入分析了Word底层XML结构,指出了Apache POI在封装上的不足,需要开发者直接处理XML元素来获取完整的样式信息。这些内容为Java开发者处理Word文档提供了实用参考。
2025-07-16 23:53:36
432
原创 Java操作word实战
摘要:本文介绍了使用Apache POI操作Word文档的基本方法,包括创建文档、设置段落样式、添加页眉页脚、插入页码、表格和图片等功能。文章指出POI在Word操作方面存在技术不成熟和兼容性问题(如页眉页脚在WPS中不可见),并提供了具体代码示例。重点内容包括:1)通过XWPFDocument类创建文档;2)段落和字体设置;3)复杂的页码生成方式;4)表格创建和图片插入的实现方法。文中代码示例详实,但同时也提示了该技术存在一定局限性。
2025-07-03 21:14:02
1274
原创 2.4 相对论速度叠加公式与双曲正切
相对论速度叠加公式表明,当两个速度$u$和$v$叠加时,结果速度$w$为$w=\frac{u+v}{1+uv/c^2}$,其中$c$为光速。这一公式确保了任何速度都不会超过光速。通过引入快度(Rapidity)的概念,速度叠加可以转化为双曲正切函数的加法,即$w = \tanh(a+b)c$,其中$a$和$b$分别为速度$u$和$v$的快度。快度的定义为$r=\mathrm{arctanh}\thinspace \frac v c$,使用快度可以简化速度的线性叠加计算。通过图形化表示,可以更直观地理解速度与
2025-05-13 18:05:14
1162
原创 数学分析文章目录
本文整理了作者已发表和计划撰写的数学系列文章,涵盖导数、三角函数、双曲函数、积分、解析几何、微分方程、数列、多元函数微分学、多重积分等多个数学分支。已完成14篇文章(含质量评分80分以上12篇),包括《下跌多少才能涨回来?》《双曲函数公式》《相对论速度叠加公式》等优质内容(最高94分)。待完成选题20个,涉及反函数求导、反常积分、曲面旋转等专题,形成系统的数学知识体系。
2025-05-13 16:36:40
242
原创 8.4 化学分子
本文介绍了如何使用LaTeX中的chemfig宏包绘制化学分子结构。通过甲烷、乙烯、苯环、萘、蒽和菲等例子,展示了chemfig的基本语法和功能。文章详细说明了如何通过调整键角和位置来绘制单键、双键以及多环芳烃结构,并提供了相应的代码示例和效果图。最后,文章还展示了chemfig的高级用法,鼓励读者进一步探索其强大功能。
2025-05-09 10:51:37
1248
Gnuplot 5.5 Windows版
2022-06-07
麻省理工学院研究生数论I课程笔记(英文版)
2022-04-28
麻省理工学院本科数论课程笔记(英文版)
2022-04-28
任意内积下怎么Householder分解?
2023-02-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅