【学习笔记】Day 16-17

news2024/9/22 11:41:36

一、进度概述

        1、ddnet_main 相关代码学习(预计 3-4 天)

二、详情

1、顶层结构

        关于代码顶层结构的一些思考和总结,其中下图为师兄代码的文件结构

总结:
        对于一个优秀的代码,其文件结构一定也是清晰的,最常见的就是数据的分类。回顾我自己做的几个项目,几乎都是所用文件全扔一个地方(很惭愧的来讲,我目前还没有写过类似于 path_config.py 的文件)。将数据,模型分门别类的整理在各自文件夹中,既美观好看,又好对其做相关处理(如更新)。

2、代码原理分析

        各个文件的详细说明这里就不重复了,在 README.md 中有很详细的说明。
        原理上的东西可能还需要一定时间的研究

3、感悟

1)模块化

        经过这几天的研读后,个人觉得 ddnet_main 与本科期间的小项目最大的不同在于模块化的分类。
        何为模块化?在我之前 fpga 相关项目的笔记中提到过,模块化代码使得我在编写相似项目的过程中省下了极大部分的经历,将一个项目拆分成不同的子任务,再对子任务中的不同进程进行分类,使得最后成为具有通用性质的模版代码。换句话讲,这其实也是一种意义上的函数。在 C++ 中,有一种结构叫做 “类”,编写最基本的 “类”,而后根据不同的特性化需求进行一定程度上的派生,从而形成了能处理各种不同数据的函数(这只是类比,实际上这个项目是用 python 编写的)。在编写大项目中,要着重把握这一思维,这样能大大减小重复化的代码编写。如这里的 path_config.py,路径的相关编写可以参考这个。
        这里好像突然就明白当初那个自己写的篮球计数器为啥会出现顶层 contral 文件没办法成功运行了,大概率就是因为没有路径配置,导致调用文件出现了点问题(改天回去看看)。

2)运行反馈

        在以往的代码编写经历中,我时常有着 debug de 红温的经历,一部分原因是因为代码硬实力不够,导致对着报错也得分析好一阵子才能解决;一部分原因是代码习惯不好,如双边符号只有一个;还有一部分原因就是没有编写运行反馈的习惯,导致一些原理上的错误很难找到。如下图:

        为什么说一定需要有运行反馈呢?编译器的报错只能帮你纠正语法和格式上的错误,对于运行原理,它是没有办法的。对于本科期间的小程序,你实在搞不定,可以地毯式重新过一遍代码,但这样做的前提是他体量小。当代码体量逐渐增大,这么干就显得很不明智了。而良好的运行反馈,则能帮你快速定位。
        这一点需要好好学习,这种习惯是我的弱项。

3)关于 readme

        readme 不仅仅对读代码的人来说是一个快速了解这个代码的运行逻辑,以及相关注意事项的好帮手,更是帮自己理清思路的方法。
        对我个人而言,已经有建立 readme.txt 的习惯,但是受限于 txt 只能记录文本,有些情况下十分不方便。这里发现 .md 文件是个好东西,值得学习。


后记

2024.8.17

        今天的主要内容是逐句分析 ddnet_main 相关代码,暂未完成,具体整理见明天的笔记。
        在阅读代码的过程中,发现自己的 Python 相关代码能力还有些弱,很多语法,用法上的东西还需要回到教材中去复习,这点不应该。
        关于 Python 代码能力,相关见 Python 专题整理,后续会重新开始更新该专题。

2024.8.18

        继续整理学习代码。
        今天的主要内容是关于代码顶层结构的一些思考和总结,更多细节上的代码后续继续整理。
        原理上的东西可能还需要一定时间的研究,现在依然存在原理上的理解问题,以及再很惭愧的是,python 能力真的很弱啊。
        而且还有挺多库需要去学的,好多都没见过。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2051099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

随笔五、开发板连接WIFI并通过SSH连接泰山派

摘要:通过wifi连接内网,电脑通过SSH连接泰山派 1. 泰山派接入WIFI 泰山派开发板SDK已经集成wifi_start.sh脚本,在脚本后面直接输入wifi名字和密码就能连接wifi rootRK356X:/# wifi_start.sh wifi名字 wifi密码 查看ip地址,wlan0就…

洛谷 P6359 [CEOI2018] Cloud computing

题目本质:贪心01背包(dp) 题目思路:dp[i][j] 表示考虑前 i 台计算机,能够获得 j 个核心时,所能获得的最大价值。将其可以优化为dp[i] 表示能够获得 i 个核心时,所能获得的最大价值。 状态转移…

jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)

正文: 随着Jira敏捷开发方法论的普及,Jira已经成为全球软件开发团队管理项目、任务和问题的首选工具。为了帮助团队更好地掌握Jira的核心功能,精心准备了一套全面开发技术及案例视频教程——《Jira敏捷开发管理工具视频教程Confluenc…

学习大数据DAY38 hive 安装与配置

目录 hadoop 大数据平台-hive 组件部署介绍 hadoop 大数据平台-Hive 部署步骤 教学视频 上机作业 hadoop 大数据平台-hive 组件部署介绍 metastore:保存关于表、列、分区、数据格式、存储位置等各种元数据信 Driver:负责与 Hive 服务器建立网络连接,使客户端能…

Unity的动画系统

目录 Unity动画系统的最新更新和改进有哪些? 如何在Unity中高效地使用Animator组件进行复杂动画制作? Unity动画系统中的动画混合和分层功能是如何工作的? 动画混合( blend tree) 动画分层 在Unity中创建和管理动…

一键运行RocketMQ5.3和Dashboard

一键运行RocketMQ5.3和Dashboard 目录 一键运行RocketMQ5.3和Dashboard通过Docker Compose 来一键启动运行的容器包括docker-compose.yml文件运行命令启动本地效果查看 参考信息 通过Docker Compose 来一键启动 运行的容器包括 NameServerBrokerProxyDashBoard docker-compo…

RabbitMQ消息队列总结(❤❤❤❤❤)

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖2. 生产者…

微信消息防撤回插件

该软件可以恢复别人撤回的消息。 版本特色: 1、看到对方撤回的消息 2、多账号可正常登录 修改原理,如下图: 使用说明: 1、需电脑登录 2、解压后,双击start_wechat.bat来运行软件 下载地址:Wechat防撤…

UE基础 —— 资产和内容包

目录 直接导入资产 使用资产 创建资产 资产引用 管理资产 移动和复制资产 删除资产 导出资产 迁移资产 资产元数据 在虚幻编辑器UI中使用元数据 使用资产元数据 自动重新导入 查找资产引用 替换引用工具 Class Viewer 全局资产选取器 Property Matrix 引擎项…

以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样

在不改变dijkstra算法本身的情况下,完全可以从数据源的角度出发,解决我们的一些简单需求: 比较初级且粗暴的玩法,可以是强行赋予一些link极端的路段长度。 对于我们坚决不希望车辆行驶的道路、禁行区、或是危险区,就…

局域网基础技术详解

虽然在学校学了计算机网络,但还是有些东西要自己去了解。所以这篇博客也算是学校课程和我在网上查找资料总结的一些关于局域网基础技术知识。 一、傻瓜式交换机 一种即插即用、未管理的交换机,不需人工配置的低端交换机。只提供基本的网络连接功能&#…

koa+puppeteer爬虫实践

最近工作中遇到一个使用nodejs实现爬虫程序的任务。需求背景是这样的:公司运营的一个老项目运营那边最近提了SEO优化的需求,但是项目本身并没有做SSR(服务端渲染),公司的要求是花费的人力成本最低,代价最小。在经过一番调研之后团…

Route路由 Vue2

1.路由的概念 2.路由的基本使用 1.安装 因为我们使用的是Vue2 所以使用的 router 是 3版本 当使用Vue3 的时候就使用 router4 npm i vue-router3 2.简单使用 /router/index.js //该文件专门创建整个应用的路由器import VueRouter from vue-router; //引入组件 import MyA…

谷粒商城实战笔记-179~183-商城业务-检索服务-SearchRequest和SearchResponse构建

文章目录 一,179-商城业务-检索服务-SearchRequest构建-检索1,Controller接口 二,180-商城业务-检索服务-SearchRequest构建-排序、分页、高亮&测试三,181-商城业务-检索服务-SearchRequest构建-聚合四,182-商城业…

x64汇编语言与逆向工程实战指南(一)

逆向程序demo网址:https://crackmes.one/,下载的压缩包密码均为.cracksme.one或cracksme.de 实例一:基本 网络钓鱼密码程序 破解 目录 1. DIE确定程序基本信息1.1 DIE程序与下载1.2 分析demo的架构 2. x64dbg调试获取密码2.1 功能初探2.2 调试…

C++基础——合集

1.C关键字(C98) C总计63个关键字,C语言32个关键字 2.命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的…

虚拟机可以玩Steam游戏吗?虚拟机怎么玩Steam Windows游戏 PD19虚拟机玩Steam

你有没有在苹果电脑上玩游戏的需求呢?很多人认为只有“双系统”才能实现Mac电脑运行Windows操作系统,其实不然,近些年来,虚拟机技术在不断发展,越来越多的苹果用户开始使用虚拟机在苹果设备上玩游戏。Steam是一个非常受…

【运维高级内容--KEEPALIVED高可用集群】

目录 1.简介 2.实现master/slave的 Keepalived 单主架构 3.vip通行 (ping通: 4.启用日志功能 5.实现独立子配置文件 6.非抢占式模式 7.抢占延迟模式 8.单播配置 9.keepalived状态切换的通知脚本 10.双主结构:两个虚拟路由(多主模式&…

精武杯的部分复现

标红的为答案 计算机手机部分 1、请综合分析计算机和⼿机检材,计算机最近⼀次登录的账户名是?admin 2.请综合分析计算机和⼿机检材,计算机最近⼀次插⼊的USB存储设备串号是?S3JKNX0JA05097Y 3.请综合分析计算机和⼿机检材,谢弘…

Xilinx FPGA:vivado关于以太网的零碎知识点

一、OSI七层模型 为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制定了OSI模型,即开放式系统互联。 OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、…