- 浏览: 323195 次
- 性别:
- 来自: 北京
最新评论
-
styl_007:
fuzhuo233 写道Hi.比较疑惑的是这些历史如reflo ...
git引发的血案(cherry-pick找回丢失的commit) -
樊明涛:
qinyushuang 写道1和2 明明是一样的好吧,都是 l ...
Nginx配置proxy_pass -
qinyushuang:
1和2 明明是一样的好吧,都是 location /test/ ...
Nginx配置proxy_pass -
ljw8822:
...
浅析ibatis的cache实现 -
MyTiny:
没用过freemarker,刚接了个二手项目,正愁没找到标签怎 ...
freemaker 自定义标签的实现
文章列表
jvm内存设置及总结
- 博客分类:
- java相关
Application情况:
大量使用了内存缓存,应用负载量较大,900w/d-1000w/d,对响应速度要求较高,因此gc造成的应用中断现象需要尽量控制在最小范围内。
系统情况:
2个8核的cpu,共2*8=16的处理器(processor),总大小为16G的内存。
调优方式:
1、-Xms -Xmx
设置初始堆最大和最小内存;经过测试,目前tomcat容器可以设置的最大内存为3G
-Xms3072M -Xmx3072M,避免gc后jvm重新分配内存,影响性能
2、-Xmn
设置年轻带Young Gen的内存大小,sun官方推荐Young Gen为整个堆内存的3/8,设置过小的Young ...
从JDK1.4(merlin)开始,java提供了NIO的方式读写文件,处理线程调度。使用NIO主要有以下两个方面的好处
1、用fileChannel+buffer的方式,提高了文件的读写速度
简单对比了一下90+M文件,buffer预分配大小为1024的时候,速度提升大概比传统io提升了3-4倍;而且buffer预分配空间越大,速度提升越高;因为nio按照连续的字节块读写文件,buffer越设置的越大,文件读写越快。
public void copyfileBIO() throws IOException{
BufferedReader br = new BufferedR ...
ubuntu 下安装调试 thrift
- 博客分类:
- 开源框架
http://thrift.apache.org/download/
下载thrift的最新版本,然后解压,安装
tar -xzvf thrift-0.7.0.tar.gz
chmod +x configure
./configure
./make
make install
但是thrift的安装编译,还需要依赖一些安装包,因此执行上述命令可能尚无法安装,需要等依赖包安装好后,进入解压后的thrift目录,重新执行配置和编译过程
依赖包如下或者参考http://wiki.apache.org/thrift/ThriftRequirements
GNU build tools ...
ibatis的文档中,关于动态SQL的举例如下:
<statement id="someName" parameterClass="Account" resultMap="account-result" >
select * from ACCOUNT
<dynamic prepend="where">
<isGreaterThan prepend="and" property="id" compareValue=" ...
浅析ibatis的cache实现
- 博客分类:
- ibatis
ibatis提供四种缓存方案,LRU、FIFO、MEMORY、EHCACHE,通过定义不同的cacheModel,将数据缓存在cache中。
具体写法参考如下
<cacheModel id="cache-name" type="LRU" readOnly="true" serialize="false">
<property name="cache-size" value="1000" />
</cacheModel>
...
谨慎使用ibatis的缓存
- 博客分类:
- ibatis
周五调试线上环境的应用,发现某个服务响应时间非常慢,以正常情况衡量,一般每个请求处理时间大概在500ms以内,但是该请求处理时间长达3~5秒
线上应用的大致情况为:该应用为一个运营支撑系统,主要处理运营数据的推送和查询,ORM 采用ibatis框架,日志使用log4j。
针对响应时间较长的请求进行调试(还好日志跟踪比较全面),该请求包含多个业务处理,在某个日志区间,发现处理时间跨度竟然在3-5秒,应该就是这个区间的处理时间长,导致请求响应速度下降。
大致分析了下该区间的处理,基本排除业务处理代码的性能瓶颈,定位是某个数据库查询SQL操作耗时长。但是ibatis在该 ...
当我写下这篇饱含我的经历和磨难所体会到的文章后,势必要得罪很多人,但是就事论事,不是要争个你死我活,只是想单纯的分享个人体会,并与大家讨论进步、吸取更多的想法。
首先,运营主导型的研发,缺乏统一的目的性
其次,运营主导型的研发,工作结果缺乏成就感,容易沦为工具
最后,运营主导型的研发,工作过程容易陷入不断的尝试和修改,对于需求的把握,无法从实际的情况和整体权衡,往往大的需求得做,小的需求得做,最后缺乏突出性和主题感,忽视了用户真正的想法;在需求不断细化的过程中,容易陷入细节,无法把握整理,对研发提出的需求改进意见,无法权衡利弊,最后导致不该做的也做了,效果不好,产生挫折感,提升不信任度。
DateFormat 与 TimeZone
- 博客分类:
- java相关
DateFormat 是日期/时间格式化子类的抽象类,它的实现类提供了很多种日期格式化的方法对日期解析和格式化。
TimeZone 表示时区偏移量,接受时区ID,例如:Asia/Shanghai或者GMT+8,根据时区ID获取时区偏移量
DateFormat提供一个方法,setTimeZone(TimeZone zone),接受时区偏移量作为传入参数,为DateFormat日历设置时区,默认情况使用Locale.getDefault()中的本地时区。
SimpleDateFormat timeZoneFormat = new SimpleDateFormat("yyyy-MM-d ...
First:下载安装 cx_Oracle
http://cx-oracle.sourceforge.net/
注意对应你的oracle客户端版本和python版本
Second:拷贝文件
从{oracleInstall}/BIN目录下拷贝OCI.DLL文件到{pythonInstall}\Lib\site-packages目录下
Third:调试代码
打开python编译器,输入如下代码,测试oracle是否能正常连接
import cx_Oracle
db = cx_Oracle.connect('username', 'pwd', 'TNS_NAME')
如果没有 ...
1、GWT - Google Web Toolkit
参考:http://code.google.com/intl/zh-CN/webtoolkit/overview.html
2、安装 eclipse gwt 插件
http://code.google.com/intl/zh-CN/webtoolkit/tools/download-gwtdesigner.html
按照页面的提示,安装Plugin for Eclipse、Speed Tracer(option)、GWT Designer、GWT SDK
安装完成之后,按照get started 介绍开始gwt之旅
ibatis在进行对象关系映射时,我们往往习惯这么定义
<resultMap id="userPush"
class="com.util.ibatis.test.UserPush">
<result property="uid" column="USPU_UID_FK" />
<result property="pushDate" column="USPU_PUSHDATE" jdbcType="DATE" ...
移动白名单
白名单是一个服务器列表,待遇如同梦网wap网站可以得到用户的ua和手机号
通常情况下,通过cmwap访问wap网站,移动不会传送手机号码和ua,如果wap网站在白名单里,移动会给这个wap网站加上用户手机号码和ua等信息。
cmwap 和 cmnet的区别:
1、cmwap和cmnet是移动人为的对GPRS的接入方式划分的两个接入点APN
2、cmwap主要是为手机浏览wap网站服务,cmnet为PC、笔记本电脑、PDA等利用GPRS上网服务
3、cmwap是通过移动的wap网关(10.0.0.172)代理访问服务,只能访问GPRS网络内的IP(10.*.*.*)
c ...
一、根据余数计算分布 Hash() mod n
就是“根据服务器台数的余数进行分散”。求得键的整数哈希值,再除以服务器台数,根据其余数来选择服务器。
根据余数计算分散的缺点
余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而影响缓存的命中率。
二、一致性哈希算法
把每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属节点。当此节点存在 ...
redis支持master-slave模式,可以设置一个master,多个slave;采用读写分离的策略,master负责写数据,多个slave负责读数据,slave的数据是复制master上的,所以多个slave之间的数据是可以保持一致的,即便down了之后,也会通过加载dump数据的方式,重新加载会原来的缓存数据。
Fail-Tolerance
当前项目需要保证一个client连接到slave服务上读取数据,如果slave down 了之后,可以在不影响应用的情况下,自动切换到另外一个可用的slave
因为jredis不支持设置多个slave服务器,所以写了一个小工具类,目的是为了探测如 ...
1、redis-benchmark
redis基准信息,redis服务器性能检测
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
[root@Architect redis-1.2.6]# redis-benchmark -h localhost -p 6379 -c 100 -n 100000
====== PING ======
10001 requests completed in 0.41 seconds
...