- 博客(26)
- 收藏
- 关注
原创 一步步优化JVM七:其他
边缘问题 在某些场景下,按照前面的一步步优化指导无法产生效果。这一节说明一下这些情况。 一些应用分配了一些少量的非常大的长时间存活的对象。这样的场景需要需要young代的空间比old代更大。 一些应用会经历很少的对象转移。这样的场景可能需要old代的空间远远大于存活对象的大小,由于old的占用量增长率很小。 一些应用有小延迟需求,会使用CMS...
2012-08-08 11:37:18
130
原创 一步步优化JVM六:优化吞吐量
如果你已经进行完了前面的步骤了,那么你应该知道这是最后一步了。在这一步里面,你需要测试应用的吞吐量和为了更高的吞吐量而优化JVM。 这一步的输入就是应用的吞吐量性能要求。应用的吞吐量是在应用层面衡量而不是在JVM层面衡量,因此,应用必须要报告出一些吞吐量指标或者应用的某些操作的吞吐量性能指标。观察到的吞吐量指标然后用可以用来和应用需要的性能指标进行比较,如果达到或者超过要求,...
2012-08-08 11:16:33
140
一步步优化JVM五:优化延迟或者响应时间(3)
CMS垃圾回收器周期 一旦young的空间大小(包含eden和survivor空间)已经完善得满足应用对MinorGC产生延迟要求,注意力可以转移到优化CMS垃圾回收器,降低最差延迟时间的时间长度以及最小化最差延迟的频率。目标是保持可用的old代空间和并发垃圾回收,避免stop-the-world压缩垃圾回收。 stop-the-world压缩垃圾回收是垃...
2012-08-08 10:17:23
170
一步步优化JVM五:优化延迟或者响应时间(1)
本节的目标是做一些优化以满足对应用对延迟的需求。这次需要几个步骤,包括完善Java堆大小的配置,评估垃圾回收占用的时间和频率,也许还要尝试切换到不同的垃圾回收器,以及由于使用了不同的垃圾回收器,需要重新优化Java堆空间大小。 这一步有如下可能的结果: 1、应用的延迟需求被满足了。如果这一步的优化操作满足了应用的延迟需求,你可以继续下一步优化(优化吞吐量)...
2012-07-27 12:06:26
170
一步步优化JVM四:决定Java堆的大小和内存占用
排版太难看了,另外在CSDN上写了:http://blog.csdn.net/zhoutao19872/article/details/7771962 到目前为止,还没有做明确的优化工作。只是做了初始化选择工作,比如说:JVM部署模型、JVM运行环境、收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则。这一步将介绍如何评估应用需要的内存大小以及Java堆大小。首先需要判断出应用存活的...
2012-07-22 10:35:38
2629
一步步优化JVM三:GC优化基础
本节主要描述关于垃圾回收器性能的三个指标,三个关于垃圾回收器优化的基本原则,以及优化HotSpot VM的垃圾回收器的信息收集,在这些指标中权衡以及信息的收集是非常重要的。性能指标 吞吐量:衡量垃圾回收器运行在性能峰值的时候不需要关心垃圾回收器暂停的时间或者需要占用内存的能力。 延迟:衡量垃圾回收器最小化甚至消灭由垃圾回收器引起的暂停时间和应用抖动的能...
2012-07-09 18:39:15
169
一步步优化JVM二:JVM部署模型和JVM Runtime
选择JVM部署模型 JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就是启动了一个JVM实例,然后在JVM中运行一个main程序,又会启动一个JVM实例,两个JVM实例是隔离开的)。哪一个是最适合你的应用的呢?这个是前面说到系统需求和潜在规则来决定的。比如说:假如你要...
2012-07-08 11:49:45
207
原创 一步步优化JVM(一)——概述
现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用能够在JVM的默认配置下运行良好,但是有些应用还是需要优化JVM配置以达到其性能要求。由于各种各样的应用能够运行在现在JVM上面,所以大量的JVM选项可以配置来提升应用的性能。不幸的是,对一个应用而言优化得很好的JVM配置,对应另外的应用不一定适合。所以,真正理解怎样优化JVM配置是非常有必要的。 优化现代JVM是一门很...
2012-06-29 21:37:27
2303
原创 献给最近2B了的自己
两件2B的事情1、域名备案:有人通知我域名备案需要接入空间商,然后以为没有什么大不了的事情,就置之不理,今天收到短信说我的备案已经被注销,这个时候才想起来没有去处理别人提供了的信息,导致了大麻烦。追根到底还是自己太懒惰,不愿意主动沟通,主动的去发现问题的根源,懒惰害死人。2、为了解决一个问题,先写好了一个程序,然后认为在预发布环境下无法使用,然后搞出了一个更复杂的方案,再然后是复杂方案搞不...
2011-09-30 16:36:50
149
原创 数据迁移程序
数据迁移程序不是一个项目正常的功能点,但是是一个项目上线和正常运行最重要的保证之一。好的数据迁移程序必须要做到以下几个点:1、在大数据量的情况,单个数据的失败,不会影响后面数据继续进行。2、纪录失败的数据。3、能够修补失败数据,保证数据100%的迁移。...
2011-06-10 23:14:25
160
原创 制度 流程 与执行力
实践scrum有一段时间了,过去的一些日子里,感觉还不错,不过在组织架构调整以后,很多事情发生了变化,曾经很有节奏感的东西都丢了。很多很好的实践的放弃了,越走越不像那么一回事了,责任肯定在我的身上,在出现了问题没有及时的和团队沟通,没有把握好与上级的沟通。 另外,最近需求很混乱。产生了一个想法,一个团队的节奏感,很大程度的来源与产品经理,产品经理提出的需求总是一些碎片,...
2011-06-09 23:24:42
340
原创 更多的问题要考虑
每次做设计的时候,一定要在满足功能之后,考虑稳定性和性能问题。如果性能和稳定性问题解决好,才能更好的提高技术能力。 中心化系统和非中心化系统的方案不一样,中心化系统,绝对可以采用本地缓存和页面缓存,这样可以提高系统的性能。非中心化系统要采用本地缓存不太靠谱,只能采用集中的式的缓存,这样数据一致性容易保证一些,就是会消耗网络传输。 其实大多数系统,都有一些中心化数据,而且这些数据...
2011-05-19 11:36:16
154
原创 测试驱动开发的过程
终于开始重视代码质量,但是关于代码如何写得更高的质量依旧非常的困惑和不解。最近希望尝试通过测试驱动开发的方式来提高自己的代码质量,尝试了几天了,中间虽然有的过程会走回老路子,总是会忘记先写测试再写代码,尤其是在改问题的时候,写新功能倒不会出现这样的问题,能够很好的控制,思维习惯还需要继续去养成。 在测试驱动开发的过程中,最难的如何做到小步前进,有时候会发现写一个功能的...
2011-03-21 21:05:38
844
原创 3月18日 本周的一些思路
最近在团队里面考虑一个问题,大家感觉做的工作没有成就感,业务做久了感觉疲劳,这个问题应该是一个广泛的问题,其实对于技术人员来说,感觉成就感往往来源于学到新的东西,如果没有新的知识刺激,往往觉得生活无趣,每天编写同样的代码,作重复的事情总是觉得无聊。另外,其实有的人学到了东西,做出了成绩,知识自己没有发现。提出以下两个方法:1、加强团队学习氛围,定期沟通学习成果。其实技术人员都很虚荣,就...
2011-03-18 21:10:20
90
原创 2011技术学习计划
1、重新学习数据结构和算法,着重了解各种算法的应用场景和案例,写blog。Q1完成2、了解一门脚本语言如php,尝试维护一个简单的网站,以此来理解快速建站。Q1完成3、深入学习Java基础知识,再加深对面向对象的理解,在实际工作中,编写出高质量的代码。Q2完成。4、深入学习MySQL数据库,以达到对MySQL数据库深入的理解。Q35、了解各种大数据量处理的工具:如hadoop,bi...
2011-01-09 15:39:02
80
原创 监控系统开发总结
为了实现对线上系统监控,方便大家了解线上机器的使用情况以及远程接口是使用情况,需要把我们需要的应用和需要数据在单独罗列出来。 首先,数据都是从哈勃获得,哈勃掌握着整个淘宝的所有线上机器运行状况。我只通过http请求或者远程接口调用,获得他们的数据。大致了解他们的操作方式,以及如何实现机器监控。他们首先会对系统的情况或者机器的情况打到日志里面,然后每隔几分钟把日志post监控的机器...
2010-07-24 15:37:38
294
原创 多态与if else
在过去的一年中,写了不少代码,总是觉得自己的代码少了点东西,感觉不是很顺手,写的时候也是完全随意想当然的写。知道最近看《重构 改善既有代码的设计》这本书的时候才有点启发,如何去把代码组织好。 曾经我自己说过,写代码无非是if else,现在想想实则不然,遍地都是if else的代码就是难以维护的代码。换说话说,写了过多的if else是由于没有完全的按照面向对象的思维来编写程序,...
2010-06-24 21:00:51
330
原创 web开发的多线程思考
从理论上讲,任何一个web应用都是一个多线程应用,然而我们确很少关注web应用中的多线程问题。为什么? 这个就让我回想起大学上操作系统时,说到的进程间的同步问题,只有在要共享资源的时候才会出现同步问题。是否也可以说,在需要共享资源的时候,我们就需要考虑多线程问题了呢。 如对同一个产品进行抽奖。 以后遇到共享同一个资源的时候应该要提醒自己注意多线程问题。...
2010-06-10 18:36:01
117
equals为true时,hashcode必须相等
equals为true时,hashcode必须相等,这个规则以前没有注意到,每次重写equals方法都没有思考hahsCode,写在这里做一个标记。 如果重载了equals,而没有修改hashCode,在HashMap等类的使用上会出问题:如:[code="java"]public final class PhoneNumber {private final ...
2010-05-03 10:10:04
441
禁止特定IP以外的电脑访问80端口
#!/bin/bash########################echo 1 >/proc/sys/net/ipv4/ip_forward/sbin/modprobe iptable_nat/sbin/modprobe ip_conntrack/sbin/modprobe ip_conntrack_ftp/sbin/iptables -F INPUT/sbin/i...
2010-04-08 19:45:55
992
成功配置tomcat+log4j按天记录数据
我要把这记录下来http://www.blogjava.net/flysky19/articles/98414.html
2010-04-08 11:39:32
110
log4j多文件打印
log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:log4j.rootLogger=DEBUG, stdout, lo...
2010-04-08 11:25:43
104
关于log4j多文件打印使用技巧
log4j的好处在于:1.通过修改配置文件,就可以决定log信息输出到何处(console,文件,...),是否输出。这样,在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码 (System.out.println(...)等)。2.使用log4j,需要整个系统有一个统一的log机制,有利于系统的规划...
2010-04-08 11:21:40
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人