MoDou Blog

Thinking will not overcome fear but action will.

徒手撸一个简单的RPC框架(2)——项目改造

徒手撸一个简单的RPC框架(2)——项目改造

徒手撸一个简单的RPC框架(2)——项目改造 在上一篇的徒手撸一个简单的RPC框架中再最后的服务器和客户端连接的时候只是简单的写了Socket连接,觉得有些不妥。正好最近学习了Netty,在平时工作中没机会运用,于是自己就给自己出需求将之前的项目改造一下。 Netty是什么? 在学习Netty之前呢我们首先得了解IO和NIO IO模型 IO编程模型简单来说就是上一篇我写的服...

工作半年遇到最奇葩的问题

工作半年遇到最奇葩的问题

工作半年遇到最奇葩的问题 背景 公司最近买了一套项目,在启动的时候出现了一系列奇怪的问题,对方的技术栈要求是Tomcat7启动,但是由于我们公司出于安全的考虑所以是要求用Tomcat9进行启动的。 问题描述 下面情况都是相同war包相同Tomcat情况下 系统 Tomcat版本 能否启动 ...

死磕Tomcat系列(1)——整体架构

死磕Tomcat系列(1)——整体架构

死磕Tomcat系列(1)——整体架构 在许多的高端开发的岗位中都会或多或少有要求面试人员要研究过一些常用中间件源码。这是因为一切的秘密都是藏在源码中,阅读源码能够让我们对框架或者中间件的理解更加深刻,而我们也能够在源码的研究中获得其中一些优秀的设计方式。而我们的中间件和源码那么多,我们该从何入手呢?其实大部分的中间件或者框架都有一些共性的部分,例如网络编程、多线程、反射和类加载等技术。所...

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参数可以指定服务器发送哪种类型的通知。下面对于一些参数的描述。默认情况下此功能是关闭的。 ...