热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python如何使基于Java的StubHub受益

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

自2006年以来,Python 已经相当流行,你可以看到越来越多的初创公司在他们开始自己的业务时选择 Python作为主要语言,例如:

Netflix – 在线电视节目和电影公司

Dropbox – 最流行的文件同步和共享工具

YouTube – 分享在线视频

Disqus – 在线讨论和评论服务

OpenStack – 用于构建公共云和私有云的全开放源代码,全 Python 基础构建

当这些初创公司把这个优雅利落的语言作为基础设施来支持其业务的快速增长而得到越来越多的利益时,我在考虑我们 StuhbHub (一个基于 Java 生态系统的公司)怎样也可以从中获益,节省工作时间,并显著提高生产力,我会解释 Python 是什么?为什么选择 Python ,并向你展示用 Python 为我们的日常工作提供解决方案。

Python 用socket模块实现检测端口和检测web服务 2013-06/86449.htm

Python是什么 ? 为什么选择Python ?

Python是一种解释型的,面向对象的动态语言,像Java一样同样是跨平台的。与传统的主流语言如 Java / C + + 相比,程序员们喜欢它是由于以下原因:

1. Python 是一种多用途的语言

我们知道,每一种语言都有其自身的优势或劣势,例如有些人会用 C++ 写运行在Windows操作系统平台上的游戏,但没有人会用 C++ 去建网站。好消息是你几乎可以利用 Python 处理任何工作,例如:web 应用,桌面 GUI 应用,Linux 脚本或其他任何方便的工具,并且作为”胶水语言”你甚至可以在 Python 代码中调用像 Java/C++ 等其他语言,这意味着你已有的代码库可以重用。

2. Python 更有生产力

一般来说, 当我们谈及 Java 和 Python时,最显著的区别是作为动态语言 Python 不需要编译这一步。这其实就意味着”生产力”。

还记得我们如何验证 Java 代码的修改吗? 尤其是在 StubHub,我们有一个相当大的代码库。

修改你的 Java 代码 (1分钟)
使用 ant/maven 把你的 Java 代码编译为字节码 (5分钟)
重启 Jboss/Tomcat 来部署你的应用程序(5分钟)
打开浏览器查看变化
这里的痛点是:假设你有一个 bug 修复需要1分钟,但你必须等待至少10分钟,才能在浏览器中看到变化,更糟糕的是,如果所做的修复并不能正常工作,因此,又要花费下一个10分钟只是为了做构建和部署。

当你使用 Python 处理的话,就相当容易了。

修改你的 Python 代码(1分钟)
F5 刷新浏览器查看变化 
恭喜! 你在每次迭代修改上都节省了十分钟的时间。

考虑一下每位开发者每天有多少次修改代码,像 StubHub 这样的庞大组织又有多少开发者,你可以计算下你总共可以节省多少工时,这可能大得超乎你的想象。

3. 优雅,整齐,紧凑的 Python

还有另一个主要的优点。Python的语法相当酷,我曾有一次用 Python 和 Java 去实现同样的功能,与 Java 相比 Python 仅仅用了一半的代码行数做了同样的事情。 基于此,这就是为什么人们喜欢用伪代码来验证想法或通过编写 Python 代码,实现一个快速原型。这能很快地让你知道你的想法或原型是否可行,然后你可以为你的生产环境用 Java 重写代码。这总好过你在一开始用 Java 编码,却最终发现你的原型是不可行的。

StubHub 的 Python 故事

StubHub 走的技术路线如下:

第一代: coldfusion
第二代:Java, 基于流的框架
第三代:Java, Tapestry + Spring + Hibernate 各种现代技术框架

你可以看到整个技术生态系统的发展是基于Java的。作为一名工程师,有时你不可能说服你的团队或架构师放弃已有的代码库或把底层架构从 Java 转为其他的,但是,仍旧有一些改善的空间,你可以把事情做得又好又快,让我给你分享一下来自我在 StubHub 个人工作经历的几个故事。

故事1:使用 Python 处理 Java 源代码

2011年 StubHub 的技术团队举行了为期一周名为 fixit 的活动,活动要求所有的开发者在一周之内为已有的代码写尽可能多的测试用例以提高整体的测试覆盖率,但在此之前,我们需要先把一些测试用例标记为”broken”, 因为如果有任何测试用例失败,都会导致分析工具无法正常产生覆盖率报告。

关键是给测试用例标记上”broken”很容易, 只要给 @Test annotations 加上 broken 的属性,如下所示:

把这样的代码:

  1. publicclass SomeTest {
  2. ...
  3. }

改成:

  1. @Test(groups = {"broken"})
  2. publicclass SomeTest {
  3. ...
  4. }

但在 StubHub 的代码库中有成百上千的测试用例代码,那意味着你首先得把他们都找出来,从代码库中检出一份案例,修改源代码,提交回修改,然后为下一个案例重复此步骤直到处理完所有成百上千个案例。


推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
author-avatar
mobiledu2502926167
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有