MoDou Blog

Thinking will not overcome fear but action will.

NIO中和选择器Selector

NIO中和选择器Selector

NIO中选择器Selector 在上一篇的JAVA中NIO再深入我们学会了如何使用Buffer ,而在Java中IO和NIO中我们略微了解到Channel的概念,我们知道了Channel就像矿洞里的铁轨一样,Buffer就像铁轨上的矿车,对于数据真正的操作都是对于Buffer的操作。而在NIO中还有一个非常重要的概念就是Selector,它就像矿洞里的调度系统一样。 为什么要有Selec...

如何断点调试Tomcat源码

如何断点调试Tomcat源码

如何断点调试Tomcat源码 Tomcat作为一个老牌的一个Web容器框架,用途十分的广泛。无论是为了学习其框架的整体设计还是为了碰到问题更好的解决,作为程序员我们都应该对于Tomcat有一定的了解。而了解一个框架最好的办法就是看官方文档,但是有时候官方文档解答不了我们的问题,这时候就需要看源码了。 无论是使用编译器Idea还是Eclipse,或者是内嵌Tomcat的SpringBoot...

一次奇怪的StackOverflowError问题查找之旅

一次奇怪的StackOverflowError问题查找之旅

一次奇怪的StackOverflowError问题查找之旅 公司最近买了一套老代码,在测试环境部署的时候发生了nested exception is java.lang.StackOverflowError的异常,当时看到这个异常首先想到是栈内存溢出,网上给出的解决办法就是加栈内存大小就行。趁着这个机会也了解一下什么是Java虚拟机栈。 Java虚拟机栈 我们想要解决StackOver...

你不得不知道的数据库连接池的信息

你不得不知道的数据库连接池的信息

你不得不知道的数据库连接池的信息 数据库连接池是用来保持与数据库的连接,从而便于复用。 首先我们需要知道程序与数据库是一个非常耗费资源的事情,尤其是程序与数据库不在同一台机器上时,必须要开启网络的连接,以及双方的互相验证等等。如果没有连接池的话,那么每次查询都要进行连接、验证、关闭等操作,会非常的耗时耗力,连接池能够保持连接,从而避免了多次建立连接的损耗。 上图就是一个简单...

设计模式——模板方法模式

设计模式——模板方法模式

设计模式——模板方法模式 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类不改变算法结构即可冲定义该算法的某些特定步骤。 模板方法模式介绍 也许看定义有些懵逼,但是模板方法模式在设计模式中算是简单的了,仅仅使用了Java的继承机制。但是它的应用是非常广泛的。我们先举个简单的例子让大家对于模板方法模式有个直观的了解。 里面有两个角色 抽象模板角色:完成...

解决Redis集群条件下键空间通知服务器接收不到消息的问题

解决Redis集群条件下键空间通知服务器接收不到消息的问题

解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。 可以通过对redis的redis.conf文件中配置notify-keyspace-events参数可以指定服务器发送哪种类型的通知。下面对于一些参数的描述。默认情况下此功能是关闭的。 ...

解决Redis集群条件下键空间通知服务器接收不到消息的问题

解决Redis集群条件下键空间通知服务器接收不到消息的问题

解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。 可以通过对redis的redis.conf文件中配置notify-keyspace-events参数可以指定服务器发送哪种类型的通知。下面对于一些参数的描述。默认情况下此功能是关闭的。 ...

设计模式——责任链模式

设计模式——责任链模式

设计模式——责任链模式 使多个对象都有机会处理请求,从而避免了请求发送者和接受者的耦合关系。将这些对象连成一条链,并且沿着这条链传递该请求,直到有对象处理它为止。 从字面意思可以理解,责任链模式重点在链上。只要符合相应的处理逻辑的就进去处理,不然一直传递下去。 所以我们可以得出责任链的通用类图。重点在于每一个链节点的表示。所以需要先抽象出来一个链节点。 其实在程序设计...

设计模式——观察者模式

设计模式——观察者模式

设计模式——观察者模式 观察者模式又称之为发布-订阅模式:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并且被自动的更新。 在日常生活中我们也会碰到许多的观察者模式的例子。例如微信的订阅推送、听收音机、看直播、电脑中的文件系统。所以根据这些实际例子我们不难推导出其实在观察者模式中,我们可以分为观察者和被观察者两个角色。用类图表示如下 ...

设计模式——策略模式

设计模式——策略模式

设计模式——策略模式 定义一组算法,将每个算法都封装起来,并且使得他们之间可以相互替换。 先从一个小例子我们慢慢引出策略模式。例如我们经常初学Java的时候肯定想着做一个计算器,简单的加减乘除运算,现在我们只考虑简单的两个数字的加减。有非常多的实现方式,但是我们初学时脑海中第一浮现的应该是下面的代码。 class Calculator{ private fin...