精华内容
下载资源
问答
  • 关于Android学习的三个终极问题

    千次阅读 多人点赞 2019-05-06 17:05:33
    个问题我直到今天也没有答案,这几天和朋友闲聊说到这事情。他们有得说是智商有差距,有得说是学习的时候心不在焉——看着在学习,其实已神游大千世界。.....,不过,我自己从来没有下过类似的结论。我武断的...

    缘起

        读研的时候,有一次和同学一起上自习。我在学习,他也在学习。我想,大家每天都一起上课,记笔记,上自习,完成作业,智商也差不多,为何考试的时候有时候差距会很大呢?这个问题我直到今天也没有答案,这几天和朋友闲聊说到这个事情。他们有得说是智商有差距,有得说是学习的时候心不在焉——看着在学习,其实已神游大千世界。.....,不过,我自己从来没有下过类似的结论。我武断的猜测,这个问题应该是没有让人心服口服的答案。

        从事软件开发行业后,发现要学的东西越来越多。尤其是近几年,发现未知的知识实在是太多。恐怕IT人活到老学到老的压力是绝无逃避的可能性了。那么,关于学习,我们需要注意什么呢?2015年google开发者社区一个集会上,我曾经分享过一些思考。4年过去了,又积累了不少经验教训(其实就是老了不少),现在想总结这些年的观察,做一个总结。我感觉可能需要至少两篇文章才能说完。一个是本篇的关于Android学习的三个终极问题,另外一个是对一专多能的思考

        去年我在周爱明老师的《大道至简》一书里看到对“反思”一词的定义,深有感触。书里说,反思,既不是设问,也不是反问,而是对一个问题的持续关注。这么来看,十余年来我对考试成绩好坏原因的思考就是一种反思。

        在继续本文之前,我想说,我这个人讲不出什么大道理,能讲的东西都是自己想过、尝试过、甚至在周围朋友,同事身上一起试验过的。即使不能从中学到什么有价值的东西,但看到像我这样的一个圆脸中老秃胖其实一年也没多少天是无忧无虑得,你也可以开心一下了。

    关于学习的三个终极问题

        关于学习,我认为有三个终极问题

     

    这三个终极问题是:

    1. 学什么?2015年时还没有flutter,RN我记得刚起。不知道在那个时候意气风发的Android红人们现在是不是会有点感触了。过了4年了,现在该学什么?Flutter?AI、区块链?是为了兴趣爱好而学,还是为了保家卫国光宗耀祖扬眉吐气世界更美好而学?
    2. 怎么学?这是在你刚千思万考解决第一个问题的时候接下来的另一个大难题。是ALL IN新知识?还是新旧知识两手都要抓?不论哪种选择,你都很难和长江后浪比精力,比速度。对待新知识、新技术,长江后浪是光脚不怕穿鞋的,靠试错来成长。
    3. 学到什么程度为止?最后,你开始学了,也知道怎么学了。然后呢?钻研技术是无止境的,你要学到什么程度为止?够用就行吗?够用是在哪个范围够用?我自学完写个demo叫够用吗?还是说学完后要给公司创造多少多少价值才行?我公众号的首篇文章“深入理解的目标是什么?”和这个问题有一点关联。

        很多时候,很多人并不会意识到学个知识还有什么三个终极问题。比如,周围人都学某某技术,所以我要学。或者,学某某技术有前途和钱途,那我也学。坦白来讲,我很羡慕这些人。在和平、稳定的年代,随大流是稳妥的选择。我很后悔读研的最后不该听了中科院某老师的授课。2007年,他“深度思考”了中国经济,得出了一个结论,说咱们的经济列车高速开了这么久了,肯定会下降的,然后房价会跌。所以,工作后的前3年我看着房价飞涨的时候依然坚信这个结论。幸好父母亲果断,举债买房。当时我加班夜里回来后听说自己背负了100多万的房贷还很不开心。没想再过几年我发现自己居然少背了几百万的房贷。 所以,要是你没有意识到有这三个问题,你是幸福和幸运的——如果环境没有发生变化,你也无须改变。

        上面三个问题是我自己在学习问题上的反思——反思的潜意思是我也没有答案。我觉得也很少有人能给出明确的、普适的答案。我有一种强烈的预感,在关于学习的这三个终极问题上,每个人一定都是在自己的无人区里探索

        承认无人区的存在是有百利而无一害的。我以前每次换工作都要找机工的杨总编等朋友请教,但发现他们的意见总是不理想。终于有一天我明白了,原来我在自己的无人区中,里边只有我一个人。我的家人,朋友都不能真正理解我,他们解决不了我的困惑。 不过,当在无人区里挣扎的我知道还有那么多亲人、朋友是支持我的,勇气就会更足。坚信总会有一天,我会短暂得从无人区出来,然后再走入下一个更高级的,更有挑战的无人区。

        对了,去年我才发现温伯格原来早在《技术领导之路》一书里就曾提到过类似的情况,那一章的中文名叫“领导的成长”。

        接下来,我要把这几年从事Android开发相关工作中看到的东西结合自己的认识讲一讲。我觉得它们一定能帮助到在Android技术领域里谋生的一些兄弟姐妹们。

     

    关于Android学习方面的一些探讨

        根据我的经历和认识,Android技术领域划分按从下到上可分为三个大的层次:

    1. Android底层开发。这个领域的开发工作主要集中在设备厂商(比如华米OV)、芯片厂商(华为高通)等。最近这两年,伴随IoT技术的发展,一些有能力的互联网公司也需要这方面的人才。
    2. Android系统层开发。这个领域的开发也是集中在设备厂商。但我最近发现头条这样的互联网公司也大量招聘懂Android Framework的工程师。另外,新兴的车联网、车企也对这方面人才有大量需求。
    3. Android应用层开发。这个就不用说了,竞争非常激烈,技术迭代的速度飞快。

        接下来,我会从知识范围和主要工作内容、学习路线以及需要注意培养的专业素养这三个方面来考察下上述三个Android技术领域。

     

    Android底层开发

        Android底层开发涉及到的知识范围主要工作内容如下:

    从事底层开发的码农们叫BSP或驱动开发工程师。涉及的专业知识集中在Linux Kernel或驱动方面。

        Linux Kernel是无数人为之倾倒的知识金矿。当年我也认认真真读过毛德操老师的《Linux内核情景分析》这样的源码分析书籍。这本书对我的影响非常深,以至于我策划的深入理解Android系列的几本书可看做是毛老师的手法在Android系统上的复制。

        底层开发的工作内容主要是移植和Bug Fix。在某些公司的日常工作中,只要找到解决bug的patch,打上去就好了。为什么会这样?因为Kernel是一个比较稳定的软件。在这里,稳定压倒一切。当然,其中也有非常具有挑战性的工作,比如优化相关的工作等。

     如果你想从事Android底层开发,下面是这个领域的学习路线:

        在这个领域里工作,请牢记“吃亏是福”这句话。吃亏意味着积攒经验。这个领域里的经验是至关重要的。所以,我在下面的基本素养里还会提到它:

     

    Android系统层开发

        接着来看Android系统层开发。它涉及的知识范围主要工作内容如下:

        Android系统层开发的主要工作有因Android系统升级带来的移植工作、或者是诸如华米OV各家系统的产品特性(因为原生Android系统没有,所以需要自己开发)。

        最后,随着除手机外的智能设备兴起(如智能POS、智能汽车),这些特定设备上也有许多在系统层需要开发的工作。

        相比底层开发,系统层开发有更多的个性发挥空间。MIUI、EMUI、color OS等等就是系统层个性发挥的结果。简单点说,如果可以把从事底层开发的公司看做是硬件公司,那么从事系统层开发的就可以看做是软件公司了。

        我这个说法肯定是不对的,但这里想说的是这两个领域的思维方式不太一样,因为要解决的问题也不一样。

        Android系统层的学习路线如下:

        从编程语言上来说,Android系统层有很大一部分是用Java开发的。另外还有一大部分是用Native(C/C++)语言开发的,

    所以,要想在这个领域做到游刃有余,对Java和C++语言要了解。题外话,还没了解C++的同学可以直接上C++11。它和C++98/03不同(C++之父Bjarne Stroustrup甚至说过“C++11看起来像一门新的语言”)。

        关于C++11的知识,我在CSDN博客上"C++11学习"一文(也是《深入理解Android JVM ART》一书的第五章,因为ART JVM几乎都是C++11写的)做过一个较为全面的介绍(地址在文后列出)。

        Android系统层是相当吸引广大开发者的一个领域。比如很多知名Android技术公众号都会时不时讲一讲Handler的实现、UI绘制的流程、Binder的工作原理、消息传递机制等这样的知识。 这些内容早在《深入理解Android》系列的卷1、卷2和卷3都覆盖了。只不过时过境迁,年轻的人现在更适应新的传播方式。

        除了这些通用知识,Android系统层还有相当一部分属于专业领域知识。比如,蓝牙、Wi-Fi、NFC、Telephoney(其中的双卡双待功能算是中国特色的功能)。如果你从事类似这样的专业领域的工作,请注意把精力放在专业知识本身,而不是Android里的代码。比如,Wi-Fi、NFC、GPS、蓝牙技术出现得远比Android早。它们各自有非常深厚的专业、理论知识。在Android中,你看到的相关代码无非是它们在特定系统上的实现罢了。你务必要先了解这些专业、理论知识,才能看懂Android上的代码实现。更未雨绸缪的说法是,如果将来没有Android系统的话,你一样可以靠着对专业理论知识的了解另起炉灶。

        这也是我说“基于Android、高于Android”的意思。一个最近发生的例子是,有个帮我审稿JVM ART一书的审稿专家现在研究Flutter里的虚拟机。我相信他会比别人走得更快,更轻松一点。

    Andriod系统层开发的基本素养:

        系统层这几年发展也很快(想想Android的发版速度),靠个人力量来追踪这么一个复杂系统已经很困难了,需要大家一起来知识共享。

        虽然很多公众号会写一些文章来介绍Android某个新系统的特点,但其实在设备厂商里是有不同的团队来跟踪新系统里不同模块的变化得。比如,除了Google I/O外,谷歌给设备厂商还组织了一个叫Android Bootcamp这样的类似培训一样的集会,里边会比较详细的、按功能、模块来介绍新系统的特点。不过,参加Bootcamp所获得的资料往往要保密。

    Android应用层开发

        接着来看最后一层——Android应用层开发的知识范围主要工作内容

        应用层开发的特点就是知识点多、更新速度极快。相信大家都有感觉。针对这个层面的开发者,我想,就不要拘泥于什么门派了,需要什么就学什么(注意,不是有什么就学什么)。相比其它两个领域, 应用层开发是为业务需求服务的。所以,为了更好得服务业务需求,该学什么就学什么。比如,我最近的方向转到应用层开发了,但我所在行业的应用主要用H5+webview来承载业务逻辑,那么我就重点花时间学习了这块的内容。

        我个人认为从事应用层开发同学的比例最大,也是最能体会“跟不上知识更新步伐”感受的人。这一领域中有没有什么基础关键技术?我多年观察下来觉得在应用层开发领域,多线程编程、网络编程、设计模式等几个是基础关键知识,无论如何要想办法抓在手里。

        还有,软件开发的方法论、甚至产品开发、项目管理都是这个领域里需要了解的。

        另外,在某股技术“风”起的时候,要判断下它是为了解决什么问题而产生的,你的业务需不需要这种技术?我对曾经一起干活的小伙伴们说过,宁愿你闲着没事干,也不要乱学,瞎学。在这个领域,功利、目的性强一点好。不要为了学习而学习,也不要为了KPI去github上重复造轮子。这也是该领域的基本素养。

     

    顿悟及其它

        前几年我一直在系统层和靠近底层的领域里搞事情,有时候也会做一些应用层的开发。近来我在转入应用层开发的时候,花了一些时间研究应用层开发和系统层开发的一些区别:

    1. 不得不说,底层和系统层是存在和需要个人英雄主义的。最常见的情况就是谁改bug最厉害谁就是英雄。所以,“深入理解的目标是什么”一文里提到的手撕鬼子一幕在这两个领域里是有可能存在的。
    2. 应用层技术的难度在于工程化。一个好的想法在demo上实验成功了,要推广并大规模使用并创造真正的价值一定是要工程化该想法的。而工程化的过程中,就需要业务、产品、前后端、测试等多个团队配合。“深入理解的目标是什么”提到的虚竹如果没有王语嫣、或者没有很好的团队支撑的话,是很难在这个地方发展起来的。
    3. 另外,应用层开发如果找到现成的已经有工程化实践经历的开源库,我建议能使用的话还是使用它们吧。不过,要用好人家的开源库也不是一件容易的事情。因为人家所面临的问题肯定和你的问题不一样。

          不知道你有没有这样的感觉。学习过程中,如果碰到一个问题,如果反反复复、长时间去思考它的话,总有一天会明白。这其中,有极少数的几次会让你有一种顿悟的感觉。到目前为止,我职业生涯里谈得上顿悟的时候应该不超过3次。

    • 最早一次是反复回顾用MFC开发一个自定义树形控件总是有内存崩溃的bug从而顿悟到内存操作到底是在干什么。
    • 另外一次是做DLNA的时候根据文档协议编写对应软件的顿悟——很多时候编程只不过是把想法翻译成计算机语言而已。而交流想法的形式可以是口述、规范文档。所以,想法是本。
    • 最后一次谈得上顿悟的事情是在看完《信息简史》后。此后我在开发软件的时候仿佛能看到信息在流动。用户从界面上输入信息,流经网络,后台接收并处理信息,直到存储信息。甚至当我看到领导在耳提面命下属某个问题的具体处理细节时,我也深刻感受到他在“编程”——我们都是在处理信息罢了,领导对我们编程,我们对计算机编程。

    最后

    1.  深入理解Android系列有好几本书已经不再出版了,我在CSDN上提供全文电子版下载https://blog.csdn.net/Innost/article/details/43342087
    2. C++11的学习可参考CSDN博文https://blog.csdn.net/Innost/article/details/52583732
    3. “深入理解的目标是什么”见https://mp.weixin.qq.com/s/hZrTlo3sSENtOQVbJ_h2Dg
    4. 看到太多同学在追求技术上所付出的努力以及所碰到的困惑。我自己总结过很多有价值的东西,但我觉得对具体知识的掌握并不是关键,更重要的是思考问题的方式和方法——这也是我在本篇开头会提到我对考试成绩好坏的思考。另外,我还想学习一些新的东西。这些,我都想通过某种方式分享给感兴趣的朋友们。

        在《深入理解Android JVM ART》这本厚达1000页书籍写完后,我给自己说,绝不要再写这样需要“操刀自宫"才能练成的书了。我应该把复杂的知识用简单明白的方式表达出来,然后大家再结合自己的认知和经历去体会、去利用这些知识就行。

        最后的最后,我期望的结果不是朋友们从我的书、文章、博客后学会了什么知识,干成了什么,而应该是说,神农,我可是踩在你的肩膀上得喔

     

                                                                                  神农和朋友们的杂文集 长按识别二维码关注我们

     

    展开全文
  • 我们设定A B C三个群体,分别20、20、50人;同类人与人之间 0.2的概率与其他人发生联系,异类人与人之间0.02的概率法身联系。这样一个用于测试的社交网络就够造好了。 分解的思想: 记得之前看一本书上...

    略谈社交网络:

    抽屉里有本书《social networks analysis》,平时也没翻,突然老板说,搞一下社交网络分析,于是就上了。一周下来写个小结。由于在网络中找关键点,已经被分析了很多(比如中心性、流中心性等,而且python有个networks的包,总之没什么难度。),我当时的定位是网络分解:把一个大的网络划分为若干个紧密连接的子网络。


    数据的准备以及验证:

    作为验证算法的有效性来说,我们没有去找一个已经标记过的网络,而是造了一批数据。我们设定A B C三个群体,分别20、20、50人;同类人与人之间 0.2的概率与其他人发生联系,异类人与人之间0.02的概率法身联系。这样一个用于测试的社交网络就够造好了。


    分解的思想:

    记得之前看一本书上说:信息是来自于网络的外部(原话已经忘了)。对于局部网络来说他有一些桥梁(边)使他与全局相连,那怎么找到这些桥梁呢?我们使用的方法非常简单,让网络中每一个人都从自己的出发点传递一条信息给其他所有人(当然,因为这些人很懒,他们每次都会走最近的路线),然后看看哪条(边)被最多(或者top K)的人使用,那它就是“桥梁”。拆掉一座桥后,再做相同事情时,会有其他边再次充当桥梁角色,一直拆下去,网络就会断开了。有没有感觉太简单了……(后来发现这和一些书上说的“边介数”是一样的)


    分解的效果:

    网络点数在100个左右时,在同类链接概率大于异类链接概率的 4 倍时,效果已经非常明显了。在相差10倍时,我们做了多次试验,往往只有0~3个元素被分错网络归属。


    代码性能:

    我自己写的算法复杂度为N的4次方多一些。首先随着网络的元素增加,要切开更多的“桥梁”才能将网络切开,我们构造的数据中这个值接近正比于N的2次方。其次随着网络的元素增加,我们要找到任意两个元素间的最短路线的复杂度与具体实现有关,不过我们的是略高于N的2次方。

    实现中我避开了遍历元素,而是采取遍历边的方法,因此对复杂度有所降低,也使原来的深度优先遍历转化为广度优先(深度优先指每次都把一个人所有的最短路线找出来,而广度在这指每次每个人都只走一步;感兴趣的同学可以实现一下)。不过现在其中部分地方使用矩阵记录图,导致很多无效的访问,在后续中会改掉。


    总结:

    关于性能这块我也有些其他的方法去优化(当然不包括并行、分布式这种野蛮的方法),但是现在没有完全解决。另外看了一下自己之前写的文章,感觉有点贪多,没写明白,希望这次说清楚了。

    展开全文
  • 14条原则 (4) 把大问题划分成小问题

    千次阅读 2012-08-22 22:25:09
    这条原则的全文是,"把大问题划分成小问题,然后系统地检查每一问题,看是不是问题的起因。再大的问题都能按这种方法分成小问题加以解决。" 把整体划分成若干局部,这正是两千多年来人类一直在执行的方针,...
    14条原则 (4) 把大问题划分成小问题 
    

    这条原则的全文是,"把大问题划分成小问题,然后系统地检查每一个小问题,看是不是问题的起因。再大的问题都能按这种方法分成小问题加以解决。"

    把整体划分成若干局部,这正是两千多年来人类一直在执行的方针,亚里士多德就论述过了,此后也鲜有进步。看起来很简单,但是执行起来非常困难。比如,如何划分一个问题。

    这一条太难了,我也只能谈几个体会,求过路的牛人们不吝补充事例和给出自己的解释。

    1. 当前只有一个问题

    假设我们已经把大问题划分成了几个小问题,那么,重要的是假装当前只有一个问题。然后集中精力去解决这唯一的一个问题。

    当我做一百个俯卧撑的时候,60以后会变得非常困难,尤其是呼吸和心脏的压力,那个时候最想做的是放弃。我采取的最重要的措施就是关注当前的这一个,调整"它"的动作。下一个?下一个再关注当前的这一个,调整"它"的动作。这样,一个又一个就做完了。

    传说古代的男人是以打猎作为主要职业的,提供的蛋白质和脂肪(糖份是由女人采摘提供的)大大加速了人类的发展。而打猎中非常关键的一个因素就是:专注。所以,如果我们同时关注很多步骤,很多目标,很多集点的时候,我们就什么也看不清了。直到现在,我们似乎还保留着这种天性没进化完。

    所以,当我们把自己当成一台机器操作的时候,就应该按它的内在逻辑和性能指标去操作。如果它需要专注并善于专注,那么,我们就应该使用专注的方法。

    只关注当前的这个问题,假装它是唯一的问题。

    有的同学可能要问,那如果同时存在两个问题呢,这种事情难道不是真的存在么?答案是:当我们解决了这个唯一的问题的时候,接下来遇到的,是下一个唯一的问题。

    一个简单的例子,比如在编译的时候,经常有同学大叫,"哇靠,100多个错误啊!"改个地方再编译,"刚刚的错误消失了,但是……200多个错误啦!"

    如果我们坚信错误只有一个,唯一的一个,那么,所有那么多错误信息,就都是编译系统的愚蠢而已。而事实上,正是如此。绝大多数情况下,只有第一个编译译错误才是有意义的,后面的,可能都是编译器对这个错误所做的愚蠢猜测导致的。

    比如我们写

    main() { a = 3; printf ("%d", a); // 其他对a的使用}

    编译器先抱怨我们没有声明a就赋值了 (即a=3这行) ,然后抱怨了一大堆没赋值就引用。而只要 int a = 3,a就满足声明了,然后后面的所有错误就全消失了。

    也许我们应该这样规定编译器的行为更好一些:一旦发现错误,就停下来,因为只要有一个错误存在,整个程序就都不可能运行,下面的错误,是没有必要讨论的。

    就像 a && b && c && d ... 只要a是假的,后面的是没有必要求值的。所以写程序是个需要有洁癖和强迫症的事。

    只关注唯一的问题,这也大大减少了我们的心理负担。如果知道人生后面还有那么多苦难等着呢,可能要跳楼跳桥的人数会大大增加吧。那些苦难一望无际,但是一个个解决下来,我们也就成长了。所有的RPG游戏,WOW之类的,无不如此。人生也是一样,调程序也是的。

    2. 说起心理负担,说个题外话。

    不少人认为程序员都是有点强迫症的,或者更泛化一些,IT男大抵如此?IT女就惨了,有些认为自己有强迫症啊,这多么可怕。其实没啥,不损害国家和社会,对周围人也没有啥负面影响,就无所谓,不妨当成一种可爱的品质接受下来。

    比如我经常锁了门以后下楼,然后挠头"我锁了呢,还是没锁。"上去看一眼吧,恩,锁了。注意,此处有闹心,好像这么点小事都没处理明白似的。再下楼,再挠头,"我锁了呢,还是没锁。"如是者三,就真闹心了。

    其实没啥。我们有解决手段的。不然程序员这么精细的生物如何在这个粗糙的世界上生存啊。

    简单粗暴的手段是,在某次上重重把门关上,用手使劲拧钥匙,让手生疼。记住这个感觉。

    复杂点的手段是:随身携带相机,拍下来锁门了。照片上都有时间戳的,怀疑自己的时候就拿出来看一眼。

    综上所述,认真严谨带来的副作用不可怕,可以伴随终生。

    3. 当问题真的有两个

    同时有两个问题的情况,一个一个解决。这在前面说过了。要补充的是,在解决的过程中,观察故障现象的变化。

    经常有牛人修机器调程序的时候,旁边一群观摩的。观摩的人们就发现,牛人修了半天还没修好,但是却一点也没慌。一个可能的原因是:故障的现象一直在变化,牛人正试图找出规律。

    最可怕的不是故障,或是故障现象一直不稳定,而是没现象。或者你对故障的现象无从解释,即没有一条理论指出现象理应如此。

    人类倾向于追究问题的原因。古代天打雷了,下雨了,下多了,下少了,祖先都要找出个原因来。然后针对这个原因做点工作,再观察。比如不下雨了,就扔河里几个童男童女。这个时候如果还不下,大家就有点毛了。得给出新的解释或假说来。

    所以,在每一步里故障现象的变化对于诊断非常重要。

    琼瑶女士有部作品忘了是什么,还是你们还是小学生时候的。当然,跟现在的路数区别倒是不大。不过统而言之,从诗经到现在,琼瑶读者关注的内容似乎区别也不大。

    琼瑶剧里一个女的把男朋友惹翻了,很久以后 (我猜顶多几个月,不过片子里似乎是半辈子)又见面。见面以后似乎是吵了一顿。事后女的问她爸,他生气了吗。她爸说:孩子,我看你们算是完了,他气得不行了。女的说:太好啦,这说明他还爱我。

    这位女士具有成为程序员的潜力,她的依据就是故障现象的变化表明问题。最可怕的不是憎恨,而是冷漠。最可怕的不是天崩地裂,而是没现象。

    3. 孤立的原则,分析

    没现象,就离没救不远了。这个时候,我们要做的就是整出现象来。如果现象不停地变,似乎没有规律,我们要做的就是确定设置与现象之前的关系。

    以上两种都要求,孤立。每次只检查一个坏部件. 假设其他的都是好的,直到遇到矛盾。这也正是后面的另一条原则。

    就像肌肉训练一样,孤立有很多好处。只有孤立才能不让有毛病的部分被好的部分掩盖起来。这时需要特意设置一些操作,以验证自己的假设。福尔摩斯,Spock,还有柯南都说:排除所有的不可能,剩下的就是唯一可能。

    排除所有不可能的第一步,是确定有哪些可能。第二步,是一个一个地单独排除。前者,就是问题的划分,后者,就是孤立的原则。或者说,分析 (相对于综合) 的方法。要确保每种可能 (或步骤)间的节奏,不要混在一起。在处理某种可能的时候,不要试图走捷径把别的可能一起测了。那样,你最终也搞不清楚到底哪个才是问题的原因。

    可类比的案例不少,比如集中优势兵力,各个击破敌人;比如,在实验室,人工限制约束条件,确定变量间的因果关系。

    4. 实验计划

    所以,在实验开始前,要先列出实验计划。你认为都有哪些可能,应该用哪些方法 (根据实验现象)判断这种可能是否就是问题的原因,需要哪些步骤,先什么后什么。这些都要在实验动手前写下来。然后一步步执行的时候标注结果。你猜对了么,为什么,这个猜测是错的么,是什么现象否定了你的猜测。

    先假设各种可能,然后再做实验。当所有的假设都验证了,没有新的假设,而现象还没有得到解释的时候,就是该停下来的时候。我们打猎的时候是假定那里有只兔子,然后才放箭的,而不是到处放箭,然后跑过去看那里有没有兔子。打哪指哪的效率太低,那么干的都得饿死。虽然你可能看到过那样的事:一抬头,啊呀,这不就是问题的原因么。灵感这种事,不是工程师应该依靠的。

    类似的,大的项目和大的学习计划也需要拆成小步,不然令人叹为观止的工作量会在我们开始之前把我们压垮。一般四五个小时的就可以称为令人叹为观止,更不用说需要一年半年才能读完的书,或者完成的东西。别以为我们这么大了控制能力就提高了,在这方面,我们仍然是希望在第一时间能检验自己成果的孩子,是希望快速判定这条路线能否成功的原始人。

    即使你意志坚定,或者说信仰坚定吧,你的老板也一样么?

    所以,工程师需要掌握的基本素养是:估算和度量。在最初的时候分解任务,估算时间和成本,在每一步骤结束后度量结果。有的同学可能会问,那初学的时候我还没有能力分解,没有能力估算怎么办?

    我一直面临这一困惑,时时为自己的计划没有顺利执行而痛苦。尤其是新知识结构的书,简直无法预测啥时候能完成。后来为了平复自己,我这么做:去读,去做,啥时候完成啥时候算。不去估算。因为没有能力估算。等到知识结构逐渐建立起来,这一领域的知识丰富一些了,估算的能力也就提高了--估算的能力,正是在一次次的度量之后与最初估算的结果对比后提高的。

    5. 如何划分问题

    如何划分问题,依据我们的学科中的那些理论依据。依据我们对世界的理解。这就不是我能讨论的了。

    --------------------

    博客会手工同步到以下地址:

    [http://giftdotyoung.blogspot.com]

    [http://blog.csdn.net/younggift]

    展开全文
  • 宇宙文明等级的划分标准

    千次阅读 2017-05-04 10:31:18
    本人根据对当今世界的一系列前沿科学知识的一些浅薄了解,结合自己的大胆推测,把宇宙中已知的人类文明(即我们地球人的文明)和未知的其他文明做了一标准划分,事先说明:这只是个人推论,不具备真实的数据。...

    《舒氏划分标准》

    本人根据对当今世界的一系列前沿科学知识的一些浅薄了解,结合自己的大胆推测,把宇宙中已知的人类文明(即我们地球人的文明)和未知的其他文明做了一个标准划分,事先说明:这只是个人推论,不具备真实的数据。

    本人一共把宇宙文明划分为了10级。其中一、二、三级我又称之为初级文明,四、五、六级称之为超级文明,七、八、九级称之为半神级文明,十级为造物主级文明。

    由于当前所得到的讯息范围有限,我只能详细描述3级文明以下的一些具体表现,四级以上的我只能做大体推测。

    初级文明中,每一级我又把它们做了早,中,晚三个时期的描述,具体如下:

    一级文明早期:生命出现。

    一级文明中期:生命在母星大量繁衍,并出现高等智慧型生命。开始了对所处世界的探索了解。

    一级文明晚期:高级生命高度繁衍,在本母星成了主宰地位,并对自身生存环境有了相当的认知,开始尝试性的实验离开母星的方法。

    一级文明跨越到二级文明是出现能突破母星引力范围的宇航器为标志。

    二级文明早期:对自身的生存环境有了高度的科学认知,找到了离开母星的方法,出现了能突破母星引力的宇航器,在母星范围外开始了正式的太空活动。

    二级文明中期:太空活动范围更大,并开始尝试性的建造母星以外的生存体系。

    二级文明晚期:活动范围扩大到了本恒星系的相当大的范围内,已经可以在母星外的其他空间或其他本恒星系的星球上建立小规模的生存体系。但要这种体系还高度依赖母星上的供给。

    二级文明跨越到三级文明是出现了独立的生存体系为标志。

    三级文明早期:宇航器的速度有了很大提高,活动范围更加广阔,已经能在母星外,本恒星系内建立起小型独立的生存体系。

    三级文明中期:宇航器的速度更大的提高,活动范围几乎能遍布本恒星系内,能建立大型独立的生存体系,并尝试改造本恒星系内不适宜居住的星球的环境。

    三级文明晚期:宇航器的速度提高到了一个相当大的临界速度,在本恒星系内遍布足迹,能建立相当完善的独立生存空间环境体系,或许还能直接改造个别不适宜居住的本恒星系内的某个星球。开始了对本恒星系外的探索。开始尝试触摸空间与时间这一宇宙法则门槛。

    这前一、二、三级我之所以称之为初级阶段,有两个原因,第一,这个阶段所有的能量来源其实都是本恒星范围里得到的。第二,一旦尝试想跨恒星系以上的宇航,就意味着要突破空间距离这一块了,毕竟光我们的太阳系的范围半径就有1光年以上,而离太阳系最近的一个恒星系都有好几光年。如果要跨恒星系宇航的话,就得在宇航器速度上有质的突破,因为宇航器飞行的速度越快,对本身材料、设计、动能等等方面的要求就越高,这不单单是某个领域方面的突破,必须要在很多领域的重大突破才能以量变引起质变,而一旦突破这个临界点,超级宇航时代就将开启。

    从四级文明开始到六级文明我称之为超级时代。由于没有观察对象,我只能做大体推测:

    四级文明:以出现近光速的宇航器开始为标志,能进行跨恒星系间的航宇。或许已经能触摸到空间与时间法则的一点点门槛。

    五级文明:能大范围的跨恒星系航宇,不过紧限在本银河星系系范围内活动,对空间与时间的法则或许有了一点点的领悟。

    六级文明:已经在本银河星系内遍布足迹,时间与空间法则的研究领悟到了相当大的地步,并开始尝试跨河外星系航宇。

    超级文明跨越到半神级文明的标志是对时间和空间法则的理解的突破,一旦突破,已经开始进入“神”的领域了——即掌握宇宙的基本法则,比如,要进行跨河外星系的航宇,单单是那动辄以十万,百万光年计的距离就叫人头疼,即使是以近光速前进,都需要花上一个文明等级进化的所需要的时间,这显然是不太现实的,所以跨河外星系的宇航必须突破光速以上,这就会触摸到时间和空间法则的界点。

    七级文明:这个阶段的文明已经可以称之为“神”的文明了,这个等级文明的生命已经掌握了几乎完整的空间和时间法则,能任意跨星系活动,或许能直接创造出一个星球。

    八级文明:比七级文明在时间和空间法则上的掌握能力更高,或许能直接创造一个恒星系,并能创造出一种新的生命。

    九级文明:能在宇宙中任何范围内活动,能直接创造一个银河系,能直接创造出一个新的低级文明,对各种宇宙法则几乎掌握到了极致。

    这个“半神”级文明最显著的特征就是具有了造物主的一些能力,但本身还在宇宙法则内,所以称之为半神级文明。

    十级文明——造物主,对宇宙的一切无所不知无所不晓,如果愿意,可以创造出一个新的宇宙。

    描述了这么多,是不是把大家吓到了,有人要问?我们现在到底处于什么样的文明标准,会不会遇到其他高等级的文明,或者被高等级的文明奴役等等。

    其实呢,按我所划分的标准,我们现在地球上的文明正处于二级文明的中后期。至于会不会遇到其他高级文明和被奴役等等,我觉得了还是要乐观一点,因为随着我们的科技越来越发达,文明等级越来越高,活动范围也越来越广,所以终有一天会和其他文明遭遇,但就并不一定意味着我们的文明等级程度不如人家,不过呢,居安思危,所以我们人类应该团结起来向太空发展了,不要眼光只盯着地球那一亩三分地,宇宙这么广阔,难道还容不下我们区区一个小小的地球人类种族么,若是把几次世界大战(包括冷战)所消耗的人力、物力和时间用在太空发展事业上,说不定我们现在早已经进入了三级文明的层次。

     

                                                 盛大起点文学网站作者  宇宙的极

                                                       20141119

    展开全文
  • 目前主流的无线WIFI网络设备802.11a/b/g/n/ac:传统 802.111997年发布两个原始数据率:1Mbps 和 2Mbps跳频展频 (FHSS)或直接序列展布频谱(DSSS)三个不重叠的信道中,工业、科学、医学 (ISM) 频段频率为2.4GHz最初...
  • 海洋划分简述

    千次阅读 2020-06-27 19:20:33
    根据海洋要素特点及形态特征划分,海洋可以分成...太平洋是面积最大、深度最深的大洋,同时它是边缘海和岛屿最多的大洋,总面积17868万平方千米,占地球表面积的分之一,是世界海洋面积的二分之一。大西洋是世界
  • 美国电影协会为制定区域码划分了六地区,这六区的域码分别是 第一区Region1美国、加拿大、东太平洋岛屿 第二区Region2日本、西欧、北欧、埃及、南非、中东 第区Region3台湾、香港及韩国...
  • [转载]宇宙文明等级的划分标准

    千次阅读 2018-01-05 11:03:06
    本人根据对当今世界的一系列前沿科学知识的一些浅薄了解,结合自己的大胆推测,把宇宙中已知的人类文明(即我们地球人的文明)和未知的其他文明做了一标准划分,事先说明:这只是个人推论,不具备真实的数据。...
  • IP地址划分

    千次阅读 2017-08-27 21:21:29
    1.1网络中的每一主机或路由器至少有一IP地址; 在Internet中不允许有两设备具有同样的IP地址; 1.2IP地址采用分层结构; IP地址是由网络号(net ID)与主机号(host ID)两部分组成的。 1.3 IP地址的...
  • 世界需要统一时间标准出发,讲述为什么引入时区、时区的设计,进一步介绍时间的测量;涉及概念包括:世界时、本地时、原子时,time zone/UT/GMT/UTC/TAI等; 顺带介绍数据库时间、UNIX时间
  • 论文级别划分

    万次阅读 2017-09-17 10:37:45
    一、full paper、short paper、poster、oral: CV界的会议一般分级: ...workshop,一般都是某些大牛觉得该领域有哪些方面是研究热点,就向会议chair申请开一独立的研讨会,值得注意的是workshop是独
  • 计算机网络_子网掩码与子网划分

    千次阅读 2019-11-05 16:54:11
    学习本篇前一定要先学好IP地址相关知识,接着我们继续讲与其相关的子网划分问题 子网掩码 作用 网络软件和路由器使用子网掩码(Subnet Mask)来识别报文是仅存放在网络内部还是被路由器转发到其他地方 子网掩码...
  • 目前主流的无线WIFI网络设备802.11a/b/g/n/ac:传统 802.111997年发布两个原始数据率:1Mbps 和 2Mbps跳频展频 (FHSS)或直接序列展布频谱(DSSS)三个不重叠的信道中,工业、科学、医学 (ISM) 频段频率为2.4GHz最初...
  • 人生阶段的划分

    千次阅读 2009-10-14 16:45:00
    人生阶段的划分作者:zccst 注:此文只适合工科类学生 虽然标题为《人生阶段的划分》,但我不是在做流水账,而是重点阐述一人的黄金10年——青壮年时期(25岁到35岁)。划分的意义在于让你时刻明确你现在处在...
  • 软件测试--bug的等级划分

    千次阅读 2019-05-21 15:30:33
    bug的严重级别: 致命的软件缺陷(Blocker):(一级bug) 1.造成系统或应用程序崩溃...1.常规操作下因程序问题导致系统崩溃,迫使整个系统无法使用(其中非程序问题有:系统配置、数据结构变动、session超时、网络中断...
  • 国内外学术论文权威层级划分

    千次阅读 2016-06-22 10:42:21
    每当你想要发表一篇学术论文,你就会想到期刊,可以期刊也是有层级的,文单的层级之分就更多了,那么,你怎么去为一篇学术论文划分成合理的等级呢,那么你首先需要回答下面三个问题?  1 EI会议论文和国内中文核心...
  • 电磁波频谱的划分: 1、甚低频(VLF)3 kHz~30 kHz,对应电磁波的波长为甚长波100 km~10 km; 2、低频(LF)30 kHz ~300 kHz,对应电磁波的波长为长波10 km~1 km; 3、中频(MF)300 kHz~3000 kHz,对应电磁波的波长为...
  • 中国古代行政区划分

    千次阅读 2010-05-17 19:33:00
    中国古代的行政区划大致可以划分为以下五时期:萌芽时期(先秦)、郡县制时期(秦、汉)、州制时期(魏晋南北朝、隋)、道(路)制时期(唐、宋)、行省制时期(元、明、清)。 第一节 萌芽时期 这时期约从...
  • 随着移动支付的快速发展,第方支付已经深度融入到生活中,如果生活在一二线城市,从吃饭、购物、看电影、菜市场买菜到搭公交地铁,你能想到的消费场景,基本都可以用移动支付解决。在这些便捷的背后...
  • IP地址及子网划分

    千次阅读 2015-04-27 17:20:08
     我们知道互联网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互通信时,在它们所 传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址...
  • 网络——IP地址和划分子网

    千次阅读 2018-07-11 15:41:26
    基本概念IP地址就是给因特网上的每一主机(或路由器)的每一接口分配一世界唯一的标识符IP协议有俩版本,IPV4和IPV6,我们一般用 IPV4,因为IPV4与IPV6不兼容,所以IPV6的推广效果不显著IPV4:1)...
  • Nested Logit交通方式划分-基于Biogeme

    千次阅读 多人点赞 2020-05-29 09:44:05
    前段时间做交通模型,需要用到nested-logit模型做交通方式划分,常用的工具有SPSS、TransCAD,近期发现一开源的软件Biogeme,尝试着做了一下。 1.原理部分可参考概率论书籍和关宏志教授的《非集计模型交通行为分析...
  • CentOS、Ubuntu、Debian三个linux比较异同

    千次阅读 2018-01-09 16:19:39
    Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。 商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域...
  • 子网的划分应怎样判断是哪个网段

    千次阅读 2016-08-05 10:05:24
    ××××××××,这个IP共有530台电脑,IP最后一段分给254台,一共要分530/254=2.086段,进一法则要分成3段,所以IP地址000000××处分成三个不同的数据即可,例:00000001,00000010,00000011,分别是1,2,3,...
  • 子网划分的原理和子网掩码

    千次阅读 2013-04-23 22:50:44
    例:如果一C类网络用掩码255.255.255.192划分子网,那么会产生多少可用的子网? 分析:因为C类地址的网络号为21比特,主机号为8比特,缺省掩码是255.255.255.0,现在要用255.255.255.192来化分子
  • 了解用户系列|快速划分用户群

    千次阅读 2016-05-19 17:43:52
    这应该是音乐App的产品经理第一要考虑的问题。用户群细分是最常见的用户研究手段。一下子去理解所有用户是很难的,但是分而治之,则会容易很多。这同时也是市场营销课程的基础,去理解细分市场是每营销人员的...
  • 网络TCP/IP基础(IP地址与子网划分

    千次阅读 多人点赞 2021-10-08 21:32:13
    1、子网划分的原因 2、子网划分的原理 3、子网划分的应用 结语 前言 现在网络中常用的IP地址版本是IPv4,随着Internet的快速发展,接入Internet的站点越来越多,导致IP地址资源越来越少,为了更好地利...
  • 全球网络的三个边界

    千次阅读 2012-11-24 11:00:22
    1.IP编址与地理分布-物理与逻辑的边界IP路由的效率和路由器以及主机的地理分布关系重大,地理分布零散带来的后果就是路由表的庞大,因为在这无线核心网络还远未实现的时期,网络的本质就是一根根的线缆连接着的一...
  • 空间划分及可见性算法

    千次阅读 2015-03-31 15:30:50
    对每物体转换到世界坐标,然后进行视椎体剔除,其次是背面消隐,最总通过空间剪裁和光栅化期间的图像空间裁剪得到最终的要绘制的图像。 在场景很简单,物体很少的情况,上述方法是可行的。但考虑到现代游戏的...
  • 随着代码越来越多,引发了很多问题. 企业架构分为事业部, 其中又分为产品,开发,ui 。 这是两种划分 垂直切分和水平切分 说到我们技术系统,水平切分和垂直切分是什么? 最小划分到什么层级?答案: 最小的流程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,821
精华内容 38,728
关键字:

关于三个世界划分问题