ARTS-week-4
1. Algorithm
Leetcode 26: https://leetcode.com/problems/remove-duplicates-from-sorted-array/
使用双指针,快指针表示当前待处理的元素序号,慢指针表示结果元素序号,仅当快指针指向元素不重复时,才赋值到慢指针:
2. Review
学习盛延敏老师的《网络编程实战》,里面布置了期中作业,要求client发送ls、pwd、cd命令,server需要做对应的处理并且回显。因此这其实不仅是需要做一个TCP的client和server端(这个在学习过程中已经写了很多次),而且还需要知道如何运行shell命令。
这次的重点放在如何在c代码里运行shell命令。
主要参考:
https://stackoverflow.com/questions/646241/c-run-a-system-command-and-get-output
https://stackoverflow.com/questions/43749628/how-can-i-implement-cd-command-in-my-own-shell-in-c
简单说明一下,要运行shell命令,需要用到`popen`函数,但是使用这个函数时会发现一个问题,那就是cd命令执行之后,ls和pwd命令会发现路径并没有改变,这其实是因为使用popen函数执行cd命令,仅仅在执行的时候改变了路径,但是在后面命令时,上下文环境其实是没有改变的,因此需要使用`chdir`这个系统调用来实现。整体上实现并不难,不过直接使用chdir命令不能处理`cd -`,`cd ~`这样的命令。
3. Tips
依然是盛延敏老师的《网络编程实战》里的内容,这次学到的是select函数的用法。其实在使用上来讲,select并不难。示例代码:
4. Share
分享吴军老师硅谷来信第39封信《一次堪比大屠杀的学术造假》。事情大致讲的是在欧洲,每年都会有“心脏病指南”发给各个心脏病医生,但是里面2011年里,里面有一条“为了预防非心脏手术的病人因手术引起心脏病,建议在术前使用一种防治心脏病的药物β受体阻滞剂”这样的建议,后来被证明是来源的论文有造假,并且和建议相反的是:给非心脏手术的患者在手术前使用β受体阻滞剂,可能使手术期死亡率提高27%。而从2011年指南提出该建议后,到2012年该成果被发现造假,欧洲有76万人在进行了非心脏手术后死亡。以增加27%的死亡率推算,可能有多达16万人都是白白送命的。这的确算得上是屠杀了,甚至是杀人于无形啊。
具有讽刺意味的是,欧洲一些医生没有严格遵循指南的流程,反而无意地救了很多个生命。
于我而言,其实学术造假算不得陌生,也对此深恶痛绝,但是似乎人生总不是那么的简单,就像我们绝对不能假设其他人要么是绝对的善,要么是绝对的恶,要么是绝对的正直,要么是绝对的卑鄙。但当我看到这篇文章的时候,我还是震惊了,是的,不同人之间的同一性质的事情,区别其实可以天差地别。所以,最好的杜绝的办法就是恶小亦不为。
评论