3款好用抓包工具Fiddler2、Wireshark、Firebug的区别

  • Firebug:Firefox的一个插件,超牛的一个web调试工具,web开发者的神器。
  • Fiddler2:一个网络调试代理,用来监测本地计算机和Internet之间所有的HTTP通讯。

抓包Fiddler2比Firebug要强,不过2者都只能捕捉到http协议的。

  • Wireshark:(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,
    并尽可能显示出最为详细的网络封包资料,直接获取网卡数据,系统底层抓包神器。

快速开发语言Ruby和Python该怎样抉择?

如果你是一名设计者,并且想学习后端编程去测试应用程序,那么Ruby 或者Python将是不错的选择,这两者都是面向对象的动态编程语言,而且简单易学。

更值得一提的是,在2013年度最受欢迎的五种工作技巧之中,Ruby 和Python的编程技能都榜上有名。

Ruby不仅拥有广阔的生态体系,同时还有一个活跃、并且广受支持的社区。
Ruby是在1995年诞生的,但它真正变得流行起来则是在2003 年Rails软件架构正式推出之后。
由于集合了预写代码,Ruby让网站开发和网页应用程序开发变得更加简单。

Python虽然它与Ruby非常相似,但是这个编程语言却受到了更多科学界工作人员的青睐。
因此,如果你想在机器学习和人工智能方面有所发展,那么Python将是必修的编程语言。

Java编程中的硬编码问题

在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。大部分程序语言里,可以将一个固定数值定义为一个标记,然后用这个特殊标记来取代变量名称。当标记名称改变时,变量名不变,这样,当重新编译整个程序时,所有变量都不再是固定值,这样就更容易的实现了改变变量的目的。尽管通过编辑器的查找替换功能也能实现整个变量名称的替换,但也很有可能出现多换或者少换的情况,而在计算机程序中,任何小错误的出现都是不可饶恕的。最好的方法是单独为变量名划分空间,来实现这种变化,就如同前面说的那样,将需要改变的变量名暂时用一个定义好的标记名称来代替就是一种很好的方法。通常情况下,都应该避免使用硬编码方法。

java小例子: int a=2,b=2;

硬编码:if(a==2) return false;

不是硬编码 if(a==b) return true;

一个简单的版本:顾名思义, 就是把数值写成常数而不是变量.

如求圆的面积的问题 PI(3.14)

3.14*r*r (这个3.14就是hardcode)

V_PI*r*r (这里的V_PI用的是变量形式,就不是hardcode).

 

 

硬编码对于程序员来说都不陌生,只是个很简单的概念,但是它却常常出现在N多程序中.
在开发的时候,开发人员有时候图方便,赶进度,或者想不到更好的方法,只好将某些业务逻辑固定死,常见如下判断

if (a == "拟制中"){
    ....
}

也许好一些的会用数字代替 比如用个"02"代替,也许程序跑个1两个月甚至一两年都没问题
但是需求更改或者用户环境变化了,那问题就会暴露,而且影响是明显的.
比如用户改成英文环境了,变量a的值变成了英文字符串"drafting",那么这个判断就不成成立了,如果这个判断是涉及到流程,这一步出错,程序再往下走也就是一错再错.也许有人说,不用字符串判断,改成数字就可以避免,但是也许某天这个数字跟其他业务逻辑发生重叠,那还是没实现根治,解决方法我相信大伙都明白,其实只是简单的设置一个变量保存常量,比如

string Drafting = "拟制中",
if (a == Drafting){
    ....
}

那么a的值改了,相应修改drafting的值,哪怕是a变成英文,也可以事先改变好Drafting的值,这样简单处理,即可实现编码更改的无缝兼容,让编码变"软"了.当然前提是在开发的时候就做好.

再比如某些系统设计到人员权限等信息,某某单据必须让管理员甲审核,开发时管理员是甲,但是不久甲离职或调动了不当管理员了,但是系统审核的单据信息还是发给甲,如果甲的人员信息还保存在数据库中,程序还能跑,而实际上HR会毫不留情的删除掉甲的信息并且不通知开发人员.这样程序还继续执行的话,要么抛个空指针异常,要么抛个范围溢出异常,影响后续流程.而事实上,只要设置一个管理员标记,或者动态给个方法获取管理员,也就省了后续麻烦

当然硬编码的现象并不是仅仅出现在逻辑判断中,比如javascript,如果写的脚本仅仅能在IE运行,那么也就成了典型的硬编码了,诸多现实的例子就不举例了.所以,对于程序员来说,硬编码好比是程序的硬伤,追根到底不仅编码人员有责任,设计人员也因改意识到根据用户需求展开可扩展的设计.