原创 華爲OJ 高級題(一) 鐵路棧問題

說實話,華爲Oj上的題目分級並不是完全合理,像這道鐵路棧問題,其實就是一道判斷出棧隊列是否可能的數據結構題,最多也就是一道中級題吧,可我居然在高級題分類裏找到它。 題目標題:鐵路棧問題  鐵路的調度站如下: 火車編號爲:1~9,且

原创 Java靜態工廠方法 —— 有了它,你還需要工廠模式嗎

本文結合《Effective Java》第二章條目一《考慮用靜態工廠方法代替構造器》和自己的理解及實踐,講解了Java靜態工廠方法的知識點,並在文末附上了自己對靜態工廠方法和工廠模式的區別的理解,文章發佈於專欄Effective Java

原创 Java hashcode方法編寫技巧 —— 記住這3條約定

本文結合《Effective Java》第三章條目9《覆蓋equals時總要覆蓋hashCode》和自己的理解及實踐,講解了在覆蓋hashCode時需要遵守的規範,文章發佈於專欄Effective Java,歡迎讀者訂閱。 Java的

原创 Java 設計方法的五條優秀實踐清單

本文結合《Effective Java》第七章《方法》和自己的理解及實踐,講解了設計Java方法的優秀指導原則,文章發佈於專欄Effective Java,歡迎讀者訂閱。 清單1: 檢查參數的有效性 在每個方法的開頭檢查方法的參數,遵循

原创 Java 比繼承更好的一種機制 —— 複合

本文結合《Effective Java》第四章條目16《複合優先於繼承》和自己的理解及實踐,講解了Java繼承機制的缺陷和替代方案,文章發佈於專欄Effective Java,歡迎讀者訂閱。 繼承的缺陷 繼承的缺陷是由它過於強大的功能所

原创 Java 語言編程通用原則清單 —— 編寫高質量的Java代碼

本文結合《Effective Java》第八章《通用程序設計》和自己的理解及實踐,講解了編寫Java代碼的一些優秀實踐,文章發佈於專欄Effective Java,歡迎讀者訂閱。 在這之前,專欄已經發布了兩篇通用原則清單 : Java 設

原创 Java 設計類和接口的八條優秀實踐清單

本文結合《Effective Java》第四章《類和接口》和自己的理解及實踐,講解了設計Java類和接口的優秀指導原則,文章發佈於專欄Effective Java,歡迎讀者訂閱。 清單1:使類和成員的可訪問性最小化 這個原則,其實就是我

原创 Maven入門教程

新公司上來就是開發之前一個項目的二期,居然是用Maven開發的,之前沒少聽過Maven,但就是覺得不會用到,沒詳細去了解,當週圍同伴都把項目導入到Eclipse時,我卻在爲茫然不知所措。 這種茫然來源於畏懼,畏懼又來源於對要使用的工具瞭解

原创 Java內存區域剖析 —— 定位OutOfMemory異常之前的必修課

帶着問題閱讀 Java中都有哪些數據需要放進內存?如果你是JVM的設計者,你會怎樣將內存按功能進行劃分?HotSpot是怎麼劃分內存的? 導語 上一講帶着大家踏入了Java虛擬機的大門,從這一講開始,進入專題的第一個版塊——Java虛擬機

原创 一起走進Java虛擬機的世界 —— 爲什麼要弄懂虛擬機

從本週開始,專欄Effective Java將開啓一個全新的專題——Java虛擬機,在這個專題的課程裏,您將學到如何定位OutOfMemory異常、如何進行JVM調優之類的知識,本文作爲專題的開篇,帶讀者走進Java虛擬機的世界。 爲什

原创 Java枚舉 —— 很少被使用,或許是因爲真正瞭解它的人太少了

本文結合《Effective Java》第六章前半部分關於枚舉的介紹和自己的理解及實踐,講解了Java枚舉的知識點。文章發佈於專欄Effective Java,歡迎讀者訂閱。 前言  你代碼中的flag和status,都應該用枚舉來替代

原创 Java 異常的使用清單 —— 原來這纔是異常的正確打開方式

本文結合《Effective Java》第九章《異常》和自己的理解及實踐,講解了正確使用Java異常的優秀指導原則,文章發佈於專欄Effective Java,歡迎讀者訂閱。 充分發揮異常的優點,可以提高程序的可讀性、可靠性和可維護性,如

原创 Java OutOfMemory異常清單 —— 在自己的機器上製造內存溢出

帶着問題閱讀 如何製造OutOfMemory?jvm啓動參數怎麼設置?如何根據異常信息判斷哪個區域發生內存溢出?發生內存溢出後如何解決?方法區從JDK1.6到JDK1.8都經歷了什麼?JDK1.8新增的Metaspace是什麼東西? 導語

原创 Java創建對象的方法清單 —— 原來還可以這樣創建對象

本文結合《Effective Java》第二章《創建和銷燬對象》和自己的理解及實踐,介紹了兩種比使用構造器更優雅的創建對象方法,文章發佈於專欄Effective Java,歡迎讀者訂閱。 靜態工廠方法創建對象 使用靜態工廠方法代替構造器

原创 這一次,讓我們來好好聊聊Java泛型

本文結合《Effective Java》第五章泛型和自己的理解及實踐,講解了Java泛型的知識點。文章發佈於專欄Effective Java,歡迎讀者訂閱。 你經常這樣寫代碼嗎 1、創建List時,刪掉ide幫你自動生成的尖括號,然後發現