自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 dom深拷贝

dom深拷贝

2022-09-21 23:03:40 563 1

原创 grallvm将class/maven打包成exe

grallvm将class/maven打包成exe

2022-09-09 15:21:44 761

转载 centOs7安装MySql

https://blog.csdn.net/qq_45797625/article/details/117854739

2022-04-11 11:21:54 126

原创 二、组件协作类设计模式

组件协作类设计模式1 分类含义2 模板方法模式2.1 动机2.2 场景2.2.1实现方式一(客户端控制主流程)2.2.2 实现方式二(模板方法模式)2.3 概念2.4 要点总结3 策略模式3.1 动机3.2 场景3.2.1 抽象策略3.2.2 中国税法实现3.2.3 美国税法实现3.2.4 客户端调用3.3 什么是复用【题外话】3.4 模式定义3.5 要点总结1 分类含义现代软件专业分工之后的第一个结果是框架与应用程序的划分,组件协作模式通过晚期绑定,来实现框架与应用之间的松耦合,组件协作模式就是常用于

2022-03-31 15:20:24 286

原创 六、工厂方法模式

1.动机在软件系统中,经常面临着某个对象的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是他却有着稳定的接口。如何应对这种变化,如何保证依赖该对象的对象不随着需求的变化而变化2.实现(1)车接口我们要实现的类型package com.example.demo.factory.method;public interface Car { /** * 能跑 */ void run(); /** * 能停 */

2022-03-26 23:12:55 173

原创 五、模板方法模式

1、动机在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架于应用之间的关系)需求无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的的变化或者晚期实现的需求?2、场景如某个业务需要步骤一、步骤二、步骤三、步骤四、步骤五 五个步骤完成,但是步骤一三四是固定不会变化的,步骤二五有多种变化方式。(1)实现方式一方案一:接口(或抽象类)定义步骤一二三四五的方法,并实现一三四的方法,方法的实现和

2022-03-26 21:22:56 209

原创 四、建造者模式

1.动机在软件系统中,存在某些复杂对象的构建工作,其通常由各个部分的子对象用一定的算法组成。由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法确相对稳定,如何提供一种封装离机制隔离各个部分的变化,从而保持系统中稳定构建算法不随着需求改变而改变?2.实现(1)要构建的产品package com.example.demo.builder;public class House { private String floor; private S

2022-03-26 20:30:46 211

原创 三、抽象工厂模式

1.动机软件系统常常面临一系列相互依赖的对象的创建工作,同时,由于需求的变化,往往会有从创建一系列变化到创建另一系列对象的需求。如何应对这种变化,提供一种封装机制来避免客户程序和这种“多系列具体对象的创建工作”的紧耦合。2.实现假设现在要实现一个ORM,此时工厂需要获得DB的驱动和SQL实现两个方法,因为驱动和SQL实现往往是一体的,假如生成了MySQL的驱动,但是搭配了Oracle的SQL生成,那必然是不行的,在这个场景中,满足一系列相互依赖的对象这个要求。(1)抽象SQL、驱动、工厂定义:

2022-03-23 16:59:54 1374

原创 二、单例模式

1.动机在软件系统中,经常有些特殊的类,必须保证他们在系统中只存在一个实例,才能保证他们逻辑的正确性或者良好的性能,如何绕过常规的构造器,提供一种机制来保证一个类只有一种实例。这里需要注意的是,类设计者需要揽起这种责任,而不是将问题抛给使用者。2.单线程版实现package com.example.demo.singleton;import java.util.Objects;public class Singleton { private static Singleton s

2022-03-14 18:14:22 741

原创 一、设计模式前置知识

1.什么是对象?对象是一系列拥有某种指定职责的用户接口。指定职责是指这个对象指负责他份内的事情,用户接口是指他通过对外暴露一些行为的接口来完成他所需要完成的职责。2.什么是面向对象?面向对象就是在程序设计与编码过程种,不再关注过程细节的控制,而是关注该系统、模块、功能需要哪些角色,这些角色需要提供什么样的行为,通过角色之间的协作完成业务功能,这样的方式也是社会解决复杂问题的一般经验。3.面向对象相较于面向过程有什么好处?程序设计时最大的痛点是**【变化】**”,不断变化的业务、技术、平台使得代码变

2022-03-11 18:02:45 163

原创 ThreadLocal两种用法示例

package com.xsl.thread;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadLocalTest { pu

2022-01-05 11:54:32 463

原创 微服务学习笔记

这里写目录标题前置思考与理解对什么是微服务的思考SOA与微服务的区别SOA架构特点微服务架构特点主要区别微服务的优点微服务缺点ZookeeperZookeeper节点(Znode)类型Watcher机制Zookeeper应用场景分布式锁Master选举注册中心Dubbo对通信方式的支持Dubbo集群容错模式负载均衡策略SPI扩展点Java SPIDubbo SPIDubbo集成SpringBoot的原理Nacos部署单机版部署编译包安装源码包安装Nacos高可用部署环境要求配置文件配置MySql数据库启动n

2021-10-05 10:31:01 494

原创 docker安装

docker安装下载安装脚本curl -fsSL get.docker.com -o get-docker.sh这个下载下来的脚本我留一份在这里#!/bin/shset -e# Docker CE for Linux installation script## See https://docs.docker.com/engine/install/ for the installation steps.## This script is meant for quick & eas

2021-09-28 16:28:33 454

原创 nacos单机启动

一、nacos下载在github下载nacos最新稳定版的编译版本,nacos地址:https://github.com/alibaba/nacos/releases本次下载的为最新稳定版本nacos 2.0.2二、整合mysql1.建库在你的数据库建立nacos_config数据库,编码格式选择utf8,排序规则为utf8_estonian_ci ,创建数据库执行nacos\conf\nacos-mysql.sql的sql文件初始化数据库2.配置文件修改在conf/applicatio

2021-07-12 15:27:03 4506

原创 不可重复读与幻读的区别

不可重复读 主要是说多次读取一条记录, 发现该记录中某些列值被修改过。而幻读 主要是说多次读取一个范围内的记录(包括直接查询所有记录结果或者做聚合统计), 发现结果不一致(标准档案一般指记录增多, 记录的减少应该也算是幻读)。...

2021-05-27 13:45:31 129

原创 GOF 23种常用设计模式

设计模式一、创建型模式1.原型模式动机UML类图代码实现2.单例模式动机UML类图代码实现开发实例一、创建型模式1.原型模式动机在软件系统种,经常存在着某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定的一致的接口如何应对变化?如何向客户端隔离出这些易变的对象,从而使得依赖这些易变对象的客户程序不会随着需求的变化而变化?UML类图代码实现import java.io.*;public abstract class Prototype

2021-04-26 13:15:42 807 1

原创 四、装饰器模式

一、动机在某些情况下我们会过度使用继承来扩展对象的功能,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多,各种子类的组合会导致子类的膨胀如何使对象功能的扩展能根据需要的动态来实现?同时避免扩展功能的增多带来的子类膨胀问题?从而使得任何功能扩展变化所导致的影响最低?二、代码案例演示public class DecoratorPattern { interface Stream{ /** * 读 */

2021-04-13 02:04:12 104

原创 三、观察者模式

一、动机在软件构建过程中,我们需要为某些对象建立一种通知依赖关系,当一个对象的状态发生改变,所有的依赖对象都将得到通知,如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系,从而实现软件体系结构的松耦合二、代码实现public class ObserverPattern { /** * 观察者接口 */ interface Observer{ boolean notif

2021-04-13 01:38:40 66

原创 二、策略模式

一、动机在软件构建过程中,某些使用的算法可能有多种多样且不断变化,如果将这些算法都编码在对象中,将会使得对象异常的复杂,而且有时候支持不适用的算法也是一种负担。如何在运行时根据需要透明的更改对象的算法?将算法与对象本身解耦,从而避免上述问题?二、场景计算税收时,我们可能要支持不同的税收方案,且这样的税收方案容易发生改变且容易扩展。1、实现方式一方案一:通过if-else语句或switch语句来判断分支,选择执行不一样的策略public class Strategy { enu

2021-04-13 01:17:15 70

原创 五、模板方法模式

一、动机在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架于应用之间的关系)需求无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的的变化或者晚期实现的需求?二、场景如某个业务需要步骤一、步骤二、步骤三、步骤四、步骤五 五个步骤完成,但是步骤一三四是固定不会变化的,步骤二五有多种变化方式。1、实现方式一方案一:接口(或抽象类)定义步骤一二三四五的方法,并实现一三四的方法,方法的实现和步

2021-04-13 00:46:43 63

原创 centOs7 sftp文件服务器搭建

该脚本执行centO环境:CentOS-7-x86_64-Minimal-2009groupadd sftpuseradd -g sftp -s /bin/false ahsftpecho 'ahsftp' | passwd --stdin ahsftpmkdir -p /data/sftp/ahsftpusermod -d /data/sftp/ahsftp ahsftp##将 Subsystem sftp /usr/libexec/openssh/sftp-server##替换成 Su

2021-04-07 09:51:42 97

原创 SpringBoot Stater技术

一、背景Springboot分模块开发场景下,A模块启动时只会扫面A模块主类平级及子包的文件,将需要被spring管理的bean置入spring容器中,但依赖的B模块中注解了诸如@Component、@Configuration注解的bean并不会被扫描到。这种场景下有两种方案:在A模块主类配置B模块包扫描(不够优雅、引入的jar多的情况…、无法做到对开发无感等)B模块使用stater技术,使A模块无需声明即可被扫描二、stater技术编写Starter非常简单,与编写一个普通的Spring

2021-04-01 11:52:21 448

原创 centOs7部署docker

一.docker安装1. 卸载旧版本dockeryum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docke

2021-03-26 13:08:35 216

原创 redis安装文档

资源下载地址:https://pan.baidu.com/s/1lRnn3EvUvn1BFMJxkq2_GA 提取码:ffqx修改nginx.conf配置文件可以直接修改nginx.conf文件或者用你自己的配置文件代替,该配置文件仅修改了daemonize参数为yes一、创建安装目录mkdir -p redis二、上传安装文件三、执行脚本#修改脚本执行权限chmod 754 ~/redis/redis.sh#执行脚本~/redis/redis.sh四、验证是否安装成功p.

2021-03-01 14:02:43 148

原创 nginx安装文档

资源下载地址:https://pan.baidu.com/s/1_s8_rdCTWTuLqyrlISR-ew 提取码:dbi81.需要改nginx.conf文件,可以改好后再上传替换当前nginx.conf文件,也可以直接修改该nginx.conf文件一、创建安装包文件夹#创建nginx安装目录mkdir -p ~/nginx二、上传安装包​ 上传nginx-1.14.0、配置文件、nginx.service、nginx.sh与package.tar.gz包至刚创建的~/nginx目录下.

2021-03-01 13:56:53 67

原创 jdk1.8安装文档

mkdir -p /usr/java/jdk8 cd /usr/java/jdk8#####将jdk-8u221-linux-x64.tar.gz上传至服务器 /usr/java/jdk8 目录下#jdk百度网盘地址 https://pan.baidu.com/s/1TD4PXM_Za6OC_ruMGb0gYg# 提取码 eof6tar -zxvf jdk-8u221-linux-x64.tar.gz #修改目录名称mv jdk1.8.0_221/ jdk1.8#配置环境变量v

2021-02-24 17:52:14 120

原创 Oracle 19c 安装文档

一 注意事项最好使用Centos7系统, 本教程基于CentOS-7-x86_64-Minimal-2009所写服务器内存不要低于2G, 虽然1G可以跑Oracle 但是比较卡默认系统内核参数不适用与运行Oracle 建议修改内核参数如不能访问请确保防火墙是否放行默认端口 1521, 不知道的话就直接关闭防火墙systemctl stop firewalld.service # 关闭防火墙systemctl disable firewalld.service # 禁用自

2021-02-04 12:26:07 483

原创 maven安装jar包到本地 repository

#maven安装jar包到本地 repositorymvn install:install-file -Dfile=D:\scaffold-1.0.2-releases.jar -DgroupId=com.scaffold -DartifactId=scaffold -Dversion=1.0.2-releases(版本) -Dpackaging=jar#maven导出项目依赖的jar包mvn dependency:copy-dependencies -DoutputDirectory=D:/lib

2021-01-28 13:16:10 149

原创 JdbcTemplate插入并返回主键

public static int getMemberId(JdbcTemplate jdbcTemplate, int orgId) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(con -> { String sql="INSERT INTO t_g_primarykey(ord_id,create_time,day_time) VALUES(?,?,?)";

2021-01-28 13:15:25 463

原创 mybatis-plus代码生成器

这里只是记录一下mybatis-plus代码生成器,需要学习mybatis-plus的,可以移步mybatis-plus官网,mybatis-plus官网是中文的比较容易理解,用语也并不晦涩,这里就不再重复造轮子了1.引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>

2021-01-28 13:14:41 107

原创 Graphics2D类基本使用

Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供、坐标转换、颜色管理以及文字布局等更精确的控制。一、绘图属性Graphics2D定义了几种方法,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;以及设定填充图形的颜色和图案等。图形状态属性用特定的对象存储。1. stroke属性stroke属性控制线条的宽度、笔形样式、

2021-01-28 13:06:35 16009 1

原创 spring获取ioc实例

1、BeanFactoryAware接口实现了BeanFactoryAware接口的类,能够获取到BeanFactory对象,从而可以通过bean工厂获取ioc容器中的实例,BeanFactory也是Spring容器最基本的接口。他负责配置、创建、管理ioc容器中的Bean。package com.business.platform.spring;import org.springframework.beans.BeansException;import org.springframework.

2021-01-28 13:01:36 321

原创 springboot读取外部配置文件

无意中看见公司的项目sringboot配置文件是放在jar包并级目录的,而我自己部署springboot项目就是直接使用的项目打出的jar包内的配置文件,虽然能打开jar修改配置文件或者打包前直接改好配置文件再打包,但是当开发和部署的人员分职之后,会比较的麻烦。所以探索了一下外部配置文件的方式springboot读取配置文件的方式优先级如下:在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下。直接把配置文件放到jar包的同级目录。在classpath下建一个confi

2021-01-28 13:00:27 451

原创 数据批量写入

数据批量写入1.Statement 写入@Testpublic void testInsert2() { Connection conn = null; PreparedStatement ps = null; try { // 关闭自动提交 conn.setAutoCommit(false); long start = System.currentTimeMillis(); // 1.获取连接 conn

2021-01-28 12:49:39 249

原创 NIO使用指南

NIO使用指南序言一、简介1、NIO和IO的主要区别1.1、面向流与面向缓冲1.2、阻塞与非阻塞IO1.3、选择器(Selectors)二、缓冲区与管道1、缓冲区(Buffer)1.1、缓冲区的基本属性1.2、Buffer的常用方法1.3、buffer示例使用1.4、直接缓冲区与非直接缓冲区序言主要是对java.nio包下的相关开发工具做一个简单的学习笔记,并不会太多深入的探讨。一、简介NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要

2020-08-14 12:29:27 441

原创 有向图深拷贝

方式一,深度优先遍历算法拷贝:class Solution { private HashMap <Node, Node> visited = new HashMap <> (); public Node cloneGraph(Node node) { if (node == null) { return node; } // 如果该节点已经被访问过了,则直接从哈希表中取出对应的克隆节

2020-08-12 17:45:29 398

原创 git重置用户git账号金与密码

肖生亮 7-13 15:08:47git config --system --unset credential.helper肖生亮 7-13 15:09:02git config --global credential.helper store肖生亮 7-13 15:09:14git pull然后就会要求输入用户名(邮箱)+密码,git就会保存了

2020-08-06 16:44:01 501

原创 jsonUtils

package com.Dingyu.util;import java.util.List;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.ObjectMapper;/** * */public class JsonUtils { // 定

2020-08-05 20:21:59 130

原创 JUC并发工具包使用指南

JUC并发工具包使用指南序言一、锁与原子类型1、可重用锁 Lock1.2、Lock、synchronized比较1.3 、Lock 的方法1.4、锁的例子2、读写锁 ReadWriteLock2.1、ReadWriteLock 锁规则2.2、ReadWriteLock 实现2.3、ReadWriteLock 代码示例3、原子性类型3.1、AtomicBoolean3.2、原子性整型 AtomicInteger3.3、原子性长整型 AtomicLong3.4、原子性引用型 AtomicReference二、线

2020-07-31 18:09:28 928

原创 gzip压缩解压缩

package com.raise.raisestudy.zip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.Closeable;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExce

2020-07-29 10:17:39 550

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除