自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (2)
  • 收藏
  • 关注

原创 JVM相关知识

没有具体内容,主要是对网上查阅到的有帮助的博客进行一个汇总,方便以后查阅JVM总体知识,一位大佬的JVM专栏链接:点这里JVM运行时数据区域划分:详细点这里清晰简单点这里TLAB(Thread Local Allocation Buffer 即线程本地分配缓存):每个线程分配一小块私有的堆空间,点这里垃圾收集算法:点这里垃圾收集器:点这里搭配来看特别的,G1收集器点这里特别的特别,G1收集器的卡表和记忆表点这里jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)

2022-02-11 13:15:07 398

原创 Eureka

核心概念整体上可以分为两个主体:Eureka Server 和 Eureka Client,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。Eureka Server: 注册中心服务端注册中心服务端主要对外提供了三个功能:服务注册: 服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表提供注册表: 服务消费者在调用服务

2022-02-08 18:27:56 267

原创 Zookeeper

Zookeeper是什么ZooKeeper是一个分布式协调服务,可用于服务发现、分布式锁、分布式领导选举、配置管理等。ZooKeeper官方架构图如下:这一切的基础,都是ZooKeeper提供了一个类似于Linux文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。既然是一个文件系统,就不得不提ZooKeeper是如何保证数据的一致性的。后面将介绍ZooKeeper如何保证数据一致性,如何进行领导选举,以

2022-02-08 10:05:05 1362

原创 KAFKA

1、体系架构如上图所示,一个典型的Kafka体系架构包括若干Producer(可以是服务器日志,业务数据,页面前端产生的page view等等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer (Group),以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行rebalance。Producer使用push(推)模式将消息发布到broker,Consu

2022-01-30 17:29:00 208

原创 RabbitMQ

简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XM

2022-01-28 15:52:41 117

原创 ELK介绍

ELK工作流程在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。...

2022-01-25 21:08:18 2470

原创 Elasticsearch原理

1、基本概念索引(Index):ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。索引指的是针对某个字段的索引,如果有三个字段,就是三个索引。虽然类似MySQL的数据库,但是还是不一样,可以理解es索引组是只有一张表的MySQL数据库题外话:正排

2022-01-25 16:36:03 2250

原创 Redis基础知识

基本数据类型过期键的删除策略我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则

2022-01-23 17:54:59 551

原创 Redis分布式集群

主从同步增量同步: Redis主节点会将自己存储在Buffer中的操作指令异步同步给从库,从节点收到同步成功指令后会像主节点上报自己同步到文件偏移量。因为Redis主库的Buffer使用的是环形数组数据存储结构,如果Buffer满了会从数组的头部开始覆盖写入,如果主从延迟过大,就会存在Buffer中的写入速度大于同步速度而导致指令丢失的可能。快照同步: 为了解决增量同步主从延迟数据丢失的问题引入了快照同步方式,这个过程较消耗性能。当发现增量同步有丢失数据的风险时,主库会fork一个子进程对主库做一次当

2022-01-23 17:27:59 1987

原创 Redis持久化策略

Redis提供了两张持久化策略:RDB和AOF。一、RDB机制RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。既然RDB机制是通过把某个时刻的所有数据生成一个快照来保存,那么就应该有一种触发机制,是实现这个过程。对于RDB来说,提供了三种机制:save、bgsave

2022-01-22 16:08:41 369

原创 Redis缓存穿透,缓存击穿,缓存雪崩与解决方案

缓存穿透:描述: 缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义解决方案:布隆过滤器:点这里缓存空对象:如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。缓存击穿:描述: key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这

2022-01-22 15:10:32 835

原创 并发基础知识

本文包含以下几个内容:锁:点这里volatile关键字:点这里ThreadLocalLock-Condition线程池ThreadLocalJava的Thread对象维护有着一个ThreadLocalMap对象(是一个Entry数组)。ThreadLocal.set(v)方法就是根据这个ThreadLocal对象计算出数组下标,然后把v注入对应Entry的value字段。所以ThreadLocal其实是提供了保持对象的方法和避免参数传递的方便的对象访问方式,而不是用来解决对象共享访问问题

2022-01-20 20:13:26 182

原创 Set底层结构

常见的Set有以下几种HashSet:底层维护HashMapLinkedHashSet:底层维护LinkedHashMapTreeSet:底层维护TreeMap注意点: LinkedHashSet维护LinkedHashMap的方式是调用super的一个构造方法。也就是说特殊情况下,HashSet也可以实现LinkedHashSet的功能。惊呆了老铁这是什么表演。说出来你可能不信,这篇博客已经结束了。...

2022-01-19 15:39:39 1232

原创 红黑树介绍

一、红黑树的介绍先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。因为一棵由n个结点随机构造的二叉查找树的高度为lgn,所以顺理成章,二叉查找树的一般操作的执行时间为O(lgn)。但二叉查找树若退化成了一棵具有n个结点的线性链后,则这些操作最坏情况运行时间为O(n)。红黑树虽然本质上是一棵二叉查

2022-01-19 13:43:06 185

原创 HashMap底层结构

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMa

2022-01-18 17:40:07 957 2

原创 List底层结构

List的实现类常用的用LinkedListArrayListvectorLinkedList:线程不安全底层结构是双向链表,开销在于需要存储结点信息以及结点指针信息。双向链表是由三部分来组成的:prev、data、nextprev:存储上一个节点的地址data:存储将要存储的数据next:存储下一个节点的地址双向链表的排序方式是没有顺序的;当我们新增一个元素时,只需要修改前一个元素的next和后一个元素的prev即可,删除元素同理;这样使得LinkedList对于新增和删除

2022-01-17 20:51:34 3228

原创 Mybatis

SqlSession作用:向Sql语句传入参数执行Sql语句获取执行Sql语句的结果事务控制

2022-01-17 15:32:43 625

原创 MySQL日志

MySQL中有以下日志文件,分别是:重做日志(redo log)回滚日志(undo log)二进制日志(binlog)中继日志(relay log)错误日志(errorlog)慢查询日志(slow query log)一般查询日志(general log)其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义,二进制日志与中继日志一起实现主从复制。1、重做日志作用:确保事务的持久性。redo日志记录事务执

2022-01-17 11:25:35 82

原创 MySQL基础知识

事务隔离等级三范式

2022-01-15 10:27:24 537

原创 MySQL分库分表分区

有一组数据可以参考:经测试在单表1000万条记录一下,写入读取性能是比较好的. 这样在留点buffer,那么单表全是数字类型的保持在800万条记录以下, 有字符型的单表保持在500万以下.如果按 100库100表来规划,如用户业务:500万100100 = 500亿记录.供参考,具体按按业务做规划基本指标:库物理文件大小<100G表<100字段<200单表记录数<500W....

2022-01-14 10:34:09 226

原创 MySql优化

硬件配置sql一般来说存储过程比一条一条执行其中的各条sql语句块数据类型要用对指选择需要的列,不要SELECT *索引别用OR UNIONLIKE很慢

2022-01-13 13:51:00 266

原创 覆盖索引概念

概念:如果索引包含所有满足查询需要的数据的索引称为覆盖索引(Covering Index),也就是平时所说的不需要回表操作如:有一个T1表。创建了一个联合索引idx_t1_bcd(b,c,d),b、c、d三列作为联合索引查询的结果集和条件都在只使用b、c、d字段,就是覆盖索引...

2022-01-13 10:30:12 246

原创 聚簇索引/非聚簇索引

聚簇索引的叶子节点存放的是主键值和数据行,支持覆盖索引;非聚簇索引的叶子节点存放的是主键值或指向数据行的指针。由于节子节点(数据页)只能按照一颗B+树排序,故一张表只能有一个聚簇索引。非聚簇索引的存在不影响聚簇索引中数据的组织,所以一张表可以有多个辅助索引辅助索引就是一个为了需找主键索引的二级索引。在InnoDB中,辅助索引都是非聚簇索引...

2022-01-13 09:52:42 462

原创 联合索引在B+Tree上的存储结构

有一个T1表,数据如上图。创建了一个联合索引idx_t1_bcd(b,c,d),b、c、d三列作为联合索引,所有索引列都出现在索引树上,并依次比较三列的大小,在B+树上的结构图如下:我们先看T1表,他的主键暂且我们将它设为整型自增的 ,InnoDB会使用主键索引在B+树维护索引和数据文件,然后我们创建了一个联合索引(b,c,d)也会生成一个索引树,同样是B+树的结构,只不过它的data部分存储的是联合索引所在行记录的主键值 (上图叶子节点紫色背景部分)。为什么是主键值,而不是整个行记录呢? 因为这个联.

2022-01-12 20:45:53 1334

原创 B树,B-树,B+树

B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找

2022-01-12 19:47:11 228

原创 MySQL引擎

MyISAM存储引擎MyIsam 的存储文件有三个,后缀名分别是 .frm、.MYD、MYI,其中 .frm 是表的定义文件,.MYD 是数据文件,.MYI 是索引文件。MyIsam 只支持表锁,不支持事务。MyIsam 由于有单独的索引文件,在读取数据方面的性能很高。Myisam是以堆结构进行组织数据,其表容易损坏。InnoDBInnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中

2022-01-12 17:20:56 571 1

原创 MySQL

1、MYSQL架构2、SQL的执行过程3、存储引擎MyISAM/InnoDB(默认)4、优化

2022-01-12 13:59:55 81

原创 Spring加载Bean:AbstractBeanFactory

下载地址

2022-01-11 18:01:00 146

原创 Spring注册Bean:XMLBeanFactory

XMind文件下载地址

2022-01-06 20:38:19 271

原创 Nginx重定向没有斜杠问题

新增如下配置server{ location /yaya-project { proxy_set_header Host $host:$server_port }}注意:如果只配置server{ location /yaya-project { proxy_set_header Host $host }}则会导致request.getServerPort = 80...

2020-05-06 16:46:45 656

原创 CentOs7安装docker

卸载旧版本Docker(如果系统之前没安装过Docker,可以跳过):yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...

2020-05-06 16:05:03 86

原创 centOs7安装openJDK

yum -y install java-1.8.0-openjdk

2020-04-14 18:09:58 506

原创 CentOs7安装zipkin

安装好RabbitMQ后,我们开始整合Zipkin。在较低版本的Spring Cloud中,我们可以自己搭建Zipkin Server,现在我们只能使用官方搭建好的Zipkin Server,地址为:https://github.com/openzipkin/zipkin在cmd窗口下运行下面这条命令(windows下没有curl环境的话,可以在git bash中运行这条命令),下载zipkin...

2020-04-14 17:29:42 544

原创 CentOs7安装rabbitMq

官方文档地址:https://www.erlang-solutions.com/resources/download.html1、安装依赖项yum install -y epel-release2、添加存储库条目wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpmrpm -Uvh er...

2020-04-13 20:59:13 112

原创 mysql5.7操作命令

创建新用户CREATE USER 'user1'@'%' IDENTIFIED BY '07fa533360d9'; ‘%’ - 所有情况都能访问‘localhost’ - 本机才能访问’111.222.33.44‘ - 指定 ip 才能访问注意:mysql5.7下%不包括localhost修改密码update mysql.user set password=password('新...

2020-03-31 17:13:29 225

原创 CentOs7安装mysql5.6

一:卸载旧版本使用下面的命令检查是否安装有MySQL Serverrpm -qa | grep mysql有的话通过下面的命令来卸载掉目前我们查询到的是这样的:[root@hsp ~]# rpm -qa | grep mysqlmysql-libs-5.1.73-7.el6.x86_64如果查询到了,就删除吧rpm -e mysql_libs //普通删除模式rpm -e -...

2020-03-31 16:29:50 80

原创 Centos7开放及查看端口

1、开放端口firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口firewall-cmd --reload # 配置立即生效2、查看防火墙所有开放的端口...

2020-03-31 16:19:35 98

原创 redis配置

打开redis.cof指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求bind 127.0.0.1#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为noprotected-mode yes#redis监听的端口号port 6...

2020-03-24 19:48:42 124

原创 centos7下安装redis-4.0.6

一、安装redis第一步:下载redis安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz第二步:解压压缩包tar -zxvf redis-4.0.6.tar.gz -C 解压目录第三步:yum安装gcc依赖yum install gcc第四步:跳转到redis解压目录下cd redis-4.0.6第五步:编译...

2020-03-24 19:25:44 158

原创 AOP环绕通知引起的java.lang.ClassCastException

踩坑留念:当AOP环绕通知的返回值与客户端实际请求方法的返回值不同时,会报java.lang.ClassCastException而且无法定位报错位置。

2019-01-07 14:03:41 746 1

Spring加载Bean: AbstractBeanFactory.xmind

Spring加载Bean: AbstractBeanFactory.xmind

2022-01-11

Spring注册Bean(XML).xmind

Spring注册Bean(XML)

2022-01-06

空空如也

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

TA关注的人

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