PostgreSQL—集群方案
当单机的PG数据库无法满足企业需求的时候,那么就要寻求其他的解决方案,为单机的数据库升级改造,建立HA高可用集群数据库,也可以是分布式的集群数据库,这里简单的介绍几种集群数据库的方案。 常用的高可用架…
SpringMVC—HandlerMethodArgumentResolver参数处理器
在享受Spring MVC带给你便捷的时候,你是否曾经这样疑问过:Controller的handler方法参数能够自动完成参数封装(有时即使没有@PathVariable、@RequestParam、…
SpringMVC—HandlerAdapter—HttpMessageConverter消息转换器
本文介绍Spring MVC中的一个极其重要的组件:HttpMessageConverter消息转换器。 有一副非常著名的图,来形容Spring MVC对一个请求的处理: 从图中可见HttpMessa…
SpringMVC—HandlerMethodReturnValueHandler返回值处理器
在前面的讲过HandlerAdapter的内容,里面有关于返回值处理器的初始化,还有之前的统一处理返回结果也是这个接口。 http://www.enmalvi.com/2022/10/02/sprin…
SpringMVC—Web九大组件之HandlerAdapter
如果说理解了HandlerMapping相当于掌握了Spring MVC的1/3,那么若你继续理解了HandlerAdapter(以及它的相关组件),那几乎可以说你就理解了它剩下的2/3了。 Hand…
Spring—AutowireCapableBeanFactory依赖注入
不可否认的是,把Bean交给Spring管理,确实极其的方便,优点一大把,并且还几乎没有啥缺点。这也就是为何咱们一言不合就把Bean扔给Spring的原因。(在Spring的技术栈里这么做,完全没有问…
SpringMVC—Web九大组件之HandlerMapping
之前已经大概介绍过web九大组件,本文将聚焦于Spring MVC中最重要的一个组件:HandlerMapping展开讨论 在最早之前也是学过HandlerMapping的,不过那时候是粗浅学习 ht…
SpringBoot—统一API接口响应格式
实现统一 API 接口响应格式的方式有很多的,比如之前的ResponseBodyAdvice 和 RequestBodyAdvice,比如拦截器等,但是这里使用的不是这些而是从返回处理器中去自定义,H…
SpringBoot—自定义参数解析器
在一个 Web 请求中,参数我们无非就是放在地址栏或者请求体中,个别请求可能放在请求头中。 放在地址栏中,我们可以通过如下方式获取参数: String name = request.getParame…
Java—SmallreyMutiny语法学习-响应式思考
Mutiny、Project-Reactor、RxJava(在web后端)好像都挺冷门的,人气不高,相关资料也不多。不过其实整个Java Reactive都不是很热门,国内用的人不是很多。但是Reac…
SpringMVC—工作机制和请求生命周期
在学习后面的webFlux时,还需要回过来了解一下MVC,不然会有很多的疑惑,因为MVC中也是存在着类似于响应式的方式。 既然要从头看看MVC,那么就看最原始的地方开始,了解一下MVC的整个执行过程。…
SpringMVC—PathPattern路径模式
Spring5 也已经出来好久了,里边有一些新玩法也需要我们去慢慢揭开面纱,最近在看 SpringMVC 源码的时候,就看到这样一段代码: /** * Initialize the path to u…
Spring—异步Servlet
我们日常使用的 SpringMVC,基本上都不是异步 Servlet,而学习 WebFlux,异步 Servlet 是基础。 什么是异步 Servlet 先来说说什么是非异步 Servlet。 在 S…
Spring—异步Http
前置概念 虽然现在看看Spring的异步模式看起来有点老,毕竟现在都Spring5的时代了,甚至将来肯定是webflux的时代,但是不可否认的是现在Servlet 仍然是主流,目前都是Servlet3…
Flowable—流程引擎(待修缮)
工作流概述 工作流是什么? 工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个 软件系统完成,也可以由一个或一组人完成,还可以由一个或多个…
Java—数据库连接池
连接池概念 数据库连接池是在程序初始化时创建一定数量的数据库连接对象并将其保存在一块内存区中,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接以…
JavaPoet—代码生成框架
JavaPoet是square推出的开源java代码生成框架,提供Java Api生成.java源文件。这个框架功能非常有用,我们可以很方便的使用它根据注解、数据库模式、协议格式等来对应生成代码。不直…
Nginx—安装运行Lua脚本
Nginx是一个反向代理的组件,在Nginx上可以运行Lua脚本来增强Nginx的能力实现网关拦截,鉴权,限流等功能,这里我们使用Dockerfile来安装会更快。 服务器版本 Linux VM-24…
Spring—AOP切面(构建)
AOP切面 到本节我们将要从 IOC 的实现,转入到关于 AOP(Aspect Oriented Programming) 内容的开发。在软件行业,AOP 意为:面向切面编程,通过预编译的方式和运行期…
Spring—IOC容器(构建)
Bean容器创建 Spring Bean 容器是什么? Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种用于承载对象的容器,你可以配置你的每个 Bean 对象是如何被创建的,这些…
SpringCloud—项目改造为Spring-Cloud-Kubernetes项目
K8S Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,…
SpringBoot—启动时执行
我们经常需要在容器启动的时候做一些钩子动作,比如注册消息消费者,监听配置等,今天就总结下SpringBoot留给开发者的7个启动扩展点。 容器刷新完成扩展点 1、监听容器刷新完成扩展点Applicat…
Java—JavaAgent探针
Java Agent 直译为 Java 代理,也常常被称为 Java 探针技术。 Java Agent 是在 JDK1.5 引入的,是一种可以动态修改 Java 字节码的技术。Java 中的类编译后形…
Java—Byte Buddy字节码编程
之前编写的字节码编程; ASM、Javassist 系列,Byte Buddy 玩法上更加高级,你可以完全不需要了解一个类和方法块是如何通过 指令码LDC、LO…
Java—ASM字节码编程
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java cl…
Spring—事务总结
1. 什么是事务 事务是逻辑上的一组操作,要么都执行,要么都不执行。 我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原…
PostgreSQL—常用指令
连接PostgreSQL 数据库 psql -d database -U user -W psql -d postgres -U postgres -W 用户 postgres 的口令: psql (…
PostgreSQL—测试工具PGbench
pgbench 是一个简单的给 PostgreSQL 做性能测试的程序。它反复运行同样的 SQL 命令序列,可能是在多个并发数据库会话上头,然后检查平均的事务速度(每秒的事务数 tps)。缺省的时候,…
Java—I/O模型与同步、异步、阻塞、非阻塞
内核态和用户态 我们的电脑可能同时运行着非常多的程序,这些程序分别来自不同公司。 谁也不知道在电脑上跑着的某个程序会不会发疯似得做一些奇怪的操作,比如定时把内存清空了。 因此 CPU 划分了非特权指令…
Java—事件驱动进行代码解耦(EventBus)
虽然现在的各种应用都是集群部署,单机部署的应用越来越少了,但是不可否认的是,市场上还是存在许多单机应用的。本文要介绍的是 Guava 中的 EventBus 的使用。 EventBus 处理的事情类似…