请教高手 Java字节流 读取存数据于缓存时的问题

请教高手 Java字节流 读取存数据于缓存时的问题,第1张

byte最后一次读取的长度比之前的要小。所以你byte数组尾巴那几位不是空的,是前一次读取的尾部。

设置长度是42或者更大时,你的byte数组一次性就把内容全部读取完了。while只执行一次,而设置为小于42的时候,就会多次执行while,把新读取的字节存放到byte数组中去。但是你最后一次的长度不是正好你设置的12而是6,所以新读取的6长度字节不能完全替换byte数组中前一次的数据。只能替换掉6个。因为数组长度是12,所以后6位还保存着前一次(倒数第二次读取)的数据。

可以这样修改,希望你能看懂。

int len = 0; // 字节长度

while((len = fisread(b))>0){ // 将读取到的长度记录下来

  foswrite(b,0,len); // 读取了多长的字节就写入多长的字节

}

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。缓存机制的实现有很多中,这里讲一种。

public class CacheImmutale{

//声明要缓存的类名;

private final String className;

//声明10个缓存池

private static CacheImmutale[] cache= new CachImmutale[10];

//记录缓存的位置,最新位置为[pos-1]

private static int pos=0;

//构造器

public CacheImmutale(String className){

thisclassName=className;

}

//返回方法

public String getName(){

return className;

}

//返回对象实例名,传进要使用的实例名,由该方法去判断缓存池中是否存在

public static CacheImmutale valueOf(String className){

//遍历缓存池,若存在,返回

for(int i=0;i

if(cache[i]!=null&&cache[i]getName()equals(className)){

return cache[i];

}

}

//如果缓存池满,则采取先进先出

if(pos==10){

cache[0]=new CacheImmutale(className);

pos=1;

return cache[0];

}

else{

cache[pos++]=new CacheImmutale(className);

return cache[pos-1];

}

}

public boolean equals(Object obj){

if(obj instanceof CacheImmutale){

CacheImmutale c1=(CacheImmutale)obj;

if(classNameequals(c1getName())){

return true;

}

}

return false;

}

public int hashCode(){

return classNamehashCode();

}

}

session最好少用,一般系统都用session来存储用户信息,session用多了对系统开销不好,缓存也尽量少用,要用的话都用在基本不会改变的数据上,不然会影响系统,如果经常改变的量,用了缓存,如:一个程序在用缓存中的数据,而另一个程序却在修改缓存的数据,那边程序就会出现不符合的数据了,如果回答对你有帮助,请把分给我吧,谢谢

因为你是要在tomcat启动的时候查询数据库,所以只能通过监听器,将查询数据库的代码放到监听器中,然后将数据封装到VO中,再讲这个VO存储到servletContext域中。

从servletContext中获取数据,你应该会。

你要实现的这个可能跟SpringMvc的关系不是很大。

你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量

publicstaticfinalMapcache=newHashMap()

static{

cache=请求数据库 *** 作

}

key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cacheget(key)就可以了。

java如何从数据库读取数据并写入txt文件:

将数据查询出来放在list中,然后写入文件。

给你个写入的类,查询数据自己如果能搞定最好了。

FileWriterfileWriter=newFileWriter("c:\Resulttxt");

int[]a=newint[]{11112,222,333,444,555,666};

for(inti=0;i

fileWriterwrite(StringvalueOf(a[i])"");

}

fileWriterflush();

fileWriterclose();

上面例子中的a也可以是list。

以上就是关于请教高手 Java字节流 读取存数据于缓存时的问题全部的内容,包括:请教高手 Java字节流 读取存数据于缓存时的问题、java 缓存机制 实现的原理、java实现缓存技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10218920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存