奇虎郑文彬:还原系统保护技术原理和攻防

听故事学语言 · 数据结构篇 · 第五章 藏在文件里的顺序与链 数据结构篇第五章,工业章一,前四章家当的实战回门。拖动进度条为什么秒跳,MP4 登记簿记位置供直达;FAT 文件分配表,链式存储的逻辑、数组实现的身体,1977 年马克·麦克唐纳为软盘设计它;进程档案链表轮转,一头进一头出,内核偏爱链表的连接自由;浏览器后退键,教科书的双向链表对工业界的数组加游标,同一个队形,两种站位法,谁赢谁的战场。 阅读详情
3月19日,由中国最大的互联网综合服务提供商腾讯发起和组织的互联网安全峰会进入第二天。包括微软、盛大、新浪等互联网界各大巨头的技术专家,学者和专业人士参与了此次的交流。此次峰会是今年以来首场由中国互联网各顶尖企业共同参与的大型网络安全专业盛会。
来自奇虎的反木马专家郑文彬,在现场发表演讲。以下为文字实录:

郑文彬:大家好!我今天给大家介绍这几个方面:背景、还原系统技术原理概览、流行还原系统穿透技术介绍、通用还原系统保护技术、演示& GuardField、还原系统保护之未来趋势。最近一段时间,有机器狗这类病毒工具对还原系统攻击,使用还原系统环境的用户一般都不会安装其他的防护软 件,一旦还原软件被穿透的话,会带来比较大的安全威胁。

还原系统技术原理:基本原理是磁盘设备过滤驱动。比较常用方法是自己会建一个 磁盘卷设备,在harddiskX进行文件过滤。过滤驱动如何做到还原?首先还原系统会在磁盘上分配一块预留的区域,应用程序以为他已经写到真实磁盘,实 际上被分配到一块内容区域里,真实磁盘根本就没有被写入。

下面介绍一下还原软件怎么更新过滤。首先是一个普通的Windows程序, 会调用Win32API,从用户模式到内存模式,这些函数调用Windows内核,把文件请求发到文件系统上,根据磁盘卷分区格式不同来创建。文件系统设 备会将上层发来的文件读写请求转化磁盘读写请求,在harddisk volume之前会有还原系统过滤驱动。再往下会根据硬盘接口不同而有不同。如果IDE结构硬盘,会发布到电源系统。api最终会调用函数读写端口。如果 是USB设备,会发送到usb stor。

刚才说了还原系统的一些基本原理,知道原理之后对如何穿透还原也就很简单了。既然还原系统 都在磁盘上过滤驱动,只要我们解除过滤驱动与真实磁盘之间的关系,绕过过滤关系的话,就等于直接穿透了还原。第一种方法:DR0设备过滤设备链摘链。这种 方法其实就是摘除一个harddiskDR0上的过滤设备。指明设备上会有哪些过滤设备,第一代机器狗病毒将这个域给清零,导致还原系统设备被清除,所有 请求就不通过还原系统直接到达过滤磁盘设备。对于没有防备的还原系统就被成功攻破了。国内大部分还原系统都没有办法对抗这种技术。但是这种技术也是有一些 缺陷的,只能摘除在DR0上的物理设备。文件请求先到达磁盘卷,磁盘卷上的过滤设备摘除的话对系统有影响。所以第一代机器狗病毒使用了自己解析文件系统方 式进行感染,这是它的缺陷。

第二种方法:会自己创建虚拟磁盘设备,作为磁盘卷挂载到文件系统上,对虚拟磁盘读写影射到真实磁盘,将请 求下发到下层设备。相对第一代机器狗来说,这种方法不需要对磁盘系统摘除,可以通过文件对虚拟磁盘操作,操作结果是和对真实磁盘操作是一样的,可以成功穿 透还原。在这里还用一种方式就是他没有直接发送磁盘读写请求,发送SCSI-REQUEST-BLOCK下发到下层磁盘设备。

还有一 种方法,这是方法不使用驱动程序,直接在用户模式穿透还原系统。磁盘系统提供一套passthrough指令,不向磁盘发送直接请求,就可以获取磁盘信息 甚至直接读写磁盘扇区。IDE/SCSI/ATA Pass Through指令穿透还原,RING3下使用Devicelocontrel函数发送请求。大多数还原系统对此过滤不严或根本未过滤,导致在RING3 下即可达成攻击。

其他一些方法,比如说直接操作端口驱动,比如USB,更底层的磁盘操作:端口驱动、直接IO等等,缺点是难度大,通 用较麻烦。另外的方法是可以摘除其他一些过滤设备,Attach到还原系统上,先于磁盘系统获得磁盘的请求,可以做一个绕过动作。可以在磁盘卷设备保存指 针上所手脚。方法很多,不再一一解释了。主要是两类,第一类是新的磁盘技术或者磁盘卷绕过或者穿透的一些技巧。

通用还原系统的保护技 术,GuardField。还原系统脆弱的原因是什么呢?刚才也说过了他是通过磁盘设备上的过滤驱动,也就是说他跟磁盘设备没有紧密联系,只要被攻击者使 用、摘除或者绕过方法就可以把磁盘请求发送到真实磁盘上。穿透基本原理:必须使读写请求不经过还原系统物理驱动,而是到了下层的物理磁盘设备。这里就有一 个穿透思路,一个磁盘请求是从上层逐层发布到下层,我们只要监控发送路径,进行对比操作,就可以作为一个还原穿透的角色。

这是我们上 周发布的360GuardField文件,给大家演示一下效果。这是一台XP虚拟机,安装了冰点的还原系统,这个还原系统正常会被第一代机器狗穿透。这是 我们第一代机器(图)。这个系统已经安装了还原保护。可以看到还原攻击已经被拦截了,这个时候看到攻击者已经没有了。然后使用微软工具查看一下,可以看到 攻击者攻击是失败的。这是第二代机器狗样本,它可以直接对文件操作,不需要感染。他可以在启动目录上拷贝一个文件,因为他是穿透还原去拷贝文件,所以重启 后就无法被还原了。这里会有第三种攻击方法,passthrouh,它可以破坏磁盘数据。我们用Winhex看一下。攻击演示就做到这里。可以看到我们在 对待第一、二、三代攻击都成功做到保护。

现在说一下GuardField原理,首先在启动时手机、挂钩还原系统的磁盘过滤驱动,监视 磁盘IRP发送。之后我们挂钩底层磁盘设备,监视磁盘IRP达到,如果数据结构里没有磁盘IRP,我们就认为磁盘IRP没有经过还原系统到达下层。我们首 先对系统做一个检查、修复,检查之前保存的磁盘过滤设备链有没有被摘除,如果摘除了,我们恢复。然后会将这个信息发送到Ring3服务进程。我刚才说的第 一种攻击手段,它以后读写都不会再成功了。后面请求的时候都会被还原系统拦截到。第二代虚拟磁盘方式,每次读写都穿透还原,所以每次穿透还原都会拦截掉。

我们挂钩还原系统在磁盘卷上的过滤驱动,进行收集IRP操作,下面还原系统在磁盘上的过滤驱动,然后在磁盘设备下层也会挂钩,GuardField分析IRP。

IRP 监视回收,他不一定会发送到下层。可能在磁盘卷或者过滤设备上被取消或者直接完成掉,没有往下传送。数据始终保持在数据结构里没有被清除。 Lofreelrp是用于IRP取消或者完成来释放的。他jmp ds_Plofreelrp。每次当IRP回收的时候,我们从数据结构里可以得到一个监视。

对抗passthrough,因为我们挂钩下层磁盘设备,TM都会使用passthrough这些指令,他是通过这些指令获取磁盘信息。分析passthrough请求包意图。拦截恶意攻击者的passthrough指令。

同 时还结合传统反病毒技术,为什么还会使用传统反病毒技术呢?主要原因是Ringo攻击者同我们处在同一水平,除非阻止其进入RING0,不可能完全对其进 行防御。GuardField使用方法,通过Mmloadsystemlmage函数。如果是一个已知的驱动的话,我们会阻止,最大可能乐观防止攻击者攻 击。

还原系统未来趋势。我们现在有GuardField的保护,恶意攻击者肯定会开发出一些新的更新,对抗GuardField。他 们可能会使用哪些手段,猜测主要有两方面:第一,更底层或者更新的磁盘读写技术,绕过磁盘IRP分析,直接写入磁盘。第二,针对GuardField本身 的工具,对GuardField进行破坏、脱钩。我们发布之后,大概不到两天时间就有新的驱动出来,对我们GuardField脱钩。

如 何防御:更底层的磁盘读写监视。他们开发起来难度比较大,短期内没有办法形成比较大的规模。GuardField这套系统如果有一定时间可以进行修改的 话,还是可以用现有系统兼容,对磁盘底盘操作进行监视。我们知道atapi.sys IRP还是存在的,对这一层做hook。

针对第 二种方法脱钩,可以适量的自我保护、恢复。就我个人来看,针对性攻击不足为惧。如果攻击者对防御者产生一些针对性攻击,等于攻击者容易落入一个被动捱打的 局面。如果已经到脱钩了,说明攻击者已经比较穷了。还原系统在软件方面的对抗应该是没有止境的。有什么问题大家可以问。

以下是现场问答部分:

问:我给郑文彬补充一些数据,根据权威部门统计,盗号70%是来自网吧。而网吧几乎100%安装了还原设备。刚才郑文彬也介绍了还原设备的攻防。其实还原系统是很重要的一块。我想请问一下您刚才介绍的还原系统软件原理、实现方法,能不能介绍还原卡硬件的原理?

郑 文彬:对于还原卡来说,一般有两种。现在市面上的还原卡都不是真正的硬件上的还原卡,他们使用技术就是PCI设备,可以在OS启动之前获得控制权,在OS 无整个过程中监控磁盘读写,但是实质上是通过磁盘驱动监视。应该国外有一些硬盘磁盘设备监控磁盘IO端口,在IDE接口上做一些保护。但是这种硬件还原产 品至今我没有看到。主要还是采用软件方面保护。

问:你的意思是你看到还原卡本质还是软件还原设备?

郑文彬:用PCI就可以比磁盘的OS启动的更早。

问:那就是说PCI还原卡是忽悠人的?

郑文彬:它的好处就是可以更早的监视。像一些纯软件的还原卡,如果在DoS下攻击的话,应该是没有办法的。 

听故事学语言 · 数据结构篇 · 第六章 栈,后进先出的盒子 数据结构篇第六章,栈。二进制短除法余数为什么要倒着读,谜底是栈;括号匹配先让计数器上场,([)] 一串让它当场折戟,混括号必须栈;逆波兰记法,1924 年卢卡谢维奇发明波兰记法,1957 年汉布林把它倒过来;一件学生时代的四则运算器文物,带着一颗时发时不发的雷,当年调了很久怎么也跑不对,病没变,变的是它发不发作;双栈直接求值与随机表达式对数器一千组零不合;最小栈一步报最小,接雨水单调栈一层一层结算;汉诺塔的调用栈真身,V 字图退役;火车进出站十四种可能,卡塔兰数;链栈与共享栈收章。 阅读详情

相关推荐

手把手教你复现IEEE 2025高光谱图像盲超分算法DBSR(附开源代码与避坑指南)

本文详细介绍了如何从零复现IEEE 2025高光谱图像盲超分算法DBSR,包括环境配置、数据预处理、核心模块解析、训练策略及常见问题解决方案。特别针对开源代码中的关键步骤和潜在问题提供了实用指南,帮助研究者和开发者高效实现Deep blind super-resolution技术,适用于遥感、医疗等领域的图像增强应用。

weixin_42524708的博客 413

奇虎郑文彬:还原系统保护技术原理和攻防

 奇虎郑文彬:还原系统保护技术原理和攻防3月19日,由中国最大的互联网综合服务提供商腾讯发起和组织的互联网安全峰会进入第二天。包括微软、盛大、新浪等互联网界各大巨头的技术专家,学者和专业人士参与了此次的交流。此次峰会是今年以来首场由中国互联网各顶尖企业共同参与的大型网络安全专业盛会。来自奇虎的反木马专家郑文彬,在现场发表演讲。以下为文字实录:郑文彬:大家好!我今天给大家介绍这几个方面:背景、还原系

唯一谣|Airs|走尽天涯路|极地阳光 3291

微信小程序URL Link全解析:从生成原理到实战应用(附Java代码)

本文深入解析微信小程序URL Link的生成原理与实战应用。URL Link是微信官方提供的智能路由协议,通过中间页实现外部链接安全跳转至小程序指定页面。文章详细阐述了其权限模型、环境版本差异及跳转机制,并提供了包含令牌管理、异常处理和性能优化的健壮Java实现方案,助力开发者构建高可用的链接生成服务。

weixin_29327525的博客 1217

还原系统保护技术原理和攻防

作者:奇虎郑文彬 3月19日,由中国最大的互联网综合服务提供商腾讯发起和组织的互联网安全峰会进入第二天。包括微软、盛大、新浪等互联网界各大巨头的技术专家,学者和专业人士参与了此次的交流。此次峰会是今年以来首场由中国互联网各顶尖企业共同参与的大型网络安全专业盛会。 来自奇虎的反木马专家郑文彬,在现场发表演讲。以下为文字实录: 郑文彬:大家好!我今天给大家介绍这几个方面...

weixin_33910460的博客 146

从Bit到MCS:深度解析Xilinx FPGA程序固化流程与文件选型

本文深度解析Xilinx FPGA程序从调试到量产的固化流程,重点对比BIT、BIN、MCS和ELF四种文件格式的特性与适用场景。针对工业级应用,详细讲解MCS文件的生成优化、Flash烧录避坑指南及三级验证流程,并分享多镜像管理、加密安全等高级技巧,帮助开发者提升FPGA量产可靠性。

weixin_30924239的博客 324

干货满满!AI应用架构师分享AI驱动虚拟展示干货

虚拟展示(Virtual Presentation):用数字技术将物理对象/场景转化为可交互的虚拟内容(比如3D文物、虚拟试衣间);AI驱动(AI-Powered):通过AI技术实现实时交互、智能决策、个性化生成,让虚拟内容“活”起来;AI驱动虚拟展示:以用户体验为核心,将“3D渲染+AI理解+实时数据”融合,形成“感知-决策-反馈”的闭环系统。前端交互层是用户直接体验到的部分,再厉害的AI和渲染,只要前端交互烂,用户都会跑。我见过很多团队为了“炫技”做了复杂的AI功能,结果用户不会用。

AI大模型应用之禅 536

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 190

python代码实现了一个基于图注意力网络(GAT)和长短期记忆网络(LSTM)的股票成交量预测模型

自定义数据集类:定义了类,继承自。该类用于生成股票数据的时间序列样本,每个样本包含一个长度为seq_length的时间序列和对应的目标成交量。数据加载器:使用DataLoader对数据集进行批量加载,设置批量大小为 64,并开启数据打乱功能。GAT - LSTM 模型:定义了GAT_LSTM类,继承自。该模型结合了 GAT 和 LSTM 两种神经网络:GAT 部分:使用GATConv处理全局图特征,捕获股票之间的相互关系。LSTM 部分:使用nn.LSTM处理时间序列数据,捕捉时间序列的动态变化。

huanghm88的专栏 425

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 284

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3161

【异常】API 速率限制报错问题全流程排查与解决指南 API rate limit reached. Please try again later.

摘要: 本文针对大模型API开发中常见的速率限制报错("API rate limit reached")提供全流程解决方案。首先解析该报错的本质是服务端对高频调用的保护机制,通过三步排查法确认根因:客户端请求频率超出账户阈值。提出三级解决方案:1)临时等待限流周期重置;2)升级付费账户提高调用配额;3)构建多模型容灾架构实现自动切换。建议生产环境优先采用容灾方案,通过备用API节点保障业务连续性,同时平衡不同模型服务的成本与性能。

奶爸的编程之路,也就一周冷个三天 1430

数据结构的基本概念和算法的初步认识

本文系统阐述数据结构与算法的基础概念,涵盖数据、数据元素、数据对象的层次关系,数据结构的三要素(逻辑结构、存储结构、数据运算),以及抽象数据类型。重点解析算法的特性与设计要求,并深入讲解时间复杂度分析的核心——大O表示法,通过“只保留最高阶项、忽略常数系数、取最坏情况”三大原则,结合实例剖析O(1)、O(n)等常见时间复杂度,揭示算法效率的本质评估方法。

ACH_YYX的博客 188

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

数据结构:9.Map和Set

有的讲解会说这里key是标识作用,这种说法其实没有太大意义,就算知道了他是标识value的作用又如何,在实际的使用过程中,我们只会根据具体的效果选择使用的方法等,不会执着于“标识”这种说法。2.由于哈希函数的设计原则太过理论,它仅仅是在认为:这些通过关键码算出来的index不同 的情况下设计的,然而这种理论化的设计原则在遇到冲突时,恰恰就出现了问题,而我们能做的,就是降低冲突率。虽然哈希表的使用过程中存在冲突,但是在实际的使用过程中,哈希表的冲突率是不高的,冲突的个数是可控的。

2602_95646088的博客 203

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 343

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

排序算法深度笔记(上):比较类排序的思想演进与代码实现

与。本文聚焦前者 —— 也就是通过元素间两两比较来确定相对顺序的排序算法,从最朴素的 O (n²) 基础排序,到工业级主流的 O (nlogn) 进阶排序,逐层拆解设计思想、带注释的代码实现与边界细节。当我们理解了比较排序的性能边界,也就自然引出了非比较排序的存在意义。所有代码均遵循统一的实现规范:入口函数前置空数组与单元素边界校验,基于数组原地修改,主函数附带可直接运行的测试用例,与练习代码风格完全对齐。

2401_87069538的博客 611

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CF2283F[数据结构]

首先考虑一种暴力解法,当我们建好i之前的图后,当我们添加i的时候,区间[li,ri]中的点都会向i建边,但是这些点中,如果有某两个顶点l,r,满足l<r,那么l就可以通过r间接到达i,因此可以删除l到i的边;初始时我们令所有点放入set中,然后对于每一个i的处理,我们将集合中仍在[l,r]的范围的点弹出,并且将f设置为i,这样我们就得到了所有点的最小跳板;对于每个区间[l,r] 我们要计算这下下标中的f(v)中大于r的数目有多少个;我们令f(v)表示顶点v可到达的最小的顶点;

蒟蒻 141

笔记-论数据结构2

typedef 数据类型 别名return 0;typedef也经常用在结构体上:每次声明结构体变量都要写struct关键字,很麻烦,而且逻辑上也很难受,typedef可以解决这个问题。int x;int y;p.x = 5;p.y = 10;return 0;而利用typedef解决有两种解法:typedef struct 结构体名数据类型 变量名;数据类型 变量名;……}别名;数据类型 变量名;数据类型 变量名;……}别名;实际的运用int x;

fish_zzzz的博客 111

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 85

【数据结构-2】顺序表的实现

线性表是一种数据结构,它分为逻辑结构和物理结构,在逻辑结构上线性表是呈线性的,数据是是连续存储的;在物理结构(物理空间)上,线性表不一定是连续存储的。线性表的实现,主要分为数组和链式结构。顺序表是线性表的一种实现方式,顺序表在逻辑结构和物理结构上都是连续的。顺序表的底层实现是数组。

weixin_44218929的博客 209

数据结构:排序

将一组无序的记录(数据元素),按照某个关键字(key)递增或递减的顺序重新排列。

2502_92937908的博客 468

Python 开发的实践:从数据结构选型到框架决策

规模多大?决定用list还是set,Pandas 还是 Polars。瓶颈在哪?I/O 密集用异步,CPU 密集用进程/自由线程,内存受限用列式与惰性执行。代价是什么?消除手动维护窗口的出错面,TaskGroup消除失败任务不被取消的泄漏,消除 N+1,Protocol消除为类型约束而引入的继承层级——每个选择都在消除某类代价,同时也引入新的约束。能回答这三个问题,比记住更多 API 更有用。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

weixin_45809780的博客 381

头歌 数据结构——C&C++线性表实训

本系列任务围绕线性表的链式实现,依次完成顺序构建、逆序构建、排序插入、查找、删除、求长度及栈、队列、集合等应用。通过动态内存分配与指针操作,掌握单链表的基本操作与实际应用,涵盖插入、删除、遍历、搜索等核心功能,最终实现数据结构在典型场景中的灵活运用。

一名敲代码的苦13程序员 238

CDGA DMBOK 第5章——数据建模和设计:如何将业务需求转化为规范的数据结构

本章系统阐述数据建模与设计的核心方法,强调将业务需求转化为规范数据结构的全过程。重点涵盖数据模型三层次(概念、逻辑、物理)、实体关系模型(ER)及主键、外键等核心要素,深入解析第一至第三范式,阐明规范化在消除冗余、保障数据一致性的关键作用,并介绍反规范化在性能优化中的合理应用。通过“概念看业务、逻辑看结构、物理看实现”的逻辑框架,实现从需求到数据库落地的完整闭环。

积跬步,慕至千里的博客 309

数据结构第三课:单链表与双向链表

单链表是基于结点的非连续存储结构,由数据域和指针域组成,逻辑上连续但物理上可不连续。其核心优势在于动态增删高效,适合频繁插入删除场景;相较顺序表,虽有指针开销且访问需遍历,但灵活性更高。常见算法包括反转、中间节点查找、合并有序链表及环检测等。双向链表通过前后指针提升操作效率,实际应用中常采用带头循环双向链表结构。

2503_93549121的博客 210
上一篇: Outlook的Automation对象编程方法
下一篇: HttpScan
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值