热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

两件小事,感受到了和大神的差距

这是一篇短文,分享下两件小事的感受。1去年写过一篇漫画《康熙学不了二进制》,讲述了二进制和布尔代数的发展,最后由香农发现布尔代数和逻辑电路

这是一篇短文,分享下两件小事的感受。

1

去年写过一篇漫画《康熙学不了二进制》,讲述了二进制和布尔代数的发展,最后由香农发现布尔代数和逻辑电路之间的关系,奠定了计算机发展的基础。 

我的漫画科普到此就打住,结束了。 

最近在看吴军老师的书《计算之魂》,我发现他也在讲这个故事,来了好奇心,仔细看了看。 

故事是相似的,没有新意,但是后面的总结却提出了一个让人耳目一新的观点:

香农的电路设计思想可以被总结为“模块化”和“等价性”。 

所谓模块化就是用少量简单的模块搭建出各种复杂的功能,这也是今天计算机行业的核心指导思想。 

在计算机的产品中,常常是大量相同模块的复制,这也是IT产业能发展很快、摩尔定律能成立的重要原因。 

等价性即再复杂的计算都可以等价成很多加、减、乘、除的运算,再进而等价成开关电路的逻辑,也就是说,实现了后者,间接地实现了前者。 

我一下子就感受到了差距,我只是描述了现象,没有触及到本质,没有总结出规律。

我反问自己:对布尔和香农的故事,你能想到这一层吗? 

似乎不行。

如果是单纯技术层面,比如讲redis这样的缓存的时候,我就会深挖到底层:计算机各个部件之间速度差异巨大。但是对技术发展历史来说,我做不到。

可见知识面还不够广阔,洞察力还不够深刻,上升不到这个层次。

表面现象谁都可以讲几句,但是背后那些深刻的东西讲起来就难了, 但恰恰就是这些东西,让我们印象深刻,触及内心。

以后还是得多读书,更加深入思考,努力地从现象发掘本质,总结出规律性的东西出来。

2

写关于单元测试文章的时候,搜到了Martin Fowler写的一篇文章, 我一看到其中的图就感觉被搔到了痒处。 

图展示的是单元测试,比如,你在测试Order类,Order类引用到了Product和Customer,那做单元测试的时候,要不要把这俩货用Mock技术给隔离开测试呢? 

我原来写单元测试经常会遇到这种情况,每次给人解释都很费劲。 

Martin Fowler的厉害之处在于他对两种情况作了分析, 各自总结了一个贴切的名字:

1.  Sociable Tests  

“社交化”的测试,表示大家(Order, Product, Customer)都在一起,不隔离

fca35588449766c5763ce7dda884aa25.png

2.  Solitary Tests

“孤独的”测试,表示隔离开,只测试Order类。

622b2b8006b9212570a7704cec362ad8.png

这真是让我眼前一亮, 有了双方都认可的名称,交流效率就极大提升了,就像设计模式那样,只要你说你用了观察者模式,我不看代码就知道大致长什么样子。 

我不由得反思:这两种测试方式已经在我心中盘踞很久,我为什么没有总结一下,给它起个有趣,贴切的名称呢? 

首先是意识不足,没想到;其次恐怕还是能力不够。 

能够说出别人想说,但是难以表达的东西,成功地搔到大家的痒处,这真是一件厉害的本事。

3

两件小事,让我感受到了和大神很大的差距。 

想继续往上走,知识面需要更加宽广,洞察力必须更强,思考必须更加深入。 

需要经常记录、整理、思考、输出,如果我们整天看碎片化的东西,大脑就废掉了。

一篇短文,和大家共勉。 

(完)

点击下方图片,查看更多精彩

55398cee410ee6a5e4f27e44579a3d82.png

3502fa229ac61f851fb9b81f71af4060.png

78c02507f74d0cea9fabea94eddc7585.png

fe8bcf5d6b5503aff06ad9a203503960.png

ce0ca38c5dea26222a65c2ac4076a379.png


推荐阅读
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • Redis Key管理:常用命令与命名最佳实践
    本文介绍了Redis中用于管理key的多个重要命令,包括查询、修改和删除等操作,并提供了关于key命名的最佳实践建议。 ... [详细]
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • 本文介绍了当遇到Windows 10更新失败或需要撤回更新时的解决方法,包括通过命令行清除更新缓存和使用系统还原功能等步骤。 ... [详细]
  • HTML5实现逼真树叶飘落动画详解
    本文详细介绍了如何利用HTML5技术创建一个逼真的树叶飘落动画,包括HTML、CSS和JavaScript的代码实现及优化技巧。 ... [详细]
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 本文将详细介绍如何使用Markdown来创建流程图,包括定义元素、连接元素以及构建完整的流程图实例,如Web服务API请求流程图和网页登录流程图。 ... [详细]
  • 本文探讨了在使用Java进行网络文件下载过程中遇到的问题,特别是图片下载不完整的情况,并提供了改进的方法以确保文件能够完整无误地被下载。 ... [详细]
  • 如何使用C#对TCP传输的数据进行加密以防止恶意重放攻击
    近期遇到一些恶意用户利用特定工具频繁向服务器发起连接请求,特别是登录和注册操作,导致服务器积累了大量无用数据。普通的加密方法虽然能保护数据不被篡改,但无法阻止数据被重复利用。本文探讨了有效对抗此类恶意行为的方法。 ... [详细]
  • 博主从零开始学习HTML(入门基础)
    从零开始学习HTML(入门基础)互联网三大基石HTTP协议URL:统一资源定位符HTML:超文本标记语言HTML的Head标签中的常用元素<!--告知 ... [详细]
  • 反向代理是一种重要的网络技术,用于提升Web服务器的性能和安全性,同时保护内部网络不受外部攻击。本文将探讨反向代理的基本概念、与其他代理类型的区别,并详细介绍如何使用Squid配置反向代理。 ... [详细]
  • 本文详细探讨了Laravel框架中的数据库操作,包括读写分离、事务处理、Eloquent ORM的使用、关联关系管理及性能优化技巧。 ... [详细]
  • Linux环境下配置Subclipse访问SVN+SSH仓库的方法
    本文详细介绍如何在Linux操作系统中配置Subclipse,以便通过SSH协议安全访问SVN仓库。不同于常见的Windows配置指南,本文提供了针对Linux用户的详细步骤。 ... [详细]
author-avatar
初夏mx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有