08 2024 档案
摘要: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
阅读全文
摘要:介绍线程创建的两种基本的方法:继承Thread类和实现Runnable接口 1. 继承Thread类 自定义类继承Thread类,重写 run() 方法 import org.slf4j.LoggerFactory; /** * @author: yt * @date: 2021/4/12 22:0
阅读全文
摘要:介绍一下线程常用的一些方法 1. run() 和 start() start() 方法让线程进入就绪状态 run() 方法 是Runnable 中的一个抽象方法,线程启动时就会调用run() 方法 (1) 如果直接调用run()方法,是不会启动新线程的 public class Test1 { pr
阅读全文
摘要:在springboot中使用mybatis 1. 建表 在test库中,建立一张animal表,并存入三条数据。 CREATE TABLE `test`.`animal` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARA
阅读全文
摘要:1. 介绍 springboot 项目官网:https://spring.io/projects/spring-boot springboot 是一个基于java的开源框架,能够轻松快速地创建基于spring的应用程序。它的目的在于减少一些繁琐的配置,减少甚至不需要配置文件,因为内置了Tomcat服
阅读全文
摘要:介绍一些常用注解。 springBoot因为很少用到xml来配置bean文件,所以大部分都是用注解来创建和管理相关bean。 @Component、 @Service、 @Repository 和 @Controller这几个注解效果都是差不多的,都是可以用来创建bean实例的。只是规定使用的方法不
阅读全文
摘要:介绍一下静态资源目录。 1. 默认静态资源目录 SpringBoot官网文档介绍,默认从/static (或 /public 或 /resources 或/META-INF/resources)目录中,可以获取得到静态资源文件。默认情况下,资源映射到/** ,但是我们可以通过设置spring.web
阅读全文