自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RocketMQ (二)整合、应用

1. 案例介绍1.1 业务分析模拟电商网站购物场景中的【下单】和【支付】业务###1)下单用户请求订单系统下单订单系统通过RPC调用订单服务下单订单服务调用优惠券服务,扣减优惠券订单服务调用调用库存服务,校验并扣减库存订单服务调用用户服务,扣减用户余额订单服务完成确认订单###2)支付用户请求支付系统支付系统调用第三方支付平台API进行发起支付流程用户通过第三方支付平台支付成功后,第三方支付平台回调通知支付系统支付系统调用订单服务修改订单状态支付系统调用积分服务添加

2021-08-10 11:18:06 226

原创 RocketMQ(一)基本使用及集群搭建

1. MQ介绍1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构其应用场景主要包含以下3个方面应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回复后,

2021-08-07 09:13:40 365

原创 Java 并发编程(下)线程池、JUC、AQS、ReentrantLock源码

七、共享模型之工具1、线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立

2021-08-03 14:27:20 180

原创 Java 并发编程(中)JMM、CAS、Volatile

四、共享模型之内存1、Java 内存模型(JMM)JMM文档五、共享模型之无锁管程即 monitor 是阻塞式的悲观锁实现并发控制,这章我们将通过非阻塞式的乐观锁的来实现并发控制1、无锁解决线程安全问题如下代码,通过 synchronized 解决线程安全问题。public class Code_04_UnsafeTest { public static void main(String[] args) { Account acount = new AccountUn

2021-08-01 16:21:42 241

原创 并发编程(上)Synchronized 、LockSupport 、ReentrantLock

一、基本概念1、进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程。

2021-07-31 11:13:40 313 1

原创 Java内存模型JMM

1. java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障JMM 体现在以下几个方面原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响2、可见性1)退不出的循环首先看

2021-07-28 20:17:48 140

原创 JVM学习

一、什么是JVM定义Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境)好处一次编写,到处运行自动内存管理,垃圾回收机制数组下标越界检查比较JVM JRE JDK的区别二、内存结构整体架构1、程序计数器定义Program Counter Register 程序计数器(寄存器)作用:是记住下一条jvm指令的执行地址特点:是线程私有的(每个线程都有自己的程序计数器)不会存在内存溢出图解2、虚拟机栈定义每个线程运

2021-07-24 22:13:01 284 1

原创 HashMap集合源码

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-07-16 09:23:22 48

原创 SpringBoot学习

一、springBoot入门springBoot Hello world1、创建一个maven工程 <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.5.2</version>

2021-07-10 15:15:30 64

原创 Mybatis学习

第一章、mybatis简单回顾1、mybatis做什么? mybatis是ORM框架,解决数据库访问和操作问题,是对现有的JDBC技术的封装2、开发环境搭建 1、准备jar <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <versi

2021-07-10 15:05:53 46

原创 Spring学习

一、工厂设计模式1、什么是工厂设计模式1.就是通过工厂类来创建对象2.好处:解耦2、简单工厂package com.learn.javase.reflect;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class MyBeanFactory { private static Properties properties = new Propert

2021-07-10 14:45:30 85

原创 设计模式学习

1、单例设计模式简介:为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例。为了确保对象的唯一性,我们可以通过单例模式来实现,这就是单例模式的动机所在。饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全)懒汉式(双重检查线程安全)懒汉式(静态内部类)懒汉式(枚举类)1、饿汉式(静态常量)步骤: -将自己的构造器私有化 -自己类的内部创建自己对象 -向外

2021-07-08 20:35:46 60

空空如也

空空如也

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

TA关注的人

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