BUAA_OO_2025_第一单元总结

w_a_y___ w_a_y___ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

目录

目录

目录

 

BUAA_OO_2025_第一单元总结

第一次作业

架构

Bug

感受

第二次作业

架构

Bug

感受

第三次作业

架构

Bug

总体感受


 

BUAA_OO_2025_第一单元总结

经过了一个单元的学习,有了一些心得体会,取得了能力上的进步和心态上的磨炼。在此记录本单元三次代码的架构、设计思路和bug。

 

第一次作业

架构

 

上面是我重构后的第一次作业。重构前的代码非常奇怪,factor当做父类而非接口使用,并且添加了大量方法,既复杂,也难以扩展。所以在研讨课后借鉴同学思路,改成了上面的架构,仍采用token和lexer读取输入,采用factor接口,并使用Poly和Mono类来计算表达式。

Bug

第一,我第一次作业出现一个愚蠢的错误,在把所有的coef从int类型改为BigInteger类型时,有一处parseInt方法没有改正,导致错误,并且没有进入互测。

第二,还出现了符号的问题。因为表达式有可能作为因子,并且表达式、项、因子均可以携带符号,所以在递归输入处理符号时出现了问题。

第三,关于深克隆和浅克隆的问题,这会导致乘方出错。所有的方法中最好采用深克隆,比如我在每个方法会使用如下方法把返回的对象重新实例化出来。

Object obj = new Object();

第四,化简问题。必须要边做乘法(乘方)边运算,否则会出现内存爆炸问题。譬如

(x+1)^8*(x+1)^8*(x+1)^8*(x+1)^8*(x+1)^8

感受

第一次作业主要重温了面向对象的编程思路,学习了递归下降处理表达式的方法,学习用Token处理数据,同时感受到预先的构造一些测试点在中测基础上进行测试是十分有必要的。如果能够自己构造足够全面的数据,就能提前更正一些非常愚蠢的错误,从而避免强测失败。

另外,还学习了一些小技巧。比如使用replace函数预处理数据。

 

第二次作业

架构

 这是我第二次作业的架构。相比第一次作业,本次作业新增了关于自定义递推函数和三角的相关内容。本次作业是我三次作业中最为惨痛的一次,强测几乎全军覆没,出现了许许多多的有较大影响的bug。

从架构角度,我新增了Fucntion类和FuncParse类用于处理自定义递推函数。这部分也随之产生了许多bug。我的思路是在这部分提前将所有的f替换为正常的表达式,再用Token流读取。另外新增了TrigMono和TrigTerm类用于处理三角函数。

Bug

本次作业我的Bug最多。

第一,预处理部分,函数的边界,形参的边界问题,形参的替换问题等。这部分甚至直到第三次作业的bug处理时我才真正完全处理好。

第二,三角部分,现在的架构是修改后的。原先对三角函数的处理非常潦草。修改后使用TrigMono类来表示一般三角函数的表达式。同时,这部分还有很多相关bug。譬如化简,不能一味追求化简而抛弃性能,甚至导致额外bug。但必要的合并同类项不能缺少。于是需要equal方法。但值得注意的是,有些地方需要两个式子完全相同(三角函数内的子表达式),有些地方不需要系数相同也能合并同类项。

感受

全是泪

为了debug熬了许多夜,但没能取得好成绩。有痛心,有反思,为什么不能提前构造更好的数据,而是只满足于中测全对?这是我在第二单元着重要解决的问题:进入互测。

 

第三次作业

架构

 这是我第三次作业的架构。

第三次作业加入了自定义函数和求导。求导主要参考第二次实验的相关思路,自定义函数则参考递推函数,我把g,h统一到f中一起处理。

Bug

这次主要是两个非常致命的bug。由于我第二次作业debug花费时间过长,导致我没有充分时间来构造测试点测试第三次作业,于是出现以下bug

第一,cos求导居然没有负号。

第二,判断形参是否含函数时把或逻辑写成与逻辑。

这是愚蠢的错误,不可接受的错误。在此反思,下个单元需要在第一次开始写代码时就更专注的完成。

总体感受

第一单元的作业反映出我许多不足。我一次互测也没有进入,这反映出我一次构造代码能力差,debug能力差,构造数据点能力不足的问题。

在以后学习中,不断努力,不断学习,增强自己的实力,争取取得进步。

...全文

相关推荐

【高速互连技术】基于线性均衡的PCIe链路扩展方案:重驱动器在高损耗通道中的信号完整性优化

内容概要:本文介绍了如何利用线性均衡技术扩展PCI Express(PCIe)链路的传输距离,重点探讨了重驱动器(Re-Driver)在补偿PCB和电缆信道损耗中的作用。文章回顾了Re-Driver的发展历程,分析其性能特点,解释其在不同信道环境下的应用条件,并强调线性操作对保持信号完整性及满足PCIe规范的重要性。通过眼图分析、频率响应和Tx预设波形等手段,展示了R

Kernel_RDMA

谐波去噪基于随机奇异值分解和软阈值的大型数据集中的强大高效谐波去噪研究(Matlab代码实现)

内容概要:本文研究了一种基于随机奇异值分解(Randomized SVD)和软阈值(Soft Thresholding)的高效谐波去噪方法,旨在解决大型数据集中谐波干扰的抑制问题。该方法通过引入随机化技术加速传统奇异值分解过程,在保障信号主要特征完整性的同时,显著提升了高维数据处理的计算效率与实时性,适用于电力系统、通信等领域的复杂信号处理场景。文中系统阐述了算法的数学理论基础、实现步骤及在Matlab环境下的具体代码实现,并通过仿真实验验证了其在不同噪声水平下对谐波成分的有效识别与去除能力,展现出优异的鲁棒性与工程实用价值。; 适合人群:具备一定信号处理理论基础和Matlab编程能力,从事电力系统分析、通信工程、自动化控制或相关领域研究的研发人员及硕士、博士研究生。; 使用场景及目标:①应用于大规模实测信号中谐波成分的快速提取与抑制;②用于提升电能质量监测、设备故障诊断、精密仪器测量等应用中的信号信噪比;③为高维时序数据的高效去噪提供可复现、易部署的算法模板与技术参考。; 阅读建议:建议读者结合提供的Matlab代码逐模块理解算法实现细节,重点掌握随机SVD与软阈值去噪的协同机制,并尝试在实际采集数据上进行参数调优与性能测试,以深入理解其适用边界与优化潜力。

三伯

binutils-2.19.92.tar.bz2

binutils-2.19.92.tar.bz2

一and一>二

Agent Skills 实战速查包(Claude Code 技能体系/格式全表/加载位置/触发传参/上下文成本/打包分发/安全治理/排错)

Agent Skills 是 2025 年底以来 AI 编码工具领域事实上的新开放标准(Anthropic 开源、agentskills.io 承载规范),Claude Code、claude.ai、Claude API 及各兼容 agent 都在用;但规范页、Claude Code 文档、示例仓库三处全英文且互相引用,行为细节(比如哪些 frontmatter 字段出了 Claude Code 上传就会失败)散落各段。本包按「看懂格式 → 放对位置 → 控制触发 → 算清 token → 打包分发 → 审安全 → 排错」一条线整理:技能三层渐进加载与 CLAUDE.md/命令/MCP 的边界、7 种加载位置与同名优先级、SKILL.md 开放标准 6 字段 + Claude Code 扩展 17 字段逐条约束与跨产品红线、$ARGUMENTS/$1/命名参数两种传参、描述列表 1% 压缩预算与 skillOverrides 四状态、context:fork 子代理与动态注入的完整行为矩阵(位置规则/失败语义/权限检查)、官方写法最佳实践与对照基线的 eval 闭环、Git/插件市场/企业托管三条分发路与 marketplace.json 结构、自放行与第三方技能进场审查、YAML 解析失败静默降级与非零退出中止整个技能调用等 16 类症状反查。附 SKILL.template、marketplace.template、settings.template 三份可直接改占位的骨架与一个零依赖校验脚本(合法 exit 0、错误 exit 1 逐条打印)。本包不含任何程序本体,只整理规则与配置骨架;示例一律 YOUR_*/your-* 占位。

xiaoqiangclub

mongodb-org-mongos_8.0.13_arm64.deb

mongodb-org-mongos_8.0.13_arm64

一and一>二
评论
收藏 已收藏
分享
返回顶部