自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的技术博客

个人技术总结,避免遗忘

  • 博客(72)
  • 收藏
  • 关注

原创 Lists.partition源码解析

源码分析1.会创建一个RandomAccessPartition对象,RandomAccessPartition继承自 partition, partition又继承自AbstractList2、获取大小的时候会调用partition中重写的size方法3、示例代码中foreach循环获取元素会调用重写的get方法,这里面实现了集合的拆分4、,get方法会调用AbstractList的 subList方法吐槽大致是这样的,有点反人类,无语了。不过还有些地方不太明白,那就是为啥调试的时

2022-12-11 17:00:39 998 2

原创 idea中打包docker镜像

​ 构建和推送镜像都是需要docker环境的,这个大家可以使用同一个远程的环境,这里说的就是idea使用服务器上的docker进行镜像的构建和发布,​ 默认高版本的idea中默认集成了docker插件,这个插件的官方文档:https://www.jetbrains.com/help/idea/docker.html​ 提供多种方式连接docker,ssh方式和tcp方式,ssh方式更简单一点。似乎功能上没什么不同。

2022-12-11 16:59:05 2893

原创 重要文档说明

按年度统计一下相关文档微服务链路追踪SkyWalking(9.2.0)负载均衡器ribbon和LoadBalancerSpringCloud微服务网关gatewaySpring Boot Actuator&AdminOpenFeign使用nacos注册中心和配置中心dubbo3.0使用alibaba微服务组件sentinelspring-cloud-alibaba项目搭建前期准备kubernetes使用(1.25)kubernetes介绍和安装(1.25版本)kubernetes编排文件示例docker虚拟

2022-12-11 16:54:19 431

原创 CSDN外链图片转存失败

有点坑,不仅有图片转存失败的问题,还限制每日发布的文章数量,保存草稿还发布频繁,无语主要是通过程序将程序如下主要是这两行代码需要修改

2022-12-11 16:54:07 374

原创 计算机存储和进制转换

​ 计算机只能识别二进制数据,也就是0和1(0和1实际上对应的是高低电平,或者磁极方向等),对应0和1的最小存储单位是bit,bit是数据传输的最小单位。人们又规定特定位数的0和1组合在一起,表示特定的信息含义,例如ACSSII码就是通过8个bit存放的0和1来表示表示特定的字符。8个bit组成的数据存储单位称为byte,这是最小的数据存储单位。​ 进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢

2022-12-11 16:53:45 733

原创 jmeter的安装和简单使用

Jmeter是一款优秀的开源测试工具,就算是开发也要了解一下。window下载zip包即可下载地址: https://jmeter.apache.org/download_jmeter.cgi

2022-12-11 16:53:33 964

原创 负载均衡器ribbon和LoadBalancer

目前主流的负载方案分为以下两种:大白话就是:服务端负载均衡就是客户端不知道服务提供方的地址,请求到了服务器后,再根据服务端配置的ip进行负载均衡。客户端负载均衡就是客户端要调用服务端,从注册中心获取到服务提供方的所有实例的ip地址,然后再进行负载均衡。1.1 客户端的负载均衡例如spring cloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。1.2 服务端的负载均衡例如Nginx,通过Ng

2022-12-10 17:37:07 5390

原创 OpenFeign使用

在微服务的架构中,传统的http客户端如Httpclient Okhttp HttpURLConnection RestTemplate WebClient 显然不适合。毕竟需要动态的获取服务地址,和进行负载均衡调用。PC 全称是 Remote Procedure Call ,即远程过程调用,其对应的是我们的本地调用。RPC 的目的是:让我们调用远程方法像调用本地方法一样。具体过程就是一个服务端调用本地方法一样调用服务,rpc框架客户端会根据相应的方法的注解生成代理对象,然后代理对象中对方法名称,参

2022-12-10 17:36:47 972

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

nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。nacos官方文档:https://nacos.io/zh-cn/相关概念:https://nacos.io/zh-cn/docs/architecture.htmlnacos是AP架构,注重可用性和分区容错性,java语言,集群架构的话通过nginx做负载均衡,然后节点之间互相同步数据本文演示在springcloud中使用nacoshttps://github.com/alibaba/spring-cloud-alibaba/wi

2022-12-10 17:36:31 1300

原创 dubbo3.0使用

官方网址:https://dubbo.apache.org/本文基于springCloud依赖的方式演示相关示例:https://github.com/alibaba/spring-cloud-alibaba/wiki/Dubbo-Spring-Clouddubbo示例项目:https://github.com/apache/dubbo-samplesspringBoot相关示例:https://github.com/apache/dubbo-spring-boot-project。

2022-12-10 17:36:22 1756

原创 authorization server && client && resource 使用1

OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。OAuth协议:https://tools.ietf.org/html/rfc6749协议特点:以京东网页版实现微信登录举例https://www.jd.com/微信授权流程:https://developers.we

2022-12-10 17:35:37 1220

原创 alibaba微服务组件sentinel

官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html官方示例:https://github.com/alibaba/Sentinel/tree/master/sentinel-demo随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。资源

2022-12-10 17:35:15 881

原创 springBoot中日志的使用

首先你需要知道日志门面,日志实现,日志桥接器。基于日志实现,常用的有logback,log4j2,这两个日志实现是的创始人是同一个,概念差不多,这里以log4j2为例,有如下几个核心概念:官方文档;https://docs.spring.io/spring-boot/docs/2.6.13/reference/html/features.html#features.logging主要是通过日志桥接器统一桥接到logback上,如下图,日志实现只有logback-core可以设置TRACE,DEBUG,IN

2022-12-10 17:35:04 255

原创 redis cluster 集群安装

如图,实际上还是一个节点对外提供服务,所以虽然是三台机器,但是还是一台机器的并发量,而且master挂了之后,整个集群不能对外提供服务多个主从集群节点对外提供服务,支持横向扩展,主节点挂了之后,不需要哨兵也可以实现故障转移。其中一组主从节点挂了,不会影响其他节点继续提供服务官方下载地址 : https://redis.io/download/当前已经到了7.0版本,这里安装6.2.7版本window版本下载地址:https://github.com/microsoftarchive/redis/releas

2022-12-10 17:34:29 489

原创 SpringBoot整合Mybatis

mybatis官网 :https://mybatis.org/mybatis-3/zh/index.htmlmybatis-plus官网:https://baomidou.com/druid:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98druid-spring-boot-starter:https://github.com/alibaba/druid/tree/master/druid-spring-bo

2022-12-10 17:34:24 2574

原创 rocketMq相关机制

这其中,写队列会真实的创建对应的存储文件,负责消息写入。而读队列会记录Consumer的Offset,负责消息读取。这其实是一种读写分离的思想。RocketMQ在最MessageQueue的路由策略时,就可以通过指向不同的队列来实现读写分离。在往写队列里写Message时,会同步写入到一个对应的读队列中。这时,如果写队列大于读队列,就会有一部分写队列无法写入到读队列中,这一部分的消息就无法被读取,就会造成消息丢失。–消息存入了,但是读不出来。而如果反过来,写队列小于读队列,那就有一部分读队列里是没有消息写

2022-12-10 17:33:57 436

原创 SpringCloud微服务网关gateway

大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。这样的架构,会存在着诸多的问题:每个业务都会需要鉴权、限流、权限校验、跨域等逻辑,如果每个业务都各自为战,自己造轮子实现一遍,会很蛋疼,完全可以抽出来,放到一个统一的地方去做。如果业务量比较简单的话,这种方式前期不会有什么问题,但随着业务越来越复杂,比如淘宝、亚马逊打开一个页面可能会涉及到数百个微服务协同工作,如果每一个微服务都分配一

2022-12-09 10:49:23 559

原创 Security实现前后端分离

​ 上一篇和上上一篇我大致介绍了一下security基础使用和oauth2的一些流程,这里在深入了解一些相关的配置项。​ 首先我们在梳理一下相关概念,首先基本的security是负责用户认证这这一环节,总而言之就是用户使用用户名密码登录后可以访问后端接口;然后引入OAuth2相关依赖之后,就有了授权服务器,客户端,资源服务器这三个概念,而且最新的官方依赖也是按照这三个概念提供统一的依赖引入,而之前的security基本认证就属于授权服务器的一个环节。问题1、首先security基本的认证方式中用户名密码

2022-12-09 10:49:01 388

原创 Spring Boot Actuator&Admin

干嘛的:主要运用在微服务架构,所以我建议你先学微服务,否则可能get不到它的用处,只有大型的分布式系统才会用到指标监控… Why:?对于一个大型的几十个、几百个微服务构成的微服务架构系统,在线上时通常会遇到下面一些问题,比如:So: 在这种大型分布式应用的环境下,我们如何能够快速发现问题、快速解决问题, 必须要有监控平台、(链路追踪、日志)SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等Actuator

2022-12-09 10:48:45 2302

原创 Spring Security基础使用

官方文档:https://docs.spring.io/spring-security/reference/index.htmlsecurity结合servelt:https://docs.spring.io/spring-security/reference/5.6/servlet/getting-started.htmlSecurity 官方示例项目:https://github.com/spring-projects/spring-security-samples/tree/5.6.xSpring S

2022-12-09 10:48:19 900

原创 authorization server && client && resource 使用2

authorization server && client && resource 使用1 中默认的示例就是使用的jwt 生成token(用于),当然这里和我们用户登录的token是有区别的我们授权服务器端支持授权码模式(用户需要登录)和客户端默认(和用户无关)步骤生成1、OAuth2ClientAuthenticationFilter 对clientid 和clientsecret做一些验证,和jwt无关2、然后不管是哪种模式在上一步验证通过后会进入OAuth2TokenEndpointFilter中再

2022-12-09 10:47:47 737

原创 微服务链路追踪SkyWalking(9.2.0)

对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。它是一款优秀的 APM(Application Performance Management)工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。官网:http://skywalki

2022-12-09 10:47:31 3297

原创 springBoot整合RocketMq

项目地址:https://github.com/apache/rocketmq-spring在项目wiki界面你可获取相关示例,或者直接下载示例项目部分概念在我的上一篇文章中有说明,这里仅仅只演示示例代码,不做概念性说明写文章时rocketmq-spring-boot-starter最新版本是2.2.2 对应的rocketmq-client版本是4.9.3这里我服务端安装的是5.0.0版本,不过5.0.0版本服务端按照官方的说法是兼容4.x版本的客户端的如果一定要使用5.0.0版本sdk,可以排除相关依赖

2022-12-09 10:46:33 4710

原创 Spring Cloud Stream 结合rocketmq

官方网址:https://github.com/alibaba/spring-cloud-alibaba/wiki/RocketMQ你可以在这个地址上下载到相关示例项目,配置项等相关信息spring-cloud-stream 文档(这个地址似乎只有集合kafaka和rabbit的示例): https://docs.spring.io/spring-cloud-stream/docs/3.2.6/reference/html/spring-cloud-stream-rocketmq文档 :https://sp

2022-12-09 10:46:25 2675 1

原创 RocketMq使用(5.0)

这一部分我们可以结合一下管理控制台,先来理解下RocketMQ的一些重要的基础概念:官方文档-消息发送领域模型:https://rocketmq.apache.org/zh/docs/domainModel/01main整个消息流程(大致,错了勿怪)1、部署时Broker会根据配置的nameserver地址,将自身的名称,地址等信息注册到nameserver上,每个nameserver上都具备了全量的broker信息。一般只要一台nameserver和一台broker master 节点正常,整个集群就可以

2022-12-09 10:45:43 3394 1

原创 rocketMq介绍和安装

MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。主要有以下三个方面:异步例子:快递员发快递,直接到客户家效率会很低。引入菜鸟驿站后,快递员只需要把快递放到菜鸟驿站,就可以继续发其他快递去了。客户再按自己的时间安排去菜鸟驿站取快递。作用:异步能提高系统的响应速度、吞吐量。解耦例子:《Thinking in JAVA》很经典,但是都是英文,我们看不懂,所以需要编辑社,将文章翻

2022-12-09 10:45:30 2147

原创 计算机存储和进制转换

​ 计算机只能识别二进制数据,也就是0和1(0和1实际上对应的是高低电平,或者磁极方向等),对应0和1的最小存储单位是bit,bit是数据传输的最小单位。人们又规定特定位数的0和1组合在一起,表示特定的信息含义,例如ACSSII码就是通过8个bit存放的0和1来表示表示特定的字符。8个bit组成的数据存储单位称为byte,这是最小的数据存储单位。参考:https://cloud.tencent.com/developer/article/1353743​ 进制也就是进位计数制,是人为定义的带进位的计数

2022-12-06 20:17:49 744

原创 java8 集合结合steam操作实例

集合框架介绍:https://www.runoob.com/java/java-collections.htmljava8-streams:https://www.runoob.com/java/java8-streams.html介绍不过说,上面两个链接可以看一下。正常情况下,for循环就够用了,但是有时候你需要对集合遍历多次才能完成的事情,使用steam进行操作,可能只要一次就可以了,而且代码更加简洁明了。部分示例直接复制自菜鸟教程下面是测试的对象和测试用的公共代码stream筛选操作foreac

2022-12-06 20:16:48 936

原创 java多线程这一篇就差不多了

​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。​ 小数转二进制很大的可能会出现无限循环或者转成二进制之后数据特别长,而计算机中对于小数的存储按照IEEE754标准只会保留一定的二进制位数,按精度不同,保留的位数不同。按照保留的二进制位数 float型变量仅能接收实数型常量的6-7位有效数字。 double型变量能接收实数型常量的15-16位有效数字。 这样的精度对于部分场合是不适合的,所以我们使用BigDecimal.​ 简而言之,你

2022-12-06 20:16:16 580

原创 BigDecimal使用

​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。​ 小数转二进制很大的可能会出现无限循环或者转成二进制之后数据特别长,而计算机中对于小数的存储按照IEEE754标准只会保留一定的二进制位数,按精度不同,保留的位数不同。按照保留的二进制位数 float型变量仅能接收实数型常量的6-7位有效数字。 double型变量能接收实数型常量的15-16位有效数字。 这样的精度对于部分场合是不适合的,所以我们使用BigDecimal.​ 简而言之,你

2022-12-06 20:15:30 656

原创 kubernetes使用(1.25)

$ archuname -a注:x86_64,x64,AMD64基本上是同一个东西Kubernetes有很多核心概念,我们先看下几个核心的概念。其他概念可以看一下我的安装文档DeploymentDeployment负责创建和更新应用程序的实例。创建Deployment后,Kubernetes Master 将应用程序实例调度到集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节点上的实例。这提供了一种自我修复机制来解决机器故障维护问题。PodPod相当

2022-12-06 20:14:44 983

原创 kubernetes介绍和安装(1.25版本)

K8S官网文档:https://kubernetes.io/zh/docs/home/K8S 是Kubernetes的全称,源于希腊语,意为“舵手”或“飞行员”,基于go语言开发,官方称其是:用于自动部署、扩展和管理“容器(containerized)应用程序”的开源系统。翻译成大白话就是:“K8S 是 负责自动化运维管理多个 Docker 程序的集群”。那么问题来了:Docker 运行可方便了,为什么要用 K8S,它有什么优势?​ 参考官网:https://kubernetes.io/zh-cn/d

2022-12-06 20:13:07 2417 1

原创 kubernetes编排文件示例

编排文件生成网址:https://www.kubebiz.com/需要一个配置文件,内容不会就用默认的即可my.cnfmysql-deploy.yamlmysql-svc.yamlnacos集群官方:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start-kubernetes.html其他参考:https://www.likecs.com/show-305484280.html https://blog.csdn.net/warrah/artic

2022-12-06 20:12:33 905 1

原创 docker虚拟化原理

传统虚拟化和容器技术结构比较:传统虚拟化技术是在硬件层面实现虚拟化,增加了系统调用链路的环节,有性能损耗;容器虚拟化技术以共享宿主机Kernel的方式实现,几乎没有性能损耗。docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。避免了寻址、加载操作系统内核这些比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个过程,

2022-12-06 20:11:34 338

原创 docker常用命令

官方地址:https://docs.docker.com/reference/ https://docs.docker.com/build/docker基础命令列表:https://docs.docker.com/engine/reference/commandline/docker/相关命令可以直接通过 --help 来获取帮助可使用 docker search命令搜索存放在 Docker Hub中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓

2022-12-06 20:10:33 321

原创 spring-cloud-alibaba项目搭建前期准备

项目部署的概念图springCloud是spring官方提供的针对微服务构建提供的一套标准。Spring Cloud Alibaba是属于springCloud标准的一种实现, 致力于提供微服务开发的一站式解决方案。各种实现方案对比​ 由于每一个微服务都包含了很多子系统,为了让所有子系统都统一使用相同的依赖版本,避免不必要的问题,这里构建一个pom,作为所有项目的父项目。添加有注释,可以自行修改基础示例项目构建用于后续项目搭建的模板项目布局(建议,其实随意啦,一句项目而定,比如部分通用代码也可以放置到

2022-12-06 14:40:40 211

原创 dcoker compose介绍和安装

使用微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例。如果每个微服务都要手动启停,那么效率之低、维护量之大可想而知。本节课将讨论如何使用 Docker Compose来轻松、高效地管理容器。为了简单起见将 Docker Compose简称为Compose。Compose 是一个用于定义和运行多容器的Docker应用的工具。使用Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。

2022-10-07 09:31:56 88

原创 docker和kubernets版本依赖关系获取

如果要结合k8s进行使用,k8s版本信息https://github.com/kubernetes/kubernetes/releases,找到对应的changLog,我此时看的是版本信息,在changed中找到了如下一行,所以如果我们是选择k8sV1.25.2版本,那么docker的版本需要低于v20.10.17incompatible表示不支持。

2022-10-07 09:30:17 672

转载 docker和k8s的关系

介绍 Docker 和 Kubernetes 的文章数不胜数,本文所写不过覆盖其中万一。只希望大家在阅读之后能对 Docker 和 Kubernetes 以及背后的容器化思想有一个基本的了解,那文章的目的也就达到了。最后,笔者水平有限,错漏之处还望各位不吝指出。

2022-10-07 08:24:06 4259

原创 docker介绍和安装

Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。Docker是基于go语言开发的。Docker的优点如下:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。

2022-10-06 22:33:46 879

空空如也

空空如也

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

TA关注的人

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