自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构探险之道

人之为学,不日进则日退,独学无友,则孤陋而难成;久处一方,则习染而不自觉。

  • 博客(224)
  • 资源 (5)
  • 收藏
  • 关注

原创 Kafka 架构及原理分析

Kafka 架构及原理分析Kafka适合什么样的场景?它可以用于两大类别的应用:构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化)为了理解 Kafka 是如何做到以上所说的功能,从下面开始,我们将深入探索Kafka 的特性。定位消息中间件消息引擎分布式实时流处理平台简介使用场景大数据领域

2020-11-15 22:25:21 1650

原创 JVM 面试深入理解内存模型和垃圾回收(二)

JVM 面试深入理解内存模型和垃圾回收(二)文章目录JVM 面试深入理解内存模型和垃圾回收(二)1. 运行时数据区域1.1 The PC Register1.2 Java Virtual Machine Stacks1.2.1 Frames1.2.2 结合字节码指令理解栈帧1.3 Heap1.4 Method Area1.5 Run-Time Constant Pool1.6 Native Method Stacks2. 内存模型2.1 引用2.2 Java对象内存模型2.2.1 对象创建的过程2.2.2

2020-10-11 01:55:14 556

原创 JVM 面试基础准备篇(一)

JVM 面试基础准备篇(一)文章目录JVM 面试基础准备篇(一)1. 计算机原理1.1 计算机体系结构1.2 JVM 作用2. JVM 原理2.1 Class文件2.1.1 生成字节码文件2.1.2 查看字节码文件2.1.3 类文件结构2.1.3.1 javap 验证2.1.3.2 常量池分析2.1.3.3 结构划分2.2 类文件到虚拟机2.2.1 装载2.2.2 链接(Link)2.2.2.1 验证(verify)2.2.2.2 准备(prepare)2.2.2.3 解析(resolve)2.2.

2020-09-28 00:01:41 288

原创 接口管理这下总会了吧?

接口管理这下总会了吧?文章目录接口管理这下总会了吧?使用方式引入依赖添加 Swagger 注解配置扫描规则 application.yaml效果实现原理小结集成 Spring Boot 快速利用 Swagger 实现Swagger 作为一款优秀的 API 接口文档管理框架,在过往的使用过程中,着实踩了不少坑。一开始,也在自己的博客上整理了使用说明文档,它的配置,说老实话,很多刚上手的同学还是觉得很难使用。我就这个问题思考了下,决定基于 Spring Boot 的装配机制,写个简单好用的 Api S

2020-08-29 18:37:38 388

原创 [JDK]了解多线程以及如何进行并发编程?

[JDK]了解多线程以及如何进行并发编程?简介本文主要介绍多线程基本知识以及如何进行并发编程?文章目录[JDK]了解多线程以及如何进行并发编程?硬件层面软件层面并发和并行JAVA中的线程线程的基础源码分析线程的启动线程的中断异步并发异步 Future异步Callback异步编排 CompletableFuture小结更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以扫码加入『知识星球』(文末)获取长期知识分享服务。多线程多线程意

2020-07-05 22:54:30 350

原创 站在架构的角度思考线程池的设计和原理

线程使用上的问题线程的频繁创建和销毁线程的数量过多,会造成CPU资源的开销线程上下文频繁切换,消耗CPU资源那么如何实现线程的复用呢?池化技术常见场景及核心思想连接池、对象池、内存池、线程池池化技术的核心(资源)复用,降低创建和销毁动作带来的额外性能损耗。.........

2022-07-24 11:40:50 237 1

原创 并发编程 之 Fork/Join 框架

ForkJoin框架是从jdk1.7中引入的新特性,它同ThreadPoolExecutor一样,也实现了Executor和ExecutorService接口。它使用了一个无限队列来保存需要执行的任务,而线程的数量则是通过构造函数传入,如果没有向构造函数中传入指定的线程数量,那么当前计算机可用的CPU数量会被设置为线程数量作为默认值。.........

2022-06-11 21:00:18 276

原创 ThreadLocal 深入源码分析&应用场景介绍

在 Java 的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用 synchronized 或是 Lock 工具类等方式来保证同一时刻只有一个线程对共享变量进行操作。这种情况下可以将类变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立拷贝,不会出现一个线程读取变量时而被另一个线程修改的现象。最常见的ThreadLocal使用场景为用来解决数据库连接、Session管理、用户信息线程上下文管理等。

2022-05-28 22:48:23 286

原创 最新版本 Flowable Modeler 6.4.1 流程编辑器

最新版本 Flowable Modeler 6.4.1 流程编辑器破解相信很多关注我的粉丝是因为工作流的流程设计引擎的破解教程。今天,为了回馈广大粉丝的长久关注,我实在是忍不住了,必须要免费分享源码给到大家,需要的同学自行下载!集成Spring Boot 2+集成 Flowable 6.4.1破解思路破解思路基本差不多,此处不再赘述,感兴趣的同学可以查看我的往期文章,或是通过文末提供的方式下载我分享的代码进行学习。效果展示代码结构:resource/static 为流程编辑器

2021-01-16 00:11:35 1950 2

原创 [网络通信] NIO高性能通信实战(一)

[网络通信] NIO高性能通信实战(一)文章目录[网络通信] NIO高性能通信实战(一)NIO 三大核心缓冲区(Buffer)通道(Channel)选择器(Selector)通道的注册选择器的检查零拷贝实现高性能文件传输小结REFERENCES前言本文主要介绍JDK 中关于 NIO 的一些 API。从 JDK1.4 开始,java 提供了一系列改进输入/输出的新特性,统称为NIO,其中 N 表示 new I/O,是同步非阻塞的,所以也有人称为 non-blocking I/O。NIO 的相关类都放

2021-01-13 22:39:22 365

原创 [网络通信] 什么是零拷贝?

什么是零拷贝?文章目录什么是零拷贝?1. Java 实现应用缓存零拷贝2. 底层零拷贝实现机制2.1 mmap2.2 sendfile2.3 splice小结REFERENCES我们在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成:while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sock

2021-01-12 22:06:10 459

原创 Zookeeper 入门

Zookeeper 入门简介ZooKeeper是一个分布式的、开源的分布式应用程序协调服务,可以在分布式环境中实现应用配置管理、统一命名服务、状态同步服务等功能。ZooKeeper是一种为分布式应用所设计的高可用、高性能的开源协调服务它提供了一项基本服务:分布式锁服务。由于ZooKeeper开源的特性,在其分布式锁实现的基础上,又被摸索出了其它的功用,譬如:配置维护、组服务、分布式消息队列等等。ZooKeeper维护了一个类似文件系统的数据结构,其内部每个子目录都被 称作znode(目录节点),

2021-01-10 09:10:35 550

原创 Windows遍历文件

@dir>1.txt /s /a /b d:\*.pdf

2021-01-08 09:52:42 377

原创 Netty 入门实战

Netty 入门实战异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty 项目旨在为可维护的高性能和高可伸缩性协议服务器和客户端的快速开发提供一个异步事件驱动的网络应用框架和工具。Netty 是一个 NIO 客户机服务器框架,可以快速简单地开发网络应用程序,如协议服务器和客户机。它极大地简化了网络编程,如 TCP 和 UDP 套接字服务器的开发。“快速和简单”并不意味着产生的应用程序会受到可维护性或性能问题的影响。Netty 是根据实现许多协议(

2021-01-01 13:18:11 390

原创 Rx Java 异步编程框架

Rx Java文章目录Rx Java名词定义举个例子基本概念BackpressureUpstream, DownstreamObjects in motionAssembly timeSubscription timeRuntime特性Simple background computationSchedulersConcurrency within a flowParallel processingDependent sub-flowsContinuationsDependentNon-dependent

2020-12-24 16:16:38 673 1

原创 Redis 缓存中间件

Redis 缓存中间件文章目录Redis 缓存中间件为什么需要缓存中间件?Redis 简介特性单线程Redis存储机制Snapshot 工作原理AOF 工作原理存储模式性能和安全数据结构及使用场景String 字符串Hash 哈希List 列表Set 集合ZSET 有序集合技术总结REFERENCES手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注公众号后回复『知识星球』加入并获取长期知识分享服务。为什么需要缓存中间件?一个网站演变的过程中,

2020-11-17 08:09:56 894

原创 [Redis] Redis 安装部署

[Redis] Redis 安装部署简介Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。本文主要介绍 Redis 启动配置参数含义、主从、哨兵模式的环境搭建方式。文章目录[Redis] Redis 安装部

2020-10-24 22:56:55 1808

原创 项目中的全局缓存导致了内存泄露?

项目中的全局缓存导致了内存泄露?对于项目中的数据,为了提升访问速度,或是为了多个业务子模块代码间的解耦,往往通过中间的缓存对象来统一管理。但是随着请求量的增加,简单的 HashMap 缓存功能,却导致了项目中的内存泄露,线上环境请求量一旦过高,就出现大量 Full GC.为了解决问题,我们必须从 JDK 的引用谈起。文章目录项目中的全局缓存导致了内存泄露?JDK 引用引用与对象内存自动管理可达性分析算法数据存储方式四种引用类型强引用软引用弱引用虚引用引用队列(ReferenceQueue)Refe

2020-09-14 12:48:13 374

原创 DSB Security 如何优雅的进行敏感数据的传输?

DSB Security 如何优雅的进行敏感数据的传输?对于项目中的敏感数据处理,很多同学刚开始接触的时候,往往觉得比较繁琐,项目中实现的方式也是千奇百怪,基本就是百度搜索和粘贴。对于敏感数据的处理,是任何一家互联网公司必须要注重的事情,用户的敏感信息泄露带来的危害也是十分严重的。在下不才,结合多年积累,整理了一款开箱即用的加解密解决方案,大致功能如下:RSA 加解密,支持分段加密,解决加密文本超长的问题DES 加解密,支持多种模式 EBC、CBC(分组加密、迭代分组加密),增加盐混淆策略,避

2020-09-07 21:32:30 927

原创 Nacos 快速上手

Nacos 快速上手文章目录Nacos 快速上手准备工作部署Spring Boot 集成配置说明Spring Cloud + NacosDubbo + Nacos公共 API 包服务提供者服务消费者问题微服务现在越来火,有基于 Spring Cloud Netflix 体系的,也有基于 Spring Cloud Alibaba 为体系的。从以前的 Eureka 注册中心、Spring Cloud Config 配置中心、Spring Cloud Bus消息总线 到完全可以替代他们的 Nacos 出现,

2020-09-02 01:13:53 918 1

原创 Valine 一款快速、简洁且高效的无后端评论系统

Valine 一款快速、简洁且高效的无后端评论系统简介Valine 诞生于2017年8月7日,是一款基于LeanCloud的快速、简洁且高效的无后端评论系统。理论上支持但不限于静态博客,目前已有Hexo、Jekyll、Typecho、Hugo、Ghost 等博客程序在使用Valine。手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以加入『知识星球』获取长期知识分享服务。特性快速安全Emoji ????无后端实现MarkDown

2020-08-30 15:31:49 688 1

原创 RSA 敏感数据加解密方案

RSA 敏感数据加解密方案文章目录RSA 敏感数据加解密方案RSA密码RSA加解密算法举个例子加密解密超长文本加密方案REFERENCES手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以扫码加入『知识星球』(文末)获取长期知识分享服务。RSA密码RSA密码是1978年美国麻省理工学院三位密码学者R.L.Rivest、A.Shamir和L.Adleman提出的一种基于大合数因子分解困难性的公开密钥密码。由于RSA密码既可用于加密,又可用于数字签名

2020-08-16 02:48:58 3579

原创 [ORM] MyBatis 中是如何运用的代理模式的?

[ORM] MyBatis 中是如何运用的代理模式的?简介本文主要介绍设计模式之代理模式,并分析代理模式在 Mybatis 中是如何使用的?文章目录[ORM] MyBatis 中是如何运用的代理模式的?静态代理动态代理源码分析深入动态代理源码小结获取更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以扫码加入『知识星球』(文末)获取长期知识分享服务。静态代理具体用户管理实现类public class UserManagerIm

2020-05-25 01:08:14 524

原创 [MyBatis] 缓存模块实现原理剖析

[MyBatis] 缓存模块实现原理剖析简介本文主要介绍 MyBatis 缓存模块,介绍其实现原理和配置方式,并分析了下一级缓存和二级缓存的特点和使用差异。文章目录[MyBatis] 缓存模块实现原理剖析设计模式装饰器模式一级缓存源码分析小结二级缓存小结获取更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以扫码加入『知识星球』(文末)获取长期知识分享服务。MyBatis 缓存模块实现了以下功能:MyBatis 缓存的实现是基于

2020-05-19 00:25:26 469

原创 Spring Cloud 快速上手之 Ribbon 负载均衡

Spring Cloud 快速上手之 Ribbon 负载均衡简介Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的。通过Spring Cloud的封装,可以轻松地将面向服务的REST 模板请求,自动转换成客户端负载均衡服务调用。提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。文章目录Spri...

2020-05-05 16:41:33 380

原创 Spring Cloud 快速上手之 Eureka 服务注册

Spring Cloud 快速上手之 Eureka 服务注册简介本文主要介绍 Spring Cloud 中的 Eureka 服务注册中心。手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以扫码加入『知识星球』(文末)获取长期知识分享服务。准备工作版本Greenwich.SR5Spring Boot 2.1.5...

2020-05-05 12:22:32 371

原创 [Spring] 30个类手写 Spring Mini 版本系列(二)

[Spring] 30个类手写 Spring Mini 版本系列(二)简介为了更深入的了解 Spring 的实现原理和设计思想,一直打算出个系列文章,从零开始重新学习 Spring。在[Spring] 30个类手写 Spring Mini 版本系列(一)中,我们直接通过 Servlet API 初步实现了 Spring 的简易版。针对V1.1.0版,今天我们来做下优化,主要针对主要流程节点...

2020-04-30 10:59:36 494

原创 [Spring] 30个类手写 Spring Mini 版本系列(一)

[Spring] 30个类手写 Spring Mini 版本系列(一)简介为了更深入的了解 Spring 的实现原理和设计思想,一直打算出个系列文章,从零开始重新学习 Spring。有兴趣的小伙伴可以持续关注更新。目录[Spring] 30个类手写 Spring Mini 版本系列(一)V1 版本V1.0.0 版本注解定义定义 Controller 和 Service定义配置定义 Di...

2020-04-18 00:22:10 713

原创 [Redis] 分布式缓存中间件 Redis 之 分布式锁实战

[Redis] 分布式缓存中间件 Redis 之 分布式锁实战概要Redis 环境准备Redis Setnx 实现分布式锁Redission 源码分析目录[Redis] 分布式缓存中间件 Redis 之 分布式锁实战环境准备Redis 如何实现分布式锁线程不安全单机锁分布式锁代码实现Redisson 集成和源码分析Redisson 集成源码分析 `RedissonLock`加锁...

2020-03-15 21:55:52 400

原创 [JDK] HashMap 原理剖析

[JDK] HashMap 原理剖析简介哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而 HashMap 的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对 Java 集合框架中的 HashMap,就 JDK7、JDK8 的源码实现进行分析。目录[JDK]...

2020-03-10 22:04:51 345

原创 [MyBatis] MyBatis 数据源模块实现原理剖析

[MyBatis] MyBatis 数据源模块实现原理剖析简介数据库连接池技术是提升数据库访问效率常用的手段,使用连接池可以提高连接资源的复用性,避免频繁创建、关闭连接资源带来的开销,池化技术也是大厂高频面试题。Mybatis 内部就带了一个连接池的实现,接下来重点解析连接池技术的数据结构和算法。目录[MyBatis] MyBatis 数据源模块实现原理剖析数据库连接池管理设计模式分析...

2020-03-02 22:52:43 432

原创 [Linux] Docker 安装初次运行失败

错误描述[root@localhost run]# docker psCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?运行环境[root@localhost run]# uname -aLinux localhost.localdo...

2020-03-02 15:53:28 413

原创 [Java] JAVA IO操作

[Java] JAVA IO操作简介一个优秀的程序必然离不开IO操作,不论是读写网络数据还是本地文件,都必须有扎实的IO操作技巧。核心内容:1.字节流、字符流的区别。2.缓冲流的使用。3.随机文件读写。目录[Java] JAVA IO操作更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发布地址。平...

2020-02-13 23:08:07 274

原创 [Spring Boot]自定义Spring Boot Starter

[Spring Boot] 自定义 Spring Boot Starter简介在了解了Spring Boot的自动装配原理后,我们来实现一个Spring Boot常见的Starter项目目录[Spring Boot] 自定义 Spring Boot Starter准备工作summer-boot-hello-starter 定义申明自动装配配置类Starter 定义申明编写测试项目总...

2020-01-11 23:25:15 370

原创 [Spring Boot] 从 SpringBootApplication 谈谈 Spring Boot 启动时都做了哪些事?

[Spring Boot] 从 SpringBootApplication 谈谈 Spring Boot 启动时都做了哪些事?简介Spring Boot 极大的减少了我们Spring项目开发的工作量,很多的配置文件往往都不需要编写了,只需要引入对应的starter,就可以完成配置实例的自动装配。那么,在Spring Boot项目执行时,到底都做了哪些事呢?目录[Spring Boot]...

2020-01-09 21:58:49 900

原创 [Spring Boot] Spring Boot 装配实现原理

[Spring Boot] Spring Boot 装配实现原理本文就 Spring Boot 的配置装配实现方式做了介绍,主要是常用的模式注解、@EnableXXX注解、条件注解和自动装配是如何实现的。目录[Spring Boot] Spring Boot 装配实现原理模式注解装配@Enable模块装配基于注解驱动实现基于接口驱动实现条件装配自动装配总结更多手机用户请横屏获取最佳阅读...

2020-01-08 01:38:11 418

原创 [Git] Git常用操作2

Git常用操作2覆盖本地代码git强制覆盖: git fetch --all git reset --hard origin/master git pullgit强制覆盖本地命令(单条执行): git fetch --all && git reset --hard origin/master && git pull切换远程地...

2020-01-06 16:34:45 290

原创 [Apache Dubbo] Spring Boot 整合 Dubbo 实战

[Apache Dubbo] Spring Boot 整合 Dubbo 实战目录[Apache Dubbo] Spring Boot 整合 Dubbo 实战Dubbo 介绍准备工作项目开发思路公共业务接口定义服务提供者服务消费者更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发布地址。平台地址CSDN...

2020-01-05 22:44:20 1447 1

原创 Linux 日常记录:常用操作

Linux修改IP

2019-12-18 18:54:35 266

原创 [Spring] Spring AOP 实现原理剖析(三)

目录[Spring] Spring AOP 实现原理剖析(三)切点类型切面类型一般切面 Advisor切点切面 PointcutAdvisor引介切面 IntroductionAdvisor代码实战静态普通方法匹配切面静态正则表达式方法匹配切面动态切面流程切面复合切面引介切面总结更多手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发...

2019-12-14 22:26:34 322

capsule-flowable-modeler 2.zip

Flowable工作流BPM编辑器,Spring Boot 版本,免登陆版本,支持绘图,管理图;

2020-08-13

java_util_concurrent_中文用户使用手册@微信公众号-架构探险之道.zip

JUC使用指导手册 http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html 中文译文

2019-08-20

ASCII码说明表

ASCII = American Standard Code for Information Interchange

2018-07-10

许中清-PostgreSQL表分区实践

2014年PostgreSQL中国大会华为许中清分享的原生表分区方案

2018-06-12

空空如也

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

TA关注的人

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