自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(441)
  • 资源 (24)
  • 论坛 (2)
  • 收藏
  • 关注

原创 Spring Cloud Alibaba快速入门(六):分布式事务 - Seata

一:分布式事务解决方案1.1 方案1:全局事务(二阶段提交 2PC)全局事务会将每个本地事务纳入到一个全局事务管理器(协调者)中,每个本地事务都会执行并将事务的执行结果汇报给全局事务,注意现在本地事务还没有真正的提交,等到所有本地事务都执行成功了,全局事务会所有本地事务进行提交。全局事务管理器负责协调每个本地事务,然后最后统一决策是对所有本地事务进行提交还是回滚。全局事务是事务分为两个阶段,第一阶段为表决阶段,第二阶段为提交阶段,如果表决阶段都通过即所有本地事务都执行成功,但是在第二阶段去真正提交每

2021-01-14 18:02:12 36

原创 RocketMQ入门教程(三):普通消息、顺序消息

一:普通消息RocketMQ提供了三种方式来发送普通消息:可靠同步发送、可靠异步发送、单向发送。1.1 可靠同步发送同步发送是发送消息后必须等待RocketMQ服务返回发送的结果,这里会一直同步阻塞,直到拿到RocketMQ服务返回发送的结果才继续往下执行代码。同步发送一般应用于对发送成功可靠性要求很严格的场景,一般是要保证100%发送成功,不成功就重试。@RestControllerpublic class RocketMQController { @Autowired pr

2021-01-10 14:32:54 24

原创 RocketMQ入门教程(二):SpringBoot集成RocketMQ

1. pom.xml<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.8.0</version></dependency>2. applicaton.ymlserver: port: 8888rocketmq:

2021-01-07 10:30:16 34

原创 RocketMQ入门教程(一):简介与安装

一:消息中间件的应用场景1.1 异步解耦一般一个系统中有很多个微服务,当用户在下单系统中下单时,下单操作完成后还会调用库存系统进行扣减库存,还会调用积分系统增加用户的积分,还会调用优惠券系统进行发放优惠券等等一系列的操作,如果在下单系统中同步调用库存系统、同步调用积分系统、同步调用优惠券系统势必会导致整个下单时间会比较长,不利于用户体验,假如在同步调用的过程中某个微服务出现问题就会导致整个下单失败。为了减少调用其它微服务时间,为了减少其它微服务出现问题而导致下单不可用,我们可以将所有的同步调用方式改为

2021-01-06 16:39:47 49

原创 Spring Cloud Alibaba快速入门(五):RPC - Dubbo

一:简介Spring Cloud微服务之间互相调用一般是通过Feign以HTTP短连接的方式来调用,因为是HTTP短连接所以每次调用都需要建立TCP连接,使得效率相对Dubbo比较低。Dubbo是一个高性能RPC框架,常用于代替Feign在微服务之间调用。一般我们对外提供服务使用REST API,内部服务之间调用使用RPC。二:启动Nacossh startup.sh -m standalone三:Spring Cloud集成Dubbo(服务提供方)3.1 pom.xml注意:这里并没有使用

2021-01-05 20:32:30 29

原创 Spring Cloud Alibaba快速入门(三):熔断降级 - Sentinel

GitHub https://github.com/alibaba/Sentinel/releasesjava -jar -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jarlocalhost:8080 用户名:sentinel 密码:sentinelpom.xml<?xml ve

2021-01-02 19:20:49 55

原创 Spring Cloud Alibaba快速入门(二):配置中心 - Nacos

一:简介https://nacos.io/zh-cn/docs/quick-start.html 支持以HTTP方式来管理配置,支持动态刷新配置。下载解压即可:https://github.com/alibaba/nacos/releases# 单击模式启动sh startup.sh -m standaloneWeb UI:localhost:8848/nacos 用户名: nacos 密码: nacos二:nacos 持久化2.1 建库建表nacos的数据默认是保存在nacos内嵌的

2020-12-30 21:59:24 38

原创 Spring Cloud Alibaba快速入门(一):注册中心 - Nacos

一:微服务集成Nacos 服务发现1.1 pom.xml引入nacos-discovery<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version>&

2020-12-30 17:44:49 40

原创 Spring Cloud快速入门(九):路由网关 - Gateway

路由:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency> <groupId>org.springframework.cloud</

2020-12-29 20:39:58 40

原创 Spring Cloud快速入门(八):链路追踪 - Sleuth

日志持久化到MySQL:创建Zipkin需要的数据库和表结构。/*SQLyog Ultimate v11.33 (64 bit)MySQL - 5.5.58 : Database - zipkin**********************************************************************//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNI

2020-12-29 10:43:59 44 1

原创 Spring Cloud快速入门(七):路由网关 - Zuul(二)

一:简介一般一个系统中会有多个微服务,而微服务之间又会相互调用,通常所有的微服务都会通过路由网关进行转发。路由网关(Zuul) --> 订单微服务 --> 商品微服务,假如商品服务出现业务逻辑或者运行时异常时如何在路由网关中获取商品服务抛出的异常,并统一返回json格式呢?这就是这篇文章要解决的问题。{ "code": "1000", "msg": "参数错误"}二:platform-basepublic enum ApiErrorCodeEnum { SUCCESS("

2020-12-28 20:33:05 41

原创 Spring Cloud快速入门(六):路由网关 - Zuul

API网关:聚合多个微服务,对外提供一个统一的路径。一般一个系统中会有很多微服务,如果前端调用就需要维护多个ip:port, 这样比较麻烦。一般微服务都会有一些共同的代码比如身份认证校验token等也需要抽取出来。zuul是netflix公司提供的,可以和feign、ribbon、hystrix可以无缝整合。pom.xml<dependency> <groupId>org.springframework.cloud</groupId> <artif

2020-12-28 18:15:18 30

原创 Spring Cloud快速入门(五):熔断降级 - Hystrix

服务雪崩:一个接口可能会调用多个其它接口,而其它接口可能还会再调用其它接口,当中间某个接口处问题时就会导致整个接口不能提供服务。熔断降级:熔断器就是一个保险丝。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.11.RELEA

2020-12-28 15:40:35 48

原创 Spring Cloud快速入门(四):服务调用 - Feign

Ribbon调用微服务的不好的地方需要在代码中拼接接口的完整的路径,感觉不够优雅,拼接也容易出错。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>@EnableFeignClients@EnableFeignClien

2020-12-27 19:05:04 31

原创 Spring Cloud快速入门(三):负载均衡 - Ribbon

Ribbon已经集成到Spring Cloud中了,所以不需要在额外引入依赖。服务调用:不需要在手动拼接服务地址负载均衡服务调用示例@Bean@LoadBalancedpublic RestTemplate restTemplate() { return new RestTemplate();}@RestController@RequestMapping("/shoppingCart")public class ShoppingCartController { @

2020-12-26 22:46:48 36

原创 Spring Cloud快速入门(二):配置中心 - Config

配置文件集中统一管理:配置文件不需要每个微幅单独维护,而是放在外部统一维护对每个微服务的配置区分环境(开发环境、测试环境、灰度环境、生成环境)无需重启服务,动态的调整配置参数在GitHub上创建一个仓库,保存每个微服务每个环境的配置文件:配置文件命名规范:服务名-环境, 如 order-web-dev.yml、order-web-pro.ymlconfig-server<dependency> <groupId>org.springframewo

2020-12-25 14:20:50 46

原创 Spring Cloud快速入门(一):注册中心 - Eureka

一:Eureka Serverpom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency> <dependency> <groupId>org.springframework.clou

2020-12-24 21:32:13 39

原创 SpringBoot入门教程:@EnableXxx和自动装载

一:ImportSelector接口1.1 User@Data@NoArgsConstructor@AllArgsConstructorpublic class User { private Long id; private String username;}1.2 UserConfiguration注意:该类并没有使用spring的注解,没有使用@Configuration也没有使用@Component,spring扫描的时候并不会装载该类作为Bean。public c

2020-12-16 21:30:28 68

原创 SpringBoot入门教程:使用go-mysql-transfer将mysql同步到elasticsearch

一:安装GitHub: https://github.com/wj596/go-mysql-transfer1.1 linux、windows安装直接下载二进制文件.zip即可。1.2 Mac安装1.2.1 安装go并配置环境变量Mac没有二进制文件,所以只能自己下载源码进行编译,go-mysql-transfer 是使用go语言开发的,所以需要先安装go语言https://studygolang.com/dl,然后配置环境变量。vi ~/.bash_profile# GO的安装目录e

2020-12-07 16:59:44 144

原创 SpringBoot入门教程:Spring Security 前后分离

Spring Security网络上很多前后端分离的示例很多都不是完全的前后分离,此篇文章要用最简单的示例实现出真正的前后端完全分离的权限校验实现。1. pom.xml主要依赖是spring-boot-starter-security和jwt。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</.

2020-11-13 16:59:58 166

原创 SpringBoot入门教程:MyBatis二级缓存

一:一级缓存和二级缓存简介①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。写这篇文章的初衷:MyBatis二级缓存在实际工作中一般都不会使用,但是

2020-11-10 13:43:11 128

原创 SpringBoot入门教程:RestTemplate

一:简介通常在Java代码中调用其它http 接口的话会使用HttpClient,不过这个使用起来有些繁琐,Spring中推出了一个简单的RestTemplate用来调用rest api,使用起来非常简单。二:基础示例@RestController@RequestMapping("/user")public class UserController { @PostMapping("/regist") public User regist(@RequestBody CreateUs

2020-11-09 15:40:46 109

原创 SpringBoot入门教程:Redis四大缓存问题(击穿、穿透、雪崩、数据一致性)

一:穿透假如我们的id都是数据库自增,大于0的值,如果使用 http://localhost:8080/users/-1 访问以下接口就会出现在缓存中查不到,在数据库中也查不到的现象,这种现象就叫做缓存穿透。@Slf4j@RestController@RequestMapping("/users")public class UserController { @Autowired private RedissonClient redissonClient; @Autowi

2020-11-09 10:58:01 154

原创 SpringBoot入门教程:MapStruct

开发中我们可能使用通用Mapper或者MyBatis-Plus去查询数据,而这类框架都是返回的实体,实体是和数据库中的表一一对应的,而作为接口的返回值我们无需把整个实体都暴露给前端,这就需要将实体转为DTO了,通常有以下转换方式:自己写代码手动转换(这种方式代码量多,而且不优雅)BeanUtils.copyProperties(entity, dto),这种方式是通过反射来实现的,一般反射效率相对有点低使用ModelMapper框架(这种方式是通过反射来实现的,一般反射效率相对有点低)

2020-11-05 17:56:13 143

原创 SpringBoot入门教程:AOP

1. 需要在Application中开启AOP@EnableAspectJAutoProxy(exposeProxy = true)2. 引入aop依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>3. @Aspect

2020-11-01 12:21:15 149 1

原创 SpringBoot入门教程:JSON

一:JacksonJackson 是SpringBoot的JSON默认框架。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.3.4.RELEASE</version></dependency>在序列化的时可

2020-10-31 22:05:51 87

原创 SpringBoot入门教程:Redisson分布式锁

一:简介Redis是一个单线程的内存服务器。Redisson是redis的一个Java客户端,为使用者提供了一系列具有分布式特性的常用工具类,使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度,同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作,Redisson底层采用的是Netty 框架。Redisson比Jedis功能更加强大。Redisson是我国的一位大牛写的一个框架,可以使用 redis做类似J

2020-10-31 15:48:41 168

原创 SpringBoot入门教程:在IDEA中使用远程调试Remote

需求:很多时候本地的程序是正常的,但是测试环境是有问题的,此时我们可以通过增加很多日志输出来确定具体的问题,这种方式需要添加完日志还要重启服务而且只能看日志输出的内容,其它变量值还是不知道,我们可以借助IDEA提供的Remote在本地来远程调服务器代码。本地远程调试就像在本地启动服务连的测试环境的效果一样。一:准备测试项目二:启动测试环境项目SpringBoot 项目在启动时需要指定远程调试的参数,其中最重要是address表示端口号。java -Xdebug -Xrunjdwp:transp.

2020-10-20 17:58:40 152

原创 SpringBoot入门教程:Redis分布式事务

# setnx(SET if Not eXists)当key不存在时,设置指定的值,成功返回1,失败,返回0 setnx key value# EX: 过期时间,秒seconds,PX:过期时间,毫秒milliseconds# NX:Not eXistsset key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]常用的分布式锁一般是基于Redis的分布式锁或者基于ZooKeeper的分布式锁。分布式锁需要满足4个条件:互斥性:在

2020-10-15 22:24:15 159 1

原创 七:MyBatis-Plus 插件

ActiveRecord(简称AR)一直广受动态语言(PHP、Ruby等)的喜爱,而Java作为准静态语言,对于ActiveRecord往往只能感叹其优雅,所以我们也在AR道路上进行了一定的探索.Active Record主要要求不仅仅是实体要完成与表中的字段对应,还要自己能完成CRUD操作,负责把自己持久化。Active Record是一种领域模型Domain Model, 封装了部分业务逻辑。大概意思是实体自己能够完成持久化工作(即把dao层和entity层合并一起),也可以有部分逻辑(即有点像s

2020-10-09 21:50:37 155

原创 六:MyBatis-Plus代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId>

2020-10-09 21:33:14 99

原创 二:Mybatis-Plus 快速入门

一:建库、建表CREATE DATABASE mybatisplus DEFAULT CHARACTER SET utf8;CREATE TABLE `tbl_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `username` varchar(255) DEFAULT NULL COMMENT '用户名', `password` varchar(255) DEFAULT NULL COMMEN

2020-10-09 16:29:54 137

原创 五:MyBatis-Plus的Service封装

通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,Save// 插入一条记录(选择字段,策略插入)boolean save(T entity);// 插入(批量)boolean saveBatch(Collection<T> entityList);// 插入(批量)boolean saveBatch(Collection<

2020-10-07 22:16:46 295 1

原创 四:MyBatis-Plus 条件构造器

在写SQL where条件的时候我们经常使用 =、!=、>、>=、 <、<=、in、like、between and、not、is null 等来构造条件,在MyBatis-Plus中也可以通过方法来构造这些where条件。AbstractWrapperQueryWrapper(LambdaQueryWrapper)UpdateWrapper(LambdaUpdateWrapper)条件构造器对象// 构造select、delete语句where条件QueryWrap

2020-10-07 22:08:00 346 1

原创 七:MyBatis-Plus 其它

SQL注入原理在MP中,ISqlInjector接口负责SQL的注入工作,AbstractSqlInjector是它的实现类,主要是由inspectInject()方法进行注入的,方法又调用injecttMappedStatement()方法,进而进入某个具体的方法类(如SelectById)来组装SQLselectById(1L) ->com.baomidou.mybatisplus.core.injector.ISqlInjectorcom.baomidou.mybatisplus.co

2020-10-07 22:07:34 108

原创 一:MyBatis-Plus 简介

MyBatis 的劣势即使非常简单的单表SQL语句还要在xml中写sqlMyBatis自身功能不够丰富,例如没有自带分页插件MyBatis-Plus 简介https://mybatis.plus/https://github.com/baomidou/mybatis-plusGitHub中非常活跃,腾讯都在使用,并非炒作而是实至名归。public interface BaseMapper<T> extends Mapper<T> { /** *

2020-10-06 22:18:18 162 2

原创 三:Mybatis-Plus通用CRUD

一:Create@SpringBootTestclass SpringbootMybatisplusApplicationTests { @Autowired private UserMapper userMapper; @Test public void testInsert() { User user = new User(); user.setUsername("gaozhanlong"); user.setPa

2020-10-04 22:00:49 103

原创 SpringBoot入门教程:集成Redis集群

Redis 集群模式配置1. pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version></dependency><dependency&gt

2020-09-06 18:54:15 201

原创 Redis 持久化

一:简介redis是一种内存数据库,数据保存在内存中,但也可以将数据保存到文件中称之持久化,持久化方式有两种:RDB(Redis DataBase)和AOF(Append Only File),RDB是默认方式。二:RDB配置RDB方式是将内存中的数据以快照的方式写入二进制文件中(dump.rdb),当重启服务时直接从二进制文件中来重新加载数据。# 900秒内如果超过1个key被修改则发起快照保存save 900 1# 300秒内如果超过10个key被修改则发起快照保存save 300 10

2020-08-30 21:56:23 184

原创 Redis集群-主从复制

Redis是一种内存数据库,内存读写都非常的快,一般都是写少读多,但是内存再快也扛不住大量用户在短时间内高频率的读,因此Redis在2.8版本之前推出了主从模式。和MySQL主从复制一样,Redis支持主从复制,Redis主从模式通常是一个主服务器Master和多个从服务器Slaver,每个从服务器上还可以再挂从服务器。Redis主从复制分为全量同步和增量同步。主从模式优缺点:优点:解决数据备份的问题。做到了读写分离,大大提高了读的性能。缺点:因为只有主服务器可以进行同时读写操作,所以客

2020-08-30 16:06:22 152

Springboot2+JPA|MyBatis+Sharding-JDBC示例

Springboot2+JPA|MyBatis+Sharding-JDBC示例源码,可直接运行。

2018-07-24

hadoop lib/native

在安装hadoop时如果遇到WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform这个错误,请下载该文件放到hadoop目录下,Mac中放到libexec目录下。

2019-03-05

hibernate-validator示例demo

springmvc +fastjson +validator 示例整合

2017-05-23

Spring+Mybatis+Druid示例整合Demo

Spring+Mybatis+Druid示例整合Demo

2017-06-02

Spring+Mybatis+Druid示例整合Demo2

Spring + Mybatis(通用Mapper) + Druid示例整合Demo示例

2018-03-01

自定义Cell源码

自定义Cell源码

2016-08-25

springboot-fastdfs.zip

springboot-fastdfs 作为服务器,前端使用vue.js + element-ui来制作上传页面,代码实际测试可直接运行。

2020-08-29

Google浏览器插件Axhub

Google浏览器插件Axhub

2020-07-03

API接口设计之token、timestamp、sign

API接口设计之token、timestamp、sign的具体使用demo示例。

2018-06-24

Spring-Mybatis-Druid-Kafka示例集成Example

SpringMVC + Mybatis + Druid + Kafka 示例集成Example。

2018-03-03

SpringMVC+fastjson+Swagger集成示例源码

SpringMVC+Fastjson+Swagger集成示例完整源码Example。

2017-12-20

rabbitmq与spring集成示例demo

rabbitmq 与spring 使用maven集成示例源码 demo 示例。

2017-12-14

Spring+Mybatis+Druid+POI示例整合demo

Spring+Mybatis+Druid+POI示例整合demo

2017-06-05

Spring-Mybatis-Druid示例整合Demo

Spring-Mybatis-Druid示例整合Demo

2017-06-01

Spring-Mybatis-Druid 整合Demo

Spring-Mybatis-Druid 整合Demo

2017-05-31

spring+ehcache示例整合Demo

spring+ehcache示例整合Demo

2017-05-26

spring+ehcache完整示例demo

spring+ehcache示例demo

2017-05-26

springmvc+fastjson demo

springmvc+fastjson 完整示例,下载即可运行

2017-05-18

iOS 防好友动态顶部功能

iOS 防好友动态顶部功能

2016-12-27

NSTimer 定时器示例

该示例演示了定时器的 立刻启动, 暂停, 继续, 停止 操作

2016-02-25

UICollectionViewExample

UICollectionView基本使用方法以及自定义单元格。

2016-02-24

CYLTabBarControllerExample

CYLTabBarController 一个小示例

2016-02-14

iOS主题皮肤切换示例代码Demo

iOS主题皮肤切换示例代码Demo,示例可运行

2016-01-28

Objective-C&UIKit自学笔记

Objective-c、UIKit自学笔记

2015-09-18

vbirdbest的留言板

发表于 2020-01-02 最后回复 2020-05-18

博客专栏和个人分类默认只显式5个,为什么不能配置显示个数

发表于 2018-09-11 最后回复 2018-09-11

空空如也

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

TA关注的人 TA的粉丝

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