![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 64
追梦梓辰
主攻Java,对python比较感兴趣,我会不断更新我的博客,分享我的学习内容
展开
-
OAuth2.0入门
OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版用户可以通过选择其他登录方式来使用gitee,这里就使用到了第三方认证。来自RFC 6749OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。原创 2023-02-24 10:49:55 · 723 阅读 · 1 评论 -
Swagger2
Swagger2是一个规范和完整的框架,用于生成、描述、调用和可视化Restful风格的web服务,现在我们使用spring boot 整合它。接口的文档在线自动生成;功能测试;原创 2023-02-23 09:46:11 · 504 阅读 · 0 评论 -
微服务项目【分布式锁】
格式:setnx key value将key的值设置为value,当且仅当key不存在;若给定的key存在,则setnx不做任何动作。setnx是(如果不存在,则set)的简写。setnx "zking" "xiaoliu" 第一次设置有效setnx "zking" "xiaoliu666" 第二次设置无效第一次使用setnx设置zking直接成功,第二次使用setnx设置zking则失败,也意味着加锁失败。redis级分布式锁之setnx使用@Autowired。原创 2023-02-17 22:01:20 · 2303 阅读 · 0 评论 -
微服务项目【消息推送(RabbitMQ)】
定义RabbitMQ配置类,设置生产者发送数据时自动转换成JSON,设置消费者获取消息自动转换成JSON。} }设置RabbitTemplate消息转换模式为Jackson2JsonMessageConverter;设置RabbitMQ消费者监听器的的消息转换模式为Jackson2JsonMessageConverter;原创 2023-02-17 21:57:55 · 2516 阅读 · 0 评论 -
微服务项目【商品秒杀接口压测及优化】
将UserUtils工具类导入到zmall-user模块中,运行生成测试用户信息,可根据自身电脑情况来生成用户数量。1)必须保证zmall-user模块处于运行状态下,在进行测试用户数据生成操作;2)注意修改UserUtils中的用户登录接口地址及端口;同时请修改用户登录接口,将生成的token令牌存入响应封装类中;3)设置生成登录令牌存储位置;4)修改数据库名、登录账号及密码;5)设置生成测试用户数量;原创 2023-02-15 20:58:42 · 1025 阅读 · 0 评论 -
微服务项目【秒杀商品展示及商品秒杀】
第1步:从zmall-common的pom.xml中移除依赖注意:1)本次不采用spring-session方式,改用redis直接存储用户登录信息,主要是为了方便之后的jmeter压测;2)这里只注释调用spring-session的依赖,保留redis的依赖;第2步:在zmall-common公共模块中定义RedisConfig配置类第3步:在zmall-common公共模块中配置redis相关服务用户登录成功后,将用户对象保存到Redis中,并设置超时时间7200秒。原创 2023-02-14 19:01:43 · 936 阅读 · 0 评论 -
微服务项目【网关服务限流熔断降级&分布式事务】
2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit AndRollback),其愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。后来更名为 Seata,意为:Simple Extensible AutonomousTransaction Architecture,是一套分布式事务解决方案。原创 2023-02-14 18:45:43 · 1290 阅读 · 0 评论 -
分布式架构下,Session共享有什么方案?
2.存入cookie中:将session存储到cookie中,但是缺点也明显,例如每次请求都要带着session,数据存储在客户端本地,是有风险的;1.不要有Session:但是确实在某些场景下,是可以没有session的,其实在很多借口类系统当中,都提倡【API无状态服务】;4.我们现在的系统会把session放到Redis中存储,虽然结构上变的复杂,并且需要多访问一次Redis,也就是每一次的接口访问,都不依赖于session,不依赖于前一次的接口访问,用jwt的token;原创 2023-02-11 09:58:34 · 1122 阅读 · 0 评论 -
微服务项目【服务调用&分布式session共享】
SpringBoot整合Spring-Session的自动配置可谓是开箱即用,极其简洁和方便。这篇文章即介绍SpringBoot整合Spring-Session,这里只介绍基于RedisSession的实战。Spring Session 是Spring家族中的一个子项目,Spring Session提供了用于管理用户会话信息的API和实现。原创 2023-02-11 09:55:47 · 1465 阅读 · 0 评论 -
微服务项目【mybatis-plus与微服务注册】
这里请注意了,之前在商品服务模块zmall-product中已经配置了项目的静态资源,为什么还要在gateway网关服务中再配置一次呢?这是因为当请求经过gateway网关服务后会进行断言条件匹配和条件路径截取等操作,从而导致gateway网关路由转发后静态资源失效404的问题,所以特此在gateway网关服务中也配置一次项目网页素材中的公共静态资源js/css/images,确保能正常访问。配置静态资源访问服务器,将各个微服务模块中的静态访问资源迁移到静态资源访问服务器中,然后通过http方式访问即可。原创 2023-02-11 09:07:33 · 925 阅读 · 0 评论 -
微服务项目简介
电商模式:市面上有5种常见的电商模式,B2B、B2C、 C2B、 C2C、O2O;1、B2B模式B2B (Business to Business),是指 商家与商家建立的商业关系。如:阿里巴巴2、B2C 模式就是我们经常看到的供应商直接把商品卖给用户,即“商对客”模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城3、C2B模式C2B(CustomertoBusiness),即消费者对企业。先有消费者需求产生而后有企业生产,即先。原创 2023-02-11 08:49:39 · 635 阅读 · 0 评论 -
多线程【交替打印1-1000】
多线程:交替打印1-1000。原创 2023-02-05 20:22:37 · 348 阅读 · 0 评论 -
微信小程序【获取用户昵称头像和昵称(附源码)】
获取用户头像和昵称原创 2023-02-03 19:31:44 · 7384 阅读 · 7 评论 -
微信小程序【练手小页面】
【代码】微信小程序【练手小页面】原创 2023-01-30 20:32:52 · 405 阅读 · 0 评论 -
微服务自动化管理【IDEA使用Docker插件进行一键部署】
本章目标IDEA使用Docker插件实现springboot项目的一键部署要开两个虚拟机serverregistry。原创 2023-01-22 23:37:54 · 2158 阅读 · 1 评论 -
微服务自动化管理【docker compose】
1.version:指定 docker-compose.yml 文件的写法格式注1:Compose目前有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。2.services:多个容器集合services:容器1:容器2:3.image:镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像4.build。原创 2023-01-12 19:55:12 · 1187 阅读 · 0 评论 -
微服务自动化管理【Docker跨主机集群之Flannel】
环境说明CentOS7方式方式有:Pipework、Flannel、Weave、Open vSwitch(虚拟交换机)、Calico, 其中Pipework、Weave、Flannel是使用的最多。本文介绍的是Flannel1.Flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,原创 2023-01-10 22:32:04 · 1532 阅读 · 0 评论 -
xshell无法使用rz(没有出现选择文件的对话框)
使用yum安装了好了lrzsz之后,使用rz无法出现选择文件的对话框。然后再使用yun -y install lrzsz重新安装。这里出现的问题可能是安装其他东西的时候这个也安装了。先使用yun -y remvoe lrzsz卸载,原创 2023-01-09 21:18:06 · 1497 阅读 · 1 评论 -
微服务自动化管理【etcd快速集群】
概述1.etcd构建自身高可用集群主要有三种形式:静态发现预先已知etcd集群中有哪些节点,在启动时通过–initial-cluster参数直接指定好etcd的各个节点地址etcd动态发现静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预先并不知道各节点ip的情况,这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过已有的etcd集群作为数据交互点,然后在扩展新的集群时实现通过已有集群进行服务发现的机制。原创 2023-01-09 21:06:26 · 1013 阅读 · 0 评论 -
微信小程序测试(简单项目测试)
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。原创 2023-01-07 11:34:16 · 2039 阅读 · 0 评论 -
微信小程序框架
事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。原创 2023-01-06 11:34:29 · 5326 阅读 · 0 评论 -
微信小程序介绍
util目录下的util.js文件专用于小程序项目中的公共函数定义,可以将项目开发过程中的公共代码方法提取封装到util.js文件中。1.util/util.js中定义公共方法s="你好,"+s;return s;}}2.在指定页面中的js中模块化引入utils的js文件//通过require方式引入整个util//通过import方式引入整个util//引入指定的模块3.利用页面的onLoad事件完成数据赋值展示onLoad() {});})}}转载 2023-01-05 11:40:57 · 12631 阅读 · 6 评论 -
etcd快速入门
etcd是什么etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。etcd作为服务发现系统,有以下的特点:1.简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单2.安全:支持SSL证书验证3.快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作4.可靠:采用raft算法,实现分布式系统数据的可用性和一致性etcd项目地址原创 2023-01-01 23:02:29 · 1102 阅读 · 0 评论 -
RabbitMQ之延迟队列
RabbitMq支持对消息和队列设置TTL,对消息这设置是在发送的时候指定,对队列设置是从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除。通过DLX和TTL模拟出延迟队列的功能,即,消息发送以后,不让消费者拿到,而是等待过期时间,变成死信后,发送给死信交换机再路由到死信队列进行消费。如果两种方式一起使用消息对TTL和队列的TTL之间较小的为准,也就是消息5s过期,队列是10s,那么5s的生效。设置队列的过期时间用 x-expires 参数,单位毫秒,注意,不能设置为0。原创 2023-01-01 20:59:23 · 878 阅读 · 0 评论 -
Rabbitmq交换机
Exchange(交换机)的作用在RabbitMQ中,生产者发送消息不会直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列再将消息以推送或者拉取方式给消费者进行消费生产者------------>交换机------------>队列------------>消费者交换机原理图见:images/01Exchange(交换机)的类型1.直连交换机:Direct Exchange。原创 2022-12-31 11:44:24 · 1022 阅读 · 0 评论 -
docker之Nacos的持久化和集群部署
mysqldump -u 用户名 -p 密码 -d 数据库名 > 数据库名.sql。2. nacos-docker镜像安装nacos并配置数据库(nacos单机版)注:后面的mysql标签是版本号,可选择,有:5.5/5.6/5.7/8.0。数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据。mysqldump -u 用户名 -p 密码 数据库名 > 数据库名.sql。mysql -u 用户名 -p密码 数据库名 < 数据库名.sql。原创 2022-12-29 13:38:33 · 684 阅读 · 1 评论 -
docker之安装nginx
自定义网络相关命令1.创建自定义网络参数说明–driver bridge 设置网络模式–subnet 192.168.0.1/16 设置子网–gateway 192.168.0.1 设置网关mynet 自定义网络的名称2.删除自定义网络mynet(没有容器使用此网络才能删除)3.查看docker中已安装的所有网络4.查看自定义网络mynet中的配置信息启动容器时,指定网络、IP。原创 2022-12-29 13:28:05 · 339 阅读 · 0 评论 -
Docker之网络配置
Docker网络模式Docker在创建容器时有四种网络模式:bridge/host/container,bridge为默认不需要用–net去指定,其他三种模式需要在创建容器时使用–net去指定。原创 2022-12-25 20:23:06 · 1721 阅读 · 4 评论 -
RabbitMQ如何确保消息发送和消息接收
通过实现ReturnCallback接口,启用消息失败返回,此接口是在交换器路由不到队列时触发回调,该方法可以不使用,因为交换器和队列是在代码里绑定的,如果消息成功投递到Broker后几乎不存在绑定队列失败,除非你代码写错了。消费者收到消息后,手动调用Basic.Ack或Basic.Nack或Basic.Reject后,RabbitMQ收到这些消息后,才认为本次投递完成。RabbitMQ消息确认机制(ACK)默认是自动确认的,自动确认会在消息发送给消费者后立即确认,但存在丢失消息的可能。原创 2022-12-23 19:24:00 · 2007 阅读 · 0 评论 -
String ,StringBuffer,StringBuilder的区别和应用场景
3)StringBuilder 是java5中引入的,它和StringBuffer的方法完全相同,区别在于它是单线程环境下使用的,因为它的所有方法都没有被synchronize修饰,因此他的效率理论上比StringBuffer 高,安全性比StringBuffer低。2)StringBuffer/StringBuilder 表示的字符串对象可以直接进行修改。1)String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。原创 2022-12-23 19:22:38 · 200 阅读 · 0 评论 -
如何处理mysql的慢查询?
2.分析sql语句,看看是否load了额外的数据,可能是查询了多余的行并丢弃掉了,可能是加载了许多结果中不需要的列,对语句进行分析及重写。3.分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引。4.如果对语句的优化已经无法进行,可以考虑表中的数据是否太大,如果是的话可以进行横向或者纵向的分表。1.开启慢查询日志,准确定位到那个sql语句出现了问题。原创 2022-12-23 19:21:44 · 298 阅读 · 0 评论 -
自定义镜像上传阿里云
注1:docker exec -it 容器ID /bin/sh 默认使用当前帐号(即root)登入,通过whoami命令可以查看当前用户名,2.1 首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M。注1:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小。注2:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小。原创 2022-12-23 19:19:19 · 218 阅读 · 0 评论 -
Docker数据卷&dockerfile
新建1个名为beifen的(暂时性,之后会删除)容器,由于volumes-from了db_data,所以在根目录下也会生成1个db_data文件夹,经过执行命令后,将db_data文件下的数据压缩在container_backup文件夹下,并存在宿主机上的host_backup_path下。注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,维护者信息 MAINTAINER。原创 2022-12-16 20:07:14 · 317 阅读 · 0 评论 -
Docker入门
Docker是什么Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs),它是完整的一套容器管理系统Docker提供了一组命令,让用户更加方便直接地使用容器技术,而无需要过多关心底层内核技术注1:什么是容器一个容器就相当于一个虚拟机注2:docker用途,目前有三大类1.提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境2.提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。原创 2022-12-13 11:05:41 · 489 阅读 · 0 评论 -
Gateway之限流、熔断
Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒。原创 2022-12-12 20:40:47 · 761 阅读 · 0 评论 -
服务网关之Spring Cloud Gateway
Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。性能强劲:是第一代网关Zuul的1.6倍功能强大:内置了很多实用的功能,例如转发、监控、限流等设计优雅,容易扩展。原创 2022-12-10 13:13:33 · 372 阅读 · 0 评论 -
微服务之Nacos Config服务配置
如果多个share-configs中存在多个相同配置,以谁为准?以数组中最后一个为准如果share-configs与extension-configs中有多个相同配置,以谁为准?nacos-config.yaml与nacos-config-dev.yaml。原创 2022-12-10 11:39:18 · 2664 阅读 · 0 评论 -
RabbitMQ入门
1. 什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已作用:应用程序“对”应用程序的通信方法。2. 应用场景主要解决异步处理、应用解耦、流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构1.异步处理用户注册后,需要发注册邮件和注册短信2.应用解耦用户下单后,订单系统需要通知库存系统3.流量削锋(重点)流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛应用场景:秒杀活动,一般会原创 2022-12-07 17:05:20 · 1120 阅读 · 0 评论 -
Nacos注册中心和服务消费方式
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。nacos2.0.1版本: https://pan.baidu.com/s/1hXH5Eq3ZR1T1qZ0YOqD5Cg提取码:8kb01.1:切换单体:startup.cmd -m standalone1.2:访问nacos:打开浏览器输入http://loc原创 2022-12-07 15:53:02 · 734 阅读 · 0 评论 -
springcloud入门
微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。一旦采用微服务系统架构,就势必会遇到这样几个问题:对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。springcloud:Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Sprin原创 2022-12-06 21:23:53 · 273 阅读 · 0 评论