摘要:
1. 设计模式的概念 软件设计模式(Software Design Pattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有 阅读全文
摘要:
layout: post title: 单例模式 categories: [设计模式] description: 单例模式 keywords: 设计模式,单例模式 代码:https://gitee.com/Aes_yt/design-pattern 单例模式 单例模式(Singleton)是一种创建 阅读全文
摘要:
layout: post title: 工厂模式 categories: [设计模式] description: 工厂模式 keywords: 简单工厂,工厂方法,抽象工厂 代码:https://gitee.com/Aes_yt/design-pattern 工厂模式 1. 简单工厂模式 简单工厂模 阅读全文
摘要:
layout: post title: 原型模式 categories: [设计模式] description: 原型模式 keywords: 原型模式 代码:https://gitee.com/Aes_yt/design-pattern 原型模式 概念 原型模式将一个已经创建的实例作为原型,复制出 阅读全文
摘要:
layout: post title: 建造者模式 categories: [设计模式] description: 建造者模式 keywords: 建造者模式, 链式赋值 代码:https://gitee.com/Aes_yt/design-pattern 建造者模式 建造者模式是将一个复杂对象,解 阅读全文
摘要:
layout: post title: 代理模式 categories: [设计模式] description: 代理模式 keywords: 代理模式, Proxy, cglib 代码:https://gitee.com/Aes_yt/design-pattern 代理模式 代理模式需要给某对象提 阅读全文
摘要:
dubbo是一种基于Java的高性能RPC框架,最初由阿里巴巴开发,2018年2月进入Apache孵化器。 官方网站(本文第2,3部分摘自官网):https://dubbo.apache.org/zh/ Apache Dubbo |ˈdʌbəʊ| 提供了六大核心能力:面向接口代理的高性能RPC调用, 阅读全文
摘要:
本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。 1. zookeeper下载安装 本文的例子使用zookeeper作为注册中心。 首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https 阅读全文
摘要:
本文介绍注解方式配置dubbo的例子。 服务提供Provider 1. 定义接口Animal和实现类Cat Animal: public interface Animal { /** * 描述: 返回动物的叫声 */ String sound(); } Cat: package com.yt.pro 阅读全文
摘要:
本文介绍java中的线程池类ThreadPoolExecutor。 我们可以利用ThreadPoolExecutor创建线程池,这个类中有多个构造方法。 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveT 阅读全文
摘要:
使用线程池可以减少创建和销毁线程的次数,可以调整线程池中工作线程的数量,防止内存过多消耗。在阿里巴巴Java开发手册中,也强调了线程资源必须通过线程池提供,不允许在应用中自行显式创建线程,应通过ThreadPoolExecutor的方式来创建线程池,规避资源耗尽的风险。在学习Java的线程池之前,我 阅读全文
摘要:
本文介绍并发编程的三大性质:原子性,可见性,有序性以及volatile关键字。 1. 原子性 原子性指一个操作或者多个操作,要么全部执行要么全部不执行。在介绍synchronized关键字的时候,就有介绍过,在执行 i++ 的时候,实际上执行的是三个步骤:读取 i 的值,i+1,将结果写入。所以这个 阅读全文
摘要:
本文介绍ReentrantLock。 ReentrantLock 翻译为可重入锁,是 java.util.concurrent.locks 包中的一个类,可以通过代码调用lock() 和 unlock() 方法来进行加锁解锁。因此一般使用的时候要用到try,finally,在finally中进行锁的 阅读全文
摘要:
介绍死锁。 1. 死锁的概念 简单的说,死锁是指多个线程在竞争资源时,造成了互相等待阻塞的现象。例1: public class Test1 { private static final Logger log = LoggerFactory.getLogger(Test1.class); publi 阅读全文
摘要:
1. wait 和 notify wait() 方法是Object类中的方法,他的作用是让当前线程进入等待状态,而使用notify() 方法可以唤醒。 wait(long): void ,参数是毫秒,表示等待毫秒数,直到时间结束或被唤醒; wait(long, int): void ,第一个参数是毫 阅读全文
摘要:
介绍synchronized关键字 1. 概念 同步代码块(Synchronized Block)是Java提供的一种内置锁机制。用关键字synchronized来修饰的方法,就是同步代码块。线程在进入同步代码块的时候会自动获取锁,退出代码块时会自动释放锁。内置锁是互斥锁,最多只有一个线程能持有,被 阅读全文
摘要:
java线程状态 1. 操作系统进程的五种状态 网上找了一张图: 2. java线程的六种状态 Thread类中getState()方法可以获取线程的状态,返回值是Thread类中的enum类型,取值有NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMIN 阅读全文
摘要:
介绍一下线程常用的一些方法 1. run() 和 start() start() 方法让线程进入就绪状态 run() 方法 是Runnable 中的一个抽象方法,线程启动时就会调用run() 方法 (1) 如果直接调用run()方法,是不会启动新线程的 public class Test1 { pr 阅读全文
摘要:
介绍线程创建的两种基本的方法:继承Thread类和实现Runnable接口 1. 继承Thread类 自定义类继承Thread类,重写 run() 方法 import org.slf4j.LoggerFactory; /** * @author: yt * @date: 2021/4/12 22:0 阅读全文
摘要:
在springboot中使用mybatis 1. 建表 在test库中,建立一张animal表,并存入三条数据。 CREATE TABLE `test`.`animal` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARA 阅读全文