从数据包看工程师应该注意的编程习惯

HTTP头域书写习惯探讨
本文通过协议分析过程中的实例,探讨了HTTP头域的书写习惯及其重要性。特别是针对大小写不敏感特性及冒号后的空格使用进行了讨论,并强调了遵守RFC2616规范的重要性。

  以下所讲的内容是我在协议分析的过程中遇到的,但是确实是值得我们攻城狮思考的问题。即从数据流中反应程序员的习惯问题。

  在协议分析的过程之中,配置正则的时候有很多奇怪的现象,比如在配置Host头域的时候的,使用了全局通用的规则(H|h)ost:(\x20),一开始的时候偶非常疑惑为什么这么写。印象之中HTTP的头域都是大写开头的,这里为什么还要小写呢?回头在查看HTTP1.1发现RFC2616中原话是这样说道Each header field consists of a name followed by a colon(":") and the field value.Field names are case-insensitive. The fieldvalue MAY be preceded by any amount of LWS,though a single SP is preferred,意思是头域属性是大小写不敏感的,然后在冒号之后最好能加一个空格。RFC给出了一个指导性的意见,大小写不敏感,但是在RFC源文档中所有的头域默认都是大写开头的,而且较长的头域名使用了下划线风格的大写模式。其实这是一种习惯或者书写风格吧,使用过面向对象编程的人都会了解,在面向对象的编程风格中类一般都是大写开头的,而且camel-case风格应用很广泛。文中还提到了最好能够在冒号之后加一个空格,这是一个建议,并没有强制要求。在《clean code》以及《编写可读代码的艺术》这两本书中也都多次提到类似的建议(空格和camel-case风格),这说明了原文RFC提到的是一种良好的书写习惯。不是有一种说法建议我们要遵循团队的编码规范,同理,我们在写HTTP相关程序的时候,最好能够参考一下HTTP的RFC。

 回到开头提到的问题我们配置'h'的原因恰恰是因为有的程序员在设置头域的时候写了"host"而不是"Host",为了能够识别全面,我们当然得考虑到这种情况。其实这种情况很多程序员未必会遇到,原因是很多的开发基于已有的框架可能在Host等常用的头域都会给你设置好了,你只要填写相关的值就可以,但是在遇到非标准的头域的时候比如X-Requested-With的时候,如何去添加该头域就能体现出一个人的习惯来。

  还有一点就是是我在抓包的过程中遇到了就是,有的程序中缺少(H|h)ost:(\x20)中的空格即类似于Host:careland.com.cn这种形式,这个问题虽然并没有困扰我很长时间,但是一度令我很纠结,命名规则配置很正确,为什么引擎不能识别。原因就是空格就在那里,看不看得见是你自己的事,真是囧。

 上述所遇到的问题不能说写这个程序的人书写的代码功能有问题,但是反应的却是一种书写习惯或者说是所有编写与HTTP相关程序的程序员应该阅读一下RFC2616,参考一下标准给出的建议以及文档中的书写习惯。在与同事的交流过程中我了解到,在分析国外的一些应用,他们的头域书写的非常规范,类似的问题很少。但是国内的应用总会出现一些比较奇怪的首部域。这倒说明不了国外的程序员算法能力比我们强上多少,相反我们高校的ACM队伍在决赛中经常夺冠,前50名的有很多是中国参赛队。这说明的是一种程序的书写习惯,要不然《cleancode》以及《编写可读代码的艺术》都是老外写的,这方面我们只能翻译别人的,很少有自己的原创。我们现在在做代码的走查和重构,上述所提到的问题很少会被提出来,毕竟看似影响不大,但是在编写程序的过程中,建议能够严格遵守某一种良好的习惯。

基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问题的研究与实现,重点利用Matlab进行算法编程和仿真。p-Hub选址是物流与交通网络中的关键问题,旨在通过确定最优的枢纽节点位置和非枢纽节点的分配方式,最小化网络总成本。文章详细阐述了粒子群算法的基本原理及其在解决组合优化问题中的适应性改进,结合p-Hub中转网络的特点构建数学模型,并通过Matlab代码实现算法流程,包括初始化、适应度计算、粒子更新与收敛判断等环节。同时可能涉及对算法参数设置、收敛性能及不同规模案例的仿真结果分析,以验证方法的有效性和鲁棒性。; 适合人群:具备一定Matlab编程基础和优化算法理论知识的高校研究生、科研人员及从事物流网络规划、交通系统设计等相关领域的工程技术人员。; 使用场景及目标:①解决物流、航空、通信等网络中的枢纽选址与路径优化问题;②学习并掌握粒子群算法在复杂组合优化问题中的建模与实现方法;③为相关科研项目或实际工程应用提供算法支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现逻辑,重点关注目标函数建模、粒子编码方式及约束处理策略,并尝试调整参数或拓展模型以加深对算法性能的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值