自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 哈希表介绍

哈希表通过数组、链表与哈希算法实现高效键值存储,利用哈希值定位下标,冲突时用链表处理。插入、查找平均时间复杂度为O(1),当负载超过75%时扩容并rehash。需注意key应不可变且重写hashCode与equals,非线程安全,大容量下性能远超顺序查找。

2026-11-02 20:23:22 206

原创 二叉树和hash算法

本文梳理了数据结构课程中的核心内容:搭建WSL开发环境并手动编译C代码;详解二叉树的结构与插入策略,包括层序遍历与排序树;剖析字符串比较中==与equals的本质区别,强调使用equals进行内容比较;最后重点说明自定义类需成对重写equals与hashCode,确保一致性,并介绍哈希值在树结构中的应用及优化原则。

2026-10-25 11:38:10 178

原创 Java 写一个双向链表

本文介绍了Java中双向链表的实现原理,强调节点与链表管理类分离的设计思想。通过泛型<E>支持任意类型数据,利用prev和next指针实现双向遍历。重点对比了有无tail指针时添加元素的效率:有尾节点可实现O(1)尾部插入,避免遍历。后续方法如头插、指定位置插入、删除与查找均基于指针操作,体现链表在插入删除上的高效性。最后简要提及时间复杂度概念,突出链表在动态操作中的优势。

2026-10-24 13:47:57 148

原创 函数传值和栈,队列

本课讲解结构体字符串赋值、函数传参机制及栈队列实现。结构体字符数组不可直接赋值,需用strcpy或循环拷贝;函数传值为副本,改数据须传地址。栈(先进后出)与队列(先进先出)可用数组或链表实现,数组版通过top控制栈顶,循环队列用取余实现环形存储。注意函数参数求值顺序不确定,避免连写pop导致输出错乱;递归无终止条件将引发栈溢出。

2026-10-17 15:06:57 144

原创 小恶意代码识别器(5)

回头看这整个项目,技术上用到的是文件读写、结构体数组、循环和函数,都是课程内的内容,难的是把它们组织成一个完整的、能应对异常输入的程序。更有价值的其实是另外两件事:一是养成了写完就测的习惯,编译器查不出的错误只能靠测试发现;二是学会了跟 AI 协作的边界,用它提效但保留自己的判断,交付的东西必须自己讲得清楚。

2026-10-14 10:27:24 146

原创 小恶意代码识别器(4)

本文实现逻辑回归模型的预测逻辑:通过归一化将特征缩放到0-1区间,利用模型文件中的权重与偏置计算加权和,再经Sigmoid函数转换为0-1概率。关键点包括统一使用训练集的min/max进行归一化、防止除零错误、正确读取模型参数,并验证结果与标准答案一致,确保模型可复现且判断准确。

2026-10-13 11:14:38 164

原创 小恶意代码识别器(3)

本文介绍数据校验函数 validate_dataset 的设计与实现。针对读取后仍可能存在的非法数据(如标签非0/1、熵超范围等),通过独立校验函数确保数据合法性。函数检查数据集非空、标签、文件大小、信息熵及比例等字段是否在合法范围内,采用“不合法条件”判断避免逻辑错误,并返回0表示通过、1表示失败,便于调用方处理。结合测试用例验证其有效性,强调及时测试的重要性,为后续归一化与预测奠定可靠数据基础。

2026-10-13 11:13:05 208

原创 小恶意代码识别器(2)

本文记录了用C语言实现load_dataset函数的完整过程:从读取CSV文件、跳过表头、用sscanf解析数据,到安全存入结构体数组,并解决因未清零计数导致的残留数据问题。通过逐行处理与错误检测,成功实现首个核心函数,为后续数据校验与模型训练奠定基础。

2026-10-12 11:32:52 136

原创 小恶意代码识别器(1)

本综合实践要求用C语言实现一个基于静态特征的恶意代码识别器,处理CSV格式数据,完成数据读取、合法性校验、逻辑回归模型训练与预测,并通过命令行菜单集成。核心任务包括需求分析、模块开发、系统联调及修复大模型生成代码中的错误。评分注重过程:代码独立性、测试验证、AI协作质量与安全边界遵守。提交内容涵盖源码、报告、测试证据链及三组真实交互记录,强调对原理的理解而非仅依赖AI生成。

2026-10-12 11:31:17 168

原创 C语言核心语法

本文系统梳理了C语言核心知识点:程序结构包括头文件引入与main函数;数据类型与变量(整型、浮点型、字符、数组、指针、结构体);格式化输入输出(printf/scanf)及占位符、转义符;运算符与逻辑控制(算术、比较、逻辑、三目、位移);数组与函数的定义调用;指针与动态内存管理;结构体与链表实现。内容涵盖语法基础、内存机制与常见数据结构,适用于初学者快速掌握C语言核心概念。

2026-10-06 01:08:43 177

原创 初学链表知识

链表由节点组成,每个节点包含数据和指向下一个节点的指针。通过 head 节点(固定在栈上)作为入口,用 tail 指针记录末尾,实现高效添加。添加时分空链表与非空情况:空时直接存入 head,非空则动态申请内存并连接。遍历需从头开始,循环中打印当前节点数据,最后单独输出最后一个节点。NULL 标志链表结束,tail 必须初始化为 &head 以避免崩溃。注意 -> 用于指针,. 用于结构体本身。

2026-10-04 21:48:33 154

原创 指针初步学习

指针本质是内存地址(门牌号)。int *p = &a; 将变量 a 的地址存入 p,p 不存值,只存“门牌号”。*p 是“开门取值”的钥匙,*p = 20 才能修改原值。函数传参时,若需修改原变量,必须传地址(如 int *x),通过 *x 实现对原件的修改,否则仅操作副本。

2026-10-01 19:25:40 78

原创 从零开始编制五子棋,代码和逻辑拆解(2)

本文详解五子棋界面开发中的核心逻辑:通过双缓存机制管理棋盘状态,实现初始化、落子、胜负判定、悔棋与重绘等功能。关键在于以当前落子为中心,向四个方向检测连续五子;利用栈结构支持悔棋操作,并在游戏结束时高亮获胜连线,确保逻辑清晰、交互流畅。

2026-09-17 15:20:53 157

原创 从零开始编制五子棋,代码和逻辑拆解(1)

本文介绍了五子棋界面的开发实现,通过Chess类封装棋子数据,利用MyFrame继承JFrame并重写paint方法实现界面绘制,结合ChessUtils完成棋盘与棋子的绘制逻辑。通过GoListener监听鼠标点击落子,ButtonAction处理“开始”“悔棋”按钮事件,最终在GoBackUI中整合各组件并启动游戏,体现了界面与逻辑分离的设计思想。

2026-09-13 20:10:14 170

原创 象棋棋盘的布局实现

象棋棋盘布局实现摘要 本文介绍了Java实现象棋棋盘布局的三种核心组件:GoBangUI.java作为程序入口,负责主窗体创建;MyFrame.java继承JFrame,处理棋盘背景和网格线绘制;XQ.java定义棋盘数据结构,使用10×9二维数组存储棋子信息。重点剖析了XQ.java如何通过initChessArr数组初始化棋子位置,并实现从数组下标到屏幕坐标的转换逻辑。MyFrame通过重写paint方法,依次绘制棋盘背景、网格线和"楚河汉界"等元素,展示了面向对象设计中数据与视图分离的思想。

2026-08-15 11:19:45 216

原创 登录界面功能初步实现

本文介绍了Java图形界面中监听器接口的实现与画笔使用。主要内容包括:1)接口定义与实现方法;2)三种常用监听器接口(ActionListener、MouseListener、KeyListener)的功能与实现步骤;3)通过事件对象获取触发数据;4)Graphics画笔的获取、传递与绘图应用。文章通过一个登录界面示例演示了如何创建按钮和鼠标监听器,获取鼠标坐标并绘制图形,最终实现了在窗体上通过鼠标操作绘制3D矩形和三角形的功能。代码展示了监听器类的实现、主程序创建以及运行效果截图。

2026-08-12 13:30:14 190

原创 登录界面开发

创建类:编写一个 Java 类作为界面的入口。创建窗体对象并设置属性:实例化 JFrame,设置标题、尺寸、位置、关闭操作、布局等创建组件对象并添加到窗体:实例化各种按钮、输入框、标签等,设置好内容后,通过 add() 方法添加到窗体上,最后让窗体可见。

2026-08-11 16:03:53 161

原创 背景C语言实现学生管理系统:从零构建你的第一个控制台项目 [特殊字符]

这篇文章介绍了一个基于C语言的学生管理系统实现,主要面向初学者展示如何将指针、结构体、动态内存分配等核心知识点整合应用。系统采用菜单驱动模式,提供添加、删除、查找和显示学生信息等功能。文章重点分析了代码中的技术要点,包括结构体建模、动态内存管理、函数封装等,并指出了初学者常见的命名不规范和逻辑问题(如删除函数实际只返回下标)。系统通过动态数组实现数据存储,演示了数组元素删除时的前移操作。最后提供了完整代码示例,展示了控制台中文显示处理等实用技巧,帮助初学者理解如何构建结构化的C语言项目。

2026-08-08 11:30:13 170

原创 函数与扩容

本文介绍了C语言中数组扩容的实现方法。由于C语言数组长度固定,扩容需要创建新数组并迁移数据。文章详细展示了扩容函数addData的实现逻辑:当数组存满时,动态分配双倍空间的新数组,迁移旧数据后更新指针和容量信息,最后返回新数组地址。该函数通过指针操作完成扩容,解决了固定长度数组的容量限制问题,同时保持了数据完整性。代码示例演示了如何通过指针和动态内存分配实现数组的动态扩容机制。

2026-08-03 12:10:06 166

原创 初学函数知识

本文介绍了C语言函数的基本概念和构成。函数通过输入参数经处理后返回输出结果,定义格式包含返回值类型、函数名和参数列表。返回值类型决定函数是否返回数据(void表示无返回值),函数名是唯一标识,参数是预设的变量。以add函数为例演示了函数定义和调用过程:定义接收两个整型参数的add函数并返回和,在main函数中通过传入具体值调用add函数并处理返回值。摘要概括了函数的核心要素和简单应用。

2026-08-03 11:25:53 38

原创 数字仓库与指针扩容

本文介绍了数字仓库系统的设计与实现。系统采用动态数组存储数据,初始容量为10,支持存入/查找/删除数字等操作。当数组存满时,通过指针和malloc函数实现动态扩容(容量加倍)。主要解决了固定容量导致存储不足或浪费的问题,核心代码包括数组初始化、数据迁移和扩容处理。系统还提供了交互式菜单界面,方便用户操作。该方案有效平衡了存储效率和内存使用,为数字管理提供了灵活可靠的解决方案。

2026-07-31 23:28:33 29

原创 初学指针知识

本文介绍了C语言指针的基础知识:1. 指针本质是存储变量地址的变量,通过数据类型 *变量名定义,可进行算术运算和间接访问;2. 函数参数传递分"值传递"(拷贝数值)和"地址传递"(通过指针修改原值);3. 数组名即首元素地址,可用指针遍历数组;4. 在scanf输入时,整型需要取地址符&,字符数组名本身即为地址。指针通过操作内存地址实现高效数据访问和修改,是C语言核心特性之一。(149字)

2026-07-28 18:45:10 238

原创 初学数组知识

本文介绍了C语言数组基础语法,包括:1. 数组定义格式(如int arr[100])及字符串本质是字符数组;2. 数组长度计算方法(sizeof(arr)/sizeof(int))和下标从0开始的特性;3. 数组元素访问/赋值方法及字符串操作(大小写转换、拼接);4. 输入输出操作(整数/浮点数/字符串的scanf用法)及数组逆序输出示例。重点涵盖了数组声明、遍历、边界控制等核心概念,并提供了标准输入处理和字符串库函数的实际应用示例。

2026-07-26 16:11:19 147

原创 C语言入门语法

本文介绍了C++基础语法,包括程序结构、运算符、输出和条件判断。程序基本结构包含头文件引入和main函数;运算符涵盖算术、关系、逻辑等类型;输出部分演示了字符串、整数、浮点数及变量的打印方法,并说明换行符的使用;最后通过一个数字判断示例展示if-else条件语句的用法。全文提供了多个代码片段说明基础语法要点,适合C++初学者快速了解基本语法结构。

2026-07-25 11:51:14 42

原创 Java基础语法3

本文介绍了Java面向对象编程中类和对象的基础概念与使用方法。类(class)是具有相同属性和行为的抽象概念,如学生类包含姓名、年龄等属性和学习、考试等方法,通过public class 类名{}定义。对象(object)是类的具体实例,通过类名 对象名=new 类名()创建,可使用对象名.属性赋值(如s1.name="小明")和对象名.方法()调用功能(如s1.study())。文中通过学生类的代码示例,展示了定义属性(String name)、方法(public void study())以及创建对象并

2026-07-23 12:11:11 174

原创 关于一个初学者被Java基础语法搞服的那些事

本文记录了Java初学者在学习基础语法时遇到的典型困惑。主要包括三方面问题:1. 输入顺序与代码逻辑的严格对应关系,强调在循环中必须保持输入顺序与题目要求一致;2. for循环中i++的作用理解误区,解释其本质是循环计数器而非数据处理变量;3) 条件判断逻辑的常见错误,如质数判断中不能过早下结论、循环起始值的选择影响等。通过具体代码示例和错误分析,文章揭示了初学者容易混淆的概念,并提供了正确的理解方式:循环变量仅控制执行次数,条件判断需完整遍历所有可能,代码结构必须严格符合语法要求。这些经验对Java入门者

2026-07-19 13:27:20 224

原创 Java基础语法2

摘要 本文介绍了Java基础语法中的三个核心知识点:输入、循环和运算符。输入部分讲解了Scanner类的使用方法,包括导入、创建实例及读取不同类型输入。循环部分阐述了for循环结构及break/continue控制语句的作用。运算符部分展示了简化赋值和自增/自减运算的各种写法。通过代码示例和图示,清晰呈现了Java基础语法的实际应用场景。这些知识点是Java编程入门的必备基础。

2026-07-17 19:31:43 40

原创 【无标题】

本文介绍了在洛谷平台刷题的流程与注意事项。刷题步骤包括:通过训练题单选择题目类型,进入IDE编写代码,运行测试结果后提交。平台提供题目难度和通过率参考,建议选择适合自身水平的题目。特别提醒需注意题目中的隐含条件,这往往是解题关键。整个流程配合截图说明,帮助用户高效完成编程练习。

2026-07-17 19:16:09 170

原创 Java基础语法

本文介绍了Java基础语法的核心内容,包括程序结构、输出打印语句、数据类型与变量、运算符以及条件判断语句。主要内容为:1)Java程序的基本结构(类结构和main方法入口);2)System.out.println()的使用方法及字符串拼接技巧;3) 常用数据类型(int、double、String)和变量的定义使用;4)各类运算符(算术、赋值、比较、逻辑);5) if-else条件判断语句的三种形式及应用场景。文中通过矩形/圆形计算器等示例代码演示了这些语法的实际应用,并强调了使用变量提高代码可维护性的重

2026-07-14 17:54:57 216

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除