`
sunqi
  • 浏览: 227918 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
之前看了java8的longadder实现,最近又看到一篇文章介绍longadder的,http://ifeve.com/atomiclong-and-longadder/ 其实现思路也是分段,最后需要get的时候进行sum计算。其核心思路就是减少并发,但之前老的Atomic,难道就没有提升的空间了吗?昨晚进行了一次测试     /**      * Atomically increments by one the current value.      *      * @return the updated value      */     publicfinalint ...
hbase依赖于hadoop环境,先得安装好hadoop集群,当然也可以跑单机版的hbase,不过那样就没意义了 安装hadoop,参考 hadoop安装  http://sunqi.iteye.com/blog/1432015   参考网上的资料,自己动手实践一下   下载hbase wget http://mirror.bjtu.e ...
最近研究hbase,hbase依赖hadoop,当然需要安装一下,并且写代码调试感觉下 记录下安装过程 首先准备三台机器,新建好hadoop帐号,host绑定, 10.20.156.166 node1 10.20.156.164 node3 10.20.156.163 node4 node1是主节点,当然要让node1能免密码直接ssh到node3,node4。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。 ssh-keygen -t rsa 然后一直按回车完成后,在home跟目录下会产生隐藏文件夹.ssh
   现在网站高并发情况下,上个关键功能点都需要进行压力测试,进行性能调优,如何去做呢?来个实战吧    现在压力测试jmeter使用也非常普遍了,对于一些页面测试的,登录cookie等模拟的直接用jmeter就能做到,也可以用badboy录制脚本就能直接使用,但对于hessian接口的压测就比较麻烦,下面以对hessian接口压测为列   jmeter提供了对java等测试的扩展,但需要自己写脚本,建立个java工程,引入     可见jmeter充分预留了扩展功能。还有引入依赖的hessian的jar,以及hessian接口的jar编写脚本如下:   //继承AbstractJ ...
CouchDB是用Erlang开发的面向文档的数据库系统,最近刚刚发布了0.10版本,这也是第一次公开发布的版本。CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。     但是,在redhat下面安装确比较麻烦一点,记录一下自己下午的实践。     首先想到的是去官网http://couchdb.apache.org/下载安装源码apache-couchdb-0.10.1.tar.gz,那就开 ...
svn up svn: This client is too old to work with working copy '.'; please get a newer Subversion client 这是eclipse的svn版本比开发服务上的版本高原因造成的,出现这个的时候,是否非常烦恼,今天终于把这个问题解决了,虽然管网上提供的脚本去更新svn的文件,但我还是把开发机上的svn也升级了下,就解决问题了,记录下升级过程。 1.在官方网站中有1.6的rpm安装包可用,把所有相关rpm都下载下来: wget -r -np -nd http://the.earth.li/pub/subvers ...
   Oracle自带的JDBC放在了oracle.jdbc中,与java.sql类似,但oracle.jdbc.driver包不被推荐了使用了。    在项目迭代开发中,使用了Lucene搜索代替原来的sql查询,调用的接口在前期开发过程中一直速度正常,但在昨晚预发后,突然预发环境查询速度变得很慢,分析整个网络正常,数据库正常和搜索引擎查询正常后,最后发现接口数据库查询要花费好几秒,这简直很不正常,问题停留到接口应用和oracle数据库的连接上了,原来接口使用了oracle.jdbc.pool.OracleDataSource,对这个并不太熟悉,直接换成dbcp后马上查询速度恢复正常了。    ...
从JRE1.3开始, GC都采用了分代复制算法,这个算法根据对象的生存期将对象分成两代,新创建的对象在年轻代(Young Generation),当年轻代的内存分完的时候,GC将年轻代中少数尚未死亡的对象复制到另一块年老代(Tenured Generation),然 ...

原子循环计数器

    博客分类:
  • java
现实当中很多场景,需要进行轮训服务,比如轮训在10个日志文件当中写日志,在10台机器上轮训的去调用以实现负载均衡,常规的做法,如tomcat的Poller线程轮训选择,就采用Math.abs(pollerRotater.incrementAndGet()) % pollers.length 此地需要取原子自增的绝对值模以poller线程数,那是否有更好的实现呢? public class CycleAtomicInteger { private final static long PARK_TIME = 1000L * 1000; private AtomicInteger cou ...
背景       网络质量是移动端开发很关注的指标,典型场景宝贝详情展示,在网速好的时候出宝贝高清大图片,网络不好的时候出小图片,保证用户的体验和流量付出的平衡。      Network Connection Class是一个由Facebook公司出品 ...
搞java的都知道,string直接用+拼接的时候,javac编译会进行优化,因此字符串拼接也推荐使用stringbuffer或者stringbuilder。那到底是怎么优化的呢?简单的代码如下   package test; public class Java { public String test(String s1, String s2) { return s1 + s2; } public String test1(String s1, String s2) { return new StringBuilder(s1).append(s2). ...
多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。 2. 多线程编程的好处是什么? 在多线程程序中,多 ...
最近碰到个场景,还蛮有普遍性的,如简单工厂方法,需要依据入参选择不同的业务逻辑进行对应的处理   马上想到两个方案 方案一:采用map存放对应入口的处理方法,然后请求进来后经过get就行,map.get(et); 方案二:采用sw ...
如果你知道了这三者的区别,请忽略 最近碰到了servlet对入参获取方式的处理问题,因为二方库处理不当,导致了获取不到入参的情况,之前也知道这三个方法不兼容,现简单介绍下     1、这三个获取入参的方法,是互斥的 ...
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个 ...
Global site tag (gtag.js) - Google Analytics