程序员遇到问题时怎么办
今日要闻:
新浪创业上线
毫无疑问,2015是属于创业者的时代,O2O将颠覆每一个服务细分行业;
出行相关的应用层出不穷,大大降低了出行成本;
在线教育正在革新我们获取知识的方式;
全新的移动社交生态体系将我们拉的更近。
每一个颠覆的机会都是从创业者小小的梦想开始的,在梦的起点最需要支持和帮助。
我们希望新浪的平台能够全力帮助创业者和创新产品加速成长。同时,
也让我们的用户尽快用上这些足以改变我们生活的新创想,这就是新浪创业频道的使命。
今日英文:
http://docs.oracle.com/cd/E11882_01/java.112/e16548/apxtips.htm#JJDBC28948
Oracle11g中JDBC的编程建议:
避免多个线程同时使用同一个连接
禁用自动提交
加大fetch size,默认为10,但要在生成结果集之前设置
设置batch size,建议50到100,
但只对预编译语句有效,并且不能返回结果集
对于存储过程语句永远都是1,除非用Oracle的非标准实现,但并不推荐
在物理连接上启用statement caching,那将会使逻辑连接受益
number 类型能代表所有数字,但最好映射到最合适的java类型,从short,int,float一直到BigDecimal
char 类型最好映射为String
技术区:
程序员遇到问题时怎么办:
根本的指导方针
1.首先写代码的时候最好不要有缺陷。最好的修复方法就是让bug胎死腹中。
- 良好的单元测试
- 强制数据库约束
- 使用输入验证框架
- 避免未实现的“else”条件
- 在应用到主程序之前知道如何在孤立的情况下使用
日志
2.print语句。往往额外输出个一两行将有助于隔离问题。
3.切换至详细的日志记录。详细的日志记录有助于发现更多的线索。
4.搜索日志。如果日志太多,可采取关键字或错误代码来搜索日志文件。
5.开启自动换行和关闭自动换行。控制日志的自动换行也非常有用。
6.搜索不同的日志。主服务器的日志可能并不是唯一有用的日志。
7.Windows事件日志。日志文件的另一个来源可能是操作系统本身。
8.制作有用的日志记录。有时,如果你没有得到任何有用的日志记录,那么你可能需要自己写。
与其他人交流
9.询问一些可能知道问题答案的人。
10.问”愚蠢“的问题。可能你觉得这些问题很愚蠢,但其实并不是。
11.将问题解释给队友。他们可能知道答案或者能提出一些你并没有想到过的事情。
12.将问题解释给你的狗。述说的对象是谁其实没有关系,但是能让你从不同角度分析问题。
写作
13.描述问题。用最准确和最精确的语句描述问题,有助于你去思考可能的解决方案。
14.问题日记。创建一个文本文件来记录已经尝试的各种方法,包括代码片段、配置设置以及产生的任何错误。
15.记录问题和解决方案。有没有这样的情况,突然看到一个似曾相识的问题,只记得解决过但却忘记了是如何解决的?可以将问题和解决方案记录到一个容易搜索的地方,如维基、缺陷跟踪,甚至可以发送电子邮件给自己。
支持
16.阅读FAQ。
17.提交支持请求。如果有可用的产品/库的支持,那么就用。
18.在你点击send之前,请三思。写支持请求能让你再一次思考问题,有时候就在你点击send按钮之时,突然灵机一动就想到了解决问题的方法或者是新的线索。
19.其他方面的支持。可以与开发人员直接面对面交流,最好是实时聊天/ SKYPE/屏幕共享。
离开键盘
20.散散步。
21.打个盹。
22.重置优先级。暂时从键盘上离开还有一个好处就是可以让你重新评估这个问题的重要性,也许这个问题只是个CSS/布局问题,根本不值得你花上16个小时。总之要有效分配和使用时间。
23.暂时将这个问题放在一边。实在解决不了的话,可以将这个问题先搁置起来。也许几天后你在阅读相关问题的时候,突然一个激灵,解决问题的关键就来了。
隔离
24.确定是哪行代码。首先要确定是哪行代码导致的问题,以便于插入print语句。
25.将问题分割为一个单独的程序。有时候对于库和产品的问题,我们可以将它的相关代码从主程序中分离开来。这可能需要一点时间,但往往处理一个孤立的程序比应对整个的项目构建过程要容易得多。然后在解决这个单独程序的基础上再去和主程序作比较。
更改代码
即使你一点都不知道如何解决问题,更改代码也是一个挺有效的解决方法。
26.写新的单元测试。
27.重构。有问题的代码往往显得有点乱,通过一些简单的重构方法,例如重命名变量或展开嵌套的if / then/ else模块等都可以让代码整洁起来。
28.发现bug。另一个整洁代码的手段是查阅相关代码的“Find Bugs” 报告,我们之所以首先要整洁代码是因为:作为一个能让我们的大脑专注于代码的方法,既简单又划算。
29.重写。转存所有的相关代码,从头开始重写。一个全新的视角也许能让你完全规避这个问题。
30.为一些不必要的代码添加注释——或者至少是你以为是不必要的。然后你会发现可能这些代码流并不像你曾经以为的那样“没有必要”。
31.实验。如果你不能确定底层产品或库是如何工作的,那么一些小实验,特别是围绕边界条件的实验会非常有用。
32.回到干净的状态。如果你在代码中做了各种变动,或者是搞了很多配置设置,那么定期回到一个干净的状态就非常重要。否则,实验结果可能会影响正确答案,这样你就永远也找不到正确的解决方案了。
33.切换技术。
产品
34.升级到更高的版本。也许你正在处理的问题已经被修复了,可以试试先升级到另一个版本。
35.降级到以前的版本。也许问题正是由于与你目前正在使用的其他产品/库不兼容而引起的。
36.打补丁。
37.下载并安装源代码。
文件
38.阅读手册。大多数开发人员可能会认为这是一个低概率的策略,但是,嘿嘿,你永远不知道,也许答案就在文档中。
39.阅读手册的正确版本。
40.手册是否正确?有时候代码已被更新,但手册还没有。
调试器
41.了解键盘上的快捷键。
42.倒退。这是调试器的一个功能,让你的代码退后一步。
43.编写断点代码。
44.异常中断。调试器的一个蛮有用的功能就是可以捕捉到任何地方的特定异常。
45.专业化的调试工具。例如:
- Plumbr
- AppDynamics
- Chronon
- Wireshark
- HTTP profilers:Fiddler2、Charles、Live Http Headers
源代码控制
46.对bug缺陷进行编号标记。你有没有碰到过这样的问题:先是用这种方式被修复了,然后几周后又成为了bug被其他人用另一种方法修复了。这样问题貌似就有两个正确答案。解决办法就是对源代码中相关的bug缺陷进行标记,并记录一些关于为何改变以及谁参与决策等更为详细的说明。
47.Blame功能。这个可爱的小工具能告诉你是谁最后更改的代码。
48.Git bisect功能。Git有一个有意思的“bisect”命令,能自动通过你提交的历史进行二进制搜索发现故障。
寻找答案
49.谷歌搜索。
50.论坛帖子。
52.在stack exchange上沟通交流。
53.在stack exchange上提交问题。
其他
54.聘请专家。可能在短时间内成本很高。
55.招实习生。聘请专家的相反方法就是聘请新手。有时候初学者饱满的热情能让他们从不同的角度来解决问题。
56.改变要求。如果你不能修复缺陷,那么可以改变要求。通过解释各种成本需要,也许能让客户改变他们的初衷。
57.更改上/下游系统。
58.循序渐进地学习技术。
59.通过断点检查配置。更改关键配置值,并确保已经断点,这样能够让我们无所顾忌地设置配置。
60.系统化。有时候我们需要将三四件事情组合在一起,那么可以将已经试过的组合记录下来,如果需要的话一定要尝试各种的组合。
非技术:
小米科技(全称:北京小米科技有限责任公司,简称:小米)是中国一家移动通信终端设备研制与软件开发的企业,由雷军组建,于2010年4月6日正式成立。 2011年8月16日,小米科技在北京发布了小米手机。
小米的LOGO是一个“MI”形,是Mobile Internet的缩写,代表小米是一家移动互联网公司。 另外,小米的LOGO倒过来是一个心字,少一个点,意味着小米要“让用户省一点心”。
小米公司由著名天使投资人雷军带领创建。小米公司共计七名创始人,分别为创始人、董事长兼CEO雷军,联合创始人兼总裁林斌,联合创始人及副总裁黎万强、周光平、黄江吉、刘德、洪锋。
小米科技 CEO 雷军有一句名言,“站在风口上,连猪都会飞。”
雷军变成自己口中的“飞天猪”。高调、大动作不输狂妄的阿里巴巴创办人马云。
2014 年末倒数时刻 12 月 29 日,44 岁的雷军在微博上宣布完成新一轮 11 亿美元的融资。小米估值高达 450 亿美元,这个数字超越红透半边天的 Uber,超过京东 330 亿美元的市值。小米赶在 2014 年结束前,成了中国媒体眼中,BAT(百度、阿里、腾讯)之后,中国第四大网络公司,而且是同时握有软件和硬件的第四大网络公司。
即便雷军口说有信心,但他日前接受媒体访谈仍透露,“如果我们不能用大数据技术转化出价值,那我们公司再撑下去就真的破产了……现在我扛得住,明年我也扛得住,后年我也扛得住,大后年要没价值,那我就破产了。”
站上山顶的雷军,走错一步,都可能是万丈深渊。