01.26 Day 42 - 重温 Day 39-40

2024-02-04 09:18
文章标签 42 day 40 39 重温 01.26

本文主要是介绍01.26 Day 42 - 重温 Day 39-40,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 42 天,也是我第 48 次进行这种操作。

今天我温习了该专栏里叫《高效学习:如何学习和阅读代码》、《高效学习:面对枯燥和量大的知识》的文章。

关键词总结:读文档还是读代码(代码、文档/书、人人对话、人机对话、看书或代码的目的、看代码而不看文档的原因、从感性认识到理性认识)、如何阅读源代码(阅读代码的前提(基础知识、软件功能、相关文档、代码的组织结构)、代码组成部分(接口抽象定义、模块粘合层、业务流程、具体实现(代码逻辑、出错处理、数据处理、关键算法、底层交互)、运行时调试))、阅读代码的方法、如何面对枯燥的知识(解决办法)、如何面对大量的知识、认真阅读文档、其他几个实用的技巧(用不同的方式来学习同一个东西、不要被打断、总结压缩信息、把未知关联到已知、用教的方式来学习、学以致用、不要记忆、多犯错误)。

 

所学总结:

 

高效学习:如何学习和阅读代码

读文档还是读代码

代码

What(实现什么), How(怎么实现) & Details(实现细节)。

文档/书

What(实现什么), How(怎么实现) & Why(为什么这么实现)。

人人对话

书和文档是人对人说的话。

人机对话

代码是人对机器说的话。如果你想知道机器都干了什么,那你应该看代码。

看书或代码的目的
  • 如果你想了解一种思想、方法、原理、思路、经验,那么阅读书籍和文档会更高效;
  • 如果你想了解的是具体细节,比如协程的实现、模块的性能、算法的实现,那么阅读代码是比较靠谱的。
看代码或看文档的原因
  • 当没有文档或文档质量较低时,需要看代码;
  • 当掌握的知识既不系统,也不结构化时,需要看书;
  • 在不了解原理,读不懂代码或误解代码用意时,需要了解技术原理方面的基础知识;
  • 当不清楚一个算法的实现时,需要先看这个算法的设计思想,再看代码;
  • 当自己写的代码别扭时,需要看别人是怎么实现的。
从感性到理性
  • 如果你是新的,那应该多读代码,多写代码,你需要的是 “感性认识”。所以,新手阶段的你会喜欢 Github;
  • 如果你是老手,已经有多年的 “感性认识”,那你接下来需要的则是更多的 “理性认识”。所以,该阶段的你会喜欢读高质量的书籍以及文章。

如何阅读源代码

阅读代码的前提
基础知识

相关语言和基础技术的知识。

软件功能

有哪些特性、配置项。先读一遍使用手册,感受一下运行起来的软件是什么样的。

相关文档

相关的内部文档,Readme、Release Notes、Design 或 Wiki。

代码的组织结构

每个目录实现什么功能,每个文档是做什么的。如果要读的是在某种标准框架下组织的程序,那代码就不难理解了。

代码组成部分

接口抽象定义

代码有很多接口或抽象定义,了解来龙去脉是非常关键的。

模块粘合层

中间件(middleware)、Promises 模式、毁掉(Callback)、代理委托、依赖注入等等。这些技术将平铺直述的代码分裂了,所以不容易看明白其中缘由。

业务流程

数据是如何被传递和处理的。需要用到程序流程图或时序处理图。

具体实现

深入细节,阅读代码的具体实现。

代码逻辑
  • 业务逻辑:处理业务的代码;
  • 控制逻辑:控制变量、多线程处理、异步控制、远程通讯以及对象序列化反序列化等等。
出错处理

阅读代码时将处理错误的代码删掉。

数据处理

大部分代码是做数据传输的。例如 DAO、DTO、JSON 或 XML 等等。

关键算法

索引表、全局唯一 ID、信息推荐、统计以及通读(Gossip)等最有技术含量的核心算法。

底层交互

与操作系统或 JVM 交互的代码,读之前需要一定的底层技术知识。

运行时调试

使用日志或设置断点跟踪来看代码的运行过程,是了解代码的好方式。

阅读代码的方法

  • 自顶向下,从总体到细节的阅读法;
  • 画程序流程图、调用时序图以及模块组织图等等;
  • 归类代码逻辑、排除杂音;
  • 调试跟踪代码以了解其运行过程。
     

高效学习:面对枯燥和量大的知识

如何面对枯燥的知识

解决办法
  • 找到应用场景,从实践开始再返回去学理论;
  • 带着问题去学习,并得到反馈;
  • 找懂的人带一下,会更快上手。

如何面对大量的知识

  • 要学原理,它是经得住时间考验的;
  • 带着问题和挑战去学习,并完成挑战;
  • 将学习心得、过程、笔记、代码分享出来。

认真阅读文档

认真阅读用户手册不但可以少掉坑,它还能让你学到很多。

其他几个实用的技巧

用不同的方式来学习同一个东西

看书、听课、创建脑图、写博客、讲课、解决实际问题。

不要被打断

最好找一个别人找不到你的地方。

总结压缩信息

只关心关键点。使用表格、图示、笔记或脑图来压缩信息。

把未知关联到已知

将新学的知识点关联到已知的事物上。

用教的方式来学习

因为要交给别人,所以你不但要把自己已掌握的东西学好,还要把周边的知识也一起学了,才不容易被问倒。

学以致用

在实践中,你才会遇到非常细节和具体的问题,这些会让你重新思考以及深化学习。

不要记忆

找方法,那些可以推导出知识或答案的方法。

多犯错误

通过错误总结教训,你会比没有犯过的人有更深的体会。同样的错误不要犯两次,低级的错误最好不犯。

 

末了

重新总结了一下文中提到的内容:读文档读代码、读书/文档以了解思想/方法/原理、读代码以了解具体细节、阅读代码的方法以及技巧、为什么会有枯燥的知识、如何面对枯燥的知识、如何面对大量的知识、要学以致用学习原理、认真阅读文档、实用的学习技巧。

这篇关于01.26 Day 42 - 重温 Day 39-40的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676987

相关文章

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

Linux基础入门 --9 DAY

文本处理工具之神vim         vi和vim简介 一、vi编辑器 vi是Unix及类Unix系统(如Linux)下最基本的文本编辑器,全称为“visual interface”,即视觉界面。尽管其名称中包含“visual”,但vi编辑器实际上工作在字符模式下,并不提供图形界面。vi编辑器以其强大的功能和灵活性著称,是Linux系统中不可或缺的工具之一。 vi编辑器具有三种主要的工作模

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

[Day 73] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在健康管理中的應用實例 1. 引言 隨著健康管理需求的提升,人工智能(AI)在該領域的應用越來越普遍。AI可以幫助醫療機構提升效率、精準診斷疾病、個性化治療方案,以及進行健康數據分析,從而改善病患的健康狀況。這篇文章將探討AI如何應用於健康管理,並通過具體代碼示例說明其技術實現。 2. AI在健康管理中的主要應用場景 個性化健康建議:通過分析用戶的健康數據,如飲食、運動、睡眠等,AI可

Vue day-03

目录 Vue常用特性 一.响应更新 1. 1 v-for更新监测 1.2 v-for就地更新 1.3 什么是虚拟DOM 1.4 diff算法更新虚拟DOM 总结:key值的作用和注意点: 二.过滤器 2.1 vue过滤器-定义使用 2.2 vue过滤器-传参和多过滤器 三. 计算属性(computed) 3.1 计算属性-定义使用 3.2 计算属性-缓存 3.3 计算属

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

数据库系统 第42节 数据库索引简介

数据库索引是数据库表中一个或多个列的数据结构,用于加快数据检索速度。除了基础的B-Tree索引,其他类型的索引针对特定的数据类型和查询模式提供了优化。以下是几种不同类型的索引及其使用场景的详细说明和示例代码。 1. 位图索引 (Bitmap Index) 位图索引适用于具有少量不同值的列(例如性别、国家代码等),它使用位图来表示数据,从而提高查询效率。 适用场景:当列中的值域较小,且数据分布

【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿

目录 一、做题心得 二、题目与题解 题目一:卡码网 103. 水流问题 题目链接 题解:DFS 题目二:卡码网 104. 建造最大岛屿 题目链接 题解:DFS  三、小结 一、做题心得 也是成功补上昨天的打卡了。 这里继续图论章节,还是选择使用 DFS 来解决这类搜索问题(单纯因为我更熟悉 DFS 一点),今天补卡的是水流问题和岛屿问题。个人感觉这一章节题对于刚

UVA10071(重温高中物理公式)

Back to High School Physics Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18809 Description A parti