『壹』 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語言只適合編寫,但是維護的時候你會非常頭疼,更不用說多人編寫和維護的項目代碼了。