自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 Docker部署MySQL

一、拉取MySQL镜像1、拉取命令docker pull mysql2、查看镜像,检查是否拉取成功docker imagesimages.png二、创建MySQL容器1、建立目录映射mkdir /optmkdir /opt/mysqlmkdir /opt/mysql/conf/mkdir /opt/mysql/logs/mkdir /opt/mysql/data/2、创建my.cnf配置文件touch /opt/mysql/my.cnfmy.cnf添加以下内容:..

2020-06-29 11:59:50 316

原创 centos7安装docker

1、查看linux发行版,内核[root@docker~]# cat /etc/redhat-release #查看版本号 CentOS Linux release 7.1.1503 (Core) [root@docker ~]# uname -r #查看Linux内核 c3.10.0-229.el7.x86_642、替换阿里云yum源1 wget -O /etc/yum.repos.d/CentOS-Base.repo http://m...

2020-06-29 10:33:46 142

原创 docker kafka安装使用

1、kafka需要zookeeper管理,所以需要先安装zookeeper。下载zookeeper镜像$ docker pull wurstmeister/zookeeper2、启动镜像生成容器## docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper$ docker run -d --restart=always --log-driver jso.

2020-06-28 15:26:56 374

转载 springboot加载bean过程探索

springboot一般通过以下main方法来启动项目@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}查看源码发现加载的主要逻辑写在了ConfigurableApplicationContextorg.s.

2020-06-15 17:57:56 671

转载 从零开始开发一个Spring Boot Starter

一.Spring Boot Starter简介Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。总结:1.它整合了这个模块需要的依赖库;2.提供对模块的配置项给使用者;3.提供自动配置类对模块内的Bean进行自动装配;例如,在Maven的依赖中加入.

2020-06-15 17:56:35 165

转载 spring boot 启动原理解析

我们开发任何一个Spring Boot项目,都会用到如下的启动类1 @SpringBootApplication2 public class Application {3 public static void main(String[] args) {4 SpringApplication.run(Application.class, args);5 }6 }从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定

2020-06-15 17:55:39 202

转载 阿里分布式事务框架Seata原理解析

Seata框架是一个业务层的XA(两阶段提交)解决方案。在理解Seata分布式事务机制前,我们先回顾一下数据库层面的XA方案。1. MySQL XA方案MySQL从5.7开始加入了分布式事务的支持。MySQL XA中拥有两种角色:RM(Resource Manager):用于直接执行本地事务的提交和回滚。在分布式集群中,一台MySQL服务器就是一个RM。 TM(Transaction Manager):TM是分布式事务的核心管理者。事务管理器与每个RM进行通信,协调并完成分布式事务的处理。发起

2020-06-15 10:37:48 2864

转载 “TCC分布式事务”实现原理

业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货这是一系列比较真实的步骤,无论大家有没有做过电商系统,应该都能理解。进一步思考好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。什么意思呢?也就是说,[1] 订单服务-修改订单状态,[2] 库存服务-扣减库存,[3] 积分服务-增加积分,

2020-06-15 10:36:27 164

转载 分布式事务简介及Seata demo上手

文章目录Seata简介分布式事务产生背景数据库的水平分割微服务化分布式事务理论基础两阶段提交(2pc)TCC基本原理幂等控制空回滚防悬挂事务消息优缺点比较Seata解决方案AT模式(业务侵入小)第一阶段第二阶段TCC(高性能)Demo上手-AT模式Dubbo集成Seata配置修改启动测试Demo上手-TCC模式Dubbo集成Seata配置修改启动测试Seata简介Seata(Simple Extensible Autonomous Transaction

2020-06-15 10:23:59 264

转载 JAVA 快速构建树形结构

话不多说直接上代码JDK 1.8+ Node 中pid 为 0 的是根节点public class Node { private int id; private int pid; private String name; private List<Node> sub = new ArrayList<>(); public Node(int id, int pid) { this.id = id; .

2020-06-11 18:00:48 1122

转载 Spring源码-循环依赖

Spring 在哪些情况下会出现循环依赖错误?哪些情况下能自身解决循环依赖,又是如何解决的?本文将介绍笔者通过本地调试 Spring 源码来观察循环依赖的过程。1. 注解属性注入首先本地准备好一份 Spring 源码,笔者是从 Github 上 Clone 下来的一份,然后用 IDEA 导入,再创建一个 module 用于存放调试的代码。调试模块目录本次调试有三个类,A、B 通过注解 @Autowired 标注在属性上构成循环依赖,Main 为主函数类。@Component("A"

2020-06-11 10:33:12 128

转载 Semaphore 的使用思路

1、Semaphore的初步使用  Semaphore是什么,能做什么?    Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。  直接看例子吧,这个例子包含3个类,一个是线程类,一个是 Semaphore 关键代码类,一个类是主main方法类:package com.cd.concurrent.semaphore;public class MyThread extends T.

2020-06-05 09:19:59 190

转载 高并发下接口幂等性解决方案

一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。二、幂等性场景1、查询操作:查询一次和查询多次,在数据不变

2020-06-04 09:43:08 192

转载 @Retention 注解的作用

注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE按生命周期来划分可分为3类:1、RetentionPolicy.SOURCE:注解...

2020-06-03 16:58:47 751

转载 java元注解 @Target注解用法

@Target:   @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。  作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方) 取值(ElementType)有 1 2 3

2020-06-03 16:58:16 873

转载 countDownLatch

1.背景:countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下。2.概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待

2020-06-02 16:25:08 143

转载 SpringBoot高级篇MongoDB之修改基本使用姿势

I. 基本使用首先是准备好基本环境,可以参考博文181213-SpringBoot高级篇MongoDB之基本环境搭建与使用 190113-SpringBoot高级篇MongoDB之查询基本使用姿势在开始之前,先封装一个输出方法,用于打印修改后的record对象private void queryAndPrint(Query query, String tag) { System.out.println("------------- after " + tag + " age .

2020-06-01 09:35:04 607

转载 轻轻松松学习SpringBoot2:第二十五篇: Spring Boot和Mongodb整合(完整版)

今天主要讲的是Spring Boot和Mongodb整合我们先来回顾一下前面章节的相关内容前面我们讲了SpringBoot和mysql整合,并且讲了操作数据库的几种方式SpringBoot+JPA自动生成表数据库操作SpringBoot+JDBC操作篇SpringBoot+Mybatis自动生成代码 操作篇回到正题,mongodb的安装在这就不累述了,win版本的去官网下载,然后一直下一步即可,安装完之后需要db位置,类似命令如下mkdir db,然后进入到mon..

2020-06-01 09:28:05 901

转载 MongoDB之查询基本使用姿势

学习一个新的数据库,一般怎么下手呢?基本的CURD没跑了,当可以熟练的增、删、改、查一个数据库时,可以说对这个数据库算是入门了,如果需要更进一步的话,就需要了解下数据库的特性,比如索引、事物、锁、分布式支持等本篇博文为mongodb的入门篇,将介绍一下基本的查询操作,在Spring中可以怎么玩I. 基本使用0. 环境准备在正式开始之前,先准备好环境,搭建好工程,对于这一步的详细信息,可以参考博文:181213-SpringBoot高级篇MongoDB之基本环境搭建与使用接下来,在一.

2020-06-01 09:16:37 342

空空如也

空空如也

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

TA关注的人

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