- 博客(30)
- 收藏
- 关注
原创 Swagger2的使用
接口文档 – Swagger2的使用1,api一定需要开发文档配合,移动端只需要根据开发文档进行开发即可;2,传统的开发文档问题:格式随意,更新不及时;https://www.jianshu.com/p/d7b13670e0eb1.swagger22 小么鸡3.Apizza4.Yapi showdoc easydoc配置依赖<dependency> <groupId>io.springfox</groupId>
2020-10-15 16:26:04
211
原创 分布式事务简单理解与Lcn实现流程
分布式事务事务 : 一组原子性的逻辑操作 , 要么一起成功的执行 ,其中某些逻辑出现错误则整个逻辑失败, 回滚到原本状态[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hu1Mrbc1-1601300710324)(C:\Users\白米白9999\AppData\Roaming\Typora\typora-user-images\1600066273001.png)]------如何看待分布式事务的问题1.可不可从设计的角度,来避免这个分布式事务的问题//考虑
2020-09-28 21:55:33
367
原创 分布式部署中的接口防刷
接口防刷限流第一种 : 基础原理思路 :1. 接口防刷主要是限制同一IP地址在一定时间内的访问次数2. 同一IP每次访问,经过zuul网关的时候进行验证,3. 利用IP作为redis的key,去查询此IP的访问次数 , 当第一次访问时,无key ,则设置key ,并设置过期时间4. 接下来的每次访问都会通过以上方式去验证规定时间内,如一分钟内,是否访问超过20次,超过后则不放行第二种: Spring Cloud Zuul通过zuul-ratelimit实现限流spring cloud zuu
2020-09-14 20:10:16
509
原创 改善路径地址与二维码验证
隐藏秒杀地址(防止直接F12拿取请求路径去访问接口)//可以改变请求的可变性与时效性来根据直接拿取路径那刷单01.在请求真实方法前,调用后台getPath方法(可以返回uuid),然后把这个地址存储在redis中,设置个比较短的失效实际,如3s,5s之类的。02.前台获取到响应回来的路径之后,请求的地址就变成/seckill/请求回来的地址/do_seckill03.在do_seckill后台方法中获取到请求的路径path和redis中的判断是否一致,不一致的话就抛出异常,提示是非法地址.
2020-09-14 20:05:18
133
原创 项目微服务改造
项目微服务改造服务划分原则1.基于业务逻辑 : 将系统中的业务按照**职责范围**进行识别,职责相同的划分为一个单独的服务。--------------------------------------------------------------2.基于稳定性 : 将系统中的业务模块按照稳定性进行**排序**。稳定的、不经常修改的划分一块;将不稳定的,经常修改的划分为一个独立服务。比如日志服务、监控服务都是相对稳定的服务,可以归到一起。------------------------------
2020-09-05 17:29:00
256
原创 消息中间件之rocketMQ
RocketMQ消息中间件应用场景异步解耦 削峰填谷 //请求都先来到消息中间件,然后服务器根据内需拉取请求数量分布式缓存同步/消息分发异步解耦 : 作为淘宝/天猫主站最核心的交易系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、阿里妈妈、流计算分析等等,整体业务系统庞大而且复杂,架构设计稍有不合理,将直接影响主站业务的连续性;削峰填谷 : 诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高的流量脉冲,或因没做相应的保护而导致系统超负荷甚至崩
2020-09-04 13:15:01
292
原创 单体项目中的统一异常处理
单体项目中的统一异常处理在前后端分离项目中,一般会有一个公共项目来提供核心的一些代码实现功能,因为前段数据支持,与后台数据管理都需要使用到首先在公共核心项目core中自定义异常处理的类public class LogicException extends RuntimeException { public LogicException(String msg){ super(msg); }}前端异常增强@ControllerAdvicepublic clas
2020-09-02 15:22:47
206
原创 分布式项目中的统一异常处理
分布式项目中的统一异常出路1.自定义异常处理类并继承runtimeexception2.自定义统一异常处理类处理各类自定义异常处理类(但是此处作为公共项目,不贴自动增强注解@ControllerAdvice,单独每个服务继承此公共异常处理类并做增强处理,比较灵活)3.虽然各个服务都能实现本服务的统一异常处理,但是结合整个项目来看,为了方便快速找出项目中是哪个服务出现了异常,所以需要相应标示来区分4.自定义封装异常返回对象其中包括异常编码对应不同服务的不同异常错误(500101,500102,6001
2020-09-02 14:55:10
590
原创 Elastic-job 分布式调度简单入门
Elastic-job 分布式调度常见应用场景 :某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总1.2 为什么需要分布式调度感觉Spring给我们提供的这个注解可以完成任务调度的功能,好像已经完美解决问题了,为什么还需要分布式呢?主要有如下这几点原因:1.单机处理极限:原本1分钟内需要处理1万个订单,但是现在需要1分钟内处理10万个订单;原来一个统计需要1
2020-09-02 13:11:49
413
原创 Linux-软件下载
简单项目部署JDK的安装1:将jdk拉入linux路径: /usr/local/software2:将jdk解压到指定的路径cd /usr/local/softwaretar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local3:给解压后的文件目录改过好操作的名字, 可以不改 mv jdk1.8.0_161 jdk1.84:备份配置环境变量文件 注意,设置前先备份,养成习惯cp /etc/profile /etc/profile_bak
2020-08-30 14:36:16
172
原创 Linux 基础之常见基本指令
Linux服务器概念就是系统性能非常好的电脑~~minix3 – 一个教授封装最初的一个系统后用于教学 后来因为有bug改进后就变成了今天的Linux硬件 内核(承上启下,操作系统) 软件 (无法直接操作硬件) 内存管理 , 进程调度 , 文件管理等 工作细节环境分类: 开发环境 : 测试环境:生产环境:回归测试 : 从头到尾再测试一遍虚拟机----------------------------
2020-08-30 13:27:37
605
原创 SpringCloud之分布式配置中心Config
分布式配置中心Config配置中心的作用和好处统一管理配置, 快速切换各个环境的配置 在微服务体系中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各种环境下配置信息的不同、配置信息修改之后实时生效等等,传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人员对配置管理的要求,如:安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏时效性:修改配置,需要重启服务才能生效局限性:无法支持动态调整:例如日志开关、功能开关所以,一套集中式的,
2020-08-30 13:03:23
165
原创 SpringCloud之链路追踪组件Sleuth&Zipkin
链路追踪组件Sleuth&Zipkin为什么需要链路追踪?? 微服务架构是通过业务来划分服务的,,使用 REST 调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。在微服务框架中,一个由客户端发起的请求在后端系统中经过多个不同的服务节点调用来协同生产最后的请求结果,每一个前段请求会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都
2020-08-30 13:01:39
638
原创 SpringCloud之微服务网关Zuul
微服务网关ZuulZuul简介是什么? 路由/过滤Zuul网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,//处理非业务功能 提供 路由请求、鉴权、监控、缓存、限流等功能Zuul包含了对请求的//路由和过滤//两个最主要的功能:// 路由能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一的入口的基础,// 过滤器功能则负责对请求的处理过程进行干预,是实现请求验证、服务聚合等功能的基础。Zuul和Eureka进行整合 将Zuul自身注册为Eureka服务治理下的应用
2020-08-30 11:55:10
105
原创 SpringCloud之服务熔断与降级Hystrix
服务熔断与降级Hystrix降级抛弃非核心业务,保障核心页面的正常运行.服务器忙,请稍后再试, 不让客户端等待立刻返回一个友好的提示, fallback引发服务降级: 1>程序运行异常 2>调用超时 3>服务熔断出发服务降级 4>线程池/信号量打满也会导致服务降级熔断一般熔断操作过程:正常服务访问-->遭遇异常/超时等意外情况,服务降级-->多次请求处理无果进而熔断-->熔断时间到,尝试恢复调用链路java 跟
2020-08-30 11:50:07
356
原创 SpringCloud之Ribbon ,Feign简单实现
微服务调用方式Ribbon使用Ribbon来实现远程调用1. 启动类中添加RestTemplate的bean2.使用RestTemplate.getObject获取远程接口的信息---------------------------------------------------------- @Bean public RestTemplate template(){ return new RestTemplate(); }-------------------
2020-08-30 11:45:59
168
原创 SpringCloud之服务注册中心Eureke
SpringCloud Spring Cloud是一个微服务框架的规范,注意,只是规范,他不是任何具体的框架。它规定大概要有以下几种功能服务的注册与发现负载均衡服务熔断和限流智能路由控制总线链路监控…Spring Cloud Netflix有哪些组件呢?eureka (提供服务注册与发现功能)ribbon(提供负载均衡功能)Feign(整合了ribbon和Hystrix,具有负载均衡和熔断限流等功能)Hystrix (提供了熔断限流,合并请求等功能)Zuul (提供了
2020-08-30 11:39:27
171
原创 接口安全 -- 接口防刷代码实现
接口安全api接口分类: 1>公共接口:你查快递,你查天气预报,你查飞机,火车班次等,这些都是有公共的接口 2>私密接口:需要登录访问或者公司内部接口接口安全要求:1.防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口):接口防刷2.防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改):接口防篡改(签名机制)3.防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放):接口时效性4.防数据信息泄漏
2020-08-22 17:58:50
584
1
原创 接口文档 -- Swagger2的使用
接口文档 – Swagger2的使用1,api一定需要开发文档配合,移动端只需要根据开发文档进行开发即可;2,传统的开发文档问题:格式随意,更新不及时;https://www.jianshu.com/p/d7b13670e0eb1.swagger22 小么鸡3.Apizza4.Yapi showdoc easydoc配置依赖<dependency> <groupId>io.springfox</groupId>
2020-08-22 17:50:02
199
原创 Elasticsearch实现全文检索简单实现
Elasticsearch实现全文检索搜索步骤关键词 es 匹配 满足条件返回id集合 --> 通过id集合,查询mysql/mongodb数据库得到数据列表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AMh0ijth-1597933000236)(C:\Users\白米白9999\AppData\Roaming\Typora\typora-user-images\1597931652119.png)]数据初始化:设计domain 想当于在El
2020-08-20 22:19:52
1518
原创 网页中的浏览量 ,回复,分析,顶,收藏等问题
VO对象的分析与创建/** * 攻略redis中统计数据 */@Getter@Setter@ToStringpublic class StrategyStatisVO implements Serializable { private String strategyId; private int viewnum; private int replynum; private int sharenum; private int favornum;
2020-08-18 10:51:07
421
原创 Redis与mongodb数据库数据之间的初始化与持久化 / 定时器
mongodb --> Redis 数据的初始化Redis完整的缓存操作 分为三个步骤// 1. 缓存数据初始化(预热) :将数据库中的数据加载到缓存中// 2. 缓存的业务操作 :// 3. 缓存数据的持久化(将缓存中的数据同步到数据库)思考 ???1. 需要将那些数据进行初始化处理//1.需要频繁变动(DML)的数据 ,需要初始化缓存(频繁操作数据库的操作)//不需要频繁变动[DQL]的数据,需要初始化的缓存 此处初始化 : 1.攻略的统计对象(vo) 2.用户攻略收藏
2020-08-18 09:43:50
627
原创 自定义解析器 加实例分析
自定义解析器springmvc中所有的映射方法中形式参数的值的注入都是springmvc自带的参数解析器现在想要springmvc将对象登陆用户对象注入,需要自定义参数解析器简化后的代码代码底层实现原理 : 需要自定义springmvc参数解析器将请求映射方法声明形式参数的userInfo类型的参数 ,解析成当前登陆用户对象并注入1. 自定义解析器类 并实现HandlerMethodArgumentResolver接口 2. 实现接口中的二个方法 : 方法一 : 是判断该解析器能解析
2020-08-15 17:18:53
193
原创 基于POI依赖的文件的导入导出
信息的导入导出功能@RequestMapping("/exportXls") public void exportXls(HttpServletResponse response) throws Exception { //文件下载的响应头 response.setHeader("Content-Disposition","attachment;filename=employee.xls"); //直接使用poi //创建excel文
2020-08-10 14:14:02
379
原创 数据图表的数据的统计
数据图表展示Controllerpackage cn.wolfcode.crm.web.controller;import cn.wolfcode.crm.query.CustomerReportQuery;import cn.wolfcode.crm.service.ICustomerReportService;import cn.wolfcode.crm.util.MessageUtil;import com.alibaba.fastjson.JSON;import org.spring
2020-08-10 14:12:51
77
原创 辅助mongodb.redis一些常见常量,枚举,JSONResult方法,注解类的简单设计
枚举类设计package cn.wolfcode.wolf2w.redis.util;import cn.wolfcode.wolf2w.util.Consts;import lombok.Getter;@Getterpublic enum RedisKeys { VERIFY_CODE("verify_code", Consts.VERIFY_CODE_VAI_TIME*60L), USER_LOGIN_TOKEN("user_login_token" ,Consts.US
2020-08-10 10:52:47
254
原创 浅谈版本控制基础 ,以及Gitee 码云的简单使用
版本控制git 概念了解git基本操作流程git工作区,暂存区,版本库(本地仓库)git常用命令git addgit commit - m “”git statusgit loggit diffgit rest --hard commotidgit checkout – 文件名git rm 文件名git branchgit branch 分支名git merge 分支名git branch -d 分支名git pushgit pullgit clone
2020-08-06 15:44:27
339
原创 浅谈Restful风格下的请求接口设计等基础知识总结
浅谈Restful风格下的请求接口设计应用接口的概念把系统中的服务作为API接口暴露给外部链接使用传统开发模式与前后端分离开发模式restful风格接口设计怎样确定资源,进而确定路径怎样确定请求方式确定请求参数确定返回值页面js怎么发起异步请求访问restful风格接口常用的restful接口相关标签requestMapping标签的属性Springboot的自动配置原理SpringBoot启动的时候加载主配置类, 开启了自动配置功能 @Enable
2020-08-06 15:24:54
814
原创 浅谈JQuqry 这么一个优秀的 Javascript 框架,及其简单应用
JQuqryjQuery 介绍jQuery 是一个优秀的 Javascript 框架 , 是免费、开源 , 轻量级的 JS 库 , 兼容多浏览器的 Javascript 库,核心理念是 write less,do more(写得更少,做得更多)jQuery 能干什么Query 使用户能更方便地处理 HTML 且方便地为网站提供 AJAX 交互语法设计可以使开发者更加便捷,例如操作文档对象、选择 DOM 元素、制作动画效果、事件处理、使用 AJAX 以及其他功能jQuery 引入
2020-08-06 14:17:17
477
原创 浅谈JDBC 基础总结
JDBC持久化概述持久化(persistence)**: 把数据保存到可掉电式存储设备中以供之后使用。数据持久化意味着将内存中的数据保存到硬盘上加以”固化”而持久化的实现过程大多通过各种关系数据库来完成, 将内存中的数据存储在关系型数据库中当然也可以存储在磁盘文件、XML数据文件中而在 Java中,数据库存取技术只能通过 JDBC 来访问数据库。JDBC 访问数据库的形式主要有两种:1. 直接使用 JDBC 的 API 去访问数据库服务器 (MySQL/Oracle).2. 间
2020-08-05 18:38:51
1557
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人