自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

https://juejin.cn/user/4248168663101239/posts

https://juejin.cn/user/4248168663101239/posts

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

原创 Dubbo学习——SpringBoot上手整合Dubbo

SpringBoot上手整合Dubbo一. Dubbo架构图二. 搭建一个Common模块存放接口+实体类①. UserAddress 实体类②. 用户和订单接口三. 搭建一个生产者Provider模块①. pom.xml依赖导入②. 用户实现类UserServiceImpl③. 启动类上注解添加④. 配置文件修改application.yml或者provider.xml配置文件⑤. 启动provider服务进行测试四. 搭建消费者Consumer模块①. pom.xml配置文件②. 订单的实现类Order

2021-07-21 22:14:59 322 4

原创 Dubbo学习——Dubbo可视化监控中心安装

可视化监控中心安装一. Github上将项目克隆到本地二. 修改注册中心的地址为Zookeeper的地址三. 启动Zookeeper,直接本地开启,没拉集群四. 用Maven打包项目,并启动项目五. 启动前端vue项目Dubbo官方为我们提供了一个监控中心dubbo-admin,可以让我们在使用Dubbo时,监控和控制服务的状态,使用监控面板更方便地管理服务,不过这个监控中心是一个单独的项目,需要我们下载并启动。一. Github上将项目克隆到本地git clone https://gith

2021-07-21 20:56:27 957 17

原创 Vector---JDK1.8源码分析

Vector---JDK1.8源码分析一. Vector介绍二. Vector数据结构三. Vector源码分析①. Vector继承关系②. 基本属性③. 构造方法④. 添加元素方法_add()1. add()2. ensureCapacityHelper()3. grow(minCapacity);4. hugeCapacity⑤. 根据获取元素_get()⑥. 根据下标删除元素_remove()⑦. setSize()方法四. Vector与Arraylist的区别一. Vector介绍Vec

2021-07-20 17:12:02 282 5

原创 LinkedHashSet---JDK1.8源码分析

LinkedHashSet一. LinkedHashSet介绍二. LinkedHashSet源码分析①. 类的继承关系②. 构造函数③. 构造方法都是调用父类的super(initialCapacity, loadFactor, true);一. LinkedHashSet介绍LinkedHashSet是对LinkedHashMap的简单包装,对LinkedHashSet的函数调用都会转换成合适的LinkedHashMap方法。LinkedHashSet是有序的,它是按照插入的顺序排序的。二.

2021-07-20 15:55:35 184

原创 HashSet---JDK1.8源码分析

HashSet一. HashSet介绍二. HashSet数据结构三. HashSet源码分析①. 类的继承关系②. 类的属性③. HashSet构造函数④. 常见使用的方法分析一. HashSet介绍HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet 是Set接口的实现类,Set存在的最大意义区别于List就是,Set中存放的元素不能够重复,就是不能够有两个相同的元素存放在

2021-07-20 15:35:46 188

原创 Collections.synchronizedList---JDK1.8源码分析

Collections.synchronizedList---JDK1.8源码分析一. Collections.synchronizedList介绍二. Collections.synchronizedList构造函数和属性三. Collections.synchronizedList关键方法_同步四. Collections.synchronizedList_未同步方法五. SynchronizedList、Vector概述①. 构造机制不同②. 扩容机制不同③. 同步机制不同一. Collecti

2021-07-20 15:04:58 1101 4

原创 CopyOnWriteArraySet---JDK1.8源码分析

CopyOnWriteArraySet一.CopyOnWriteArraySet介绍二. CopyOnWriteArraySet数据结构三. CopyOnWriteArraySet源码分析①. 类的继承关系②. 类的属性③. 类的构造函数④. 核心函数分析四. CopyOnWriteArraySet测试案列一.CopyOnWriteArraySet介绍它是线程安全的无序的集合,可以将它理解成线程安全的HashSet,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类都继承于共

2021-07-20 12:01:12 201 1

原创 SynchronousQueue---JDK1.8源码分析

SynchronousQueue一. SynchronousQueue介绍二. SynchronousQueue数据结构三. SynchronousQueue源码分析①. 类的继承关系②. 类的属性③. 类的构造函数④. 类的内部类_Transferer⑤. 类的内部类_TransfererStack1. 类的属性和继承关系2. 类的内部类_SNode类3. 类的构造函数4. tryMatch函数5. isFulfilling函数6. transfer函数7. awaitFulfill函数8. shoul

2021-07-20 10:11:01 277 3

原创 LinkedBlockingQueue---JDK1.8源码分析

LinkedBlockingQueue---JDK1.8源码分析一. LinkedBlockingQueue介绍二. LinkedBlockingQueue数据结构三. LinkedBlockingQueue源码分析①. 类的继承关系②. 类的内部类Node③. 类的属性④. 类的构造函数⑤. 阻塞插入操作_put⑥. 非阻塞插入_offer⑦. 阻塞取出_take⑧. 非阻塞取出 poll⑨. 提取元素:peek()和element()⑩. 移除元素 remove的实现原理四. LinkedBlockin

2021-07-19 22:59:41 179

原创 ArrayBlockingQueue---JDK1.8源码分析

ArrayBlockingQueue一. ArrayBlockingQueue介绍二. ArrayBlockingQueue数据结构三. ArrayBlockingQueue源码分析①. 类的继承关系②. 类的属性③. 类的构造函数④. put()方法④. enqueue() 方法⑤. offer()方法⑥. add()方法⑦. poll()方法⑦. dequeue() 方法⑧. take()方法⑨. remove()方法⑩. clear() 方法四. ArrayBlockingQueue方法总结一. A

2021-07-19 21:49:57 181 1

原创 Collections.SynchronizedMap---JDK1.8源码分析

Collections.SynchronizedMap---JDK1.8源码分析一. Collections.SynchronizedMap基本变量二. Collections.SynchronizedMap继承关系三. Collections.SynchronizedMap构造函数四. Collections.SynchronizedMap的主要方法五. 总结一. Collections.SynchronizedMap基本变量 private static final long serialV

2021-07-19 18:16:34 252

原创 ConcurrentHashMap---JDK1.7源码分析

ConcurrentHashMap---JDK1.7源码分析一. ConcurrentHashMap---Jdk1.7源码分析①. ConcurrentHashMap概述②. ConcurrentHashMap底层数据结构③. HashEntry数组④. Segment结构⑤. ConcurrentHashMap成员变量⑥. ConcurrentHashMap构造函数⑦. ConcurrentHashMap的put操作⑧. ConcurrentHashMap的get()操作⑨. ConcurrentHash

2021-07-19 17:36:54 169

原创 TreeMap---JDK1.8源码分析

TreeMap一. TreeMap介绍二. TreeMap示例三. TreeMap数据结构四. TreeMap源码分析①. 类的继承关系②. 类的属性③. 存储结构④. 类的构造函数⑤. put(K key,V value):将键值对(key,value)添加到TreeMap中⑥. get(Object key)获取元素⑦. 使用getEntryUsingComparator函数来完成获取元素⑧. remove(Object key)删除指定下标节点⑨. deleteEntry(Entry一. TreeMa

2021-07-19 15:02:02 249 1

原创 十大排序算法——桶排序

桶排序一. 桶排序介绍二. 动画演示三. 思路分析四. 复杂度分析五. Java代码实现一. 桶排序介绍桶排序的基本思想是:把数组 arr 划分为n个大小相同子区间(桶),每个子区间各自排序,最后合并。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。二. 动画演示三. 思路分析找出待排序数组中的最大值max、最小值min创建桶,并确定每一个桶的区间范围。具体创建多少个桶,如何确定桶的区间范围,有很多种不同的方式。一般采用创建桶的数量等于原始数列的元素数量

2021-07-18 22:09:07 283

原创 十大排序算法——计数排序

计数排序一. 计数排序介绍二. 计数排序基础版三. 计数排序改进版四. 优化最终版本_空间节省一. 计数排序介绍计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。算法分析当输入的元素是n 个0到k之间的整数时,它的运行时间是 O(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取

2021-07-18 21:40:54 5585 4

原创 十大排序算法——基数排序

基数排序

2021-07-18 20:42:42 117

原创 十大排序算法——选择排序

选择排序一. 动图演示二. 思路分析三. 复杂度分析四. Java代码实现一. 动图演示二. 思路分析简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序三. 复杂度分析不管原始数组是否有序,时间复杂度都是O(n^2),空间复杂度是O(1),因为只定义了两个辅助变量,与n的大小无关,所以空间复杂度为O(1)四. Java代码实现package com.xizi.sort

2021-07-18 17:49:20 81

原创 十大排序算法——插入排序

插入排序一. 动图演示二. 思路分析三. 复杂度分析四. Java代码实现一. 动图演示二. 思路分析从第二位开始遍历,将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。三. 复杂度分析时间复杂度: 如果数组本来就是有序的,则数组的最好情况下时间复杂度为O(n)。 如果数组恰好是倒=倒序,所以最坏情况下时间复杂度为O(n2)。平均时间复杂度(n+n2 )/2,所以平均时间复杂度为O(n2)空间复杂度:插入排序算法,只需要两个变量暂存当前数,以及下标,与

2021-07-18 17:44:35 94

原创 十大排序算法——冒泡排序

冒泡排序一. 动图演示二. 思路分析三. 复杂度分析四. Java代码实现一. 动图演示二. 思路分析冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序三. 复杂度分析不管原始数组是否有序,时间复杂度都是O(n^2)空间复杂度是O(1),因为只定义了一个辅助变量,与n的大小无关,所以空间复杂度为O(1)四. Java代码实现package com.xizi.sort;public clas

2021-07-18 17:36:58 145

原创 十大排序算法——希尔(shell)排序

希尔(shell)排序一. 动画演示二. 思路分析三. 复杂度分析四. Java 代码实现一. 动画演示二. 思路分析希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组

2021-07-18 17:01:25 309 1

原创 Java反射学习----Class.forName和ClassLoader的区别

Class.forName和ClassLoader的区别一. 类装载过程①. 加载②. 链接③. 初始化二. Classloder.loaderClass(String name)方法分析三. Class.forName(String name)方法分析四. Class.forName和ClassLoader的区别五. 代码测试六. 应用场景一. 类装载过程①. 加载JVM把class文件字节码加载到内存中,并将这些静态数据装换成运行时数据区中方法区的类型数据,在运行时数据区堆中生成一个代表这个类

2021-07-18 16:27:15 225

原创 MySQL进阶学习---MySQL锁问题

MySQL锁问题一. 锁概述二. 锁分类三. 存储引擎对锁的支持情况四. MyISAM 表锁①. 如何加表锁②. 读锁案例1. 准备环境2. 客户端1③. 写锁案例④. 结论⑤. 查看锁的争用情况五. InnoDB 行锁①. 行锁介绍②. 事务及其ACID属性③. 并发事务处理带来的问题④. 事务隔离级别⑤. InnoDB 的行锁模式⑥. 案例准备工作⑦. 行锁基本演示⑧. 无索引行锁升级为表锁⑨. 间隙锁危害⑩. InnoDB 行锁争用情况六. 常用SQL技巧①. SQL执行顺序②. 正则表达式使

2021-07-17 21:34:33 476 1

原创 MySQL进阶学习---内存管理及优化和并发参数调整

内存管理及优化和并发参数调整一. 内存优化原则二. MyISAM 内存优化①. key_buffer_size②. read_buffer_size③. read_rnd_buffer_size三. InnoDB 内存优化①. innodb_buffer_pool_size②. innodb_log_buffer_size四. Mysql并发参数调整①. max_connections②. back_log③. table_open_cache④. thread_cache_size⑤. innod

2021-07-17 20:46:26 400 1

原创 MySQL进阶学习---查询缓存优化

查询缓存优化一. 查询缓存操作流程二. 查询缓存配置①. 查看当前的MySQL数据库是否支持查询缓存②. 查看当前MySQL是否开启了查询缓存③. 查看查询缓存的占用大小④. 查看查询缓存的状态变量:⑤. 开启查询缓存⑥. 查询缓存测试⑦. 查询缓存失效的情况①. SQL 语句不一致的情况②. 当查询语句中有一些不确定的时,则不会缓存。③. 不使用任何表查询语句④. 查询 mysql, information_schema或 performance_schema 数据库中的表时,不会走查询缓存。⑤. 所

2021-07-17 20:29:58 157

原创 JUC并发学习----Java内存模型_volatile_final原理

Java内存模型一. Java内存模型概念二.Java内存模型的组成①. 主内存②. 工作内存三. JVM内存操作的并发问题①. 工作内存数据一致性②. 指令重排序优化四. Java内存间的交互操作五. Java内存交互的基本操作①. lock (锁定)②. unlock (解锁)③. read (读取)④. load (载入)⑤. use (使用)⑥. assign (赋值)⑦. store (存储)⑧. write (写入)六. Java内存交互基本操作的3个特性①. 原子性(Atomicity)②.

2021-07-17 17:23:44 205 1

原创 数据库基础知识---主键和索引的关系

主键和索引的关系一. 主键二. 索引三. 主键和索引总结一. 主键主键的唯一作用就是唯一标识表中的某一行数据。 分为单一主键和联合主键单一主键:只用一列就能唯一标识一行。联合主键:当使用一列已经不能唯一标示一行的时候,就要采用多列唯一标识一行,就是联合主键。二. 索引索引的作用就是提高数据的检索速度。分为单一索引和联合索引:单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比in

2021-07-17 15:39:38 1999

原创 MySQL进阶学习---优化SQL(三)_SQL优化案列

优化SQL一. 大批量插入数据_优化①. 环境搭建②. 主键顺序插入_优化速度③. 插入ID顺序排列数据④. 插入ID无序排列数据⑤. 关闭唯一性校验⑥. 手动提交事务二. 优化insert语句三. 优化order by语句①. 环境准备②. FileSort 排序③. using index③. 多字段排序④. Filesort 的优化1. 两次扫描算法2. 一次扫描算法3. sort_buffer_size 和 max_length_for_sort_data 系统变量四. 优化group by

2021-07-16 23:28:28 167

原创 MySQL进阶学习---优化SQL(二)_索引

索引的使用一. 验证索引提升查询效率二. 索引的使用_准备环境三. 避免索引失效①. 全值匹配 ,对索引中所有列都指定具体值②. 最左前缀法则_走索引③. 违反最左前缀法则 , 索引失效④. 范围查询右边的列,不能使用索引⑤. 不要在索引列上进行运算操作, 索引将失效⑥. 字符串不加单引号,造成索引失效⑦. 尽量使用覆盖索引,避免select *⑧. 如果查询列,超出索引列,也会降低性能。⑨. 用or分割开的条件⑩. 以%开头的Like模糊查询,索引失效十一. 如果MySQL评估使用索引比全表更慢

2021-07-16 22:31:47 369 1

原创 MySQL进阶学习---优化SQL(一)_SQL分析

优化SQL一. 查看SQL执行频率二. 定位低效率执行SQL①. 慢查询日志②. show processlist三. explain分析执行计划①. 创建万级数据②. 查询SQL语句的执行计划③. explain 分析每个字段环境准备④. explain 之 id1. id 相同表示加载表的顺序是从上到下2. id 不同id值越大,优先级越高,越先被执行3. id 有相同,也有不同,同时存在⑤. explain 之 select_type⑥. explain 之 table⑦. explain

2021-07-16 21:38:18 222 1

原创 MySQL进阶学习---存储引擎

存储引擎一. MySQL的体系结构概览①. 连接层②. 服务层③. 引擎层④. 存储层二. 存储引擎①. 存储引擎概述②. 各种存储引擎特性1. InnoDB1.1. 事务控制1.2. 外键约束1.4. 存储方式2. MyISAM2.1. 不支持事务2.2. 文件存储方式3. MEMORY4. MERGE一. MySQL的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities

2021-07-15 22:54:08 151 1

原创 Java基础---手写LRU算法

手写LRU算法一. 巧用LinkedHashMap完成LRU算法二. 哈希表 + 双向链表一. 巧用LinkedHashMap完成LRU算法package com.xizi.LRU;import java.util.LinkedHashMap;import java.util.Map;//使用LinkedHashMap实现LRUpublic class LRU<K,V> extends LinkedHashMap<K, V> implements Map<K,

2021-07-15 22:10:41 858

原创 Redis学习----Redis分布式锁

Redis分布式锁一. Springboot整合Redis搭建超卖项目①. 创建两个Module:Redis01,Redis02②. pom.xml 依赖包导入③. application.properties④. redisTemplate配置类⑤. Controller 层⑥. 测试_http://localhost:1111/buy_goods二. Redis分布式锁_JVM层面的加锁_synchronized三. Redis分布式锁_Nginx轮询转发①. Nginx配置文件修改内容②. 启动两个微

2021-07-15 21:59:58 320

原创 Spring学习----Spring循环依赖_Debug讲解

Spring循环依赖一. 什么是循环依赖?二. Spring循环依赖纯Java代码验证案例①. 构造器方式注入依赖(不可行)②. 以set方式注入依赖(可行)三. Spring循环依赖bug演示①. beans:A,B②. beans.xml③. 运行类四. Spring内部通过三级缓存来解决循环依赖①. 使用singleton配置Bean②. 三级缓存介绍④. Spring循环依赖debug前置知识⑤. A / B两对象在三级缓存中的迁移说明五. Spring循环依赖debug源码①. DEBUG一步一步

2021-07-14 23:24:08 481

原创 Spring学习----Spring4.x和5.xAOP执行顺序

Spring4.x和5.xAOP执行顺序一. AOP常用注解二.Spring4的aop测试案例①. pom.xml②. 启动类③. 接口CalcService④. 接口实现类CalcServiceImpl新加@Service⑤. 切面类MyAspect并为切面类新增两个注解⑥. 测试类⑦. 修改测试类,让其抛出算术异常类⑧. 小结三. Spring5的aop测试案例①. 修改POM②. 修改测试类③. 修改测试类,让其抛出算术异常类④. 总结一. AOP常用注解@Before 前置通知:目标方法之

2021-07-14 21:44:22 369 1

原创 多线程学习---AbstractQueuedSynchronizer分析

AbstractQueuedSynchronizer分析一. AQS是什么?①. AQS简单介绍②. AQS为什么是JUC内容中最重要的基石?二. AQS内部体系架构①. AQS内部架构图②. 详解AQS内部代码有什么?③. CLH队列(三个大牛的名字组成),为一个双向队列④. Node内部结构三. 从ReentrantLock开始解读AQS①. ReentrantLock结构图②. 模拟银行办理业务案列③. lock方法开始看看公平和非公平④. lock()源码_我这里分析的非公平锁⑤. acquire(

2021-07-13 22:02:08 368

原创 多线程学习---LockSupport

LockSupport一. LockSupport介绍二. wait和Notify限制三. await和Signal限制四. LockSupport方法介绍①. 什么是LockSupport?②. 阻塞方法③. 唤醒方法(注意这个permit最多只能为1)五. LockSupport案例解析六. LockSupport 面试题目①. 为什么可以先唤醒线程后阻塞线程?②. 为什么唤醒两次后阻塞两次,但最终结果还会阻塞线程?一. LockSupport介绍LockSupport是用来创建锁和其他同步类的

2021-07-13 20:44:49 204 1

原创 ShardingSphere学习----ShardingSphere-Proxy

ShardingSphere-Proxy一. ShardingSphere-Proxy介绍二. 本地安装解压ShardingSphere-Proxy二. Sharding-Proxy 配置(分库分表)①. 修改配置文件server.yaml②. 修改配置文件config-sharding.yaml③. 添加Mysql驱动jar④. 启动 Sharding-Proxy 服务⑤. 通过 Sharding-Proxy 启动端口进行连接⑥. 进行 sql 命令操作看到只有一个库⑦. 在 sharding_db 数

2021-07-13 17:56:23 2843 1

原创 ShardingSphere学习----MySQL主从复制

MySQL主从复制一. Sharding-JDBC 实现读写分离二. 主从复制原理三. 搭建一主一从 MySQL环境①. 复制之前 MySQL 目录②. 修改端口号,文件路径③. 把复制修改之后从数据库在 windows 安装服务④. 测试连接⑤. 配置 MySQL 主从服务器⑥. 创建用于主从复制的账号⑦. 测试主从复制效果四. Sharding-JDBC 实现读写分离①. 主库和从库上都建库建表②. 配置读写分离策略③. 测试代码运行一. Sharding-JDBC 实现读写分离为了确保数据库

2021-07-13 17:31:01 842 1

原创 ShardingSphere学习----MySQL分库分表操作

Sharding-JDBC分库分表操作

2021-07-13 17:01:15 249 3

原创 多线程学习---Linux相关命令

Linux相关命令一. Linux命令之top①. 整机:top,查看整机系统新能②. uptime:系统性能命令的精简版二. Linux之cpu查看vmstat①. vmstat②. procs属性③. cpu属性三. Linux之cpu查看pidstat①. mpstat -P ALL 2②. pidstat -u 1 -p 进程编号四. Linux之内存查看free和pidstat①. free 应用程序可用内存数②. pidstat -p 进程号 -r 采样间隔秒数五. Linux之硬盘查看df六

2021-07-12 22:28:53 422 1

avator.png

头像

2021-01-21

空空如也

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

TA关注的人

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