小弟不才,有幸和公司其他几位技术牛人共同开发CDN系统。在开发Peer模块的过程中,有这个一个看上去很简单的task给到我。简单的描述一下需求:删除上传目录中的临时文件,这些临时文件以 “upload_”开头,”.tmp”结尾。同时也会生成很多的源文件数据信息也保存在upload目录下。于是小弟写出了如下汗颜的代码(伪代码,仅供参考,本文重点不讲代码)
Private void deleteFile(String path) {
/*
* Do something
* Check the file name and file path to match the special conditions
*/
File[] deleteFiles = directory.listFiles(new FileFilter() {
public boolean accept(File pathname) {
Date lastModifiedDate = new Date(pathname.lastModified());
long interval = (now.getTime() - lastModifiedDate.getTime()) / 1000;
return interval > DELETE_TIME_INTERVAL;//大于一定时间的文件才被删除 }
});
for (File df : deleteFiles) {
FileUtils.forceDelete(df);
}
}
小弟以为上面这部分代码就可以work了,可以完成了所以的工作!于是乎就提交,打包,放到测试环境开始run!结果可想而知,导致测试服务器上传的视频源文件和图片源文件信息丢失,杯具呀!幸好是测试服务器,只能这样感叹一句。
好了,进入本文重点。其实主要是想再次给自己提醒一下:写程序不能想当然,不能觉得是怎么样就是怎么样,所以写的不是程序,其实是态度。
首先, 删除文件必须考虑到删除文件的访问权限,是否可以被删除,如果不能被删除,如何处理这种case,虽然我利用了第三方的API,但是这个API接口是否能够满足自身开发的程序的需求,这个需要严格审查。第二点,删除特殊文件目录先的文件是,如果这个目录下的文件目录,修改时间是大于设定的删除时间,但是此时文件夹中还包括刚刚上传的文件,如何处理这种特殊的case。第三,删除文件过程中,还可能遇到一些特殊的异常case,是否是依靠一个第三方API就能搞定。
看似很小小的一个删除文件的case,其实后边本质反应的是一个程序开发人员写程序的严谨的态度,严谨的做事风格。这一点在外企体现的更为明显,我已近不是第一次因为这个问题让别的同事提醒了。记住一句话:小公司教人做事,大公司教人做人。(没有歧视小公司的意思,江湖上流传这句话,用在这里挺合适)。如果一个程序员过不了这一关,就永远无法成长为一个技术牛人。这句话希望与各位博友共勉。
所以这里引用一下公司同事说过的话。什么是写程序?其实就是满足如下三点就能写出很好的程序。
1. 算法和数据结构;
2. 尽可能考虑到正常的case;
3. 尽可能考虑到异常的case。
我觉得如上三句话总结的比较好,所以在此应用,有不同理论的同学,还请息怒。
所以,写出本人主要是想让自己记住,如何从一个程序员成长为一个技术大牛,其实很简单:写的不是程序,是态度!细节决定成败!
以上总结希望能够和各位共勉!
分享到:
相关推荐
### 写Java程序的三十个基本规则 #### 规则一:类与方法命名规范 在编写Java程序时,为了确保代码的可读性和一致性,应遵循一定的命名规范: - 类名采用大驼峰命名法(PascalCase),如`ThisIsAClassName`。 - 方法...
- **调试的基本态度**:文章提倡积极主动的态度面对调试工作,鼓励程序员自己动手解决问题,而不是依赖他人。这种自我驱动的学习方式有助于提高个人的调试能力和自信心。 - **常见调试问题**:文章列举了一些常见的...
如果他们两个都在一个地方不是很好吗?示例C:\ Users \ my_user_name \ Documents(“我的文档”文件夹)\\ 10.0.0.1 \ shared \ local \ folders \ files(网络驱动器)W:\ folder \和W:\ folder \ file.doc(在...
- **知识点**:班规的制定不是一件简单的事情,需要遵循一定的程序和方法。通常情况下,班规是由老师和学生共同商议决定的。 - **示例**:组织一次班会,邀请学生参与班规的制定过程,确保班规既能反映学生的意见又...
- 程序本质上是一系列操作指令的集合,而不是最终的结果。 - 编程是告诉计算机如何执行任务的过程。 **3.4 编程原因** - 编程是为了利用计算机强大的计算能力和自动化处理能力,解决实际问题。 **3.5 编译器的作用...
- 其他选项如使用Winzip压缩文件、用“记事本”写心得体会等并不涉及数据库的应用。 ### 7. 勒索病毒的危害与防范 - **背景**: 2017年的勒索病毒事件对全球计算机安全构成了严重威胁。 - **知识点**: - 勒索病毒...
5. 切记说不会或不知道,这是态度问题,可以说相关或这个我回去再研究一下等 6. 不用追求内容完美无缺,太完美,是在背题目,只要能答出80%即可 7. 谨记不会的或不清楚的不要乱说,可能一句话就是暴露了自己的水平 ...
- (10) 对待计算机软件的正确态度是C.受法律保护的计算机软件不能随便复制。 - (11) 计算机的软件系统一般分为C.系统软件与应用软件。 - (12) 微型计算机的核心部件是A.CPU。 - (13) 计算机存储的基本单位是A....
**写不写文档?** 在敏捷开发中,虽然文档仍然很重要,但强调的是“工作软件胜过详尽的文档”。这意味着团队应该优先关注实际产品的开发,而不是过度依赖文档。当然,必要的文档仍然是必须的,特别是在涉及复杂系统...
【描述】:“纯粹是自己写的代码,自己做的程序,希望大家帮忙找Bug,如果发现,请上报,一款网上不可复制的小软件。完全自己开发,绝对以前没见过” 这一描述强调了该小程序的原创性和独特性。开发者不仅从零开始...
- **避免陷阱**:在进行架构设计时,需要注意区分哪些是真正属于架构设计范畴的内容,哪些则不是。比如,某些细节性的技术选择可能不属于架构设计的范围,但很容易被误认为是。 - **持续优化**:随着项目的发展和...
- **书写Debug版和Release版的程序**:区分开发和发布环境,确保程序质量和性能。 通过以上知识点的学习,初学者可以逐渐建立起良好的编程习惯,提高编程水平。林锐的《编程修养》不仅关注技术细节,更强调作为一...
4. **中断处理**:虽然不是所有应用都会涉及中断处理,但WinIO也提供了中断相关的API,如`WinIntHook`,可以在指定的中断处理程序中插入自定义代码。 5. **安全与兼容性**:尽管WinIO提供了强大的功能,但直接的...
这不符合正规程序。 ### 22. “道而弗牵,强而弗抑,开而弗达”的教学原则 - **知识点解读**:这句话出自《学记》,强调的是启发式教学的原则。 - **选项解析**: - A: 循序渐进原则。虽然也是教学原则之一,但与...
- C#:虽然不是Android原生,但在跨平台开发中可能涉及。 4. **工具使用**: - 示波器:用于查看电信号的波形,分析信号质量。 - 万用表:测量电压、电流、电阻等基本电气参数。 - 烙铁:电子元件焊接工具。 5...
- **建议**:专注于学习语言本身,而不是特定的IDE。 #### 5. 不要忽视看似简单的编程问题 - **解释**:每个问题背后都可能隐藏着更多的知识点。 - **建议**:即使是简单的问题,也要认真对待,因为它们可能是通往...
- 避免抄袭:实训报告不是简单的教材复制,应强调个人实践体验和总结,反映个人思考。 - 科学态度:报告需秉持实事求是的原则,准确记录实训数据,避免编造或抄袭。 - 规范书写:报告内容应清晰、规范,包括代码...