MoDou Blog

Thinking will not overcome fear but action will.

如何自己手写一个热加载

如何自己手写一个热加载

如何自己手写一个热加载 热加载:在不停止程序运行的情况下,对类(对象)的动态替换 Java ClassLoader 简述 Java中的类从被加载到内存中到卸载出内存为止,一共经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。 接下来我们重点讲解加载和初始化这两步 加载 在加载的阶段,虚拟机需要完成以下三件事: 通过一个类的全限定名来获取定义此类的二进...

死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的

死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的

死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的 热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。 通常情况下在开发环境中我们使用的是热加载,因为热加载的实现的方式在Web容器中启动一个后台线程,定期检测相关文件的变化,如果有变化就重新加载类,这个过程不会清空Session。而在生产环境我们一般应用的是热部署,热部署也是...

关于Redis热点key的一些思考

关于Redis热点key的一些思考

关于Redis热点key的一些思考 昨天在和一个已经跳槽的同事聊天时,询问他这段时间面试时碰到的一些问题。自己也想积累一下这方面的知识。其中他说了在面试某赞公司时面试官问他关于热点Key的的解决方案。于是针对这次谈话以及上网查的一些资料后的思考进行一下总结。方便后续自己查阅。 什么是热点Key 其实对于热点Key,网上一查一大堆,这里我就引用网上的一段话。 从基于用户消费的数据远远大...

死磕Tomcat系列(5)——容器

死磕Tomcat系列(5)——容器

死磕Tomcat系列(5)——容器 回顾 在死磕Tomcat系列(1)——整体架构中我们简单介绍了容器的概念,并且说了在容器中所有子容器的父接口是Container。在死磕Tomcat系列(2)——EndPoint源码解析中,我们知道了连接器将请求过来的数据解析成Tomcat需要的ServletRequest对象给容器。那么容器又是如何将这个对象准确的分到到对应的请求上去的呢? 容器的...

死磕Tomcat系列(4)——Tomcat中的类加载器

死磕Tomcat系列(4)——Tomcat中的类加载器

死磕Tomcat系列(4)——Tomcat中的类加载器 在学习Tomcat中的类加载器,并且Tomcat为什么要实现自己的类加载器打破双亲委派模型原因之前,我们首先需要知道Java中定义的类加载器是什么,双亲委派模型是什么。 Java中的类加载器 类加载器负责在程序运行时将java文件动态加载到JVM中 从Java虚拟机的角度来讲的话,存在两种不同的类加载器: 启动类...

死磕Tomcat系列(3)——Tomcat如何做到一键式启停的

死磕Tomcat系列(3)——Tomcat如何做到一键式启停的

死磕Tomcat系列(3)——Tomcat如何做到一键式启停的 在没有SpringBoot内嵌有Tomcat之前,我们都是将项目打为War包放在Tomcat的webapp目录下面,然后如果是Linux系统,运行命令start.sh、如果是Windows系统,运行命令start.bat以后就能启动起来并访问到页面。如果是想要停止运行只需要运行shutdown.sh或者shutdown.bat...

死磕Tomcat系列(2)——EndPoint源码解析

死磕Tomcat系列(2)——EndPoint源码解析

死磕Tomcat系列(2)——EndPoint源码解析 在上一节中我们描述了Tomcat的整体架构,我们知道了Tomcat分为两个大组件,一个连接器和一个容器。而我们这次要讲的EndPoint的组件就是属于连接器里面的。它是一个通信的端点,就是负责对外实现TCP/IP协议。EndPoint是个接口,它的具体实现类就是AbstractEndpoint,而AbstractEndpoint具体的...

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