‘壹’ python与java,C,Ruby,PHP等编程语言有什么区别
Python与Java的区别
学习起来Python要比Java简单快速的多,java从c++这样的系统语言中继承了很多语法和复杂性,而Python的语法非常简洁,大大提高编写效率。
Python与C#语言的区别
Python是解释型语言,不需要额外的编译过程,而C#必须编译后执行。另外,Python程序全部是开源的,但是C#就不是了,Python程序可以跨平台,不需要修改就可以运行在Windows和Linux等系统平台。
Python & C++,Perl
Python比C++等这类语言,更容易学习,语法规则简单,语意化,易读易懂,容易维护。
Python & Ruby
Python与Ruby确实有些相似,但是前者比后者更加成熟,语法的可读性是后者没法比的。与Ruby和Java不同的是,面向对象编程在python里不是必选的,这就更加增加了这门语言的灵活性。Ruby语言只适合编写,但是维护的时候你会非常头疼,更不用说多人编写和维护的项目代码了。
‘贰’ 有没有技术大牛了解java开发,测试和CI的关
大家可能对如下情景比较熟悉:
如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时间的等待一般就浪费了;
在开发项目时,有些功能比较复杂,当时觉得思路特清晰,但是过了一段时间后,自己也忘了,完善功能时频繁出现bug,降低开发速度;
在维护项目时,不知道自己修改的对还是不对,是否存在隐患;维护速度降下来了;
如果开发一个很多人都使用的接口,典型的如用户系统,要保证比如升级时向下兼容;
在团队间协作时,有时候只定义好接口,对方还没有给实现,如何进行同步开发?
如上问题,估计只要是个开发人员,都可能遇到过;如果此时有了单元/集成测试,那我们能很好的解决这些问题。(注:加下来如果没有特殊情况,不刻意强调 单元测试/集成测试,即提到测试是指的是单元/集成测试)
我从以下几个方面介绍测试:
1、为什么需要测试?
2、如何进行测试?
3、测试有哪些好处?
4、一切都需要测试吗?
1、为什么需要测试?
测试的目的是什么?我的理解是:
缩短发现问题到解决问题的速度;
给程序一个修改后能验证是否正确的保证;(回归测试)
如果是开源软件,我们可以通过单元测试了解其是怎么使用的;比如我之前通过cglib的单元测试学习过cglib的使用;
所以如果你遇到如上问题,就需要写测试。写测试可能是为了自己(1、2);也可能是为了帮助别人(3)。
2、如何进行测试?
很多朋友不知道如何进行测试,其实测试很简单,别把它想复杂了,按照自己的想法测试每个功能点是否正确即可。
2.1、测试流程
单元测试流程
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native2ascii-maven-plugin</artifactId>
<version>1.0-alpha-1</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>native2ascii</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<src>src/main/messages</src>
<dest>target/${project.artifactId}/WEB-INF/classes</dest>
<includes>messages.properties</includes>
</configuration>
</execution>
</executions>
<!--native2ascii使用的tools.jar-->
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.7.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
如果使用mysql,端口只能是3306。
如果想开端口测试,这是不允许的。
如下是我项目中的一个配置.travis.yml,放到项目的根下即可:
-----------------------------------
language: java 语言
env: 环境
- DB=mysql 使用mysql
jdk:
- openjdk jdk使用openjdk
mysql:
database: es 数据库名为es
username: root 用户名为root
password : 密码为空
encoding: utf8 编码为utf8
install: 安装时执行的脚本
- mvn install -Dmaven.test.skip=true mvn安装并跳过测试
before_script: script之前执行的测试
- cd web
- mvn db:create 创建数据库的mvn命令(此处使用了maven-db-plugin 插件)
- mvn db:schema 创建脚本的mvn命令
- mvn db:data 安装数据的mvn命令
- cd ..
script: 测试时执行的脚步
- cd common
- mvn test 测试common子模块
- cd ..
- cd web
- mvn test -Pit 测试web子模块,并指定使用it profile测试(即集成测试的配置,具体参考pom.xml中的profile/it)
notifications: 触发
email: 测试完成后测试报告发到哪
-----------------------------------
持续集成不能修复代码的错误,而是和单元测试一样,缩短发现问题带解决问题的时间,这样可以提高开发效率,降低项目风险,提高项目的稳定性。而且尤其是团队协作时,可以发现其他人的代码是否对自己的代码产生影响。
到此我们利用单元测试+CI可以加速开发人员的开发速度。利用好单元测试和CI,不要纯粹为了单元测试和CI而去做这些事情。
本文没有介绍TDD,TDD并不会那么美好,我认为我们可以借鉴TDD的一些思想,但决不能迷信TDD,有时候,尤其如开发企业应用,先写功能再写测试可能效率更高,而且大部分时候是不需要TDD的。而且我也没能在实际项目中获取太多TDD的好处,但是我获得了测试的好处。
本文也没有介绍测试覆盖率,我认为不要一味的追求覆盖率,有时候有的覆盖率没有任何意义。所以不要让为了覆盖率而覆盖率拖慢了项目开发进度。
正如stackoverflow上的一篇帖子《How deep are your unit tests?》上Kent Beck的回答:
写道
老板为我的代码付报酬,而不是测试,所以,我对此的价值观是——测试越少越好,少到你对你的代码质量达到了某种自信。
可以前往coolshell的“单元测试要做多细?”去得到一些经验。
‘叁’ 浠涔堟槸2016骞存渶鍊煎缑瀛︿範镄勭紪绋嬭瑷
TOP1:JavaScript
璞佺劧阅掔洰鎺掑悕绗涓镄勬槸 JavaScript锛屾瘚搴哥疆鐤戯纴JavaScript镄勫叧娉ㄥ害鎸佺画澧为暱锛屼娇涔嬫垚涓哄ぇ锷匡纴灏ゅ叾鏄鐜板湪瀹冧篃鍙浠ョ敤𨱒ュ紑鍙戝悗鍙帮纴鐢氲呖鑳界敤𨱒ユ瀯寤烘湰鍦拌瑷镄勭Щ锷ㄥ簲鐢锛堥氲繃浣跨敤React Native锛夛纴闅忕潃绉诲姩绔钖勭嶈法骞冲彴妗嗘灦镄勯渶姹傦纴js 琚浜堜互閲崭换銆侸avaScript灏嗘寔缁鍦拌幏寰楁洿澶氱殑寮鍙戝伐鍏凤纴骞朵笖浠ョ浉褰揿揩镄勯熷害鍗囩骇镌锛屾墍浠ヤ綘鍙浠ユ枡𨱍冲埌瀹冨皢𨱒ヤ粛铹朵细鏋佸害镄勯吨瑕併傝缮链変竴镣癸纴鎴戞湁涓浜涘悓瀛﹀仛鍓岖宸ョ▼甯埚伐璧勬瘆鎴戦珮寰埚氾纴姣曚笟涓骞村悗灏辨湀钖2涓囦簲锛屽惉璇翠粬浠鍏鍙告ョ己H5锛宐ootstrap锛宎ngular.js銆乺eact.js 绛夌瓑杩欎簺鍓岖鎶链宸ョ▼甯堬纴寮镄勫伐璧勪篃铔楂樼殑銆傛墍浠ユ湁瀵 web 鍓岖镒熷叴瓒g殑钖屽︼纴js 鏄蹇呭囨妧鑳斤纴宸ヨ祫涔熶箰瑙伞
TOP2:Java
鎴戝︾殑绗涓闂ㄨ瑷灏辨槸Java銆侸ava涓鐩寸ǔ灞呮滃崟鍓嶅嚑浣嶏纴杩栾兘浣撶幇缂朖ava镄勬寔涔呯儹搴︺侸ava链変竴浜涙瀬浣崇殑钖庡彴寮鍙戝伐鍏峰苟涓擩ava镟村氱殑涓轰紒涓氩紑鍙戠潃𨱍炽傚彟澶栵纴Android 浣垮缑Java鍦ㄦ祦琛岃瑷涓链変简澶х垎鍙戯纴澶у氭槸浼佷笟锲燡ava镄勭ǔ瀹氩拰镓╁𪾢镐ц屽瑰畠阍熺埍链夊姞銆傚洜姝わ纴Java鍦ㄦ湭𨱒ュ嚑骞村皢缁х画浣滀负链娴佽岀殑缂栫▼璇瑷钥屽潥鎸轰笅铡汇
TOP3:Python銆丷uby銆丳HP
Python銆丷uby銆丳HP锛岃繖涓夌嶉兘鏄灞炰簬锷ㄦ佽瑷锛屽姩镐佽瑷阃氩父琚浜轰滑璁や负镟村姞阃傚悎鍒濆﹁呭︿範锛屽洜涓哄畠浠镟村姞澶氭牱鍖栦篃镟村姞链夎叮銆备綘鍙浠ュ緢蹇鍦扮敤鐩稿瑰皯镄勪唬镰佹瀯寤轰竴涓搴旂敤绋嫔簭锛屽湪浣犲笇链涚敤浠g爜瀹炵幇镆愪釜浣犳兂瑕佺殑锷熻兘镞讹纴娌℃湁澶澶氱殑寮哄埗瑙勫垯闄愬埗銆
鐢变簬锷ㄦ佽瑷阃氩父鏄寰堥珮绾х殑璇瑷锛屼綘鍙闇瑕佽瘽寰埚皯镄勬椂闂村幓鎺屾彙缂栫▼璇瑷镄勭粏鑺傦纴浠庤岃╂洿澶氱殑绮惧姏闆嗕腑浜庡︿範缂栫▼姒傚康涓婏纴鐢变簬鍒濆﹁呭逛簬鑳借╁︿範鎴愭灉绔嬬胯佸奖镒熷埌寰堟湁锷ㄥ姏锛岃繖涔熸槸锷ㄦ佽瑷鍦ㄥ埯瀛﹁呬腑寰堟祦琛岀殑鍙︿竴涓铡熷洜銆
Python
𨱍冲繀澶у跺氩惉璇磋繃Python鐖铏锛屽洜涓篅钖戝彸濂旇窇鍓嶈緢涔嫔墠鐢≒ython鐖铏鍒嗘瀽鍑轰简绠涔︿腑镄"棣栧腑璇勮哄畼"(璇ョ敤鎴锋病鏂囩珷锛岀‘瀹炵亩涔︿笂璇勮烘℃暟链澶氱殑鐢ㄦ埛)锛孭ython阃傚悎缁椤埯瀛﹁呯殑鍏ラ棬缂栫▼璇瑷銆傚紑鍙戣呭彲浠ョ敤瀹冩潵缂栧啓妗岄溃绔鍜屾湇锷″櫒绔镄勫簲鐢锛屽畠涔熸湁鐢ㄦ潵鏁版嵁鎸栨帢镄勫緢濂界殑宸ュ叿銆傚彟澶栵纴Python鍦ㄧ戝﹁$畻锛屾暟鎹鍒嗘瀽锛岀敓鐗╀俊鎭绛夊︽湳棰嗗烟涔熼潪甯告祦琛屻傚緢澶氱殑鍏鍙稿凡缁忓紑濮嬬敤Python鏋勫缓杞浠朵简銆
Ruby
涓轰简璁╁紑鍙戞洿锷犲紑蹇冨拰楂樻晥鍦板紑鍙戣岃捐$殑璇瑷锛孯uby锲燫uby on Rails妗嗘灦钥屾祦琛岋纴Ruby on Rails 鏄涓涓涓绔椤纺镄 Web 寮鍙戞嗘灦锛屼负浜嗗紑鍙戣呭紑鍙戠殑渚垮埄钥屼紭鍖栥
Ruby 涓昏佽鐢ㄦ潵锅氩悗绔镄勫紑鍙戯纴涓浜涘緢娴佽岀殑缃戠珯姣斿 Airbnb锛孲hopify锛孊loomberg锛孒ulu锛孲lideshare锛屽拰镟村氱殑缃戠珯寮濮嬬敤Ruby on Rails鏋勫缓钖庡彴銆傛垜链杩戜篃𨱍崇敤Ruby𨱒ユ瀯寤鸿嚜宸辩殑涓浜哄崥瀹銆
PHP
PHP鏄涓闂ㄦ湇锷″櫒绔镄勮剼链璇瑷锛岀敱浜庢槗浜庡叾浠g爜鎺屾彙钥岄氩父琚璁や负鏄瀵瑰埯瀛﹁呭弸濂界殑璇瑷锛孭HP鍏ラ棬骞朵笉闅俱傚ぇ閮ㄥ垎缃戠珯镟剧粡鐢ㄨ繃PHP鏋勫缓锛屽洜涓哄緢澶х▼搴︿笂杩椤氨鏄涓闂ㄤ笓闂ㄤ负Web寮鍙戣捐$殑璇瑷銆
Facebook, WordPress绛夋洿澶氱殑缃戠珯镟剧敤杩嘝HP鏋勫缓銆
TOP4:C++
C++鏄涓闂ㄥ熀浜嶤镄勫己澶ц瑷銆傚畠鏄璁捐$敤𨱒ョ紪鍐欑郴缁熻蒋浠剁殑锛屼絾涔熺敤𨱒ョ紪鍐欐父鎴忔垨钥呮槸娓告垙寮曟搸锛屾岄溃搴旂敤锛岀Щ锷ㄥ簲鐢ㄥ拰web搴旂敤銆侰++闱炲父寮哄ぇ鍜屽揩阃燂纴镓浠ヤ互镊充簬Facebook鐢ㄥ畠寮鍙戜简涓浜涢珮镐ц兘镄勶纴鍙闱犵殑缁勪欢銆
璁稿氲蒋浠剁殑閮ㄥ垎鏄鐢–++𨱒ユ瀯寤虹殑锛屽寘𨰾珹dobe绯荤粺锛孉mazon锛孭aypal锛孋hrome绛夌瓑銆傛兂C涓镙凤纴C++阃氩父琚璁や负鏄鍒濆﹁嚜瀛︽瘆杈冮毦镄勶纴镓浠ュ傛灉浣犲喅瀹氭妸C++浣滀负浣犲︿範镄勭涓闂ㄧ栌骞村煄璇瑷锛屾渶濂芥槸阃氲繃鍦ㄤ竴浜涘垎浜浼氢笂镓句釜濂界殑瀵煎笀锛屾垨鏄镓句竴涓狢++镄勭紪绋嬭佸笀鏁椤间竴涓嬨
TOP5:CSS
瀵逛簬锽沧㈠悇绉岖偒閰峰悐镣稿ぉ镄勬晥鏋灭殑蹇呭囨妧鑳斤纴褰撶劧锛屽彧鎺屾彙CSS鏄瀹屽叏涓嶈岀殑銆傚綋浣犳病链夊厖鍒嗕简瑙HTML,JS绛夌瓑锛屼綘涓崭细璧扮殑澶杩溿备綘闇瑕佺殑瓒婂氾纴瀛︿範鎺屾彙镄勪篃灏辫秺澶氥
TOP6:C#
镀忔垜镊宸卞叕鍙稿緢澶氱郴缁熼兘鏄鐢–#鍐欑殑鍓岖锛孞ava鍐欑殑钖庣銆侰# 鏄琚璁捐℃垚鍦.NET妗嗘灦鍦ㄥ紑鍙戠殑涓闂ㄨ瑷锛屼富瑕佸湪寰杞镄刉indows涓婅繍琛屻
C# 琚鐢ㄦ潵杩涜寃eb寮鍙戯纴娓告垙寮鍙戝拰涓浜涘井杞阃氱敤镄勫紑鍙戙傚敖绠″井杞鍦ㄨ繃铡诲苟涓嶆彁鍊¤法骞冲彴鍏煎癸纴Xamarin涓鐩磋嚧锷涗簬涓涓钖崭负Mono寮婧愰”鐩锛岃繖涓椤圭洰鐩镄勬槸鎶奀#绉绘嶅埌鍏朵粬骞冲彴涓婂拰缁橪inux寮鍙戣呮彁渚涙洿濂界殑寮鍙戝伐鍏枫备綘鐜板湪涔熷彲浠ラ氲繃Xamarin浣跨敤C#涓篿OS鍜孉ndroid鏋勫缓链鍦扮Щ锷ㄥ簲鐢ㄣ
TOP7:C
C 阃氩父琚鐢ㄤ簬绯荤粺杞浠剁殑寮鍙戯纴涔熸槸镎崭綔绯荤粺镄勯氱敤璇瑷銆
C璇瑷鍑犱箮褰卞搷浜嗘墍链夋垜浠浠嬬粛镄勭紪绋嬭瑷锛屽挨鍏舵槸Objective-C鍜孋++銆傛墍浠ュ傛灉浣犲緢浜呜ВC璇瑷锛屼綘鍦ㄥ︿範鍏朵粬璇瑷镞跺氨涓崭细链変粈涔埚汹闅俱傜敱浜庝娇鐢–瀹屾垚涓涓绠鍗曚换锷¢渶瑕佹洿澶嶆潅镄勪唬镰侊纴鍒濆﹁呬篃璁镐细鍙戠幇濡傛灉浠栦滑濡傛灉鎶奀浣滀负鍏ラ棬璇瑷锛屼细寰堥毦淇濇寔瀛︿範镄勫姩锷涖傜劧钥孋璇瑷镄勬湁鍏崇煡璇嗕细浣夸竴涓绋嫔簭锻桦弹鐩婂尓娴呫
Objective-C / Swift (for iOS development)
Objective-C 鏄鍦–璇瑷涓婅繘琛屼简涓灞傚皝瑁咃纴浣垮缑瀹冨彉鎴愰润镐侊纴浣嗗悓镞朵篃鑳界敤浜庡姩镐佺被鍨嬨傝娴鏋灭殑Swift鏄涓闂ㄨ捐℃垚涓嶰bjective-C鍏煎圭殑镄勯润镐佽瑷锛屼絾瀹幂殑闱欐佺被鍨嬩娇寰椾粬镟翠笉瀹规槗鍑洪敊銆
鍙桺ython镄勫惎鍙戯纴Swift鏄𨱍虫垚涓虹紪绋嬫柊镓嬫槗浜庢帉鎻$殑璇瑷锛屼篃鏄鎸夌収鑳戒慨澶崭竴浜汷bjective-C镄勯梾棰樼殑鏂瑰悜璁捐$殑銆
‘肆’ Python与Java,C,Ruby,PHP等编程语言有什么区别
Python与Java的区别
学习起来Python要比Java简单快速的多,java从c++这样的系统语言中继承了很多语法和复杂性,而Python的语法非常简洁,大大提高编写效率。
Python与C#语言的区别
Python是解释型语言,不需要额外的编译过程,而C#必须编译后执行。另外,Python程序全部是开源的,但是C#就不是了,Python程序可以跨平台,不需要修改就可以运行在Windows和Linux等系统平台。
Python
&
C++,Perl
Python比C++等这类语言,更容易学习,语法规则简单,语意化,易读易懂,容易维护。
Python
&
Ruby
Python与Ruby确实有些相似,但是前者比后者更加成熟,语法的可读性是后者没法比的。与Ruby和Java不同的是,面向对象编程在python里不是必选的,这就更加增加了这门语言的灵活性。Ruby语言只适合编写,但是维护的时候你会非常头疼,更不用说多人编写和维护的项目代码了。