Time of Update: 2016-02-25
標籤:最近在做一個跟前端硬體通訊的中介軟體,其中資料校正採用CRC16,網上查了很多資料,但發現最終的計算結果都不同……耗時兩天終於解決了,做個記錄。 1 /** 2 * 計算CRC16校正碼 3 * 4 * @param bytes 位元組數組 5 * @return {@link String} 校正碼 6 * @since 1.0 7 */ 8 public static String
Time of Update: 2016-02-23
dubbox 編譯 和 測試,dubbox編譯測試因為 dubbox 並沒有發布到maven中央倉庫倉庫中,所以需要我們自己到官網下載,自己編譯,install 到本地。1. 首先安裝git用戶端工具 TortoiseGit, 然後使用它將 dubbox 從官網github地址:https://github.com/dangdangdotcom/dubbox clone到本地:2. 使用mvn 編譯:在cmd
Time of Update: 2016-02-23
SpringMVC源碼解讀,springmvc源碼 AbstractHandlerMapping實現HandlerMapping介面定的getHandler 1. 提供getHandlerInternal模板方法給子類實現 2. 如果沒有擷取Handler,則使用預設的defaultHandler 3. 如果handler是string類型,從context擷取執行個體 4. 通過getHandlerExecutionChain封裝handler,添加interceptor//
Time of Update: 2016-02-21
jvm運行時記憶體解析,jvm運行記憶體解析一、jvm的概念 在瞭解jvm的概念之前,我們先來瞭解java平台的邏輯結構,圖片來自《深入java虛擬機器》 我們可以看到jdk包含了jre,java語言和java開發工具和Api,jre包含了java啟動並執行基礎類庫和java虛擬機器,java虛擬機器支撐著java程式的運行。 jvm(java virtual
Time of Update: 2016-02-22
JAVA NIO概述(一),javanio概述NIO是jdk1.4加入的新功能,我們一般成為非阻塞IO,在1.4之前,JAVA中的都是BIO(堵塞IO),BIO有以下幾個缺點:我們會經常聽到 同步(synchronous) IO和非同步(asynchronous) IO,那麼阻塞(blocking) IO和非阻塞(non-blocking)IO,,同步(synchronous) IO和非同步(asynchronous) IO,阻塞(blocking)
Time of Update: 2016-02-21
java並發庫--鎖,java並發--synchronized的缺陷: 被synchronized修飾了,當一個線程擷取了對應的鎖,並執行該代碼塊時,其他線程便只能一直等待,等待擷取鎖的線程釋放鎖,擷取線程被阻塞時,沒有釋放鎖會導致等待線程無期限的等待下去。另外,多個線程都只是進行讀操作時,線程之間不會發生衝突,通過Lock就可以辦到。Lock還可以知道線程有沒有成功擷取到鎖。Lock和synchronized的比較 1)Lock不是Java語言內建的,synchronized是Java語言
Time of Update: 2016-02-21
Atitit.非同步編程的發展曆史 1.1. TAP & async/await,atitit1.1. Atitit.非同步編程的發展曆史
Time of Update: 2016-02-20
Atitit。Time base gc 垃圾 資源 收集的原理與設計,atitit.timegcAtitit。Time base gc 垃圾 資源 收集的原理與設計 1. MRC(MannulReference Counting手動 retain/release/autorelease語句12. 自動記憶體回收(GC)13. Arc&nb
Time of Update: 2016-02-21
Java多線程(三)volatile域前言有時僅僅為了讀寫一個或者兩個執行個體域就使用同步的話,顯得開銷過大,volatile關鍵字為執行個體域的同步訪問提供了免鎖的機制。如果聲明一個域為volatile,那麼編譯器和虛擬機器就知道該域是可能被另一個線程並發更新的。再講到volatile關鍵字之前我們需要瞭解一下記憶體模型的相關概念以及並發編程中的三個特性:原子性,可見度和有序性。1.
Time of Update: 2016-02-20
Java線程學習經典例子-讀寫者示範Java線程學習經典例子-讀寫者示範Java線程學習最經典的例子-讀寫者,主要用到Thread相關知識如下:-線程的start與run-線程的休眠(sleep)-資料對象加鎖(synchronized)-資料對象的等待與釋放(wait and
Time of Update: 2016-02-20
[Spring實戰系列](18)註解切面使用註解來建立切面是AspectJ 5所引入的關鍵特性。在AspectJ 5之前,編寫AspectJ切面需要學習一種Java語言的擴充,但是AspectJ面向註解的模型可以非常簡單的通過少量註解把任意類轉變為切面。 回顧一下Audience類,沒有任何地方讓它成為一個切面,我們不得不使用XML聲明通知和切點。 我們通過@AspectJ註解,我們再看看Audience類,不需要任何額外的類或Bean聲明就能將它轉換為一個切面。
Time of Update: 2016-02-18
java在linux下安裝,javalinux安裝安裝環境: CentOS release 6.3 (Final) about 64bit cpu 1, http://www.oracle.com下載最新版的javase的jdk環境 比如我下載的是:jdk-8u73-linux-x64.tar.gz 2,上傳到 /usr/java下 3,tar -xzvf
Time of Update: 2016-02-19
Java api 入門教程 之
Time of Update: 2016-02-18
java 多態,介面,抽象類別的認識,java多態1, 多態 : 父類的引用指向子類對象,有繼承,有重寫 多態表達了 : cat 是一種 Animal 規則 : 多態對象不能調用父類中沒有的方法 定義 : Animal cat = new Cat();2, 介面 :
Time of Update: 2016-02-17
lombok在IntelliJ IDEA下的使用,lombokintellijlombok是一款可以精減java代碼、提升開發人員生產效率的協助工具輔助,利用註解在編譯期自動產生setter/getter/toString()/constructor之類的代碼。代碼越少,意味著出bug的可能性越低。官網地址:https://projectlombok.org/ 首頁有一段幾分鐘的示範視頻,看完就明白是怎麼回事了。先來二段對比代碼:這是用lombok後的java代碼:import lombok.*
Time of Update: 2016-02-16
插入排序,冒泡排序package cn.aust.zyw.demo;/** * Created by zyw on 2016/2/9. * insert-sort */public class Insertion { public static void sort(int [] a){ int N=a.length; for(int i=1;i<N;i++){ for(int
Time of Update: 2016-02-16
[Spring實戰系列](5)Spring應用上下文下面是Spring-Hello-world項目的運行代碼:package com.sjf.bean;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * 測試類別 * @author sjf0115 * */public class
Time of Update: 2016-02-16
使用ASM操作Java位元組碼,實現AOP原理本文通過一個的例子來實現:使用ASM動態產生Java位元組碼檔案(.class) 或者 載入位元組碼後動態修改位元組碼,添加我們需要執行的代碼,來類比實現Spring AOP。年底了,也沒心情摳字了,把寫demo包含的幾個類代碼直接貼出來吧,代碼拷貝下來後可以直接使用,不會有什麼其他錯誤。使用
Time of Update: 2016-02-16
java Puzzles 之關於金錢計算那些事java Puzzles 之關於金錢計算那些事java Puzzles 之關於金錢計算那些事,java要用int、long、or BigDecimal來計算,一般我們BigDecimal。package com.doctor.java.puzzle;import java.math.BigDecimal;/** * @author sdcuike * * @time 2016年1月31日 下午9:26:52 * * java
Time of Update: 2016-02-15
《深入理解java虛擬機器》筆記(1)運行時資料區域,深入理解java虛擬機器1、Java與C++之間有一堵由記憶體動態分配和垃圾收集技術所圍成的“高牆”,牆外面的人想進去,牆裡面的人卻想出來。2、運行時資料區域劃分 java虛擬機器在執行java程式的過程中會把它所管理的記憶體劃分為若干個地區,這些地區都有各自的用途,建立和銷毀時間,有的地區隨著虛擬機器進程的啟動而存在,有的地區則依賴使用者線程的啟動和結束而建立和銷毀,根據《Java虛擬機器規範(Java SE