- 博客(76)
- 资源 (5)
- 收藏
- 关注
原创 段(Segment) 的控制策略
在建立索引的时候对性能影响最大的地方就是在将索引写入文件的时候, 所以在具体应用的时候就需要对此加以控制: Lucene默认情况是每加入10份文档(Document)就从内存往index文件写入并生成一个段(Segment) ,然后每10个段(Segment)就合并成一个段(Segment). 这些控制的变量如下: IndexWriter属性默认值描述Mer
2016-09-28 10:24:32
755
原创 远程debug Java程序
远程debug Java程序:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9990
2016-09-27 12:13:04
392
原创 U商城
1.树形结构存储多加一个字段存储该节点的路径path。例如:a节点下有b,b节点下有c,c节点下有d,那么的path为a|b|c好处:避免递归,可以直接用一个sql查出a的下级节点2.库存和积分校验的不同库存:详情页、购物车和订单每一处都查询最新库存给前台积分:购买积分商品时校验积分,后台校验只需要在最后下订单的时候校验就行,详情页、购物车只需要前台校验 即可。
2016-05-13 09:19:16
612
原创 自定义模块
自定义模块的创建步骤(示例中coreapp为 testzymodel1,modelapp为zymodule1)1.play new coreapp 2.play new-module modelapp 3.在modelapp中增加任意代码,代码结构等同play的应用程序,如 4.在coreapp的dependencies.yml中增加如下配置- model
2016-02-02 16:41:59
520
原创 hadoop的特点
扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行(parallel)处理它们,这使得处理非常的快速。可靠性(Relia
2016-01-04 13:16:53
837
原创 HDFS的架构和MapReduce的架构
HDFS的架构主从结构•主节点,只有一个:namenode•从节点,有很多个:datanodesnamenode负责:•接收用户操作请求•维护文件系统的目录结构•管理文件与block之间关系,block与datanode之间关系datanode负责:•存储文件•文件被分成block存储在磁盘上•为保证数据安全,文件会有多个副本MapR
2016-01-04 13:14:25
496
原创 SpringMVC与Struts2的区别
①. Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter ②. Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基于方法设计, 而 Sturts2 是基于类, 每次发一次请求都会实例一个 Action.③. Spring MVC 使用更加简洁, 开发效率Spring MVC确实比 struts2 高: 支持 JSR303,
2015-12-21 14:06:04
284
原创 SpringMVC内容概要
SpringMVC 概述 SpringMVC 的 HelloWorld 使用 @RequestMapping 映射请求映射请求参数 & 请求头处理模型数据 视图和视图解析器RESTful CRUDSpringMVC 表单标签 &处理静态资源数据转换 & 数据格式化 & 数据校验处理 JSON:使用 HttpMessageConverter 国际化文件的上传使用拦截器异常处理SpringMVC 运行
2015-12-21 14:00:51
347
原创 代理模式(Proxy Pattern)
定义为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。优点:1)代理模式能将代理对象与真正被调用的对象分离,在一定程度上降低了系统的耦合度。2)代理模式在客户端和目标对象之间起到一个
2015-11-19 08:55:27
437
原创 设计模式六大原则
1. 单一职责原则(Single Responsibility Principle)详情请参考:http://blog.csdn.net/zhengzhb/article/details/72781742. 里氏替换原则(Liskov Substitution Principle)里氏替换原则的内容可以描述为: “派生类(子类)对象能够替换其基类(超类)对象被使用。”
2015-11-18 14:03:31
319
转载 设计模式中类的关系
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。1. 依赖(Dependence) 依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直
2015-11-18 12:03:43
231
原创 状态模式(State Pattern)
状态模式(State Pattern)是设计模式的一种,属于行为模式。定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 意图:允许一个对象在其内部状态改变时改变它的行为
2015-11-18 11:58:18
317
原创 组合模式(Composite Pattern)
定义将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。优点:1. 组合模式可以很容易的增加新的构件。2. 使用组合模式可以使客户端变的很容易设计,因为客户端可以对组合和叶节点一视同仁。缺点:1. 使用组合模式后,控制树枝构件的类型不太容易。2. 用继承的方法来增加新的行为很困难。
2015-11-17 16:02:07
456
原创 迭代器模式(游标(Cursor)模式)
定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。迭代器模式(Iterator Pattern)依赖于一个名为迭代器的接口。一旦有了这个接口,就可以为各种对象集合实现迭代器:数组、列表、散列表……设计原则:一个类应该只有一个引起变化的原因。优点简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,我们尚可以通过游
2015-11-17 15:17:18
1948
原创 模板方法模式 Template Method
概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。 把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。优点:1)模板方法
2015-11-17 14:27:48
402
原创 编程式使用IoC容器过程
-----------------------------------------------------------------------------------------------------------------ClassPathResource res = new ClassPathResource("beans.xml");DefaultListableBeanFacto
2015-11-17 14:04:16
503
原创 spring中bean的创建
问题 1 : Bean 的创建时机bean 是在什么时候被创建的,有哪些规则?容器初始化的时候会预先对单例和非延迟加载的对象进行预先初始化。其他的都是延迟加载是在第一次调用getBean 的时候被创建。从 DefaultListableBeanFactory 的 preInstantiateSingletons 里可以看到这个规则的实现。问题二:Bean 的创建过程对于 b
2015-11-17 13:51:57
559
原创 IoC容器的初始化过程
1、BeanDefiniition的Resource定位BeanDefinition的资源定位由ResourceLoader通过统一的Resource接口来完成,这个Resource对各种形式的BeanDefinition的使用提供了统一接口。对于这些BeanDefinition的存在形式,相信大家都不会感到陌生。比如说,在文件系统中的Bean定义信息可以使用FileSystemResourc
2015-11-17 13:26:51
2418
1
原创 外观模式(Facade Pattern)或门面模式
Facade模式概述 实际应用中,我们在对付一些老旧的code(尤其是将C的代码转成C++代码)或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码(对于老旧code而言),我们还可能采用这样一种策略:重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用。 这在某种意义上与Adapter及Proxy有类似之处,
2015-11-16 10:02:19
283
原创 适配器(Adapter)模式
定义将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。优点1、将目标类和适配者类解耦2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性3、灵活性和扩展性都非常好,符合开闭原则类适配器还有的优点:1、由于适配器类是
2015-11-16 09:49:22
285
原创 单例模式(Singleton Pattern)
定义:单件模式确保一个类只有一个实例,并提供一个全局访问点。单件模式常常被用来管理共享的资源,例如数据库连接或者线程池。主要优点:1、提供了对唯一实例的受控访问。2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。主要缺点:1、由于单利模式中没有抽象层,因此单例类的扩展有很大的
2015-11-16 09:30:11
253
原创 抽象工厂模式
优点:1、抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。2、当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。3、增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。 缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。
2015-11-16 09:29:27
269
原创 工厂方法模式
工厂方法模式,英文Factory method pattern,工厂方法模式是简单工厂模式的进化版,工厂方法模式是定义一个创建产品对象的工厂接口,工厂接口本身不去创建对象,而是交给其子类或者是其实现类去创建,将实际创建工作推迟到子类中进行详情请参考:http://www.cnblogs.com/zhangchenliang/p/3700820.html代码请参考:http://
2015-11-16 09:29:01
220
原创 简单工厂模式
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创
2015-11-16 09:28:34
282
原创 装饰器模式(Decorator)
设计原则1、类应该对扩展开发,对修改关闭。特点:1、装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。2、装饰对象包含一个真实对象的引用(reference)。3、装饰对象接收所有来自客户端的请求,它把这些请求转发给真实的对象。4、装饰对象可以在转发这些请求之前或之后附加一些功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外
2015-11-16 09:27:49
271
原创 观察者模式
设计原则1、为了交互对象之间的松耦合设计而努力。优点:1、当两个对象之间送耦合,他们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间送耦合。主题所知道只是一个具体的观察者列表,每一个具体观察者都符合一个抽象观察者的接口。主题并不认识任何一个具体的观察者,它只知道他们都有一个共同的接口。2、观察者模式支持“广播通信”。主题会向所有
2015-11-16 09:27:13
473
原创 策略模式(Strategy Pattern)
设计原则1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2、针对接口编程(实际上是针对超类编程),而不是针对实现编程。3、多用组合,少用继承。优点:1.利用组合、委托和多态等技术和思想,可以有效地避免多重条件选择语句2、提供了对开放—封闭原则的完美支持,将算法封装在独立的strategy中,使得它们易于切换,易于理解,易于扩展
2015-11-16 09:09:53
244
原创 命令模式
优点1、命令模式的封装性很好:每个命令都被封装起来,对于客户端来说,需要什么功能就去调用相应的命令,而无需知道命令具体是怎么执行的。比如有一组文件操作的命令:新建文件、复制文件、删除文件。如果把这三个操作都封装成一个命令类,客户端只需要知道有这三个命令类即可,至于命令类中封装好的逻辑,客户端则无需知道。2、命令模式的扩展性很好,在命令模式中,在接收者类中一般会对操作进行最基本的封装
2015-11-16 08:47:08
275
原创 JAR文件中的META-INF文件夹
根据官方的JAR file specification(), 一个典型的META-INF目录下可能包含如下几种文件或者子目录: MANIFEST.MFINDEX.LISTx.SFx.DSAservices/META-INF 存在程序入口相关信息, 每个jar 都会有这个文件夹,里面的 MANIFEST文件 记录这些信息WEB-INF 使用web 项目
2015-11-13 13:07:41
6285
原创 play framework中plugins和enhancers
play.pluginsplay.CorePluginplay.data.parsing.TempFilePluginplay.data.validation.ValidationPluginplay.db.DBPluginplay.db.jpa.JPAPluginplay.db.Evolutionsplay.i18n.MessagesPluginplay.libs
2015-11-13 11:45:59
1036
原创 Java 热部署
何为热部署(hotswap)热部署是在不重启 Java 虚拟机的前提下,能自动侦测到 class 文件的变化,更新运行时 class 的行为。Java 类是通过 Java 虚拟机加载的,某个类的 class 文件在被 classloader 加载后,会生成对应的 Class 对象,之后就可以创建该类的实例。默认的虚拟机行为只会在启动时加载类,如果后期有一个类需要更新的话,单纯替换编译的 c
2015-11-13 11:23:12
1194
原创 秒杀系统架构设计
技术挑战1. 对原有业务形成冲击秒杀活动只是网站营销的一个附加活动,特点是:时间短、并发访问量大,如果和网站原有应用部署在一起,必然会对现有业务造成冲击。 解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离。2. 高并发下数据库、应用负载用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连
2015-11-13 10:14:49
3344
1
原创 mysql select in 按照in后面id的顺序读取数据
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')这样读取出来的顺序为 1
2015-11-10 13:13:19
3109
原创 轻松实现线程生命周期内的Session管理
/** * 借助Servlet2.3规范中新引入的Filter机制,轻松实现线程生命周期内的Session管理(关于Filter的具体描述,请参考Servlet2.3规范)。 * Filter的生命周期贯穿了其所覆盖的Servlet(JSP也可以看作是一种特殊的Servlet)及其底层对象。 * Filter在Servlet被调用之前执行,在Servlet调用结束之后结束。因此,在Filte
2015-11-06 10:38:22
462
原创 系统负载能力
一. 衡量指标用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxConnection为无限大,但是受限于服务器系统或者硬件限制,很多请求是不会在一定的时间内得到响应的,这并不作为一个成功的请求,其中成功得到响应的请求数即为每秒请求数,反应出系统的负载能力。
2015-11-06 09:48:57
540
原创 connection、HttpSession、hibernate中的session、transaction
connection和HttpSession的区别session(会话)和connection(连接)的定义:connection:是一个物理的概念,它指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或共享服务器(Shared Server)的一个网络连接,既是一条物理路劲。session:是一个逻辑的概念,它是存在于实例中,一个连接可以拥有多
2015-11-05 21:37:23
840
原创 where和having的区别
1、where是在分组前进行过滤,having是在分组后进行过滤2、where子句中不能有分组函数,having可以group by要点:group by子句中的字段可以不出现在select字句中如果使用了分组函数,或使用group by的查询:出现在select子句中的字段,要么出现在组合函数中,要么出现在 group by子句中
2015-11-02 21:21:51
263
原创 数据库三范式
1、必须要有主键,并且每个属性值都是不可再分的最小数据单元2、关系模型中的所有非主属性都完全依赖于主键3、非主关键字不能依赖于其他非主关键字,即非主关键字之间不能有函数(传递)依赖关系
2015-11-02 21:14:37
214
原创 OpenSessionInView的优缺点
优点:1、事务边界控制 2、懒加载缺点:事务和Session存在时间延长,对系统并发性有严重影响 如果Session长时间打开,会长时间占用内存和数据库连接
2015-11-02 20:22:24
712
各种各样的java API
2013-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人