linux 怎样安装jython-burp-api

linux 怎样安装jython-burp-api,第1张

Jython 是 Python 编程语言百分之百的纯 Java 实现(请参阅 参考资料)。 首先,我们将告诉您 Jython 为何在编写 DB2 JDBC 工具方面功能强大、使用方便且充满乐趣。然后,我们将展示如何安装带有 DB2 JDBC 驱动程序的 Jython。最后,我们将演示...

Jython 是 Python 编程语言百分之百的纯 Java 实现(请参阅 参考资料)。 首先,我们将告诉您 Jython 为何在编写 DB2 JDBC 工具方面功能强大、使用方便且充满乐趣。然后,我们将展示如何安装带有 DB2 JDBC 驱动程序的 Jython。最后,我们将演示几个查询示例,以及一个在 Jython 中使用批量插入的 QA 工具。 回页首为何使用 Jython?以下是 Neo 的一个真实故事。Neo 是全职的服务器端 Java 开发人员。他使用 Python 编写实用程序,例如解析 XML 或通过 HTTP 协议连接充当xyk网关和订单履行网关的 Web 服务。因为 Python 的类型是动态的,且具有简洁的数据结构语法,比如列表和字典,所以 Neo 发现它通常可以减少代码行。Neo 在处理一个股票交易应用程序,该应用程序是用部署在 AIX 上的 WebSphere Application Server 5.x 和 DB2 8.x 构建的。在实时系统中,每隔几分钟就要向表 STOCKQUOTE 输入 10,000 条 XML 格式的记录,以更新股票行情。执行批量输入的代码是作为另一系统的组成部分而由另一团队完成的,所以他无法获得源代码。此外,STOCKQUOTE 上有一个触发器,一旦股票价格下跌至一个预定义的阈值如 $10,该触发器就发出警报。项目经理给 Neo 分配了任务,让他用 Mercury Interactive 的 LoadRunner 或 Segue 的 SilkPerformermeasure 等自动化加载测试工具,测量在批量输入的情况下触发器所带来的性能影响。因此,Neo 需要编写一个批量输入的仿真器(simulator),用于模拟向 STOCKQUOTE 表加载 10,000 行记录。 开始,Neo 希望用纯 java JDBC 编写该仿真器,但是冗长的类型声明、编辑/编译/测试周期将占用他大量宝贵的开发时间。而且,因为 Python 的效率收益过去给 Neo 留下了深刻印象,所以他想是否可以用 Python 编写代码来使用 DB2 JDBC 驱动程序。如果可行,他就可以在几小时之内,用 Python 整洁的列表和字典等数据结构,以及列表理解(list comprehension)等整洁的函数编程功能来编写这个代码。在进行一些研究之后,他发现 Jython 十分方便,且正适合该工作。因为十分熟悉 DB2 JDBC 的编程,并拥有 Jython 参考资料,所以 Neo 在几小时之内就编写并测试了批量插入仿真器。他十分惊讶于 Jython 的强大功能,Jython 中包含了两大最佳领域:巨大的 Java 库和整洁的 Python 功能。因此,批量输入仿真器的最终代码比用纯 Java JDBC 所编写的源代码要少很多。源代码的总量影响很大,因为它可以减少程序员在编程时需要处理的细节。因此,降低源代码量将减小软件的复杂性,从而节省成本。 回页首Jython JDBC 安装安装Jython 2.1为了运行本文中的示例,您需要安装 Jython 2.1 和 JVM。您可以从 Jython 主页(请参阅 参考资料)获得 Jython。如果将 Jython 安装路径添加到平台上的 PATH 环境变量中,安装就十分方便。 Charming Jython(请参阅 参考资料)也包含了安装 Jython 的章节。 启用DB2 UDB V8 中的 SAMPLE 数据库本文所展示的示例使用了 SAMPLE 数据库。既可以通过运行与 DB2 一起发布的 db2sampl 程序来创建 SAMPLE 数据库,也可以从 DB2 安装工具菜单中的 FirstSteps 来创建。此外,还必须创建 DB2 ID/口令。本文中,我们使用 vyang/jythonrocks。 如何在 Jython 中连接 SAMPLE 数据库这里,我们将展示如何在 Jython 中用流行的 type 2 和 type 4 驱动程序连接 SAMPLE 数据库。关于所有 JDBC 驱动程序的详细描述,请参阅 参考资料。 Type 2 JDBC 驱动程序(CLI JDBC 驱动程序) from java.lang import * from java.sql import * Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance() con = DriverManager.getConnection( 'jdbc:db2:sample','vyang','jythonrocks')Type 4 JDBC 驱动程序(DB2 UDB V8 中新增的) from java.lang import * from java.sql import * Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance() con = DriverManager.getConnection( 'jdbc:db2://db2host:50000/sample','vyang','jythonrocks') 除了以下几点之外,以上连接 SAMPLE 数据库的代码看上去与 JDBC java 代码十分相似: Jython 需要导入每一个 Java 包,包括 java.lang。Jython 字符串可以使用单引号,也可以使用双引号。Jython 的类型是动态的,因此不需要将 con的类型声明为 java.sql.Connection。 回页首查询示例 现在,我们已经知道如何安装 Jython 和连接 DB2,应该开始查看示例了。下列示例在 Windows 2000 上使用 SAMPLE 数据库和 type 2 CLI JDBC 驱动程序。您可以从本页底部的下载小节中下载这些示例。

一个简单的动态查询(select1.jy) select1.jy 将按升序从 EMPLOYEE 表(包含在 sample 数据库中)中选出所有薪水超过 $20,000 的雇员。从命令控制台“jython select1.jy”运行 select1.jy。图1. “jython select1.jy”的输出以下是 Jython 代码。清单1. select1.jy from java.lang import * from java.sql import * # load DB2 JDBC type 2 driver (app driver) Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance() con = DriverManager.getConnection( 'jdbc:db2:sample','vyang','jythonrocks') stmt = con.createStatement() sql='select firstname,lastname,salary from employee where salary >20000 order by salary' rs = stmt.executeQuery(sql) employeeList=[] while (rs.next()): row={} row['firstname']=rs.getString(1) row['lastname']=rs.getString(2) row['salary']=rs.getDouble(3) employeeList.append(row) rs.close() stmt.close() con.close() print 'employee salary over $20,000' print '============================' print 'firstname lastname salary' print '============================' # print the result for e in employeeList: print e['firstname'],e['lastname'],'$'+ str(e['salary']) 以上代码在概念上与纯 Java JDBC 编程极其相似。但是,如果仔细查看,就会发现用 Jython 编写的代码更少一些。注意:无需为 Connection、Statement、Result 声明类型,虽然这在纯 Java JDBC 编程中是必要的。它们的类型是动态解析的。对于结果集处理,与 java.util 中的 Vector/ArrayList 相比,使用 employeeList(Jython 列表)和 row(Jython 字典)来保存 java.sql.ResultSet 要容易得多。对于employeeList 内容的输出,最后的 2 行代码就可以很好地完成。SQL 字符串的格式化(select2.jy) 运行“jython select2.jy”。其功能与 select1.jy 相当。惟一的区别就是它使用 Jython 字典来保存 String 模板里的名称-值对,并使用 % 运算符来将该模板转换为有意义的 SQL 字符串。 基于Jython 内置字典的字符串格式化与 C 中 printf 的一样强大,我们可以使用 % 运算符来关联字典。设想如果用 Java 来实现会怎样。 下列代码的结果是“select firstname,lastname,salary from employee where salary >20000 order by salary”,与 select1.jy 中的完全一样。 清单2. (select2.jy)基于字典的 SQL 字符串格式化 sqlTemplate = 'SELECT %(columns)s FROM %(tables)s WHERE %(constraints)s' dict = {'columns': 'firstname,lastname,salary', 'constraints' : 'salary>20000', 'tables' : 'employee'} sql = sqlTemplate % dict print sql 函数风格的结果集处理(select3.jy) 我们需要将结果写入文件中,以便进一步进行分析。为了说明如何在这里使用 Jython 的函数编程功能,下列代码中使用了 lambda 函数和列表理解,虽然也可以用命令式(imperative)编程风格来完成。 清单3. (select3.jy)使用 lamda 和列表理解 # lambda function toStr=lambda e: e['firstname']+','+e['lastname']+',$'+ str(e['salary']) # an example of list comprehension # write the result into a file called "salaries.txt" print '======================================' print 'the results are saved in salaries.txt' print '======================================' try: f=open('salaries.txt','w') f.writelines([toStr(e)+'\n' for e in employeeList]) finally: f.close() 注意: 一般来说,lambda 函数接收任何数目的参数,并返回单个表达式的值。它类似于 Java 中的匿名类,除了它是一个可在需要时作为参数来传递的第一级对象之外。Lambda 函数 toStr() 将为输出转换雇员的值(作为一个字典)。 ([toStr(e)+'\n' for e in employeeList]) 通过Jython 的列表理解,用 lambda 函数 toStr 将每个结果变成 slaries.txt 中的一行。将之与通过循环编写的等效代码进行比较。 Jython 中文本文件的处理只有简单的三行代码:open()、readlines/writelines (taking a list) 和 close()。再次设想如果用 java.io 编写会怎样。 获取图形(select4.jy) 让我们来尝试用 HTML 显示结果。还可以用红色突出显示薪水超过 $40,000 的那些雇员。 本示例中,我们使用 SWT。SWT 是一种软件组件,它以一种与 *** 作系统无关的方式为 Eclipse 平台交付原生窗口部件(native widget)功能。这就是使 IBM WSAD(Websphere Studio Application Developer)以本机代码的速度运行的秘诀。 图2. “select4.bat”的输出清单4 展示了需要从 SWT 导入的包。清单4. (select4.jy)导入 SWT 包 from org.eclipse.swt import * from org.eclipse.swt.graphics import * from org.eclipse.swt.layout import * from org.eclipse.swt.widgets import * from org.eclipse.swt.browser import * 清单5 展示了如何使用 SWT 显示 HTML 格式的结果。清单5. (select4.jy)显示 HTML 格式的结果 # display in browser with HTML display = Display() shell = Shell (display) shell.setLayout(FillLayout()) browser = Browser(shell, SWT.NONE) browser.setText(toHtml(employeeList)) browser.setSize(400,500) shell.pack() shell.open() while not shell.isDisposed(): if not display.readAndDispatch(): display.sleep display.dispose() 注意: 该代码片断几乎与用于 SWT 应用程序的一模一样。 对于格式化 HTML,我们在 Jython 函数 toHtml(employeeList) 中使用基于元组的字符串格式化,该函数将 employeeList 变成 HTML 格式的字符串。 回页首有意思的插入现在,我们将看到如何在 Jython 中进行插入。 假定Joe 是一名 QA,他需要为功能测试在 SAMPLE 数据库中创建新的雇员。在 Jython 中,Joe 进行少量工作就可以编写他自己的脚本。 例如,Joe 可以在 SAMPLE 数据库中通过运行“jython batchinsert.jy joescript.txt”,创建三名新雇员。 清单6. joescript.txt createEmployee(firstName='JOHN',midinit='M',lastName='DOE',salary=32888.55,sex='M',workdept='A01', job='DESIGNER') createEmployee(firstName='MANAGER',midinit='M',lastName='DOE',salary=50000,sex='M',workdept='A01', job='MANAGER') createEmployee(firstName='SARA',midinit='M',lastName='DOE',salary=40000,sex='F',workdept='C01', job='DESIGNER') 如果Joe 想要添加另一名 Employee,就只需用他喜欢的文本编辑器编辑“joescript.txt”。 脚本背后的功能十分简单。Jython 有一个名为 execfile(filename) 的内置函数。如果我们将 createEmployee() 实现为 Jython 函数,用于向 EMPLOYEE 表插入一行记录,那么 execfile('joescript.txt') 将按照 Joe 需要的数目插入雇员。 换言之,我们利用 Jython 的解释器,并可以为 Joe 派生一个像这样的小的测试语言。该解决方案也是可扩展的。如果 Joe 需要在脚本中删除或更新雇员,就只需要添加另一函数。对于 Joe 来说,最酷的事情就是学习曲线很短。他可以立刻编写这样的脚本,而没有意识到正在进行 Jython 函数调用。清单7. (batchinsert.jy)createEmployee 函数 from java.lang import * from java.sql import * import sys def createEmployee(**args): global stmt sqlTemplate= "INSERT into EMPLOYEE (EMPNO,FIRSTNAME,MIDINIT,LASTNAME,SALARY,SEX,EDLEVEL, HIREDATE, WORKDEPT,JOB) values ((select RTRIM(CHAR(MAX(INT(EMPNO))+1)) from EMPLOYEE), '%(firstName)s', '%(midinit)s','%(lastName)s', %(salary).2f,'%(sex)s' ,18, CURRENT DATE,'%(workdept)s','%(job)s')" # dictionary based SQL string formatting sql=sqlTemplate % args stmt.addBatch(sql) # load DB2 JDBC type 2 driver Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance() con = DriverManager.getConnection( 'jdbc:db2:sample', 'vyang','jythonrocks')con.setAutoCommit(0) stmt = con.createStatement() execfile(sys.argv[1]) stmt.executeBatch() stmt.close() # commit con.commit() con.close() 这里有许多新内容。con.setAutoCommit(0) 用于关闭自动提交(auto commit),就像 JDBC 调用中的 con.setAutoCommit(false) 一样。 用于成批插入的 stmt.addBatch(sql)、 stmt.executeBatch() 能有效地加快批量插入的速度。该技术还在 Neo 的加载仿真器中用于进行大容量的插入。 global stmt 将使stmt 成为一个共享的全局变量,很适用于该环境中。 def createEmployee(**args) 接收参数为字典 args ,并显示 Jython 函数声明是多么灵活。 sql=sqlTemplate % args 使用基于字典的 SQL 字符串格式化,我们在 select2.jy 中已经了解。 回页首结束语 本文中,我们展示了一些简单示例,可作为开发人员进行探索的起点。我们相信在继续探索时,还会有更多益处和问题。 此外,Jython 得益于与巨大 Java 库以及诸如 IBM DB2 JDBC 驱动程序这样的 API 的无缝集成。基于其语言特征,Jython 非常适合于自动化测试和加载测试等任务,这些任务都需要快速的应用程序开发。正如 Charming Jython(请参阅 参考资料)中所描述的,“Jython 绝不是要您抛弃 Java 语言。Jython 会是一个非常方便的补充,对于快速检查和构造原型、测试以及处理那些比较适合使用其方法的编码任务是很有用的。” 回页首下载名字大小下载方法jydb2.zip1128KBHTTP关于下载方法的信息参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文.

“ DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述:V8.1 更新版”( developerWorks,2003 年 7 月)

关于作者Victor Yongwei Yang 是 IBM 多伦多实验室的顾问。他从佐治亚理工学院获得了计算机科学硕士学位(MSCS)。自 1994 年以来,他曾在多家公司工作过,包括 IBM、Sun Microsystems、SunLife、CIBC、S1 和 AT&T。他是一名 Sun 认证的程序员和 web 组件开发人员。可以通过 jythonrocks@yahoo.com与他联系。 关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首

总结了10个开发环境,都是比较常见且很好用的,希望对你有所帮助:

PyCharm

PyCharm 是 JetBrains 开发的 Python IDE。PyCharm用于一般IDE具备的功能,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython!

2. Vim

曾有人开玩笑说,如果生成一段随机字符串,有人回答给他一个Vim 编辑器就可以了。Vim 虽然使用门槛高,但是一旦你学会了,写代码的效率杠杠的,Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器’Vi’功能,支持更多更完善的特性集。Vim 不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把 Vim 集成到你的工作流中。这是黑客最喜欢的编辑器之一。

3. Eclipse with PyDev

Eclipse 曾经是非常流行的 IDE,而且已经有了很久的历史。虽然现在慢慢地被 jetbrains 家族替代了,但是,瘦死的骆驼比马大,Eclipse with Pydev 允许开发者创建有用和交互式的 Web 应用。PyDev 是 Eclipse 开发 Python 的 IDE,支持 Python,Jython和 IronPython 的开发。

4. Sublime Text

Sublime Text 是开发者中最流行的编辑器之一,多功能,支持多种语言,而且在开发者社区非常受欢迎。Sublime 有自己的包管理器,开发者可以使用TA来安装组件,插件和额外的样式,所有这些都能提升你的编码体验。虽然作为收费软件,良心的是你不需要付费也能正常使用,只不过是不是给你d出一个购买的窗口,有钱了还是要支持一下正版软件。

5. Visual Studio Code

Visual Studio Code (VSCode)为MS所开发的code editing tool,免费且开源,并支持Windows,Mac OS,Linux。VSCode像是精简版的Visual Studio,升级版的Sublime。VSCode由于其非常的轻量,因此使用过程中非常的流畅,对于用户不同的需要,可以自行下载需要的扩展(Extensions)来安装。

对于配置Python开发环境来说,相比于Sublime,配置起来更加容易。VSCode配置完后的环境是可以直接进行可视化的Debug,再也不用打各种print或者用pdb调试命令了,回归到Visual Studio里F10和F11。

6. Atom

Atom是由 GitHub 的程序员们打造的称为“属于21世纪”的代码编辑器。它开源免费跨平台(支持 Windows、Mac、Linux 三大桌面平台),并且整合 GIT 并提供类似 SublimeText 的包管理功能,作为一个现代的代码编辑器,Atom 支持各种编程语言的代码高亮(HTML / CSS / Javascript / PHP / Python / C / C++ / Objective C / Java / JSON / Perl / CoffeeScript / Go / Sass / YAML / Markdown 等等)、 与大多数其他编辑器相比,Atom的语言支持已经算是覆盖非常全面了。另外,它的代码补全功能(也叫Snippets) 也非常好用,你只需输入几个字符即可展开成各种常用代码,可以极大提高编程效率。

7. Emacs

GNU Emacs 是可扩展,自定义的文本编辑器,甚至是更多的功能。Emacs 的核心是 Emacs Lisp 解析器,但是支持文本编辑。如果你已经使用过 Vim,可以尝试一下 Emacs。

8. Spyder

Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑、交互测试、调试等特性,支持包括 Windows、Linux 和 OS X 系统。Spyder是Anaconda科学计算工具中默认的开发工具,做数据分析、搞机器学习的人喜欢这个工具。

9. Thonny

Thonny是基于python内置图形库tkinter开发出来的支持多平台(windows,Mac,Linux)的python IDE,支持语法着色、代码自动补全、debug等功能,如果你正在寻找一种“轻量级”的python IDE,那么可以试一试Thonny。

10. Wing

Wingware 的 Python IDE 兼容 Python 2.x 和 3.x,可以结合 Django, matplotlib, Zope, Plone, App Engine, PyQt, PySide, wxPython, PyGTK, Tkinter, mod_wsgi, pygame, Maya, MotionBuilder, NUKE, Blender 和其他 Python 框架使用。Wing 支持测试驱动开发,集成了单元测试,nose 和 Django 框架的执行和调试功能。Wing IDE 启动和运行的速度都非常快,支持 Windows, Linux, OS X 和 Python versi。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7086717.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-01
下一篇2023-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存