自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (3)
  • 收藏
  • 关注

转载 MySQL索引:聚簇索引和非聚簇索引

参考:https://www.cnblogs.com/crazylqy/p/7615393.html一:MySQL聚簇索引和非聚簇索引1、聚簇索引聚簇索引就是对磁盘上的实际数据重新组织以按照特定的一个或者多个列的值排序的算法特点是存储数据的顺序和索引顺序一致 一般情况下主键会默认生成聚簇索引 且一张表有且只有一个聚簇索引;将数据存储与索引放到了一块,找到索引也就找到了数据。2、非聚簇索引非聚簇索引:数据存储和索引分开放,索引结构的叶子节点指向了数据的对应行,myisam通过 key_

2021-04-28 00:36:54 284

转载 MySQL索引:索引失效的几种情况

一:MySQL索引失效的几种情况1、索引不存储null值更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只能全表扫描。为什么索引列不能存Null值?将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值的特殊性就在于参与的运算大多取值为null。这样的话,null值实际上是不能参与进建索引的过程。也就是说,null值不会像其他取值一样出现在索引树的叶子节点上。2

2021-04-28 00:26:04 921

转载 JDK1.7与1.8的hashmap的区别

参考:https://blog.csdn.net/qq_34820803/article/details/104824664一、 HashmapJDK1.7和JDK1.8有哪些区别?1、头插与尾插:JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。2、扩容后数据存储位置

2021-04-28 00:17:04 414

转载 缓存穿透、缓存击穿、缓存雪崩的理解和解决方案

目录一、缓存穿透二、缓存击穿三:缓存雪崩在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透1、缓存穿透理解缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义。缓存穿透示意图:缓存穿透问...

2021-04-28 00:03:13 31807 1

原创 微服务间通信--Feign

https://blog.csdn.net/weixin_39356798/article/details/102038861Feign是Netfilx开源的声明式HTTP客户端一:Feign介绍Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Spring Cloud引入 Feign并且集成了Ribbon实现客户端负载均衡调用。二:Feign调用原理https://www.jianshu.com/p/e0218c142d03Feign.

2021-04-27 09:11:13 652

原创 什么是反射?它的原理是什么?它有哪些功能?它有哪些用途?

一:什么是反射?Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性;对于任何一个对象,我们都能够对它的属性和方法进行调用。我们把这种动态获取类信息、调用对象方法的功能称之为反射机制。二:反射的原理确定一个对象的类--》取出类的修饰符modifiers、属性、方法、构造器、父类/接口 --》找出某个接口里定义的常量和方法信息 --》创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象)--》取得和设定对象数据成员的值,如果数据成员名是运

2021-04-27 08:41:48 2631

原创 海量数据的存储与访问瓶颈解决方案

一:数据切分就是通过某种条件,将我们之前存储在一台数据库上的数据,分散到多台数据库中,从而达到降低单体数据库负载的效果。数据切分,根据其切分的规则,大致分为两类:垂直切分和水平切分。二:垂直切分将不同表放在不同库中优点:1、拆分后业务清晰,拆分规则明确2、系统之间容易扩展和整合3、数据维护简单缺点:1、部分业务表无法join,只能通过接口调用,提升了系统的复杂度2、跨库事务难以处理3、垂直切分后,某些业务数据过于庞...

2021-04-27 08:36:40 417

原创 事务的ACID指的是什么?分布式事务的理解

一:事务严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称 ACID。A-Atomicity(原子性),一个事务内的所有操作要么都执行,要么都不执行。C-Consistency(一致性),系统必须始终处在强一致性状态下,可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据。**比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态。I-Isolation(隔离性),一

2021-04-27 08:34:30 904 1

转载 Java虚拟机:JVM的性能调优

首先,在进行JVM性能调优前,需要先了解一下JVM的体系结构,JVM由类加载器、Java堆、Java栈、方法区、本地方法栈、程序计数器、执行引擎等核心部分构成,如下图所示:JVM调优主要有2个方面:堆大小设置、收集器选择堆大小设置JVM中堆大小的最大值受到三方面限制:系统可用物理内存限制、系统可用虚拟内存限制、系统数据模型(32位/64位)限制。在32位系统下,最大值范围一般限制在1.5~2G;在64位系统下,最大值一般不限制;典型的jvm堆大小设置有如下两种:java -Xmx3550m

2021-04-27 08:30:49 385

原创 GC垃圾回收机制是如何实现的?

Java垃圾回收机制主要对JVM中的Java堆内存进行回收,清理掉那些无引用的对象。Java堆内存被划分为年轻代、年老代、永久代三个空间,年轻代和年老代存储动态产生的对象,永久代存放Java类信息,永久代空间几乎不参与垃圾回收。年轻代分为一个Eden区和两个Survior区,新建的对象都放在Eden区,确保生命周期短的对象尽量留在年轻代中,当Eden区申请不到空间时,执行MinorGC,并把存活的对象拷贝到Survior;年老代主要存放生命周期比较长的对象,如缓存对象。JVM垃圾回收机制的实现.

2021-04-27 08:30:24 222

原创 Nacos注册中心和配置中心

一:Nacos注册中心原理服务提供者、服务消费者、服务发现组件这三个角色之间的关系大致如下1、微服务在启动时,将自己的网络地址等信息注册到服务发现组件(nacos server)中,服务发现组件会存储这些信息。2、各个微服务与服务发现组件在一定的时间内发送心跳包这种机制进行通信(续约服务)。服务发现组件若发现与某微服务实例通信正常则保持注册状态(up在线状态)、若长时间无法与某微服务实例通信,就会自动注销(即:删除)该实例。3、服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该

2021-04-27 08:29:33 2786 1

原创 服务网关:Gateway

目录一:什么是服务网关二:gateway的核心概念三:gateway限流【两种方式】一:什么是服务网关网关是整个微服务API请求的入口,负责拦截所有请求,再分发到服务上去。可以实现日志拦截、权限控制、解决跨域、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等。二:gateway的核心概念1、Route(路由):就是转发规则Spring Cloud Gateway的基础元素,可简单理解成一条转发的规则。包含:ID、目标URL、Predicate集合以.

2021-04-27 08:26:31 393

转载 实践中如何优化MySQL

目录一、sql语句优化二、索引的优化三、数据库表结构的优化(使得数据库结构符合三大范式与BCNF)四、系统配置的优化五、硬件的优化https://blog.csdn.net/qq_35642036/article/details/82820129https://zhuanlan.zhihu.com/p/59818056引言:mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升。mysql优化是一个综合性的技术,从sql语句优化.

2021-04-27 00:49:46 152

原创 Redis的数据结构string、hash、list、set、zset、HyperLogLog

目录一:Redis的数据类型 - string(字符串)​​​​​​​二:Redis的数据类型 - hash(哈希结构)​​​​​​​​​​​​​​三:Redis的数据类型 - list(列表)​​​​​​​​​​​​​​四:Redis的数据类型 - set(无序集合)​​​​​​​​​​​​​​五:Redis的数据类型 - zset(有序集合)​​​​​​​​​​​​​​六:Redis的数据类型 - HyperLogLog(基数)Redis命令文档参考:http://redis

2021-04-26 10:26:12 1548

原创 RabbitMQ高级特性-消费端流控服务和ACK重回队列

一:消费端限流【流控】1.1 什么是消费端的限流假设一个场景,首先,Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,就会出现:巨大的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!1.2 如何做流控RabbitMQ提供了一种Qos(服务质量控制)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置Qos的值)未被确认前,不进行消费新的消息。【就是说消息未处理完就不ACK,就不拉后面的消息】..

2021-04-26 09:33:14 205

原创 RabbitMQ高级特性-生产端Confirm确认机制和Return返回机制

一:生产者端--Confirm消息确认机制1.1 理解Confirm消息确认机制(1)消息的确认,是指生产者投递消息后,如果broker收到消息,则会给生产者一个应答(2)生产者进行接收应答,用来确定这条消息是否正常的发送到broker,这种方式也是消息的可靠性投递的核心保障Confirm确认消息流程解析1.2 Confirm确认消息的实现第一步:在channel上开启确认模式:change.confirmSelect();第二步:在channel上添加监听:addConfi

2021-04-26 09:32:54 423

原创 RabbitMQ高级特性-生产端消息可靠性投递与消费端幂等性重复消费消息

目录一:RabbitMQ高级特性目录二:生产端--消息可靠性投递【100%投递成功】三:消费端--幂等性保障,避免海量订单生成时消息的重复消费一:RabbitMQ高级特性目录(1)如何保证生产端消息百分百投递成功?(2)如何实现消费端幂等性(3)如何避免海量订单生成时消息的重复消费(4)Confirm确认消息、Return返回消息(5)自定义消费者(6)消息的ACK消息确认机制与重回队列(7)限流(流控)(8)TTL消息(消息生存时间,针对的是单个消息到.

2021-04-26 09:32:39 169

原创 RabbitMQ核心API-Exchange之Direct、Topic、Fanout、其他关键概念

一:RabbitMQ核心API-Exchange之Direct【直连模式】二:RabbitMQ核心API-Exchange之Topic【正则匹配模式】三:RabbitMQ核心API-Exchange之Fanout【类似广播】四:RabbitMQ核心API-其他关键概念讲解一:RabbitMQ核心API-Exchange之Direct【直连模式】1、Exchange 接收消息,并根据路由键(Routing key)转发消息所绑定的队列2、Exchange 交换机的属性Na.

2021-04-26 09:32:15 300

原创 安装和体验mycat【cd /opt/mycat】

一:mycat下载和安装1、下载和上传mycat-server-1.6.7.3压缩包mycat-server-1.6.7.3压缩包:http://dl.mycat.org.cn/上传到opt目录2、解压tar -zxvf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz3、进入mycat,修改配置文件,cd/opt/mycat/conf3.1 server.xml配置文件进行配置用户Navicat连接:账号r.

2021-04-21 00:13:29 645

原创 Redis:持久化

官方文档:https://redis.io/topics/persistenceRDB会丢失最后一次备份的rdb文件,如果追求数据的完整性,那就考虑使用AOF。一:AOF特点以日志的形式来记录用户请求的写操作。读操作不会记录,因为写操作才会存储。文件以追加的形式而不是修改的形式。redis的aof恢复其实就是把追加的文件从开始到结尾读取执行写操作。二:AOF的优劣势优势:1.aof更加耐用,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一秒的数据,大大增加了...

2021-04-21 00:12:35 1244

原创 Redis 哨兵机制与实现redis高可用

官方文档:https://redis.io/topics/sentinel一:Redis哨兵模式Sentinel(哨兵)用于监控Redis集群中的Master状态的工具,是Redis高可用解决方法,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代一宕机的master继续工作。结论:master挂了之后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为ma

2021-04-21 00:12:12 152

原创 Redis主从复制(读写分离)原理解析

** 单机的redis并发大概在5万--6万左右。一:主从架构二:读写分离(主从复制)原理1、第一次过程(初始化)【全量复制】首先启动master,当slave完成配置并且启动以后,slave会向master发送一个ping包,告诉master我现在已经启动了;你是不是应该交给我一些任务去处理吧?这个时候master就会把一些数据提交slave,让slave去处理,那么这个过程就是全量的数据复制;那么这个数据就rdb文件,master会把rdb文件拷贝一份新的放在磁盘里面,放在.

2021-04-21 00:10:52 597

原创 Redis缓存过期处理与内存淘汰机制(策略)

一:Redis中已过期的key如何处理设置了expire的key缓存已过期了,但是只要没有被redis清理,那么其实内存还是会被占用的。这是因为redis所基于的两种删除策略:1、定时删除(主动)定时随机的检查过期的key,如果过期则清除删除。(每秒检查次数在redis.conf中的hz配置)。安装位置:/usr/local/redis/ 下2、惰性删除(被动)当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一...

2021-04-21 00:10:30 138

转载 如何进行SQL查询优化?

一:MySQL查询优化(1)为常用的查询条件字段增加索引(2)尽量使用union合并查询来避开or条件查询(3)尽量避免在like后面的查询关键词左侧使用%,比如避开 ‘%华为手机%’(4)尽量避免在where后面=左侧使用表达式,比如避开where score/10=9(5)对表结构进行合理的一对一、一对多和多对多设计转发文章:https://www.cnblogs.com/houss/p/10598901.html...

2021-04-21 00:10:12 199

原创 MySQL存储引擎:InnoDB和MyISAM的区别和比较

一:存储引擎:InnoDB和MyISAM的区别1、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。2、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用3、InnoDB支持外键,MyISAM不支持4、MyISAM是默认引擎,InnoDB需要指定5、InnoDB不支持FULLTEXT类型的索引6、InnoDB中不保存表的行数,如sele

2021-04-21 00:08:41 3170 2

原创 微服务调用链路监控actuator-sleuth-Zipkin

一:链路追踪/监控应用:Zipkin(基于sleuth分布式跟踪系统,主要用来收集系统的时序数据,从而追踪系统的调用问题,特点是轻量,使用部署简单)Pinpoint、SkyWalking、CAT二:为什么需要「 调用链监控 」?调用链监控系统都由 数据埋点采集、数据存储处理、数据分析展示 几大部分组成1、项目网络拓扑图2、快速定位问题:微服务非常复杂,一个请求可能会经过多个服务节点3、优化系统4、提高团队成员自律三:调用链监控原理1、调用链监控3个核心概念..

2021-04-21 00:06:34 555

原创 Sentinel服务容错?常见容错方案?

一:什么是sentinel服务容错【流量卫兵】sentinel是轻量级的流量控制、熔断降级Java库(容错的库)。二:常见容错方案【避免雪崩效应】超时模式--限流模式--仓壁模式--断路器模式--降级模式1、超时【思想:只要释放够快服务就不容易那么死了】为每次请求设置一个最大响应时间(超时时间,如1秒),如果超过这个时间,不管这次请求是否成功,就断开这次请求,释放掉线程。只要线程释放速度够快,被请求的服务就不那么容易被拖死。2、限流【思想:只有一碗的饭量,给再多也只是吃一碗】.

2021-04-21 00:00:31 311

原创 java的数组(Array) 与 集合 (List)

一:Array数组和List集合的介绍1、ArrayArray(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。2、ListList—继承Collection,是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。List是一个接口,不可以实例化, 不能写成如下:List<Integer> list = new List<Integer>();//错误List有两个重要的实现类:ArrayList和LinkedL

2021-04-20 13:13:59 1528

原创 Arraylist 与 LinkedList 区别? HashMap与 HashTable区别?

一:Arraylist 与 LinkedList 区别?1、ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于双链表的数据结构;2、对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;3、在数据量很大或者操作很频繁时,ArrayList查询快,增删慢,LinkedList增删快,查询慢二:HashMap与 HashTable区别?HashMap和Hashtable都实现了Map 接口。1、HashM

2021-04-20 13:12:30 506

原创 关于Set、List、Map的区别

关于Set、List、Map的区别:区别:数组固定长度的,集合的长度是可以变化的。List:继承Collection,可重复、有序的对象(保证顺序)Set:继承Collection,不可重复、无序的对象(不保证顺序)Map:键值对,提供key到value的映射。key无序、唯一;value无序,可重复...

2021-04-20 12:54:49 94

原创 java常用的集合有哪几个?它们有哪几种遍历方式和删除指定?

Java常用集合有:List、Map、Set等遍历方式1、List遍历的三种方法:// 准备数据List<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("ccc");System.out.println("未删除前list集合:" + list);//注意:将要删除的元素用list装起来,等遍历结束再remove掉,否则报错List<

2021-04-20 12:53:32 206

转载 HashMap是如何工作或实现原理?

目录一:HashMap的特性二:HashMap的工作原理【put()/get()方法工作原理】三:在多线程的情况重新调整HashMap大小存在什么问题吗?四:HashMap是非线程安全【非synchronized】转发文章地址:https://blog.csdn.net/qq_38200425/article/details/114281175一:HashMap的特性1、HashMap实现了Map接口,存储键值对。2、HashMap允许键和值为null【不允许重复的键】,而H

2021-04-20 12:49:50 1076

原创 02-mycat常用分片规则

目录一:范围约定分片规则【auto-sharding-long】二:一致性hash分片规则【sharding-by-murmur】三:枚举分片规则【sharding-by-intfile】四:取模分片规则【mode-long】mycat常用分片规则一:范围约定分片规则【auto-sharding-long】:字段(项)为数字类型(int)如0-500W分到分片库1,500W-1000W分到分片库2....二:一致性hash分片规则【sharding-by-murmur】与myc

2021-04-20 11:54:18 544

原创 04-RabbitMQ的ACK消息确认机制

RabbitMQ的ACK消息确认机制

2021-04-20 10:08:04 638

原创 03-RabbitMQ环境搭建(高可用)和控制台详解

RabbitMQ环境搭建(高可用)和控制台详解一:rabbitmq在线安装二:rabbitmq离线安装

2021-04-20 10:03:43 99

原创 02-RabbitMQ核心概念

目录一:初识RabbitMQ二:RabbitMQ的特点三:什么是AMQP高级消息队列协议?四:AMQP协议模型和机制五:AMQP核心概念六:RabbitMQ的整体架构是什么样子?七:RabbitMQ消息是如何流转的一:初识RabbitMQRabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。Erlang语言在数据交互方面性能优秀.

2021-04-20 09:54:25 182

原创 01-MQ应用场景与MQ性能衡量指标

目录一:分布式消息队列-MQ应用场景二:分布式消息队列-MQ应用思考点一:分布式消息队列-MQ应用场景1、服务解耦使用了消息队列后,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦。每个成员不必受其他成员影响,可以更独立自主,只通过消息队列MQ来联系。例子:用户下订单流程,下订单后会发生扣库存这个动作,上游系统订单和下游系统扣库存,就可以通过上图的消息队列MQ来联系,扣库存异步化,从而实现订单系统与库存系统的应用解耦。..

2021-04-20 09:36:11 336

原创 Nginx实现跨域请求配置

一:什么是跨域跨域是指一个域名的网页去请求另一个域名的资源. 只要协议, 域名, 端口中, 有任何一个不同, 都是跨域。二:代码server端: 提供数据, 8081端口@RestController@RequestMapping("/data/")publicclassDataController{@RequestMapping("getList")publicList<Book>getList(){List<...

2021-04-19 22:13:30 690

rabbitmq离线安装.zip

rabbitmq离线安装

2021-04-20

rabbitmq在线安装.zip

rabbitmq在线安装

2021-04-20

phpmailer.zip

phpmailer邮件发送的代码zip压缩包。

2020-05-28

空空如也

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

TA关注的人

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