创建线程方法一:继承于Thread类 继承Thread类,重写run方法 创建MyThread对象,并调用start方法 12345678910111213class MyThread extends Thread { @Override public void run() { System.out.println("run"); }}public clas...
前言 将一个类的接口,替换成客户端希望的另外一个接口,使原本因接口不兼容的类能一起工作,这就是适配器模式。 原文地址:https://xuedongyun.cn/post/26888/ 适配器模式的角色适配器模式(Adapter)包含以下主要角色 目标(Target)接口:当前业务所期待的接口 适配者(Adapter)类:当前组件的接口 适配器(Adapter)类:一个转换器,把适配者接口...
前言本文是RabbitMQ基础学习笔记 原文地址:https://xuedongyun.cn/post/33842/ MQ相关概念什么是MQ 本质是个队列,先进先出(FIFO) 跨进程的通信机制,用于上下游传递消息 “逻辑解耦+物理解耦”的消息通信服务 为什么使用MQ 流量消峰 比如下单,使用消息队列做缓冲。高峰期,排队进行,让短时间的请求分散到一定时间来处理。 可能导致用户下单很久,才...
前言本文是Redis基础学习笔记 原文地址:https://xuedongyun.cn/post/26216/ Redis入门概述是什么 Remote Dictionary Server,远程字典服务器 基于内存的,k-v键值对(一种NoSQL)数据库 相关网站 作者博客(有一些更新日志):http://antirez.com Github仓库:https://github.com/...
前言IO流是Java中有一个重要的概念,指的是数据从一个地点到另一个地点的过程。输入输出的介质有很多,包括:文件、网络、键盘(输入)、显示器(输出)…… 原文地址:https://xuedongyun.cn/post/17650/ IO分类Java对IO操作提供了相应的API,包含在java.io包中。java中对流的分类包括: 按流向分(站在程序的角度) 输入流(Input) 输出流(O...
前言Java中List.of和Arrays.asList都可以用来快速创建一个List容器 在Java中List.of和Arrays.asList都可以用来快速创建一个List容器 123// 直接创建List<Integer> list1 = List.of(1, 2, 3);List<Integer> list2 = Arrays.asList(1, 2, 3);...
前言Java中支持泛型机制。泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。 泛型信息只存在于代码编译阶段,在Java的运行期(已经生成字节码文件后)会被擦除掉,专业术语叫做类型擦除。 Java 泛型中的 extends 和 super 是用来限制泛型类型参数的上限和下限的关键字。 原文地址:https://xuedongyun.cn/post/3373/ T的用法 可以作用在类...
前言本系列为Redis实战系列,旨在通过实际场景学习Redis相关使用方法。本系列项目使用spring-boot-starter-data-redis(SpringDataRedis)来操作Redis。 原文地址:https://xuedongyun.cn/post/25055/ 分布式锁-setnx分布式锁:在分布式系统中,多进程可见且互斥的锁 核心思想:让大家都用同一把锁,只要能锁住线程...
前言本系列为Redis实战系列,旨在通过实际场景学习Redis相关使用方法。本系列项目使用spring-boot-starter-data-redis(SpringDataRedis)来操作Redis。 原文地址:https://xuedongyun.cn/post/20783/ 全局唯一ID当用户抢购时,会生成订单,保存到表中。但是如果使用自增ID就会出现问题: id规律太明显 受表单数...
前言本系列为Redis实战系列,旨在通过实际场景学习Redis相关使用方法。本系列项目使用spring-boot-starter-data-redis(SpringDataRedis)来操作Redis。 原文地址:https://xuedongyun.cn/post/44039/ 添加缓存 查询数据前先查询缓存 如果缓存有,直接返回 如果缓存无,查询数据库,再存入redis中 1234...