项目
哈喽羊
这个作者很懒,什么都没留下…
展开
-
根据前端界面与静态模型分析后端代码设计
我们先看看前端js传过来的result里面包含两个成员变量 : times 和 booksDepartCounts。并且两个成员变量都是集合形式而 booksDepartCounts 里面又包含两个成员变量 : countList 和 dename。并且 countList 是集合形式。所以booksDepartCounts 应该是个pojo类因此根据分析,返回的类型图...原创 2018-07-08 11:55:31 · 858 阅读 · 0 评论 -
十次方——Redis、SpringCache
一. redis我们看下面这个操作每一次用户调用这个方法,都会去数据库取数据,如果短时间内很多用户多次调用这个方法,将会对数据库造成很大压力。所以,如果一段时间内,我们查询的数据在数据库中没有变化,而用户又要在这段时间内多次查询,我们就可以在用户第一次查询时将数据放入redis中,下次用户查询时就直接去redis中查,这样就可以减少数据库的压力。redis容器的建立看我...原创 2019-03-22 15:27:41 · 245 阅读 · 0 评论 -
十次方——MongoDB
一 简介1.1 什么是MongoDBMongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON的BSON格式,因此可以存储比较复杂的数据类型1.2 MongoDB的特点MongoDB 最大的特点是他支...原创 2019-03-22 15:30:15 · 296 阅读 · 0 评论 -
十次方——ElasticSearch
一 ElasticSearch简介Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引...原创 2019-03-22 15:35:03 · 312 阅读 · 0 评论 -
十次方——RabbitMQ之介绍
一 RabbitMQ简介1.1 消息队列中间件消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构]使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。其使用场景为:异步处理,应用解耦,流量削锋和消息通讯四个场景。1.2 什...原创 2019-03-26 10:31:44 · 319 阅读 · 0 评论 -
十次方——加密与初识JWT
一. BCrypt密码加密任何应用考虑到安全,绝不能明文的方式保存密码。密码应该通过哈希算法进行加密。有很多标准的算法比如SHA或者MD5,结合salt(盐)是一个不错的选择。 Spring Security提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用BCrypt强哈希方法来加密密码。BCrypt强哈希方法 每次加密的结...原创 2019-03-29 20:20:42 · 601 阅读 · 0 评论 -
十次方——RabbitMQ之用户注册
一 用户注册1.1 需求分析注册账号,用手机号注册,填写后发送短信验证码,填写短信验证码正确方可注册成功。我们这里所做的实际上就是消息生产者。1.2 代码生成(1)使用代码生成器生成用户微服务代码 tensquare_user(2)拷贝到当前工程,并在父工程引入。(3)修改Application类名称为UserApplication(4)修改ap...原创 2019-03-26 15:18:52 · 2265 阅读 · 1 评论 -
十次方——SpringCloud之Hystrix、Zuul
一. 熔断器Hystrix1.1 为什么要使用熔断器在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。 如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,...原创 2019-04-10 21:28:01 · 399 阅读 · 0 评论 -
十次方——JWT之admin登录与删除user用户
首先在tensquare_common包中导入jwt的jar包然后再在tensquare_common的util包下写个jwt的工具类package util;import io.jsonwebtoken.Claims;import io.jsonwebtoken.JwtBuilder;import io.jsonwebtoken.Jwts;import io.jsonwebt...原创 2019-04-02 16:50:24 · 1021 阅读 · 0 评论 -
十次方——SpringCloud之Eureka、Feign
1 SpringCloud简介1.1 什么是SpringCloudSpring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、熔断器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较...原创 2019-04-09 21:14:41 · 297 阅读 · 0 评论 -
RocketMQ高并发项目——Hystrix断路器之降级、限流、批量请求合并
在微服务架构中,我们将系统分成了一个一个单元,各个单元应该通过服务注册与订阅的方式进行一个相互依赖,每一个单元在不同的进程中去运行,依赖通过远程调用的方式运行,这样就会产生一些问题,比如网络延迟、自身系统故障、请求急剧增加导致任务挤压、线程资源无法释放,这些很可能会导致系统瘫痪,甚至影响到一些核心业务。一. 降级我们具体来实现下:在父工程RocketP...原创 2019-05-08 15:38:09 · 682 阅读 · 0 评论 -
RocketMQ高并发项目——下订单与库存的乐观锁机制、分库分表介绍
关于乐观锁的概念介绍摘自https://www.cnblogs.com/sheseido/p/5038562.html,特此声明! 一.下订单与库存的乐观锁机制 乐观锁,大多是基于数据版本 Version 记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取...原创 2019-05-09 10:59:00 · 1300 阅读 · 0 评论 -
RocketMQ高并发项目——Dubbo 整合以及接口测试
整个项目的一个流程如下图所示:首先我们需要创建一个Maven父工程RocketParent,然后再创建三个子模块order(服务调用者),store(服务提供者),storeapi(服务提供者api接口)我们来看下order的pom文件,application.properties,com.yy.orider.config.database包下的dubbo配置文件&l...原创 2019-05-07 21:18:10 · 780 阅读 · 0 评论 -
十次方——父工程子模块、公共模块
一 父工程(project)首先我们先看下整个项目的一个目录我们先创建一个带有pom.xml文件的父工程tensquare_parent(即maven工程),我们可以把tensquare_parent中的src删掉,只留下pom文件,我们来看下pom文件中的parent和dependencies红色1是我们当前使用spingboot最基础的一个jar包。红色2是S...原创 2019-03-22 15:23:27 · 622 阅读 · 0 评论 -
十次方——Linux部分
本文主要介绍十次方项目linux部分的内容以前我们开发都是按照MVC分层开发,比如你负责service层,我负责dao层,所以当时喜欢写接口,各层通过调用接口来进行解耦。但现在微服务的兴起,我们都是按一个一个服务来开发(所以可以不写接口),如下图,mysql,mq,redis,我们写的某一功能的业务代码,都是微服务,我们需要把微服务制作成镜像,再把镜像做成容器。那么容器和微服务的关系...原创 2019-03-22 15:18:42 · 658 阅读 · 0 评论 -
JWT 和 Spring Security 保护 REST API(1)
通常情况下,把API直接暴露出去是风险很大的,不说别的,直接被机器攻击就够喝一壶的。那么一般来说,对API要划分出一定的权限级别,然后做一个用户的鉴权,依据鉴权结果给予用户开放对应的API。目前,比较主流的方案有几种:1.用户名和密码鉴权,使用Session保存用户鉴权结果。2.使用OAuth进行鉴权(其实OAuth也是一种基于Token的鉴权,只是没有规定Token的生成方式)3....原创 2018-07-11 21:40:04 · 1443 阅读 · 1 评论 -
JWT 和 Spring Security 保护 REST API(2)
接着《JWT 和 Spring Security 保护 REST API(1)》继续来配置,我们已经把SpringSecurity部分配置完了,现在,我们要开始配置JWT 了首先,我们我们来看下目录,大致了解下我们需要的类首先,我们要在配置文件application.yml里面进行jwt的相关配置每次客户端向服务端发送请求的时候head里面都要带上Authorization的属性,route是关于...原创 2018-07-11 21:53:54 · 2440 阅读 · 1 评论 -
用Redis做Mybatis二级缓存
首先在pom.xml文件里面添加依赖 然后再在application.yml文件里面一旦有这个配置,你服务器启动时就会与redis做连接,所以启动服务器时一定要先启动redis如果我们要对redis做用户控制的话,不然还要对它配置用户密码之类的 接下来我们再来做个缓存的实现,我们做个util包,在util包里面写个ApplicationContextHolder类来...原创 2018-07-12 22:14:35 · 3351 阅读 · 1 评论 -
在springBoot中配置跨域访问类以及RedisSession
在项目中,如果前端和后端不在一个服务器上,则前端服务器在访问后端时,就需要配置一个跨域访问,则你需要在controller层写上下图红线代码 但每个conroller层上都写显得太麻烦,所以我们可以编写一个跨域访问类,这样就可以减少代码的冗余度package com.yy.hospital.conf;import org.springframework.context.ann...原创 2018-07-05 21:42:48 · 2165 阅读 · 0 评论 -
SpringBoot下用使用切面技术(AOP)配置日志
首先在pom.xml下导入aop的依赖 然后在resources文件夹底下配置log4j.properties文件# LOG4J配置log4j.rootCategory=INFO, stdout, file, errorfile //级别,控制台,文件,错误的日志log4j.category.com.yy=DEBUG, bootfi...原创 2018-05-29 21:26:52 · 8779 阅读 · 0 评论 -
ajax请求问题汇总(不断更新)
1)当ajax数据传回到服务器的方式是途中方式时,记得在服务器端程序创建一个表单对应的pojo类,并且controller接收数据的注解应该用@RequestBody把表单数据封装到表单对应的pojo类...原创 2018-07-14 14:20:33 · 546 阅读 · 0 评论 -
秒杀——集成redis
首先第一步肯定是导入依赖啊jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用,我们也是自己在其上封装了,下面你就会看到。fastjson是序列化的一个包,它可以把我们的java对象转换成我们的一个json对象放入redis中 然后在配置文件中添加基本配置然后开始...原创 2018-10-07 20:34:07 · 318 阅读 · 0 评论 -
秒杀——返回前端数据的封装
现在我们一般都会返回json数据到前端,json输出的时候一般都会与客户端做一个接口上的约定,比如下图所以我们可以根据上图做一个输出结果的封装package com.yy.miaosha.result;public class Result<T> { private int code; private String msg; private T...原创 2018-10-07 23:21:07 · 1385 阅读 · 0 评论 -
RocketMQ高并发项目——分布式事务之消息最终一致性事务(消息支付)
一. 分布式事务概念说到分布式事务,就会谈到那个经典的”账户转账”问题:2个账户,分布处于2个不同的DB,或者说2个不同的子系统里面,A要扣钱,B要加钱,如何保证原子性?一般的思路都是通过消息中间件来实现“最终一致性”:A系统扣钱,然后发条消息给中间件,B系统接收此消息,进行加钱。但这里面有个问题:A是先update DB,后发送消息呢?还是先发送消息,后update D...原创 2019-05-10 15:36:48 · 1121 阅读 · 0 评论