- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 DWARF信息概述
本文介绍了DWARF调试信息的核心概念和结构。DWARF作为可执行文件中的调试数据标准,通过树状结构组织程序源代码与机器指令的映射关系。文章详细解析了DWARF中的调试信息条目(DIE)系统,包括数据类型(基本类型、指针、数组、结构体)、变量和函数的表示方法。特别说明了DWARF如何通过属性记录变量作用域、内存位置等信息,以及函数调用栈帧的描述方式。最后介绍了编译单元的概念,说明DWARF如何将多个源文件的调试信息组织在一起。这些信息为理解调试器工作原理和程序调试过程提供了基础。
2025-11-24 10:23:45
967
原创 背景驱动的双态图像显现
幻影坦克图是一种利用PNG图像透明度通道实现的光学欺骗效果,能在不同背景下显示不同图像。其核心原理基于alpha混合公式,通过对黑白背景下的颜色值进行逆向计算,合成带有特定透明度的图像。文章详细推导了相关计算公式,并提供了Python实现代码,将两张灰度图合成为幻影坦克图。针对色彩保留问题,提出了亮度调整和色彩插值两种优化方案,通过平衡RGB通道差异来提升效果。最终实现方案允许调整亮度参数和色彩插值比例,使白底图保留更多色彩,黑底图保持隐蔽性。这种方法不仅适用于灰度图,经参数优化后还能在一定程度上保留原始图
2025-08-14 14:42:06
765
原创 论螺旋矩阵
本文总结了螺旋矩阵问题的常见解法。对于方形矩阵,可采用层级遍历法,通过控制起始点和偏移量实现螺旋填充;矩形矩阵则适用模拟路径法和边界收缩法,前者用方向数组和访问标记判断转向条件,后者通过动态调整边界实现遍历。对于螺旋生成矩阵的特殊情况,提出了边界扩展法和基于转向规律的步长控制法。这些方法的核心在于边界检测和转向条件判断,通过控制变量和方向变化实现矩阵的螺旋遍历或生成。
2025-07-18 20:11:32
907
原创 二分查找法
本文介绍了二分查找算法的实现要点和常见应用场景。首先给出了二分查找的标准代码实现,重点分析了循环条件(start<=end)和边界更新(start=mid+1/end=mid-1)的注意事项。然后讨论了如何扩展二分查找来解决各种区间查询问题,包括通过转换思想处理>、>=、<、<=等不同条件。最后通过LeetCode四道典型题目(704、34、441、367)展示了二分查找的具体应用,包括标准查找、范围查找、数学问题等场景,并给出了完整的代码实现和关键点注释。
2025-07-16 14:33:47
596
原创 破解虚拟内存
本文探讨了在Ubuntu24.04(WSL环境)下通过/proc文件系统操作进程虚拟内存的技术。作者通过C程序演示了如何定位堆内存中的字符串地址,并通过修改/proc/[pid]/mem文件实现内存覆写。实验验证了虚拟内存的隔离特性,并提供了Python实现的自动查找替换工具。文章详细解析了/proc/[pid]/maps和/proc/[pid]/mem的用法,展示了从获取堆地址到实际内存修改的完整流程,为理解Linux内存管理机制提供了实践案例。
2025-07-11 10:54:01
943
原创 初始图形学(11)
本文介绍了光线追踪中相机模型的实现过程。首先通过视场(fov)参数控制视角范围,实现广角效果;然后通过lookfrom、lookat和vup向量建立相机坐标系,支持任意位置和角度的拍摄;最后引入散焦模糊功能,通过defocus_angle和focus_dist参数模拟真实相机的景深效果。文章详细解释了相机初始化、视口计算、光线生成等核心算法,并给出了代码实现示例。最终完成的相机模型可以灵活控制视角、位置和景深,为光线追踪渲染提供了更真实的视觉效果。
2025-07-07 13:22:11
907
原创 初始图形学(10)
本文介绍了介电质材料的光学特性及其在光线追踪中的实现方法。主要内容包括:1)介电质的基本特点(折射、反射)和斯涅尔定律;2)折射光线方向的计算方法及代码实现;3)全反射现象的处理;4)使用Schlick近似模拟菲尼尔效应;5)通过空心玻璃球案例展示多层介电质建模。文章详细阐述了这些光学现象在计算机图形学中的数学表达和编程实现,最终成功渲染出包含折射、反射等效果的逼真场景。
2025-07-06 16:35:19
642
原创 初始图像学(6)
相机类的设计应该遵循尽可能的简单的方式,让我们在后续使用时操作尽可能的简单,使用默认构造函数,且避免复杂的初始化过程。我们之前学了很多的图形学知识和相关的程序,现在我们停下脚步,来好好整理一下我们学习的内容,我们将之前的视口代码和渲染代码合并到一个新的单类。//图像宽度的像素数。//计算视图的像素间的水平竖直增量。//计算左上角第一个像素中心的坐标。//视图边缘的向量计算。
2025-04-18 19:35:52
572
原创 初始图形学(2)
今天简单的学习一下相关类的定义和作用Vec3类图形程序中需要一些用于存储几何向量和颜色的类,这里的话我们设置一个最简单的,只需要三个坐标就够了。我们使用相同的类来表示颜色、位置、方向、偏移。所以我们会为这个类声明另外两个别名和,但是要注意,不要将一个添加到一个中我们定义一个类文件:#ifndef RENDER_C___VEC3_H#define RENDER_C___VEC3_H#include <cmath>#include <iostream>// 向量类
2025-04-11 13:37:35
855
原创 虚拟机在C中的实现
虚拟机是一种像计算机一样的程序。它模拟CPU和一些其他的硬件组件的功能,使其能够实现算术运算,内存读写,还有与I/O设备的交互。最重要的是,你可以理解你为其定义的机器语言,然后用它来编程。
2025-04-07 22:41:25
927
1
原创 用C语言写shell
最近一直在学习,但是却忽略了最基本的需求——想要有所反馈,所以的话找了几个项目来做一做,这里的话我挑选的是一个用C语言实现shell的项目,用的是Linux编程,刚好我还没有试过在WSL上的编程开发,所以试一试呀,顺便把这个英语博客翻译一遍,锻炼下水平
2025-04-05 16:12:15
637
原创 KMP算法精读
这是第二遍学KMP算法,第一遍学习的过程中,对他的原理理解的是云里雾里。现在回过头来,深度学习一下KMP算法首先我们要清楚什么是KMP算法?
2025-02-15 23:53:34
843
原创 十大排序算法
用Python感受十大排序算法,首先我们对这十个排序进行分类十大排序算法:非线性时间比较类:交换类:冒泡排序快速排序插入类:直接插入排序希尔排序选择类:简单选择排序堆排序归并类#:归并排序线性时间排序:计数排序桶排序基数排序。
2025-02-11 21:27:54
825
原创 非线性排序
用Python感受十大排序算法,首先我们对这十个排序进行分类十大排序算法:非线性时间比较类:交换类:冒泡排序快速排序插入类:直接插入排序希尔排序选择类:简单选择排序堆排序归并类:归并排序线性时间排序:计数排序桶排序基数排序。
2025-02-10 23:25:53
842
原创 算法小练(1)
四月份还是三月份有蓝桥杯的算法比赛,加上一直对算法感兴趣。所以从现在开始稍微学一下。每天会坚持做几题吧,因为不知道哪些比较重要,我就主要记一些我认为重要的内容和算法。
2025-02-09 16:58:52
688
原创 CE学习心得
在游戏中许多数据的存储地址并不是固定的,而是通过动态分配实现的,也就是说传统的"固定地址"修改方法时不起作用的。如果检索结果多于一个,你无法确定哪一个是正确的地址,那么继续点击"打我",并将变更后的"健康值"填写在数值输入框中,点击"再次扫描",重复这些步骤,直到你能确认已经找到了地址(在地址列表中只有一个地址)。当数值类型设置正确后,确认扫描类型设置了"精确数值",把健康值填写在数值的输入框,并点击"首次扫描",稍等一会儿(假设你的电脑非常的慢),扫描完毕,扫描的结果将会显示在主界面的左侧。
2025-02-08 22:41:27
1152
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅