自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

转载 or索引问题

explain后 显示两个索引都用了,extra为 Using union(toconuid,tocomuid);通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描.1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。如果你坚持要用OR, 那就需要返回记录最少的索引列写在最前面.在某些情况下,or条件可以避免全表扫描的。不是说,一条sql语句只能用一个索引么。用UNION替换OR (适用于索引列)

2023-03-08 15:48:22 572

转载 SpringCloud -- Feign 核心原理

1 SpringCloud 中 Feign 核心原理如果不了解 SpringCloud 中 Feign 核心原理,不会真正的了解 SpringCloud 的性能优化和配置优化,也就不可能做到真正掌握 SpringCloud。本章从Feign 远程调用的重要组件开始,图文并茂的介绍 Feigh 远程调用的执行流程、Feign 本地 JDK Proxy 实例的创建流程,彻底的为大家解读 SpringCloud 的核心知识。使得广大的工程师不光做到知其然,更能知其所以然。1.1 简介:Feign远程调a用的

2021-04-18 21:59:34 380

原创 mysql7--分库分表动态扩容

一、扩容原因1)数据库并发瓶颈当前你给我的那四台机器啊,随着业务的猛增,相关请求并发已经超过了我们现在数据库服务器的并发范围2)分的库表数据已经快满了当前数据库表装不下了,又到了上亿的数据,服务器磁盘容量也不够存储了二、切分策略1. 查询切分将ID和库的Mapping关系记录在一个单独的库中。查询切分优点:ID和库的Mapping算法可以随意更改。缺点:引入额外的单点。2. 范围切分比如按照时间区间或ID区间来切分。范围切分优点:单表大小可控,天然水平扩展。缺点:无法解决集

2021-04-17 16:29:37 1156

转载 Nginx作用

一、静态代理Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。二、负载均衡Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。常用的负载均衡策略有1、轮询将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。2、加权轮询不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗

2021-04-11 15:37:28 867

转载 Springcloud--4微服务配置中心

一、Apllo1、Apollo介绍Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。Apollo支持4个维度管理Key-Value格式的配置:application (应用)environment (环境)cluster (集群)namespace (命名空间)2、Apollo的优势统一管理不同环境、不同集群的配置配置修改实时生效版本发布管理灰度发布权限管

2021-04-11 15:36:07 124

转载 SpringCloud--5使用sleuth实现微服务跟踪

在微服务架构中,众多的微服务之间互相调用,如何清晰地记录服务的调用链路是一个需要解决的问题。同时,由于各种原因,跨进程的服务调用失败时,运维人员希望能够通过查看日志和查看服务之间的调用关系来定位问题,而Spring cloud sleuth组件正是为了解决微服务跟踪的组件。sleuth的原理介绍可以参考这篇文章: 服务链路追踪(Spring Cloud Sleuth)本文主要讲解sleuth的两方面用法sleuth+elk 结合,聚合微服务日志sleuth+ zipkin结合,显示文件调用链路.

2021-04-11 15:34:58 144

转载 Redis2--Redis事务及缓存问题

一、事务1、Redis事务的概念Redis 事务的本质是通过MULTI、EXEC、WATCH等一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。2、Redis事务的三个阶段事务开始 MULTI命令入队事务执行 EXEC事务执行过程中,如果服务端收到有EXEC、DISCARD、WATCH、

2021-04-01 21:40:22 168

翻译 zookeeper的使用场景

分布式协调你A系统发送个请求到mq,然后B消息消费之后处理了。那A系统如何知道B系统的处理结果?用zk就可以实现分布式系统之间的协调工作。A系统发送请求之后可以在zk上对某个节点的值注册个监听器,一旦B系统处理完了就修改zk那个节点的值,A立马就可以收到通知,完美解决。分布式锁对某一个数据连续发出两个修改操作,两台机器同时收到了请求,但是只能一台机器先执行另外一个机器再执行。那么此时就可以使用zk分布式锁,一个机器接收到了请求之后先获取zk上的一把分布式锁,就是可以去创建一个znode,接着执行操作

2021-04-01 21:39:06 63

原创 es--2ElasticSearch结合springboot使用

https://www.bilibili.com/video/BV1py4y1r7Ar?from=search&seid=14817215112859046317笔记 https://blog.csdn.net/qq_20051535/category_10772271.html

2021-04-01 21:36:42 83

原创 es--3es原理及架构

倒排索引是什么ElasticSearch 和 Solr 底层都是基于Lucene,而Lucene的底层原理是 倒排索引倒排索引适用于快速的全文检索,一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表ES的分布式架构原理能说一下么?elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在

2021-03-31 21:53:47 1524

转载 数据结构2--时间复杂度(转载)

1、基础概念1)对数 对数阶2)线性对数阶(排序的最快算法也就是nlogn)3)平均时间复杂度和最坏时间复杂度平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间。最坏情况下的时间复杂度称最坏时间复杂度。一般讨论的时间复杂度均是最坏情况下的时间复杂度。2、复杂度总结算法时间复杂度描述常量(Constant)O(1)操作的数量为常数,与输入的数据的规模无关。对数(Logarithmic)O(log n)操作的数量与输入数据的规模

2021-03-29 16:50:07 168

原创 springcloud--3springcloud网关

一、网关概述1、作用反向代理鉴权流量控制熔断日志监控2、使用场景网关可以想象成是所有服务的入口3、为什么选用Gateway目前已经有了Zuul了,为什么还要开发出Gateway呢?一方面是因为Zuul 1.0已经进入了维护阶段,而且Gateway是Spring Cloud团队研发的,属于亲儿子,值得信赖,并且很多功能Zuul都没有用起来,同时Gateway也非常简单便捷Gateway是基于异步非阻塞模型上进行开发的,性能方面不需要担心。虽然Netflix早就发布了Zuul 2.

2021-03-29 16:48:05 148

原创 Redis--3Redis高可用方案

一、概述Redis 提供了哪些高可用方案?Redis主从复制 ReplicationRedis持久化哨兵集群 sentinelRedis clusterRedis基于一个Master主节点多Slave从节点的模式和Redis持久化机制,将一份数据保持在多个实例中实现增加副本冗余量,又使用哨兵机制实现主备切换, 在master故障时,自动检测,将某个slave切换为master,最终实现Redis高可用 。二、Redis主从复制Redis主从复制,主从库模式一个Master主节点多Slav

2021-03-28 16:14:54 220

原创 Apollo架构原理

一、Apollo 总体设计1.1 Apollo 总体设计图Apollo总体设计上图简要描述了Apollo的总体设计,自下而上看:Config Service 提供配置的读取、推送等功能,服务对象是Apollo客户端Admin Service 提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)Config Service 和 Admin Service 都是多实例、无状态部署,所以需要将自己注册到 Eureka 中并保持心跳在Eureka之上架了一层 Meta Se

2021-03-28 11:06:34 600

原创 springcloud--1Eureka|Ribbon|Feign

一、Eureka1、Eureka serverEureka server提供服务注册服务,各个节点启动后,会在Eureka server中进行注册,Eureka server就会存储所有可用的服务节点。Eureka server本身也是一个服务,搭建单机版的Eureka server注册中心,需要配置取消Eureka server的自动注册逻辑。 Eureka server通过Register、Get、Renew等接口提供服务的注册、发现、心跳检测等服务。服务注册服务提供者启动时,会通过

2021-03-27 17:30:30 104

转载 java基础--1、java面向对象

一、java面向对象的三大特征1、封装(Encapsulation)封转是指属性私有化根据需要提供setter和getter方法来访问属性隐藏具体属性和实现细节,仅对外开放接口控制程序中属性的访问级别目的:增强数据安全性,不能让其他用户随意访问和修改数据,简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员2、继承(Extend)继承是指将多个相同的属性和方法提取出来,新建一个父类java中一个类只能继承一个父类,且只能继承访问权限非private属性和方法子类可以重

2021-03-27 14:08:41 69

原创 java基础--2反射

1、概念1)动态语言动态语言是一类在运行时可以改变其结构的语言:例如新的函数,对象,甚至代码可以被引进,已有的函数可以被删除或是其它结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构主要的动态语言有:Object-c、C#、JavaScript、PHP、Python等2) 静态语言与动态语言相比,运行时结构不可变的语言就是静态语言。例如Java、C、C++Java不是动态语言,但是Java可以称为“准动态语言”。即Java有一定的动态性,我们可以利用反射机制来获取类似于动态语言的

2021-03-27 13:48:07 116

原创 设计模式--比喻

一、创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的

2021-03-26 20:10:40 100

原创 java开发概念中的各种比喻

1、httpsAB两个基地对情报加密。A先将支持的算法发一份给BB选一个算法,并将保险箱(公钥证书,只非对称加密,有B私钥能解密)给AA将密码本(对称秘钥)放进保险箱,B打开密码箱打开锁(解密)后拿到密码本AB之后可以利用密码本对称加密通信2、锁膨胀纸条(偏向锁)–书包(轻量级锁)–门锁(重量级锁)A在自习室学习,此时没什么竞争,这个房间就A用,每次走之前写一个纸条,上面有名字(偏向的线程id);后面有人也会用这个房间,就把书包放在上面。其他人B用之前打开书包,确认是自己的可以用,不是自己

2021-03-25 00:05:03 147

原创 Redis--4LRU算法

1、LinkedHashMap2、手写hashmap本质上是 node<k,v>的集合。node之间还可以有各种联系,如果只有next属性,就是单向链表。包含pre则是双向链表。

2021-03-21 21:17:14 75

原创 java并发-7AQS原理

AQS原理1. 概述1)AbstractQueuedSynchronizer用来构建锁或者其它同步器组件的重量级基础框架, 通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int变量表示持有锁的状态2)特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state

2021-03-21 20:45:29 85

原创 mysql6-MVCC多版本并发控制

一、概念1、什么是MVCC?MVCC全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读2、什么是当前读和快照读?在学习MVCC多版本并发控制之前,我们必须先了解一下,什么是MySQL InnoDB下的当

2021-03-17 09:37:35 86

原创 SSM框架中用到的设计模式

1、Spring的优缺点是什么?优点方便解耦,简化开发AOP编程的支持声明式事务的支持方便程序的测试方便集成各种优秀框架降低JavaEE API的使用难度缺点Spring依赖反射,反射影响性能使用门槛升高,入门Spring需要较长时间2、Spring 框架中都用到了哪些设计模式?工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;单例模式:Bean默认为单例模式。代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;模板方法

2021-03-07 16:17:12 1978

原创 mysql5-mysql面试常见问题处理

1、SQL的生命周期?应用服务器与数据库服务器建立一个连接数据库进程拿到请求sql解析并生成执行计划,执行读取数据到内存并进行逻辑处理通过步骤一的连接,发送结果到客户端关掉连接,释放资源2、大表数据查询,怎么优化1)优化shema、sql语句+索引;2)第二加缓存,memcached, redis;3)主从复制,读写分离;4)垂直拆分,根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;5)水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理

2021-03-07 14:22:30 77

原创 mysql4-数据库事务

1、事务的 四个特征(ACID)事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。1 、原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被

2021-03-07 13:40:26 84

原创 ElasticSearch--1es基础

一、什么是 ElasticsearchElasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack

2021-03-02 23:53:52 414

原创 加密算法|PKI|X.509

一、加密算法1、加密方式分类对称加密:加密和解密使用同一个密钥。非对称加密「使用了两个密钥(私钥、公钥),A用私钥加密,B用对应公钥解密。A用公钥加密,B用对应的私钥解密。散列函数(散列(hash)、指纹、消息摘要、摘要算法、杂凑函数):把任意长度的输入消息数据转化成固定长度的输出数据的一种密码算法。消息验证代码:验证数据完整性,即数据没有被篡改。数字签名:RSA私钥加密,公钥解密,结合散列函数。验证消息真实性。伪随机函数(PRF):生成任意数量的伪随机数据。2、加密算法1)对称加密算法

2021-03-01 23:29:19 2081 3

原创 Tomcat2-Tomcat类加载机制

1、加载流程前面3个类加载和JVM的一致,CommonClassLoader、CatalinaClassLoader、SharedClassLoader和WebappClassLoader则是Tomcat自己定义的类加载器,它们分别加载/common/*、/server/*、/shared/*(在tomcat 6之后已经合并到根目录下的lib目录下)和/WebApp/WEB-INF/*中的Java类库。每一个Web应用程序对应一个WebApp类加载器每一个JSP文件对应一个Jsp类加载器。comm

2021-02-27 16:49:46 420

转载 PKI双证书机制及其产生过程

1、单证书:用户使用唯一的证书及对应的私钥进行签名和加密操作。签名时,A用户使用自己的私钥加密信息的摘要(签名),B用户使用A的公钥进行解密,对比该摘要是否正确,若正确,则B就确定了A的身份,即验签成功。加密时,A用户用B的公钥将信息加密传递给B,B使用自己的私钥解密,进而获得信息。2、双证书:包括签名证书和加密证书。签名证书在签名时使用,仅仅用来验证身份使用,其公钥和私钥均由A自己产生,并且由自己保管,CA不负责其保管任务。加密证书在传递加密数据时使用,其私钥和公钥由CA产生,并由CA保管(

2021-02-27 14:36:54 2874

转载 java汇总

1Java基础知识面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/1043906122Java集合容器面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/1045885513Java异常面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/1043906894并发编程...

2021-01-23 17:44:02 45

原创 业务应用系统的幂等性控制

一 、天然幂等1、查询查询一次和查询多次一样的。2、删除数据删除数据,仅仅第一次删除是真正的操作数据,之后删除直接返回成功,这样保证了幂等。二、锁1、MVCC方案(乐观锁)多版本并发控制,update with condition,更新带条件,这也是在系统设计的时候,合理的选择乐观锁,通过version或者其他条件,来做乐观锁,这update tablexxx set name=#name#,version=version+1 where version=#version#upd

2021-01-23 17:24:25 201

原创 分布式--5分布式服务限流算法

一、计数器从第一个请求进来开始计时,在接下去的1s内,每来一个请求,就把计数加1,如果累加的数字达到了100,那么后续的请求就会被全部拒绝。等到1s结束后,把计数恢复成0,重新开始计数.可使用redis的incr原子自增性和线程安全即可轻松实现。如果我在单位时间1ms内的前10ms,已经通过了100个请求,那后面的990ms,请求全部会被拒绝,即:突刺现象。二、滑动窗口算法滑动窗口算法是将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期,滑动窗口的格子划分的越多

2021-01-23 16:19:46 217 1

原创 分布式--6分布式id

一、UUID:UID使用以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字来生成一串唯一随机32位长度数据。优点:性能好,本地生成,全局唯一。缺点:UUID长度固定为32位,对于Mysql索引来说,所有的非主键索引都会包含一个主键,UUID长度过长会不利于MySql的存储和性能。UUID是乱序的,每一次UUID数据的插入都会对主键地城的b+树进行很大的修改。信息不安全,UUID里包含了MAC地址,芯片ID码能信息。会造成信息泄露。二、数据库自增ID对于多台数据库,通过每台数据库的起始值

2021-01-23 16:15:28 152

原创 分布式--7性能压测

1)中间件的网络io耗时很多,优化措施更好的网线、带宽、网络设备更好的网络协议2)业务代码耗时更长db3)静态资源获取–nginx动静分离

2021-01-23 16:06:00 95

原创 分布式-4分布式集群

1、目标高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影 响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自 然灾害等不可预期的原因导致,在很多时候也称单点问题。• 突破数据量限制,一台服务器不能储存大量数据,需要多台分担,每个存储一部分, 共同存储完整个集群数据。最好能做到互相备份,即使单节点故障,也能在其他节点 找到数据。• 数据备份容灾,单点故障后,存储的数据仍然可以在别的地方拉起。• 压力分担,由于多个服务器都能完成各自一

2021-01-23 16:01:50 146 1

原创 分布式--2分布式事务

一、本地事务1、隔离级别2、传播属性require同生共死。所有事务设置都用a的require_new 可以单独控制但是在同一个service里,c设置了new事务也没用,因为springboot里的事务是通过代理实现的,这样做绕过了代理。解决:二、分布式事务1、原因分布式系统间各种问题:宕机、网络不稳定本地事务无法满足需求:1)远程服务假失败: 远程服务其实成功了,由于网络故障等没有返回 导致:订单回滚,库存却扣减2)远程服务执行完成,下面的其他方法出现问题 导致:已执行的远程

2021-01-23 16:00:46 149 1

原创 分布式--3分布式一致性算法

1、双写模式最终一致性,适合场景:可以容忍一段时间的脏数据。2、失效模式3、解决方案• 1、如果是用户纬度数据(订单数据、用户数据),这种并发几率非常小,不用考虑这个问题,缓存数据加上过期时间,每隔一段时间触发读的主动更新即可• 2、如果是菜单,商品介绍等基础数据,也可以去使用canal订阅binlog的方式。• 3、缓存数据+过期时间也足够解决大部分业务对于缓存的要求。• 4、通过加锁保证并发读写,写写的时候按顺序排好队。读读无所谓。所以适合使用读写锁。(业务不关心 脏数据,允许临时脏数

2021-01-23 15:59:41 338 2

原创 分布式--1概述CAP和Base

https://segmentfault.com/a/1190000022740402

2021-01-23 15:56:46 154

原创 springboot2--SpringBoot启动原理(了解)

SpringBoot启动过程1、创建 SpringApplication1) 保存一些信息。2) 判定当前应用的类型。ClassUtils。Servlet|或者是响应式WebFlux3) bootstrappers:初始启动引导器(List):去spring.factories文件中找 org.springframework.boot.Bootstrapper4) 找 ApplicationContextInitializer;去spring.factories找 ApplicationConte

2020-12-25 00:41:14 235 1

原创 springboot1--自动配置原理

1、springboot优缺点优点:—一站式快速开发脚手架1)创建独立spring应用2)内嵌web服务器3)自动starter依赖,简化依赖4)自动配置spring及第三方功能5)强大的监控、健康检查6)无xml配置缺点:迭代太快封装太深2、springboot特点2.1依赖管理父项目做依赖管理几乎声明了所有开发中常用的依赖的版本号自动版本仲裁机制依赖管理 <parent> <groupId>org.springframe

2020-12-24 23:14:18 119

空空如也

空空如也

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

TA关注的人

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