随笔分类 -  性能话题

摘要:用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题. 阅读全文
posted @ 2013-09-11 10:26 王 庆 阅读(929) 评论(0) 推荐(0)
摘要:术语说明:QPS = req/sec = 请求数/秒【QPS计算PV和机器的方式】QPS统计方式 [一般使用 http_load 进行统计]QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数单台服务器每天PV计算公式1:每天总PV = QPS * 3600 * 6公式2:每天总PV = QPS * 3600 * 8服务器计算服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )【峰值QPS和机器计算公式】原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间公式:( 总PV数 * 80% ) / ( 每天秒数 * 20 阅读全文
posted @ 2013-09-03 13:06 王 庆 阅读(401) 评论(0) 推荐(0)
摘要:有如下情况下可以用到内存文件映射技术解决问题:  1.不要复制文件中所有的数据,只需要修改文件中局部的数据。  2.并行/分段处理大文件。 如下代码示使用javaNIO局部修改文件中指定位置的部分数据: /** * 修改文件中的某一部分的数据测试:将字定位置的字母改为大写 * @param fName :要修改的文件名字 * @param start:起始字节 * @param len:要修改多少个字节 * @return :是否修改成功 * @throws E... 阅读全文
posted @ 2013-08-27 13:33 王 庆 阅读(6079) 评论(1) 推荐(0)
摘要:public class Singleton { private static class Holder { // lazy class static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return Holder.instance; } } 阅读全文
posted @ 2013-08-23 13:49 王 庆 阅读(208) 评论(0) 推荐(0)
摘要:基本问题1、memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200, -p是设置Memcache监听的端口,我这里设置了12000 阅读全文
posted @ 2013-08-23 09:17 王 庆 阅读(566) 评论(0) 推荐(1)
摘要:最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!Ehcache在java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性 (基于java开发)、被认证(具有apache 2.0 license)、充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中。什么特色? 1. 够快Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrenc 阅读全文
posted @ 2013-08-22 10:29 王 庆 阅读(545) 评论(0) 推荐(0)
摘要:项目 Memcache Ehcache 分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如sina研发的memcachedb,将cache的数据保存到[url=]Berkerly DB[/url]支持。持久化到本地硬盘,生成一个.data和.index文件。cache初始化时会自动查找这两个文件,将数据放入cache 效率 高 高于Memcache 容灾 可通过客户端实现。 支持 缓存数据方式 缓存在memcached server向系统申请的内存中 可以缓存在内存(JVM中),也可以缓存在硬盘。通过CacheManager管 阅读全文
posted @ 2013-08-22 10:23 王 庆 阅读(689) 评论(0) 推荐(0)
摘要:基本问题1、memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200, -p是设置Memcache监听的端口,我这里设置了12000 阅读全文
posted @ 2013-07-29 13:18 王 庆 阅读(293) 评论(0) 推荐(0)
摘要:目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架 1、 IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP 来缓存对象(对象都是单例的),这也就是spring 所说容器内单例,它和java中的单例模式的区别在于单例模式是在当前java进程中保持单例,因为它有三个必要条件:private static 自身对象、private 构造方法、public static getInstance()方法,以保持在进程中单例,而spring只能保证在容器中单例,用户是可以手动再new出其他对象的。所以这部分如果为了简单可以不使用spri 阅读全文
posted @ 2013-07-19 09:18 王 庆 阅读(455) 评论(0) 推荐(0)
摘要:时间在我们开发中应用非常普遍,大部分开发中我们将用Mysql的datetime格式来存储,但是对于经常用时间来排序或者查询的应用中,我们要将时间做成索引,这个就跟查询效率很有关系,但是很多程序员会用int来存时间戳,然后再进行处理 1、首先是我们分析datetime长度是8个字节,INT的长度是4个字节,存储空间上比datatime少。 2、int存储索引的空间也比datetime少,排序效率高,查询速度比较快。 3、方便计算,unix时间戳有点就是方便计算。 总结了一下timestamp和datetime的区别: 1、timestamp有范围限制1970~20372、timesta... 阅读全文
posted @ 2013-07-18 18:04 王 庆 阅读(881) 评论(0) 推荐(0)
摘要:java反射效率到底如何,花了点时间,做了一个简单的测试.供大家参考.测试背景: 1. 测试简单Bean(int,Integer,String)的set方法2. loop 1亿次3. 测试代码尽可能避免对象的创建,复发方法的调用,仅仅测试set方法的耗时测试结果:场景本机测试结果(XP,双核,2G)服务器测试结果(Linux,XEN虚拟机,8核,5.5G) 方法直接调用235MS190MSJDK Method调用29188MS4633MSJDK Method调用(稍作优化)5672MS4262MSCglib FastMethod调用5390MS2787MS得出一个感性的结果: 1.JDK反射效 阅读全文
posted @ 2013-07-17 14:27 王 庆 阅读(26242) 评论(2) 推荐(2)
摘要:范凯 写道高性能并发系统其实分很多种类,是并发读,并发写,并发长连接,还是并发事务?不同类型的架构设计是不同的。具体到12306就是并发事务,在这个领域,我个人没有什么经验。陈雄华 写道1) 优化前端网页充分利用CDN,使JS、图片等静态资源的请求能够就近访问(顺便说一下,如果12306订票插件能从google提供的http://cdnjs.com中引用JS,而不去直接引用github的JS,就不会把github搞瘫了)。将JS、CSS合并,最小化请求数。将JS和CSS压缩,最小化数据传输启用gzip压缩网页。2) 群集分发和调度据说12306是采用集中式构架的,集中式构架很难应对高并发,也很 阅读全文
posted @ 2013-07-17 09:24 王 庆 阅读(823) 评论(0) 推荐(0)
摘要:一、综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。Web service是连接异构系统 阅读全文
posted @ 2013-07-10 17:17 王 庆 阅读(802) 评论(0) 推荐(0)
摘要:YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化。YSlow跌评分规则。主要有12条:1. Make fewer HTTP requests 尽可能少的http请求。。我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕。思考了下,为什么把这个三种请求过多列为对页面加载的重要不利因素呢,而过多的IMG请求并没有列为不利因素呢?发现原来这些请求都是可以避免的。15个JS和3个CSS完全可以通过特殊的办法进行合并(这个技术部已经帮我们解决了,实在是 阅读全文
posted @ 2013-04-27 09:31 王 庆 阅读(169) 评论(0) 推荐(0)
摘要:Page Speed是谷歌提供的一个Web优化工具,它可以对网站的Web服务器配置和前端代码执行若干测试,并提供优化建议。 在此工具的基础上,谷歌针对Apache、nginx服务器提供了一个傻瓜式的优化工具mod_pagespeed、 ngx_pagespeed,这些工具可以自动执行网页优化,比如对网络传输的HTML字节、图像、CSS、JavaScript进行压缩优化等。去年10月份,谷歌已经发布了用于Apache服务器的mod_pagespeed 1.0正式版本,而针对nginx服务器的ngx_pagespeed进度似乎慢了点,目前刚进入beta阶段。谷歌称,在过去的三个月内对数百个站点进行 阅读全文
posted @ 2013-04-27 09:05 王 庆 阅读(176) 评论(0) 推荐(0)
摘要:缓存是介于物理数据源与应用程序之间,是数据库数据在内存中的存放临时copy的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用的运行性能。1、Hibernate缓存概述缓存是介于物理数据源与应用程序之间,是数据库数据在内存中的存放临时copy的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命中"),则就直接把命中的数据作为结果加以利用,避免了建立数据库查询的性能损耗。2:Hibernate缓存分类一级缓存(sess 阅读全文
posted @ 2013-04-26 16:59 王 庆 阅读(320) 评论(0) 推荐(0)
摘要:1. statement每次执行sql语句,相关数据库都要执行sql语句的编译;preparedstatement是预编译的, 采用Cache机制(预编译语句,放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来,有利于sql生成查询计划。),对于批量处理可以大大提高效率. 也叫JDBC存储过程。例如,如果要执行两条sql语句SELECT colume FROM TABLE WHERE colume=1;SELECT colume FROM TABLE WHERE colume=2;会生成两个执行计划一千个查询就生成一千个执行计划!PreparedStatement用于使 阅读全文
posted @ 2013-04-26 16:56 王 庆 阅读(1052) 评论(0) 推荐(0)
摘要:众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法;例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且这些API在内存构造的对象大小将比数据原有的大小要大很多倍数,所以你不得不去拆分Excel,还好,POI开始意识到这个问题,在3.8.4的版本后,开始提供cache的行数,提供了SXSSFWorkbook的接口, 阅读全文
posted @ 2013-04-26 13:25 王 庆 阅读(459) 评论(0) 推荐(0)
摘要:引言前端的高性能部分,主要是指减少请求数、减少传输的数据以及提高用户体验,在这个部分,图片的优化显得至关重要。许多网站的美化,都是靠绚丽 的图片达到的,图片恰恰是占用带宽的元凶。每个 img 标签,浏览器都会试图发起一个下载请求。本文就详细介绍了图片优化的几种方式,介绍了使用的工具以及优化后的结果。图片压缩减少图片的大小,可以明显的提高性能,而对于已有图片,要想减少图片的大小,只能改变图片的格式,这里推荐的是 PNG8 的格式,它可以在基本保持清晰度的情况下,减少图片的大小。知道这个原理以后,可以用 Windows 的画图工具、以及 PhotoShop 工具逐个的改变。但是这样做的缺点是单张处 阅读全文
posted @ 2013-04-25 12:53 王 庆 阅读(563) 评论(0) 推荐(0)
摘要:引言在前端优化的第一部分中,主要讲解了对静态资源的一些优化措施,包括图片压缩、CSS Sprites 技术、GZIP 压缩等。这一部分,本文将讲解前端优化里重要的 Flush 机制、动静分离、HTTP 持久连接、HTTP 协议灵活应用、CDN 等。结合这些技术或思想,相信会使 Java Web 应用程序的性能更上一层楼。Flush 机制的使用实际上在 Web 技术中,Flush 机制并不新鲜,它的思想是无需等到网页内容全部加载完毕,一次性写回客户端,而是可以部分逐次的返回。如果网页很大的话,一次性写回全部内容显然是个不明 智的选择,因为这会造成网页的长时间空白。Flush 机制允许开发人员将网 阅读全文
posted @ 2013-04-25 12:51 王 庆 阅读(336) 评论(0) 推荐(0)