在Android中因為不同像素手機的多樣化,對於一張圖片,放大不同的手機上因像素不同顯示上也會有區別。現有如下需求:將一張圖片寬度充滿整個螢幕並顯示。我們常常做的可能是如下兩種方式對圖片進行處理。通過<ImageView>,定義屬性layout_parent="match_parent"和layout_parent="wrap_content",同時利用<ImageView>的scaleType屬性進行縮放。 -
在網頁中,每次的Client Access Server,有部分不用重複請求,如有些圖片,視頻等就沒有必要每次都請求,這樣會讓伺服器增大工作量。為了防止這樣,我們採用過濾器來設定用戶端是都緩衝。頁面的緩衝與不緩衝設定及html頁面中meta的作用HTTP1.1中啟用Cache-Control
在我們生活中,對於賬戶的自動登入已經很常見了,所以利用過濾器實現這個功能。主要介紹使用者的自動登入和取消自動登入,以及實現一天自動登入或者n天實現自動登入,當使用者ip被加入到黑名單之後,直接利用過濾器返回一個警告頁面。過濾器的功能很是強大,我們只需要在寫好的前台後servlet之後進行添加就可以實現這個功能Ps:這個僅僅只是一個示範而已,裡面的訪問資料庫的部分,自己隨意類比了下,主要是突出實現自動登入的功能。前台代碼:前台代碼是成功與否都在這個頁面顯示。用到的技術:jstl標籤的應用,sess
我們在聊天的時候的或者留言的時候,有部分詞是不允許發表出來。我們可以採用過濾器實現這個功能。我們只是簡單利用過濾器實現這個過濾的功能,有些地方沒寫的很全前台代碼:<body> <form action="<c:url value='/WordServlet'/>" method="post"> 姓名:<input type="text" name="name"/><br/> 留言內容:<textarea rows="1
HashMap 和 HashSet 是 Java Collection Framework 的兩個重要成員,其中 HashMap 是 Map 介面的常用實作類別,HashSet 是 Set 介面的常用實作類別。雖然 HashMap 和 HashSet 實現的介面規範不同,但它們底層的 Hash 儲存機制完全一樣,甚至 HashSet 本身就採用 HashMap 來實現的。 實際上,HashSet 和 HashMap 之間有很多相似之處,對於 HashSet 而言,系統採用 Hash
0.StringBuilder類型簡介StringBuilder類型是一個可變的字串類型,StringBuilder類型的API與StringBuffer類型的API基本一致,唯一的區別是StringBuilder的使用假設在單一線程中,換句話說,StringBuilder是線程不安全的。StringBuilder在執行個體化的時候,通常也會預設設定一個容量大小,一般為字串參數的長度+16。StringBuilder是繼承AbstractStringBuilder這個抽象類別的,而這個抽象類別的
微信開發API如何接入伺服器,下面就為大家進行介紹一、說明* 本樣本根據微信開發文檔:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM )進行開發示範。* 編輯平台:myeclipse10.7+win32+jdk1.7+tomcat7.0 * 伺服器:阿里雲 windows server 2008 64bits*
我們先要記住三者的特徵: String 字串常量 StringBuffer 字串變數(安全執行緒) StringBuilder 字串變數(非安全執行緒)一、定義查看API會發現,String、StringBuffer、StringBuilder都實現了 CharSequence介面,雖然它們都與字串相關,但是其處理機制不同。 String:是不可改變的量,也就是建立後就不能在修改了。
Java Web項目中,解決中文亂碼方法總結如下第一種情況:調用jsp頁面中文顯示亂碼問題描述:通過瀏覽器調用jsp頁面,在瀏覽器中顯示的中文內容出現亂碼。解決方案:首先確認本jsp在編輯器中儲存檔案內容時,使用的是utf-8的編碼格式,然後在jsp頁面的開始處添加<%@
最近做了一個項目,其中有一個線上網頁交流的需求,好久沒寫代碼了,手都生疏了,於是先寫demo練練手,分享到雲棲社區平台,以此做個記錄,方便自己和大家使用。先給大家說下實現步驟分這樣幾大步:1、使用awt組件和socket實現簡單的單用戶端向服務端持續發送訊息;2、結合線程,實現多用戶端串連服務端發送訊息;3、實現服務端轉寄用戶端訊息至所有用戶端,同時在用戶端顯示;4、把awt組件產生的視窗介面改成前端jsp或者html展示的介面,java
以下內容來自維基百科,關於靜態類型檢查和動態類型檢查的解釋:•靜態類型檢查:基於程式的原始碼來驗證型別安全的過程;•動態類型檢查:在程式運行期間驗證型別安全的過程;Java使用靜態類型檢查在編譯期間剖析器,確保沒有類型錯誤。基本的思想是不要讓類型錯誤在運行期間發生。以下代碼是一個例子,理解了他,你會更好的理解Java靜態類型檢查是如何工作的。程式碼範例假定我們有如下類,A和B,B繼承A。class A {A me() {return this;}public void
1. fail-fast簡介“快速失敗”也就是fail-fast,它是Java集合的一種錯誤偵測機制。某個線程在對collection進行迭代時,不允許其他線程對該collection進行結構上的修改。例如:假設存在兩個線程(線程1、線程2),線程1通過Iterator在遍曆集合A中的元素,在某個時候線程2修改了集合A的結構(是結構上面的修改,而不是簡單的修改集合元素的內容),那麼這個時候程式就會拋出 ConcurrentModificationException
Java並發編程系列【未完】:•Java 並發編程:核心理論•Java並發編程:Synchronized及其實現原理•Java並發編程:Synchronized底層最佳化(輕量級鎖、偏向鎖)•Java 並發編程:線程間的協作(wait/notify/sleep/yield/join)•Java
一、重量級鎖 上篇文章中向大家介紹了Synchronized的用法及其實現的原理。現在我們應該知道,Synchronized是通過對象內部的一個叫做監視器鎖(monitor)來實現的。但是監視器鎖本質又是依賴於底層的作業系統的Mutex Lock來實現的。而作業系統實現線程之間的切換這就需要從使用者態轉換到核心態,這個成本非常高,狀態之間的轉換需要相對比較長的時間,這就是為什麼Synchronized效率低的原因。因此,這種依賴於作業系統Mutex
最近在工作上碰見了一些高並發的情境需要加鎖來保證商務邏輯的正確性,並且要求加鎖後效能不能受到太大的影響。初步的想法是通過資料的時間戳記,id等關鍵字來加鎖,從而保證不同類型資料處理的並發性。而java自身api提供的鎖粒度太大,很難同時滿足這些需求,於是自己動手寫了幾個簡單的擴充...1. 分段鎖
一、Synchronized的基本使用 Synchronized是Java中解決並發問題的一種最常用的方法,也是最簡單的一種方法。Synchronized的作用主要有三個:(1)確保線程互斥的訪問同步代碼(2)保證共用變數的修改能夠及時可見(3)有效解決重排序問題。從文法上講,Synchronized總共有三種用法: (1)修飾普通方法 (2)修飾靜態方法 (3)修飾代碼塊 接下來我就通過幾個例子程式來說明一下這三種使用方式(為了便於比較,三段代碼除了Synchronized的使用方式
一、PriorityQueue的資料結構JDK7中PriorityQueue(優先順序隊列)的資料結構是二元堆積。準確的說是一個最小堆。二元堆積是一個特殊的堆, 它近似完全二叉樹。二元堆積滿足特性:父節點的索引值總是保持固定的序關係於任何一個子節點的索引值,且每個節點的左子樹和右子樹都是一個二元堆積。 當父節點的索引值總是大於或等於任何一個子節點的索引值時為最大堆。 當父節點的索引值總是小於或等於任何一個子節點的索引值時為最小堆。 下圖是一個最大堆
並發編程是Java程式員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對電腦最底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程並發程式。本系列會從線程間協調的方式(wait、notify、notifyAll)、Synchronized及Volatile的本質入手,詳細解釋JDK為我們提供的每種並發工具和底層實現機制。在此基礎上,我們會進一步分析java.util.concurrent包的工具類,包括其使用方式、實現源碼及其背後的原理。本文
ThreadLocal與線程成員變數還有區別,ThreadLocal該類提供了線程局部變數。這個局部變數與一般的成員變數不一樣,ThreadLocal的變數在被多個線程使用時候,每個線程只能拿到該變數的一個副本,這是Java API中的描述,通過閱讀API源碼,發現並非副本,副本什麼概念?複製品?
一、Maven是什麼Maven是一個用java開發的項目構建工具, 它能使項目構建過程中的編譯、測試、發布、文檔自動化, 大大減輕了程式員部署負擔。二、安裝Maven安裝maven非常簡單,訪問Maven官方頁下載即可:http://maven.apache.org/download.cgi下載完後配置M2_HOME環境變數, 然後終端運行mvn --version, 看到正確的輸出提示,Maven就安裝完成了。三、Maven基本概念Maven的核心思想是POM, 即Project