- 博客(25)
- 收藏
- 关注
原创 使用Spring来优雅的替换代码中过多的ifelse
场景平时我们在写代码时,需要针对不同情况处理不同的业务逻辑,用得最多的就是if和else。 但是如果情况太多,就会出现一大堆的“ifelse”,导致整个系统后期维护,升级,或者修改BUG变得很困难。举个例子,短信发送业务的实现,一般公司会接入多个短信供应商,比如梦网、玄武、阿里云等多个短信平台(我们称之为短信渠道),可能需要针对不同的短信类型或者短信平台的稳定性来切换短信渠道:比如阿...
2020-05-02 17:04:56 1469
原创 安装Docker笔记
1:Linux要求内核3.0以上使用 uname -r 命令查看Linux内核版本。2:安装Docker步骤这是Docker官方帮助文档:https://docs.docker.com/engine/install/安装步骤:#1.卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \
2021-04-09 09:40:08 129
原创 Docker学习笔记第一章
Docker概述Docker为什么出现?一款产品,从开发到上线,从操作系统,到运行环境,再到应用配置,作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。docker之所以发展如此迅速,也是运维它对此给出了一个标准化的解决方案。软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。Dock
2021-04-08 17:16:42 713
原创 SpringBoot优雅的参数校验
我们在写接口的时候,一定会需要给接口的入参参数进行校验,例如:名称不能包含敏感词,不能长度超过,不能有奇怪的词等。但是如果参数过多,校验规则复杂,就会出现大量的 if-else 代码。不仅代码优雅,而且后期维护麻烦。所以SpringBoot提供了优雅的参数校验方式。1:导入依赖包 因为是Springboot自带的参数校验,所以我们只需要引入Springboot-web包就可以了 <!-- SpringBoot Web容 --> <dependency> .
2021-03-22 17:17:43 489 2
原创 SpringBoot项目打成jar包
Springboot项目打成jar包1:在项目的pom.xml文件中添加配置<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--这里写上main方法所在类的路径 例如:com
2021-03-22 17:04:05 222
原创 一起学SpringCloud之:第四章Feign
在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:String baseUrl = "http://user-service/user/selectOne/";User user = this.restTemplate.getForObject(baseUrl + id, User.class)如果就学到这里,你可能以后需要编写类似的大量重复代码,格式基本相...
2020-05-03 14:40:48 220
原创 一起学SpringCloud之:第三章负载均衡ribbon
在上一篇的案例中,我们启动了一个user-service,然后后通过DiscoveryCilent来获取服务实例信息,让后获取ip和端口来访问。但是在实际环境中,我们一般会开启很多user-service的形成集群。此时我们获取的服务列表中就会员多个服务,一般这种情况下我们就需要编写负载均衡算法,在多个实例列表中选择。不过Eureka中已经帮我们继承了负载均衡组件:Ribbon,简单修改即可使...
2020-05-03 14:18:07 275
原创 一起学SpringCloud之:第二章注册中心
上一章我们说过在没有SpringCloud的时候,我们写微服务项目的时候,会有以下问题:服务管理如何自动注册和发现如何实现状态监管如何实现动态路由服务如何实现负载均衡服务如何解决容灾问题服务如何实现统一配置以上的问题,我们都将在SpringClond中得到答案1:Eureka注册中心1.1认识Eureka说下我们解决第一个问题,服务的管理问题分析在刚才的案例中,u...
2020-05-03 14:00:55 215
原创 一起学SpringCloud之:第一章简绍和入门代码
前言:什么是微服务?为什么微服务要使用SpringCloud实现,优点在那?微服务是一种架构方式,最终敲定需要技术架构去实现。微服务的实现方式很多,但是使用量最多的莫过于Spring Clond了。优点:后台硬:作为Spring家族的医院,有整合Spring全家桶靠山技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了群众基础好:可以说大...
2020-05-02 17:45:24 214
原创 Springboot整合ElasticSearch第三章高级查询
1.基本查询先看看基本玩法@Testpublic void testQuery(){ // 词条查询 MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("title", "小米"); // 执行查询 Iterable<Item> items = this.itemRepository...
2020-04-27 17:03:57 844
原创 Springboot整合ElasticSearch第二章文档操作
Repository文档操作Spring Data 的强大之处,就在于你不用写任何DAO处理,自动根据方法名或类的信息进行CRUD操作。只要你定义一个接口,然后继承Repository提供的一些子接口,就能具备各种基本的CRUD功能。我们只需要定义接口,然后继承它就OK了。public interface ItemRepository extends ElasticsearchReposi...
2020-04-27 16:53:50 222
原创 Springboot整合elasticsearch第一章入门及索引操作
1.简介Spring Data Elasticsearch是Spring Data项目下的一个子模块。查看 Spring Data的官网:Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。它使得使用数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得容易。这是一个总括项目,其中...
2020-04-27 16:35:30 431
原创 SpringBoot整合RabbitMQ入门代码
1.简介Sprin有很多不同的项目,其中就有对AMQP的支持:2.2.依赖和配置添加AMQP的启动器:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId>...
2020-04-26 15:19:11 189
原创 RabbitMQ入门之四:订阅模式-Topic
Topic类型的 Exchange 与 Direct 相比,都是可以根据 RoutingKey 把消费路由到不同的队列。只不过 Topic 类型 Exchange 可以让队列在绑定 RoutingKey 的时候可以使用通配符。RoutingKey 一般都是有一个或者对个单词组成,多个淡出之间以 逗号分割,例如:item.insert通配符规则:#:匹配一个或者多个词*:匹配一个词...
2020-04-26 15:08:39 934
原创 RabbirMQ入门之三:订阅模型
在之前模式中,我们都是每个消息不管怎么发送,最后也只会有一个消费者接收到消息,但是现在我们有需求是需要 一条消息 被多个消费者获取到。这种模式被称为 “发布/订阅”。一个生产者,多个消费者。每个消费者都有自己的一个队列生产者没有将消息直接发送到队列,而是发送到了交互机。每个队列都要绑定到交换机。生产者发送的消息,进过交互机到达队列,实现一个消息被多个消费者获取的目的。X (Exch...
2020-04-26 15:00:18 504
原创 RabbitMQ入门之二:work消息模型
工作队列或者竞争消费者模式工作队列,是rabbitMQ提供的5中消息模式中的第二种,工作队列,又称任务队列。简单来说就是一个生产者多个 多个消费者,生产者生产的消息将被多个消费者将平均分配。(但是性能强的消费者获取的OA的消息较多。)接下来我们来模拟这个流程: P:生产者:任务的发布者 C1:消费者,领取任务并且完成任务,假设完成速度较快 C2:消费者2:领取任...
2020-04-26 14:52:07 372
原创 rabbitMQ消息队列简介及入门代码
1:什么是消息队列消息队列,即MQ,Message Queue消息队列是典型的:生产者,消费者模式。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产者和消费者都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。例如:商品服务对商品增删改以后,无需去操作索引库,只是发送一条消息,也不关心消息被谁接收。搜索服务接收消息...
2020-04-26 14:36:44 270
原创 springboot自动装配的原理
在使用了SpringBoot之后,一个整合了SpringMVC的工程开发,变得无比简单,那些繁琐的配置都消失不见了,这是如何做到的?一切魔力的开始,都是从我们的main函数来的,所以我们再次来看下启动类:我们发现特别的地方有两个:注解:@SpringBootApplicationrun方法:SpringApplication.run()我们分别来研究这两个部分。1:@Spring...
2020-04-26 14:19:54 156
转载 Java程序员必备的一些流程图
转载自:https://juejin.im/post/5d214639e51d4550bf1ae8df1.spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;首先容器启动后,对bean进行初始化按照bean的定义,注入属性检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如Be...
2020-01-16 10:45:26 188
原创 Springboot和vue数据交互问题
一般使用前后台交互模式:使用json数据进行交互前台代码:<html> <head> <title></title> <script src="vue.js"></script> <script src="vue-resource.js"></...
2020-01-07 11:24:07 1781
原创 vue中的请求(前后台交互)
1:请求依赖 在vue中请求依赖于vue-resource.js2:vue的get请求实例<html> <head> <title></title> <script src="vue.js"></script> <script src="vue-resource.js"...
2020-01-07 11:17:40 1397
原创 Vue基础和基础代码简介
VUE1:什么是vue vue是目前最火的一个框架,和angular.js和react.js 一起,并称为前端三大主流框架。是一套构建用户界面的框架,只管制视图层,它易于上手,便于与第三库和既有羡慕整合。2:vue入门1:在页面上导入vue.js<html> <head> <title></title> ...
2020-01-07 11:14:40 281
原创 FastDFS详细安装步骤
1:安装Gcc yum -y install gcc-c++2:关闭yum冲突 rm -f /var/run/yum.pid3:查看防火墙的状态 firewall-cmd --state running 运行 not running 停止4:停止防火墙 systemctl stop firewalld.service5:解压libfastcommo...
2019-12-11 08:49:58 490
原创 Oracle基本入门及概念
Oracle1:Oracle 最主要的服务1:OracleOraDB11g_home1TNSLstener oracle服务器监听器,用来监听客户端的连接请求该服务在使用Oracle是必须开启,否则不发链接Oracle数据库2:OracleServiceOrcl:Oracle数据库服务。也要开启2:sqlplus (Oracle自带的数据库操作命令行) 在 win +R 输入...
2019-12-11 08:46:23 345
原创 JWT基本概念及入门代码
JWT1:基本概念1.1:传统身份验证http是一种没有状态的协议,也就是它并不知道是谁访问应用,这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端在发送请求时候,还等在验证一下。解决的方法就是,当用户登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,让后把这条记录的id号发送非客户端,客户端收到以后把这个id号存...
2019-12-11 08:32:01 362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人