Time of Update: 2017-01-19
運行時類型識別(RTTI, Run-Time Type Identification)是Java中非常有用的機制,在Java運行時,RTTI維護類的相關資訊。多態(polymorphism)是基於RTTI實現的。RTTI的功能主要是由Class類實現的。Class類Class類是"類的類"(class of classes)。如果說類是對象的抽象和集合的話,那麼Class類就是對類的抽象和集合。每一個Class類的對象代表一個其他的類。比如下面的程式中,Class類的對象c1代表了Human類,
Time of Update: 2017-01-19
電腦最重要的功能是處理資料。一個有用的電腦語言需要擁有良好的IO功能,以便讓未處理的資料流入程式,讓已處理的資料流出。與其他語言相比,Java的IO功能顯得複雜。在其他語言中,許多IO功能(比如讀取檔案),是被封裝好的,可以用一兩行程式實現。在Java中,程式員往往需要多個層次的裝飾(decoration),才能實現檔案讀取。相對的複雜性帶來的好處是IO的靈活性。在Java中,程式員可以控制IO的整個流程,從而設計出最好的IO方式。我們將在下文看到更多。 IO樣本 下面是我用
Time of Update: 2017-01-19
我們已經寫了一些Java程式。之前的每個Java程式都被儲存為一個檔案,比如Test.java。隨後,該程式被編譯為Test.class。我們最終使用$java
Time of Update: 2017-01-19
廢話不多說,先給大家貼代碼,具體代碼如下所示:import net.sf.json.JSONArray; import net.sf.json.JSONObject; import java.util.*; public class JavaTest { public static void main(String[] args){ JSONObject obj=new JSONObject(); obj.put("derek","23"); obj.put("dad", "49"); obj.
Time of Update: 2017-01-19
我們知道,Java應用程式不能訪問持久化類的private方法,但Hibernate沒有這個限制,它能夠訪問各種層級的方法,如private, default, protected, public. Hibernate是如何?該功能的呢?答案是利用JAVA的反射機制,如下: import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class
Time of Update: 2017-01-19
1. 將對象轉換為JSON字串,傳回值為一個JSON字串public static String toJson(Object value) {try {return mapper.writeValueAsString(value);} catch (Exception e) {e.printStackTrace();}return null;}2. 將JSON字串轉換為實體物件,傳回值為實體物件public static <T> T toObject(String
Time of Update: 2017-01-19
線程是Java程式設計裡非常重要的概念,本文就以執行個體形式對此加以詳細解讀。具體分析如下:首先,線程加鎖有什麼用處呢?舉個例子:比如你現在有30000塊大洋在銀行存著,現在你到銀行取錢,當你輸入密碼完成後,已經輸入取款金額,比如你輸入的是20000,就是在銀行給你拿錢這個時刻,你老婆也去銀行取這筆錢,你老婆同樣取20000,因為此時你的賬上仍然是30000,所以銀行同樣的操作在你老婆那端又進行了一遍,這樣當你們兩個完成各自操作後,銀行記錄的你賬上還應該有10000塊存款,這樣是不是很爽。解決這
Time of Update: 2017-01-19
一級緩衝與二級緩衝MyBatis將資料緩衝設計成兩級結構,分為一級緩衝、二級緩衝:一級緩衝是Session會話層級的緩衝,位於表示一次資料庫會話的SqlSession對象之中,又被稱之為本機快取。一級緩衝是MyBatis內部實現的一個特性,使用者不能配置,預設情況下自動支援的緩衝,使用者沒有定製它的權利(不過這也不是絕對的,可以通過開發外掛程式對它進行修改);二級緩衝是Application應用層級的緩衝,它的是生命週期很長,跟Application的聲明周期一樣,也就是說它的作用範圍是整個Ap
Time of Update: 2017-01-19
SqlSessionTemplateSqlSessionTemplate是MyBatis-Spring的核心。這個類負責管理MyBatis的SqlSession,調用MyBatis的SQL方法,翻譯異常。SqlSessionTemplate是安全執行緒的,可以被多個DAO所共用使用。當調用SQL方法時,包含從映射器getMapper()方法返回的方法,SqlSessionTemplate將會保證使用的SqlSession是和當前Spring的事務相關的。此外,它管理session的生命週期,包含
Time of Update: 2017-01-19
MyBatis-Spring允許你在Service Bean中注入映射器。當使用映射器時,就像調用DAO那樣來調用映射器就可以了,但是此時你就不需要進行任何DAO實現的編碼,因為MyBatis會為你進行。 使用注入的映射器,你的代碼就不會出現任何MyBatis-Spring依賴和MyBatis依賴。在我們的應用中有這樣一個簡單的映射器。你也應該知道映射器僅僅是一個介面:public interface UserMapper { User getUser(String userId); }
Time of Update: 2017-01-19
MyBatis包含一個非常強大的查詢快取特性,它可以非常方便地配置和定製。預設情況下是沒有開啟緩衝的,要開啟二級緩衝,你需要在你的SQL對應檔中添加一行:<cache/> 字面上看就是這樣。這個簡單語句的效果如下: 1.映射語句檔案中的所有select語句將會被緩衝。 2.映射語句檔案中的所有insert,update和delete語句會重新整理緩衝。 3.緩衝會使用Least Recently Used(LRU,最近最少使用的)演算法來收回。 4.根據時間表(比如 no
Time of Update: 2017-01-19
從XML中構建SqlSessionFactory從XML檔案中構建SqlSessionFactory的執行個體非常簡單。這裡建議你使用類路徑下的資源檔來配置.String resource = "org/mybatis/example/Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMapper = new
Time of Update: 2017-01-19
建立項目(我使用的是maven項目)mybatis-study-01一、加入mybatis與mysql-connector依賴包到pom檔案<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
Time of Update: 2017-01-19
實現思路:1、使用java.net.URL對象,綁定網路上某一個網頁的地址2、通過java.net.URL對象的openConnection()方法獲得一個HttpConnection對象3、通過HttpConnection對象的getInputStream()方法獲得該網路檔案的輸入資料流對象InputStream4、迴圈讀取流中的每一行資料,並由Pattern對象編譯的Regex區配每一行字元,取得email地址package cn.sdhzzl;import
Time of Update: 2017-01-19
為了更好的理解我們先看下面的例子:package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 測試類別 * @author 雲棲社區 * @建立日期 2016-5-31 */ public class Test{ public static void main(String[] args) {
Time of Update: 2017-01-19
一些Java項目中在mybatis與spring整合中有MapperScannerConfigurer的使用,該類通過反向 Proxy自動產生基於介面的動態代理類。有鑒於此,本文淺析了java的動態代理。本文使用動態代理類比處理事務的攔截器。介面:public interface UserService { public void addUser(); public void removeUser(); public void searchUser();}實作類別:public
Time of Update: 2017-01-19
本文主要針對Java常見關鍵字final,static,super,this進行詳細辨析,以方便讀者參考查閱。具體如下:一、final1)修飾class(類):表示此類不可被繼承了2)修飾method(方法)表示此方法方法不可被重寫(@override)了3)修飾variable(變數)表示此變數的值之後不可被改變了,常用於修飾不可變的常量注:final字面意思是“最後”、“不可更改”的意思,結合意思記憶更方便。二、static(第二、三法常用)1)修飾class(類):(不常用)只可用於修飾內
Time of Update: 2017-01-19
在處理大檔案時,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 來進行頻繁的讀寫操作,都將導致進程因頻繁讀寫外存而降低速度.如下為一個對比實驗。package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import
Time of Update: 2017-01-19
當使用者購買完商品後,我們應該向使用者發送一封郵件,告訴他訂單已產生之類的資訊,郵箱地址是從使用者的基本資料中擷取,好了,首先我們來看一下java中發送郵件的方法。1. java中發送email的方法 在完善這個項目之前,先來回顧一下java中是如何發送郵件的,首先肯定需要發送郵件的jar包:mail.jar,匯入到lib目錄下,好了,下面我們先寫一個普通的java程式來回顧一下java email的知識點:public class SendEmailDemo { public
Time of Update: 2017-01-19
本文以執行個體形式講述了Java基於高精度整型實現fibonacci數列的方法,分享給大家供大家參考之用。具體方法如下:package com.java.learning.recursion;import java.math.*;public class MainClass { public static void main(String args[]){ for(int i = 0; i < 100; i++){ f(i+1); } } public