- 博客(37)
- 资源 (6)
- 收藏
- 关注
原创 sql not in 优化
可以利用left join保左、不保右的特性,改为如下sql,效果是一样的,但是如果b表的aid有索引,那么下面的方法可以命中索引,上面的方法一般不会命中索引。not in和not exists不会命中索引,可以优化为通过left join实现;1、not in 的优化。
2025-02-17 08:45:32
314
1
转载 mysql分页查询优化
MySQL并不是跳过offset行,而是取offset+N行,然后返回放弃前offset行,返回N行,那当offset特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL改写。原理:select id from employees limit 3000000,10语句直接走索引,快速定位所需要的id,然后通过id回表查询,比原先的语句少了很多的数据,而且走索引,速度会快很多。通过id定位到3000003数据,然后通过offset值取得想要的结果,效率提高不是一点点。
2023-04-08 17:37:35
294
原创 Mybatis 缓存
①、在⼀个sqlSession中,对User表根据id进⾏两次查询,查看他们发出sql语句的情况查看控制台打印情况:② 、同样是对user表进⾏两次查询,只不过两次查询之间进⾏了⼀次update操作。查看控制台打印情况:③、总结1、第⼀次发起查询⽤户id为1的⽤户信息,先去找缓存中是否有id为1的⽤户信息,如果没有,从 数据库查询⽤户信息。得到⽤户信息,将⽤户信息存储到⼀级缓存中。...
2022-08-14 16:03:39
242
原创 网关限流算法与实践
在开源软件中也有这种限流的设计,例如Nginx下用于限制瞬间并发连接数的limit_conn模块,限制每秒平均速度的limit_req模块。常见的限流算法有计数器算法、漏桶算法和令牌桶算法。·计数器法计数器算法简单粗暴。该算法会维护一个counter,规定在单位时间内counter的大小不能超过最大值,每隔固定时间就将counter的值置零。如果这个counter大于设定的阈值了,那么系统就开始拒绝请求以保护系统的负载。·漏桶算法。.........
2022-07-29 16:11:37
675
原创 kubernetes
K8S集群安全机制:Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介,也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 APIServer 来设计的。Kubernetes 使用了认证(Authentication)、鉴权(Authorization)、准入控制(Admission Control)三步来保证API Server的安全 。Authentication(认证)第三方授权协
2021-10-24 09:56:58
2424
原创 docker
安装dockeryum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repoyum makecache fastyum -y install docker-ce开启dock而服务systemctl start dockersystemctl status
2021-10-09 14:31:52
126
原创 Elasticseach
安装部署1、开始安装JDK(elasticseach 是用java 开发的一套工具)2、配置Elasticsearch修改配置文件config/elasticsearch.ymlnode.name: node-1network.host: 192.168.211.136## Set a custom port for HTTP:#http.port: 9200cluster.initial_master_nodes: ["node-1"]3.按需修改config/jvm.op.
2021-09-25 22:15:10
211
原创 如何定位 Java 的 CPU 性能问题
常见 CPU 性能问题利用工具定位 CPU 性能问题利用 Perf 生成火焰图火焰图种类耗时分析方法如何排查线上 CPU 问题常见 CPU 性能问题请你回想一下,你所负责的服务(下称:服务)是否遇到过以下现象:休息的时候,手机突然收到大量告警短信,提示服务的 99.9 line 从 20ms 飙升至 10s;正在敲代码实现业务功能时,收到业务/客服同事电话,反馈系统打不开;下班后,收到运维同学电话,服务器监控告警提示“某个机器的负载(Load Average)从 0.1、0.5.
2021-09-23 14:17:26
457
原创 kafka
Kafka介绍Kafka是最初由Linkedin公司开发,是⼀个分布式、分区的、多副本的、多⽣产者、多订阅者,基于zookeeper协调的分布式⽇志系统(也可以当做MQ系统),常⻅可以⽤于web/nginx⽇志、访问⽇志,消息服务等等,Linkedin于2010年贡献给了Apache基⾦会并成为顶级开源项⽬。主要应⽤场景是:⽇志收集系统和消息系统。Kafka主要设计⽬标如下:以时间复杂度为O(1)的⽅式提供消息持久化能⼒,即使对TB级以上数据也能保证常数时间的访问性能。⾼吞吐率。即使在⾮常廉价的商
2021-09-19 17:51:08
161
原创 rocketmq笔记
RocketMQ特性1 订阅与发布消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息。2 消息顺序消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了三条消息分别是订单创建、订单付款、订单完成。消费时要按照这个顺序消费才能有意义,但是同时订单之间是可以并行消费的。RocketMQ可以严格的保证消息有序。3 消息过滤RocketMQ的消费者可以根据Tag进行消息过滤,也支持自定义属性过滤。消息过滤目前是在B
2021-09-02 22:57:43
129
原创 RabbitMQ
第1节 分布式架构通信1.1 分布式架构通信原理根据实际业务,把系统拆分成合适的、独立部署的模块,模块之间相互独立。优点:分布式、松耦合、扩展灵活、可重用。SOA架构系统中,使用Dubbo和Zookeeper进行服务间的远程通信。优点:Dubbo使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以减少报文的体积,提高传输效率。微服务架构:SpringCloud中使用Feign解决服务之间远程通信的问题。Feign:轻量级RESTful的H..
2021-08-11 08:55:20
192
原创 mongodb学习笔记
数据删除sMongoDB在Linux的安装tar -zxvf MongoDB-linux-x86_64-4.1.3.tgz启动./bin/mongod指定配置文件方式的启动./bin/mongod -f mongo.conf配置文件样例:dbpath=/data/mongo/port=27017bind_ip=0.0.0.0fork=truelogpath = /data/mongo/MongoDB.loglogappend = trueauth=falseMongoD
2021-07-29 00:27:57
192
原创 第一代 Spring Cloud 核心组件-5.GateWay⽹关组件
⽹关(翻译过来就叫做GateWay):微服务架构中的重要组成部分局域⽹中就有⽹关这个概念,局域⽹接收或者发送数据出去通过这个⽹关,⽐如⽤Vmware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的⼀个IP作为⽹关地址。Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul,它基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于
2021-05-07 09:23:23
461
原创 第一代 Spring Cloud 核心组件-4.Feign远程调用组件
Feign简介Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端(⽤它来发起请求,远程调⽤的),是以Java接⼝注解的⽅式调⽤Http请求,⽽不⽤像Java中通过封装HTTP请求报⽂的⽅式直接调⽤,Feign被⼴泛应⽤在Spring Cloud 的解决⽅案中。类似于Dubbo,服务消费者拿到服务提供者的接⼝,然后像调⽤本地接⼝⽅法⼀样去调⽤,实际发出的是远程的请求。Feign可帮助我们更加便捷,优雅的调⽤HTTP API:不需要我们去拼接url然后调⽤restTemplate
2021-05-06 20:01:44
132
原创 第一代 Spring Cloud 核心组件-3.Hystrix熔断器
属于⼀种容错机制微服务中的雪崩效应微服务中,⼀个请求可能需要多个微服务接⼝才能实现,会形成复杂的调⽤链路。扇⼊:代表着该微服务被调⽤的次数,扇⼊⼤,说明该模块复⽤性好扇出:该微服务调⽤其他微服务的个数,扇出⼤,说明业务逻辑复杂扇⼊⼤是⼀个好事,扇出⼤不⼀定是好事在微服务架构中,⼀个应⽤可能会有多个微服务组成,微服务之间的数据交互通过远程过程调⽤完成。这就带来⼀个问题,假设微服务A调⽤微服务B和微服务C,微服务B和微服务C⼜调⽤其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个
2021-05-06 19:07:20
193
原创 第一代 Spring Cloud 核⼼组件-2.Ribbon负载均衡
关于负载均衡负载均衡⼀般分为服务器端负载均衡和客户端负载均衡所谓服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据⼀定的算法将请求路由到⽬标服务器处理。所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调⽤⽅在请求前通过⼀定的负载均衡算法选择⼀个服务器进⾏访问,负载均衡算法的执⾏是在请求客户端进⾏。Ribbon是Netflix发布的负载均衡器。Eureka⼀般配合Ribbon进⾏使⽤,Ribbon利⽤从Eureka中读取到服务信息
2021-05-06 18:39:15
119
原创 第⼀代 Spring Cloud 核⼼组件-1.Eureka服务注册中⼼
各组件整体结构如下:从形式上来说,Feign⼀个顶三,Feign = RestTemplate + Ribbon + HystrixEureka服务注册中⼼注意:服务注册中⼼本质上是为了解耦服务提供者和服务消费者。对于任何⼀个微服务,原则上都应存在或者⽀持多个提供者(⽐如简历微服务部署多个实例),这是由微服务的分布式属性决定的。更进⼀步,为了⽀持弹性扩缩容特性,⼀个微服务的提供者的数量和分布往往是动态变化的,也是⽆法预先确定的。因此,原本在单体应⽤阶段常⽤的静态LB机制就不再适⽤了,需要引
2021-05-03 19:15:16
311
原创 微服务架构
微服务架构体现的思想及优缺点微服务架构设计的核⼼思想就是“微”,拆分的粒度相对⽐较⼩,这样的话单⼀职责、开发的耦合度就会降低、微⼩的功能可以独⽴部署扩展、灵活性强,升级改造影响范围⼩。单体应⽤(1.7—>1.8)A(升级JDK) B C D E .....微服务架构的优点: 微服务架构和微服务微服务很⼩,便于特定业务功能的聚焦 A B C D微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合作⼀定程度解耦,便于实施敏捷开发微服务很⼩,便于重⽤和
2021-05-01 16:47:14
1458
2
原创 分布式架构介绍
1.1 什么是分布式系统分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。1.2 分布式与集群的区别集群: 多个服务器做同一个事情分布式: 多个服务器做不同的事情1.3 分布式系统
2021-04-11 20:56:13
2693
原创 Socket网络编程
Socket概述Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。Socket整体流程Socket编程主要涉及到客户端和服务端两个方面,首先是在服务器端创建
2021-04-11 20:31:50
4253
原创 NIO编程
NIO介绍Java NIO 全称java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的.1. NIO 有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(选择器)2. NIO是 面向缓冲区编程的。数据读取到一个缓冲区中,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络3.
2021-04-10 23:17:49
654
原创 Spring缓存使用
Cache缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等CacheManager 缓存管理器,管理各种缓存(Cache)组件@Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存@CacheEvict 清空缓存@CachePut 保证方法被调用,又希望结果被缓存。@EnableCaching 开启基于注解的缓存keyGenerator 缓存数据时key生成策略serialize
2021-04-07 23:31:41
197
原创 SpringBoot启动流程
SpringBoot启动流程第一步:获取并启动监听器第二步:构造医院上下文环境第三步:初始化应用上下文第四步:刷新应用上下文前的准备阶段第五步:刷新应用上下文(IOC容器的初始化过程)invokeBeanFactoryPostProcessors(beanFactory);IoC容器的初始化过程包括三个步骤,在invokeBeanFactoryPostProcessors()方法中完成了IoC容器初始化过程的三个步骤。1,第一步:Resource定位在Sp..
2021-04-07 23:03:20
800
2
原创 解决Session⼀致性的⽅案
Nginx的 IP_Hash 策略(可以使⽤)同⼀个客户端IP的请求都会被路由到同⼀个⽬标服务器,也叫做会话粘滞优点:配置简单,不⼊侵应⽤,不需要额外修改代码缺点:服务器重启Session丢失存在单点负载⾼的⻛险单点故障问题Session复制(不推荐)也即,多个tomcat之间通过修改配置⽂件,达到Session之间的复制优点:不⼊侵应⽤便于服务器⽔平扩展能适应各种负载均衡策略服务器重启或者宕机不会造成Session丢失缺点:性能低.
2021-04-07 22:59:58
77
原创 Spring的缓存抽象
缓存抽象定义Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JavaCaching(JSR-107)注解简化我们进行缓存开发。Spring Cache 只负责维护抽象层,具体的实现由自己的技术选型来决定。将缓存处理和缓存技术解除耦合。每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过,如果有就直接从缓
2021-04-07 22:43:37
210
原创 Spring核心思想
注意:IOC和AOP不是spring提出的,在spring之前就已经存在,只不过更偏向于理论化,spring在技术层次把这两个思想做了⾮常好的实现(Java)1.1 什么是IoC?IoC Inversion of Control (控制反转/反转控制),注意它是⼀个技术思想,不是⼀个技术实现描述的事情:Java开发领域对象的创建,管理的问题传统开发⽅式:⽐如类A依赖于类B,往往会在类A中new⼀个B的对象IoC思想下开发⽅式:我们不⽤⾃⼰去new对象了,⽽是由IoC容器(Spring框架)去帮助
2021-04-07 21:36:17
92
原创 Spring 的核⼼结构
Spring是⼀个分层⾮常清晰并且依赖关系、职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块、Web模块、AOP(Aspect Oriented Programming)/Aspects模块、Core Container模块和 Test 模块,如下图所示,Spring依靠这些基本模块,实现了⼀个令⼈愉悦的融合了现有解决⽅案的零侵⼊的轻量级框架。Spring核⼼容器(Core Container) 容器是Spring框架最核⼼的部分,它管理着Spring应⽤中bean的创建、配置和管理。
2021-04-07 21:26:17
130
原创 Spring的优势
⽅便解耦,简化开发通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更专注于上层的应⽤。AOP编程的⽀持通过Spring的AOP功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统OOP实现的功能可以通过AOP轻松应付。声明式事务的⽀持@Transactional可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活的进⾏事务的管理,提⾼开发效率和质量。⽅便程序的
2021-04-07 21:20:42
140
转载 git命令用法
git 提交代码命令git clone https://gitee.com/用户个性地址/HelloGitee.git #将远程仓库克隆到本地在克隆过程中,如果仓库是一个私有仓库,将会要求用户输入码云的账号和密码。按照提示输入即可。当然,用户也可以通过配置本地的git配置信息,执行git config命令预先配置好相关的用户信息,配置执行如下:$ git config --glob...
2019-06-03 16:00:54
107
Memcached-session-manager使用说明及相关jar包(tomcat7版)
2018-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人