Time of Update: 2018-12-04
關於Synchornized,Lock,AtomicBoolean和volatile總結:1. volatile 變數可以被看作是一種 “程度較輕的 synchronized”。2. Lock 實現提供了比使用 synchronized 方法和語句可獲得的更廣泛的鎖定操作。同步塊(或方法)和 volatile 變數。這兩種機制的提出都是為了實現代碼線程的安全性。其中 Volatile 變數的同步性較差(但有時它更簡單並且開銷更低),而且其使用也更容易出錯。在這期的 Java 理論與實踐
Time of Update: 2018-12-04
此文分析AsyncWeb如何和Mina的IoHandler結合的一般的mina server類:主類如下: IoAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("logger", new LoggingFilter()); acceptor.getFilterChain().addLast( "codec", new
Time of Update: 2018-12-04
thomescai http://blog.csdn.net/thomescai(轉載請保留)介紹: AsyncWeb是一個高效能,非阻塞(non-blocking),可內嵌在應用程式中使用的Java HTTP引擎。它始終圍繞支援非同步請求處理而設計。AsyncWeb還能與Spring框架組成。使用: AsyncWeb的使用非常簡單,只要實現一個介面。這也是他的方便之處。public interface HttpService { void handleRequest(
Time of Update: 2018-12-04
指令碼的優點:只要將 監控指令碼 被監控程式 和重啟指令碼放在同一個目錄下,並將被監控程式運行起來,即可自動添加到crontab中,建議配置mooon提供的process_monitor.sh一起使用。#!/bin/sh# writed by yijian on 2013/1/19# generic script used to install an iterm into crontab#
Time of Update: 2018-12-04
nio: 一個簡單的nioserver。啟動後,在瀏覽器輸入:http://localhost:1234。就可以看到http的請求。public class Test<T> implements Callable<T> {private Selector selector;// 建立全域selectorpublic Test() throws IOException {selector = Selector.open();ServerSocketChannel
Time of Update: 2018-12-04
thomescai http://blog.csdn.net/thomescai(轉載請保留)曆史遺留問題的清算: Mina只是網路層(相當於socket層)的架構,需要實現自己的http協議,Asyncweb就是在mina的基礎上實現了http協議層的封裝。
Time of Update: 2018-12-04
幾年前平板電視的分為液晶和電漿兩類,現在電漿死了。現在去商場,平板電視一般分為三類:智能平板,網路平板和普通平板智能平板是指帶作業系統的,目前基本清一色的andriod網路平板相當於功能機,程式是內建的,不帶作業系統,可以說智能平板是網路平板的一種,更進階的形式普通平板相當於顯示器那買什麼樣的電視好了?個人推薦普通的,便宜實惠。智能平板雖好,但它的CPU和記憶體無法升級,直接影響體驗。普通平板,只需要外接一個網路機頂盒,如小米盒子,即可相當於智能平板,升級硬體只需要升級網路機頂盒。如果你沒有機頂
Time of Update: 2018-12-04
thomescai http://blog.csdn.net/thomescai(轉載請保留) 看了ChinaEstone的《深入理解ApacheMina 》,也寫點小結。主要架構: 下面是MIna的流程圖: Mina主要類圖如下: 1.SocketAcceptor對應IoService。SocketIoProcessor對應IoProcessor。 2.SocketAcceptor有一個thread:該線程的作用是接收用戶端的串連,並將用戶端的串連匯入到I/
Time of Update: 2018-12-04
thomescai http://blog.csdn.net/thomescai(轉載請保留)概要:Pipeline流處理的一個執行個體,證明了Pipeline流的執行順序。ChannelPipeline原理圖: Upstream接收請求。Downstream發送請求。代碼如下:public class ServerTest {public static void main(String args[]) {ServerBootstrap bootsrap = new
Time of Update: 2018-12-04
Flex Builder 3 Plug-in Professional Edition crack 獨家最新破解 package com.adobe.flexbuilder.project.asn.flexbuilder3;import com.adobe.asneu.a;import com.adobe.flexbuilder.project.asn.d;import java.util.Calendar;import java.util.Date;public final
Time of Update: 2018-12-04
process_monitor.zip #!/bin/sh# http://code.google.com/p/mooon# 進程監控指令碼,當指定進程不存在時,執行重啟指令碼將它拉起# 特色:# 1.本監控指令碼可重複執行,它會自動做互斥,保證總是只有一個監控指令碼進程存在# 2.互斥不僅依據監控指令檔名,而且包含了它的命令列參數,只有整體相同時互斥才生效# 3.對於被監控的進程,可以只指定進程名,也可以包含命令列參數#
Time of Update: 2018-12-04
/** * 單個標頭檔,可即時獨立使用,只要定義了宏NOT_WITH_MOOON,即不依賴於mooon * 簡單的寫日誌類,非安全執行緒,提供按大小滾動功能 * 不追求功能,也不追求效能,只求簡單,若要功能強、效能高,可以使用CLogger * * 使用方法: * 1) 構造一個CSimpleLogger對象 * CSimpleLogger logger(".", "test.log", 1024*1024, 10); * 2) 調用print方法寫日誌 *
Time of Update: 2018-12-04
openssl編程入門(含完整樣本).pdf openssl編程輕鬆入門(含完整樣本)一見1. 編寫目的第一次跑起openssl樣本並不太簡單,本文的目的是為了讓這個過程變得非常簡單。在開始之前,要非常感謝周立發同學,正是通過他共用的樣本,較輕鬆的入了門。本文檔對他共用的樣本中的一個小錯誤進行了修正,並提供了傻瓜式的“編譯-產生-KEY運行”一條龍指令碼(方法請參見壓縮包中的readme檔案),讓跑第一個openssl程式變得輕輕鬆鬆。2. 樣本包 ssl_test.zip ssl_
Time of Update: 2018-12-04
http://www.hooto.com/home/rui/blog/archives/5144.htmlVirtualBox VDI 磁碟鏡像 -
Time of Update: 2018-12-04
thomescai http://blog.csdn.net/thomescai(轉載請保留)概要: 之前對這幾個概念有點糊塗,查閱了些資料,稍微概括下他們的區別吧。如有錯誤,請拍~~~先看圖:TCP/IP是什嗎? TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用程式層。 在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層中有TCP協議與UDP協議。
Time of Update: 2018-12-04
不用再擔心指令碼輸出的記錄檔過大爆滿磁碟,log_rotater.sh可讓你高枕無憂,肆無忌憚地重新導向日誌到檔案中。 log_rotater.zip #!/bin/sh# Writed by yijian on 2012/7/22# 本指令碼功能:# 1) 實現一個通用的按大小的日誌滾動# 2) 要求記錄檔副檔名為“.log”,否則請稍修改代碼# 3) 支援處理多個目錄下的記錄檔,如果需要使用這個功能,# 必須啟用dirs_list參數## 為何要寫一個這樣的東東?#
Time of Update: 2018-12-04
例子:public class Lava {private int speed = 5;void flow(){System.out.println("flow");}}public class Volcano {public static void main(String args[]){Lava lava = new
Time of Update: 2018-12-04
一個良好的多線程庫,不應當一刀切的全加鎖。因為有些時候,雖然是多線程環境,但可能依照設計一個類只會被一個線程操作,這個時候加鎖是多餘的,純浪費效能,但另一些情境又需要它是安全執行緒的。假設有一個類X:class X{public: void xoo();};這裡總結幾個常見的做法:1.本身不加鎖,由調用者來加鎖,壞處是如果多數情境都是加鎖的,由會產生重複代碼class Z{public: void zoo() { LockHelper<CLock>
Time of Update: 2018-12-04
代碼重構無處不在,重點滴做起。經常見到一些下面這樣的代碼:1、不要拿bool和false直接比if (false == IsXXX()){}這是畫蛇添足,費力不會討好,直接了當即可:if (!IsXXX())2、太多的if/else嵌套,導致過多縮排,造成眼花繚亂,閱讀困難if (){ if () { if () { if () { if () {
Time of Update: 2018-12-04
這個錯誤我是找了好多天才找到了 AE(ArcgisEngine)在用VC環境進行開發時,對license的初始化失敗,並在VC的編譯輸出視窗中提示Could not bind to a valid ArcGIS installation是因為VC沒找到Arcgis