Static

Thinking will not overcome fear but action will.

构建restful-client的SpringBoot启动器

一、前言 1. 什么是spring-boot-starter spring-boot-starter能够抛弃以前spring项目中繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。 2. 为什么使用spring-boot-starter spring-boot-starter...

认识Tomcat中的类加载器

本文中介绍的Tomcat版本是8.5,代码注释:https://github.com/whvixd/tomcat 分支:8.5.x_local_deploy 1. 类加载器设计图 commonLoader:Tomcat最基本的类加载器,加载路径中的class可以被Tomcat容器本身以及各个Webapp访问,加载/common/*中的Java类库...

认识MODIS

1. MODIS简介 中分辨率成像光谱仪(Moderate-resolution Imaging Spectroradiometer,缩写MODIS)是美国宇航局研制大型空间遥感仪器,以了解全球气候的变化情况以及人类活动对气候的影响。 1999年2月18日,美国成功地发射了地球观测系统(EOS)的第一颗先进的极地轨道环境遥感卫星Terra。它的主要目标是实现从单系列极轨空间平台上对太阳辐...

认识云计算

1. 引言 传统的应用正在变得越来越复杂,在Web2.0时代很多著名的网站的用户访问量已经远远超过传统的网站,因此,如何有效地为如此巨大的用户群体服务,让他们参与时能够享受方便、快捷的服务,成为这些网站不得不解决的一个问题。正是因为一方对计算能力的需求,而另一方能够提供这样的计算能力,于是云计算就应运而生。 2. 定义 云计算就是计算服务的提供(包括服务器、存储、数据库、网络、软件、分...

房价分析与预测

1. 背景 随着第四次工业革命浪潮的来临,一大批科技前沿技术逐渐兴起,人工智能、大数据、5G、物联网等技术不断渗透到各个领域,给各行各业带来巨大的改变。而随着技术的飞速发展,我们的衣食 住行正在悄然变化,在追求精神满足的情况下,人们正在不断完善自身的生活条件。房子是每个家庭的必需品,在购买房子时人们总是希望用较低的价格买到理想的房子,然而随着市场的变化,房价 时高时低,大众很难捕捉到很好的...

Tomcat源码调试

本次介绍如何在本地将tomcat导入idea中,并启动起来。 1. 打开idea直接导入tomcat 建议Fork,tomcat源码地址:传送门;tomcat git:https://github.com/apache/tomcat.git 如下图: 需切换版本,可执行 git checkout 8.5.30,切换到该版本后,再创建并切换到自己...

Spring的事件机制

1. What? Spring的ApplicationEventPublisher拥有事件发布并且注册事件监听器的能力,拥有一套完整的事件发布与监听机制,类似于Guava的EventBus。 2. Why? 事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现,高类聚低耦合,降低业务代码的耦合度,支持异步操作。 3. How? 核心类: a. 事件Ap...

MDC

1. What? MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能,也可以说是一种轻量级的日志跟踪工具。 2. Why? MDC是应用内的线程级别,不是分布式的应用层级别,所以仅靠它无法做到分布式应用调用链路跟踪的需求。它要解决的问题主要是让我们可以在海量日志数据中快速捞到可用的日...

分布式锁

1. What? 分布式锁,在分布式模型下,去争夺一个资源,先抢占资源的可以执行相关的业务逻辑,执行后再释放锁资源,未抢到锁资源的退出。 本文中利用redis(也可用mysql、zk等)实现 2. How? 利用spring aop实现分布式锁注解 @DLock,利用spring el实现幂等键 分布式锁使用示例: @RestController public c...

单链表(C语言)

数据结构

最近复习了C语言,手写了单链表 1. 定义 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 1. 节点结构体 typedef struct NodeStruct{ int ...