python关键字对照表
你初学编程的时候是怎么提高自己的Debug能力的?
你初学编程的时候是怎么提高自己的Debug能力的?
从实际经历和心得体会来回答这个问题,希望对想学习或者正在学习的朋友有帮助。
初级阶段,熟悉需求。
要提高Debug能力,应当熟悉需求,把握好功能实现的方案和思路。经常使用的Debug手段有:单步调试,代码断点和数据断点,串口信息打印。这三大手段要相互交替使用,灵活使用,反复使用。总体来说,以代码和过程为中心点,围绕功能和实现方法进行调试。
中级阶段,熟悉架构。
这个阶段需要对系统和模块有所了解,对任务和线程有所了解,依靠的手段除了初级阶段的三种方式之后,更多的需要对整个系统的架构和功能模块有一定的了解和把握能力,把问题框到所用的架构中去定位和分析,学会让代码在脑海中试跑,适当地大胆地猜测问题出处,通过裁剪或者替换或者条件等多种方式去反复验证定位。
高级阶段,了解问题的本质。
这个阶段需要非常扎实的知识理论,非常丰富的项目经验,从原理到行业方案都有一定的见解。到了这个阶段,所谓的Debug能力,基本上已经是理论定位,实操验证。
如何提高Debug能力?
多想多做,每个程序员都是一步一步成长起来的,只不过有的人由于理论丰富而扎实,起点就高了那么一点点而已,大多数人都是靠着IDE提供的Debug辅助功能成长起来的。从上面的三个阶段来看,除了IDE本身,更多的是需要学习、总结、提升。如果你有多年的程序开发和调试经验,那么你会相信,很多时候Debug都是边猜边试,边测边想,边改边调。
还有一条很重要的方法,向项目组其他同事尤其是老员工请教,多沟通,多交流。三人行,必有我师。学习别人的经验和方法,特别是那些你感兴趣的或者你从来没有使用过的方法,也许真的很有帮助。你也可以在学习和使用的过程中,适当的变通或者改造,创新出更加适合的方法。
如果你的项目和硬件有关,Debug的时候一定要适当地合理地运用硬件工具。例如万用表,示波器,逻辑分析仪,真的非常有用。我是搞嵌入式软件开发的,我在开发和调试的过程中,就常常用到这些硬件仪器来定位和解决问题。
也许你会反驳,如果是老牛或者大咖,肯定是凭空分析,一次修改,一次通过。有没有这种可能呢?有,我自己也有这个能力,但是那些都是小问题或者确定性的问题,或者是经验问题。如果是一个创新性的重大问题,我不认为如此轻松就能解决,至少我没有那个能力,我也没有遇到有此能力的人。纵观所有的技术大牛或者大咖,解决问题的时候都会一定地反复的过程,否则就没有所谓的迭代了,也没有所谓的版本更新了。
如何用java、javascript和python获取中文的拼音首字母?
这个问题还挺不好回答的。因为不知道题主的意图,也不清楚是否要考虑多音字的问题。可能是我想多了,在这里我就给一个利用GB2312编码表查询拼音首字母的方案。
GB2312编码GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个,另外还有682个全角字符。其中,一级汉字是按照拼音字母的顺序排列的。可直接用编码查询拼音首字母。不过,二级汉字是按照偏旁部首排列的,没法查,这部分汉字只能自己做一份对照表了。
一级汉字查询根据GB2312编码规则,可按下表查询。
1601-1636 a
1637-1832 b
1833-2077 c
2078-2274 d
……(略)
百度一下可以找到完整的编码表。
二级汉字
这三千多个字只能自己做表了。我有一个暗黑的方法,就是找到拼音输入法的数据表,整理一下拿来用。这个方法有可能涉及到版权问题,我就不细说了。
Javascript的限制
Javascript是在浏览器上执行的,携带一份巨大的对照表可能严重影响网页的下载速度。建议只对应一级汉字。另外,JS没有编码转换函数,应尽量避免编码转换,实在不能避免的话,只能自己写转换函数了。网上虽有不少例子,都不是很可靠。要有个别编码存在转换错误的觉悟。
算法的考虑
如果携带二级汉字对照表,则需要考虑提高查询速度。二叉树算法是个不错的选择。