原创 Java協變和逆變

什麼是協變和逆變 我們將圍繞如下三個核心名詞:協變性(covariance)、逆變性(contravariance)和無關性(invariant)。他們都是用來描述類型轉換的性質的術語 到底什麼是協變和逆變?先看例子: //J

原创 Java命令--javap

javap是jdk自帶的一個工具,可以對代碼 反編譯,也可以查看java編譯器生成的字節碼 一般情況下,很少有人使用javap對class文件進行反編譯,因爲有很多成熟的反編譯工具可以使用,比如jad。但是,javap還可以查

原创 Java自動拆箱和裝箱

什麼是自動拆箱和裝箱 定義 自動裝箱就是 Java 自動將原始數據類型轉爲對應的包裝類對象 比如將 int 型的變量轉成 Integer對象 自動拆箱反之(從 Java 1.5 開始引入) 過程 自動裝箱時,編譯器調用 v

原创 Java垃圾收集機制

對象引用 Java中的垃圾回收一般是在Java堆中進行,因爲堆中幾乎存放了Java中所有的對象實例。談到Java堆中的垃圾回收,自然要談到引用。在JDK1.2之前,Java中的引用定義很很純粹:如果reference類型的數據中存

原创 Javac編譯與JIT編譯

編譯過程 不論是物理機還是虛擬機,大部分的程序代碼從開始編譯到最終轉化成物理機的目標代碼或虛擬機能執行的指令集之前,都會按照如下圖所示的各個步驟進行: - 其中綠色的模塊可以選擇性實現。很容易看出,上圖中間的那條分

原创 Java泛型

泛型(Generic Type)是Java中重要的一部分。在J2SE 5.0之後新增。在使用Java標準庫中的內容的時候,經常會遇到泛型。這裏將泛型總結一下 什麼是泛型 討論一個內容的時候,首先會來說什麼是什麼。在官方的文檔中說

原创 類加載機制

類加載過程 類從被加載到虛擬機內存中開始,到卸載出內存爲止,它的整個生命週期包括:加載、驗證、準備、解析、初始化、使用和卸載七個階段。它們開始的順序如下圖所示: 其中類加載的過程包括了加載、驗證、準備、解析、初始化五

原创 Java枚舉類

背景 在java語言中還沒有引入枚舉類型之前,表示枚舉類型的常用模式是聲明一組具有int常量。之前我們通常利用public final static 方法定義的代碼如下,分別用1 表示春天,2表示夏天,3表示秋天,4表示冬天

原创 Socket多客戶端簡易簽到系統

概述 效果 原理和功能 服務器搭建在內網上,通過內網訪問實現簽到者位置的判斷 我這個簽到系統沒有使用數據庫,是將每個人的mac地址和姓名存在數組中,每天籤 一次,然後每週可以自動發一封簽到數據郵件給維護者 以後可以實現數據

原创 Java方法簽名

方法簽名的意義 對於同名不同類、同類不同名的方法,方法簽名的意義並不是很大,但是對於重載方法來說,方法簽名的意義就十分巨大了。由於重載方法之間的方法名是相同的,那麼我們勢必要從構成方法的其他幾個要素中找到另一個要素與方法名組成能

原创 Class類文件結構

平臺無關性 如圖,源碼經過編譯得到的字節碼文件可以由運行Java虛擬機的機器運行,因此可以說字節碼是Java語言跨平臺的基石,同樣也是其他語言跨平臺的有效途徑 只要目標語言的編譯器按照Java字節碼存儲規範進行編譯,那麼得

原创 CentOS從php5.3升級到php5.5

首先檢查php版本 php --version 增加 yum repository 以便下載php rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

原创 JavaMail發送郵件實例

550類型錯誤 登錄自己的163郵箱,注意,要用你的應用程序中設置的郵箱地址去登錄 在主菜單欄上的“設置”子菜單裏面,選擇POP3/SMTP/IAMP菜單 若沒有開啓“客戶端授權密碼”,則選擇將其開啓。開啓後,會給你生成一

原创 Socket簡易聊天工具

演示 代碼運行如圖,看起來還不錯,哈哈哈 服務端 package qiu; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import

原创 Ubuntu下使用SSH和FileZilla遠程登陸

File Zilla下載安裝 File Zilla是一個開源的,跨平臺的Linux FTP客戶端。File Zilla有一個標籤式的用戶界面,允許用戶查看正在傳輸的文件的所有細節。File Zilla是通過網絡傳輸較大文件的完美方式,它