❶ java 如何將圖片讀入緩存中去
paint方法是繼承的,repaint方法在這里沒什麼意義,只是調用了一下而已,使得每隔5秒重繪一次
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setContentPane(new ImagePanel(new ImageIcon("test.gif").getImage()));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 100, 100);
frame.setVisible(true);
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
frame.repaint();
}
}).start();
}
static class ImagePanel extends JPanel {
BufferedImage image;
public ImagePanel(Image image) {
// Not really need a BufferedImage, just a requirement
this.image = new BufferedImage(image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_4BYTE_ABGR);
Graphics g = this.image.getGraphics();
g.drawImage(image, 0, 0, null);
}
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
}
}
❷ java 中如何進行頁面緩存
可以在要執行的頁面中通過set方法設置要緩存的內容,之後通過get方式獲取到設置的內容
舉例:
第一個訪問頁面:
request.setAttribute("username",zhangsan");
第二個跳轉頁面:
Srting username = request.getAttribute(''username'');
此時即可獲取到username的存儲信息。
❸ 頁面圖片載入速度比較慢,有什麼優化的方法嗎,請提供下,最好是java的 是否可以用緩存框架
跟緩存什麼的沒關系。
跟圖片大小,網速、帶寬 有關
圖片不能太大,一般網站都會對上傳的 圖片進行縮略,壓縮處理
一般都會把圖片處理成三或四 種規格:縮略圖,中圖,大圖,原圖
不要把原圖直接放在頁面上,根據需求盡量用最小的圖。 這樣頁面載入就會很快。
不要用TOMCAT壓縮圖片,會很占伺服器資源的。而且大部分圖片都是已經壓縮過的只是像素太高,實際頁面顯示的時候根本不需要太高的像素,主要是要對圖片像素大小進行處理。
怎麼實現你可以搜一下java 圖片處理 圖片縮略
❹ java web項目中有很多的圖片,如何存放
一般有兩種情況,
一種是前端開發需要顯示的圖片,這個是頁面構成必須的元素,一般這些會做 動靜分離,後台介面 跟 前端資源會部署在不同的伺服器上,有不同的優化,一般會有轉發的伺服器,判斷是後台介面,就轉發到後台的伺服器,如果是前端資源,就轉發到前台的伺服器。一般情況下,前端伺服器,跟後台的伺服器,是分離開的,有不同的人去管理,如果項目小的話,可能就全放在一個。這個優化的化,你可以去了解下 CDN原理。這個是用來優化靜態資源載入情況的。
另一種情況是,顯示的圖片,不是前端構成的,是用戶上傳文件產生的,這種情況下,現在一般有專門的對象存儲,用過 七牛雲,跟阿里的。這個的邏輯是文件上傳的時候,不是上傳到我們自己的伺服器,上傳到專門的雲伺服器,我們自己資料庫只需要保存這些上傳文件的地址,真正使用的時候,把連接給前端,前端自動會根據內容到專門的雲伺服器上去獲取。所有的安全,優化,帶寬,緩存命中,這些都有由雲伺服器去保證。 簡單來說,只有有錢,這些東西根本不會成為你項目的瓶頸。
作為技術,我們討論的應該不是這些。圖片會做備份,這個可以有專門的磁碟陣列去實現,簡單來說,就是上傳的內容保存到磁碟的時候,會自動多保存幾個備份到不同的磁碟上。還是那句話,多去了解下CDN的原理,最後這段,個人理解,不一定對。
❺ Java實現簡單的緩存機制原理
package qinbo hui;
/*
設計思想來自-回欽波(qq: )
*/
public class CacheConfModel implements java io Serializable{
private long beginTime;
private boolean isForever = false;
private int rableTime;
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this isForever = isForever;
}
public int getDurableTime() {
return rableTime;
}
public void setDurableTime(int rableTime) {
this rableTime = rableTime;
}
}
package qinbo hui;
import java util *;
import test CacheConfModel;
/*
設計思想來自-回欽波(qq: )
*/
public class CacheMgr {
private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();
private CacheMgr(){
}
private static CacheMgr cm = null;
public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t start();
}
return cm;
}
/**
* 增加緩存
* @param key
* @param value
* @param ccm 緩存對象
* @return
*/
public boolean addCache(Object key Object value CacheConfModel ccm){
boolean flag = false;
cacheMap put(key value);
cacheConfMap put(key ccm);
System out println( now addcache== +cacheMap size());
return true;
}
/**
* 刪除緩存
* @param key
* @return
*/
public boolean removeCache(Object key){
cacheMap remove(key);
cacheConfMap remove(key);
System out println( now removeCache== +cacheMap size());
return true;
}
/**
* 清除緩存的類
* @author wanglj
* 繼承Thread線程類
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap keySet();
Iterator it = erator();
while(it hasNext()){
Object key = it next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap get(key);
//比較是否需要清除
if(!ccm isForever()){
if((new Date() getTime() ccm getBeginTime())>= ccm getDurableTime()* * ){
//可以清除 先記錄下來
tempSet add(key);
}
}
}
//真正清除
Iterator tempIt = erator();
while(tempIt hasNext()){
Object key = tempIt next();
cacheMap remove(key);
cacheConfMap remove(key);
}
System out println( now thread================> +cacheMap size());
//休息
try {
Thread sleep( * L);
} catch (InterruptedException e) {
// TODO Auto generated catch block
e printStackTrace();
}
}
}
}
lishixin/Article/program/Java/hx/201311/25737