「java暂存操作」用于暂存操作数或数据地址

博主:adminadmin 2022-11-24 12:31:08 43

今天给各位分享java暂存操作的知识,其中也会对用于暂存操作数或数据地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java怎么将数据放入缓存

java放入session缓存中

方法如下:

session.setAttribute("Name",Value);

Name 随便取,value就是要放的数据

获取的时候session.getAttribute("Name);

就可以了

java怎样将数据保存到缓存中,之后再保存

Java中可以使用队列来保存数据,当使用的时候,加上锁,防止其他进程访问,当不用的时候保存到数据库里面,示例如下:

package com.henry;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

import java.util.concurrent.locks.ReadWriteLock;

import java.util.concurrent.locks.ReentrantReadWriteLock;

public class CacheDataTest {

 static MapInteger,Object dataMap=new HashMapInteger,Object();

 static ReadWriteLock lock=new ReentrantReadWriteLock();//创建读写锁的实例

 static Object getData(Integer key){

  lock.readLock().lock();//读取前先上锁

  Object val=null;

  try{

   val=dataMap.get(key);

   if(val == null){

    // Must release read lock before acquiring write lock

    lock.readLock().unlock();

    lock.writeLock().lock();

    try{

     //可能已经由其他线程写入数据

     if(val==null){

      //dataMap.put(key, "");//query from db

      val=queryDataFromDB(key);

     }

    }finally{

     //Downgrade by acquiring read lock before releasing write lock

     lock.readLock().lock();

     // Unlock write, still hold read

     lock.writeLock().unlock();

    }

   }

  }finally{

   lock.readLock().unlock();//最后一定不要忘记释放锁

  }

  System.out.println("get data key="+key+"val="+val);

  return val;

 }

 

 static Object queryDataFromDB(Integer key){

  Object val=new Random().nextInt(1000);

  dataMap.put(key, val);

  System.out.println("write into data key="+key+"val="+val);

  return val;

 }

 

 public static void main(String[] args) {

  for(int i=0;i10;i++){

   new Thread(new Runnable(){public void run() {

    getData(new Random().nextInt(5));

   }}).start();

  }

 }

}

java如何将对象暂存到内存中?

form表单提交文件,建议用smartupload上传,暂存在web服务器目录下,然后稍微一下下面的代码,ftp上传后,删除暂存文件,ok

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.StringTokenizer;

import org.apache.commons.net.;

import org.apache.commons.net.;

import org.apache.commons.net.;

import org.apache.log4j.Logger;

/**

* Ftp 服务类,对Apache的commons.net.ftp进行了包装br

* 依赖库文件:commons-net-1.4.1.jar

*

* @version 1.0 2008-02-18

* @author huchao@jbsoft

*/

public class FtpService {

public FtpService(String serverAddr, String lsenport, String userName,

String pswd) {

this.ftpServerAddress = serverAddr;

this.port = Integer.parseInt(lsenport);

this.user = userName;

this.password = pswd;

}

/**

* FTP 服务器地址

*/

private String ftpServerAddress = null;

/**

* FTP 服务端口

*/

private int port = 21;

/**

* FTP 用户名

*/

private String user = null;

/**

* FTP 密码

*/

private String password = null;

/**

* FTP 数据传输超时时间

*/

private int timeout = 0;

/**

* 异常:登录失败

*/

private final I2HFException EXCEPTION_LOGIN = new I2HFException("COR101",

"FTP服务器登录失败");

/**

* 异常:文件传输失败

*/

private final I2HFException EXCEPTION_FILE_TRANSFER = new I2HFException(

"COR010", "FTP文件传输失败");

/**

* 异常:IO异常

*/

private final I2HFException EXCEPTION_GENERAL = new I2HFException("COR010",

"FTP IO 异常");

private static final Logger logger = Logger.getLogger(FtpService.class);

/**

* 初始化FTP连接,并进行用户登录

*

* @return FTPClient

* @throws I2HFException

*/

public FTPClient initConnection() throws I2HFException {

FTPClient ftp = new FTPClient();

try {

// 连接到FTP

(ftpServerAddress, port);

int reply = ;

if (!FTPReply.isPositiveCompletion(reply)) {

;

throw new I2HFException("COR010", "FTP服务器连接失败");

}

// 登录

if (!(user, password)) {

throw EXCEPTION_LOGIN;

}

// 传输模式使用passive

;

// 设置数据传输超时时间

;

logger.info("FTP服务器[" + ftpServerAddress + " : " + port + "]登录成功");

} catch (I2HFException te) {

logger.info(te.errorMessage, te);

throw te;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_LOGIN;

}

return ftp;

}

/**

* 设置传输方式

*

* @param ftp

* @param binaryFile

* true:二进制/false:ASCII

* @throws I2HFException

*/

public void setTransferMode(FTPClient ftp, boolean binaryFile)

throws I2HFException {

try {

if (binaryFile) {

;

logger.info("FTP文件传输方式为:二进制");

} else {

;

logger.info("FTP文件传输方式为:ASCII");

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 在当前工作目录下建立多级目录结构

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void makeMultiDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

StringBuffer fullDirectory = new StringBuffer();

StringTokenizer toke = new StringTokenizer(dir, "/");

while (toke.hasMoreElements()) {

String currentDirectory = (String) toke.nextElement();

fullDirectory.append(currentDirectory);

(fullDirectory.toString());

if (toke.hasMoreElements()) {

fullDirectory.append('/');

}

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 更改服务器当前路径

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void changeWorkingDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

if (!) {

throw new I2HFException("COR010", "目录[ " + dir + "]进入失败");

}

} catch (I2HFException tfe) {

logger.info(tfe.errorMessage, tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_GENERAL;

}

}

/**

* 上传文件到FTP服务器

*

* @param ftp

* @param localFilePathName

* @param remoteFilePathName

* @throws I2HFException

*/

public void uploadFile(FTPClient ftp, String localFilePathName,

String remoteFilePathName) throws I2HFException {

InputStream input = null;

try {

input = new FileInputStream(localFilePathName);

boolean result = (remoteFilePathName, input);

if (!result) {

// 文件上传失败

throw EXCEPTION_FILE_TRANSFER;

}

logger.info("文件成功上传到FTP服务器");

} catch (I2HFException tfe) {

logger.info(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (input != null) {

input.close();

}

} catch (IOException ex) {

logger.info("FTP对象关闭异常", ex);

}

}

}

/**

* 下载文件到本地

*

* @param ftp

* @param remoteFilePathName

* @param localFilePathName

* @throws I2HFException

*/

public void downloadFile(FTPClient ftp, String remoteFilePathName,

String localFilePathName) throws I2HFException {

boolean downloadResult = false;

OutputStream output = null;

try {

output = new FileOutputStream(localFilePathName);

downloadResult = (remoteFilePathName, output);

if (!downloadResult) {

// 如果是文件不存在将异常抛出

throw new I2HFException("COR011", "文件不存在");

}

logger.info("文件成功从FTP服务器下载");

} catch (I2HFException tfe) {

logger.error(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ex) {

logger.error(ex.getMessage(), ex);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (output != null) {

output.close();

}

if (!downloadResult) {

new File(localFilePathName).delete();

}

} catch (IOException ex) {

logger.error("FTP对象关闭异常", ex);

}

}

}

/**

* Method setFtpServerAddress.

*

* @param ftpServerAddress

* String

*/

public void setFtpServerAddress(String ftpServerAddress) {

this.ftpServerAddress = ftpServerAddress;

}

/**

* Method setUser.

*

* @param user

* String

*/

public void setUser(String user) {

this.user = user;

}

/**

* Method setPassword.

*

* @param password

* String

*/

public void setPassword(String password) {

this.password = password;

}

/**

* Method setTimeout.

*

* @param timeout

* String

*/

public void setTimeout(String timeout) {

try {

this.timeout = Integer.parseInt(timeout);

} catch (NumberFormatException ex) {

// 默认超时时间500毫秒

this.timeout = 500;

}

}

/**

* Method setPort.

*

* @param port

* String

*/

public void setPort(String port) {

try {

this.port = Integer.parseInt(port);

} catch (NumberFormatException ex) {

// 默认端口21

this.port = 21;

}

}

}

=====================================

jsp上传部分

===================================

form method="post" name="uploadform" id="uploadform" action="upload" ENCTYPE="multipart/form-data"

input type="hidden" name="service" value="com.jbsoft.i2hf.corpor.services.CstBatchBizServices.exclUpload"/

table cellspacing="0" cellpadding="0"

tr

td width="20%" align="right"上传本地文件:/td

td width="80%"input class="" style="width:300px" type="file" width="300px" name="exclname" id="exclname"//td

/tr

/table

/form

============================================

上传的servlet用的是smartupload

,部分代码可以参考一下:

==========================================

SmartUpload su = new SmartUpload();

su.setCharset("UTF-8");

su.initialize(getServletConfig(), request, response);

su.setMaxFileSize(10240000);

su.setTotalMaxFileSize(102400000);

su.setAllowedFilesList("xls");

su.upload();

===========================================

代码里面有一些客户的信息,不能全部给你哈

java缓存技术有哪些

1、OSCache

OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何java应用程序的普通的缓存解决方案。

OSCache有以下特点:

(1)缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

永久缓存--缓存能随意的写入硬盘,因此答应昂贵的创建(eXPensive-to-create)数据来保持缓存,甚至能让应用重启。

(2)支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。

缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(假如默认性能不需要时)。

2、Java Caching System

JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供治理各种动态缓存数据来加速动态web应用。

JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。

动态内容和报表系统能够获得更好的性能。

假如一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。

3、EHCache

EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依靠性,全面的文档和测试。

4、JCache

JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。

5、ShiftOne

ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

6、SwarmCache

SwarmCache是一个简单且有效的分布式缓存,它使用ip multicast与同一个局域网的其他主机进

行通讯,是非凡为集群和数据驱动web应用程序而设计的。

SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。

SwarmCache使用JavaGroups来治理从属关系和分布式缓存的通讯。

扩展资料

Java中缓存存在的原因:

一 般情况下,一个网站,或者一个应用,它的一般形式是,浏览器请求应用服务器,应用服务器做一堆计算后再请求数据库,数据库收到请求后再作一堆计算后把数据 返回给应用服务器。

应用服务器再作一堆计算后把数据返回给浏览器,这个是一个标准流程。但是随着互连网的普及,上网的人越来越多,网上的信息量也越来越多。

数据库每秒中接受请求的次数也是有限的,如果利用有限的资源来提供尽可能大的吞吐量呢。一个办法:减少计算量,缩短请求流程(减少网络io或者硬盘io),这时候缓存就可以大展手脚了。

缓存的基本原理就是打破上图中所描绘的标准流程,在这个标准流程中,任何 一个环节都可以被切断.请求可以从缓存里取到数据直接返回。

朋友,请问Java页面暂存功能怎样实现的呢?求教

Java页面缓存通常由三种方法:

1、JavaBean缓存从数据库中读取的内容,通过getter和setter方法

2、通过利用XML缓存当前数据

3、建立相应的缓存池(没有具体用过)

java暂存操作的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用于暂存操作数或数据地址、java暂存操作的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。