PHP 程序員如何快速進(jìn)行 Java 開發(fā)
就像盲人摸象一樣,他要想弄清楚大象的真實(shí)面貌可能要摸很久,就好比我們拿著放大鏡在學(xué)習(xí) java 一樣,java 經(jīng)過這么多年的發(fā)展,可以說非常龐大。如果我們要知道大象長什么樣,就應(yīng)該放下手中的放大鏡,向后退遠(yuǎn)點(diǎn),反而能夠非常清晰的看到它的全貌。學(xué)習(xí)一門新的語言也一樣,有很多很多網(wǎng)上的教程,非常的大而全,一般得系統(tǒng)的學(xué)習(xí)30~60小時之后才能正式的接觸項目開發(fā)。基礎(chǔ)很重要,但是學(xué)習(xí)了太多的基礎(chǔ)會讓大家失去學(xué)習(xí)的樂趣和自信心。很多知識點(diǎn)其實(shí)可以項目之后再補(bǔ)。按需去學(xué),反而是自我驅(qū)動著去學(xué)習(xí)的最佳方式。
比如 hashmap 的哈希分布、哈希碰撞、動態(tài)擴(kuò)容,這些都是我們后期深入提高需要理解的內(nèi)容,初期,我們只需要知道能拿 hashmap 做什么就行。
以實(shí)現(xiàn)自己熟悉的東西為導(dǎo)向比如我們做 Web 后端 api 開發(fā),首先是常用的循環(huán)/迭代、條件判斷、增刪改成。那么能不能快速用 java 實(shí)現(xiàn)一遍這些我們用 php 做起來非常順手的事呢?
這樣有助于我們快速提升自信心。
使用類比的學(xué)習(xí)方法PHP 里如何實(shí)現(xiàn),重新用 java 實(shí)現(xiàn)一遍就行了。
最后深入系統(tǒng)的學(xué)習(xí)當(dāng)自己實(shí)現(xiàn)了一些小 demo 再去參考別人的項目。如果一開始就直接看別人的項目,可能完全不知道別人在干嘛。比如別人用了 ConcurrentHashMap ,就再去思考為什么我用 HashMap 他卻用 ConcurrentHashMap ,帶著問題,帶著思考去看開源代碼。
完成了一些簡單的項目了之后就可以再回過頭來系統(tǒng)的學(xué)習(xí)了。這時候就會有不一樣的收獲。
最后就是當(dāng)項目需要調(diào)優(yōu),性能提升的時候,再各個擊破,深入學(xué)習(xí),更有針對性,更有目標(biāo)性。
實(shí)戰(zhàn)開始我們用 netty 來提供高性能的 web 服務(wù)服務(wù)。使用簡單方便(netty 并不簡單),不依賴其他軟件。然后思考完成一個簡單的 web api 服務(wù)器需要哪些必不可少的組成部分。(其實(shí)在思考這的時候,你必須要要對做簡單的架構(gòu)必須熟記于心)。
我簡單概括了下:
java 基礎(chǔ)數(shù)據(jù)類型(php 也有,不怕)
java 集合框架(php 有數(shù)組,很強(qiáng)大)
初識 maven(php 有 composer)
反射 (框架路由等地方要用到,php 也有)
序列化(數(shù)據(jù)傳輸要用到,php 沒有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)要簡單 N 倍)
jdbc (數(shù)據(jù)庫操作要用到,php 有 pdo)
大概認(rèn)識泛型、注解等語法 (可選)
使用 netty 實(shí)戰(zhàn)開發(fā)一個 web api 服務(wù)(php 有 swoole)
Java 基本的數(shù)據(jù)結(jié)構(gòu)、各種基本數(shù)據(jù)類型包裝類HashSet 是一個沒有重復(fù)元素的集合。它是由HashMap實(shí)現(xiàn)的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。
這其實(shí)是我的老朋友了,redis 里經(jīng)常用,比如咱們可以它來實(shí)現(xiàn)一個黑名單,這樣查找的速度就非常快,也不用去遠(yuǎn)程查詢 redis 了,直接在當(dāng)前內(nèi)存中查詢。
ArrayList 基于數(shù)組來實(shí)現(xiàn)集合的功能,其內(nèi)部維護(hù)了一個可變長的對象數(shù)組,集合內(nèi)所有對象存儲于這個數(shù)組中,并實(shí)現(xiàn)該數(shù)組長度的動態(tài)伸縮。
這不就是我們的 PHP 里面常用的索引數(shù)組么?
HashMap 以哈希表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),查找對象時通過哈希函數(shù)計算其位置,它是為快速查詢而設(shè)計的。特點(diǎn)就是快,非線程安全。
這不就是我們的 PHP 里面常用的關(guān)聯(lián)數(shù)組么?
http://www.cnblogs.com/ITtang...
http://www.jianshu.com/p/b54f...
http://www.cnblogs.com/xiaoxi...
初識 mavenMaven的基本原理很簡單,采用遠(yuǎn)程倉庫和本地倉庫以及一個核心的配置文件pom.xml,pom.xml中定義的jar文件從遠(yuǎn)程倉庫下載到本地倉庫,各個項目使用同一個本地倉庫的jar,同一個版本的jar只需下載一次,而且避免每個應(yīng)用都去拷貝jar。
這和 php 的包管理工具 composer 很像,或者是 composer 是參考著 maven 而設(shè)計的。maven 的功能更強(qiáng)大,composer 需要每個項目都要導(dǎo)入一遍,maven 卻像 git 一樣,有一個本地倉庫,第三方包也不會直接引用到項目中,而是在編譯的時候才會引入(是不是很方便)。另一方面,maven 不僅僅是包管理工具,而且是一個項目管理工具,集成了編譯、打包、單元測試等功能。
實(shí)現(xiàn)控制器的訪問具體需求:提供一個 api 可以用戶指定用戶的信息
定義接口:
http://localhost:10000/users/{id}http://localhost:10000/?method=user.get&id={id}
可能現(xiàn)在大家早已習(xí)慣了前者 restful 的 api 接口。
因為這里需要一次路由的映射和 http method 的匹配,考慮到學(xué)習(xí)的成本呢,我沒有選擇這種方式。
我們今天的目標(biāo)是以最簡單有效的方式實(shí)現(xiàn)我們的功能。
我們首先從最簡單的方式來實(shí)現(xiàn)(其實(shí)沒有路由的 api 反而是最快的,畢竟需要做的判斷少嘛)。
后面大家有興趣可以參考我寫的一個 restful api 的 demo https://github.com/zhoumengka...
來自:https://segmentfault.com/a/1190000010333464
相關(guān)文章:
1. JavaScript Reduce使用詳解2. 簡述JAVA同步、異步、阻塞和非阻塞之間的區(qū)別3. Python TestSuite生成測試報告過程解析4. 詳解JAVA 強(qiáng)引用5. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法6. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法7. 使用Python3 poplib模塊刪除服務(wù)器多天前的郵件實(shí)現(xiàn)代碼8. 解決AJAX返回狀態(tài)200沒有調(diào)用success的問題9. 深入了解JAVA 軟引用10. SpringBoot集成mqtt的多模塊項目配置詳解
