- 博客(60)
- 资源 (1)
- 收藏
- 关注
原创 六、代理模式
六、动态代理模式1、模式结构和结构图1 抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。1.2 真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。1.3 代理(Proxy)类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能2、代码实战需求背景:我们通过代理模式,来实现对某个方法的执行时间统计。公共方法:// 时间类package pr
2022-04-05 16:56:33 626
原创 五、命令模式
五、命令模式1、模式结构及结构图模式结构:1.1 命令抽象类(Command):声明执行命令的接口,具有命令执行的抽象方法execute();1.2 具体命令类(concrete Command): 实现命令接口。它具有接收者对象,并调用接收者对象的功能方法来完成命令的执行。1.3 接收者对象(Recevicer): 执行命令相关的操作,是具体命令对象的真正实现者。比如接收关灯命令,实际完成断电操作。1.4 调用者/请求者(Invoker):命令的发送者。具有命令对象,通过命令对象来发送请求。
2022-03-06 14:23:35 299
原创 四、单例模式
四、单例模式1、模式结构及结构图单例类:包含一个实例且能自行创建这个实例的类。结构图:2、代码实战需求:懒汉模式,且线程安全。代码:package singleton;/** * 单例模式类(懒汉模式:线程安全的写法) * * @author 刀刀和阳 */public class SingleObject { /** * 要用volatile修饰 */ private static SingleObject singleObject = n
2022-03-06 14:21:18 168
原创 三、工厂模式
三、工厂模式1、模式结构及结构图1.1 抽象工厂(abstract factory):提供创建产品的接口,调用者通过接口来访问具体工厂的方法,从而达到创建产品的效果。1.2 具体工厂(concrete factory):实现抽象工厂,重写创建具体产品的方法。1.3 抽象产品(abstract product):抽象产品接口,定义产品规范和特性。1.4 具体产品(concrete product):实现了抽象产品接口,为抽象产品的具体实现。结构图:2、代码实战需求描述:有两个工厂A和B分别生
2022-02-16 21:21:36 137
原创 二、装饰者模式
设计模式:二、装饰者模式1、模式结构及结构图装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰器模式的主要优点有:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则**其主要缺点是:**装饰器模式会增加许多子类,过度使用会增加程序得复杂性。结构组成:1.1
2022-02-13 22:38:09 401
原创 一、观察者模式
一、观察者模式1、模式结构1.1 抽象主题类(subject):提供用于保存观察者对象的聚集类。包括增加和删除对象的方法,以及通知所有观察者的抽象方法;1.2 具体主体类(concrete subject):抽象主体实现类,实现了抽象主题类中的抽象方法,并通知所有的注册对象。1.3 抽象观察者(observer):抽象观察者,可以是一个抽象类或者接口。包含了一个抽象方法,当接收到具体主体发出的通知时做出的反应。1.4 具体观察者(concrete observer):抽象观察者的具体实现类。实现了
2022-02-12 16:49:39 351
原创 Mybatis-Generator 使用教程:一键自动完成增删改查
Mybatis-Generator 使用教程项目环境:JDK8+postgresql11+IDEA+MAVEN+SPRINGBOOT偷懒,直接创建springboot项目mybatis-generator-demo1、配置依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc
2020-07-19 22:59:28 1284 2
原创 JVM之二:深入浅出jvm
文章目录1、jvm模型2、类加载器2.1 加载2.2 验证2.3 准备2.4 解析2.5 初始化3、双亲委派机制4、native方法5、PC寄存器6、方法区7、栈:数据结构(先进后出,后进先出)8、堆9、JMM1、jvm模型2、类加载器作用: 加载Class文件。虚拟机自带的加载器启动类(根)加载器扩展类加载器应用程序加载器类加载机制:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则
2020-07-08 15:28:06 588
原创 ActiveMQ教程之三:JMS基础知识
文章目录四、JMS规范1、JMS是什么2、消息头3、消息体4、消息属性5、消息的持久化6、消息的事务7、 消息的签收机制8、 JMS的点对点总结9、 JMS的发布订阅总结四、JMS规范1、JMS是什么什么是Java消息服务?Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持Java应用程序开发。在JavaEE中,当两个应用程序使用JMS进行通信时,它们之间不是直接相连的,而是通过一个共同的消息收发服务组件关联起来
2020-07-04 21:30:17 455
原创 ActiveMQ教程之二:queue和topic的使用
文章目录三、基本的使用1、 JMS编码总体规范2、Destination简介3、队列消息生产者消费者入门案例4、TOPIC消息生产者消费者入门案例三、基本的使用1、 JMS编码总体规范JMS : Java 消息中间件的服务接口规范,activemq 之上是 mq , 而 mq 之上是JMS 定义的消息规范 。 activemq 是mq 技术的一种理论实现(与之相类似的实现还有 Kafka RabbitMQ RockitMQ ),而 JMS 是更上一级的规范。2、Destination简介Des
2020-07-04 21:28:04 1648
原创 ActiveMQ教程之一:ActiveMQ的了解以及安装
文章目录一、入门概述1、MQ的产生背景2 、MQ的主要作用3、 MQ的定义4、MQ的特点二、ActiveMQ的安装及控制台1、安装2、进入管理界面一、入门概述1、MQ的产生背景系统之间直接调用存在的问题?微服务架构后,链式调用是我们在写程序时候的一般流程,为了完成一个整体功能会将其拆分成多个函数(或子模块),比如模块A调用模块B,模块B调用模块C,模块C调用模块D。但在大型分布式应用中,系统间的RPC交互繁杂,一个功能背后要调用上百个接口并非不可能,从单机架构过渡到分布式微服务架构的通例。这些架构会
2020-07-03 11:09:14 575
原创 java求职面试题汇总(持续更新)
一、华为武汉研究所(OD模式)总共有好几轮:机考-性格测试-视频技术面试-HR面试-部门负责人面试。1、机考总共两道编码题,只要一道题目通过率百分之百基本就没有问题了。题目基本都是牛客网上的编程题,难度一般,不是很高。具体题目当时没有记下来,自己只做对了一题。2、性格测试当时好像是隔了三天左右就出结果了,做了一下华为的性格测试题,做的时候还感觉奇怪,为什么好多重复题,后来看了才发现,有些同学居然挂在了性格测试上,因为有重复出现的题目就是为了检测你的回答是否前后一致,是否有出现矛盾的地方。还是得小心
2020-07-01 22:52:18 1362
原创 MYSQL入门基础知识
文章目录一、数据库安装二、数据类型1、数值类型2、日期和时间类型3、字符串类型三、常用命令1、基本术语2、常用命令四、mysql事务1、事务的四个特性(acid)2、事务的隔离级别3、MYSQL 事务处理主要有两种方法:五、索引1、索引的优缺点:2、索引的分类六、如何防止SQL注入一、数据库安装关于数据库安装部分可以参考菜鸟教程,这个是个不错的网站。https://www.runoob.com/mysql/mysql-install.html另外,关于数据库操作,可以使用Navicat工具进行数据库
2020-06-26 10:45:10 7499 1
原创 java面试常问系列之HashMap详细源码分析。
HashMap源码分析hashmap一直都是面试的高频问题。这次让我们一起彻底干掉它,以后再也不怕面试官问这个问题了。首先我们先对这个方法的文档阅读一下,下面做个简单大概的翻译,先提前了解一下hashmap。那么,我们再来看一下hashmap中的一些成员变量熟悉了这些变量之后,我们先大概了解一下在JDK8中,hashmap的结构是什么样子的。在hashmap中,元素最小单位是entry,里面存放的是一个key-value键值对,还有一种叫法是bucket(桶)。在扣源码的时候,我们先补点位
2020-06-23 07:13:02 502
原创 Docker教程(五):Dockerfile
前言本文根据狂神说视频资料整理。https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=16447684728895719563Dockerfiledockerfile是用来构建docker镜像的文件,命令参数脚本!构建步骤:1、编写一个dockerfile文件2、docker build 构建成一个镜像3、docker run 运行一个镜像4、docker push 发布一个镜像Dockerfile构建过程基本知
2020-06-21 16:14:54 465
原创 Docker教程(四):docker容器数据卷
前言本文根据狂神说视频资料整理。https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=16447684728895719563Docker 容器数据卷什么是容器数据卷容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ic6c04Y2-159272637
2020-06-21 16:11:05 963
原创 Docker教程(三):docker镜像讲解
前言本文根据狂神说视频资料整理。https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=16447684728895719563Docker镜像讲解镜像是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码,运行时库、环境变量和配置文件所有的应用,直接打包docker镜像,就可以直接跑起来。如何到镜像:从远程仓库下载朋友拷贝自己制作有
2020-06-21 15:58:00 1382 1
原创 Docker教程(二):docker常用命令
前言本文根据狂神说视频资料整理。https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=16447684728895719563Docker常用命令帮助命令docker version # 显示docker的版本docker info # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令 帮助文档的地址:https://docs.docker.
2020-06-21 15:39:53 1608
原创 Docker教程(一):docker安装及运行原理
前言本文根据狂神说视频资料整理。https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=16447684728895719563Docker 安装Docker概述在docker出现之前,或者说广泛运用以前,我们使用的是虚拟机技术:以前的虚拟机[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xNxaYm9h-1592724884337)(C:\Users\刀刀和阳\AppData\Roami
2020-06-21 15:37:41 817
原创 swagger的简单入门和使用
一、什么是swagger?Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 restful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。二、如何使用swagger?本文主要介绍在springboot中swagger的使用。1、导入依赖:<dependency> <groupI
2020-06-19 10:35:30 2751
原创 JVM之一:GC垃圾回收原理及算法分析
导读本人java小白一枚,写博客用意一是做一个学习总结,二是作一个分享。所写内容难免会有错误或者理解不到位的情况,恳请各位大佬不断对我提出批评,用技术吊打我,鞭笞我。拜谢~~一、java中的垃圾1、什么是垃圾简单来说,就是java内存中没有用了的对象,或者说是已经被嫌弃,死亡的对象。2、如何去判断对象是属于垃圾对象呢?最开始,有一种算法叫做引用计数法。顾名思义就是当对象被引用时,通过对对象的引用情况进行登记,如果存在引用的话,则进行加1,否则减1。当该应用计数为0时,则进行回收处理。示例:创
2020-06-16 10:37:31 1961
原创 多线程基础三:线程池
一、线程池的基本概念1、基本概念背景: 由于线程的创建和销毁在并发量比较大的情况下,非常消耗资源,对性能的影响比较大。方案: 提前创建好多个线程,放入线程池中,需要的时候就取出,不需要的时候就放回,以此来避免线程的重复创建和销毁,实现线程的重复利用。线程池的执行流程:2、常见的四种线程池//线程数量不固定,只要有空闲线程空闲时间超过设定值就会被回收,适用于并发不固定的短期任务ExecutorService service1 = newCachedThreadPool();//当前线程数
2020-06-15 08:17:43 119
原创 多线程基础二:线程同步,生产者和消费者剖析。
一、线程同步问题在12306购票系统中,一年一度的抢票春运相信小伙伴们都有深刻的印象。坑爹的验证码,万恶的黄牛党,都是历历在目的。那么在这个抢票过程中,每个用户可以看做是一个线程,那么就涉及到用户的买票和退票操作。如果有10张票,但是有20个人同时进行购票操作,我们来模拟一下,线程不同步会是什么样子的。/**假设有两个群体,学生和工人,此时剩余20张票,工人和学生各买10张。*/public class Deom01 { public static void main(String[] a
2020-06-13 22:16:29 243
原创 多线程基础一:深入浅出认识多线程及常用方法
一、线程基础知识1、什么是线程官方一点的解释:进程是资源分配的最小单位,线程是CPU调度的最小单位。即进程可以理解为一个正在运行的程序,而线程就是进程中去各个模块执行任务的线程。2、线程的两种常见的开启方法package thread;public class Demo02 { public static void main(String[] args) { //通过继承Thread类开启线程 Thread t1 = new Thread01()
2020-06-13 15:40:50 315
原创 Redis入门:七、缓存击穿和缓存穿透以及雪崩
一、前言在正式讲解这三种异常时,我们先话两分钟来回顾一下,redis缓存或者说一般缓存的基本流程,老习惯,开局一张图,剩下全靠编,啊呸,剩下全靠理解。二、缓存击穿以及应对策略1、定义假设有一个热点新闻K-V在缓存数据库中,比如说微博热搜,但是当微博热搜的K-V过期,则会透过缓存数据库,直接打到数据库中,造成一瞬间有大量用户访问,给数据库带来很大的压力。2、应对策略2.1使用互斥锁并发量不大的时候可以使用以下方法实现:简单思路分析:由于缓存击穿是由于用户访问同一个热点K-V,如果刚好该
2020-06-11 11:41:50 146
原创 Redis入门:六、主从复制以及哨兵模式
一、主从复制1、主从复制的概念主从复制:将一台redis服务器上的数据复制到另外一台redis服务器中,前者称之为主节点(Master),后者称之为从节点(Slave)。数据只能从主节点到从节点,复制是单向的。master以写为主,slave以读为主。注意: 每个redis服务器都是一个主节点,每个主节点可以连接多个从节点,但是每个从节点只能有一个主节点(一个爸爸可以有多个儿子,但儿子只能一个爸爸,隔壁老王除外,儿子也可以有儿子,既能当爹也能当儿子)。最少是一主二从(一个主机挂掉了还可以有从机进
2020-06-10 15:36:39 131
原创 lunix学习:一、阿里云服务器环境的简单搭建
一、购买及配置阿里云服务器阿里云商城https://www.aliyun.com/最好是搞个学生机,会有优惠点,24周岁以下都默认是学生,本人由于穷,找同学帮忙认证了一下。学生机费用比较划算,总的才花了114.购买完成后我们需要配置安全组,也就是开放端口。再点击手动添加输入端口号和ip就行点击实例,再点击实例名称,重置密码,确保安全这样基本就配置完成,重启服务器就行了。二、安装xshell进行lunix命令操作链接:https://pan.baidu.com/s/1gXOYd
2020-06-09 09:43:34 332
原创 Redis入门:五、持久化RBD和AOF(重点)
一、Redis持久化1、什么是Redis持久化?Redis持久化是指将内存中的数据保存的磁盘,进行存储。2、为什么要Redis持久化?在实际工作中,Redis数据经常发生改变,容易造成数据丢失,同时,如果Redis服务器发生断电等异常,数据断电即失,同时如果服务器退出,服务器中的数据库状态也会消失。二、Redsi持久化的两种方式1、RDB1.1 RDB的含义在指定的时间间隔内将内存中的数据集体快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。Redish会单独创建
2020-06-08 15:20:56 708
原创 Redis入门:四、配置RedisTemplate以及编写工具类
一、配置RedisTemplate1、需要的依赖<!--导入lombok插件,方便编写实体类会用到--><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency><!--导入redis依赖--><dependency> <group
2020-06-06 21:39:09 808
原创 Redis入门:三、Redis事务、乐观锁
一、redis事务》》》Redis事务的本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!一次性、顺序性、排他性!执行一些列的命令!Redis事务没有隔离级别的概念Redis单挑命令是保存原子性的, 但是事务不保证原子性Redis的事务:开启事务(multi)命令入队(…)执行事务(exec)取消事务(dicard)编译时异常127.0.0.1:6379> multiOK127.0.0.1:6379> set k1 v1
2020-06-05 21:38:30 105
原创 Redis入门:二、常用数据类型及简单命令
一、常用数据类型redis中的key可以理解为mysql中数据库。废话不多说,开局一张图,剩下全靠编,不对,剩下全靠讲解。二、常用的命令redis命令参考文档:http://doc.redisfans.com/由于命令比较多,就不一一列举了。放一张图感受一下:有需要可以去该网站进行查找,也比较方便,后面就讲解一下常用的一些命令,特别是五大基本类型,基本都是大同小异,主要从增删改查四个功能来讲解对应的指令。开始之前,先讲解一下系统指令flushdb #删除当前数据库flushall
2020-06-05 18:29:59 155
原创 Redis入门:一、安装Redis
一、在windows系统中安装redis目前redis 在windows系统中使用的不多,目前更新到3.2.100版本就已经停止更新了。1、下载点击下载地址:https://github.com/MicrosoftArchive/redis/releases有两个版本,msi是安装版本,zip是压缩文件,我们使用下载zip文件。2、安装下载完成之后,进行解压。可以从cmd中进行运行,如图,进入到redis解压目录,输入redis-server.exe --service-start按回
2020-06-05 08:27:39 148
原创 旅游项目数据后台管理系统(一):数据库表格搭建
一、数据表准备工作使用powerdesigner进行表格设计,最后导出所得到的建表语句/*==============================================================*//* DBMS name: MySQL 5.0 *//* Created on: 2...
2020-04-06 10:11:34 3012
原创 SpringSecurity 在spring框架下以及springboot下的使用
一、什么是spring security?spring security 是用于spring里提供的一个安全框架,提供认证和授权功能。目前的话,在springboot应用较多,原因在与springboot简化了其配置,更加容易上手。但是,目前这个案例还是讲一下在spring框架中的配置。二、spring security的用法三、spring security底层源码简单分析。...
2020-04-03 22:16:49 238
原创 分页神器:PageHelper的使用教程
一、什么是PageHelper?1.PageHelper简介 PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本的主流与常用的数据库。例如mysql、oracle、mariaDB、DB2、Hsqldb等。2.PageHelper官网 官网链接:(https://PageHelper.github.io) 对于该开项目刚兴趣的同学可以点进去阅读以下其官方...
2020-03-28 16:46:34 18034 1
原创 UUID的使用
一、什么是UUID?UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题...
2020-03-26 23:02:09 2456
原创 IDEA方法注释模板创建
一、打开设置路径1、File>>Settings>>Editor>>Code Style>>Live Templates打开后的效果图2、点击右上角的“+”号,再点击“2.Template Group...”3、取一个名字:随意都行,我的是annotation.4、选中创建的annotation,再点击右上角的“+”号...
2020-03-23 11:11:42 411
原创 web项目数据库端报错:java.sql.SQLException: No suitable driver found for jdbc
今天做了一个简单的登入页面功能,在调用数据库连接时,有一个小BUG,每次第一次登入时,都会报错:java.sql.SQLException: No suitable driver found for jdbc从字面意思理解,很简单,就是没有找到合适的驱动。但是很奇怪的是,我对调用数据库的类做单元测试时,并没有报错,但是部署到tomcat并做登入时,第一次总是报错。//先加载驱动Cl...
2020-03-23 09:17:18 505
原创 数据统计
Option ExplicitSub 总计()'汇总从2018年1月份至今的所有小试流程 '循环总表 Dim i, cntcheakY, cntcheakN, cntexam, ws1, str1, str2 i = 3 cntcheakY = 0 cntcheakN = 0 cntexam = 0 Set ws1 = Workshee...
2019-03-26 20:30:51 200
原创 小试流程项目管理一
Option ExplicitSub 添加小试流程() Dim i, j, ws1, ws2 '从第三行开始 i = 3 j = 2 '找到序号列中的空行,即找到添加文本的行号 Set ws1 = Worksheets("总表") While ws1.Cells(i, 1) <> "" i = i + ...
2019-03-22 21:57:39 703
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人