`
文章列表
这两个概念是早些时候Martin Fowler总结出来的两种常见模型设计类型,没有说谁好谁不好,为不同的模型类别选择合适的场景是设计者的工作。没有工具本身的问题,只有工具使用者的问题。     贫血模型是指领域对象里只有ge ...
一个普通的平安夜。 而我,已经过了遍地牢骚的年纪。   可是有一些IT人,他们都在平安夜里做什么?   有人在和客户洽谈,有人在现场维护,有人在加班Coding,还有人,像我一样,在各个技术网站上闲逛,写一些小众的、 ...
表设计基于模型和业务约束的要求: 1、表的设计必须从系统建模开始,提供ER图,表结构遵循范式要求。 2、考察几个数据处理异常复杂的点,包括需要使用存储过程的场景。 3、异步数据存取场景的识别。 4、旧有数据的兼容。   大数据量下可用性的要求: 1、大表的识别和设计,确定索引,避免大表JOIN操作。 2、一次用户请求事务中,至多执行两次commit操作。Oracle写回滚日志的关系,数据量不大的时候,commit经常比update还要耗时。 3、update操作对数据量有预估计,大数据量批量和异步完成,避免回滚段填塞过度。 4、根据实际场景(包括存储数据量、可用性和可扩展性, ...
提高数据库查询速度的几个思路   1、缓存,在持久层或持久层之上做缓存。 2、数据库表的大字段剥离,保证单条记录的数据量很小。 3、恰当地使用索引。 4、必要时建立多级索引。 5、分析Oracle的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描。 6、表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分区(如根据ID取模分区)。 7、RAC。 8、字段冗余,减少跨库查询和大表连接操作。 9、数据通过单个或多个JOB生成出来,减少实时查询。 10、从磁盘上做文章,数据存放的在磁盘的内、外磁道上, ...
大型WEB互联网应用都是在市场的锤炼中成长的,以前提到过性能需求的驱动对于架构的影响,一个1M PV和一个100M PV的网站肯定是不一样的。这里仅仅给出几个典型的例子,兴许你对此能有收获。   初期,只有简单的应用服务器 ...
今天同事的一句话给我留下深刻的印象:“前端也有MVC,DOM树就是这个M,CSS就是这个V,至于C,非JavaScript莫属”。   很高兴团队中有越来越多的人能够跳出某种语言、某种平台的局限性,站到抽象的层次上思考一些设计上的问 ...
第一类:请求无响应,浏览器始终处于等待状态。 定位方法:kill -3或者jstack先分析线程堆栈,找到当前block的线程。 常见于:外部接口调用无返回或者网络IO阻塞无响应;死锁;死循环;……。   第二类:宕机,进程挂掉。 定位方法(这一类问题普遍比较难定位):     (1)寻找hs_err_pidxxx.log这样的JVM日志     (2)使用JVM参数在JVM crash时写入到dump文件中     (3)catalina.out中寻找最后的日志     (4)宕机前环境数据采集 常见于:JDK bug(数次遇到过JIT引起的这一类问题);调用dll的问题; ...
产品的发展需要架构的稳定,但是从一个小用户量的软件逐步发展到动辄数千万注册用户的大型互联网应用,没有人会忽视性能需求(或者隐性的性能需求)在其中起了多大的作用。且看一些这方面的分类归纳,从易入繁:   1 ...
注:还有问题,还没有成功,哪位能帮忙解答一下 -_-~|||   0、首先,要有耐心,相信会有够折腾的;如果你会提出“为什么要自己做编译JDK这样无聊的事情”这样的问题的话,还是别往下看了,浪费时间啊。 我是参照openjdk的这个文档(README-builds.html)来做的,附件传不上去我就不传了,openjdk里面有。   1、我是再Windows上面编译的,肯定比Linux下要麻烦一些,首先访问到 http://download.java.net/openjdk/jdk7/ 下载openjdk-7-fcs-src-b147-27_jun_2011.zip 解压(这个版本 ...
在上一篇博客中,提到了几种常见的过度工程,然而不幸的软件团队有各自的不幸,故事似乎远不止这么多。     又见可扩展性,到底要扩展到什么时候? 见过一些同事,写代码处处考虑灵活、兼容,已经易扩展,一个简简单单的类实现,硬生生地被拆成从接口到抽象类到策略接口到策略实现类到辅助类到工具类十几个类来完成,和可是结果呢?还没等扩展开始,项目就黄了;或者某心态居高的程序员看到了,看着不爽,想不明白,给重写了。 这类程序员拥有负责任的心态和充满热血的心肠,可他们需要健康的引导,否则这样的人会写出危害深重的代码,成为“简单问题复杂化”最常见的一种表现形式。 我们需要优秀的代码结构,需要考虑未来的一 ...
1、类本身就是一种封装形式,先来看看最简单的封装,JavaScript中没有private关键字,对于私有成员,不如我们统一一个以下划线开头的命名来标识: var User = function(name){ this._name = name; this.getName = function(){ return _name; }; };     2、不过,上面的办法还不够好,我依然可以用user._name访问到这个变量。现在换个思路,通过使用var来定义User中的name属性,并且通过getName方法来给它暴露访问入口,实现了private一样的效果: va ...
工作需要面试了一些人,主要还是找合适的开发人员为主,我本人不能算很有经验,但是也有一些自己总结的路子。   要找怎样的人? 简单说,我要找适合工作的人。找适合公司和适合岗位的人,不一定要最优秀的,不一定要最出色的;但是一定要有基础、能学习、肯干,并且有一定的吃苦能力,性格不难于融入团队,短期内不轻易离职的人。   会进行什么对话,问怎样的问题? 七步曲。 1、热场,聊聊地点、家常,看看最基础的沟通能力,也帮助被面试者放松,正常反映自己的情况。 2、询问经历,包括学习经历和工作经历,尤其是实际项目经历,并就项目情况展开询问,可以了解擅长领域和工作经验。 3、简要介绍一下相应职位的 ...
 在IE6/7里JavaScript会从两个方面阻碍页面呈现:script标签下面的网页资源在script加载完之前会停止请求、下载。 script标签下面的html元素在script加载完之前会停止渲染。   在ie6/7 firefox2/3 Safari3 Chrome1 和 opera下 script标签会阻碍下载:     虽然在ie8,safari4,chrome2下script可以并发,但依然阻碍了其他资源的下载:     有6种方法可以使script与其他资源并行下载: XHR eval -- 通过XHR(XMLHttpRequest 对象)下载script ...
产品做到一定程度,JavaScript不仅仅需要几个层面上的重构,而需要将这些合理的、零散的重构集成起来、系统化,最终形成一套适合自己产品的前端框架。 以某套产品的前端框架为例,包含了这么几个组件: 1、通用工具组件 ...
在这篇文章里面已经提到了三件事情:1、Peterson 算法,2、ConcurrentHashMap,3、无锁编程的初识。   如果站在语言层面之上,仅从设计的层面看,可以避免锁的思路至少包括: 1、单线程来主导行为,多线程池化操作避开状态变量。 比如在一个WEB应用中,每一个Action都可以给相应的用户线程分配一个实例,线程之间互不干扰;但是到了业务逻辑Service内,避开Service状态变量的使用,减少了开发人员对并发编程的关注。 2、函数式编码。 函数式编码是最天然的和最高效的免锁方式,如果你对函数式编码还不了解,请参看这篇文章。 3、资源局部复制、异步处理。 总所周 ...
Global site tag (gtag.js) - Google Analytics