自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

源码兴趣圈

坐标帝都 Java 后端研发,励志成为架构师的一枚处女座程序员,专注高并发、框架底层源码、分布式等知识分享

  • 博客(93)
  • 资源 (1)
  • 收藏
  • 关注

原创 源码兴趣圈:不得不看的一篇文章

作者花名龙台,CSDN博客专家,目前就职北京某医药领域公司,任公司系统架构组职位。喜欢研究框架底层源码,知其然知其所以然,是个爱折腾、爱钻研、心有不羁 IT 男~希望通过自己的努力,帮助更多热爱技术的小伙伴收获知识!博客主要分享高并发、中间件、分布式、框架底层源码等知识,文章以下述 TAG 为主题展开分享【设计模式】【源码解析】【高并发编程】【备战数据库】【Spring 知识】【SpringCloud Alibaba】这里引用旭博简介的一句话,很喜欢我狂妄,我自负,就像我曾.

2021-01-21 11:58:34 71 2

原创 1.1w字,10图彻底掌握阻塞队列(并发必备)

前言什么是队列队列是一种先进先出的特殊线性表,简称 FIFO。特殊之处在于只允许在一端插入,在另一端删除进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列队列在程序设计中使用非常的多,包括一些中间件底层数据结构就是队列文章首发自公众号:【源码兴趣圈】,微信搜索关注这个高质量原创技术,定期分享高并发、中间件、分布式、框架源码等知识点什么是阻塞队列队列就队列呗,阻塞队列又是什么鬼阻塞队列是在队列的基础上额外添加两个操作的队列,分别是:支持阻塞的插.

2021-01-07 18:42:03 108

原创 面试:如何通过 MyBatis 查询千万数据并保证内存不溢出?

由于现在 ORM 框架的成熟运用,很多小伙伴对于 JDBC 的概念有些薄弱,ORM 框架底层其实是通过 JDBC 操作的 DBJDBC(JavaDataBase Connectivity)是 Java 数据库连接, 说的直白点就是使用 Java 语言操作数据库由 SUN 公司提供出一套访问数据库的规范 API, 并提供相对应的连接数据库协议标准, 然后 各厂商根据规范提供一套访问自家数据库的 API 接口文章大数据量操作核心围绕 JDBC 展开,目录结构如下:MySQL JDBC 大数据量操作.

2021-01-04 10:40:06 4859 5

原创 MySQL 千万数据量深分页优化, 拒绝线上故障!

前言优化项目代码过程中发现一个千万级数据深分页问题,缘由是这样的库里有一张耗材 MCS_PROD 表,通过同步外部数据中台多维度数据,在系统内部组装为单一耗材产品,最终同步到 ES 搜索引擎MySQL 同步 ES 流程如下:通过定时任务的形式触发同步,比如间隔半天或一天的时间频率同步的形式为增量同步,根据更新时间的机制,比如第一次同步查询 >= 1970-01-01 00:00:00.0记录最大的更新时间进行存储,下次更新同步以此为条件以分页的形式获取数据,当前页数量加一,循环..

2020-12-25 16:30:20 1678 6

原创 包含英文半角逗号的文件下载引发的 chrome bug

前言公司内部使用 oss 作为文件存储服务器,测试提出一个使用 chrome 浏览器下载文件的 bugERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION具体上传下载流程如下:使用 chrome 浏览器上传文件名称包含英文半角逗号的文件上传操作成功,根据 oss 中文件 url 进行下载操作请求可以正常发出,但是响应时浏览器发生崩溃现象,页面提示错误其它浏览器无此问题,多处查看判断为谷歌浏览器问题,暂定义为 bug下面会根据步骤说明此..

2020-12-21 09:50:49 55 2

原创 超火的钉钉自定义机器人原来是这么设置的

企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群接入自定义机器人很简单,大概以下几步点击群设置选择智能群助手点击添加机器人最右边按钮选择自定义点击添加后设置机器人对应属性下面会详细介绍其中的步骤,尤其是设置机器人属性这一块自定义机器人首先,我们要先创建对应的群聊,一般而言钉钉机器人创建可以分为三种方式直接创建在开发相关人员大群里,优缺点也比较明显。优点是如果你没注意到的报警信息,有.

2020-12-20 14:15:51 288

原创 10 道常见 Redis 缓存面试,不看答案你会几道题

文章首将对应问题罗列,可以根据目录找到感兴趣的AOF 为什么直接采用文本协议AOF 为什么把命令追加到 aop_buf 中Redis 实现分布式锁的方式有几种?最好的是哪一种Redis 中的 CAS 操作Redis 中的 String 数据结构底层实现Redis 中的 Key 过期机制Redis 中的 从节点会出发过期策略么结合项目中使用的 Redis 客户端说一下序列化的方式为什么 Redis 是单线程的Redis 是单线程的(基于主线程),为什么这么快AOF 为什么直接采用.

2020-12-20 11:49:05 35

原创 10 道并发编程基础题,不看答案你会几道题

文章首将对应问题罗列,可以根据目录找到感兴趣的并发和并行指的是什么多线程中的忙循环指什么什么情况下会发生上下文切换什么是临界区概念线程池核心线程疑问多线程同步和互斥有哪几种实现方式AQS 实现过程Atomic 原子操作是如何实现的为什么要使用线程池为什么不使用 Executors 创建线程池并发和并行指的是什么并发指的是多个任务交替执行,而并行则是指真正意义上的“用时进行”实际上,如果系统只有一个 cpu,而使用多线程时,那么真正系统环境下是不能并行的,只能通过切换时间片的.

2020-12-20 11:33:53 39 1

原创 10 道数据结构算法题,不看答案你会几道题

文章首将对应问题罗列,可以根据目录找到感兴趣的ArrayList 和 LinkedList 区别?结合数据结构说明B Tree 和 B+ Tree 区别?两个 Tree 对比各自优势Mysql 数据库为什么要使用树结构充当索引结构LinkedList 的插入时间复杂度冒泡排序的 3 种方式?哪种性能最好冒泡排序的平均时间复杂度以及空间复杂度分别是多少平衡二叉树和红黑树的区别HashMap 中的 key 可以存储可变引用类型么?有什么坏处?有什么解决方案什么是Trie树(字典树)为什么.

2020-12-19 17:50:44 154 1

原创 10 道 Java 基础面试,不看答案你会几道题

文章首将对应问题罗列,可以根据目录找到感兴趣的如何使一个类不可变为什么 Stirng 类是不可变的为什么成员变量会赋默认值,局部变量需要显示赋值Java 中手动出发 GC 垃圾回收的方式重写和重载的区别Java 中 switch 可以包含的判断条件hashCode 与 equals 区别装箱运算效率如何Java 中存在指针么使用最快的方式计算 1 * 2如何使一个类不可变将类声明为 final,使其无法被继承所有域都使用 private 进行修饰,不允许被访问.

2020-12-19 16:26:00 36 2

原创 python switch 多分支选择的实现

相信玩过几天 python 的小伙伴都知道,python 里并没有 switch 关键字实现,那这是为什么呢?根据官方说法 PEP 3103 - A Switch/Case Statement.实现 switch case 需要被判断的变量是可哈希和可比较的,这与 python 提倡的灵活性有冲突。在实现上优化不好做,可能到最后最差的情况汇编出来和 if else 组是一样的,所以 python 没有支持但是没有 switch 关键字,不代表不能实现类似效果,接下来通过几个小程序来说明此类问题i.

2020-12-19 14:35:27 1017 3

原创 mac os 下安装及使用 telnet 命令进行 socket 测试

什么是 telnettelnet 协议是 TCP/IP 协议族群中的一份子,是远程登录服务器的标注协议和主要方式可以把 telnet 当作一种通信协议,可以访问目标主机上的软、硬件资源,telnet 平常就是查看某个端口是否可访问。我们在开发的过程中,tomcat 项目启动默认端口为 8080,那么在启动了服务之后,可以使用 telnet 查看端口是否可用在终端使用者电脑上使用 telnet 程序输入命令,命令会在目标服务器上运行,就像直接在目标服务器的控制台上输入一样mac os 安装 te.

2020-12-15 12:44:08 258 2

原创 linux centos 7.x 安装 python3.x 替换 python2.x(亲测有效)

前言一般而言,新的 centos 7.x 中自带的 python 都是 2.x 的版本。对于我们运行 python 软件支持并不友好,所以需要进行升级操作下载 python3 的包之前,要先安装相关的依赖包,用于下载编译 python3:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make安装 pip默认的 centos7 .

2020-12-13 17:39:36 6417 8

原创 springboot 如何优雅的使用 alibaba rocketmq 消息队列

文章保证,一路执行下去不会报错,报错你找我。如果觉得有用,希望屏幕前的大佬,点赞➕关注只有想到的方面多时,才能在够实际运用中发现更多的问题,这也是作者给读者最好的礼物使用这篇文章 docker 安装 rocketmq,肯定没问题新建 springboot 项目新建一个 springboot 项目,pom 文件如下,rocketmq 使用 apache 封装的 jar<?xml version="1.0" encoding="UTF-8"?><project xmlns..

2020-12-12 17:08:46 4249

原创 通俗易懂,如何最便捷 docker 安装 rocketmq 队列

文章保证,一路执行下去不会报错,报错你找我。如果觉得有用,希望屏幕前的大佬,点赞➕关注如果想搭建一个本地玩的 rocketmq,可以继续向下看,绝对让你体会“傻瓜式”点点点安装文章中的内容皆是作者 “踩屎”无数,总结出来的绝对精髓能够来看 rocketmq 的安装,证明已经了解基本概念,也就不在这班门弄斧了rocketmq 有两个非常重要的概念,nameserver 和 broker,文章也是围绕这两个点进行安装,提供 便捷版本 & 可靠版本 两种方式文章大纲如下:安装 nam..

2020-12-12 16:52:44 4393 1

原创 spring InitializingBean 接口都不知道,源码还是缓缓吧

最近在构思中台如何通过一个接口,发布出多种协议。比如说:发布 dubbo、feign 或者阿里 hsf 接口的同时发布出同语义的 http 接口最后想到的是扫描自定义注解,然后注册到 mvc 中。所以就去看了下 mvc 注册 mapping 流程,就引发了 本文的主角 InitializingBean本文大纲如下:InitializingBean 是什么耍一耍 InitializingBeanInitializingBean 如何被加载mvc 源码中如何使用结言Initializ.

2020-12-10 16:23:52 6482 7

原创 1.1 w字,18 张图,彻底说透 springboot starter 机制

前言最近在整理公司公共 starter 内容,也是想写一篇关于 starter 文章,让更多不了解的小伙伴掌握这项核心技能文章从零到一的封装设计 starter,并提供可插拔 starter 以及元数据配置等说明,并在可插拔上与开源 zuul 进行比对,希望小伙伴看后有所收获文章大纲如下:starterstarter 定义starter 好处自定义 starterstarter 命名创建 springboot 项目pom 依赖配置自动配置类spring.factorie.

2020-12-07 13:55:41 7067 15

原创 深入理解 Spring @Import 不同方式注册 Bean

每日一言苦,是人生的必经过程。人生就是一个 “享受” 痛苦和磨难的过程,这个过程是值得体会和拥有的前言Spring 在 3.0 版本之前都是通过 .xml 配置文件的形式来描述配置信息在配置文件中显示声明 bena 标签或者扫描特定包下的类来注册 IOC 容器 Bean 对象等操作@Import 是 Spring 3.0 之后通过 JavaConfig 方式提供注册 IOC Bean 的注解需要配合 @Configuration 注解共同使用才能起作用,因为只有这样才会被 Spring .

2020-11-27 23:57:55 5520 3

原创 说点不一样的 Spring 注册 IOC Bean 方式

学习方法之多看:代码(别人的代码 or 源码)、规范(JEP、JSR)、论文(Paper) 等前言Spring 的出现是对广大 Java Web 开发者的福音,帮助我们解决了众多问题并且提供了很多便利写此文章主要来说明对于 Spring IOC 容器中注册 Bean 的方式主要有哪几种如果你以为我会告诉你@Bean@Import、@ImportSelector…@Service、@Component…很遗憾的说:格局小了兄弟…虽然这篇文章是作者看 Mybatis S..

2020-11-25 23:07:44 5407

原创 万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

男生魅力最重要的部分,是有勇气面对失败;而生活的美好之处,恰恰在于它的不确定性前言AbstractQueuedSynchronizer(AQS)是 Java 并发编程中绕不过去的一道坎,JUC 并发包下的 Lock、Semaphore、ReentrantLock 等都是基于 AQS 实现的。AQS 是一个抽象的同步框架,提供了原子性管理同步状态,基于阻塞队列模型实现阻塞和唤醒等待线程的功能文章从 ReentrantLock 加锁、解锁应用 API 入手,逐步讲解 AQS 对应源码以及相关隐含流..

2020-11-18 00:03:16 7659 2

原创 使用 Maven 打包 SpringBoot 项目将源码 source.jar 一并打包发布

本文大纲如下:0 前言1 打包源文件1.1 maven-source-plugin1.2 mvn install1.3 mvn deploy1.4 mvn source:jar2 注意事项3 后记前言在我们查看源码或者将自己项目打成 Jar 包发布出去的时候,存在这种情况整个包下的 .class 文件空空如也,其中的变量命名也是比较随意,同时对应的注释也无法查看其原因就是因为项目的 xxx-source.jar 没有被发布,上图是 Nacos 相关源码,可以点击 Do

2020-11-11 21:04:30 208

原创 躺在床上刷抖音,不如来写第一个 GO 程序入门篇

本文大纲如下:1 安装 GO 环境1.1 下载安装包1.2 安装 GO1.3 验证安装2 编码 GO 程序2.1 IDE 开发软件安装2.2 创建 GO 项目2.3 二分查找算法3 后记安装 GO 环境下载安装包访问 Go 国内镜像站 GO 下载页面,并在页面最上方的版本中选择你当前的系统版本,会下载最新版本的 Go 开发包因为是国内的镜像站,下载速度不受限制,速度相当可以,飞一般的赶脚~安装 GO作者是 MacOS,相信 Windos 也差不太多,傻瓜式

2020-11-11 10:09:00 107

原创 一文掌握多线程并发中 Thread 类 yield 方法具体作用

每日一言真爱的第一个征兆,在男孩身上是 胆怯,在女孩身上是 大胆。——雨果《悲惨世界》1. Thread.yield() 是什么通过 java.lang.Thread 类中的 yield() 方法可以实现让当前正在执行的线程让出 CPU 时间片线程状态 Running(运行中) 执行后会变为 Ready(就绪) 状态此时其它处于 Ready 状态 的线程可能获取到 CPU 时间片,也有可能是调用 yield() 方法的线程再次获得2. 线程状态我们查看下线程 Thread 中 St..

2020-11-01 17:01:19 149

原创 Nacos 服务源码包安装 & Docker 安装

前言文章从 Alibaba Nacos 服务开始部署,介绍两种不同的方式进行安装分别是 安装包 以及 Docker 容器安装在这之前会对 Nacos 的相关概念进行梳理,如果已有对应的了解,直接跳过即可1. Naocs 初始1.1 Nacos 是什么Nacos 致力于帮助您 发现、配置和管理微服务Nacos 提供了一组简单易用的特性集,帮助您 快速实现动态服务发现、服务配置、服务元数据及流量管理Nacos Server 本身提供了已支持的全量功能,搭配不同框架有不同的实现Naco..

2020-10-30 14:22:19 113

原创 IDEA 最便捷创建 SpringBoot 父子 Module 项目(值得收藏)

前言作者正在筹备一个专题 《SpringCloud Alibaba源码解析》,会在正式发布 SpringCloud Alibaba 源码系列文章之前,将一些准备工作先做好创建 SpringBoot 父子模块项目Docker 安装 Nacos Server 端Docker 安装 RocketMQ 端…本篇文章从第一步开始详细讲解如何 《创建 SpringBoot 父子模块项目》如果将 SpringBoot 框架用作与单体项目,大多数可能不存在多模块的情况但是并不代表没有,因为父子模块..

2020-10-27 21:30:30 350 6

原创 Linux 服务器 CPU 详细信息查看、物理 CPU 以及逻辑 CPU | 1024程序员节快乐~

什么是 CPUCPU: (Central Processing Unit)也称为中央处理器, 主要通过内部总线, 建立起芯片内各部件之间的信息传输通路如何查看 CPU 详细信息我们平常在操作 Linux 服务器时, 如何能够知道服务器的 CPU 的详细信息呢[xxx@xxx ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c16: CPU 核心数Intel®: 服务器 CPU 品牌英特尔Xeon®: 英特尔微处理器(至强..

2020-10-24 15:57:56 73 1

原创 Python3 如何使用 GitLab API 进行批量的合并分支, 亲测可用!

文章前言每周五上午十二点前需要将项目上各组开发分支合并软集仓库分支, 需要在十个项目上进行 merge程序员一般都是 很讨厌麻烦, 所以编写此脚本进行 批量 merge, 统一进行合并另外, 如果项目经历上线或者修复 bug 等情况, 需要合并分支至 uat、release、master 等分支, 也是能够满足此脚本使用情况类似于这种功能性脚本, 一般习惯使用 Python 来编写, 通过 GitLab 提供的 REST API 进行调用GitLab 提供了非常丰富的 REST API..

2020-10-13 16:48:09 750 17

原创 【剑指Offer】面试官问如何解决 AtomicInteger “ABA“ 问题

前言上一篇文章 《通过 JDK 原子并发类 AtomicInteger 彻底掌握 CAS 无锁算法》和大家聊了聊 Atomic 相关的概念, 也说了下 AtomicInteger 的实现原理同时也说了 Atomic 的不足:1、多线程高并发对共享资源读写操作会导致自旋过度2、“ABA” 问题今天这篇文章就来聊一聊如何解决 “ABA” 问题ABA 问题背景AtomicInteger 存在的一个问题, 也是大部分 Atomic 相关类存在的, 就是 ABA 问题简短来说, 就是线程一获取..

2020-10-03 13:49:32 303 1

原创 【剑指Offer】通过 JDK 原子并发类 AtomicInteger 彻底掌握 CAS 无锁算法

前言如果要聊原子类相关的话题, 可以先从基本的概念开始1、原子类为了解决什么样的问题?答: 为了解决并发场景下无锁的方式保证单一变量的数据一致性2、什么情况下存在并发问题?答: 多个线程同时读写同一个共享数据时存在多线程并发问题解决并发安全问题的方式有很多种方式, 著名的就是 JDK 并发包 concurrent, 为了并发而存在的非原子计算大家应该都知道, 类似于代码中的 i++ 操作, 虽然是一行, 但是执行时候是分为三步的从主存获取变量 i变量i值+1新增后变量i值写.

2020-10-01 10:27:38 593

原创 【剑指Offer】一文掌握 Redisson 分布式锁原理(值得收藏)

ReentrantLock 重入锁在说 Redisson 之前我们先来说一下 JDK 可重入锁: ReentrantLockReentrantLock 保证了 JVM 共享资源同一时刻只允许单个线程进行操作实现思路ReentrantLock 内部公平锁与非公平锁继承了 AQS[AbstractQueuedSynchronizer]1、AQS 内部通过 volatil 修饰的 int 类型变量 state 控制并发情况下线程安全问题及锁重入2、将未竞争到锁的线程放入 AQS 的队列中通过 L...

2020-09-26 23:24:07 842

原创 【剑指Offer】Redis 分布式锁的实现原理看这篇就够了

前言分布式锁相信大家一定不会陌生, 想要用好或者自己写一个却没那么简单想要达到上述的条件, 一定要 掌握分布式锁的应用场景, 以及分布式锁的不同实现, 不同实现之间有什么区别分布式锁场景如果想真正了解分布式锁, 需要结合一定场景; 举个例子, 某夕夕上抢购 AirPods Pro 的 100 元优惠券如果使用下面这段代码当作抢购优惠券的后台程序, 我们一起看一下, 可能存在什么样的问题很明显的就是这段流程在并发场景下并不安全, 会导致优惠券发放超过预期, 类似电商抢购超卖问题想一哈有什.

2020-09-26 17:13:21 1194 2

原创 Java 项目导入 IDEA 后没有 Maven 侧边栏

前言今天从 GitHub 拉下了 Redisson 源码, 导入我的 2019.3 IDEA 后, 往常项目应该能够自动加载但是这次失常了, 项目没有正常加载, 而且最关键的右侧连个 Maven 框都没有, 多熟悉的按钮解决思路从网上查阅后, 其实也很简单, 点击 IDEA 菜单栏上的 Help -> Find Action在弹出框中输入 Maven, 选择就 OK 了, 问题解决...

2020-09-19 17:45:14 275

原创 【剑指Offer】JDK 线程池使用不当引发的饥饿死锁问题

01、前言使用线程池时会忽略死锁问题, 但是只要代码写的"六"没啥是不可能的文章代码及部分理念引自 线程池使用不当也会死锁02、什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程死锁定义来源: 死锁-百度百科简化来说就是: 一组相互竞争资源的线程因为互相等待,导致"永久"阻塞的现象我们通过一个 Demo 简单理解下publi

2020-09-18 23:28:26 500

原创 【剑指Offer】谨慎使用 Java8 新特性 ParallelStream并行流

01、前言在说 parallelStream 之前, 一定要了解 Stream 以及它的基本操作推荐大家看一波之前的文章 解放双手,Stream 居然还有这波神操作02、什么是 ParallelStream上文讲到的 Java8 Stream 流在执行时候是串行化的, 如果说任务执行的耗时比较长, 可以使用 Stream 的 “兄弟流” ParallelStream防止误导, 并非耗时就一定要使用并行, 根据不同的业务场景, 合理的使用即可parallelStream 是一种并行流, 意思为

2020-09-17 10:07:25 584 2

原创 【剑指Offer】如何处理 JDK 线程池内线程执行异常

前言上次写了 【剑指 Offer】如何解决 JDK 线程池中不超过最大线程数下快速消费任务宽哥瞅了后没有被怼, 心想不枉我上周天看了一天的线程池源码啊 ????场景太过温馨, 必须记录下来不过还好, 后面没有像往常一样被怼 ????️言归正传哈, 本篇 《如何处理 JDK 线程池内线程执行异常》 文章适合哪些小伙伴阅读呢工作中使用线程池却不知异常的处理流程, 以及不知如何正确处理抛出的异常带着问题看文章1、线程池如何输出打印运行任务时抛出的异常?2、线程池 execute()、sub

2020-09-14 09:56:41 471

原创 【剑指Offer】JDK 线程池如何保证核心线程不被销毁

前言很早之前那个时候练习线程池, 就是感觉线程池类似于 ArrayList 这种集合类结构, 将 Thread 类存储, 来任务了就进行消费, 然鹅…线程包装类线程池并不是对 Thread 直接存储, 而是对 Thread 进行了一层包装, 包装类叫做 Worker线程在线程池中的存储结构如下:private final HashSet<Worker> workers = new HashSet<Worker>();先看一下 Worker 类中的变量及方法privat

2020-09-10 23:24:36 173

原创 【剑指Offer】如何解决JDK线程池中不超过最大线程数下快速消费任务

前言文章需要对线程池执行任务流程有一定的了解记得之前我写通过模版设计来解决 线程池参数自定义痛点, 然后宽哥在下面灵魂发问, 也就是咱们这篇文章讲到的重点来来来, 我给大家复制粘贴出来如何解决 JDK 线程池中不超过最大线程数下即时快速消费任务, 而不是在队列中堆积因为最近业务落地改造中需要线程池, 又去看了一遍源码, 防止线上埋雷, 也再次回顾了这个问题然后发现网上也有这种问题提问, 虽然是不同的提问, 但是核心思想是一致的, 点击跳转业务是多变的, 而 JDK 中的线程池消费流程

2020-09-10 23:23:38 502

原创 【剑指Offer】一文搞懂项目使用的 Mybatis 架构设计(值得收藏)

Mybatis 架构设计分享1、带着问题思考本次分享2、持久层的那些事2.1 JDBC什么是 JDBCJDBC 原理2.2 Mybatis什么是 MybatisMybatis 与 JDBC 的关系3、Mybatis 关键词说明SqlSessionSqlSessionFactorySqlSessionFactoryBuilderConfigurationMappedStatementExecutorParameterHandlerStatementHandlerResultSetHandlerIntercep

2020-09-03 21:19:26 528

原创 Mybatis 中理解分页如何使用 Interceptor 接口实现

通过 Mybatis 执行分页 SQL 有两种实现方式, 一种是编写 SQL 时添加 LIMIT, 一种是全局处理01、SQL 分页<select id="getSubjectByPage" resultMap="resultAutoMap"> SELECT * FROM SUBJECT LIMIT #{CURRINDEX} , #{PAGESIZE}</select>02、拦截器分页上文说到, Mybatis 支持了插件扩展机制, 可以拦截到具体对象的方法以及对

2020-09-03 21:15:49 114

原创 Mybatis Sql 执行全链路, 跟踪返回结果

01、前言根据 Mybatis SQL 执行流程图进一步了解02、Mybatis Sql 的执行过程大致可以分为以下几步操作:???? 在前面的内容中, 知道了 Mybatis Mapper 是动态代理的实现, 查看 SQL 执行过程, 就需要紧跟实现了 InvocationHandler 的 MapperProxy 类03、执行增删改查@Select(" SELECT * FROM SUBJECT WHERE ID = #{id}")PrimitiveSubject getSubjec

2020-09-03 21:13:19 155

Mybatis 架构设计分享.pdf

Mybatis 架构设计分享,掌握 JDBC 与 Mybatis 关系等底层源码知识,图解 Mybatis 底层源码流程

2020-10-24

空空如也

空空如也

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

TA关注的人 TA的粉丝

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