自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码客

我不去想是否能够成功,既然选择了远方便只顾风雨兼程;我不去想背后会不会袭来寒风冷雨,既然目标是地平线,留给世界的只能是背影。

原创 Spring Cloud OpenFeign 实现原理解析

文章目录1、什么是Feign2、什么是 Spring Cloud OpenFeign3、Feign 实现原理3.1、Feign.builder() 初始化构造器3.2、Feign.target() 生成代理对象3.3、如何解析 FeginClient 接口中定义的方法3.3.1、默认Contract 实现3.3.2、SpringMvcContract 基于Spring MVC的协议规范3.2、MethodHandler3.3、最终的HTTP请求4、Spring Cloud 中的 OpenFeign1、什么

2020-06-28 17:57:43 72

原创 Ignite(二): 持久化存储架构

文章目录1、PageMemory2、FullPageId2.1、PageId 和 EffectivePageId3、Page State(页状态)3.1、Page Modification(页修改)4、Internal Data Structures(内部数据结构)4.1、Data partitions(数据分区)4.2、Index partition(索引分区)5、Page ID Rotation(页面ID轮换)6、Checkpointing(检查点)7、Page Store7.1、allocatePag

2020-05-28 15:28:13 66

原创 MySQL(十三):分区表( Partitioning Table)

文章目录1、MySQL 分区简介1.1、什么是分区表1.2、分区表优点1.3、分区表缺点2、MySQL 分区类型2.1、范围分区(RANGE)2.1.1、基于时间间隔的分区方案。2.1.1.1、按 RANGE 对表进行分区2.1.1.2、按 RANGE COLUMNS 对表分区2.2、列表分区(LIST)2.3、HASH分区(HASH)2.3.1、LINEAR HASH 分区2.4、KEY 分区(KEY)2.5、子分区(Subpartitioning)3、MySQL分区如何处理NULL4、MySQL 分区管

2020-05-27 10:15:40 119

原创 MySQL(十一):InnoDB 索引与算法(中篇)

文章目录1、简述2、二分查找法2.1、二分查找法子InnoDB存储引擎中的应用3、哈希表(Hash)3.1、哈希函数的构造3.2、Hash冲突的解决3.4、MySQL为什么没有采用hash表作为索引算法4、二叉查找树(BST)4.1、MySQL为什么没有采用二叉查找树(BST)作为索引算法5、红黑树5.1、MySQL为什么没有采用红黑树作为索引算法6、平衡二叉树(AVL)6.1、MySQL为什么没...

2020-04-06 12:37:32 107

原创 MySQL(十):InnoDB 索引与算法(上篇)

文章目录1、简述2、InnoDB 存储引擎支持的索引2.1、聚集索引(Clustered Indexes)和 二级索引(Secondary Index)2.2、聚集索引是如何实现快速查询的2.3、二级索引与聚簇索引的关系2.4、全文索引(Fulltext Indexes)2.5、InnoDB索引的物理结构2.6、排序索引构建2.6.1、为将来的索引增长保留B-tree页面空间2.6.2、排序索引构...

2020-04-04 15:39:15 75

原创 MySQL(九):InnoDB 表空间(Tables)
原力计划

本节着重分析一下表空间,通过本节我们将清楚以下几个问题:1、什么是表空间(Tablespace)?2、InnoDB 存储引擎有哪些表空间(Tablespace)?3、InnoDB 存储引擎中的表空间(Tablespace)有什么用?4、表空间(Tablespace)有哪些组成部分?及各个表空间的作用?文章目录1、简述2、InnoDB 逻辑存储结构2.1、段(segment)2.2、区(e...

2020-03-21 21:51:30 180

原创 MySQL(八):InnoDB 日志缓冲区(Log Buffer)

1、简述当在MySQL中对InnoDB表进行更改时,这些更改首先存储在InnoDB日志缓冲区的内存中,然后写入通常称为重做日志(redo logs)的InnoDB日志文件中。日志缓冲区是内存存储区域,用于保存要写入磁盘上的日志文件的数据。日志缓冲区大小由innodb_log_buffer_size 变量定义,默认大小为16MB。日志缓冲区的内容定期刷新到磁盘。较大的日志缓冲区可以运行大型事...

2020-03-08 15:39:06 481

原创 MySQL(七):InnoDB 自适应Hash索引(Adaptive Hash Index)

文章目录1、简述2、AHI(Adaptive Hash index)创建条件及注意事项3、AHI(Adaptive Hash index)监控3.1、通过 *show engine innodb status* 命令查看AHI状态3.2、通过 information_schema.innodb_metrics 来监控AHI运行状态4、参考文献1、简述哈希(hash)查找非常快,一般情况下时间复...

2020-03-08 11:38:49 99

原创 MySQL(六):InnoDB 变更缓冲区(Change Buffer)

文章目录1、简述2、配置变更缓冲区3、配置变更缓冲区最大大小4、监视变更缓冲区5、==变更缓冲区==常见问题5.1、哪些类型的操作会修改二级索引并导致修改缓存?5.2、InnoDB ==变更缓冲区== 的存在有什么好处?5.3、==变更缓冲区==是否支持其他类型的索引?5.4、InnoDB将多少空间用于==变更缓冲区==?5.5、如何确定 ==变更缓冲区== 的当前大小?5.6、何时会发生==变更...

2020-03-07 21:34:32 130

原创 MySQL(五):InnoDB 缓冲池(Buffer Pool)

文章目录1、简述2、数据页操作逻辑2.1、读取页操作2.2、修改页操作3、缓冲池中数据页类型4、缓冲池组件4.1、缓冲池实例(Buffer Pool Instance)4.2、缓冲块(Buffer chunks)4.3、页链表4.4、Mutex4.5、Page_hash5、缓冲池LRU算法6、缓冲池配置7、使用InnoDB标准监视器监视缓冲池7.1、InnoDB缓冲池指标2、参考文献1、简述I...

2020-03-07 17:00:05 82

原创 MySQL(四):InnoDB 体系架构

1、InnoDB 体系架构简述InnoDB 存储引擎架构分为两部分,一个是InnoDB内存结构,另一个是InnoDB磁盘结构。InnoDB 存储引擎采用了后写机制(还有人称为日志先行策略),也就是说当对数据进行修改时,先记录在内存中,然后由数据库线程刷新到磁盘文件。事务的操作就会记录成 Redo Log (重做日志),然后转换为顺序的IO来提交事务。也就是说当事务记录到日志中之后,就表示事务...

2020-03-06 22:11:30 87

原创 MySQL(三):常用及不常用的存储引擎

本文主要对MySQL常用存储引擎进行介绍,从整体上对MySQL存储引擎有个了解,后续会有文章对InnoDB存储引擎进行纵向分析。文章目录1、简述2、MySQL 支持的存储引擎2.1、InnoDB 存储引擎2.2、MyISAM 存储引擎2.3、Memory 存储引擎2.4、Archive 存储引擎2.5、Merge 存储引擎2.6、Federated 存储引擎2.7、其它存储引擎3、MySQL...

2020-03-06 17:30:52 173

原创 MySQL(二):一条SQL查询语句的执行过程

文章目录1、简述2、SQL 的执行过程2.1、连接器2.1.1、通信方式2.1.2、TCP/IP2.1.3、命名管道和共享内存2.1.4、Unix域套接字2.2、查询缓存2.2.1、缓存条件2.2.2、缓存失效2.3、语法解析器2.4、查询优化器2.5、执行器3、参考文献1、简述MySQL是怎样运行的?本文就从一条查询SQL在MySQL的执行过程来拆解一下都经过了那些流程处理,以加深我们对My...

2020-02-16 22:24:18 151

原创 MySQL(一):整体逻辑架构

文章目录1、MySQL整体逻辑架构2、MySQL逻辑架构组件2.1、Connectors(连接器组件)2.2、Management Serveices & Utilities(服务管理和工具组件)2.3、Connection Pool(连接池组件)2.4、SQL Interface(SQL接口组件)2.5、Parser(查询解析器组件)2.6、Optimizer(查询优化器组件)2.7、C...

2019-12-29 20:45:32 141 1

原创 Apache Calcite 论文翻译

Apache Calcite 是一个基础软件框架,可提供查询处理,优化和查询语言支持,目前已支持多种流行的开源数据处理系统,例如Apache Hive,Apache Storm,Apache Flink,Druid和MapD。

2019-12-25 19:24:05 203

原创 JDBC API 4.2(十二):SQLException 源码分析

当JDBC在与数据源交互期间遇到错误时,它将抛出SQLException实例,而不是Exception。

2019-12-15 17:50:14 56

原创 JDBC API 4.2(十一):java.sql.Wrapper 接口源码分析

java.sql.Wrapper 是 JDBC 的接口,当相关实例实际上是代理类时,该接口提供检索委托实例的功能。

2019-12-15 16:35:06 470

原创 JDBC API 4.2(十):DatabaseMetaData 接口源码分析

1、简介DatabaseMetaData 接口提供了获取数据库元数据的方法,例如数据库名称,数据库版本,驱动程序名称,表总数,视图总数等。该接口由驱动程序供应商实现,以使用户了解数据库管理系统(DBMS)的功能以及与之结合使用的基于JDBC技术的驱动程序。不同的DBMS通常支持不同的功能,以不同的方式实现功能以及使用不同的数据类型。 另外,驱动程序可以在DBMS提供的功能之上实现功能。 该接...

2019-12-08 20:18:52 66

原创 JDBC API 4.2(九):ResultSetMetaData 接口源码分析

1、简介ResultSetMetaData 对象用于收集ResultSet的所有信息,例如列的类型和属性,列数,列的名称,列的数据类型等。简单来说,它用于收集 ResultSet 的信息。ResultSetMetaData 封装了描述 ResultSet 对象的数据,内部提供了大量的方法来获取 ResultSet 的信息下面的代码片段创建了 ResultSet 对象 rs,ResultSet...

2019-12-08 20:18:15 81

原创 JDBC API 4.2(八):ResultSet 接口源码分析

文章目录1、简介2、ResultSet 类图3、ResultSet 重要方法4、ResultSet 类型TYPE_FORWARD_ONLYTYPE_SCROLL_INSENSITIVETYPE_SCROLL_SENSITIVE5、ResultSet 并发性6、Cursor Holdability(游标可保持性)7、示例7.1、从行中检索列值7.2、更新ResultSet对象中的行7.3、使用 St...

2019-11-24 22:42:48 278

原创 JDBC API 4.2(七):CallableStatement 接口源码分析

文章目录1、简述2、类图3、示例3.1、单个结果集3.2、多个结果集3.3、带参数的存储过程3.3.1、带有输入参数(IN)的存储过程3.3.2、带有输出参数(OUT)的存储过程1、简述CallableStatement 是用于执行SQL存储过程的。JDBC API提供了存储过程SQL转义语法,该语法允许所有RDBMS以标准方式调用存储过程。Connection 接口提供了 prepareC...

2019-11-24 17:50:49 93

原创 JDBC API 4.2(六):PreparedStatement 接口源码分析

文章目录1、简述2、PreparedStatement 类图3、为什么要使用PreparedStatement?4、PreparedStatement 接口常用方法5、PreparedStatement 性能6、PreparedStatement 接口示例6.1、使用 PreparedStatement6.2、复用PreparedStatement1、简述Java JDBC PreparedS...

2019-11-24 15:28:44 172

原创 JDBC API 4.2(五):Statement 接口源码分析

在本文中,我们将通过示例学习常用的JDBC Statement接口方法。文章目录1、简述2、Statement 类图3、Statement 接口常用方法3.1、boolean execute(String sql) throws SQLException3.2、boolean execute(String sql,int autoGeneratedKeys) throws SQLExcepti...

2019-11-17 16:20:11 51

原创 JDBC API 4.2(四):Connection 接口源码分析

在本文中,我们将讨论如何创建Connection以及如何使用Connection接口连接到特定数据库。文章目录1、简述2、Connection 类图3、Connection 接口常用方法3.1、createStatement()3.2、createStatement(int resultSetType, int resultSetConcurrency)3.3、createStatement(...

2019-11-17 16:18:59 93

原创 JDBC API 4.2(三):DriverManager 源码分析

文章目录简述什么是 DriverDriver 接口源码Connection connect(String url, java.util.Properties info)boolean acceptsURL(String url)DriverPropertyInfo[] getPropertyInfo(String url, java.util.Properties info)int getMajo...

2019-11-15 17:13:12 77

原创 JDBC API 4.2(二):编程步骤

文章目录step 1 : 引入mysql-jdbc驱动包step 2 : 加载驱动step 3 : 建立与数据库的连接step 4 : 创建Statementstep 5 : 执行SQL语句step 6 : 关闭连接try-with-resourcestep 1 : 引入mysql-jdbc驱动包我们通过JDBC API 访问数据库时,需要用到第三方的驱动类,这些驱动类根据JDBC API 规...

2019-11-15 17:11:58 121

原创 【Spark】Task not serializable exception while running apache spark job

文章目录1、概述2、问题重现3、问题分析4、解决方法4.1、仅在map中传递lambda函数中声明实例4.2、将方法封装为高阶函数4.3、使未序列化的类继承 java.io.Serializable 接口4.4、注册序列化类(适用第三方包)5、避免序列化问题的经验1、概述在使用spark编写分布式数据计算作业的过程中,我遇到了很多问题,今天跟大家分享一个 spark 作业序列化的问题,我们看一...

2019-10-15 17:41:56 57

原创 Ignite(一):JMX port for Ignite in docker

背景介绍我们使用docker容器部署了ignite集群,在使用过程中发现占用内存很高,50万条数据占用了8个G内存,于是就想看一下容器内部应用的堆栈信息,分析一下。一开始我在容器创建脚本中加入了以下配置,结果端口无法访问。经过再三查阅资料,需要以下配置才可以:修改 ignite.sh 脚本if [ -n "$JMX_PORT" ]; then JMX_MON="-Dcom.s...

2019-10-15 16:24:41 121

原创 JDBC API 4.2(一):开篇

JDBC 4.2 是Java SE 8的一部分,本系列文章基于JDK 1.8 对 JDBC 4.2 进行学习:文章目录1、JDBC 简介2、JDBC 架构2.1、常用的JDBC组件3、JDBC 4.2 新特性3.1、增加了REF_CURSOR支持3.2、添加java.sql.DriverAction接口3.3、添加java.sql.SQLType接口3.4、添加java.sql.JDBCTyp...

2019-08-25 15:23:08 200

原创 Java集合框架(二十一):HashTable 源码分析

文章目录1、HashTable 简介1.1、HashTable 定义1.2、HashTable 属性1.3、HashTable 构造方法1.3.1、Hashtable()1.3.2、Hashtable(int initialCapacity)1.3.3、Hashtable(int initialCapacity, float loadFactor)1.3.4、Hashtable(Map<? ...

2019-08-18 17:33:52 151 2

原创 Java集合框架(二十):TreeMap 源码解析

文章目录1、TreeMap 简介1.1、红黑树(Red Black Tree)简述1.1.1、二叉查找树(BST)1.1.1.1、二叉查找树性质1.1.2、红黑树(Red Black Tree)1.1.2.1、红黑树性质2、TreeMap 源码分析2.1、TreeMap 的定义2.2、TreeMap 属性2.3、TreeMap 构造函数2.3.1、TreeMap()2.3.2、TreeMap(Co...

2019-08-18 15:55:10 87

原创 Java集合框架(十九):LinkedHashMap 源码分析

文章目录1、LinkedHashMap 简介2、LinkedHashMap 数据结构2.1、Entry 的继承体系3、LinkedHashMap 源码分析3.1、LinkedHashMap 类图3.2、LinkedHashMap 构造函数3.3、LinkedHashMap 成员变量4、常用方法源码分析4.1、containsValue( Object value)4.2、get( Object k...

2019-08-11 23:57:39 136 1

原创 Java 常识(014):什么是AIO、BIO、NIO

本文旨在理解Java IO的几种类型,不会过多深入讲解,不过笔者已经计划用一个系列来讲解IO,敬请期待。。。文章目录1、Java IO 简介2、BIO(同步阻塞I/O模型)2.1、什么是BIO2.2、BIO 阻塞IO模型2.3、BIO网络编程3、AIO(异步非阻塞I/O模型)3.1、什么是AIO(Asynchronous I/O)3.2、AIO 异步IO模型3.3、AIO 网络编程4、NIO(...

2019-08-11 01:54:47 93

原创 Java 常识(013):Java中的super关键字

文章目录1、Java 中 super 是什么2、为什么要用 super 关键字3、Java 中 super 的用法3.1、使用 super 调用父类的构造方法3.2、引用父类实例变量3.3、调用父类方法4、super 关键字与 this 关键字的区别1、Java 中 super 是什么java中的super关键字是一个引用变量,用于引用直接父类对象。每当创建子类的实例时,父类的实例被隐式创建...

2019-08-10 23:39:00 791

原创 Java 8(七):新的Date 和 Time API

文章目录1、为什么会引入新的API2、java.time 包2.1、java.time2.2、java.time.chrono2.3、java.time.format2.4、java.time.temporal2.5、java.time.zone3、用于表示本地日期和时区的新类3.1、java.time.LocalDate3.1.1、创建当前日期和特定日期3.1.2、从LocalDate获取年,月...

2019-08-02 14:58:36 267

原创 Java 8(六):Optional 空值(NULL)处理

文章目录1、简介2、什么是null类型3、只返回null有什么问题?4、Java 8 Optionals 如何提供解决方案?4.1、创建 Optional 对象4.1.1、Optional.empty()4.1.2、Optional.of()4.1.3、Optional.ofNullable()4.2、默认/缺省值和操作4.3、使用过滤方法(filter)排除某些值5、Optional 内部是如何...

2019-07-21 23:06:47 156

原创 Java 8(五):默认方法(Default Methods)

文章目录1、简介2、java 8中的默认方法是什么?3、为什么java 8中需要默认方法?4、调用默认方法时如何解决冲突?1、简介Java 程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供具体的实现,或者从父类中继承它。但是,一旦接口更新,现有的实体类为了适配接口也需要进行更新。Java 8为了解决这一问题引入了一种新的机制。Java 8中的接口现在...

2019-07-21 11:36:30 78

原创 Java 8(四):Stream 收集器

文章目录1、Collectors 收集器简介2、Collectors 收集器常用静态方法3、预定义收集器3.1、归约汇总3.1.1、Collectors.counting()3.1.2、Collectors.minBy、Collectors.maxBy3.1.3、Collectors.summingInt、Collectors.summingLong、Collectors.summingDoubl...

2019-07-18 23:05:57 65

原创 Java 8(三):Stream 流的认识及简单应用

文章目录1、什么是流(Stream)2、为什么需要流(Stream)3、Java 流(Stream) 和 集合(Collection)4、流(Stream)的构成5、流(Stream)的使用5.1、流(Stream)的操作类型5.2、流(Stream)的创建5.2.1、空流(Empty Stream)5.2.2、通过集合(Collection)创建5.2.3、通过数组(Array)创建5.2.4、...

2019-07-15 22:26:48 79

原创 Java 8(二):Lambda 表达式

文章目录1、认识Lambda表达式1.1、Lambda表达式语法1.2、Lambda 表达式示例2、函数式接口(Functional interfaces)2.1、Predicate2.2、Consumer2.3、Function3、类型检查4、类型推断5、变量作用域5.1、Lambda使用局部变量的限制5.2、为什么对局部变量限制6、方法引用6.1、如何构建方法引用6.2、Lambda构造函数引...

2019-07-13 23:39:02 98

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