自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风信子

书到用时方恨少

  • 博客(320)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL:int(1)和int(10)的区别

我们知道在mysql中int占4个字节,那么对于无符号的int,最大值2^32-1=4294967295 ,将近40亿,难道用了int(1),就不能达到这个最大值?id字段为无符号的int(1)CREATE TABLE `user` ( `id` int(1) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;插入一

2022-02-28 21:07:59 1490

原创 MySQL:数据库设计规范

1. 数据库命名规范所有数据库对象名称必须使用小写字母并用下划线分割;(mysql区分大小写)所有数据库对象名称禁止使用MySQL保留关键字;(from)数据库对象的命名要能做到见名识义,并且最好不要超过32个字符;临时库表必须以tmp为前缀并以日期为后缀;备份库,备份表必须以bak为前缀并以日期为后缀;所有存储相同数据的列名和列类型必须一致;2. 数据库基本设计规范所有表必须使用 Innodb 存储引擎;MySQL5.5使用之前Myisam(默认存储引擎)情况;5.6 以后的默

2021-12-06 12:57:39 929

原创 Java中List去重

import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import java.util.stream.Collectors;public class Test { public static void main(String[] args) { List<String> list =

2021-08-25 12:56:11 354

原创 docker上安装Elasticsearch+ik分词器+kibana

一、安装部署ES和Kibana下载ealastic search和kibana(es的可视化管理页面)docker pull elasticsearch:7.6.2docker pull kibana:7.6.2配置mkdir -p /home/lele/elasticsearch/configmkdir -p /home/lele/elasticsearch/dataecho "http.host: 0.0.0.0" > /home/lele/elasticsearch

2021-07-28 20:33:53 231

原创 JVM:GC和GC-Tuning

JVM:GC和GC-TuningGC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deleteJava: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)2.如何定位垃圾引用计数(Reference Count)不能解决循环引用的问题对象的引用数变为0了,那么该对象就成为垃圾了。根可达算法(Root Searching

2021-07-10 07:05:26 408

原创 JVM(五):Java运行时数据区和常用指令

JVM(五):Java运行时数据区和常用指令jvms 2.4 2.5指令集分类基于寄存器的指令集(JVM)基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器Runtime Data AreaPC程序计数器存放指令位置虚拟机的运行,类似于这样的循环while(not end) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC++;}JVM stacksFrame – 每个方法对应一个栈帧L

2021-06-16 07:34:21 307

原创 JVM(四):Java内存模型(JMM)

JVM(四):Java内存模型(JMM)硬件层的并发优化基础知识存储器的层次结构从CPU到各层所需要的时间硬件层数据一致性协议多线程一致性的硬件层支持(老的CPU使用的)Intel中的MESI-Cache一致性协议协议很多,Intel采用MESI(https://www.cnblogs.com/z00377750/p/9180644.html)现代CPU数据一致性实现 = 缓存锁(MESI…) + 总线锁读取缓存以cache line为基本单位,目前64bytes;

2021-05-30 07:56:53 223

原创 JVM(三):ClassLoadingLinkingInitializing

类加载过程Loading:将Class文件加载到内存中类加载器 类加载器中的类加载过程类加载器范围(来自Launcher源码)sun.boot.class.pathBootstrap ClassLoader加载路径java.ext.dirsExtensionClassLoader加载路径java.class.pathAppClassLoader加载路径测试代码package com.lele.jvm.classloader;..

2021-05-20 19:24:17 279 2

原创 JVM(二):Class文件格式

二进制字节流数据类型:u1 u2 u4 u8 和 _info(表类型)_info 的来源是hotspot源码中的写法查看16进制格式的ClassFilesublime/notepad/IDEA插件-BinEd有很多可以观察ByteCode的方法javap:显示class文件信息(java自带)JBE:可以直接修改JClassLib:IDEA插件之一classfile构成classFile { u4 magic; u2 minor_version;..

2021-05-16 07:29:22 120

原创 JVM(一):JVM入门

1.JVM基础知识Java的解释和编译是可以混合的。100多种语言可以直接运行在JVM虚拟机上JVM是一种规范java virtual machine specificationshttps://docs.oracle.com/en/java/javase/13/https://docs.oracle.com/javase/specs/index.html虚构出来的一台计算机字节码指令集(汇编语言)内存管理:栈 堆 方法区等2.javac的过程3.常见的JVM实

2021-05-15 22:12:07 282

原创 ELK:CentOS7下部署ELK获取CDN日志

1. 环境操作系统:CenOS 7.3JDK版本:JDK 1.8Filebeat:filebeat-6.4.2-x86_64.rpmLogstash:logstash-6.4.2.rpmElasticsearch:elasticsearch-6.4.2.rpmelasticsearch-analysis-ik-6.4.2.zipelasticsearch-analysis-pinyin-6.4.2.zipelasticsearch-analysis-stconvert-6.4.2.zi

2021-04-30 18:28:03 155 1

原创 Spring Cloud(二十六):SpringCloud Alibaba Seata处理分布式事务

1. 分布式事务问题1.1 分布式前单机单库没这个问题从1:1 -> 1:N -> N: N1.2 分布式之后单体应用被拆分微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成,此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证:用户购买商品的业务逻辑,整个业务逻辑由三个微服务提供支持:仓储服务:对卖的商品扣除仓储数量订单服务:根据采购需求创建订单账户服务:从用户账户中扣除余额1.3 一个典型的

2021-04-11 07:32:25 278

原创 Spring Cloud(二十五):Sentinel热点key限流+@SentinelResource

1. 基本介绍官网https://github.com/alibaba/Sentinel/wiki/热点参数限流2. @SentinelResource兜底方法分为系统默认和客户自定义,两种之前的case,限流出问题后,都是用sentinel系统默认的提示使用@SentinelResource,自定义降级方法代码controller 添加方法@GetMapping("/testHotKey")@SentinelResource(value = "testHotKey", blockH

2021-04-11 07:31:17 477

原创 Spring Cloud(二十四):Sentinel降级规则

1. 基本介绍RT(平均响应时间,秒级)平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级窗口期过后关闭断路器RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX设置)异常比例(秒级)QPS>=5且异常比例(秒级统计)超过阈值时,触发降级,窗口期结束,关闭降级异常数(分钟级)异常数(分钟统计)超过阈值时,触发降级,窗口期结束,关闭降级Sentinel熔断降级会在调用链路中的某个资源

2021-04-10 14:51:36 220

原创 Spring Cloud(二十三):Sentinel流控规则

1. 概述官网:https://github.com/alibaba/Sentinel中文:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D下载:https://github.com/alibaba/Sentinel/releases能干嘛使用https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.ht

2021-04-10 11:42:13 264

原创 Spring Cloud(二十二):Nacos集群和持久化配置

1. 官网说明1.1 官网https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html1.2 架构图2. Nacos持久化配置解释Nacos默认自带的是嵌入式数据库derbyhttps://github.com/alibaba/nacos/blob/develop/config/pom.xml2.1 derby到mysql切换配置步骤nacos-server-1.1.4\nacos\conf目录下找到sql脚本执行脚本/**

2021-04-05 15:13:11 148

原创 Spring Cloud(二十一):SpringCloud Alibaba Nacos服务注册和配置中心

1. 简介

2021-04-05 10:38:22 149

原创 Spring Cloud(二十):SpringCloud Alibaba入门简介

1. 概述为什么会出现SpringCloud alibabaSpring Cloud Netflix项目进入维护模式https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-nowSpringCloud alibaba带来了什么?https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md下载https://github.

2021-04-04 16:45:55 336

原创 Spring Cloud(十九):Sleuth分布式请求链路追踪

1. 概述1.1 为什么会出现这个技术?需要解决哪些问题?在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会银企整个请求最后的失败。1.2 是什么https://github.com/spring-cloud/spring-cloud-sleuthSpring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并

2021-04-04 16:02:08 151

原创 Spring Cloud(十八):Stream消息驱动

1. 概述官方定义Spring Cloud Stream 是一个构件消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中的binder对象交互,通过我们配置来binding(绑定),二Spring Cloud Stream的binder对象负责与消息中间件交互,所以,我们只需要搞清楚如何与Spring Cloud Stream 交互就可以方便使用消息驱动的方式。通过使用Spring integration来连接消息代理中间件以实现消息时间驱动.

2021-04-04 14:17:00 192

原创 Spring Cloud(十七):SpringCloud Bus 消息总线

1. 概述Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。Spring Cloud Bus 是来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Cloud Bus 目前支持RabbitMQ和Kafka。Spring Cloud Bus 能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当做微服务间的通信通道。什么是总线在微服务

2021-03-31 22:18:39 181

原创 Spring Cloud(十六):Config分布式配置中心

1. 概述1.1 分布式系统面临的配置问题微服务意味着要将单体应用的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。Spring Cloud 提供了ConfigServer来解决这个问题。1.2 是什么Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同的微服务应用的所有环境提供了一个中心化的外部配置。Spring Clo

2021-03-31 20:36:35 103

原创 Spring Cloud(十五):Gateway-Filter的使用

1. Filter1.1 是什么路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用。Spring Cloud Gateway内置了多种过滤器,他们都由GatewayFilter的工厂类来产生。1.2 Spring Cloud Gateway的Filter生命周期在业务逻辑之前:pre在业务逻辑之后:post种类GatewayFilter:单一GlobalFilter:全局2. 常用的GatewayFilterAddRequestParame

2021-03-25 22:39:43 324

原创 Spring Cloud(十四):Gateway-Predicate的使用

1. Predicate的使用Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个RoutePredicate厂可以进行组合Spring Cloud Gateway创建Route对象时,使用RoutePredicateFactory创建Predicate对象,Predicat

2021-03-25 07:28:13 622

原创 Spring Cloud(十三):Gateway+demo

1. 概述简介官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/2. 是什么Gateway 是在Spring生态系统之上,基于Spring5,Spring Boot2 和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。Spring Cloud G

2021-03-24 07:35:44 2194

原创 Spring Cloud(十二):服务监控hystrixDashboard

1. 概述除了隔离依赖服务的调用之外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续的记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等,Netflix通过 Hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud 也提供了Hystrix Dashboard 的整合,对监控内容转化成可视化界面。2. 实战2.1 建 modul

2021-03-21 19:36:27 136

原创 Spring Cloud(十一):Hystrix服务熔断-工作流程

1. Hystrix服务熔断1.1 断路器类似保险丝1.2 熔断是什么熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的相应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。在Spring Cloud框架里,熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制,熔断机制的注解是@Hystrix

2021-03-21 16:17:03 523

原创 Spring Cloud(十):Hystrix服务降级

1. 降低配置@HystrixCommand8001先从自身找问题:设置自身调用超时时间的峰值,峰值内可以正常运行,超过了需要有兜底的方法处理,作服务降级fallback1.1 8001fallback@HystrixCommand报异常后如何处理一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法上图故意制造异常接收3秒钟 ,运行5秒钟,超时异常当前服务不可用了(超时异常,运行异常),做服务降级,默认的兜

2021-03-21 09:22:16 134

原创 Spring Cloud(九):Hystrix案例-Jmeter测试高并发访问

1. Hystrix 案例注册中心使用单机版。1.1 新建模块新建 cloud-provider-hystrix-payment8001 模块1.2 POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs

2021-03-20 18:05:54 194

原创 Spring Cloud(八):Hystrix断路器

1. 概述分布式系统面临的问题:负载分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的的失败。服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒中内饱和,比失败更糟糕的是,这些

2021-03-20 10:00:32 96

原创 Spring Cloud(七):OpenFeign服务接口调用

1. 概述Feign是一个声明式WebService客户端。使用Feign可以让编写WebService客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring Mvc标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。源码地址:https://github.com/spring-cloud/spring-clou

2021-03-18 22:11:35 227

原创 Spring Cloud(六):Ribbon负载均衡服务调用

1. 概述Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端 负载均衡工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如 连接超时、重试等。简单地说,就是在配置文件中列出Load Balance (简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们很容易使用Ribbon实现自定义的负载均衡算法。官网资料

2021-03-16 22:18:32 157 1

原创 Spring Cloud(五):Consul服务注册与发现

1. Consul简介Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司使用Go语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能,这些功能每一个都可以根据需要单独使用,也可以一起使用构建全方位的服务网络,总之,Consul提供了一种完整的服务网格解决方案。具有很多优点:包括:基于raft协议,比较简洁。支持健康检查,同时支持HTTP和DNS协议 支持跨数据中心的WAN集群 提供图形界面,跨平台,支持windows、linux、mac。服务发现:提供HTT

2021-03-14 11:58:42 343

原创 docker上安装zookeeper

1. 拉去镜像docker pull zookeeper:3.4.92. 启动容器并添加映射docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.4.93. 查看是否启动docker ps4. 进入zookeeper容器内docker exec -it 容器ID /bin/bash#进入到bin目录下cd bin/#连接zkClientzkCli.sh使用

2021-03-11 07:03:15 108

原创 Spring Cloud(四):Zookeeper服务注册与发现

1. Zookeeper服务注册与发现1.1 使用docker安装zookeeperdocker安装教程请查看这篇博客:docker安装教程下载镜像docker pull zookeeper:3.4.9启动容器并添加映射:docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.4.9查看是否启动1.2 SpringCloud整合Zookeeper代替Eurek

2021-03-10 22:39:30 113

原创 Spring Cloud(三):集群 Eureka 构建

1. Eureka 集群构建1.1 Eureka 集群原理说明解决方案:搭建Eureka注册中心集群,实现负载均衡+故障容错1.2 建 Module新建 cloud-eureka-server70021.3 改pompom.xml<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId&

2021-03-08 07:06:52 177 4

原创 Spring Cloud(二):单机Eureka构建

1. Eureka 基础知识1.1 服务治理Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。在传统的 RPC 远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务的发现与注册。1.2 服务注册Eureka 采用了 CS 的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心,而系统中的其他微服务,使用 Eureka Clie

2021-03-04 22:26:13 114 1

原创 Spring Cloud(一):微服务架构构建

1. 环境约定 > 配置 > 编码spring cloud:Hoxton.SR1spring boot:2.2.2.RELEASEspring cloud Alibaba:2.1.0.RELEASEjdk:1.8maven:3.5及以上(阿里云仓库)mysql:5.7及以上2. Spring Cloud整体聚合父工程Project2.1 新建 Maven project2.2 聚合总工程名字和包名2.3 Maven版本选择2.4 idea 字符编码设置2.5

2021-03-02 21:15:35 197

原创 docker上安装rabbitMQ

1.拉取镜像注意:rabbitmq 是官方镜像,该镜像不带控制台。如果想要安装带控制台的镜像,则需要在拉取镜像时附带 tag 标签,例如: rabbitmq:management。docker pull rabbitmq:management2.启动容器docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=test -e RABBITMQ_DEFAULT_PASS=123 rabbi

2021-02-24 07:34:20 86

原创 CentOS7系统语言切换

在CentOS系统中,中文语言界面虽然便于直观理解,但是经常要使用操作命令,遇到有中文目录的情况下,混杂有中英文名称,对输入字符和定位路径不太方便, 因此统一修改为全英文语言显示。#查看当前系统的语言locale#修改locale.conf文件内容cd /etcvi locale.conf#将系统语言设置成中文LANG="zh_CN.UTF-8"#将系统语言设置成英文LANG="en_US.UTF-8"#重启CentOS系统后即可生效reboot...

2021-01-17 07:38:46 1443

MySQL5.5安装图解

MySQL5.5数据库超详细安装截图教程,数据库初学者必备。

2018-10-07

空空如也

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

TA关注的人

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