评论存储
A. 对网络商品的评价语进行存储,如人们对淘宝网的商品评价评语的存储,用到什么技术,用什么语言和软件
额,分类分错了,这个应该属于网络技术的类型,一般应该是用VB编的。你说的如果是个人把自己的淘宝评价存储下来的话,完全可以用很多截图软件存下来的,个人用来说完全够了
在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存。相比DB,缓存的读取效率快好不少。java应用缓存一般分两种,一是进程内缓存,就是使用java应用虚拟机内存的缓存;另一个是进程外缓存,现在我们常用的各种分布式缓存。相比较而言,进程内缓存比进程外缓存快很多,而且编码也简单;但是,进程内缓存的存储量有限,使用的是java应用虚拟机的内存,而且每个应用都要存储一份,有一定的资源浪费。进程外缓存相比进程内缓存,会慢些,但是,存储空间可以横向扩展,不受限制。
这里是几中场景的访问时间
-------------------------------------------------------------------
| 从数据库中读取一条数据(有索引) | 十几毫秒 |
| 从远程分布式缓存读取一条数据 | 0.5毫秒 |
| 从内存中读取1MB数据 | 十几微妙 |
-------------------------------------------------------------------
进程内缓存和进程外缓存,各有优缺点,针对不同场景,可以分别采用不同的缓存方案。对于数据量不大的,我们可以采用进程内缓存。或者只要内存足够富裕,都可以采用,但是不要盲目以为自己富裕,不然可能会导致系统内存不够。
下面要分享的是一个代码级别的,对进程内缓存的经验总结。面向jdk1.8版本。
在有效时间内缓存单个对象
@FunctionalInterfacepublic interface LiveFetch<T> { // 刷新缓存接口 T fetch() ;
}
public class LiveManager<T> { // 缓存时间
private int cacheMillis; // 缓存对象
private LiveCache<T> liveCache; // 刷新缓存的对象
private LiveFetch<T> liveFetch ;
private Logger logger = LoggerFactory.getLogger(LiveManager.class) ;
// 刷新缓存开关
private boolean refresh = false ;
public LiveManager(int cacheMillis, LiveFetch<T> liveFetch) { this.cacheMillis = cacheMillis ; this.liveFetch = liveFetch ;
}
/**
* fetch cache ; if cache expired , synchronous fetch
* @return
*/
public T getCache() {
initLiveCache();
if(liveCache != null) {
T t ; if((t= liveCache.getElement()) != null) { return t ;
} else {
t = liveFetch.fetch() ; if(t != null) {
liveCache = new LiveCache<T>(cacheMillis, t) ; return t ;
}
}
}
return null ;
}
/**
* fetch cache ; if cache expired , return old cache and asynchronous fetch
* @return
*/
public T getCacheIfNecessary() {
initLiveCache();
if(liveCache != null) {
T t ; if((t= liveCache.getElement()) != null) { return t ;
} else {
refreshCache() ; return liveCache.getElementIfNecessary() ;
}
}
return null ;
}
/**
* init liveCache */
private void initLiveCache() { if(liveCache == null) {
T t = liveFetch.fetch() ; if(t != null) {
liveCache = new LiveCache<T>(cacheMillis, t) ;
}
}
}
/**
* asynchronous refresh cache */
private void refreshCache() {
if(refresh) return ;
refresh = true ; try {
Thread thread = new Thread(() -> { try {
T t = liveFetch.fetch(); if (t != null) {
liveCache = new LiveCache<>(cacheMillis, t);
}
} catch (Exception e){
logger.error("LiveManager.refreshCache thread error.", e);
} finally {
refresh = false ;
}
}) ;
thread.start();
} catch (Exception e) {
logger.error("LiveManager.refreshCache error.", e);
}
}
}
public class Test {
public static void main(String[] args) { int cacheMilis = 1000 ;
LiveManager<Object> liveManager = new LiveManager<>(cacheMilis,() -> new Test().t1()) ;
liveManager.getCache() ;
liveManager.getCacheIfNecessary() ;
}
public Object t1(){
return new Object() ;
}
}
C. 如何评价华为存储的颜值
用颜值来评价华为存储,是一个很新鲜的提法。
不可否认,这是个拼颜值的时代!
企业也不例外,颜值就是生产力,比如苹果产品就凭颜值爆“表”深受热捧。
小编问了下度娘:颜值,源自日语“脸”的汉字,颜值表示人物颜容英俊或靓丽的数值,用来评价人物容貌。
如何用科学方法来测算华为存储这种抽象的看不见摸不着的颜值,小编私以为可以先看看华为存储的成绩单。
因为有记者这么评价华为存储2014的成绩,漂~亮~!这就是企业的颜值!
漂亮到什么程度?有三件大事可以证明:
第一件:华为存储2014年成功跻身Gartner魔力象限挑战者象限(提Gartner,小伙伴们都懂得)
第二件:根据IDC 2014Q3数据,2014年华为存储收入增速、发货套数增速和发货容量增速都位居中国第一。通俗点说:华为存储从增长速度来看,无论是国内市场还是国外市场,华为存储位列第一无可争议。
第三件:2014年,华为存储夺走竞争对手31.7%市场份额。(好腻害!)
谈到这里,小编忍不住要来段人人都爱的大~爆~料~!
CeBIT2015马上要开展了(3月16-20日在德国汉诺威),很多小伙伴从微信后台发来信息问,华为IT即将在CeBIT上投放什么秘密武器!答案就是:
爱看电视爱追剧的都懂的~现在巴不得所有的视频都是4K的,最好逼真到看《深夜食堂》就跟自己在那儿坐着吃美食似的,看《超能陆战队》就跟自己拥有了暖男胖大白,看《奔跑吧兄弟》就跟自己在那里参战。
所以,4K技术绝对是让颜值爆表的利器!
但想要获得4K超高清体验,却很难,因为片源少?没片方愿意拍4K的?
NO~NO~NO~,其实最根本的原因是:存储系统跟不上!
4K技术对于带宽和容量的极高要求,不是什么存储系统都能撑得住!
那么,问题来了,到底什么存储系统能够满足4K要求?
必然是媒资界明星:
华为OceanStor 9000!
对媒资行业而言,颜值尤为重要,他们的终极目标就是要让节目“好看”!
所以,4K超高清视频制作的需求尤为迫切,谁能帮助他们?
就是TA,具备业界第一的288节点,60PB容量扩展能力。更是具有400GB的带宽能力,可随业务增长在线扩展,构建弹性媒体在线资源池,支持向4K业务的平滑演进,同时借助高密节能的系统设计,使空间节省200%,功耗降低32%,进一步降低媒体库运营成本。以首创的全融合架构,OceanStor 9000实现一套存储系统支持媒体全流程业务,可在单一数据资源池实现采、编、播、管、存全流程共享,使数据智能流动,消除传统媒体架构的存储孤岛,提升全流程业务效率。
D. 评价存储设备需要衡量哪些重要指标
对于硬盘来说
容量就不说了;
每分钟转速,转速越快,相关性能越好,但同时发热量越大;
平均寻道时间,是指硬盘接到读/写指令后到磁头移到指定的磁道上方所需要的平均时间。;
平均潜伏期,是指当磁头移动到指定磁道后,要等多长时间指定的读/写扇区会移动到磁头下方,转速越快,潜伏期越短。
平均访问时间,近似等于平均寻道时间+平均潜伏期
数据传输率DTR:单位为MB/s,又称MBPS或Mbits/s(兆位每秒,又称Mbps)。DTR分为最大与持续两个指标,根据数据交接方的不同又分外部与内部数据传输率。内部DTR是指磁头与缓冲区之间的数据传输率,外部DTR是指缓冲区与主机(即内存)之间的数据传输率。外部DTR上限取决于硬盘的接口,目前流行的Ultra ATA-100接口即代表外部DTR最高理论值可达100MB/s,持续DTR则要看内部持续DTR的水平。内部DTR则是硬盘的真正数据传输能力,为充分发挥内部DTR,外部DTR理论值都会比内部DTR高,但内部DTR决定了外部DTR的实际表现。由于磁盘中最外圈的磁道最长,可以让磁头在单位时间内比内圈的磁道划过更多的扇区,所以磁头在最外圈时内部DTR最大,在最内圈时内部DTR最小。
缓冲区容量,也称之为缓存.缓冲区的基本要作用是平衡内部与外部的DTR。这主要体现在三个方面:
预取,预取功能简单地说就是硬盘“私自”扩大读取范围,在缓冲区向主机发送指定扇区数据(即磁头已经读完指定扇区)之后,磁头接着读取相邻的若干个扇区数据并送入缓冲区,如果后面的读操作正好指向已预取的相邻扇区,即从缓冲区中读取而不用磁头再寻址,提高了访问速度。
写缓存,通常情况下在写入操作时,也是先将数据写入缓冲区再发送到磁头,等磁头写入完毕后再报告主机写入完毕,主机才开始处理下一任务。现在的厂商基本都应用了分段式缓存技术,将缓冲区划分成多个小块,存储不同的写入数据,而不必为小数据浪费整个缓冲区空间,同时还可以等所有段写满后统一写入,性能更好。
读缓存,将读取过的数据暂时保存在缓冲区中,如果主机再次需要时可直接从缓冲区提供,加快速度。读缓存同样也可以利用分段技术。
E. mysql 存储用户日志,评论等,如何实现
日志表,用clob类型,mysql中好像是text
评论表,保存已个日志表的外键,评论内容如果也很多的话也可以使用clob类型
日志表与评论表就是一个1-N的关系
F. 日志文章的评论用什么方式存储才好
数据库。
XML 只适合小数据量的数据, 通常用于 配置文件, 数据转移 等方面
G. 比如微博上的文章和评论也都是保存在数据库上吗那么多东西怎么保存呢
数据库中创建不同的表,文章表、评论表,表间通过主外键关联
表中有不同的字段,字段存储对应的数据
比如文章表中
ID文章编号
Title文章标题
Content文章内容
CreateTime创建时间
.....
等等 多个字段存储
评论表跟文章表通过主外键关联 (比如文章ID,在评论表中也有文章ID,标识这些评论是属于某一个文章的)
H. 文章的点赞评论转发数据应该如何保存
1、最优方案是在文章表中保存一个总数(点赞、评论、转发),避免多表关联查询。
2、如果只是查询单个文章,且要查询具体的评论内容,则只能到具体的评论表去查询。