• 第一周的博客作业


    (这是现代软件工程课程第一周的博客作业

    我在大一时开始搭建、维护和撰写我的独立博客,当时最主要的影响来自于《为什么你要写博客》一文,其次则是看到身边的厉害的学长都有独立博客,希望自己能和他们一样优秀。

    我一直认为独立博客很好地体现了互联网精神——每个独立个体在自己的域内发布信息、彼此通过 HTTP 和 RSS 等协议交换信息、完全去中心化,既不会被单点故障破坏,也不受制于任何大公司制定的规则(非独立博客常常难以排版、存档、搜索、自动化处理,还面临各种原因的审查)。所以我靠友链和自己维护的 RSS 小工具开心地生活了很久。但是在大二下学期左右的某个时候,我和我关注的不少学长都渐渐不继续写博客了,以至于后来我把博客改成了“个人主页”,曾经的文章仅仅存档到了一个 GitHub repo 里面。我认为我们不愿意继续维护独立技术博客,主要有这几个原因:

    • 写博客时,假想读者是广泛的互联网上的所有人,因此我总是倾向于写科普风格的内容,比如《密码学科普》。这倒不是坏事,我还是蛮喜欢锻炼自己“把复杂的概念用简单的方式阐述”的能力的,但真的很累,而且对自己和自己的朋友(也就是我最希望受益于我的文字的人)益处很有限。要给我的朋友们分享我的新发现的话,不需要花那么大力气,随便在聊天软件里说一下,大家就能明白了。
    • 如今看博客的人越来越少了,甚至不如在 QQ 空间发说说,或者在邮件列表里发邮件的影响力大。如果我精心写了文章,肯定希望用最有效的途径让身边的朋友看到。因此我创建了一个邮件列表,如今会把技术方面的有趣的内容简要地发在里面。
    • 我希望得到反馈和交流!这非常重要。然而独立博客的评论功能如今不太好实现,更别提 anti-spam 或者易用性了。即使是我们社团的技术博客也没什么人评论,不像邮件列表或者社交平台非常容易互动和转发。我觉得转发是很重要的一个需求,但个人博客里面如果经常转别的地方的内容,总感觉怪怪的。
    • 互联网上有太多无用的喧嚣,我自己经常都会感到厌烦。比如搜索一个软件相关的技术问题时,搜索结果很容易充满 CSDN 上初学者们发表的入门级博客,它们对作者可能很有意义,但对互联网实在没什么信息量。我常常觉得在自媒体时代,比起急着说话,可能还是做好知识积累比较重要。每当我读我所敬仰的几位大牛的技术博客,总会惊叹于他们所研究的问题的深度,以及文中体现出的思想之美。我觉得这才叫技术博客,读起来有和对方灵魂交流的畅快感。自己发了一堆讲玩具问题的博客真是没什么意义。

    但没有了博客,我也不时担心少了一种让新认识的人快速了解我的过去的途径,所以最近又想尝试恢复了,总之先说到这里吧。

    至于我有什么优势(和劣势)——多数同学或许在意的是我的项目经验和编码能力,我觉得它们确实很有趣,给我带来了很多快乐,但我自己更在意的大概是我比较随意的性格。我在很大程度上信奉虚无主义,对什么事情都能比较从容地看待,这使我交到了许多什么都愿意和我放开来聊的朋友,也有几个相见恨晚的知己。遗憾的是因为小时候的种种经历,我不可控制地非常在意“别人会怎么看我”这个问题,所以在社交方面很胆小谨慎,不知道该怎么创造机会和别人搭讪……(只等着比如一起工作这样的机会出现)另外,正如前文提到,我很享受把复杂的概念给别人讲清楚的过程,我小时候就被父母要求注意“把话说清楚”,加上高中时经朋友点拨,开始注意演讲幻灯片的制作技巧,我认为自己是一个比较擅长讲课的人。如果没有喜欢计算机,或许应该去当老师或者写科普书?后者等老了也可以考虑~

    现状、经验和计划

    在你一生中身体最健康,精力最旺盛的时候,能在大学全职学习和研究,这是少有的机会。请说明一下,你是怎么选择了这个专业的?

    我从小就受到家庭的影响,喜欢计算机(以及任何有秩序的东西,比如像素画等)。初中时就开始尝试用程序解决自己的实际需求了,并且在这个过程中深深地被计算机科学所吸引。高中时几乎没怎么好好学习,花了很多力气写程序,做了一些玩具级别的项目。选择大学专业时,家人原本不看好计算机,认为为了今后发展的“宽度”,我应该去信息学院。我研究了信息学院和计算机学院的培养计划,以及科大的自由转专业制度,决定先不和家人争辩,等大一结束时转专业即可。然后就来了~我觉得我基本上没质疑过自己会走到 CS 这个方向。

    离成为一个合格的 IT专业毕业生,在专业知识、技能、能力上还差距哪些?请看这个技能调查表, 从表中抽取 5 - 7 项你认为对你特别重要的技能, 记下①你目前的水平 (用数字 0..9 表示水平, 5 表示能通过面试,9 表示世界一流); ②你想在课程结束后达到的水平 (数字 0..9 表示); ③你计划通过什么手段提高水平 (必须至少列出 5 项)。

    • 软件实现,我还几乎没有接触过需要阅读别人的代码,或者和别人贡献量相近的合作开发的情况。目前的水平应该是 4,我希望能达到 5,因为从我对工业界大牛学长的感觉来看,能通过他的面试、得到认可,就已经很厉害了。通过什么手段?当然是尽量多用轮子、给轮子提 pull request,以及注意在合作项目中不要选我特别擅长的题目,以防我变成项目主力,一个人作出所有决定。
    • 测试,我知道测试很重要,也很欣赏如 SQLite 这样将测试做到极致的软件。但测试是一门艺术,很多时候到底要测试什么?怎么测试?怎样知道测试结果是不是对的?这几个问题是很难回答的。我的实践经验还不足以写出合格的测试,目前水平是 3,希望先达到 4,能写一点点正规的、工业级的测试就好了。我认为这个方面需要去读一读别人的代码和著作,看看对于各种实践中遇到的复杂问题,他们是怎么回答的。
    • 效能分析,最近才第一次真正使用 profiling,优化了我们社团的信息安全大赛平台,避免了在开发前期过早优化。感觉这个经历很有趣,以后要多试一试。目前水平是 4 吧,希望达到 5。
    • 行业洞察力,我马上就想到了博杰,我总是觉得他像一本百科全书一样优秀,整个领域在他的大脑中都很清晰。我的目前水平是 4,希望达到 5。博杰经常给我分享他面试的经历,我很显然还不能通过~希望能像他一样优秀。我觉得这个水平很难用简单的方式提升,可能只能靠多读 paper、多接触实际问题来积累。
    • 项目管理,我很喜欢读《人件》,项目管理真是一门有趣的学问。我经历过的最接近的情况应该是我们一群学生自我管理去参加 iGEM,项目进度一度非常糟糕,幸好我们终于逐渐摸索出了可行的进度管理方案,将一个万行级别的网站开发完了。目前水平是 4,希望达到 5。手段的话,还是在合作项目中注意做这方面的工作,避免像以前一样成为编码主力。

    (为什么目前水平都没到 5?因为列出的是我认为自己最需要提升的那些技能)

    你为何要来上课并且认真参与

    这篇文章我不是很认同,我觉得其中有很多逻辑混乱之处,以下从开头起随手列几个:

    • 认真听讲是一种能力没错,但是不是有益的能力、益处是否比训练它所花费的代价更大呢?没有论证。
    • 认真听讲的能力和认真的能力是两码事。我很容易在工作中进入顺流状态,并且我也知道这对我的生产力意义重大。但我是缺乏认真听讲的能力的,我只能集中精力听我认为高质量的课。所以我就是一个反例,文中说我“基本上就是一个废人了”,我当然是不同意的。
    • “我始终相信老师的整体水平还是优于学生的”,相信没有用,有人还相信地球是平的呢。我以前参加物理竞赛培训时,真真切切地见过质量较低的大学中的老师,只会照本宣科,我提出的关于仪器和实验操作的问题他都答不上来,最搞笑的是他们教室里挂着的实验步骤挂图居然错了,我给他讲了十几分钟,他也不肯相信,只是一味地说“如果你真的这么厉害,印了这么多份的图一下子就能被你发现错误,那你以后拿个诺贝尔奖。”这种老师也无条件优于学生吗?
    • “即使你在工作中,遇到一个你自以为很烂的领导,你也会可以工作中迅速成长。”工作不是白白吃苦、做牛做马的,工作的意义是实现自身价值。文中这句话放到知乎上肯定要被批判一番。

    之后没必要评论了,作者搬出了“大学生没有能力讨论此事”的逻辑,这没法反驳。任何辩论都可以靠说对手没资格发言来“取胜”。

    我从小到大听课质量都很差,我分析主要原因是这样的:

    • 我不太适应跟着别人的速度思考,尤其是这个速度太慢时。在一对一上课时,我从来没有这个问题。但在一般的班级中,老师毕竟要照顾所有学生,肯定会选择一个较慢的思维速度。强迫自己的速度符合另一个标准是很不舒服的,没有人愿意被强迫以很慢的速度行走(这也是为什么草地上那种使得人每一步只能迈出确定距离的石板被很多人讨厌),适应慢速行走也是一种能力,但它有什么益处呢?或许微乎其微。
    • 有些时候,确确实实存在获取同样的知识的更便捷、更高效、更优秀的渠道。很多老师还在用很多年前的 PPT 讲课,甚至连 PPT 首页上一位任课老师的名字都不改掉。这些 PPT 常常是堆满了文字,和课本没有任何区别(还比课本乱)。CS 领域的一些知识已经有交互式的学习工具了,如果学生能边实践边学习,将会用更少时间(宝贵的青春时光)学得更明白。即使不考虑这些,我想大家都会认同 MIT 等学校开放的公开课质量比国内一些学校的课堂质量高吧?听那些优秀的课也是听课,讲得还更好,还能暂停、回放、搜索特定内容帮助理解,怎么会更差呢?

    你在大学中体验到了哪种师生关系,你希望这门课是什么师生关系?如果老师布置的作业对你来说有些困难, 你会怎么样

    这篇文章中列出的各种师生关系我应该都遇到过,毕竟从小到大遇到过的老师肯定是很多的。我非常认同健身教练/健身学员这个说法,我以前没听说过这种说法,第一次听到时觉得真是太好了。这个比喻有很多合理之处:

    • 虽然健身教练有资格评价学员,也会对学员提出各种要求,但真正选择接受这个关系和这一切的人是学员自己,他在自己的判断下选择并相信了教练,还付钱给教练。这种信任是之后一切的基础。
    • 如果教练布置的任务或者提出的要求较难达到,学员会向教练指出,并且让教练进一步确认自己应该怎样锻炼。无论教练最终选择坚持自己的决定还是调整,双方都会尝试达成共识再行动,以维护彼此的信任。

    我想我也已经回答了第二个问题了~

    在工作中,我们要引用文献,参考别人的资料,在别人工作的基础上继续开发, 这些活动和抄袭、剽窃的区别是什么?请仔细阅读相关文章,并询问老师在这门课中的要求,了解学校对于抄袭的处理规定。

    (这篇文章的标题太有趣了)

    我尝试搜索了一下文中提到的文字的抄袭历史,但是找到了这篇文章,发现它已经把这个工作完成得很好了……我注意到他是用百度完成的,我用 Google 重新进行了一下验证,无论是“我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的”还是“而作为需求获取及之后的一系列过程则是类似于魔术揭秘的过程”,加上 2000 年到 2010 年这个时间约束条件后,都只能搜索到钻石之黎明的文章,可以推断这是最早出处了。

    排除掉明显的 content farming 平台抄袭后,在个人抄袭中随便选了一个进一步查了一下。从他的姓名、网上昵称、地理位置等信息可以找出其他一些或正式或尴尬的互联网上的历史(其中最新的信息有不久前参加竞赛获奖的记录),我大概在心里建立了一个对他的侧写。但出于不发布人肉搜索或社工结果的考虑,在此不列出。我感觉他有点像许多在 GitHub 上关注我或者 fork 我的仓库的人,虽然对技术相关的知识很有兴趣,但可能没有经过很好的科班训练,所以做的事情在我看来都有点奇怪(GitHub 上那些人怎么总是把 fork 当作 star 来用啊!)他将完全相同的博客内容先后发表了两次,我最初进入的是一年后他第二次发的。第一次发的仅仅多了最后一段文字,看起来当时他参加了邹欣老师的课?邹老师还在评论中指出了抄袭,但没有回应。

    我读了参考博客中的《.net程序员工作两年总结》,最大的感想就是,如果没有经过很好的科班训练,很多人确实会做出各种“三分钟热度”的事情。这不完全是因为他们自己没有足够的耐心和决心,也是因为他们确实没摸到正确的方法、得到正确的引导,所以做了一点就没法继续了。这个人也是这样,他在互联网上留下的记录都是一小段一小段的“三分钟热度”,博客中都是零散的、似乎是搜集来的片段,GitHub 账号中所有仓库也都只维护了两天,已经一年没有动态了。

    我个人是反对抄袭文字的,也很不喜欢别人不给我 credit 就拿走我的东西。但确实也有那么几次遇到过令人没有办法的情况,如我在科大上的《大学物理实验》课程和《软件工程》课程。它们都需要学生完成很繁琐的报告,而且其实老师和助教都不在意内容,只在意 overall 的篇幅和看起来的质量。大学物理实验中,我提出的合理的改进和对报告的简化很少会被接受,因为助教和老师也明白,这个东西如果“写得太少”,不好“给上面交代”,没有“锻炼学生的数理基础”。软件工程中,我尽力在最终誊稿时把过时的操作系统要求和内存、硬盘要求都修正、更新了,还考虑到了诸如“测试需求并不需要网卡,因为测试时用的是操作系统自带的本地回环虚拟网卡,只有运行时才需要机器有网络”等细节,因为我不能接受从我手里给出去的东西质量那么低劣。那段日子我过得很痛苦,每天都在想我这种对自己的工作的质量要求是没有意义的,助教和老师根本不在意这些,我的这种追求只是在浪费自己宝贵的时间——如果把这些时间花在多上网抄几页报告上面,对我们的得分会有更大好处;而如果花在学好测试或者架构技巧上面,对我个人的前途会有更大好处。所幸这些没有办法的课已经过去了,如今我所处的环境不再那样没有意义了。

    至于代码,我觉得利用现有成果是不可避免而且非常合理的,毕竟计算机领域大家都追求“不要自己造轮子”、“不要 repeat yourself”。我的要求仅仅是合理、合法地使用。如果用到的代码没有许可证,就去找作者申请许可(或者学来对方的精神,然后自己重写)。如果有许可证,遵守许可证规定。如果自己的项目中大量用了外来代码,不隐瞒比例和使用方式。

    几年后,你可以做学术研究、做软件项目、做其他专业的工作,做公务员,出国深造,回家继承家族企业... ,不同的选择有不同的努力方向, 你今天是怎么为将来准备的?

    首先,个人的兴趣和舒适域方面,我不是很想在学校里继续读书,但“学生”这个身份我觉得是很好的,希望能继续保持,因为人生能比较自由地思考、选择发展方向、做出各种尝试的时间,基本上也只有学生时期。我不是很想将来一直在西方国家生活,我认为在生活方式和文化传统上还是要花很大的代价才能适应的,而我是一个很害怕变化的人。因此,我曾经的计划大概是工作或保研(那时还很早,并没有很明确),直到我了解到 MSRA 联合培养计划,发现这个出路非常符合我的舒适域——微软不像许多国内公司甚至国企,在这里我有更大的机会利用自己的能力实现个人价值;也不像学校,这里会更偏现实和工业界一点,能面对更有趣的真实问题,和更高水平的人交流。从联合培养计划毕业的话,找工作也不算困难,至少在一段时间内不用为生活和出路发愁。

    我认为在将来的发展方向这个话题上,我相比别人最大的优势在于我更早开始思考这些问题,并且自己的想法一直比较明确和稳定。劣势则是因为我害怕变化、害怕尝试新事物,可能更容易错过一些第一次吃螃蟹的机会(我来微软也是完全跟着学长的脚步的),可能会在未充分评估一个选择的情况下就放弃它。

    我本学期的规划是按上文提到的我欠缺的技术能力来学习,争取提升这些能力,同时做好这个课程以外的研究工作,争取在这一年实习结束时能小有成果吧。

    你在这门课的计划是什么?参考一些学校的教学(美国本科中国软件工程本科1美国大学软件专业),你对这个课程有什么期待?你打算怎样度过这个课程?你想当助教么?

    感觉前面已经基本上回答了这几个问题了,只说一下对于当助教的看法。前文也提到过我喜欢当老师的感觉了,我非常希望能用自己的知识积累和表达能力帮到别人,本科期间因此先后当过两次助教(计算机程序设计、操作系统英才班,前者还被学生评为优秀助教)。但我觉得当助教的前提是自己应该对这门课程有非常扎实的积累——助教不只要学过课程,而要精通课程(我当过的两门课,自己学习时分别拿到了 95 分和 100 分;虽然前者分数较低,但在课程结束后我的 C 语言水平在实践中有了更大提高,因此申请助教时我也是有信心的)。现代软件工程这门课,目前给我的感觉很好,是那种我应该能学到不少东西的课,我担心如果我有这种感觉的话,说明我的水平离心里的标准还有很大差距,恐怕没有足够的信心考虑申请助教。

    你目前的代码量是多少(列出语言和代码量,精确到100行)? 为了有资格入职一流的软件公司/互联网/人工智能公司,需要多少代码量?从事高校教学科研工作呢?

    代码量很难统计呀!大家都是怎么把自己的代码量精确到 100 行的呢?我高中和大一写过的很多东西已经遗失或者散乱地分布在各种地方了……更别说我认为对于迭代开发的项目,正确的统计方法是计算各版本加入的代码量之和,这就算整个仓库都在手上也不太容易计算……(或许有人会指出 GitHub 可以显示一个仓库中某个贡献者历史上的总贡献量,但我写过的网站项目经常会把前端依赖的静态文件锁定版本打包进仓库,GitHub 自动统计的那个贡献量全被这些东西占据了。)

    粗略统计了一下,查了几个我能想到的大项目,把不好找到的那些估算了:Python 50k,C 10k,Verilog 5k,还有不属于编程语言的 HTML 和 CSS 若干,但这个的量并不代表复杂度(可能只是因为内容多),就不列出了。

    我觉得代码量应该会加速上升的,以前写得少的一部分原因是下手键入前花了很多时间思考架构问题、查阅别人的解决方案,越来越熟练、做中等规模项目的机会越来越多后,增加速度肯定比以前快。因此我希望在接下来的几年内逐渐积累到二三十万行的级别,这个过程应该能让我获得非常有价值的实践经验。我不是很清楚我敬仰的大牛学长确切的代码量,但我认为相比而言,代码量不是个绝对的指标,我更希望自己得到他们那样的经验和思维能力,这也是可比较、可度量的,虽然不以数字的形式存在,但他们现在在研究的问题的深度和我相比,差距一望而知。

    你打算平均每周拿出多少个小时用在这门课上(时间包括上课时间)?

    我认为除了上课外,每周有一两次进入顺流状态高效工作是合理的,加上零散的讨论、处理琐事的时间,以及上课时间,每周 10 小时左右。这周实际基本上也符合这个估计,希望可以保持。

    你计划在本课程结束时,完成多少代码量?每周应完成多少代码量?

    我觉得不好估计。我独立完成过的最大项目大约也就是 10k 行 Python 的规模,或许这个课程结束时我们可以产出类似这种规模的项目?或许因为组队人多力量大,我们能产出 30k 行的项目?但考虑到我希望自己更多参与团队协调、测试、文档等工作,不要成为编码主力,所以我对自己的预期低一些,大概是 2~5k 行左右。当然这并不意味着我写到这么多就不写了~以实际需求和结果为准。

    你现在的道路很多前人曾经走过,他们有什么经验教训?请从博客末尾的文章列表任选一些阅读,针对其中一篇发表感想。

    感到从这些推荐博客中收获了很多以前没接触过的信息~不过前文已发表了很多对相关话题的思考了。

    提有质量的问题

    • 怎么做测试?《程序设计实践》已经花了很大的篇幅讲测试的意义和方法了,也介绍了他们当年为项目做测试的过程,令我非常佩服。但我总觉得还是不清楚该写什么测试——包括《构建之法》中也举了一个例子,测试 new 出来的对象是否为 null,我觉得这有点“为测试而测试”的味道了,就像 assert 1+1 == 2 一样奇怪。我理解真正的测试应该找准一个不高不低的目标层次,完善充分地覆盖所有情况。“不低”指的是不应该花力气给显然的事情都写上测试,比如基本数学运算,或者编程语言、依赖库本身已经保证了的东西。“不高”指的是不应该写过于复杂的测试,比如“十个用户先后注册,分别发表了文章并且互相产生了一些关注,然后有人发表评论,检查每个人是否正确地收到了或者不收到通知”。但有时 bug 偏偏就会发生在很低的层次(如某个难以执行到的代码段有拼写错误)或很高的层次(如很多用户一起做某个特定行为时触发某种竞争条件,导致一个数据库结构破坏,会在未来不确定的某个时间使一个请求崩溃)。所以我只好认为,不应该过早拍脑袋瞎猜哪里可能会有问题,然后为了写测试而写一大堆,而应该只写确实感觉有可能出问题的测试,或者确实出过问题的测试。这样的测试肯定不足以实现 100% 覆盖率。应该怎么看待这个问题呢?(即使实现了 100% 覆盖率,也不能说明程序没有问题,比如前述的那种竞争条件就很容易躲过 100% 覆盖的测试。)
    • 怎么在开发前期确保代码的可扩展性?拿到第一版需求后,一上手就写出 20 个类、5 个虚拟基类、3 个工厂方法很可能是过度考虑了,而且会给之后的开发和维护带来沉重的代价。但如果一上手就写过程式代码,只在真的见到 repeat yourself 的情况时才进行整理和抽象,很快就会面对着上千行的面条代码不知所措了。如果这样的代码被部署了,当需求变更时几乎不可能快速迭代。怎样才能合理控制项目抽象的层次水平,既便利开发,又确保用户提新需求时我们可以快速修改呢?我前不久维护的项目(一个在线比赛平台,用于我们社团办的比赛)就遇到了这个问题,我尽可能地设计了可扩展的架构、写出了完全达到自己的质量标准的代码,上线后也确实优雅地应对了几次需求变更。但很快还是出现了不少需求变更,除了 dirty hack 以外没有办法快速实现。当比赛结束后,原本整洁的代码里已经散布着好几个 dirty hack 了,现在我要么抛弃这个项目(“看不下去了,不管了!”)要么需要大刀阔斧地重构,才能把这些新产生的需求纳入整个架构中。实践中这种问题是怎么解决的呢?
    • 讲代码风格的那一章有一个小建议,《程序设计实践》中讲到这个话题时说,他们不用自己编造的错误案例来演示,所有的错误案例都取自真正的、在时间压力下开发出来的软件代码,我觉得这很好。《构建之法》中提到不好的变量名时给的例子,比如 theFinalBattleMostDangerousBossMonster 不像是真的程序员会写出来的,会让大家觉得“知道了知道了,这也太糟了吧,我肯定不会犯这种错误的啦”。
    • 另外,代码风格这里,有的建议我觉得有局限性,在特定的场景或者特定的编程语言中,可能需要做不同的考虑。比如 Python 的 PEP 建议行宽为 120,我也觉得这个值比较好,当然这是小问题了。一个我更关注的问题是“注释和源代码只用 ASCII 字符”,我觉得多数时候这是很好的实践,即使程序想给用户显示本地化的消息,也应该在程序中写英文,用 gettext 来翻译。但我遇到过一个确实难搞的场景:为某个国产电子游戏写工具或者脚本,其中的种种概念可能都只有中文名称,比如“剑气”、“金属性能量”、“木属性能量”、“必杀技”、“宗族角色”、“魂力”等等。一个游戏可能包含上百个这样的概念,全翻译成英文,搞一本术语对照表,然后再来写程序,可能不如利用 Python 等语言对 Unicode 字符变量名的支持,在一些地方谨慎而合理地使用原名来命名类、方法和变量?
    • 129 页提到不应该删除开发历史中犯下的错误,我总体上是认同的,但我自己也做过很多次 git force push,比如不小心把有低级错误的代码提交了,或者不小心提交了不应进入 git 的大文件。这两种错误如果不 amend and force push 掉,对别的人挺不友好的,前者会让 git log 里面有奇怪的小的修复提交,后者会让大家都很难拉取仓库。我一般的原则是:如果已经部署到某处了,就不 force push。如果能确定代码还没被部署,可以 force push 来调整历史。想知道这个问题上别人是怎么做的。

    还有一点不是很有质量的问题:

    • 78 页“无时无刻”使用错误,“无时无刻”表示从来没有过,一般只能说“无时无刻不做某事”或者“每时每刻都做某事”。
    • 112 页“立会”应改为“例会”?该页内有两处这个错误。

    后记:我很久没写过这么长的东西了,觉得很开心,有种终于有机会说出自己的很多想法,并且有人听的感觉。多数时候我只想按完成作业的最低要求搞定,并不想放开来说出自己想的各种事情,大概是因为担心花了很多时间和精力整理和写出来,结果可能没人在意,或者被人在背后嘲笑。但看了第一周的作业要求后觉得挺有感触的,对这门课充满期待,也就认真写了一下~

  • 相关阅读:
    parseInt()的用法
    报文
    express的中间件与next()
    前后端分离与前后端不分离
    jQuery中四个绑定事件的区别 on,bind,live,delegate
    TCP传输的三次握手四次挥手策略
    报文
    HTTP和HTTPS以及两者的区别
    前后端不分离与分离
    express中间件的next()方法
  • 原文地址:https://www.cnblogs.com/SmartHypercube/p/first.html
Copyright © 2020-2023  润新知