Time of Update: 2017-01-18
Session是Apache的核心,每當一個用戶端串連到達時,就會有一個新的Session被建立,直到該串連關閉。Session被用來儲存串連,以及各種資訊。Session有如下幾種狀態:Connected : the session has been created and is availableIdle : the session hasn't processed any request for at least a period of time (this period is
Time of Update: 2017-01-18
在第一章中,我們對MINA有了一個大致的瞭解,在本章中,我們會對MINA中的用戶端/伺服器模型做一個細緻的分析。並且也會提供一些基於TCP,UDP的例子。應用程式結構服務端結構用戶端結構簡單的TCP伺服器簡單的TCP用戶端簡單的UDP伺服器簡單的UDP用戶端總結應用程式結構一個採用MINA架構的應用程式結構如下:從可以看到,MINA作為一個中介層串連你的應用程式和網路底層,它可以處理TCP,UDP甚至一個串列通訊協定(RS-232C),因此你可以更關注於在MINA上面設計應用程式,而不需要瞭解底
Time of Update: 2017-01-18
在本章,我們會讓你對什麼是MINA,什麼是非阻塞IO,為什麼我們在非阻塞IO上開發了這套架構有一個瞭解.我們也會給你展示一個非常簡單的例子去讓MINA跑起來.1.非阻塞IO非阻塞IO的API在JAVA 1.4版本出現,並且已經被用於數以萬計的應用當中.NIO API覆蓋了非阻塞的各種操作.在java.nio.*的包中包含了下面一些重要的結構:Buffers - Data ContainersChartsets - Containers translators for bytes and
Time of Update: 2017-01-18
Apache Shiro 使用手冊(四)Realm 實現在認證、授權內部實現機制中都有提到,最終處理都將交給Real進行處理。因為在Shiro中,最終是通過Realm來擷取應用程式中的使用者、角色及許可權資訊的。通常情況下,在Realm中會直接從我們的資料來源中擷取Shiro需要的驗證資訊。可以說,Realm是專用於安全架構的DAO. 一、認證實現 正如前文所提到的,Shiro的認證過程最終會交由Realm執行,這時會調用Realm的getAuthenticationInfo(token)方法。
Time of Update: 2017-01-18
授權即存取控制,它將判斷使用者在應用程式中對資源是否擁有相應的存取權限。 如,判斷一個使用者有查看頁面的許可權,編輯資料的許可權,擁有某一按鈕的許可權,以及是否擁有列印的許可權等等。 一、授權的三要素 授權有著三個核心元素:許可權、角色和使用者。 許可權 許可權是Apache Shiro安全機制最核心的元素。它在應用程式中明確聲明了被允許的行為和表現。一個格式良好好的許可權聲明可以清晰表達出使用者對該資源擁有的許可權。 大多數的資源會支援典型的CRUD操作(create,read,update,
Time of Update: 2017-01-18
Apache Shiro 使用手冊(二)Shiro 認證認證就是驗證使用者身份的過程。在認證過程中,使用者需要提交實體資訊(Principals)和憑據資訊(Credentials)以檢驗使用者是否合法。最常見的“實體/憑證”組合便是“使用者名稱/密碼”組合。 一、Shiro認證過程 1、收集實體/憑據資訊 //Example using most common scenario of username/password pair: UsernamePasswordToken token =
Time of Update: 2017-01-18
Apache Shiro 使用手冊(一)Shiro架構介紹一、什麼是Shiro Apache Shiro是一個強大易用的Java安全架構,提供了認證、授權、加密和會話管理等功能: 認證 - 使用者身份識別,常被稱為使用者“登入”;授權 - 存取控制;密碼加密 - 保護或隱藏資料防止被偷窺;會話管理 - 每使用者相關的時間敏感的狀態。對於任何一個應用程式,Shiro都可以提供全面的安全管理服務。並且相對於其他安全架構,Shiro要簡單的多。二、Shiro的架構介紹
Time of Update: 2017-01-17
PHP SSO詳解SSO有三種模式:①跨子域單點登陸②完全跨單點域登陸③站群共用身份認證第一種模式很簡單,只需要將Cookie的網域設定成多個應用的根域即可 第二種方式,也很簡單,就是將所以應用的認證地址更換成同一個認證地址,每次查看是否在認證中心登陸,如果登陸了,給調用應用發放一個加密令牌即可 第三種跨域,就是來回跳轉來回驗證token略有麻煩配置目錄結構在伺服器根目錄下,建立三個項目目錄:|–/網站根目錄/ |–|–/oa/ |–|–/bbs/
Time of Update: 2017-01-17
php array_udiff() 函數用於比較兩個(或更多個)數組的鍵名和索引值,並返回差集。此比較是通過使用者提供的回呼函數來進行的。如果認為第一個參數小於,等於,或大於第二個參數時必須分別返回一個小於零,等於零,或大於零的整數。本文章通過執行個體向大家講解array_udiff()函數的使用方法,array_udiff_assoc — 帶索引檢查計算數組的差集,用回呼函數比較資料基本文法:array array_udiff_assoc ( array $array1 , array
Time of Update: 2017-01-17
如果不做處理,會原樣輸出 $title這不是我們期望的我們希望輸出Null 字元串,應該這樣做:$!title// 2Create a Context objectVelocityContextcontext = new VelocityContext();// 3 Addyou data object to this contextcontext.put("title",null);// 4Choose a templateTemplatetemplate =
Time of Update: 2017-01-19
Tab選項卡類似與電話本的介面,通過多個標籤切換不同的內容,要實現這個效果,首先要知道TabHost,它是一個用來存放多個Tab標籤的容器,每一個Tab都可以對應自己的布局,比如,電話本中的Tab布局就是一個線性布局要使用TabHost,首先要通過getTabHost方法擷取TabHost的對象,然後通過addTab方法來向TabHost中添加Tab,當然每個Tab在切換時都會產生一個事件,要捕捉這個事件,需要設定TabActivity的事件監聽setOnTabChangedListener下面
Time of Update: 2017-01-19
Android網路功能很強大,WebView組件支援直接載入網頁,可以將其視為一個瀏覽器,要實現該功能,具體步驟如下1、在布局檔案中聲明WebView2、在Activity中執行個體化WebView3、調用WebView的loadUrl()方法,載入指定的URL地址網頁4、為了讓WebView能夠響應超連結功能,調用setWebViewClient()方法,設定WebView用戶端5、為了讓WebView支援回退功能,覆蓋onKeyDown()方法6、一定要注意:在AndroidManifest
Time of Update: 2017-01-19
AutoCompleteTextView的功能類似於百度或者Google在搜尋欄輸入資訊的時候,彈出的與輸入資訊接近的提示資訊。當然這裡要要用到一些適配器在Android中提供了兩智能輸入框,它們是MultiAutoCompleteTextView、AutoCompleteTextView。它們的功能大致一樣,它和AutoCompleteTextView的區別就是MultiAutoCompleteTextView可以在輸入框中一直增加新的選取值。編寫方式也有所不同,在進行setAdapter之後
Time of Update: 2017-01-19
Toast用於向使用者顯示一些協助/提示。下面我做了5中效果,來說明Toast的強大,定義一個屬於你自己的Toast。注意:LENGTH_LONG—長時間顯示視圖或文本提示LENGTH_SHORT—短時間顯示視圖或文本提示setGravity(int gravity,int xOffset,int yOffset)—設定提示應該在螢幕上的顯示的位置setDuration(int
Time of Update: 2017-01-19
除了Android系統內建的Button按鈕以外,還提供了帶表徵圖的按鈕ImageButton要製作帶表徵圖的按鈕,首先要在布局檔案中定義ImageButton,然後通過setImageDrawable方法來設定要顯示的表徵圖。注意:我們可以在布局檔案中就直接設定按鈕的表徵圖,如android:src=”@drawable/icon1″我們也可以在程式中設定自訂表徵圖imgbtn3.setImageDrawable(getResources().getDrawable(R.drawable.ic
Time of Update: 2017-01-18
一、進程的間通訊的原理進程間交換資料必須通過核心,在核心中開闢一塊緩衝區,進程1把資料空間拷貝到核心緩衝區,進程2再從核心緩衝區把資料讀走。這樣就實現了處理序間通訊。二、進程通訊的進位--管道(pipe)調用 pipe(int
Time of Update: 2017-01-18
一、什麼是訊號量就是一種用來描述某種資源數量個數的計數器,通過控制其他通訊資源來實現進程通訊。它在此過程中負責資料的互斥、同步等。互斥,就是在同一時間段內,A、B兩個進程只有一個進程在運行。同步。就是A 進程完成之後,B進程接著完成,有一定的執行順序。二、工作原理兩種操作模式,P操作和V操作。P操作(就是申請資源,訊號量進行減一操作)V操作(釋放資源,訊號量進行加一操作)三、 ipcs -s 查看semidipcrm -s id 刪除id四、主要函數shmget 建立訊號量shmctl
Time of Update: 2017-01-18
一、共用記憶體共用記憶體是最高效的通訊方式,因為不需要一個進程先拷貝到核心,另一個進程在存核心中讀取。二、 ipcs -m 查看共用記憶體ipcrm -m 刪除共用記憶體三、主要函數shmget 建立shmctl 刪除shmat 掛接shmdt 取消掛接********* man 函數名 查看*****四、代碼實現comm.h1 #pragma once 2 #include<stdio.h> 3 #include<stdlib.h> 4
Time of Update: 2017-01-18
一、 mutex互斥量同步:就是對資源的訪問有序。互斥:就是任一時刻來說只有一個在執行;但是對於多線程的程式來說,存取違規的問題是很普遍的,解決的辦法是引入互斥鎖(Mutex,MutualExclusive
Time of Update: 2017-01-18
一、條件變數線上程同步過程中還有如下的情況:線程A需要等某個條件成立之後才能繼續往下執行,如果條件不成立,線程A就阻塞,而線程B在執行過程中使這個條件成立了,就喚醒線程A繼續執行。在Pthread庫中用條件變數阻塞等待一個條件,或者喚醒等待這個條件的線程。條件變數用pthread_cond_t類型的變數來表示。用pthread_cond_init 初始化條件變數、如果條件變數是靜態分配的,也可以用宏定義