网站首页博客首页 ┆欢迎光临 Bos开发者网络 登录注册帮助
我的企业架构视点
日志列表
  • 应用模式分析系列四(Identity Field)

            EAS使用UUID作主键已经很多年了,K3 HR也是。但遇到的问题应该都不少,今天在Martin Fowler的书中读到这么一句话:GUID唯一的缺点在于生成的串比较大,这可能会成为一个大问题。后面还紧跟了一句:长键总是难于输入也难于读写,这也会带来性能问题,尤其是对索引。呵呵,看来Martin大叔是也是深有体会的,其实我们后来遇到的很多问题都是与之相关的。1)数据太大导致数据库过大。和K3同等数据量的账套相比,EAS的账套要大许多,这中间GUID的贡献就“功不可没”2)索引问题:使用GUID之后关联属性都是大字符串,而这都是索引字段,于是乎索引性能问题出来了。        详细内容...
  • 应用模式分析系列三(Lazy Load)

    延迟加载/惰性加载(Lazy Load)         一个对象,它并未包含所有数据,但是知道如何获取这些数据。        上述是定义,但我觉得这个定义并未体现出LazyLoad的精华,因为我们真正需要的不是它知道如何取得,而是能够根据需要取得,从而根据实际情况来优化性能或内存。        详细内容...
  • 应用模式分析系列二(Identity Map)

    标识映射(Identity Map)    通过内存映射标志,确保每个对象只加载一次。    上面是定义,实际上就是在内存中维持一个对象缓存(通常是Map缓存),每次获取对象的时候,先到缓存中获取,不存在再访问数据库,当然需要考虑更新时的同步。这不是个什么新鲜东西,给一种常用的做法赋予一个深奥的名字就是大师们常干的事情。对于这个模式我没有太多个人的想法,只有以下2点:   1、Map的层次。如果一个对象会存在并发更新,则只能作为会话层缓存映射。如果一个对象属于只读对象,则可以作为全局缓存映射。在EAS的Cache中提供了CacheRegion的划分方式,结合Session对象,我们可以灵活定义映射层次。嗯,我认为Session是个好东西,如果不被滥用的话。   2、映射的大小:由于JAVA虚拟机的要求,在32位的服务端对内存是有严格要求的,基本上就在1.3G左右,以前元数据是做了映射缓存,可惜占用内存太多,被无情地Cut了,改为采用惰性加载+WeakReferrence的处理方式,我还是认为缓存起来比较好,以前也思考过对应的方案。其中和Anderson就讨论过是否可以通过专用的CacheServer来满足需求。以前没有集群方案,现在有了集群,似乎该方案开始具备可行行了 详细内容...
  • J2EE基础知识温故一:JNDI

    InitialContext ic = new InitialContext(); 这句代码很是容易,在JAVA入门学习过程中,应该每个人都写过。不过是否每个人都知道这句代码做了什么事情呢?为什么后面的代码就像是魔术师的帽子,可以从里面拿出你所需要的一切? 如果对于上述问题不清楚的朋友可以参考以下内容: 从单机编程转向 EJB 技术和分布式计算这些更复杂领域的 Java 开发人员常常会陷入困境:编写成功地游历 JDNI 迷宫的代码会很困难,多计算机和配置也增加了出错的可能性。在本文中,EJB开发人员 详细内容...
  • 应用模式分析系列一(UOW)

    工作单元模式(UOW)        这个模式的作用在于维护一个对象列表,能协调变化的写入和并发问题的处理。这个说法过于抽象,实际上我们可以将其想象为一个特殊的容器,一个对象被构造出来后就丢到这个容器里,对于这个对象的任何变动,容器都能知晓,最后由容器来决定提交的时候要做什么。        举个最直接的例子:我们有个操作,需要更新一张凭证的某个科目,在直接写SQL的过程中很直观,我们可能会通过Update 详细内容...
  • 产品性能与用户操作的关系

      一点想法,还不够成熟,暂记录在此。 不常用操作:指执行频率在1次/天,甚至更少的操作。 常用操作:可以分为业务操作与辅助操作。 业务操作:如:单据提交、审核、查看等关键业务功能的操作。 辅助操作:为完成主要业务功能,而进行的必要操作。比如:为提交单据,必须进行F7查询、录入物料、科目等。这里提交是业务操作,而F7、录入物料、科目属于辅助操作。   用户对于辅助操作要求非常高,一般不宜大于2秒。而对于业务操作相对要求比较低,可以放宽到5秒。 详细内容...
  • 我们能应用AOP么?

      此文主要是转贴,不过在转贴前我还是有些个人想法,AOP这个概念已经出来很久了,实际上EAS BOS也有一定程度的应用,正如CoreJava 在DynamicProxy一章中所述:动态代理对于应用程序员来说不是很常见,但是对于系统编程来说却是非常重要。我想这里的应用程序员应该可以对应为EAS项目组的开发人员,系统编程则应该对应BOS及基础部门的开发人员了。 由于今年一个可预期的工作是对BOS一些底层功能进行重构,因此如何保证现有产品的稳定,同时能够改造有缺陷的实现成了一个焦点问题,我想AOP应该是可以大有作为的<ZT> 详细内容...
  • 金蝶BOS发展远景(概述)

      20世纪著名建筑设计大师、家具设计大师和城市规划大师小沙里宁有一条非常经典的设计理念:   “Always design a thing by considering it in its next larger context -       a chair in a room,        a room in a house,       详细内容...