摘要: 我们知道,在 OS(operating system)中有一个 kernel mode, user mode 的概念,其用处在于限定 instruction 的执行权限。处于 user mode 的 instruction,不可以直接执行访问 hardware 等敏感操作;而处于 kernel mo 阅读全文
posted @ 2021-01-27 20:59 kid551 阅读(220) 评论(0) 推荐(0) 编辑
摘要: Concurrency 的牛鼻子是 shared data,找准了 shared data 基本上就解决了一大半的问题。很多时候,意识不到 concurrency,或者无法利用 concurrency 的加锁性质,就在于无法正确识别 shared data。 如果一个 concurrent 的程序, 阅读全文
posted @ 2021-01-18 21:05 kid551 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 计算机的世界,是人类为自己构建的虚拟世界,是一个货真价实的平行世界。大部分人所理解的计算机的世界,指的是计算世界所构建的世界,而不是计算机的世界。普通人消费的是「计算机世界」这座工厂所生产出来的产品,唯有 programmer 有幸得以窥见其中的蛛丝马迹。 遨游于计算机的世界,能够让你跳脱出来更好地 阅读全文
posted @ 2021-01-10 22:36 kid551 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 源码追踪,是所有开发工程师要迈出的一道门槛。不会源码追踪,或者不习惯于研究出色开源组件的源码,注定会限制自己的成长,也无法广泛借鉴更多的编程技巧和工程思想。不会追踪源码,就像是不会识字的文盲,没办法在海量的知识海洋中遨游与成长。 前两天看到一篇知乎热文:《你都有哪些面试时被虐的经历?》,以极其幽默的 阅读全文
posted @ 2019-12-10 23:38 kid551 阅读(394) 评论(1) 推荐(1) 编辑
摘要: 转载,原文地址如下: http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/ 简单替换表达式 :[range]s/from/to/[flags] range: 搜索范围,如果没有指定范围,则作用于但前行。 :1,10s/ 阅读全文
posted @ 2019-01-31 19:33 kid551 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 1/ 虽是数学出身,但实际上数学为统计的理解带来了更多的挑战。因为数学的重心在于抽象,以高度抽象的方式来统一性地解决问题。而统计则更为关注现实,以具体的例子为基本素材,以“把大家放到一块儿看看”为方法论,来讨论手头上的数据特征。 这种在方法论上关于抽象与具体的差别,让两者彼此对抗、彼此融合着。能否辩 阅读全文
posted @ 2018-10-28 19:49 kid551 阅读(406) 评论(0) 推荐(2) 编辑
摘要: 回顾历史做仔细的分析与研究,总能给人意想不到的发现和惊叹。从认知的难易程度上来看,编程语言的范式可以按照如下的方式排序:最容易理解的是structured programming,一根线从上往下;再来会稍微费点功夫理解的是object-oriented(OO)programming;更困难的是fun 阅读全文
posted @ 2018-10-23 23:03 kid551 阅读(688) 评论(0) 推荐(5) 编辑
摘要: 后端的动态模板 Java后端通常会使用ftl(freemarker template language)模板文件来动态返回前端页面。这个工作,通常还可以用jsp、php文件来实现。但这些动态模板的实现,通常是在已有的html文件上对特定的、需要做动态处理的部分做改写。这对小项目来讲没什么不对。可如果 阅读全文
posted @ 2018-10-05 13:04 kid551 阅读(600) 评论(0) 推荐(3) 编辑
摘要: 相关声明:写这篇文章绝不是为了抹黑《极客时间》,相反我相当看好这个产品,并愿意为它的成长贡献一份自己的苦药。在《极客时间》刚一推出时,我便写了文章《「极客时间」带来的社区价值思考》来论述我看好它的原因。《极客时间》的很多专栏我都购买过,如果是纯黑,犯不着花费这么多钱去囤积专栏。 《极客时间》上有一款 阅读全文
posted @ 2018-10-03 14:43 kid551 阅读(1566) 评论(3) 推荐(8) 编辑
摘要: 对于通常的developer(特别是那些具备并行计算/多线程背景知识的developer)来讲,js的异步处理着实称得上诡异。而这个诡异从结果上讲,是由js的“单线程”这个特性所导致的。 我曾尝试用“先定义后展开”的教科书方式去讲解这一块的内容,但发现极其痛苦。因为要理清楚这个东西背后的细节,并将其 阅读全文
posted @ 2018-09-09 21:40 kid551 阅读(458) 评论(0) 推荐(3) 编辑
摘要: 感谢陈大先生花费时间一起细致地讨论这个课题,促成此文。 《Nerd的套现ATM机》中已经谈到,对于nerd来讲最畅销的产品是“考试通过”。本文将继续这个话题的展开讨论,更深入细致地分析这个说法所包含的更多深意。 在讨论nerd的产品之前,我们先要考察一下另外一个概念,市场。而要考虑市场,则需要从它的 阅读全文
posted @ 2018-08-24 00:07 kid551 阅读(271) 评论(0) 推荐(3) 编辑
摘要: Nerd是一群似乎只在学生阶段才出尽风头的人。不善言辞,闷头学习,每遇考试便战功赫赫风光无限,赢得天下名。这样的描述,对那些成绩一般、喜欢天马行空、甚至有些多动症倾向的人来讲,无异于是噩梦。幸好有社会这座大染缸,在成年人的世界里,只看市场、名利。于是,口若悬河也好、拼爹拼钱也好、暗送秋波也好、坑蒙拐 阅读全文
posted @ 2018-08-21 23:08 kid551 阅读(346) 评论(0) 推荐(2) 编辑
摘要: 网络传输与加密 让我们先回顾一下上次的验证过程,如下图 有了“原信息”和它对应的“md5签名字符串”,我们就可以做最基本的信息验证:通过md5签名字符串的一致性,来保障我们收到的信息没有受到更改。 P.S.:由于签名signature在后续文章中会另有所指,为区分md5签名字符串,我们将md5签名字 阅读全文
posted @ 2018-08-06 22:50 kid551 阅读(876) 评论(0) 推荐(3) 编辑
摘要: 谈到网络,就必然会涉及网络安全。但“安全”这个事情, 一下子就会让人联想到黑客,进而把“安全”这个事情无限放大为各种高大上、神秘莫测、不可知。这不是一个engineer应有的态度(《一次艰难debug的反思》)。 要讨论网络安全,可以从最核心的“加密”谈起。 加密,英文叫encryption。显然, 阅读全文
posted @ 2018-08-02 21:01 kid551 阅读(1606) 评论(2) 推荐(3) 编辑
摘要: Joel on Software(中文名叫《Joel软件随想录》)算得上是一本旧书了,但里面的建议和讨论,真的是历久弥新。特别是,Joel是个有趣、牛逼的家伙:前微软Excel的职员、Stack Overflow的创始人、Trello的创始人,以及他和他的boyfriend走入了婚姻殿堂。这本书,是 阅读全文
posted @ 2018-07-29 20:09 kid551 阅读(1400) 评论(1) 推荐(2) 编辑
摘要: 包含各种偏见和武断,请谨慎阅读。 为什么在学校学习的C,拿到企业生产中不起作用? 而为什么企业级的程序员,依然对C/C++无法掌控?在算法各方面不够精湛? 根本原因还是应用场景的不同。企业级的开发,主要是为了能够快速出活,能够快速将业务需求转换为可执行的代码,立马部署上线开始工作。这就需要Java这 阅读全文
posted @ 2018-07-12 22:58 kid551 阅读(1432) 评论(5) 推荐(5) 编辑
摘要: 已经很久没有遇到如此顽固的bug了,总共耗费了我近1个礼拜的时间。期间的种种冲突,个人崩溃,最终解决方案的形成,到回过头来的反思,实在有太多值得梳理的东西。 从结果上来讲,这是个人js基础极端薄弱的集中体现,是对js闭包、基本流程和运转方式掌握不到位的综合反应。正因为基础薄弱,所以debug到某个阶 阅读全文
posted @ 2018-07-03 20:58 kid551 阅读(907) 评论(2) 推荐(1) 编辑
摘要: J2EE是Java程序员从新手进阶的一个必经之路。要体会所谓的工业级代码,就必须要融入和经历更为复杂的开发、部署环境,需要同更多的模块、组件做信息流交换,比较和使用不同的框架,逐一去琢磨和考察它们的必要性及优缺点。 这样一种进阶,注定了其过程必然是痛苦的。这不仅是因为你要掌控和关注的细节、模块一下子 阅读全文
posted @ 2018-06-30 19:45 kid551 阅读(493) 评论(0) 推荐(4) 编辑
摘要: GC要解决三个主要的问题: 哪些内存需要回收? 什么时候回收? 如何回收? 哪些内存需要回收? 最简单的是引用计数(reference count),缺陷是无法解决循环引用。于是更快点的算法是可达性分析(reachable analysis)。 什么时候回收? 至少要经历两次标记过程: 对象没有fi 阅读全文
posted @ 2018-06-17 15:24 kid551 阅读(123) 评论(0) 推荐(2) 编辑
摘要: 对很多开发人员来讲,测试人员是扫雪工,没什么真本事。并且,在他们自己构建代码时,也对测试不屑一顾。要么是抱着老子天资聪慧,用不着这些繁文缛节的官僚流程;要么是觉得写测试并没有什么“实际”的贡献,花了大量的功夫,似乎什么都没有推进,什么实质性的feature都没被实现,只不过是一堆检验性质的监视器罢了 阅读全文
posted @ 2018-06-16 01:27 kid551 阅读(601) 评论(5) 推荐(4) 编辑
摘要: 无论做平面设计还是做摄影创作,其基础都是一些比较粗浅的看似毫无用处的简单技能。例如画直线、拍挂在墙上的电视机,不一而足。 同样的现象还能在web的前端设计中看到。一堆类似小孩学绘画的标签,几个可以更改属性的css文件,完毕。 但神奇的是,就靠着这些简单而粗浅的概念,竟然可以做出让人惊叹的作品来。先不 阅读全文
posted @ 2018-06-14 01:33 kid551 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 网络世界承载着太多的期许和重任。整个计算机的发展,因为网络的实现而势不可挡地飞速前行。无数的东西,慢慢变成轻量化的服务,存在于网络的云端,而最让人炫目的黑客技术,也几乎特指网络中的自由驰骋。而: 网络究竟是一个什么样的东西? 网络和网页是什么关系? 与它交织的各类协议,又同它自身有什么关系? 那些类 阅读全文
posted @ 2018-05-31 00:42 kid551 阅读(1020) 评论(0) 推荐(2) 编辑
摘要: 就我个人的经历来讲,对计算机技术的精炼程度总是比不上数学。 为什么呢?思来想去,还是投入与激情的问题。对数学的投入,可不是简单地停留在单纯的技术、技法上,而是对它的历史、发展、伟大人物、社区都了如指掌。各种细节奇闻异事简直如数家珍,还经常同朋友以这些梗作为玩笑的素材。 而programming,根本 阅读全文
posted @ 2018-05-24 23:29 kid551 阅读(540) 评论(5) 推荐(2) 编辑
摘要: 往期系列: 《由阅读源码想到》 《由阅读源码想到 | 下篇》 《阅读源码(III)》 Eric S.Raymond的写于2014年的《How to learn hacking》是一篇出色的谈论如何阅读源码的文章。(Eric这里的hacking技术,指的是开源项目里的一种 an effective w 阅读全文
posted @ 2018-05-03 17:14 kid551 阅读(400) 评论(0) 推荐(3) 编辑
摘要: 往期系列: 《由阅读源码想到》 《由阅读源码想到 | 下篇》 Medium上有一篇文章Why You Don’t Deserve That Dream Developer Job,由一位漂亮的程序媛所写。文章不免贩卖了些焦虑,但也谈到些无法回避的问题:无论对于职业人士想在原有路线上继续发展、还是想要 阅读全文
posted @ 2018-05-01 21:58 kid551 阅读(514) 评论(1) 推荐(0) 编辑
摘要: 为什么要使用Colab 使用过Jupyter(参看《「极客时间」带来的社区价值思考》章节:社区交流的基建设施)的朋友,一定会醉心于它干净简洁的设计,以及在“摆脱Python命令行运行”上提供的优质服务。某种意义上讲,Jupyter的简洁设计,非常适合于初学编程的朋友。因为从整体看,整个Jupyter 阅读全文
posted @ 2018-03-11 17:38 kid551 阅读(18836) 评论(7) 推荐(5) 编辑
摘要: 终于知晓自己在不确定性的商业中看到的是什么了,也逐渐清楚自己在数学建模上的劣质表现是为何。本质来说,这是实验学科同理论学科在研究方法上的本质差别。 理论科学与经验科学 对于实验学科来说,最重要的能力是探索中的“猜”,是能够在复杂无规律的现象中总结出、洞察出一些线索,并以此为基础开展工作,建立联系和理 阅读全文
posted @ 2018-02-20 13:36 kid551 阅读(588) 评论(1) 推荐(0) 编辑
摘要: 装饰模式在某种意义上来说也是挺原始的, 它首先需要一个你被装饰的基础类, 再来是需要一个基于这个基础类的原始包装器,可以看作是其它包装器的基础类 进而通过继承这个包装器,来构建出多个具有各自功能的特定包装器 最后,是通过层层组合这些包装器(通过一层层地使用构造函数的方式),来构建出你最终需要的包含多 阅读全文
posted @ 2018-02-14 01:00 kid551 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 阅读源代码,同数学、同任何一个知识密集型行业的吸收过程一样,是一个在反复地“读了忘、忘了读”的旅程。 记得本科时,从清北毕业的教授泛函分析的李老师说过一段闲话:“再来教你们泛函分析,对我来说是个重新拾起来的过程。数学就这样,反复地做、反复地读,反复地习得这个技能,然后又反复地忘掉。那怎么办呢?真要再 阅读全文
posted @ 2018-02-07 13:02 kid551 阅读(609) 评论(7) 推荐(6) 编辑
摘要: 一个人的能力,源自于他的行事作风、处事习惯以及思考方式。想知道他的能力,就不能只是简单地考察他在某个具体任务上的完成情况,而是需要去了解他的习惯——做事习惯和思考习惯。 从这个角度讲,很多公司的面试设计不太合理。生硬地抛出一堆智力题目,让候选人现场做解答,美其名曰考察候选人解答高难度问题的思考过程。 阅读全文
posted @ 2017-12-17 10:05 kid551 阅读(4368) 评论(7) 推荐(15) 编辑
摘要: 长时间地呆在解决数学问题的世界里,反而会让你看不清楚数学的本质,或者数学的根本性的东西。这个观点,陈省身(Shiing-Shen Chern)和陶哲轩(Terence Tao)都表达过。陈省身在谈论纳什(John Nash, 电影《美丽心灵》的主角,诺贝尔经济学奖得主)的时候就反复提到:John N 阅读全文
posted @ 2017-11-14 13:40 kid551 阅读(845) 评论(3) 推荐(4) 编辑
摘要: 这是一篇GitHub的入门级文章,主要针对git的初学者。我们将讨论初学者最关心的一些问题,如:为什么我们要使用GitHub,它的应用有哪些,如何运用它去帮助我们提高工作效率,以及它的基本用法有哪些。 希望看到文中的相关资源链接的朋友,可以直接访问我的中文blog:https://www.teren 阅读全文
posted @ 2017-11-08 22:45 kid551 阅读(1884) 评论(1) 推荐(16) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT . 将源代码编译,加载进入内存,相应的构建于程序员脑海中的程序便在计算机上跑(run)起来了。这看似简单的步骤背后,却是一个从无到有的施展魔法的过程。 初学programming的时候,不太能够分清楚手写的源代码和在内存中运行的机器代码(运行时代码)的区别 阅读全文
posted @ 2017-11-01 21:52 kid551 阅读(768) 评论(1) 推荐(4) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT. 1 技术人员 虽然 IT从业者的薪酬在各行业中算是处于领先地位,但内心的焦虑感并不会因为这些表面的高薪酬而得到缓解。时不时的,技术人员会因为看不懂自己付出的大量心血的意义而自我怀疑。就算不考虑是否有意义,这些花费的心血是否能够收到相匹配的报酬,或者是否能 阅读全文
posted @ 2017-10-20 14:17 kid551 阅读(4275) 评论(7) 推荐(11) 编辑
摘要: 最新的Windows10 的升级也是醉了,不得不吐槽一个非常流氓的浏览器推广:Microsoft Edge(这小婊砸)。 为了将之前的历史包袱IE干掉,这次微软也是蛮拼的,直接把IE从电脑里干掉了,你根本找不到还有这样一款软件存在。真的是我勒个去啊!!!心中的草泥马在奔腾而过啊。 没有IE,不用不就 阅读全文
posted @ 2017-09-03 17:31 kid551 阅读(863) 评论(2) 推荐(0) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT . 阅读源代码的开始阶段,最好从感兴趣、自己有直观感受且有相对丰富准确的文档的项目开始。如同最开始阅读数学证明,最好从浅显易懂的教材开始,之后再开始最前沿的paper阅读。 阅读源代码需要同阅读证明一样的耐心,甚至更多。数学的定义或许就在前一页,可是源代码 阅读全文
posted @ 2017-08-24 11:26 kid551 阅读(1509) 评论(0) 推荐(2) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT . 各种数据分析的工具,就像是医生做手术时的各类手术刀,你不应该对工具产生崇拜,要紧的是你运用工具能够做的事情。 Data science作为探索性的领域,其从业者需要重新摆正自己的态度和位置。不是说你掌握了某个工具,例如deep learning,SVM 阅读全文
posted @ 2017-08-15 21:26 kid551 阅读(461) 评论(0) 推荐(2) 编辑
摘要: 运用VBA时,可以构造一些函数去实现诸如printf的方便函数。 特别地,将以上辅助函数用于Match,会非常方便: 阅读全文
posted @ 2017-08-13 19:24 kid551 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT。 从明天起,做一个幸福的人,喂马、劈柴,周游世界,然后做一名合格的调包侠。不再基础设施上纠结不已,而是在前人的基础上,进行地春暖花开。如果你是一名摄影师,你不用再考究各个光学元件的组成,不用再为光线的昏暗而烦恼,而是迎接PS的新世界,将所有的精力放于更富创 阅读全文
posted @ 2017-05-30 10:38 kid551 阅读(671) 评论(0) 推荐(1) 编辑
摘要: 原文首发于我的微信公众号:GeekArtT. Observer设计模式是为了解决“信息同步更新”的问题而存在的。它试图解决这样一个问题:如果有“一堆对象”都跟随“某一对象”的变化而变化,那么,如何能够保持“这堆对象”能够同步更新呢?特别是,“这堆对象”很可能在运行时(run-time)不断被添加或者 阅读全文
posted @ 2017-04-29 14:27 kid551 阅读(360) 评论(0) 推荐(1) 编辑