4 刘磊

我要认证

多年JAVAEE项目开发和教学经验。曾参与《中国轴承交易平台》、《25小时在线教育平台》、《51编程在线学习平台》等项目,同时负责多企业的内训课程的研发与讲授,对微服务架构,虚拟化技术等有独到的见解和认识。授课方式幽默,严谨,由浅入深,循序渐进,擅长项目驱动教学,善于调动学员的学习热情,深得学生的喜爱与好评。互联网技术领域的研究者和传播者,相信技术改变生活。

等级
TA的排名 1w+

《SpringCloud专题04》-微服务架构编码构建-服务消费者

1.建cloud-consumer-order802.改POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0

2020-07-09 12:50:38

《SpringCloud专题03》-微服务架构编码构建-服务提供者

1.微服务cloud整体聚合工程1.1.父工程步骤New Project聚合总父工程名字Maven选版本字符编码注解生效激活java编译版本选8File Type过滤1.2.父工程POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in

2020-07-07 23:56:13

《SpringCloud专题02》-关于SpringCloud组件的停更/升级/替换

Springcloud 官网都停止更新了。然后有新技术的来替代,这篇文章来记录一下技术选型的问题。服务注册中心之前体系中的 Eureka 官方已经不在维护了,强列不再建议选了。大有趋势的是 springcloud 体系里边的 Nacos,如果之前的系统使用的是 zookeeper 也行。服务调用之前是rebbon,现在也有停止维护的意思了。推出的是LoadBlance。原来的 Feign 不再维护,spring 推出了OpenFeign服务降级之前的体系里边的做服务熔断的 Hystrix

2020-07-05 22:45:07

《SpringCloud专题01》-SpringCloud版本选型

1.SpringBoot版本选择1.1.git源码地址https://github.com/spring-projects/spring-boot/releases/https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes通过上面官网发现 Boot官方强烈建议你升级到2.X以上版本官网SpringBoot版本2.SpringCloud版本选择2.1.git源码地址https://gi

2020-07-05 12:06:15

JavaSE专题-注解(Annotation)

1.注解的引入Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java的。这是大多数网站上对于Java注解,解释确实正确,但是说实在话,我第一次学习的时候,头脑一

2020-06-26 23:48:39

JDBC封装

1.前言原生的JDBC的操作其实是比较繁琐的,而且其中有很多的重复性代码,这个时候,我们可以考虑自己对JDBC进行一个简单的封装,封装成自己想要的,比较方便的小工具。2.封装JDBC为了使得编辑参数更加方便,首先将数据库连接参数抽取出来放在配置文件jdcb.properties中jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/singerdb?useUnicode=true&characterEnc

2020-06-14 23:17:43

泛型-类型通配符

类型通配符:额…说白了就是一个?。当确定集合是某种数据类型的时候,你可以写List<String>,而当不确定集合是哪一种类型的时候,就可以写成List<?>。在Java集合框架中,对于参数值是未知类型(即使用“?”通配符)的容器类,由于编译器无法预知其具体类型,所以只能读取,不能增删,但NULL是例外。如下面的代码就会编译出错public class Test6 { public static void main(String[] args) {

2020-06-09 00:21:03

java内部比较器和外部比较器

外部比较器,实现comparator,重写compare,以下例子实现包含对象的集合的排序。排序时调用的函数是collections.sort(list,比较器)。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * @date : 2019/5/24 *///外部比较器class MyCompare implement

2020-06-04 12:59:52

多线程专题-生产者消费者问题

等待唤醒机制其实就是经典的“生产者与消费者”的问题。就拿生产包子消费包子来说等待唤醒机制如何有效利用资源:包子铺线程生产包子,吃货线程消费包子。当包子没有时(包子状态为false),吃货线程等待,包子铺线程生产包子(即包子状态为true),并通知吃货线程(解除吃货的等待状态),因为已经有包子了,那么包子铺线程进入等待状态。接下来,吃货线程能否进一步执行则取决于锁的获取情况。如果吃货获取到锁,那么就执行吃包子动作,包子吃完(包子状态为false),并通知包子铺线程(解除包子铺的等待状态),吃货线程进入等待

2020-05-27 23:53:44

IO流专题-序列化

1.概述Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化:2.ObjectOutputStream类java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,

2020-05-24 23:36:13

IO流专题-转换流

1.编码引出的问题在IDEA中,使用FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。public class ReaderDemo { public static void main(String[] args) throws IOException { FileReader fileReader = new Fil

2020-05-24 23:15:49

IO流专题-缓冲流

之前学习了基本的一些流,作为IO流的入门,我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。1.概述缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader

2020-05-24 22:49:43

IO流专题-字符流

当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。1.符输入流【Reader】java.io.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。public void close() :关闭此流并释放与此流相关联的任何系统资源。public int read(): 从输入流读

2020-05-24 21:03:52

IO流专题-字节流

1.IO概述1.1.什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数

2020-05-23 12:08:27

IO流专题-FIle类和递归

课程目标1.IO流整体介绍;(了解)2.文件相关常识了解;(了解)3.File对象的创建;(掌握)4.File类中的基本方法;(掌握)5.文件和文件名过滤器;(掌握)6.方法递归调用;(理解)1.IO流的概念及应用场景1.1.什么是流?流,本身是一个非常抽象的概念,我们以现实生活中水为例,我们通过管道把A池子的水放到B池子中这个过程就会产生水流,只是主体是水而已。2.2. 什么是IO流1.2.什么是IO流?其实和上面原理一样,把上面的水变成计算机中的数据即可,IO流也可以看成是不同

2020-05-23 00:12:21

分布式锁专题-Redisson分布式锁实现

1.Redisson简介Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,我没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java 提供原生支持。相反,作为 Java 开发人员,我们若想在程序中集成 Redis,必须使用 Redis 的第三方库。而 Redisson 就是用于在 Java 程...

2020-05-08 14:00:55

分布式锁专题-Redis实现分布式锁

1.业务场景引入在进行代码实现之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个...

2020-05-07 17:01:26

分布式锁专题-Jedis实现分布式锁

1.业务场景引入在进行代码实现之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个...

2020-05-07 15:47:45

分布式锁专题-分布式锁入门

1.引入业务场景业务场景一因为小T刚接手项目,正在吭哧吭哧对熟悉着代码、部署架构。在看代码过程中发现,下单这块代码可能会出现问题,这可是分布式部署的,如果多个用户同时购买同一个商品,就可能导致商品出现 库存超卖 (数据不一致) 现象,对于这种情况代码中并没有做任何控制。原来一问才知道,以前他们都是售卖的虚拟商品,没啥库存一说,所以当时没有考虑那么多…这次不一样啊,这次是售卖的实体商品,那就...

2020-05-07 10:40:41

Quartz定时任务入门

1.Quartz是什么大部分公司都会用到定时任务这个功能。拿火车票购票来说,当你下单后,后台就会插入一条待支付的task(job),一般是30分钟,超过30min后就会执行这个job,去判断你是否支付,未支付就会取消此次订单;当你支付完成之后,后台拿到支付回调后就会再插入一条待消费的task(job),Job触发日期为火车票上的出发日期,超过这个时间就会执行这个job,判断是否使用等。在我们...

2020-04-26 00:47:07

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。