java、php、python的开发效率对比
来源:互联网 发布:如何在淘宝买东西便宜 编辑:程序博客网 时间:2024/05/02 04:16
我对java最熟悉,对php和python只是了解,实际工作中也没有真正用过,昨天一个合作方发过来一个service api的demo实现,里面有java,php和python三种实现,打开一看,第一眼就被python这类脚本语言所折服,单从代码量上来说,差别实在是太大,如果都是熟手开发,业务场景也正好适合该语言的话,开发效率自然就不用再说:
扣除掉注释之后:java 56行;php:30行;python:15行
不得不再次感叹脚本的威力
package com.test.http;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.security.MessageDigest;import java.math.BigInteger;public class ApiDemo{public static void sendRequest(String id, String secureKey) throws IOException{URL request = new URL("xxxxxx?id="+id);HttpURLConnection connection = (HttpURLConnection)request.openConnection();connection.setDoOutput(true);connection.setDoInput(true);connection.setRequestMethod("POST");connection.setUseCaches(false);connection.setInstanceFollowRedirects(true);connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");connection.connect();String scanParam = "{\"scanlist\":[{\"sid\":\"123\", \"url\":\"http://dl.test.com/test.apk\", \"md5\":\"3d41f29d762ec547bfa4b42f57f3dc7c\"}]}";String authKey = getStringMd5(scanParam + id + secureKey);String post = "authkey=" + authKey + "&request=" + scanParam; DataOutputStream writeStream = new DataOutputStream(connection.getOutputStream()); writeStream.writeBytes(post); writeStream.flush(); writeStream.close(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line=""; while ((line = reader.readLine()) != null){ System.out.println(line); } reader.close(); connection.disconnect(); }public static String getStringMd5(String src) { MessageDigest md; StringBuilder md5 = new StringBuilder();try{ md = MessageDigest.getInstance("md5"); md.update(src.getBytes()); for (byte b : md.digest()) { md5.append(String.format("%02x", b)); }} catch (Exception e) { e.printStackTrace(); } return md5.toString();}public static void main(String[] args) throws Exception { try { sendRequest("test", "123456"); } catch (IOException e) { e.printStackTrace(); }}}
<?php$id="test";$secure_key="123456";$api_url="http://xxxxx?id=".$id;$scan_parm="{\"scanlist\":[{\"sid\":\"123\", \"url\":\"http://dl.test.com/test.apk\", \"md5\":\"3d41f29d762ec547bfa4b42f57f3dc7c\"}]}";$authkey=md5($scan_parm.$id.$secure_key);$post="authkey=".$authkey."&request=".$scan_parm;$url_info=parse_url($api_url);if(!isset($url_info["port"])){$url_info["port"]=80;}$request.="POST ".$url_info["path"]."?".$url_info["query"]." HTTP/1.1\r\n";$request.="Host: ".$url_info["host"]."\r\n";$request.="Cache-Control: no-cache\r\n";$request.="Content-type: application/x-www-form-urlencoded\r\n";$request.="Accept: text/html\r\n";$request.="Content-length: ".strlen($post)."\r\n";$request.="Connection: close\r\n";$request.="\r\n";$request.=$post;$fp = fsockopen($url_info["host"], $url_info["port"]);if(!$fp){ echo "$errstr($errno)\n"; }fwrite($fp, $request);while(!feof($fp)){ $response .= fgets($fp, 128);}echo "$response\n";?>
#!/usr/bin/pythonimport httplib, md5 if __name__ == "__main__": id="test" secure_key="123456" scan_param='{"scanlist":[{"sid":"123", "url":"http://xxxxx/test.apk", "md5":"3d41f29d762ec547bfa4b42f57f3dc7c"}]}"' authkey=md5.new(scan_param + id + secure_key).hexdigest() post= "authkey=%s&request=%s" %(authkey, scan_param) domain="xxxxx" url_path = "/api/scansoft?id="+id headers = {"Content-type": "application/x-www-form-urlencoded"} connect = httplib.HTTPConnection(domain) connect.request("POST", url_path, post, headers) res = connect.getresponse() print res.read()
- java、php、python的开发效率对比
- Java的前置++和后置++效率对比
- NDK开发 从入门到放弃(六:JAVA与C++灰化图片的效率对比)
- Java和PHP在Web开发方面的八大对比
- 对比一下PHP和JAVA开发网站的优劣
- Java和PHP在Web开发方面的八大对比
- 对比一下PHP和JAVA开发网站的优劣
- php---引入文件的函数之间的效率对比
- 对比2种原生php文件缓存的效率
- PHP中分隔符与连接符的效率对比
- Python 实现的Binary Search 算法以及效率的对比
- Python几种创建list的方法的效率对比
- 关于python与c++效率的对比实战
- python写入csv和matlab写入csv的效率对比
- python应用中一个具体问题的效率对比
- PYTHON解析XML的多种方式效率对比实测
- 程序效率的对比
- java中常见IO的读写效率对比
- 黑马程序员_张孝祥7K面试题-交通灯管理系统
- icu 字符编码探测及字符编码转换实例
- Vim 配置详解
- ASP.NET在updatepanel中使用脚本块
- VC启动和停止windows系统服务
- java、php、python的开发效率对比
- Linux内核里的debugfs
- 优酷网架构
- 使用inotify实现实时文件同步shell脚本
- STL之迭代器及traits编程
- error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESUL
- .Net启动外部程序 .
- ioctl与unlocked_ioctl区别
- linux install php5