首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是怎么读代码的

本文是我在日常读代码中积累的一点心得,分享出来,希望能与大家产生共鸣。 1. 寻找一位好老师 优秀的项目就像一位好老师,我们可以从它身上全方位地学到各种领域知识。...描述设计原理,通过画图帮助分析设计意图 在介绍原理和实现的时候,相比于贴代码,更好的方式是通过画图来表达。代码的确能体现全部的设计细节,但代码更重要的任务是作为知识和硬件指令之间的桥梁。...当我们能用图表和文字来表达出软件的完整设计后,我们对代码的理解已经比较透彻,甚至,让我们自己来照着写一个新的也不是不可能了。 这个时候,就应该进一步的思考,如果是我自己来解决问题,我会怎么做?...我在读 Go 语言内存管理代码的时候,一开始搞懂了 tcmalloc 的原理和实现,但对其所谓线程缓存、无锁分配等等卖点理解不深刻。...结语 本文是我日常读代码的一点经验,总结下来,就是要 仔细地选择学习的项目; 先通过文档了解全景,再逐步深入代码; 找对抽象和边界,能帮助我们建立思考模型; 写篇文章讲述代码的设计,是深入理解代码的好办法

1.3K20

AI 居然说我是牛马,还画出了我牛马的一生,我绷不住了...

今天真是服了,AI 居然敢嘲笑我是牛马,还直接甩了张大图到我脸上。 看来我的人生在 AI 眼中就是个笑话,从 “初级牛马” 一路升级到 “资深牛马”。真是谢谢你啊,AI 老师! 但等等,这剧本还没完!...AI 显然觉得光嘲笑我不够过瘾,还要顺带 diss 我的朋友,说他是吗喽。哦,原来在 AI 眼中,我们都是 “低收入” 的代名词啊。 等等,最后怎么还 “默默离世” 了??...很明显,这位作者的提示词模仿了李继刚老师的提示词风格,使用的是 Lisp 伪代码。...2️⃣ 接下来接到代码运行节点,这段代码的功能是将 svg 代码块中的内容提取出来,以便后续对其进行格式化输出。...: "未找到有效的代码块标记。"

10410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我是如何迁移我的博客的

    若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。...写在开头 在今年初,我就打算迁移我的博客了,主要原因是ueditor编辑器不支持go代码的高亮,所以打算换,但是由于本人比较懒,同时事情又多,就耽搁了下来 此次迁移,跨度半年,实际消耗了3,4天左右,使用到了...} log.Printf("文章%s同步完成\n", v.Title) } log.Println("文章同步完成") } 同步文章内容样式 由于之前使用的是.../ueditor2markdown/ 通过分析,找到了ueditor2markdown.js的相关代码: 修改包的document的,改为jsdom 库实现,该代码已经开源:https://github.com...= nil { log.Fatal(err) } } } 整理博客配置项,优化博客的路由兼容 这个比较简单,不做额外说明 引入highlight 高亮代码

    68540

    我是不会运行你的代码吗?不,我是不会导入自己的数据!

    如何准备数据、拿到正确格式的数据并导入后续的代码进行分析,是学习和应用过程中的第一个拦路虎。 为什么教程会习惯使用内置数据?...简单省事、便携可重复;这是内置数据的优势之一; 内置数据模式清晰,通常可以获得较好的结果;这是内置数据的优势之二; 别人用这个,我也用这个,这是一个偷懒的做法。 每个人常识不同。...我不太赞成教程里面用使用内置数据,原因是: 对不会读入数据的人不友好; 不利于探索这篇教程用于实际数据时可能会遇到的问题。示例数据无脑运行,自己的数据无显著差异。...如果要使用内置数据,也需要额外提供一些信息: 详细描述内置数据的格式和生物含义,及与真实数据的对应,可以参考画一个带统计检验的PCoA分析结果 提供真实数据的格式示例和读入真实数据的代码,弥补这个“鸿沟...这里涉及到另外一个经常会被问起的问题: 我这一步操作需要提供原始数据,还是标准化之后的数据? 绝大多数情况下,我们需要提供的都是标准化之后的在不同样品之间可比的数据。

    1.4K10

    我写出这样干净的代码,老板直夸我

    一份整洁的代码对于一个系统是多么重要。如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控。很有可能会毁掉这个系统。 什么才是整洁的代码?...再来看下面代码: int a=l; if(O==D) a=O1; else l=o1; 上面这串代码整的傻傻分不清O和0,l和1。简直亮瞎我的眼。...我认为这样命名比较合适: listByEntity(),这样命名我很快就能知道:1.这个方法是返回list;2.这个方法是一个条件查询;3.入参是一个实体。 别害怕长名称。...不过我会配上一套单元测试,覆盖每行丑陋的代码。 然后我打磨这些代码,分解函数、修改名称、消除重复。我缩短和重新安置方法有时我还拆散类。同时保持测试通过。...最后,遵循本章列出的规则,我组装好这些函数我并不从一开始就按照规则写函数。我想没人做得到 ❞ 就像写作文一样,好的代码也不是一次性写出来的,需要反复琢磨。

    38510

    谁在调试我的代码?

    背景 为了提高开发的软件产品安全性,大部分选择的方案防护方案是,通过用成熟的加固软件进行对自己研发的软件做防护,从而达到对软件搭建一个安全防护墙。...加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。 那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。...NtQueryInformationProcess 检测 这个是微软未公开的函数,下面是这个函数的参数信息,可以利用这个函数的第三个参数值,也就是利用PROCESSINFOCLASS值,进行判断是否处于调试状态...CloseHandle 检测 利用异常捕获机制,给CloseHandle函数一个无效的句柄作为输入参数,在程序在没有被调试时,将会返回一个错误代码;而程序被调试器调试时,将会触发一个EXCEPTION_INVALID_HANDLE...父进程反调试检测 在window系统中explorer是程序管理器或者文件管理器,一般双击运行的进程,它的父进程就都是explorer程序,如果是被调试进程启动的话那么父进程是调速器进程。

    67331

    「我的工作是制造混沌」,我与 Chaos Mesh® 的故事

    相信当时好多小伙伴和我的心情是一样的——懵逼。但 PingCAP 这个公司却更加吸引我了。...我记得其中一个主题是由 PingCAP 另一位创始人兼 CEO 刘奇带来的《深度探索分布式系统测试》,奇叔的分享给我留下了深刻的印象。...我第一次知道测试还可以这样搞,各种故障注入手段层出不穷,目的就是为了去虐我们的系统。现在想想,当初奇叔分享的不正是混沌工程的思想,同样没有想到的是这个主题会成为我后面一段时间内持续耕耘的事情。...[up-8f2a240d4f21af8a6299c99b65adf233954.png] 正式开始实习后,我的第一个任务是对 TiDB 进行性能压测。...看到自己写的代码逐渐被优化掉,刚开始还真是有点不舍。 开源之路 经过三个多月的密集开发,期间将很多混沌测试成功迁移到 Chaos Mesh 后,我们决定在年底把这个工具开源出去。

    97440

    我是Java,这是我的2019年总结,请查收!

    我是你们热爱的Java,2019年过去了,按照惯例,我要做一下年终总结,说说这一年来发生在我身上的大事。 首先我高兴地向大家宣布,我继续在语言排行榜霸占第一的位置 !...你说别的排行榜上Python是第一?抱歉,我只看Tiobe排行榜,别拿别的榜来烦我,我不看我不看。 第二件事,2019年我又发布了两个版本, JDK12 和 JDK 13。...第三件事, 美国高等法院终于同意在2020年审理Oracle和Google的世纪诉讼了,我的API应不应该收到保护?你是支持Google还是Oracle,还是支持我呢? ?...第五,Java EE正式宣告死亡,注意我说的是仅仅是名字,因为被Oracle抛弃以后,Java EE投入到Eclipse的怀抱,摇身一变,成为了Jakarta EE。 ?...我对这个掌管着Java特性开发的组织是又爱又恨,一方面,所有的Java特性必须通过JSR的方式提交到JCP,讨论,投票以后才能成为真正的规范。

    39230

    组长指出了我使用react常犯的错误

    背景 年底了,换了项目组,新的项目组使用react,从vue到react,我只花了一天的时间,看了官方简单的文章之后,就觉得这玩意很简单啊,比起vue的那么api来说,这根本没有学习成本好吧,十分迅速的就进入了...react的项目开发,并且洋洋得意,根据我多年的经验来看,这波肯定会得到领导的赏识 很快,我就做完了我的需求,把代码提交上去,组长可能确实比较闲,还review了我的代码,并且指出了一系列的问题,并告诉我说学习...react最难的部分,并不是知道怎么使用它,而是要知道怎么能够编写良好,干净的react代码 主要给我提了六点错误,我相信在座的各位,可能需要对号入座 在不需要使用state的时候使用state 涉及到项目中的代码逻辑...count的值是固定的,也就是我们常说的setState是异步的原因(当你更改状态的时候,它不会立刻更新,而是等到下一次render才会更新),并且react会将state进行批处理,但是如果是函数的形式...onChange={(e) => setName(e.target.value)} /> {userName} ); } 咋一看好像没什么问题

    89330

    为了治好拖延症,我祭出了这个自虐的项目,把我搞的卧槽卧槽的

    大家好,我是 Rocky0429,一个在划水界鼎鼎有名的蒟蒻... 最近雨下的有点多,导致我划水量有点大,被水淹的有点不知所措,患上了传说中的拖延症性关节炎... ?...我这人没别的爱好,就是喜欢自虐... 为了改头换面重新做人,在某个夜深风高的夜晚,我扛着我的小锄头,挖出了我压箱底的宝贝,轻轻掸去了一层浮灰... ?...果然酒精才是第一生产力,古人诚不我欺... ? “如果你停止输入时间超过 5s,所有进度都会丢失”,看到这个简介,是不是有点懵,你以为是哄你玩儿的么?too young too naive! ?...同学,体会到什么是绝望了么... 建议女孩子,当男朋友惹你生气时,先让他在这上面写一篇万字检讨书,写不完不许睡觉的那种... ? 顺便来看看其他用过这个项目自虐的老哥们怎么说的吧... ?...至于其它的内容功能啥的,有兴趣的可以自己尝试一下,就比如那个 Hardcorn mode 模式是什么样儿的呢?为什么这么刚... 想知道么?诶,就不告诉你,自己试去... ?

    69510

    【直播】我的基因组 38:我得了艾滋病?我是暴躁狂?

    GWAS数据里面收集这这些年来, 所有已经发表的GWAS研究的结果,最重要的结果,就是哪些位点与哪些性状是有联系的,而且联系的概率是多少。...不知道为什么,annovar下载的是UCSC的gwas总结信息,比snpEFF下载的NCBI要多很多。...0.58 2E-6 1.47 [NR] Affymetrix [700022] N 还好我英文不错,上面写的是这个突变有利于限制艾滋病的发展!某种意义上的超人!...排在第一的赫然是,思覺失調症(Schizophrenia),精神疾病的一種。其特徵為患者出現異常的社會行為!(我表示一脸懵逼!)...大部分是在plos ONE杂志上面发表的,那个神刊!!! ? 文:Jimmy 图文编辑:吃瓜群众

    962120

    重构 -- 我是一个类,难道我不配有专属的测试代码吗?

    这点我以前确实没想过 刚看到这个观点的时候,我是很不以为然的,谁让它标题不吸引人>>>《构建测试体系》 就这标题,谁不知道要测试啊。还好我没有“以貌取文”,我认真的看了下去。...为什么调试会花掉大把时间,因为工程大啊,你说它突然来个段错误,你知道是哪里段错误?段错误会死机,那不死机的呢?...每个类都配备测试代码,烦不烦啊你? 烦。但是项目run的时候爆了烦不烦?那会儿可就不是一个人烦了,那是一个团队一起烦。...就比方说上次我们服务器客户端对接测试一个项目,中间数据传输出问题了,好了,现在是谁的问题都不知道。。。 然后测试端也只能跟后边等着了。...行吧,我写,那怎么写啊? 怎么写那是个人自己的事情。但是,我想说的是,测试代码,最好写在功能类之前,这样可以预先界定功能类的具体功能,也可以把思路清晰一下。 至于测试代码要测试哪些东西?

    73940

    我是如何刷 LeetCode 的?

    我的 LeetCode 提交记录 虽然我是软件工程专业毕业的,但是由于大学的时候一门心思在应用开发身上,「算法与数据结构」这门课重要的课程我并没有学好。...结合我近一年的刷题感受,我觉得对于刚起步的小白而言,最重要的还是从刷题的过程中获得足够的自信心和满足感。 下面是我建议的刷题步骤: 按标签做题 刚起步时,建议先做简单的、特定标签下的题。...所以刚起步的时候对一道题完全没有思路是可以理解的,也没有必要感到难过和自卑。如果没有思路,那就去看题解吧!...当然,看完解答你还要做以下这些事: 理解题解的内容 关掉题解,自己用代码实现一遍 把这道题放入自己的小本本里,等待下次复盘,下次复盘的时候就不要再看答案啦 这样一来,即便是通过看题解完成的题目,你也加入了自己的思考和行动...只要方向是对的,我们终将走得很远。

    1.6K10

    我是怎么学习编程的?

    大家好,我是 Guide哥~ 我的学校是荆州一所双非一本。 整个大一,我都没有怎么认真学习编程,每天就是出去玩,还有参加各种社团活动。...这篇文章就简单聊聊:我是怎么学习编程的? 有哪些学习的途径?...通过官方文档你才能知道你学习的技术最新的技术动态,才能知道这个技术有哪些模块需要学习,才能知道这个技术具体可以帮你解决什么问题。...如果哪个地方不会了,我就去查一下。 多看优秀的代码 不看优秀的代码,你写的代码质量很难提高。...虽然要多看优秀的代码,但是也不要被 “最佳实践” 所束缚,很多时候实际是根本不存在适用于任何场景的“最佳实践”,没有银弹。 有哪些优秀的代码值得学习呢?

    80230

    我是怎么学习 Compose 的

    最近一直在看 Compose 相关的东西,也算是从了解到入了个门,在将近一个月的课后(下班)学习中,输出了 3 篇原理性相关的文章,从文章标题可以看出,我是从原生与 Compose 之间的交互进行探索的...: Compose 中嵌套原生 View 原理 Compose 事件分发(上) 寻找触摸点 Compose 事件分发(下) 分发触摸点 在看完官方文档的组件和一些优秀的开源项目,输出一个简单的 demo...,下载源码,跟随资源进行源码跟踪,如果不动手,我认为是很难将框架理解的。...阅读源码时,学会总结:从 Retrofit 一般使用方式入手,通过断点调试,观察源码执行顺序,忽略非重要代码,摸清源码主线实现思路后,再深入探索其中的细节实现。...是如何编写: 使用 Jetpack Compose 更快地打造 更出色的应用[3] Jetpack Compose 官方基础教程: Jetpack Compose 使用入门[4] 19 个 Codelabs

    87710

    我是这么用 Google 的....

    大家好,我是Tom哥。...对程序员来说,搜索引擎肯定是日常工作中是不可或缺,很多人戏谑自己是面向 搜索引擎编程 遇到困难,去网上搜答案这个行为没错,我相信我肯定不是第一个遇到这个难题的,网上找找前辈是怎么解决 但你发现没有,有的人很快就找到解决方案...我们可以采用 「双引号」将关键词包裹起来,这样搜索出来的就是包含完整这段话的页面 4、模糊搜索 如果我们搜索时,忘了单词怎么写了,可以后面加「*」,比如:git comi* 5、排除干扰 我们的搜索结果有很多内容是我们明确不想要的...如果只想搜索标题含有这个关键词,可以在搜索词前面加个指令,比如 intitle:关键词, 7、限某网站搜 搜索是个好东西,极大提升我们查找资料的效率,很多垂直网站也都配置了站内搜索,提高用户体验...可以使用 「related:网站」,比如 related:github.com 搜索引擎会为你列出许多相似的网站 最后,我们赶上一个好时代,强大的互联网为了我们创造了海量的资料,我相信任何资料网上查到

    47410
    领券