轉載出處:子暃之路 » Java註解(3)-註解處理器(編譯期|RetentionPolicy.SOURCE) 註解的處理除了可以在運行時通過反射機制處理外,還可以在編譯期進行處理。在編譯期處理註解時,會處理到不再產生新的源檔案為止,之後再對所有源檔案進行編譯。 Java5中提供了apt工具來進行編譯期的註解處理。apt是命令列工具,與之配套的是一套描述“程式在編譯時間刻的靜態結構”的API:Mirror
Annotation 注釋,這個注釋和寫代碼時解釋代碼在幹什麼那個注釋完全不是一個東西,這裡的注釋是指代碼中的特殊標記,這些標記可以在編譯,類載入,運行時被讀取,並執行相應的處理。 通過這些標記,可以在不改變原有邏輯的情況下,在源檔案嵌入一些補充的資訊。Annotation可用於修飾包,類,構造器, 方法,成員變數,參數,局部變數的聲明。 其實Java中的Annotation和C#中的attribute是同一個東西,都是用來設定中繼資料用的,它們的區別只有少許幾個地方
Java網路編程基礎 TCP/UDP協議 TCP (Transmission
/**開啟檔案原理:調用cmd命令執行**/import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JButton;import java.awt.event.ActionListener;import
二分插入排序 基本原理:對於直接插入排序的一種改進,通過不斷地折半來快速確定第i個元素的插入位置。即計算0~i-1的中間點,用i索引處的元素與中間值進行比較,如果i索引處的元素大,說明要插入的這個元素應該在中間值右側,反之在左側(從小到大) 時間效率: O(n2) O(n^2) 空間效率: O(1) O(1) 演算法穩定性:不穩定 //二分插入排序(從小到大排序)public class Sort_Binary {
Java學習筆記總結 java基礎複習 1、 抽象類別可以有構造器,可以有一個非抽象的父類 2、 記憶體回收機制回收的是堆裡面的記憶體,棧裡面的資料自動入棧自動出棧 3、 參考型別的資料在堆當中,記憶體中操作的只有棧,new關鍵字在堆裡面分配一塊記憶體 4、 java中是值傳遞 5、 String是不可變字元,即一旦分配了記憶體,此記憶體的值將不會改變,又將String賦值是,會重新分配一塊記憶體,字串池: StringBuffer 6、 在堆中的東西叫對象
第二章 一切皆是對象 2.1 引用操作對象 安全起見,建立引用的同時將其初始化。 String s=new String("asdf"); new操作建立了新的字串對象,s為此對象的引用 2.2 必須由你建立所有對象2.2.1 6個資料存放區區 寄存器:存在CPU內部,資源有限由編譯器按需分配,速度最快。
好記性不如賴筆頭…… 帶有高速緩衝區的字元流樣本 package com.Ckinghan.outputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import
在kettle使用java代碼模組需要注意的一些事項,以防忘記。 首先需要繼承processRow方法,跟java的main方法類似,代碼從這裡開始執行,並且在裡邊讀取跟儲存變數。 public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws Exception{Object[] r = getRow();if (r == null) { setOutputDone(); return
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。說明白點就是你可以用對象輸出資料流輸出到檔案.如果不序列化輸出的話.很可能會亂! 實現方式是實現java.io.Serializable介面.這個介面不需要實現任何具體方法.只要implements java.io.Serializable 就好了。
需求: 最近做了個java項目,功能完成後打包安裝了,發現可以點開多個執行個體,因為案頭顯示托盤,所以點一次就會出現一個托盤,並且系統也多了好幾個javaw進程,這樣的話就不能保證程式的健壯性了,所以需要做一個判斷讓程式只運行一個執行個體。 實現方式: Java沒有提供這樣的機制。從作業系統的觀點來看,一個啟動的Java Application僅僅是一個JVM的運行執行個體。運行相同Application的兩個執行個體,僅僅是運行兩個無關的JVM。
最近同事推薦了一款非常好用的Java庫,讓我非常恨自己對好東西的關注不夠,也感歎牛人多,Java世界的開源好東西多。這裡把它推薦給大家:Lombok。 Lombok是用來簡化Java代碼的編寫,那麼就需要IDE和編譯器(Maven)支援Lombok。先說說具體怎麼用: 第一步 下載lombok jar檔案 https://projectlombok.org/download.html 第二步,執行它,把它加到開發IDE eclipse的classpath中。
前段時間有個需求在springmvc mapping的url跳轉前完成一個統計的業務。顯然需要進行非同步處理,不然出錯或者異常會影響到後面的網頁跳轉。非同步方式也就是非阻塞式的,當非同步呼叫成功與否程式會接著往下執行,不必等到輸入輸出處理完畢才返回。 主要用到httpasyncclient-4.0.1.jar,httpclient-4.3.2.jar,httpcore-4.3.2.jar,httpcore-nio-4.3.2.jar,commons-logging-1.1.3.jar。
Java類初始化的順序經常讓人犯迷糊,現在本文嘗試著從JVM的角度,對Java非繼承和繼承關係中類的初始化順序進行實驗,嘗試給出JVM角度的解釋。 非繼承關係中的初始化順序 對於非繼承關係,主類InitialOrderWithoutExtend中包含了靜態成員變數(類變數)SampleClass 類的一個執行個體,普通成員變數SampleClass 類的2個執行個體(在程式中的順序不一樣)以及一個靜態代碼塊,其中靜態代碼塊中如果靜態成員變數sam不為空白,則改變sam的引用。main()
本文是UrlRewrite的一些常見的用法。關於UrlRewrite,網上也有人說這個會影響效能,因為在每次請求的時候都需要經過換一次過濾,但是這個還是要見仁見智,畢竟,使用URL重寫,對網址還是有好處的。 現在大部分的網站和商城都會使用到URL重寫,接觸到這個,也是因為正在做的電子商務商城。URL重寫,是將原有的URL採用另一種規則來顯示,使得使用者方便訪問同時也屏蔽一些資訊。
今天去java程式員的招聘資訊上看了看看到了有些公司還需要掌握除了Hibernate外的iBatis持久層的架構於是從網上搜了一下感覺下面這篇寫的不錯拿來分享一下 我在最初的選型的時候,考慮到iBatis和Hibernate不同,本來打算選擇Hibernate的,在研究的過程中發現了iBatis的特性,經過分析比較之後我選擇了iBatis。現在我已經使用iBatis 完成了一個中小型的項目。這個項目在效能、可維護性、
原地址:http://blog.csdn.net/jesseshen/article/details/6659543 這是一個全國性的通訊平台,對效能,海量資料,容錯性以及擴充性有非常高的要求,所以在系統的架構上就不能簡單的採用集中式.簡單的總結一下就是: 1.資料分布式儲存 2.請求分布式調度
商務程序步驟: 1、產生訂單資訊 2、商戶到銀行,商戶發起請求到銀行 把訂單資訊的部分資料拼接,然後通過銀行端給的MD5加密工具加密,然後作為參數,通過http的post請求 發送到支付提供的目標銀行網站。例子: var bankURL = "b2bpay.ccb.com/NCCB/NECV5B2BPayMainPlat"; // 生產環境的銀行請求地址tmp = 'MERCHANTID=' + MERCHANTID + '&POSID='
Java多線程除了可以直接使用Thread和Runnable來實現外,jdk5以後提供了一種更方便的使用方式:線程池(Executors),本章暫不介紹什麼是線程池,以及線程池的分類和使用。主要介紹線程池在實際工作的統計使用,並且介紹java並發包中同步鎖的實現:CountDownLatch。 1、什麼是CountDownLatch 直譯過來就是倒計數(CountDown)門閂(Latch)。倒計數不用說,門閂的意思顧名思義就是阻止前進。在這裡就是指 CountDownLatch.
很幸運,Java已經幫程式員做好了建立線程同步集合的工作,只消調用集合對應的同步方法就可以了 名稱都是以這個形式出現,synchronizedXXX import java.util.*;public class TestSynchronized {public static void main(String[] args) {//建立四個同步集合Collection c = Collections.synchronizedCollection(new