使用javahtmlunit获取video视频缓存,首先安装javahtmlunit库,然后创建一个WebClient对象,设置它的设置,比如超时时间,编码等,然后调用WebClient的getPage方法获取video视频缓存,调用WebResponse的getContentAsStream方法获取视频文件流,最后使用FileOutputStream将视频文件保存到本地。
缓存有2部分,1客户端缓存,
2服务器端缓存
你说的是客户端缓存,jquery主要是利用js进行缓存的,也就是cookie
学java吧,给我email我指点你 sun_day_good@163com
缓存功能的存在,让我们在浏览网页和访问防止的时候可以更快的加载我们需要的内容,而今天北大青鸟>
你这个分数太少了吧,程序到是有,不过给你有点可惜
CacheMgrjava
import javautil;
import cnjavassframeworkcachevoCacheConfModel;
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();
tstart();
}
return cm;
}
/
增加缓存
@param key
@param value
@param ccm 缓存对象
@return
/
public boolean addCache(Object key,Object value,CacheConfModel ccm){
boolean flag = false;
cacheMapput(key, value);
cacheConfMapput(key, ccm);
Systemoutprintln("now addcache=="+cacheMapsize());
return true;
}
/
删除缓存
@param key
@return
/
public boolean removeCache(Object key){
cacheMapremove(key);
cacheConfMapremove(key);
Systemoutprintln("now removeCache=="+cacheMapsize());
return true;
}
/
清除缓存的类
@author wanglj
继承Thread线程类
/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMapkeySet();
Iterator it = setiterator();
while(ithasNext()){
Object key = itnext();
CacheConfModel ccm = (CacheConfModel)cacheConfMapget(key);
//比较是否需要清除
if(!ccmisForever()){
if((new Date()getTime()-ccmgetBeginTime())>= ccmgetDurableTime()601000){
//可以清除,先记录下来
tempSetadd(key);
}
}
}
//真正清除
Iterator tempIt = tempSetiterator();
while(tempIthasNext()){
Object key = tempItnext();
cacheMapremove(key);
cacheConfMapremove(key);
}
Systemoutprintln("now thread================>"+cacheMapsize());
//休息
try {
Threadsleep(601000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
}
}
CacheConfModeljava
public class CacheConfModel implements javaioSerializable{
private long beginTime;
private boolean isForever = false;
private int durableTime;
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
thisbeginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
thisisForever = isForever;
}
public int getDurableTime() {
return durableTime;
}
public void setDurableTime(int durableTime) {
thisdurableTime = durableTime;
}
}
顺便说一句,缓存的管理不是靠时间久来计算的,是靠最大不活动间隔计算的,你的设计思想有问题
可以利用jdk自带的API获取信息:(只支持jdk160以上的版本)
import javaioInputStreamReader;
import javaioLineNumberReader;
import javautilArrayList;
import javautilList;
import mytoolscomsunmanagementOperatingSystemMXBean;
import mytoolsjavaioFile;
import mytoolsjavalangmanagementManagementFactory;
/
获取windows系统信息(CPU,内存,文件系统)
@author libing
/
public class WindowsInfoUtil {
private static final int CPUTIME = 500;
private static final int PERCENT = 100;
private static final int FAULTLENGTH = 10;
public static void main(String[] args) {
Systemoutprintln(getCpuRatioForWindows());
Systemoutprintln(getMemery());
Systemoutprintln(getDisk());
}
//获取内存使用率
public static String getMemery(){
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactorygetOperatingSystemMXBean();
// 总的物理内存+虚拟内存
long totalvirtualMemory = osmxbgetTotalSwapSpaceSize();
// 剩余的物理内存
long freePhysicalMemorySize = osmxbgetFreePhysicalMemorySize();
Double compare=(Double)(1-freePhysicalMemorySize10/totalvirtualMemory)100;
String str="内存已使用:"+compareintValue()+"%";
return str;
}
//获取文件系统使用率
public static List<String> getDisk() {
// *** 作系统
List<String> list=new ArrayList<String>();
for (char c = 'A'; c <= 'Z'; c++) {
String dirName = c + ":/";
File win = new File(dirName);
if(winexists()){
long total=(long)wingetTotalSpace();
long free=(long)wingetFreeSpace();
Double compare=(Double)(1-free10/total)100;
String str=c+":盘 已使用 "+compareintValue()+"%";
listadd(str);
}
}
return list;
}
//获得cpu使用率
public static String getCpuRatioForWindows() {
try {
String procCmd = Systemgetenv("windir") + "\\system32\\wbem\\wmicexe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(RuntimegetRuntime()exec(procCmd));
Threadsleep(CPUTIME);
long[] c1 = readCpu(RuntimegetRuntime()exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return "CPU使用率:"+DoublevalueOf(PERCENT (busytime)10 / (busytime + idletime))intValue()+"%";
} else {
return "CPU使用率:"+0+"%";
}
} catch (Exception ex) {
exprintStackTrace();
return "CPU使用率:"+0+"%";
}
}
//读取cpu相关信息
private static long[] readCpu(final Process proc) {
long[] retn = new long[2];
try {
procgetOutputStream()close();
InputStreamReader ir = new InputStreamReader(procgetInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line = inputreadLine();
if (line == null || linelength() < FAULTLENGTH) {
return null;
}
int capidx = lineindexOf("Caption");
int cmdidx = lineindexOf("CommandLine");
int rocidx = lineindexOf("ReadOperationCount");
int umtidx = lineindexOf("UserModeTime");
int kmtidx = lineindexOf("KernelModeTime");
int wocidx = lineindexOf("WriteOperationCount");
long idletime = 0;
long kneltime = 0;
long usertime = 0;
while ((line = inputreadLine()) != null) {
if (linelength() < wocidx) {
continue;
}
// 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount,
// ThreadCount,UserModeTime,WriteOperation
String caption =substring(line, capidx, cmdidx - 1)trim();
String cmd = substring(line, cmdidx, kmtidx - 1)trim();
if (cmdindexOf("wmicexe") >= 0) {
continue;
}
String s1 = substring(line, kmtidx, rocidx - 1)trim();
String s2 = substring(line, umtidx, wocidx - 1)trim();
if (captionequals("System Idle Process") || captionequals("System")) {
if (s1length() > 0)
idletime += LongvalueOf(s1)longValue();
if (s2length() > 0)
idletime += LongvalueOf(s2)longValue();
continue;
}
if (s1length() > 0)
kneltime += LongvalueOf(s1)longValue();
if (s2length() > 0)
usertime += LongvalueOf(s2)longValue();
}
retn[0] = idletime;
retn[1] = kneltime + usertime;
return retn;
} catch (Exception ex) {
exprintStackTrace();
} finally {
try {
procgetInputStream()close();
} catch (Exception e) {
eprintStackTrace();
}
}
return null;
}
/
由于StringsubString对汉字处理存在问题(把一个汉字视为一个字节),因此在 包含汉字的字符串时存在隐患,现调整如下:
@param src 要截取的字符串
@param start_idx 开始坐标(包括该坐标)
@param end_idx 截止坐标(包括该坐标)
@return
/
private static String substring(String src, int start_idx, int end_idx) {
byte[] b = srcgetBytes();
String tgt = "";
for (int i = start_idx; i <= end_idx; i++) {
tgt += (char) b[i];
}
return tgt;
}
}
一、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。
此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()要运行的代码$content=Ob_get_contents();将缓存内容写入html文件Ob_end_clean();二、数据缓存顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;Ecmall商城系统里面就用了这种方式;三、查询缓存其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示;按时间变更进行缓存就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次。
四、页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存。
该种方式可以用于如商城中的商品页;五、Opcode缓存首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。
比较知名的是XCache、TurckMMCache、PHPAccelerator等。
六、按内容变更进行缓存这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件;比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存;当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际问的是一个静态页面,而不需要再去访问数据库;试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了;七、内存式缓存提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是key_>value方式;connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache->set('key','缓存的内容');$get=$memcache->get($key);//获取信息>八、apache缓存模块apache安装完以后,是不允许被cache的。
天津IT培训>
跟session不是一个概念,简单的谈下我个人对缓存的看法吧,你可以把它想象成一个容量大的hashMap,可以往里面get set数据,由于数据存在内存当中而不是数据库中,所以存取速度较快。
java常用的缓存有:ehcache, oscache,jcache,这些cache都是单机的,即存在本机的内存中,另外分布式的cache我用过memcache,它被独立部署在一台服务器上,可以实现多个客户端共用缓存。
一般用到缓存的场景:1在处理并发请求,需要及时响应的。2加快系统响应速度。举个例子:比如购物网站有 售卖物品的排行榜,这种数据都是由数据库中N多表关联查询排序得到的,那么就可以存在缓存当中,当页面请求查看排行榜时直接取缓存中的数据。后台定时任务根据一定的时间间隔计算好排行结果,再替换到当前缓存中。 这就是一个简单的缓存应用示例。
具体用法你可以参考 各个缓存的说明文档,百度一下很多的。 纯手打,望采纳~
以上就是关于javahtmlunit获取video视频缓存全部的内容,包括:javahtmlunit获取video视频缓存、java缓存、北大青鸟java培训:浏览器缓存功能在使用上都有哪些类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)