自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 postman和jmeter测试websocket聊天室

基于踩坑之后,查找各种测试websoket聊天室文档无果,在此记录分享一下使用postman和jmeter测试聊天室过程。示例:踩坑复现:ws协议数据传输:浏览器抓包:我的数据:对比之下,好像传的没什么问题,但是后台会一直报参数异常信息。填坑查过很多文章,包括postman官方文档,都没有一个具体传参说明。求助导师之下,追跟溯源,在后台获取正常最原始的字节流,并将其转为字符串,此时,得知数据格式为:注意:1.他是文本格式,并不是json,貌似第一眼像json串,因

2021-07-30 17:07:30 264 1

原创 HandlerMethodArgumentResolver存储和获取登录用户信息

一丶传统获取方法在每次controller中接受token,也就是从请求头中获取token,然后调用tokenUtiils进行解析,出相关的用户信息。进行使用可以使用AOP。使用mvc拦截器HandlerInterceptor+方法参数解析器HandlerMethodArgumentResolver二丶自定义拦截器实现HandlerInterceptor在实现过程中,主要复写以下方法,前提是自定义一个注解,然后再我们自定义的拦截器中的前置处理方法中,进行注解识别,当有此注解后被拦截,然后从re

2021-07-14 11:29:17 86 1

原创 变基操作详解 git rebase git pull --rebase <origin/master>

前言: 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。 什么是“变基”,怎样使用“变基”,就我学习与大家做一下分享,参考。金科玉律:如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。一丶merge合并分叉开发任务分叉到两个不同分支,又各自提交了更新,如图:使用merge整合分叉历史,他会把两个分支的最新快照C3,C4和二者最近的共同祖先C2进行三方合并,合并的结果生成一个新的快照并提交。如图所示:二丶rebase变基整

2021-04-25 20:36:14 1144

原创 远程分支管理推送与拉取仓库变化详解 git push origin branch命令详解 git branch -vv git fetch git pull

前言: 远程引用是指对远程仓库通过标签,分支引用等。可以通过git ls-remote 显示获得远程引用的完整列表,或者通过git remote show 获得远程分支的更过信息。远程跟踪分支是远程分支状态的引用。它们是你无法移动的本地引用。一旦你进行了网络通信, Git 就会为你移动它们以精确反映远程仓库的状态。请将它们看做书签, 这样可以提醒你该分支在远程仓库中的位置就是你最后一次连接到它们的位置。假设你的网络里有一个在 git.ourcompany.com 的 Git 服务器。 如果你从这里克隆

2021-04-25 17:12:57 187

原创 Git分支管理Git branch相关参数命令,git branch -v git branch --merged git branch --no-merged git commit -a -m

Git branch 常用参数解释git branch 不仅仅可以用来创建删除分支,当它不加任何参数的时候,会得到当前所有分支的一个列表,带有* 号的表示HEAD所指向的分支。git branch -v 可以列出每一个分支的最后一次提交。git branch --merged可以查看哪些分支已经合并到当前分支,此列表下没有* 标记的分支可以删除,不会报错。git branch --no-merged查看还未合并到当前分支的分支,此时如果去删除未合并的分支,会报错的。与git branch --m

2021-04-25 15:54:04 511

原创 git打标签git tag,git tag -l,git tag -a name -m ‘desc‘,git tag -d,git checkout -b version2 v2.0.0

一丶相关命令列出标签git show git show -l # 当需要模式匹配的时候 -l必须写附注标签在 Git 中创建附注标签十分简单。 最简单的方式是当你在运行 tag 命令时指定 -a 选项,-m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。git tag -a v1.4 -m 'my version 1.4'git show附注标签,显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息 git

2021-04-25 09:10:46 60

原创 git远程仓库操作git remote,git -v,git remote add name url,git fetch,git pull,git push git remote show origi

一丶查看远程仓库列出远程仓库服务器的简写,如果已克隆,最少有一个origingit remote 使用 -v参数,显示需要读写远程仓库使用的Git保存的简写 以及对应的urlgit remote -vorigin https://github.com/schacon/ticgit (fetch)origin https://github.com/schacon/ticgit (push) 二丶添加远程仓库使用clonegit clone url name

2021-04-24 23:38:48 227

原创 Git分支图解理解其概念HEAD,git branch name,git checkout name,git log --oneline --decorate

Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 master 分支会在每次提交时自动向前移动。在 Git 中,HEAD是一个指针,指向当前所在的本地分支(译注:将 HEAD 想象为当前分支的别名)。 在本例中,你仍然在 master 分支上。 因为 git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中去。一丶创建分支testgit branch

2021-04-21 10:18:02 165

原创 Git撤销操作,重新提交git commit --amend,git reset <--hard> HEAD <filename>撤销添加到暂存区 git checkout --f 撤销修改

有些撤消操作是不可逆的。 这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。这篇文件是简单的处理之后更新,会有一定程度上的提高,比如分支进度管理等。相信所有commit过的文件都是可以恢复的,包括删除的,–amend的,都是可以的一丶git commit --amend重新提交解决当commit之后发现有几个文件没有add解决当commit之后发现提交说明需要修改修补最后的提交并不是用修改后的提交原位替换,用普通提交方式去提交,这一点是重要的,在效果上来看,上

2021-04-20 15:07:04 276

原创 git查看提交历史日志 git log相关参数详解,git log -p,git log--stat,git log --pretty,git log --since,git log--author

Demogit log --pretty="%h - %s" --author='yaojinghui' --since='2021.04.15' --before='2021-04-20' --no-merges --t#查找作者yaojinghui在规定日期之前除了合并提交之外,哪一个提交修改了#文件t的简单hash值和提交说明一丶git log#不加参数从上到下依次显示每个提交的校验和,author,date,email,descgit log#显示每次提交差异,同时显示显示最近几次

2021-04-20 14:34:59 403

原创 Git各种命令,git init,git clone,git add,git status,忽略文件配置.gitignore,git diff,git commit rm

一丶git initgit init:初始化仓库,生成.git文件如果是在非空文件中执行,应该:使用以下命令,追踪文件,并初始提交git add *.cgit add LICENSEgit commit -m 'initial project version'二丶git clone使用url进行克隆git clone <url>克隆之后修改自己本地仓库名字git clone <url> 'your repo name'支持https://协议,git

2021-04-19 17:46:04 72

原创 学习git基础知识与命令简记,初次运行git的命令行配置,git与其他版本控制的区别,git config配置命令

一丶Git同其他版本控制系统的区别Git和其他版本控制系统的主要区别在于Git对待数据的区别。概念上来说,其他大部分系统,以文件变更列表的方式存储信息,这类系统将他们存储的信息看做是一组基本文件和每个文件随时间不累积的差异,通常称作基于差异的版本控制。Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的

2021-04-19 16:16:19 27

原创 浅谈几种常用设计模式(工厂模式,代理模式,建造者模式,模板模式,策略模式,观察者模式等)

浅谈几种常用设计模式(工厂模式,代理模式,建造者模式,模板模式,策略模式,观察者模式等)设计模式是一套被反复使用的、多数人知晓、经过分类编目的优秀代码设计经验的总结。因此,灵活运用设计模式,可以写出高效率有灵性的代码。学习总结:接口与抽象类的灵活运用,构成了不同的设计模式,设计模式的存在让更多的代码变得灵活起来,扩展性变高,具有灵性。总之,一个好的码农,思想最重要。一丶单例模式概念保证一个类只有一个实例,并且提供一个访问该全局访问点使用场景1. 网站的计数器,一般也是采用单例模式实现

2021-03-15 16:14:35 434

原创 SpringSecurity认证相关

好久没有写笔记,发现学的知识都容易忘记。最近顺便回顾,顺便将笔记写上,方便查看。简单回顾之前在写项目的时候写过一篇SpringSecurity和cas整合的文章,看起来有些模棱,还是分开,先明确一个,再明确一下这样接受起来应该会比较容易。这篇介绍了SpringSecurity的使用配置情况,以及本人所遇到的坑注意事项。一丶最终配置如下<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframe

2021-03-11 15:28:57 27

原创 RabbitMQ集群搭建的初步认识Haproxy高可用

RabbitMQ集群搭建的初步认识Haproxy高可用​ 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。集群方案原理:​ 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的...

2020-04-09 10:32:27 173

原创 RabbitMQ应用问题消息的可靠性保障(消息补偿机制)和幂等性问题(乐观锁解决方案)思路

RabbitMQ应用问题消息的可靠性保障(消息补偿机制)和幂等性问题(乐观锁解决方案)思路一丶可靠性保障消息补偿需求是:想百分百确保消息发送成功方案图示:二丶消息的幂等性保障​ 幂等性指一次和多次请求某一个资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。​ 在MQ中指,消费多条相同的消息,得到与消费该消息一...

2020-04-09 10:29:45 579

原创 RabbitMQ高级特性可靠性传递,ACK机制,限流,TTL,死信,延迟,日志与监控,消息追踪的学习

RabbitMQ高级特性的学习一丶消息的可靠性传递(生产端)rabbitmq 整个消息投递的路径为:producer—>rabbitmq broker—>exchange—>queue—>consumer​ 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。...

2020-04-09 10:27:25 260

原创 Spring Boot整合rabbitMQ 相关demo

Spring Boot整合rabbitMQ 相关demo​ 在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQhttps://github.com/spring-projects/spring-amqp​ 尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate发送消息,使用注解接收消息。一般在开发过程中:...

2020-04-09 10:23:03 72

原创 Spring 整合RabbitMQ相关demo

Spring 整合RabbitMQ相关demo一丶生产者1.1pom依赖<?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"...

2020-04-09 10:21:13 46

原创 RabbitMQ 初学及工作模式

RabbitMQ 初学及工作模式协议AMQP:AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。类比HTTP。AMQP 是协议,类比HTTP。...

2020-04-09 10:18:34 72

原创 RabbitMQ安装说明文档

注意: 请使用资料里提供的CentOS-7-x86_64-DVD-1810.iso 安装虚拟机.1. 安装依赖环境在线安装依赖环境:yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz...

2020-04-09 10:08:44 35

原创 初识MQ(Message Queue)

##初识MQ(Message Queue)​ MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。MQ,消息队列,存储消息的中间件分布式系统通信两种方式:直接远程调用 和 借助第三方 完成间接通信发送方称为生产者,接收方称为消费者一丶MQ的优势1.1应用解耦(对比)提高系统容错性和可维护性系统的耦合性越高...

2020-04-09 10:06:35 139

原创 Spring Cloud Bus 解决配置文件实时更新与git仓库同步

Spring Cloud Bus实现不重启服务的情况下,及时更新配置文件。在上一篇博文之后,测试,会发现,当我们修改配置文件的属性值时,项目中并不能及时更新如果想在不重启微服务的情况下更新配置该如何实现呢? 可以使用Spring Cloud Bus来实现配置的自动更新。需要注意的是Spring Cloud Bus底层是基于RabbitMQ实现的,默认使用本地的消息队列服务,所以需要提前启...

2020-04-07 10:50:20 261

原创 Spring Cloud Config配置文件分布式配置

Spring Cloud Config分布式配置​ 在分布式系统中,由于服务数量非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Confifig,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。​ 配置中心本质上也是一个微服务,同样需要注册...

2020-04-07 10:48:39 44

原创 Spring Cloud Gateway初识及相关配置

Spring Cloud GatewaySpring Cloud Gateway是Spring官网基于Spring 5.0、 Spring Boot 2.0、Project Reactor等技术开发的网关服务。Spring Cloud Gateway基于Filter链提供网关基本功能:安全、监控/埋点、限流等。Spring Cloud Gateway为微服务架构提供简单、有效且统一的API...

2020-04-05 22:44:12 257

原创 SpringCloud之Feign相关配置

SpringCloud之Feign​ Feign也叫伪装:Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。(可以结合之前的写的初学SpringCloud中RestTemplate进行对比使用)​ Feign主要作用:自动根据参数拼接http请求地址。​ 官方网址:http...

2020-04-04 23:03:56 101

原创 nginx限流操作(与网管限流算法不一致)

nginx限流操作一般情况下,首页的并发量是比较大的,即使有了多级缓存,如果有大量恶意的请求,也会对系统造成影响。而限流就是保护措施之一。nginx提供两种限流的方式:一是控制速率控制速率的方式之一就是采用漏桶算法。springcloud限流采用的是令牌桶算法二是控制并发连接数漏桶算法实现 nginx的配置配置示意图如下:修改/usr/local/openresty/nginx...

2020-04-01 16:11:15 114

原创 nginx(OpenResty)+lua+redis实现缓存预热或二级缓存查询

nginx(OpenResty)+lua+redis实现缓存预热或二级缓存查询在电商项目中可以用来处理广告的缓存编写lua脚本实现缓存预热(将mysql里的数据查询出来存入redis)图解:编写lua脚本实现二级缓存读取图解:一丶实现缓存预热实现思路:定义请求:用于查询数据库中的数据更新到redis中。(1)连接mysql ,按照广告分类ID读取广告列表,转换为jso...

2020-04-01 16:07:01 569

原创 OpenResty的初步认识和使用

OpenResty的初步认识和使用OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出...

2020-04-01 16:04:41 78

原创 LUA的初步认识使用

LUA的初步认识使用​ Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应...

2020-04-01 16:02:39 46

原创 分布式ID生成解决方案(Idworker)

分布式ID生成解决方案​ 对于互联网应用,某个表可能会占用很大的存储空间,比如电商项目中的订单表,而且在项目部署时,我们会用到数据库分片,把一个数据库进行拆分,通过数据库中间件进行连接,这样的话如果采用数据自增,可能产生重复的ID.​ 因此,分布式ID生成解决方案应运而生:UUID(缺点,太长,无法排序)优点:简单,代码方便。生成ID性能非常好,基本不会有性能问题。全球唯一...

2020-04-01 16:00:32 473

原创 JWT实现微服务鉴权及工具类提供

JWT实现微服务鉴权及工具类提供​ 结合上篇对网关的学习,我们使用网关在系统中比较适合进行权限校验,我学习的是JWT方式实现鉴权校验.一丶JWT了解JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的...

2020-04-01 15:43:20 125

原创 微服务网关GateWay(含限流)

微服务网关GateWay不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:客户端会多次请求不同的微服务,增加了客户端的复杂性存在跨域请求,在一定场景下处理相对复杂认证复杂,每个服务都需要独立认证难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分...

2020-04-01 15:39:39 1902

原创 SpringCloud之Hystrix熔断器配置

SpringCloud之Hystrix熔断器Hystrix是一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。Hystrix解决雪崩效应解决办法:线程隔离和服务降级线程隔离:用户请求不直接访问服务,而是使用线程池中空闲的线程访问服务,加速失败判断时间。服务降级:及时返回服务调用失败的结果,让线程不因为等待服务而阻塞。添加依赖 <dependency&...

2020-03-31 20:20:38 524

原创 Spring Cloud之负载均衡Ribbon

Spring Cloud之负载均衡Ribbon​ 负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用。在Spring Cloud中提供了负载均衡器:Ribbon.Ribbon提供了轮询、随机两种负载均衡算法(默认是轮询)可以实现从地址列表中使用负载均衡算法获取地址进行服务调用。​ 为Eureka中已经集成了Ribbon,所以我们无需引入新的依赖。直接修改 consu...

2020-03-31 20:17:53 49

原创 SpringCloud之Eueka注册中心

SpringCloud之Eueka注册中心​ Eureka的主要功能是进行服务管理,定期检查服务状态,返回服务地址列表。​ Eureka架构中的三个核心角色:服务注册中心,服务提供者,服务消费者如图所示:一丶搭建eureka_server工程​ Eureka是服务注册中心,只做服务注册;自身并不提供服务也不消费服务。可以搭建web工程使用Eureka,可以使用Spring Boo...

2020-03-31 20:15:59 156

原创 Bcrypt密码加密

Bcrypt密码加密​ 对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。 目前,MD5和BCrypt比较流行。相对来说,BCrypt比MD5更安全。因为其内部引入的加盐机制​ BCrypt 官网http://www.mindrot.org/projects...

2020-03-31 20:10:09 230

原创 初识SpringCloud相关知识

SpringCloud一丶 系统架构集中式架构:一台服务器,容错率比较低垂直拆分架构:代码重用率低分布式服务:调用错综复杂SOA:面向服务架构,SOA使用了ESB组件的面向服务架构:ESB自身实现复杂;应用服务粒度较大,所有服务之间的通信都经过ESB会降低通信速度;部署、测试ESB比较麻烦。微服务架构:是一套使用小服务或者单一业务来开发单个应用的方式或途径。单一...

2020-03-31 20:07:39 45

原创 分布式文件存储FastDFS(SpringBoot微服务搭建)

分布式文件存储FastDFS(SpringBoot微服务搭建)​ FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。​ FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等...

2020-03-31 20:04:29 546

原创 SpringBoot之监听机制Listener

SpringBoot之监听机制Listener​ SpringBoot启动时会对几个监听器进行回调,因此我们可以实现这些监听器接口,在项目启动的时候完成一些操作.ApplicationContextInitializerimport org.springframework.context.ApplicationContextInitializer;import org.springfr...

2020-03-23 09:06:38 91

空空如也

空空如也

空空如也

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

TA关注的人

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