- 浏览: 127878 次
- 性别:
- 来自: 深圳
最新评论
文章列表
serialVersionUID
serialVersionUID的作用:序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
类实现了Serializable接口时,如果没有定义serialVersionUID,在Eclipse中会提示你去定义,在Eclipse中点击类中的warning图标时,Eclipse提供给我们两种方式去生成serialVersionUID,分别是:
1)默认的1L,如:private static final long serialVersionUID = 1L;
2)根据类名、接口名、包路径、成员方法及属性等来生成一个64位的哈希字 ...
- 2015-09-21 14:23
- 浏览 1438
- 评论(0)
在并发环境下,采用锁的方式来解决对共享资源的互斥访问。在Java中,锁可以分类如下两类:对象锁
JAVA中所有的对象都有一个同步锁,每个同步锁会有一个计数器,JVM负责跟踪对象被加锁的次数,没有线程获取该对象的锁时,计数器的值为0,如果一个线程第一次对这个对象加锁,那么计数器的值就为1,之后相同的线程在获得该对象的锁时,计数都会递增的加1,如果相同的线程对此对象解锁,那么计数器就会减1,当计算器为0时,其他线程就可以获取到该对象的同步锁了,一般线程离开一个synchronized方法或者synchronized代码块计数器就会递减。
获取对象锁的方式:
第一种:public synchr ...
- 2015-09-09 19:37
- 浏览 1030
- 评论(0)
进程和线程
说到线程,不得不提到进程,首先我们宏观的了解一下进程和线程。
进程,进程是具有一定独立功能的程序,进程是系统进行资源分配和调度的一个独立单位,竟争计算机系统资源的基本单位。每一个进程都有一个自己的物理地址空间,即进程空间或(虚空间)。一个进程崩溃后,在保护模式下不会对其它进程产生影响。
线程,线程是进程下的一个实体,由CPU调度和分配的基本单位,线程基本上不拥有系统资源,只拥有一点在运行过程中必不可少的资源。但是它可以和同属于一个进程的其他线程共享进程所拥有的资源。在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通 ...
- 2015-09-09 14:40
- 浏览 764
- 评论(0)
IllegalMonitorStateException异常,我们先看下API的定义:
/**
* Thrown to indicate that a thread has attempted to wait on an
* object's monitor or to notify other threads waiting on an object's
* monitor without owning the specified monitor.
*
* @author unascribed
* @see java.lang.Object#notify()
* ...
- 2015-09-08 15:56
- 浏览 1384
- 评论(0)
[ERROR] Failed to execute goal org.apache.rat:apache-rat-plugin:0.7:check (verify.rat) on project flume-ng-elasticsearch-sink: Too many unapproved licenses: 1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the - ...
- 2015-09-04 00:29
- 浏览 920
- 评论(0)
安装Flume
1,到官网下载Flume,下载地址:http://flume.apache.org/download.html
2 ,[root@bicloud77 home]# tar zxvf apache-flume-1.5.2-bin.tar.gz
3, [root@bicloud77 home]#cd apache-flume-1.5.2-bin
4,[root@bicloud76 apache-flume-1.5.2-bin]# bin/flume-ng version
Flume 1.5.2
Source code repository: https://git-w ...
- 2015-09-04 00:28
- 浏览 4926
- 评论(0)
关于magent的安装,在上篇已经讲过,请查看:Memcached之代理服务magent(8)
magent简介
1,和Memcached一样,也是基于libevent的事件驱动模型。从安装magent就能看得出来,必须先安装libevent包。
2,支持ketama的一致性算法。
3,支持Memcached的二进制协议,实现请求转发。
4,magent和每个memcached保持多个长连接,以实现数据的实时同步和主从节点的检测。
5,magent根据集群来做备份的。当Memcached命令发送到某台已经挂掉的Memcached服务器时,命令将会转发到Memcached backup ...
- 2015-09-02 17:23
- 浏览 934
- 评论(0)
magent是一款开源的Memcached代理服务器软件,可以实现Memcached之间的主从备份。在主节点挂点的情况下,会自动切换到从节点继续提供服务。本篇主要介绍magent的安装,以及安装过程中碰到的一些问题。
编译安装libevent:
[root@bicloud75 home]#wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
[root@bicloud75 home]# tar zxvf libevent-1.4.9-stable.tar.gz
[root@bicloud75 home]# cd libev ...
- 2015-09-02 16:29
- 浏览 949
- 评论(0)
简介
Flume是一个分布式,可靠的,可以用来有效的收集,聚合和移动大的日志数据的可用服务。它是一个基于数据流的简单且灵活的框架。采用可调可靠性机制和多种故障转移及恢复机制保证很好的稳健性和容错性。它使用了一个简单的可扩展的数据模型,允许在线分析应用。data flow(数据流)是Flume最重要的抽象,data flow描述了从数据产生,传输、处理并最终写入目标路径。下图描述了Flume重要的几个组件:
结合上图,Flume的一些核心组件
组件
功能
Web Server
数据产生的源头。
- 2015-08-31 21:37
- 浏览 2070
- 评论(0)
Flume是一个分布式日志收集系统系统,具体的后面的文章会详细介绍。因为在使用Flame的过程中自定义了一些功能,所以需求重新打包,本篇只讲述如果编译,打包,导入eclipse阅读源码。
编译过程中遇到些问题,网上找了好多资料,都无法解决。记录下来,希望能对需要的人有所帮助。
1,通过git下载源码,最新版本是1.7.0,我编译的是1.7.0的快照版本
地址:https://github.com/apache/flume.git
2,mvn clean eclipse:clean
3,mvn install eclipse:eclipse -Dmaven.test.skip= ...
- 2015-08-31 21:36
- 浏览 2008
- 评论(0)
缓存雪崩
缓存雪崩可能是因为数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。
解决思路:
1,采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种办法虽然能缓解数据库的压力,但是同时又降低了系统的吞吐量。
2,分析用户行为,尽量让失效时间点均匀分布。避免缓存雪崩的出现。
3,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决。
缓存穿透
缓存穿透是指用户查询数据,在数据库没有,自然在缓存中 ...
- 2015-08-27 20:37
- 浏览 872
- 评论(0)
布隆过滤器
Bloom Filter 是由Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。
当然布隆过滤器也有缺点,主要是误判的问题,随着数据量的增加,误判率也随着增大,解决办法:可以建立一个列表,保存哪些数值是容易 ...
- 2015-08-27 20:33
- 浏览 1031
- 评论(0)
转载地址:http://www.lvtao.net/server/centos-server-setup.html
启动网卡
#centos6.x最小化安装后,网卡默认不是启动状态
ifup eth0
SSH链接 ifconfig 查看IP后SSH终端连接。
更新源 最小化安装是没有wget工具的,必须先安装在修改源)
yum install wget
备份原系统更新源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
进入yum.repos.d目录
cd /etc/y ...
- 2015-08-26 18:04
- 浏览 665
- 评论(0)
Memcached所有单个命令都是原子性的。
如果针对同一个Item发送一个set命令和一个get命令,这两个命令之间是不会有影响的。即使是在多线程环境下,所有的命令也都是原子性的,但是我们要注意单个命令是原子性的,但是命令和命令之间的序列不是原子性的。例如使用get命令获取一个Item,然后通过set命令修改该Item,这个时候Memcached是无法保证该Item的值或其他属性不会被其他的进程修改的。同理,在并发环境下,当前线程也可能会修改其他进程set的Item。
那么有没有办法做到原子性呢?
答案是肯定的(不然写这个文章干嘛^-^),Memcached 1.2.5以及更高版本提供了 ...
- 2015-08-26 18:03
- 浏览 663
- 评论(0)
高性能Java memcached客户端——Xmemcached发布2.0.0版本,主要改进如下:
性能优化,在测试中文本协议实现有接近10%的性能提升。
批量获取key如果包含相同的key,会缓存反序列化后的对象,减少重复反序列化的CPU开销。
修复getStats没办法获取cache dump的Bug,感谢machao9email。
修复ONE_AT_A_TIME没有正确处理无符号数的Bug,感谢spudone。
使用纳秒时间戳作为namespace值,避免高并发下的namespace值冲突。
Maven依赖:
<dependency>
<gro ...
- 2015-08-26 09:38
- 浏览 2255
- 评论(0)