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