摘要: 进程监控端口 1)netstat -anp | grep xxx 2)lsof -i:句柄 lsof -n | grep xxxx线程栈 1)gstack 2)用gdb attach进去 3)java进程用jstack,或btrace运行时系统调用 strace -fp -o /var/lo... 阅读全文
posted @ 2014-08-17 22:57 苏堤白堤杨公堤 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 摘要:optimizaly是一个提供A/B测试服务的网站,可以可视化地在线编辑测试内容和目标,简单方便。 1. A/B测试简介所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计... 阅读全文
posted @ 2014-08-17 22:26 苏堤白堤杨公堤 阅读(3707) 评论(0) 推荐(0) 编辑
摘要: 实时计算里,需要对日志实时收集,logstash可以做到。目前的版本是1.4.2,官方文档在http://www.logstash.net/docs/1.4.2/,里面有详细的配置说明,使用也很简单。这里主要对logstash的可靠性做了简单的验证intput为file,kill掉logstas... 阅读全文
posted @ 2014-08-17 22:02 苏堤白堤杨公堤 阅读(8572) 评论(1) 推荐(0) 编辑
摘要: 最近做了一个迷你的java项目,当初有意识地不考虑代码设计,代码写得天马行空,以便留有足够的重构余地,也好有一次重构的经历。这是一个有页面,有中间逻辑,有数据库的系统,当前没有使用ssh框架、没有连接池、没有缓存、没有日志、没有单元测试、没有javadoc注释、没有版本管理,代码到处都是坏味道,几乎烂透了。架构上,甚至没有做到MVC,仅仅具有MV而已,页面与业务逻辑混杂,代码重复率高。就是要在这么一个烂摊子上,最好代码重构。 不能免俗,做了代码统计,总行数15460,代码行数11375,另有29行代码包含注释,纯注释172行,还有815空行。设立几个目标:(1)加入单元测试 (2)希望在... 阅读全文
posted @ 2013-02-27 22:39 苏堤白堤杨公堤 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 一个大型的平台软件项目接近完工,在此记录。一、从替补开始 我进项目组时,系统的原型已经有了,系统架构和业务流程主干已经成型。我被安排了一个类似预研的任务,要去研究这种报表工具是否符合我们系统要求。这活可以说是项目组内最轻松的,其实类似于打杂,很快我的Demo做完了,而领导似乎也忘记了我,于是就那么被晾着。由于不忙,老是被其他小组拉去做帮工,帮忙跑过单元测试用例、核对过数据库字段,当时也就抱着熟悉系统、熟悉业务的心态,什么都照做了。后来稀里糊涂地被领导拉去帮忙招聘,尽干些文员的活,几近绝望。二、争取主力位置 机会是要靠自己争取的,一方面干好领导安排的杂货,另一方面向开发小组长要活干,很快出彩.. 阅读全文
posted @ 2012-11-25 00:32 苏堤白堤杨公堤 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 有个误区:Oracle的表分区会增加查询性能,因为只需要在部分数据里查了;会增加降低插入性能,因为多了一步指定分区的操作。实际情况并非如此,至少在OLTP系统中,分区不一定会增加查询性能,但很可能会增加插入性能。 引用Tom大神的《Oracle编程艺术》的一段话,很好地解释了分区对OLTP系统的性能影响: 在OLTP系统中,不应该把分区当作一种大幅改善查询性能的方法。实际上,在一个传统的OLTP系统中,你必须很小心地应用分区,提防着不要对运行时性能产生负面作用。在传统的OLTP系统中,大多数查询很可能几乎立即返回,而且大多数数据库获取可能都通过一个很小的索引区间扫描来完成。因此,以上所... 阅读全文
posted @ 2012-10-10 22:12 苏堤白堤杨公堤 阅读(1485) 评论(0) 推荐(0) 编辑
摘要: 我们的系统是一个OLTP系统,用的是Oracle RAC,没有名义上的DBA,但最近一年左右的时间,不知不觉干了DBA事。之前的数据库基础仅限于学生水平,在此做个阶段性小结,记录下学习轨迹,按学习顺序排序,其实就是工作中遇到的顺序。一、从备份恢复开始 因为会写shell,就被拉去做Oracle的备份恢复。拿了隔壁项目的现成资料,移植到了我们的系统。这里的知识点在于Oracle的redo log原理,了解存储的大致结构。我们用的是RMAN的备份,稍微看点RMAN的资料。资料网上一大堆,就不推荐了。顺带通过这一阶段工作,熟悉了sqlplus工具,不过后面用的更多的是pl sql develope. 阅读全文
posted @ 2012-10-05 11:32 苏堤白堤杨公堤 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 类图:最常用,描述子系统或模块的内部结构序列图/时序图:单个场景下,子系统间或对象间的交互操作活动图:流程图与序列图的结合,可以在序列图的基础上表达更多业务逻辑,比序列图更能表达细节状态图:多场景、多种操作下,系统或对象的状态变化通信图:序列图的变种,形式更自由,不能体现子系统的生命周期包图:大型系统实际代码中,各子系统间、应用分层间的依赖关系组件图:实际模块或逻辑分层间,接口的依赖关系部署图:各子系统所使用的软件环境,部署的软件包信息用例图:描述需求的场景或粗略用例其他杂图:个人认为,只有能把问题从某个角度描述清楚,便于大家理解,图怎么画都行 阅读全文
posted @ 2012-10-05 10:49 苏堤白堤杨公堤 阅读(2171) 评论(0) 推荐(0) 编辑
摘要: 项目中有好几个地方用到了哈希算法,更确切地说,是SHA算法的应用场景。MD5也是常用的哈希算法,但已经被证明不再安全,SHA-1也是如此,不安全的原因主要是彩虹表,或是碰撞计算,这里不详细描述。一般推荐使用SHA-256或者SHA-512,至少在当前是安全的。 哈希表在代码中也普遍使用,是一种用于关键字查询的数组或顺序列表,这里就不说了。1. 校验安装文件的完整性 在软件部署的时候,计算软件包当前的哈希值是否与预设值相等,防止软件包被篡改或被替换。Linux提供了基于sha算法的命令,用于计算文件的哈希值sha256sum fileName2. 存储和校验用户口令 用户口令不能用明文... 阅读全文
posted @ 2012-09-15 16:47 苏堤白堤杨公堤 阅读(9491) 评论(0) 推荐(2) 编辑
摘要: 一、背景知识Oralce中的一张表数据量达到亿数量级后或是单表达到2G大小,查询效率似乎会明显下降。需要通过分区的方式,从行的维度对表进行划分,避免单表数据量过大分区方法有下面几类:范围,最常见,按照某列数据的范围分区,比如按时间分区哈希,对于数据规律性不强,或者取值范围难以确定的,推荐哈希法,强行进行分区。分区个数需设置成2的幂次列表,类似枚举,需事先知道字段的精确值混合,上述各种组合oracle 11g又新增了几种分区方法,如下:引用分区,父表的外键作为关键字建立分区,则子表可以以同样的方式分区虚拟列分区,通过表中字段的运算结果进行分区间隔分区,范围分区的变种,范围固定且分区可自动扩展系统 阅读全文
posted @ 2012-08-26 09:42 苏堤白堤杨公堤 阅读(9317) 评论(0) 推荐(0) 编辑