SpringBoot
文章平均质量分 96
卓立~
现在一家电商做广告平台,Java后端后端开发
展开
-
Spring Boot配置
Spring Boot号称可以去除XML,但未做到零配置,它体现出了一种”习惯优于配置”的思想,也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 一般情况下默认的配置足够满足日常开发所需,但在特殊的情况下,我们往往需要用到自定义属性配置、自定义文件配置、多环境配置、外部命令引导等一系列功能。对于这些功能,Spring Boot都给予了很好的...原创 2018-11-03 14:30:50 · 122 阅读 · 0 评论 -
Spring Boot整合dubbo
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。简单了解一下,网站架构的发展历程:单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的...原创 2018-11-05 06:52:11 · 249 阅读 · 0 评论 -
Spring Boot + Jedis实现redis常规数据结构存储
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以用作数据库、缓存和消息中间件,可以说是实现网站高并发不可或缺的一部分。它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有...原创 2018-11-05 06:53:37 · 355 阅读 · 0 评论 -
Spring Boot + Redis实现缓存
缓存作为开发中提高服务性能相对有效的一种方式,在实际开发中得到广泛使用。在Spring 3.1之前,如果想使用缓存,相对是比较麻烦的,往往在业务代码中要掺杂缓存的逻辑,比如判断缓存是否存在,存在则取缓存,不存在在从DB中读取,然后再讲数据存入缓存中,使用起来相当不方便。Spring 3.1引入了基于注释的缓存技术,它本质上不是一个具体的缓存实现方案(例如EHCache、Redis、MemoryCa...原创 2018-11-05 06:56:48 · 223 阅读 · 0 评论 -
Spring Boot集成Kafka
Kafka发源于LinkedIn,于2011年成为Apache的孵化项目,随后于2012年成为Apache的主要项目之一。Kafka使用Scala和Java进行编写。Apache Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。关于kafka的基本概念,建议去kafka官方文档了解一...原创 2018-11-05 06:58:10 · 1526 阅读 · 0 评论 -
Spring Boot实现定时任务
在应用开发中,经常都有用到在后台跑定时任务的需求。比如需要在服务后台跑一个定时任务来进行数据清理、数据定时增量同步、定时发送邮件、爬虫定时抓取等等,这种情况下,我们往往需要执行定时任务。在java中定时任务有多种实现方式,比如使用线程、使用Timer、使用ScheduledExecutorService、Spring Task等等。本文会简单讲述一下上述几种方式的实现方法。1. 使用普通线程T...原创 2018-11-05 06:59:14 · 2808 阅读 · 0 评论 -
Spring Boot防重复提交
考虑这样一种情况,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,用户极有可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单。我们在开发中必须防止表单重复提交,否则很有可能会生成非法数据。本文介绍一种非分布式服务后台防重复提交的一种实现方式,虽然在实际工作中,单点部署的服务已经很少了,但是我还是决定单独介绍一下,后面的文章再去介绍分布式服务防重复提交的方法,因为无论是单...原创 2018-11-05 07:00:17 · 8788 阅读 · 8 评论 -
分布式服务防重复提交方案
之前文章介绍过一种单点部署服务防重复提交的一种方式,但是实际开发中,单点服务是很少见得,之前的那种防重复提交的方案在分布式环境下也就嗝屁了。本文实现一种分布式服务防重复提交的方案,跟之前那篇文章的思想是一致的,也就是是一线一个锁,在方法请求前,要先获取锁,不同的是,本文的锁是分布式锁,而之前那篇文章的锁是本地锁。其实分布式锁的实现方式有很多种,比如使用Mysql、或者Zookeeper等都可以实现...原创 2018-11-05 07:02:16 · 3355 阅读 · 6 评论 -
服务限流(本地)
前几天一直有个老哥在刷我们的后台接口,其实我们风控是有反扒的,但是貌似那几天反扒失效了==,原因这里就不讲了。当我们发现异常时,单机qps峰值达到了2000多,导致阻塞了很多我们正常的前端请求。我们侦测到之后,在反扒重新启用之前,对服务进行降级,对接口进行限流,虽然反扒服务很快就恢复了,但确实也给我们造成一定的损失。前后我也有参加,在这件事情告一段落后,我重新整理了一下最近了解的服务限流的知识,希...原创 2018-11-06 06:58:08 · 908 阅读 · 0 评论 -
Spring Boot多数据源事务管理
在开发企业应用时,对于使用者的一个操作实际上对应底层数据库的多个读写。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,会产生不一致的数据,需要在这种情况下进行回退。事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务开始未进行操作的状态。了...原创 2018-11-04 10:37:37 · 17191 阅读 · 25 评论 -
Spring Boot + Mybatis + Druid实现多数据源管理
本文通过使用Druid数据库连接池,完成了多数据源的配置和操作。在讲述之前,希望大家可以了解一下Druid的相关概念和强大。首先讲一下,Druid远远不止是一个数据库连接池,本文所讲的使用Druid配置多数据源也仅仅是Druid的一个简单的应用。墙裂建议一下去看一下Druid Github官方文档1. 项目结构| pom.xml| springboot-08-mybatis-d...原创 2018-11-04 10:36:41 · 373 阅读 · 0 评论 -
Mybatis分页查询
分页查询作为数据库交互最常用的几种操作之一,在日常开发中是非常常见的,比如前段请求需要一个分页的列表,往往有两种方式,一是把所有的数据都给到前段,前段分页。另外一种方式是前端通过传分页信息给后端,后端查询时进行分页,并将相应页的数据返给前端。第一种方式如果数据规模比较小的情况下可以使用,如果数据量较大,对内存、网络传输的消耗都是非常大的,所以实际开发中一般很少使用。第二种方式是后端进行分页,后端分...原创 2018-11-04 10:35:54 · 33048 阅读 · 2 评论 -
Spring Boot日志管理
日志作为一个项目必备的一个模块,对于排查问题是必不可少的。在开始写本篇文章之前,先讲一下几个概念Sl4j、LogBack、Log4j、Apache commons Log等概念的联系和区别,这对于了解本文是非常重要的。slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现。...原创 2018-11-03 14:32:06 · 2410 阅读 · 0 评论 -
Spring Boot中log4j的配置
上篇文章Spring Boot日志管理,我简单讲述了Spring Boot中使用默认日志Logback进行日志管理的配置。在上篇文章中有讲到,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。但是log4j作为一款常用的日志库,在实际开发中还是很常用的,本片文章,我将简单介绍一下Spring Boot中如何使用Log4J进行日志管理。创建Spring B...原创 2018-11-03 14:34:30 · 2490 阅读 · 0 评论 -
SpringBoot + JdbcTemplate实现mysql数据库访问
在开发服务端程序时,数据库交互是非常常见的,如果没了数据库,站点相应也就变成了静态的。从本片文章开始,我会介绍一下SpringBoot连接mysql的几种常见方式(包括使用mybatis ORM框架)。本篇文章首先介绍一下使用JdbcTemplate实现mysql数据库连接,Spring Framework在Jdbc上面做了深层次的封装,通过依赖注入功能,可以将 DataSource 注入到Jdb...原创 2018-11-03 14:39:59 · 639 阅读 · 0 评论 -
Spring Boot学习笔记
随着动态语言(Ruby、Groovy、Scala、Node.js等)的流行,Java开发显得越来越笨重,特别是在web开发中,往往要面临繁多的配置及低下的开发效率。比如我们使用Spring MVC做应用开发,要知道配置哪些类来让Hibernate和Spring一起工作,要知道如何配置view resolver来控制哪个模版进行视图层的展示。经常写了一大堆代码之后发现只是在处理Spring框架本...原创 2018-11-02 07:15:29 · 244 阅读 · 0 评论 -
Spring Boot入门
上篇文章简单介绍了Spring Boot,讲述了Spring Boot的一个理念”习惯优于配置”,以及其操作方便,开箱即用的优点。本篇文章就用一个简单的HelloWorld实例具体讲述一下Spring Boot的上述特性,主要目标是完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。...原创 2018-11-02 07:18:29 · 193 阅读 · 0 评论 -
SpringBoot + mybatis数据库访问
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。由于使用方便,效率高等特性,Mybatis成...原创 2018-11-04 10:33:22 · 685 阅读 · 0 评论 -
Spring Boot + Mybatis数据源配置的三种方式
通过之前两篇文章Spring Boot + JdbcTemplate和Spring Boot + Mybatis CRUD可以看出,无论是使用什么框架,数据源及框架的的一些配置总是不可避免的。在之前的两篇文章中分别使用了application.properties和Java Config的方式进行了配置。其实Mybatis也可以使用这两中方式进行配置,除此之外,Mybatis还可以通过使用xml配...原创 2018-11-04 10:34:18 · 9275 阅读 · 3 评论 -
使用Mybatis Generator自动生成代码
看过前几篇关于Mybatis的文章可以发现,在DAO层做数据库交互时,存在两中方式。一种为使用注解手写mapper.xml,这种方式比较复杂,手写xml文件相当麻烦。另一种较手写mapper.xml文件简单一些,就是使用注解(@Select、@Update、@Insert、@Delete)的方式,但是手写sql也经常会带来一些隐式错误,并切也要手写sql,而Mybatis Generator的出现...原创 2018-11-04 10:35:04 · 1000 阅读 · 0 评论 -
分布式服务限流
上篇简单讲述了一下本地服务令牌桶限流实现,只能用于本地服务,在分布式环境下,就不太适用了。比如我们想对接口做限流控制,如果使用令牌桶实现,每秒最大的服务数目是10,假如分布式服务有10台实例,考虑到负载均衡配置,那么整个分布式系统的服务能力每秒应该大概在100左右,很明显不太适合。如果想要对分布式服务做精确限流,令牌桶这种方式肯定是不合适的。跟之前分布式服务防重复提交的方法类似,可以借助分布式锁来...原创 2018-11-06 06:59:03 · 867 阅读 · 0 评论