`
zhangwei_david
  • 浏览: 476072 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
Spring 应用上下文支持基于事件的Bean间通信。在基于事件的通信模式中,事件的发送者不需要关系,事件的监听者。这样可以使消息的发送者和监听者进行解耦。在Spring中所有事件类必须继承自ApplicationEvent,这样任何bean都可以调用事件发布者的publishEvent()方法,发布一个事件。       public class MyEvent extends ApplicationEvent { /** */ private static final long serialVersionUID = 1L; /** * @param ...
     有一组优惠 A-20优惠, B-30元优惠, C-5元优惠  当用户满足条件时随机返回一个优惠;在活动预算一定的情况下需要保证C类优惠券中奖概率最高,B类优惠券最低;以下是权重的实现;              /** * Copyright 2014-2015, , Inc. All Rights Reserved. * * Date: 2016年1月23日 */ package org.demo.core; import java.util.ArrayList; import java.util.Collections; import j ...
    /** * Desc:TODO * * @author zhangwei<wei.zw@corp.netease.com> * @since 2016年1月14日 下午9:19:34 * @version v 0.1 */ public final class ClassEnhancedGenerator { private ClassEnhancedGenerator() { } /** * 类方法增强<BR> * * 对指定类的方法进行代码增强(将指定的原方法名改为$enhanced,同 ...

Git 常用命令

    博客分类:
  • git
    创建分支:david$ git branch test 查看本地分支: DaviddeMacBook-Pro:haitao-mobile david$ git branch * develop_new master test  切换分支 DaviddeMacBook-Pro:haitao-mobile david$ git checkout test M .gitignore Switched to branch 'test 删除本地分支 DaviddeMacBook-Pro:haitao-mobile david$ git branch ...
      我们在使用Spring MVC 是都有这样的经历,@ResponseBody返回一个JSON格式字符串到前端,或者使用@RequestBody获取前端REST提交的对象,那么Spring MVC 中是如何处理的呢?大体的流程如下:         在Spring Web中使用 jackson处理,具体实现类是MappingJackson2HttpMessageConverter. 具体的JSON系列化和反序列化都是有jackson实现的。下面主要介绍一下jackson的使用。      对日期进行JSON序列化: /** * * @author zhang ...
    TCP 粘包和拆包         TCP 是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上,一个完整的数据包可能会被TCP拆分为多个数据包进行发送,也有可能把多个小的数据包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。     粘包问题的解决策略          由于底层的TCP无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和重组,这个问题只能够通过上层的应用协议栈设计来解决;大致可以分为: 定长消息 在包尾增加分隔符进行分割 将消息分为消息头 ...

HashSet的实现

    博客分类:
  • Java
      HashSet在开发过程中是很长用的,我们很多时候都会借住其不能存储重复内容进行去重;可是很多时候,我们都忽略了其实现原理。如果没有HashSet我们应该使用什么去实现同样的功能呢?     我们看看源码,可以发现原来HashSet就是对HashMap的封装。 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVer ...
  ServiceServer实现自动发现服务: /** * * @author zhangwei * @version $Id: NettyServiceServer.java, v 0.1 2015年8月19日 下午2:08:37 $ */ public class NettyServiceServer implements InitializingBean, Lifecycle, ApplicationContextAware { /**服务端口号**/ private int port = 12000; ...
   RPC(Remote Procedure Call) 在介绍分布是RPC前首先介绍一个下JAVA中简单的RPC实现        服务器端,通过SocketServer,持续接收客户端的请求,并将客户端的请求分发到指定的处理器出去处理。        阻塞通线模型,是server对每一个请求都开启一条线程去执行请求,此种方式的缺点是服务器端线程的数量和客户端并发访问请求树呈1:1的正比关系。          此处对此作出了一定优化,伪异步IO通信,将所有用户请求放到线程池中处理。 /** * * @author zhangwei_david * @version ...

maven+tomcat7 热部署

      使用tomcat7+maven3 进行热部署,具体步骤如下:             第一步:安装tomcat7           第二步:配置tomcat 用户TOMCAT_HOME/conf/tomcat-users.xml            <tomcat-users> <role rolename="manager-gui" /> <role rolename="manager-script" /> <user username="tomcat& ...
       有时候在一个项目中为了清晰划分不同web模块需要配置多个web module 。如:   <modules> <!-- 主web应用 --> <module>cathy-web</module> <module>cathy-biz</module> <module>cathy-common-util</module> <module>cathy-common-intergration</module> <modul ...
    profile是Spring3.1提供的一个新的配置项,在下面的测试示例中,又有使用了多种AOP配置方式,为了将各种配置方式进行对比在此使用了profile.在测试用例中通过使用@ActiveProfiles("four")注解指定profile的值。   Aop 是Spring 框架的核心功能之一。     Advice 通知时定义在该连接点做什么,为切面增强提供织入接口。Advice是AOP联盟定义的一个接口,在Spring中对其进行了扩展,提供了更为具体的接口如:BeforeAdvice,AfterAdvice,ThrwosAdvice等。    P ...
    public class BeanDefinitionParserDelegate { public static final String BEANS_NAMESPACE_URI = "http://www.springframework.org/schema/beans"; public static final String MULTI_VALUE_ATTRIBUTE_DELIMITERS = ",; "; /** @deprecated as of Spring 3.1 in favor of {@link # ...
    在这里会介绍如下知识点: factory-method factory-bean lookup-method replace-method    factory-method     在Spring中如果对一个bean的创建使用工厂方法模式就可以使用factory-method /** * factory-method demo * @author zhangwei_david * @version $Id: FactoryMethodDemo.java, v 0.1 2015年7月8日 下午11:03:58 zhangwei_david Exp $ ...
     技术信号量(Counting Semaphore)用来控制同时访问某个特定资源的操作数量,或者执行某个特定操作的数量。计数信号量还可以用来实现某种资源池或者对容器加边界。   Semaphore中管理着一组虚拟许可(permit),许可的初始数量可以通过在构造方法中指定。在执行操作时首先获取许可(permit),在使用完成后释放许可。如果没有许可,那么acquire则一直阻塞到有许可或者超时中断。   /** * 计数信号量(Counting Semaphore)用来控制同时访问某个特定资源的操作数量,或者执行某个指定操作的数量。 * 计数信号量还可以用来实现某种资源池 ...
Global site tag (gtag.js) - Google Analytics