自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 Netty 入门

​ Netty 中所有的 I/O 操作都是异步的,即操作不会立即得到返回结果,所以 Netty 中定义了一个 ChannelFuture 对象作为这个异步操作的“代言人”,表示异步操作本身。​ Bootstrap 是客户端的引导类,Bootstrap 在调用 bind()(连接UDP)和 connect()(连接TCP)方法时,会新创建一个 Channel,仅创建一个单独的、没有父 Channel 的 Channel 来实现所有的网络交换。Worker线程通常是一个线程池,可以处理多个客户端的连接请求。

2024-05-31 09:21:16 763

原创 一文搞懂RabbitMQ

RabbitMQ是一个开源的消息中间件,它实现了高级消息队列协议(AMQP),用于在不同的应用程序之间进行异步通信,一文搞懂

2024-05-31 09:17:10 1014

原创 Docker 部署Java程序以及常用命令详解

在执行 docker pull 命令时,Docker 客户端会首先检查本地是否有该镜像,如果没有,它会从配置的镜像仓库(默认为 Docker Hub)下载镜像到本地。简单来说,Docker port命令可以帮助我们查看容器内部的端口是如何映射到宿主机的端口的,从而使得我们可以从外部访问容器中运行的应用程序。但请注意,这并不会导出容器的配置(如环境变量、卷挂载等),因此新创建的容器可能需要额外的配置才能与原始容器具有相同的行为。docker ps 是 Docker 的一个命令,用于列出当前正在运行的容器。

2024-04-19 16:59:32 1775 1

原创 Redis 核心面试题归纳

Redis 面试题,涉及到AOF,RDB,主从同步等

2024-03-06 18:17:41 554

原创 TCP/IP 三次握手&四次挥手详解,以及异常状态分析

确认客户端与服务器之间都有收发功能。如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,

2024-02-20 16:03:24 1841

原创 Redis 核心原理

Redis 核心原理Redis 数据结构1. 动态字符串 SDS我们都知道Redis中保存的key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构Redis没有直接使用C语言中的字符串,因为C语言字符串中存在很多问题获取字符串长度需要通过运算非二进制安全不可修改Redis 构建了一种新的字符串结构,称为 简单动态字符串,简称SDS​ ·本质是一个结构体,源码如下:struct __attribute__((__packed__)) sd

2022-05-11 17:42:52 1620

原创 Redis 高级总结

文章目录Redis 持久化1. RDB2. AOF3. AOF 和 RDB 对比Redis 主从集群结构准备实例和配置启动开启主从关系测试数据同步原理搭建哨兵集群集群结构准备实例和配置启动测试哨兵的作用SpringBoot 访问哨兵集群搭建分片集群集群结构准备实例和配置启动创建集群测试散列插槽集群伸缩故障转移SpringBoot 访问分片集群Redis 键值设计优雅的 key 结构拒绝 BigKey批处理优化集群下的批处理服务端优化持久化配置:慢查询:内存配置集群还是主从Redis 持久化1. RDB

2022-05-11 17:17:36 1524

原创 MySQL高级总结

文章目录MySQL 高级1、MySQL架构介绍2、MyISAM 和 InnoDB 对比InnoDBMyISAM3. 索引的数据结构索引的本质优点缺点B+ 树B 树B 树 和B+ 树的对比索引分类4、三大范式5、关于优化索引失效关联查询优化子查询优化排序优化索引覆盖前缀索引索引下推6、事务基础7、MySQL 事务日志redo logundo logundo log 的刷盘策略8、锁表锁行锁页锁锁结构9、多版本并发控制快照读当前读Undo Log 版本链ReadViewMVCC整体操作流程10、其他日志MyS

2022-05-02 15:26:51 1593 1

原创 HashMap 源码分析与常见面试题

HashMap 源码分析jdk 1.7jdk 1.7 中的 HashMap 采用的是数组 + 链表的方式来进行数据的存储,链表采用的是头插法。下面对各个源码中的各个核心方法进行对比内部常量public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable{ // HashMap 默认大小 16 static fin

2022-03-30 11:29:12 374

原创 SpringMVC 从初始化 到 doDispatch 底层源码分析

文章目录SpringMVC 初始化Servlet 接口GenericServlet 抽象类HttpServlet 抽象类HttpServletBean 抽象类FrameworkServlet 抽象类DispatcherServlet 类中央调度器核心方法 doDispatch请求处理源码分析SpringMVC流程组件说明:核心架构的具体流程步骤如下:总体流程图SpringMVC 初始化首先来看继承树Servlet 接口首先来看最核心的 Servlet 接口,以及相关定义的方法public int

2022-03-28 20:58:45 233

原创 Spring 核心方法 Refresh 源码和三级缓存分析,以及手写一个IOC容器

文章目录1. refresh方法1.prepareRefresh 方法2. obtainFreshBeanFactory 方法3. prepareBeanFactory4. postProcessBeanFactory 方法5.invokeBeanFactoryPostProcessors 方法6. 监听器、广播、国际化方法7. finishBeanFactoryInitialization 方法2. 自定义一个简单的IOC容器3. 循环依赖问题1. Bean对象创建过程2.循环依赖问题分析3. 三级缓存4

2022-03-25 17:07:04 1140

原创 Java 类加载机制(从源码来看双亲委派机制)

Java 类加载机制1、类加载过程class ----> loading (加载)----> linking(校验、准备、解析) ----> initializing(初始化)----> GCLinking 中被分为了 verification、preparation、resolution 三个部分loading:将字节码文件加载到内存中去link:​ verification:校验,验证class 字节码文件是否符合class文件的标准​ preparation:

2022-03-07 16:14:11 246

原创 Java抽象队列同步器源码分析(AQS)

文章目录AQS1. AQS 概述2. AQS 的数据结构3. 资源共享模式4. AQS 的主要源码解析4.1 获取资源4.2 释放资源深入理解 synchronized 关键字(关于对象头和锁的升级)深入理解 volatile 关键字(内存屏障和指令重排问题)AQS1. AQS 概述AQS是 AbstractQueuedSynchronizer 的简称,即 抽象队列同步器 ,从字⾯意思上理解:抽象:抽象类,只实现⼀些主要逻辑,有些⽅法由⼦类实现;队列:使⽤先进先出(FIFO)队列存储数据;

2022-03-06 15:11:12 634

原创 Java线程池原理及其执行过程源码分析

文章目录Java线程池原理及其执行过程源码分析1. 为什么要使用线程池2. 线程池的原理2.1 ThreadPoolExecutor 的构造方法2.2 ThreadPoolExecutor的策略2.3 线程池主要的任务处理流程2.4 ThreadPoolExecutor如何做到线程复⽤的?3. 四种常见线程池3.1 newCachedThreadPool3.2 newFixedThreadPool3.3 newSingleThreadExecutor3.4 newScheduledThreadPoolJa

2022-03-06 15:09:47 744

原创 深入理解 synchronized 关键字(关于对象头和锁的升级)

文章目录synchronized 关键字1. 概述2. synchronized 的四种锁状态2.1 Java对象头2.2 偏向锁2.3 轻量级锁2.4 重量级锁2.5 总结锁的升级流程2.6 各个锁的优缺点对比深入理解 volatile 关键字synchronized 关键字1. 概述⾸先需要明确的⼀点是:Java多线程的锁都是基于对象的,Java中的每⼀个对象都可以作为⼀个锁。还有⼀点需要注意的是,我们常听到的类锁其实也是对象锁。Java类只有⼀个Class对象(可以有多个实例对象,多个实例共

2022-03-05 15:21:13 397

原创 深入理解 volatile 关键字(理解内存屏障与指令重排)

文章目录一、volatile 关键字1. 几个基本概念1.1 内存可见性1.2 指令重排序1.3 happens-before 规则2. volatile 的效果2.1 内存可见性2.2 内存屏障3. volatile 的用途3.1 单例模式双重检查锁一、volatile 关键字1. 几个基本概念1.1 内存可见性我们都知道,在Java内存模型中,JMM 中有一个内存,每个线程有自己独立的内存空间,线程的私有内存中包含了对内存中的变量的拷贝。内存可见性就是指当两个线程的私有内存中有对内存中同一个变

2022-03-05 14:44:16 614

原创 Java垃圾回收算法以及垃圾回收器

文章目录前言JVM 内存区域如何识别垃圾引用计数法可达性算法虚拟机栈(栈帧中的本地变量表)中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中 JNI 引用的对象垃圾回收主要方法标记清除算法复制算法标记整理法分代收集算法分代收集工作原理垃圾收集器种类新生代收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器老年代收集器Serial Old 收集器Parallel Old 收集器CMS 收集器G1(Garbage First) 收集器总结前言Jav

2022-02-28 21:11:16 411

原创 JVM调优实战

* JVM 参数简介* 发生 OOM 的主要几种场景及相应解决方案* OOM 问题排查的一些常用工具* GC 日志格式怎么看* jstat 与可视化 APM 工具构建* 再谈 JVM 参数设置

2022-02-28 21:04:19 238

原创 Java 集合源码分析

Java集合文章目录Java集合前置知识Lamdba表达式Lamdba表达式 方法的引用函数式接口简介Iterable 接口Iterator\ iterator() 方法void forEach(Consumer<? super T> action) 方法Spliterator\ spliterator() 方法Collection 接口ArrayListVectorLinkedList 类StackHashSetTreeSetLinkedHashSet 类PriorityQueueHashM

2022-02-15 15:30:31 497

原创 SpringBoot 高级特性

SpringBoot 高级特性以及SpringBoot的整个执行流程

2021-12-02 16:05:47 1134

原创 SpringBoot 数据层分析

文章目录一、SQL1. 数据源的自动配置1.1 导入 JDBC 场景1.2 分析自动配置1.2.1 自动配置的类1.3 修改配置项1.4 测试2. 使用 Druid 数据源2.1 druid 官方地址:2.2 自定义方式1. 创建数据源2. StatViewServlet3. StatFilter2.3 使用官方starter方式1. 引入druid-starter2. 分析自动配置一、SQL1. 数据源的自动配置1.1 导入 JDBC 场景 <dependency>

2021-12-01 16:00:12 406

原创 SpringBoot Web源码分析(七) 嵌入式服务器和定制化原理

文章目录1.9 嵌入式Servlet 服务器1.9.1 切换嵌入式Servlet容器1. 默认支持的webServer2. 切换服务器3. 原理1.9.2 定制 Servlet 容器1. 步骤1.10.1 SpringBoot 定制化原理1. 定制化常见方式2. 原理分析套路1.9 嵌入式Servlet 服务器1.9.1 切换嵌入式Servlet容器1. 默认支持的webServer○ Tomcat, Jetty, or Undertow○ ServletWebServerApplicationC

2021-11-28 15:03:25 382

原创 SpringBoot Web源码分析(六) 异常处理和Servlet组件

文章目录1.7 异常处理1.7.1 错误处理1. 默认规则2. 定制错误处理逻辑3. 异常处理自动配置原理4.总结:异常处理步骤流程1.8 Web原生组件注入(Servlet、Filter、Listener)1.8.1 基本步骤1. 使用 Servlet API2. RegistrationBean 方式1.8.2 分析:DispatchServlet 如何注册进来1.7 异常处理1.7.1 错误处理1. 默认规则默认情况下,Spring Boot提供/error处理所有错误的映射对于机器

2021-11-28 15:00:47 436

原创 SpringBoot Web源码分析(五),拦截器和文件上传

文章目录1.5 拦截器1.5.1 拦截器基本用法1. 声明一个自己的拦截器,实现 HandlerInterceptor 接口。2. 将这个拦截器注册到容器中1.5.1 拦截器源码分析1. 根据当前请求,找到 HandlerExecutionChain2. 顺序执行所有拦截器的preHandler 方法3. 如果任何一个拦截器都返回 false,直接不执行目标方法4. 所有拦截器都返回 true,执行目标方法5. 执行PostHandler方法6. 异常直接触发afterCompletion7. 页面渲染完成

2021-11-28 14:57:34 1441

原创 Vue3.0(代号:One Piece)

文章目录Vuex 简介Vuex 简介根据官方的定义:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。...

2021-11-27 17:56:55 5948

原创 SpringBoot We源码分析(四) 视图解析器源码分析

1.4 视图解析与模板引擎视图解析:SpringBoot 默认不支持 jsp,需要引入第三方模块技术实现页面渲染1.4.1 视图解析1.4.2 模板引擎-Thymeleaf1. 简介Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even pl

2021-11-25 21:27:24 452

原创 SpringBoot Web源码分析(三) 响应处理源码分析

1.3 响应处理1.3.1 响应 JSON相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>web场景自动引入了json场景 <dependency> <g

2021-11-25 21:24:37 591

原创 SpringBoot Web源码分析(二) 请求处理源码分析

1.2 请求处理1.2.1 请求参数处理1. 请求映射xxxMappingRest 风格(使用Http请求的方式动词来表示对资源的操作)以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户现在:/user get获取 Delete 删除用户 PUT 修改用户 POST 保存用户核心 Filter HiddenHttpMethodFilter开启这个过滤器 mvc: hid

2021-11-25 21:20:26 1181 1

原创 SpringBoot Web源码分析(一) 静态资源源码分析

一、 静态资源访问1. 静态资源目录只要放在类路径下:called /static(or /public or /resources or /META-INF/resources)访问当前项目路径/ + 静态资源名,只需要写静态资源名就能访问,springboot原理:/**收到请求后先去匹配 controller,如果不能处理就去交给静态资源处理器。改变默认的静态资源位置 web: resources: static-locations: classpath:/pat

2021-11-25 21:18:08 924

原创 SSM 纯注解整合(零 xml 文件)底层源码角度分析

SSM 纯注解整合源码分析1. 概述在学习完 SSM 后,相信大家都对 SSM 整合中大量配置文件感到非常恼火,特别是在写一些配置文件时因为失误写错了一些字母导致程序一直不能正常运行,然后找 bug 找半天也找不到。在学校 SpringBoot 之前,我们就很有必要来了解通过注解的方式来整合我们的项目,这样能更好的理解 SpringBoot 在底层给我们的封装。同时也是对注解驱动开发的一个很好的复习。2. Web容器配置类分析(替代 web.xml)继承树:AbstractAnnotationCo

2021-11-25 15:28:57 452

原创 SpringBoot Web篇核心源码分析(总)

SpringBoot 核心源码分析一、Web 核心分析1.1 简单功能分析1.1.1 静态资源访问1. 静态资源目录只要放在类路径下:called /static(or /public or /resources or /META-INF/resources)访问当前项目路径/ + 静态资源名,只需要写静态资源名就能访问,springboot原理:/**收到请求后先去匹配 controller,如果不能处理就去交给静态资源处理器。改变默认的静态资源位置 web: resour

2021-11-22 15:16:13 2170

原创 SpringBoot快速上手

文章目录快速上手 SpringBoot一、SpringBoot 概述1.1 SpringBoot 自动帮助我们管理各个依赖的版本1.2 starter1.3 parent1.4 实际开发1.5 引导类1.6 辅助功能二、基础配置2.1 属性配置方式2.2 YAML 格式三、整合第三方技术3.1 整合 Junit3.2 整合 mybatis3.3 整合 mybatis-plus3.4 整合 Druid3.5 整合第三方技术总结四、SSM整合案例(crud)快速上手 SpringBoot一、SpringBo

2021-11-21 13:33:11 807

原创 计算机组成原理(王道)

文章目录第一章 计算机系统概述1.1 计算机的发展1.2 计算机硬件1.2.1 计算机硬件的基本组成1.2.2 认识各个硬件部件1. 主存储器的基本构成2. 运算器的基本组成3. 控制器的基本组成4. **计算机的工作过程1.2.3 计算机系统的层次结构1.3 计算机的性能指标第二章 数据的表示与运算2.1 字符与校验码2.1.1 进位计数制2.1.2 BCD码2.1.3 字符与字符串2.1.4 奇偶校验码2.1.5 海明校验码2.1.6 循环冗余校验码(CRC)2.2 数的表示与基本运算2.2.1 定点数

2021-11-16 13:49:26 7329 1

原创 Spring注解详解

文章目录Spring 面向注解开发SpringIOC 的注解1. 用于注册驱动的注解1.1 @Configuration1.2 @ComponentScan1.3. @Bean1.4. Import1.5. ProperSource2. 注入时机和设定注入条件的注解2.1. @DependsOn2.2. @Lazy2.3. @Conditional2.4. @Profile3. 用于创建对象的注解3.1. @Componment 和三个衍生注解3.2. @Qualifier3.3. @Scope4. 用于注

2021-11-07 17:22:53 491

原创 现代软件工程

文章目录第一章 软件工程师及软件团队1. 程序员应该具备的技能2. 软件团队的特点3. 团队的组织模式4. 代码规范5.代码复审6. 代码测试7. 软件调试8. 版本控制第二章 软件及软件工程1. 软件的特点:2. 软件技术演化3. 软件危机4. 软件工程第三章 软件过程及过程模型1. 过程模型——瀑布模型2. 过程模型——原型开发模型3. 过程模型——增量模型4. 过程模型——螺旋模型第四章 敏捷流程1. 敏捷价值观:2. 敏捷12原则:3. 敏捷过程:基于敏捷原则进行的软件开发过程,视为敏捷过程。第五章

2021-11-03 13:43:52 1741

原创 黑马程序员 Spring高级面向注解开发 七万字超详细

转载自bilibili黑马程序员课程 Spring 高级 面向注解开发写的真的很不错!!!文章目录第一部分:Spring的IOC一、设计模式-工厂模式二、IOC和DI1、IOC-Inversion of Control2、DI-Dependency Injection三、Spring注解驱动开发入门1、写在最前2、注解驱动入门案例介绍3、案例实现3.1、导入坐标3.2、编写配置类3.3、编写配置文件3.4、编写测试类四、IOC的常用注解分析1、用于注解驱动的注解1.1、@Configuration1.

2021-10-31 20:19:02 7683

原创 SpringMVC急速入门

文章目录1. 概述2. 第一个springMVC 项目3. springmvc 执行过程源码分析:示例代码3. 面向注解开发1. @RequestMapping 定义请求规则处理方法的参数接收用户的参数静态资源的处理方法4. SpringMVC 核心技术4.1 请求重定向和转发4.2 异常处理4.2.1 @ExceptionHandler 注解4.3 拦截器4.3.1 一个拦截器的执行4.4 SpringMVC 处理流程1. 概述1. SpringMVC:是基于spring 的一个框架,实际上就是 sp

2021-10-29 22:49:33 214 1

原创 最详细SSM整合,从0到实现(附带所有代码和配置文件)

文章目录SSM 整合开发 (SpringMVC + Spring + Mybatis)一、概述二、实现步骤三、配置文件及其代码1. 首先创建 mysql 表2. 创建好数据库表之后,就在idea 里面创建一个 JavaWeb 项目(既然大家都学到这里了,创建项目大家应该都会了,就不做演示了)3. maven 依赖:pom.xml 文件4. 在 web.xml 文件中注册中央处理器,spring 监听器,全局过滤器(设置post请求 字符编码为 utf-8)5. SpringMVC 配置文件,声明组件扫描器,

2021-10-28 21:08:26 937 2

原创 大二课设,采用 bootstrap + express + mysql 实现电影售票系统(附带源码)

文章目录前端1. 主页模块2. 用户管理模块3. 用户个人中心页面大二课程设计,前端采用了 bootstrap 框架,完成响应式布局,后端用了node平台中的 express 框架,在完成此项目的过程中,虽然遇到了许多问题,但是通过各种途径也一一解决了,在此将此项目以及完成过程的心得分享给大家,希望能给大家带来帮助。本人也是一位正在学习中的程序员,如果遇到什么问题或者建议,也希望大家能够指出。前端1. 主页模块首先此系统参考了其他各大型影院的网上售票系统,再经过小组自身实力的权衡等等,最终达到了

2021-07-26 16:46:10 2954 3

原创 关于 JavaScript 中 this 指向的理解

文章目录1. 默认绑定规则2. 隐式绑定规则3. 显示绑定:call,apply,bind4. new 绑定我们在写前端页面的时候,编写JavaScript代码的时候经常会用到this关键字,比如绑定事件等等,但是JavaScript中的this指向问题一直都是比较让人头疼的问题,特别是对于初学者来讲,本来认为代码没有什么问题,结果运行出来不尽人意,而且还要花大量时间来调试找到问题所在。以下内容是根据自己所理解进行分享,有什么不对的地方希望大家指出,并一起讨论,一起进步。首先我们要明白,this 是

2021-07-21 21:18:26 777 4

Python爬虫,实现爬取CSDN文章,并保存到本地为MarkDown 格式

Python爬虫,实现爬取CSDN文章,并保存到本地为MarkDown 格式,也能够直接保存到 Mysql 数据库中,涉及到 py_mysql、BeautifulSoup、requests、html2text、parsel、etree、unescape 实现

2023-11-22

TicketingSystem.rar

详细介绍请看我发布的博客 https://blog.csdn.net/Mr_changxin/article/details/119110563

2021-07-26

前端入门API合集 (HTML CSS JavaScript jQuery + Java)

包括Java HTML css javascript jQuery的全部api 有助于学习java、前端、jQuery框架的学习

2021-03-18

贪食蛇源代码与相应图形库(EasyX且有详细教程)

包含贪吃蛇源代码,还有相应图形库文件,更加完善此小游戏。代码有详细注解,用C语言编写,可供一些大学生课程实践作为参考

2020-07-26

账号注册登录C语言源代码(对大一新生课程项目有一定帮助)

C语言代码,对账号的注册登录代码,注册后的账号会保留在电脑内存里面,不是临时的存储,再下次打开时依然能对之前注册的账号进行登录。此为账号登录模块代码,登录进去后的页面可以根据需要进行自我修改。

2020-07-25

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

TA关注的人

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