摘要: 适用场合: 7.3 工厂模式的适用场合 创建新对象最简单的办法是使用new关键字和具体类。只有在某些场合下,创建和维护对象工厂所带来的额外复杂性才是物有所值。本节概括了这些场合。 7.3.1 动态实现 如果需要像前面自行车的例子一样,创建一些用不同方式实现同一接口的对象,那么可以使用一个工厂方法或简... 阅读全文
posted @ 2015-10-18 14:28 ljdgm 阅读(1869) 评论(0) 推荐(0) 编辑
摘要: 在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代 已结束,分布式开发的时代实际上早已悄悄地成为了时代... 阅读全文
posted @ 2015-10-18 14:13 ljdgm 阅读(187) 评论(0) 推荐(1) 编辑
摘要: 分布式设计与开发中有些疑难问题必须借助一些算法才能解决,比如分布式环境一致性问题,感觉以下分布式算法是必须了解的(随着学习深入有待添加):Paxos算法一致性Hash算法Paxos算法1)问题描述分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各... 阅读全文
posted @ 2015-10-18 14:12 ljdgm 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service、分布式lock等,这些分布式的基础服务有以下要求:高可用性高一致性高性能对于这种有些挑战CAP原则 的服务该如何设计,是一个挑战... 阅读全文
posted @ 2015-10-18 14:09 ljdgm 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 首先这里澄清两个概念:JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的Java程序,而JVM执行引擎实例则对应了属于用户运行程序的线程;也就是JVM实例是进程级别,而执行引擎是线程级别的。JVM是什么?—JVM的生命周期JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了... 阅读全文
posted @ 2015-10-18 03:20 ljdgm 阅读(265) 评论(0) 推荐(0) 编辑
摘要: JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4.调用JNIEnv实例装载并处理class类。在我们运行和调试Jav... 阅读全文
posted @ 2015-10-18 03:16 ljdgm 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 下载并安装Memcache服务器端服务器端主要是安装memcache服务器端.下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libeve... 阅读全文
posted @ 2015-10-18 03:04 ljdgm 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 下载并安装Memcache服务器端服务器端主要是安装memcache服务器端.下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libeve... 阅读全文
posted @ 2015-10-18 02:58 ljdgm 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 数据库访问可能是很多网站的瓶颈。动不动就连接池耗尽、内存溢出等。前面已经讲到如果我们的网站是一个分布式的大型站点,那么使用 memcached实现数据库的前端缓存是个很不错的选择;但如果网站本身足够小只有一个服务器,甚至是vps的那种,不推荐使用memcached,使 用Hibernate或者Myb... 阅读全文
posted @ 2015-10-18 02:52 ljdgm 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar2.创建memcached工具类:[java] view plaincopypublicclas... 阅读全文
posted @ 2015-10-18 02:50 ljdgm 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 一、memcache简介Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。Memcache官方网站:http://memcached.org/二、memcache的安装1、 下载源文件... 阅读全文
posted @ 2015-10-18 02:46 ljdgm 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 一、单一职责原则:全称:“Single-Responsibility Principle”说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修... 阅读全文
posted @ 2015-10-18 02:39 ljdgm 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设... 阅读全文
posted @ 2015-10-18 02:36 ljdgm 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 一、类和对象使用技巧1、尽量少用new生成新对象 用new创建类的实例时,构造雨数链中所有构造函数都会被自动调用,操作速度较慢。在某些时候可复用现有对象。比如在进行大量St rillg操作时,可用StringBuffer娄代替String类,以避免生成大量的对象。用 new关键词创建类的实例时,构造... 阅读全文
posted @ 2015-10-18 02:31 ljdgm 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 1.性能分析本质寻找系统的性能瓶颈(木桶理论/短板效应),并处理系统的性能瓶颈2.性能分析主要指标负载、响应和服务器CPU\MEM等的使用率3.性能分析主要工具LoadRunner VisualVM和MySql客户端工具(或类似工具)4.性能分析及处理思路4.1. 代码避免代码里面的循环数据库查询(... 阅读全文
posted @ 2015-10-18 02:09 ljdgm 阅读(1066) 评论(0) 推荐(1) 编辑
摘要: 其实只要找下Google大神就有答案了:StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不... 阅读全文
posted @ 2015-10-18 02:01 ljdgm 阅读(566) 评论(1) 推荐(0) 编辑
摘要: 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开... 阅读全文
posted @ 2015-10-18 01:59 ljdgm 阅读(410) 评论(0) 推荐(1) 编辑
摘要: 什么是GC监控?垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明:1. 何时一个新生代中的对象被移动到老年代时,所花费的时间。2. Stop-the-world 何时发生的,持续了多长时间。GC监控是为了鉴别JVM是否在高效地执行GC,以及是否有必要进行额外的性能调优。基于... 阅读全文
posted @ 2015-10-18 01:56 ljdgm 阅读(322) 评论(0) 推荐(1) 编辑
摘要: 为什么需要优化GC或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但前提是所运行的基于Java的系统,包含了如下参数或行为:已经通过-Xms和–Xmx 设置了内存大小包含了-server参数系统中没有超时日志等错误日志换... 阅读全文
posted @ 2015-10-18 01:55 ljdgm 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 下面我们看一下Apache的MaxClients参数在Full GC发生时是如何影响系统的。大部分开发人员都知道在由于GC发生而导致的”停止世界现象(STW) “(详细请参见Understanding Java Garbage Collection)。尤其是,NHN的Java开发人员经常会遇到由于G... 阅读全文
posted @ 2015-10-18 01:53 ljdgm 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 并不是每个程序都需要调优。如果一个程序性能表现和预期一样,你不必付出额外的精力去提高它的性能。然而,在程序调试完成之后,很难马上就满足它的性能需求,于是就有了调优这项工作。无论哪种编程语言,对应用程序进行调优都需要丰富的技术知识并且注意力高度集中。另外,你也不应该用相同的方式对两个程序调优,因为每个... 阅读全文
posted @ 2015-10-18 01:49 ljdgm 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 一、AOP技术起源AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析。他们研究出了一种新的编程思想,借助这一思想或许可以通过减少代码重复模块从而帮助开发人员提高工作效率。随着研究的逐渐深... 阅读全文
posted @ 2015-10-17 22:24 ljdgm 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 一、AOP的体系结构如下图所示:(引自AOP联盟)层次3语言和开发环境:基础是指待增加对象或者目标对象;切面通常包括对于基础的增加应用;配置是指AOP体系中提供的配置环境或者编织配置,通过该配置AOP将基础和切面结合起来,从而完成切面对目标对象的编织实现。层次2面向方面系统:配置模型,逻辑配置和AO... 阅读全文
posted @ 2015-10-17 22:23 ljdgm 阅读(3997) 评论(0) 推荐(1) 编辑
摘要: 动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。一.相关类及其方法:java.lang.reflect.Proxy,Proxy 提供用于创建动态代理... 阅读全文
posted @ 2015-10-17 22:21 ljdgm 阅读(453) 评论(0) 推荐(0) 编辑
摘要: JVM里面hashtable和hashmap实现原理文章分类:Java编程转载在hashtable和hashmap是java里面常见的容器类,是Java.uitl包下面的类,那么Hashtable和Hashmap是怎么实现hash键值对配对的呢,我们看看jdk里面的源码,分析下Hashtable的构... 阅读全文
posted @ 2015-10-17 22:07 ljdgm 阅读(287) 评论(0) 推荐(0) 编辑
摘要: spring beans下面有如下源文件包:org.springframework.beans, 包含了操作java bean的接口和类。org.springframework.beans.annotation, 支持包,提供对java 5注解处理bean样式的支持。org.springframew... 阅读全文
posted @ 2015-10-17 21:52 ljdgm 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 1.何谓Spring IOC 何谓Spring IOC?书上谓之“依赖注入”,那何谓“依赖注入”? 作为一个Java程序猿,应该遇到过这样的问题,当你在代码中需要使用某个类提供的功能时,你首先需要new一个对象,给它传递必要的参数,然后才能使用它提供的功能,最后释放对象占用的内存,当然了... 阅读全文
posted @ 2015-10-17 21:39 ljdgm 阅读(373) 评论(0) 推荐(0) 编辑
摘要: refresh这个方法包含了整个BeanFactory初始化的过程,定位资源由obtainFreshBeanFactory()来完成,[java]view plaincopyprotectedConfigurableListableBeanFactoryobtainFreshBeanFactory(... 阅读全文
posted @ 2015-10-17 21:37 ljdgm 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 1.IOC容器的依赖注入 Spring中,依赖注入是在用户第一次向IOC容器索要Bean时触发的(通过getBean方法)。在BeanFactory中我们看到getBean(String…)函数,它的具体实现在AbstractBeanFactory中:[java]view plaincopypubl... 阅读全文
posted @ 2015-10-17 21:01 ljdgm 阅读(292) 评论(0) 推荐(0) 编辑