自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql的explain结果字段详解

1、id 执行的顺序id 是select的执行顺序,id越大优先级越高,越先被执行,id 相同时 下面的先执行.原因是因为执行子查询时,先查内层的,再查外层SELECT de.*FROM dict_equip deWHERE de.n_equip_id = ( SELECT n_equip_id FROM equip e WHERE e.n_role_id = ( SELECT n_role_i

2021-12-28 16:48:37 306

转载 Spring Cloud Gateway 整合阿里 Sentinel网关限流实战

前一篇文章介绍了Spring Cloud Gateway的一些基础知识点,今天陈某就来唠一唠网关层面如何做限流?文章目录如下:网关如何限流?Spring Cloud Gateway本身自带的限流实现,过滤器是RequestRateLimiterGatewayFilterFactory,不过这种上不了台面的就不再介绍了,有兴趣的可以实现下。今天的重点是集成阿里的Sentinel实现网关限流,sentinel有不懂的可以看陈某的文章:阿里限流神器Sentinel夺命连环 17 问?从1.

2021-12-21 10:14:25 399

转载 Spring Cloud Gateway原理和使用

这篇文章介绍下微服务中的一个重要角色:网关,对于网关如何选择,由于阿里系暂时未出网关,当然是选择了Spring cloud Gateway,毕竟是亲儿子。文章目录如下:为什么需要网关?传统的单体架构中只有一个服务开放给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,那么作为客户端如何去调用这些微服务呢?如果没有网关的存在,只能在本地记录每个微服务的调用地址。无网关的微服务架构往往存在以下问题: 客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性。

2021-12-21 10:13:15 1400

转载 openFeign原理和使用

1、前言前面介绍了Spring Cloud 中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。今天介绍一款服务调用的组件:OpenFeign,同样是一款超越先辈(Ribbon、Feign)的狠角色。文章目录如下:2、Feign是什么?Feign也是一个狠角色,Feign旨在使得Java Http客户端变得更容易。Feign集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用,只不过对原有的方式(Ribbon+RestTemplat

2021-12-16 10:16:06 986

转载 SkyWalking使用

这是《Spring Cloud 进阶》第十篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得了? 阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你! 阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你! 阿里限流神器Sentinel夺命连环 17 问? 对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)

2021-11-23 14:11:53 1958

原创 java内存高、CPU高、GC问题排查

1,内存高 思路: (1)把内存镜像导出,使用命令,如 jmap -dump:format=b,file=<导出目录+文件名> <进程号> (2)使用内存分析工具,下载地址,http://www.eclipse.org/mat/ (3)具体分析方法,如下: 打开软件后,File-->Open Heap Dump...,打开刚才导出的镜像文件,选择Leak Suspects Report,Finish,进入分析页面 ...

2021-11-15 14:47:06 601 1

转载 阿里限流神器Sentinel夺命连环 17 问

1、前言这是《Spring Cloud 进阶》专栏的第五篇文章,这篇文章介绍一下阿里开源的流量防卫兵Sentinel,一款非常优秀的开源项目,经过近10年的双十一的考验,非常成熟的一款产品。往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得了? 阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你! 阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你! 文

2021-11-12 16:54:55 1603

转载 对比7种分布式事务方案+阿里开源的Seata

这是《Spring Cloud 进阶》专栏的第六篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得了? 阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你! 阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你! 阿里限流神器Sentinel夺命连环 17 问? 这篇文章主要介绍一些目前主流的几种分布式解决方案以及阿里开源的一站式分布式解决方

2021-11-12 15:13:00 617

原创 分布式系统架构

随着移动互联网的发展和智能终端的普及,计算机系统早就从单机独立工作过渡到多机器协作,集群按照分布式理论构建出庞大复杂的应用服务,在分布式的基础上正进行一场云原生的技术革命,彻底打破传统的开发方式,解放了新一代的生产力。分布式系统知识体系大图基础理论SOA 到 MSA 的进化SOA 面向服务架构由于业务发展到一定程度后,需要对服务进行解耦,进而把一个单一的大系统按逻辑拆分成不同的子系统,通过服务接口来通讯。面向服务的设计模式,最终需要总线集成服务,而且大部分时候还共享数据库,出现单点故

2021-11-09 17:26:23 2511

原创 redis问题

1,雪崩描述:简单来说,就是大量的key在同一时间过期,导致大量的流量打到数据库,造成压力解决:分散过期时间设置2,穿透描述:就是redis和数据都查不到数据,流量打到系统层面,把服务器搞挂解决:都查不到时,可以把key设置一个null值,加上过期时间3,击穿描述:针对热点key而言,在过期的那一瞬间,会存在较大的流量打到数据库,压力较大解决:过期时,使用setnx进行控制,如下代码示例public String get(key) { String value =

2021-11-02 15:54:28 74

原创 分享一个好用的抠图网站

https://koutu.gaoding.com/clip?id=102254780&from=0&hmsr=pcbaidu--koutu-kt-bdt-bdt-sem&utm_medium=cpc&utm_source=pcbaidu

2021-02-20 10:18:30 18394

原创 看到的几句话,得思考一下

1.工作上也一样,敲代码前要想清楚为什么这样,不做不思考的机器人。2.老程序员最大的财富是他的见识,他遇到、解决的每一个问题都将成为他的一份能力,为下次安全发版保驾护航。3.目标定在月亮之上,即使失败,也可以落在众星之间。4.学历代表过去、能力代表现在、学习力代表未来。5.对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。6.提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。7.坚持做自己懒得做但正确的事情,就能得到别人想得

2021-02-19 13:53:24 101 1

原创 nginx解决跨域问题的正确配置方式

server { #其他配置..... location / { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, PATCH, PUT, OPTIONS, DELETE'; add_header Access-Control-Expose-Headers '*'; add_header Acc.

2020-06-05 13:46:45 684

转载 算法分析神器—时间复杂度

转载地址:https://mp.weixin.qq.com/s/070nYGokM96aorZn6MZTDA

2020-01-06 15:13:34 536

转载 必学十大经典排序算法,看这篇就够了

说明十大排序算法可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的算法思想描述,为了方便大家理解,我还找来了动图演示;这还不够,我还附上了对应的优质文章,看完不懂你来砍我,如果不想砍我就给我来个好看。术语铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳...

2020-01-06 14:48:35 600

转载 初创公司5大Java服务困局,阿里工程师如何打破?

全文连接地址:https://mp.weixin.qq.com/s/UJ2yy7pb8EXZSlQVJIymBg

2019-11-06 08:58:28 140

转载 Java+Python+前端项目资料

资料地址:https://blog.csdn.net/xubuhui/article/details/102473827

2019-10-12 15:39:01 239

原创 Redis ---- Stream

Redis5.0 被作者 Antirez 突然放了出来,增加了很多新的特色功能。而 Redis5.0 最大的新特性就是多出了一个数据结构Stream,它是一个新的强大的支持多播的可持久化的消息队列,作者坦言 Redis Stream 狠狠地借鉴了 Kafka 的设计。Redis Stream 的结构如上图所示,它有一个消息链表,将所有加入的消息都串起来,每个消息都有一个...

2019-10-10 14:50:47 311

原创 基于 Docker 的 Jenkins 持续集成与持续部署

前言随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。持续集成,持续部署,持续交付对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量。本文主要介绍下基于Jenkins+dock...

2019-10-10 14:39:28 326

原创 别傻了,你还真相信世界上有技术驱动型公司?

0x00世界上没有技术驱动型公司世界上没有技术驱动型公司,不论Google、Facebook,还是腾讯、阿里,都不是技术驱动型公司。因为技术不是源头,需求才是。因此一切技术问题,都要服从产品交付和市场反馈。所以,任何公司都不可能以技术去驱动自身。人可以以技术驱动自己进步,但公司不行。一家公司可以以技术切入某个市场,但如果它想生存下去,就一定不能以技术为导向,坚持以技术为导向的公司的...

2019-10-10 14:04:10 969 2

原创 【Linux面试】命令篇

一、文件和目录1. cd命令(它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径)cd /home 进入 '/ home' 目录cd .. 返回上一级目录cd ../.. 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - ...

2019-10-10 10:31:28 172

原创 Kafka 基本原理

简介Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。Kafka架构它的架构包括以下组件: 话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。 生产...

2019-09-24 21:08:56 101

转载 Java开发性能优化总结

35个java性能优化总结:https://www.oschina.net/question/2978416_2243019Java编程中“为了性能”需做的26件事:https://www.oschina.net/question/565065_81285

2019-09-24 10:20:11 169

原创 分享关于 Redis 缓存的几道典型面试题

随着系统访问量的提高,复杂度的提升,响应性能成为一个重点的关注点。而缓存的使用成为一个重点。redis 作为缓存中间件的一个佼佼者,成为了面试必问项目。本文分享一下Redis几道常见的面试题:缓存雪崩1.1 什么是缓存雪崩?如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis...

2019-09-20 19:08:52 228

原创 Redis项目实战,一些经验总结

背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。 支持多种类型的数据结构。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence)。 通过 ...

2019-09-19 10:07:20 237

原创 Redis知识点总结

1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Va...

2019-09-19 10:05:44 109

原创 多账号统一登陆,账号模块的系统设计

现在几乎大部分的 App都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。一、 自建的登陆体系1.1.1 手机号登陆注册该设计的思路是每个手机号对应一个用户,手机号为必填项。流程: 首先输入手机号,然后发送到服务端。先判断该手机号是否存在账号,如果没有,就会生成随机验证码,将手...

2019-09-17 09:05:46 1932

原创 每秒100W请求,12306秒杀业务,架构如何优化?

三类业务的架构挑战不一样: QQ类业务,用户主要读写自己的数据,访问基本带有uid属性,数据访问锁冲突较小 微博类业务,用户的feed主页由别人发布的消息构成,数据读写有一定锁冲突 12306类业务,并发量很高,几乎所有的读写锁冲突都集中在少量数据上,难度最大 那么对于秒杀类业务,系统上和业务上分别能如何优化呢,这是本文要讨论的问题。系统层面,秒杀业务的优化...

2019-09-12 13:53:58 230

原创 Mybatis架构与原理

MyBatis功能架构设计功能架构讲解:我们把Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 基础支...

2019-09-12 11:54:34 100

原创 Mybatis常见面试题总结及答案

1、什么是Mybatis?1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。2、MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的...

2019-09-11 13:56:16 201

原创 MyBatis中的$和#,用不好,准备走人!

这是一次代码优化过程中发现的问题,在功能优化后发现部分数据查不到出来了,问题就在于一条sql上的#和$。下图为两条sql:从图上可以看出 wwlr.LabelId in(${showLabels}) 和 wwlr.LabelId in(#{showLabels}),其中showLabels是传进来一个字符串类型的参数,参数的样子是这样的“4,44,514”,问题就出在这个参数传进来后#...

2019-09-11 13:48:13 95

原创 面试必问 —— Spring Boot 是如何实现自动配置的?

Spring Boot是Spring旗下众多的子项目之一,其理念是约定优于配置,它通过实现了自动配置(大多数用户平时习惯设置的配置作为默认配置)的功能来为用户快速构建出标准化的应用。Spring Boot的特点可以概述为如下几点: 内置了嵌入式的Tomcat、Jetty等Servlet容器,应用可以不用打包成War格式,而是可以直接以Jar格式运行。 提供了多个可选择的”start...

2019-09-09 14:04:41 394

原创 spring boot面试问题集锦

Q: 什么是spring boot?A:多年来,随着新功能的增加,spring变得越来越复杂。只需访问页面https://spring.io/projects,我们将看到所有在应用程序中使用的不同功能的spring项目。如果必须启动一个新的spring项目,我们必须添加构建路径或maven依赖项,配置application server,添加spring配置。因此,启动一个新的spring项目...

2019-09-09 14:00:23 112

原创 Spring Boot 实现定时任务的 4 种方式

定时任务实现的几种方式:Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说...

2019-09-09 13:53:42 143

原创 并发扣款,如何保证数据的一致性?

扣款的业务场景是怎样的?用户购买商品的过程中,要对余额进行查询与修改,大致的业务流程如下:第一步,从数据库查询用户现有余额:SELECT money FROM t_yue WHERE uid=$uid;不妨设查询出来的$old_money=100元。第二步,业务层实施业务逻辑计算,比如:(1)先查询购买商品的价格,例如是80元;(2)再查询产品是否有活动,以及活动折扣,例如...

2019-09-06 09:08:02 241

原创 16个超级实用的Java工具包

一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块 toString:转换IO流、 Uri、 byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大支持2GB toByteArray:从输入流、URI获取by...

2019-09-05 13:55:30 5035

转载 MySQL 索引失效与优化详解

案例所用的表结构、索引、与数据如下: 索引失效与优化1、全值匹配我最爱2、最佳左前缀法则(带头索引不能死,中间索引不能断)如果索引了多个列,要遵守最佳左前缀法则。指的是查询...

2019-08-07 16:01:19 109

转载 redis总结

redis 简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。为什么要用 redis/为什么要用缓存...

2019-08-06 16:01:27 104

转载 redis----string用法

一、引言 redis五大数据类型基本的赋值和取值,其实每一种数据类型都有很多命令需要我们去学习,小编也会分几章去给大家讲解以及演示。之后的文章演示的部分,小编可能不会再截图,因为图片展示的时候有问题,这个小编也和csdn客服人员反馈过了。那么今天就先从String基本数据类型开始讲吧,希望大家跟着小编一起动...

2019-08-06 10:03:16 114

转载 redis----hash用法

Redis hash 是一个String 类型的field和value的映射表 hash特别适合用于存储对象Re...

2019-08-06 09:49:03 826

空空如也

空空如也

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

TA关注的人

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