❶ 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