自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Netty框架学习之路(五)—— EventLoop及事件循环机制

在前面的博文中,我们大致分析了解了Channel及其相关概念。在Netty的线程模型中,每个channel都有唯一的一个eventLoop与之相绑定,那么在这篇博文中我们来看一下EvenLoop及其相关概念。在传统的Java NIO编程中,我们经常使用到如下代码: public static void main(String[] args) { try { ...

2018-03-30 00:22:48 8125 2

原创 重学设计模式(七)—— 责任链模式

笔者最近在研究SpringMVC的请求处理过程,发现请求拦截器的处理过程就是责任链模式的很好体现,一环扣一环,异常就退出,无需后继处理。 责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动...

2018-03-27 00:48:22 218

原创 SpringMVC请求处理过程浅析

上图完整描绘了SpringMVC的请求处理过程,可以看到,此过程都是以DispatcherServlet为中轴线进行的,而具体的处理逻辑在DispatcherServlet的doDispatch方法中,protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exce...

2018-03-27 00:12:20 308

原创 重学设计模式(六)—— 观察者模式

前言生活中我们经常使用手机订阅功能,用来订阅一些我们感兴趣的东西,比如体育赛况、股票行情等等。每当这些订阅的事务有重大变化发生时,我们都能收到相关通知信息,当然我们也能对失去兴趣的事情取消订阅,这样我们便不会收到相关推送了。这就是Observer观察者模式的一种典型应用场景。Observer观察者模式在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自...

2018-03-25 16:44:10 200

原创 重学设计模式(五)—— 装饰器、适配器、门面和代理

Decorator装饰器模式装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。java IO 流是装饰模式一个典型的应用场景。举个生活中的例子,饮品店的饮料价格由原料(咖啡、茶……)价格和配料(糖、奶泡……)价格组成,我们是计算价格的呢?如果为每一种组合创建一个类,显然不现实。但是如果我们把每一种饮品...

2018-03-25 14:43:15 728

原创 SpringMVC启动过程浅析

ContextLoaderListener初始化ContextLoaderListener的作用就是启动web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener接口,当web容器启动时,会触发ServletContextListener的contextInitialized方法。public interface Se...

2018-03-25 01:47:32 2161

原创 Netty框架学习之路(四)—— Channel及相关概念

在Netty框架中,Channel是其中之一的核心概念,是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。本文我们来详细地分析 Netty 中的 Channel以及跟Channel相关的其他概念,包括ChannelPipeline、ChannelHandlerContext、ChannelHandler等。Channel的抽象类AbstractChannel有一如下...

2018-03-22 23:43:05 30361

原创 重学设计模式(四)—— 原型模式

前言Prototype原型模式是一种创建型设计模式,它允许一个对象再创建另外一个可定制的对象。 Java Object中已经提供了一个Clone( )方法,但是要实现原型模式,必须实现Cloneable接口,使用Cloneable接口都不用导入包。克隆一个对象有两种方式:浅克隆:copy该对象,然后保留该对象原有的引用。也就是说不克隆该对象的属性。深克隆:copy该对象,并且...

2018-03-17 21:17:09 141

原创 Netty框架学习之路(三)—— 初识Netty线程模型

前言笔者认为单独讨论Netty的线程模型太抽象,如果能在现实生活中找到一样事物作为类比,那肯定能帮助我们提升对Netty的认识。笔者曾经利用大学毕业和入职报到的空窗期去餐厅打工体验生活,感想此处不表。餐厅里面有一个司空见惯的现象,一般服务员的数量都会少于餐桌的数量,也就是说,在用餐高峰时期,一个服务员在同一时刻可能会招待不止一桌的客人,这是怎么做到的呢?Netty线程模型首先,...

2018-03-14 23:23:38 1029 1

原创 重学设计模式(三)—— 构造器模式

在实际开发过程中,我们一般通过构造方法将参数传入一般的实体类,而且实体类的构造方法可能不止一个,当参数个数过多时,伴随而来的是构造方法数量的上升,过多的构造方法参数往往给用户带来一种不明就里的感觉。构造器模式的出现很好的解决了多参数初始化的问题。假设我们需要编写一个Student类,此类含有四个属性,代码如下:public class Student { private Strin...

2018-03-14 00:20:43 190

原创 Netty框架学习之路(二)—— 一个简单的Netty程序

前言上一篇博文中主要介绍了三种IO模式,Netty是一个高性能、异步事件驱动的Java NIO框架,本文以一个简单的Netty程序带领大家先来领略一下Netty的风采,程序的功能主要是获取当前的服务器时间。客户端TimeClient.javapublic class TimeClient { public void connect(int port, String...

2018-03-13 23:39:46 1059 2

原创 重学设计模式(二)—— 单例模式

单例模式,顾名思义,就是确保一个类只有一个实例,并提供一个全局访问点。public class BasicSingleton { private static BasicSingleton instance; private BasicSingleton(){} public static BasicSingleton getInstance(){ ...

2018-03-09 01:05:37 183

原创 重学设计模式(一)—— 简单工厂、工厂方法、抽象工厂

前言谈起模式一词,很多情况下笔者都认为是一个偏向贬义的词汇,代表着冥顽不灵,一成不变。细数这些年开发过程中走过的弯路后,笔者觉得设计模式真是个好东西。时代发展如此之快,我们不可能设计出一个完美的系统,但是我们可以参考一些过去的经验,少走弯路,在系统的健壮性、可扩展性上多做思考,这绝对有益于我们的系统。为此,笔者抽时间重新学习了一下设计模式,此系列文章算是学习心得吧。简单工厂简单工厂模式...

2018-03-08 23:44:51 205

原创 如何编写一份优雅的Spring配置文件

前言众所周知,Spring最大的特点就是控制反转,而实现控制反转就是通过那一系列的配置文件。平时笔者在开发过程中也写过不少XML配置文件,但大部分都是基于现有的配置文件稍作修改,很多标签内容只能做到“知其然却不知其所以然”,而有很多标签根本不知其然,所以便抽时间认真学习一下相关内容,希望能够编写一份优雅的Spring配置文件。声明随便打开一份Spring工程的配置文件,第一行基本上...

2018-03-07 23:42:35 5712 1

原创 Netty框架学习之路(一)—— Java网络IO模型

前言《Unix网络编程:卷1》中介绍了5中IO模型,JAVA作为运行在宿主机上的程序,底层也遵循这5中I/O模型规则。这5中I/O模型分别是:阻塞式IO非阻塞式IOI/O复用信号驱动式IO异步IO 按POSIX标准来分,IO分为同步和异步,上面的前4钟都属于同步IO。在Unix系统中,操作系统的IO操作是一个系统调用recvfrom(),即一个系统调用recvfrom包...

2018-03-03 23:27:55 2567 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除