自定义博客皮肤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)
  • 资源 (2)
  • 收藏
  • 关注

原创 docker搭建mysql主从复制

【代码】docker搭建mysql主从复制。

2023-11-09 10:15:32 241

原创 docker搭建mysql环境

在3306端口后台启动,容器名称为mysql-master。

2023-11-08 11:32:08 265

原创 实体属性映射框架mapstruct

JAVA实体属性映射转换

2023-11-07 17:32:31 201

原创 Linux搭建redis环境

Linux搭建Redis环境。

2023-10-21 18:08:11 366

原创 设计模式之观察者模式

1. 观察者模式概述我们不断提到软件系统解耦的重要性,当减少依赖关系时,我们可以扩展、开发和测试不同的模块,而无需了解其他模块的实现,只需要知道它们实现的抽象。尽管如此,在实践中,模块是需要协同工作的,一个对象往往能够知道另一个对象的变化。例如某种商品的物价上涨时会导致部分商家高兴,而消费者会伤心。观察者模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,这种模式有时又被称为发布-订阅模式、模型视图模式。观察者模式的优点:降低了目

2022-03-15 17:41:13 3033

原创 设计模式之迭代器模式

1. 迭代器模式概念迭代器模式可能是JAVA中最广为人知的模式之一,JAVA程序员在使用集合时,并不需要关注其类型是List、Set还是其他的,因为它们的遍历都可以通过迭代器来完成。迭代器模式在客户访问类和聚合类之间插入,分离了聚合对象与其遍历行为,对客户也隐藏了其内部细节,满足单一职责原则和开闭原则。迭代器模式优点:访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。增加新的聚合类和迭代器类都很方便,无须修改原有代码。迭代器模式缺点:增加了类的个数,这

2022-03-14 09:47:40 1117

原创 设计模式之解释器模式

1. 解释器模式概念计算机用来解释句子或表达式,类似在软件开发过程中,有时需要处理一系列多次重复出现的问题。如果将这类问题归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用编译原理中的解释器模式来实现了。解释器模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解释器来解释语言中的句子,即用编译语言的方式来分析应用中的实例。解释器模式优点:扩展性好,由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。容易实现,在语法树

2022-03-10 14:17:05 834

原创 设计模式之命令模式

1. 命令模式概念命令模式的定义是将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。在面向对象编程当中,一个很重要的事情是设计使得代码松耦合。命令模式在生活中的体现就是遥控器和电视,遥控器是命令的触发者会给电视这个命令接受者发送一条换台命令,电视才会去执行这个换台命令,遥控器和电视就是通过命令关联起来,当遥控器坏了,我们不必去直接更换电视这个接受者,我们只需要更换命令的触发者遥控器即可。命令模式优

2022-03-05 16:55:56 374 1

原创 设计模式之责任链模式

1. 责任链模式计算机软件是用来处理信息的,有多种不同的方式来组织和处理信息。当我们讨论面向对象编程时,应该赋予一个类单一的职责,从而使得类容易维护和扩展。设想一个场景,需要对一批从客户端来的数据进行多种不同的操作,我们会使用多个不同的类负责不同的操作,而不是使用一个类集成所有的操作,这样做能够让代码松耦合且简洁。这些类被称为处理器,第一个处理器会接收请求,如果它需要执行操作则会进行一次数据处理,如果不需要则会将请求传递给第二个处理器,依次类推直至走完整个链,这就是责任链模式。责任链模式优点:降低

2022-03-04 17:08:14 399

原创 设计模式之原型模式

1. 原型模式原型模式用来解决对象的创建问题,它是指用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的对象。其类图结构如下:抽象原型类(Prototype):声明了clone()方法的接口或基类,其中clone()方法必须由派生类实现。具体原型类(ConcretePrototype):用于实现或扩展clone()方法的类,clone()方法必须要实现。原型模式的优点:JAVA自带的原型模式基于内存二进制流的复制,在性能上比直接new一个对象更加优良。原型模式

2022-03-03 10:22:34 563 1

原创 设计模式之建造者模式

1. 建造者模式对象的创建往往是复杂的,在软件开发过程中有时需要创建一个复杂的对象,这个复杂的对象通常由多个子部件按一定的步骤组合而成。比如房子有各式各样的,但建造方法的步骤大同小异都是先搭建地基、再砌墙、最后封盖屋顶。建造者模式旨在将一个复杂对象的构造与它的表示分离开来,使同样的构建过程可以创建不同的表示,建造者的角色如下:产品:需要构建的对象,是具有不同表现形式的复杂或复合对象。抽象建造者:用于声明构建产品类组成部分的抽象类或接口。具体建造者:用于实现抽象建造者,实现具体的建造过程,生成完整产

2022-03-01 16:48:17 252

原创 SpringBoot之自定义场景启动器

1. 场景启动器Spring Boot的自动配置原理中不可或缺的就是那些已经定义好的场景启动器,只要导入某个场景启动器我们的应用就拥有了该场景下的一些核心Bean,有利于快速开发,比如引入Web的场景启动器:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></d

2022-02-26 18:42:10 2081 1

原创 SpringBoot之自动装配原理

1. 自动装配的使用Spring Boot的核心理念是简化Spring应用的搭建和开发过程,提出了约定大于配置和自动装配的思想。开发Spring项目通常要配置xml文件,当项目变得复杂的时候,xml的配置文件也将变得极其复杂。为了解决这个问题,我们将一些常用的通用的配置先配置好,要用的时候直接装上去,不用的时候卸下来,这些就是Spring Boot框架在Spring框架的基础上要解决的问题。Spring Boot的自动装配得益于有一批优秀的程序员写好了很多场景启动器(starter),比如web场景

2022-02-24 17:28:22 17546 1

原创 算法之大数相乘

1. 大数相乘问题计算:999999999999999999999999999999 x 999999999999999999999999999999 = ?(30个9乘以30个9)在JAVA语言中表示数字的类型有byte、short、int、long,这些类型都有其表示的数据范围,超过了能表示的范围就会产生数据溢出,比如:// 输出int能表示的最大数加1后的数System.out.println(Integer.MAX_VALUE + 1);int能表示的最大数是2147483647,但

2022-02-22 15:28:07 2280

原创 设计模式之工厂模式

1. 工厂模式在面向对象编程中,继承是一个基本概念,它与多态共同构成了类的父子关系。Phone对象可以被当做Product对象处理,Computer对象也可以被当做Product对象处理。一方面,这种抽象方式使得同一段代码能为Phone对象和Computer对象提供同样的处理操作,使代码更加简洁。另一方面,如果要扩展新的Product对象类型,比如Watch,不再需要修改代码,只需添加新的类即可。在大多数情况下,最棘手的问题往往是对象的创建。在面向对象编程中,每个对象都使用特定的构造器进行实例化操

2022-02-14 17:57:21 408

原创 设计模式之设计原则

1. 设计原则​ 无论你是在大型团队中工作还是在单人项目中工作,软件开发都不仅仅是编写代码。构建应用程序的方式对软件应用程序的成败有很大的影响。当我们谈论一个成功的软件应用程序时,不仅讨论应用程序如何执行它应该做的事情,还讨论在开发它时付出了多少努力,以及它是否易于测试和维护。如果没有以正确的方式完成,那么暴涨的开发成本将会导致没人能接受这个应用程序。​ 创建软件应用程序是为了满足不断变化和发展的需求。一个成功的应用程序还应该提供一种简单的方法来扩展它以满足不断变化的期望。幸运的是,我们不是第一个遇

2022-02-11 11:22:52 670

原创 设计模式之单例模式

1. 单例模式自JAVA语言推广使用以来,单例模式(singleton pattern)就是最常用的设计模式,它具有易于理解、使用简便等特点。有时单例模式会过度使用或在不合适的场景下使用,造成弊大于利的后果。因此单例模式有时被认为是一种反模式。但是很多情况下单例模式是不可或缺的。单例模式顾名思义,用来保证一个对象只能创建一个实例。除此之外,它还提供了对实例的全局访问方法,如图所示:2. 模式实现单例模式的实现非常简单,只由单个类组成。为确保单例实例的唯一性,所有的单例构造器都要被声明为私有的,

2022-02-09 16:55:15 479 1

原创 SPI思想应用之拔插式插件

1. 插件简介插件在百度百科中解释为:​ 插件是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。1.1 插件应用插件已经不再是什么新鲜的事物了,在很多地方都可以看到各种各样的插件,特别是那些业界有名的软件系统。比如我们熟悉的谷歌浏

2022-02-08 15:16:30 1025

原创 JAVA中的SPI思想

1. SPI介绍SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,其意义在于为某个接口寻找服务的实现,主要应用在框架中用来寻找组件,提高扩展性。汽车制造是一个比较繁琐的过程,通常的手段是先规定汽车各个零部件的生产规格,各个零部件厂商按照这种规则去生产合格的零部件。汽车生产商挑选合适的零部件去组装以出产汽车。汽车某个零部件损坏也不用废弃掉整个汽车,只需要更换组件即可,这种模式很类似Spring的整合思想。SPI就是用来怎么去寻找汽车零

2022-01-28 14:02:51 1464

原创 构建Spring源码阅读环境

1. 基础环境名称说明JDK 1.8.0_144JDK版本IntelliJ IDEA 2020.1IDEA版本Gradle-4.10.3Gradle版本spring-framework-5.1.xSpring源码版本2. 准备前提JDK环境IntelliJ IDEA环境Gradle环境2.1 搭建JDK环境参考:https://blog.csdn.net/qq_43625140/article/details/1088711332.2

2022-01-22 22:23:44 807

原创 多线程并行计算案例

1. 提出问题计算 1 + 2 + 3 + 4 + … + 997 + 998 + 999+ 1000 = ?2. 单线程计算采用的单线程进行累加求和,先算1 + 2 = 3 再算 3 + 3 = 6 再算 6 + 4 = 10,依次类推直至加到1000,其中要累加999次,假设每次累加至少耗时1ms,这样计算则至少需要999ms。2.1 代码实现public static void test01() throws InterruptedException{ long sum = 0;

2021-12-22 17:02:15 2144

原创 SpringBoot整合MyBatis-Plus配置多数据源

1. 业务需求在开发中经常遇到主从模式或者业务比较复杂需要连接不同的分库来完成业务时需要使用到多数据源。在一个应用程序中需要访问主库又要访问从库,Spring Boot整合MyBatis-plus如何实现多数据源?2. 数据库准备新建两个数据库,zw_test1和zw_test2,在两个数据库中分别建表sys_user,并添加不同的记录,比如zw_test1库中的sys_user表存储周杰伦的数据,zw_test2库的sys_user表中存储刘德华的数据。2.1 建表语句# 建表CR

2021-06-12 22:53:27 1214 5

原创 Linux搭建mysql环境

1.MySQL的安装下载链接:https://download.csdn.net/download/qq_43625140/13799700# 显示安装包[root@zhouwei home]# lsmysql-5.6.48-linux-glibc2.12-x86_64.tar.gz# 解压安装包[root@zhouwei home]# tar -zxvf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz# 删除安装包[root@zhouwei h

2020-12-26 15:24:00 728

原创 Linux搭建jdk环境

1.JDK的下载(1)Oracle官网地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html(2)华为开源镜像地址:https://mirrors.huaweicloud.com/java/jdk/2. JDK的安装# 显示安装包[root@zhouwei home]# lsjdk-8u161-linux-x64.tar.gz# 解压安转包[root@zhouwei home]#

2020-12-25 21:50:05 123

原创 04-JDBC模板工具

1. JDBC工具类前面讲过数据库连接池帮传统JDBC解决了连接的创建和管理方面的问题,有兴趣的可以查看连接池技术这篇文章。然而JDBC编程还存在可以继续加工封装的部分,来分析一段JDBC查询数据代码:// 定义sql语句String sql = "select pk_id, username, password, sex, birthday from user";// 获取数据库操作对象Statement statement = connection.createStatement();

2020-12-05 22:33:26 151

原创 03-连接池技术

1. 连接池技术连接池是一个创建和管理连接的缓冲池技术,它不仅仅只限于管理数据库访问连接,也可以管理其他连接资源。连接池技术是创建和管理连接的技术,因此它主要关注的重点在于如何创建连接以及如何管理连接。1.1 JDBC弊端JDBC在操作数据库上是很有条理的,但是也存在一定的问题,来看看JDBC访问数据库的步骤:核心业务都是在增删改查的操作上面,但是每个操作都是建立在有连接的基础上,只有拿到了连接资源才能够增删改查,JDBC中关键的第一步就是得到连接资源。连接资源往往是需要用的时候就去获取,不用

2020-11-29 17:41:50 330 2

原创 02-JDBC事务支持

1. 数据库事务1.1 是什么什么是事务,可以阅读我写的有关数据库 事务 这篇文章。从事务的四大特性来说,事务机制是为了保证数据的一致性,事务是最小的执行单元,要么全部成功要么全部不成功。1.2 为什么众所周知,SQL语言是一种操作数据库的非过程化语言,无疑它的功能是很强大的。比如一个小小的select语法结构就可以查询到我们想要的任何数据,多么简洁方便。然而业务是复杂的,一条SQL并不能满足我们的需求,往往一个业务的执行需要多条SQL语句的配合使用来完成。一个写操作会改变数据库的数据,多个写操

2020-11-24 16:02:47 1991 6

原创 01-JDBC连接数据库技术

1. JDBC技术1.1 数据库驱动在我们的Java应用程序中不可避免的要和数据库打交道,通常使用较多的数据库是关系型数据库,比如Oracle数据库、MySQL数据库以及SQLServer数据库。针对不同的数据库各个数据库厂商都有自己的数据库驱动,Java程序员想要连接数据库必须学会如何使用这些数据库驱动的API。那么问题就来了,如果我要连接Oracle数据库就需要会使用Oracle数据库的驱动,要想连接MySQL数据库就需要学会使用MySQL数据库的驱动。都是连接关系型数据库却要学习各个关系型数据

2020-11-21 21:42:09 242 1

原创 日志使用简介

1. 日志概述对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离开不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。1.1 日志框架Log4j: Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。Log4j 2: Apache Log4j 2是apache开发的

2020-11-06 14:56:14 935

原创 Swagger入门

1. Swagger简介1.1 OAS​ OAS(OpenAPI Specification 简称OAS)即开放应用程序接口规范,是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程。目前V3.0版本的OpenAPI规范,也就是Swagger 2.0规范已经发布并开源在GitHub上。即Swagger 2.0是基于 The Apache License, Version 2.0许可的OAS 3.0实现。1.2 Swagger官网

2020-10-24 16:20:58 260

原创 Linux搭建RabbitMQ环境

1.安装包的下载RabbitMQ采用Erlang语言开发,因此在安装RabbitMQ之前需要安装Erlang环境。地址:https://www.rabbitmq.com/download.html进入RabbitMQ官网,找到CentOS连接找到下载连接选择对应的版本包2. 安装Erlang环境将下载文件上传到服务器根据命令开始安装Erlang#解压缩erlang安装包[root@zhouwei resources]# tar -zxvf otp_src_19

2020-10-18 16:44:36 149 1

原创 Socket通信

1. Socket简介​ Socket即套接字,它是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上连应用进程,下连网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口 。1.1 工作流程​ 要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,我们称之为 Client Socket,另一个运行于服务器端,我们称之为 Server So

2020-10-15 09:17:12 2362

原创 代理模式

1. 模式简介​ 代理模式是程序设计中的一种设计模式。为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。作用:对指定类的特定方法实现增强分类:静态代理和动态代理1.1 相关概念规范:对应于java中的接口,所谓规范就是一组约定,它规定我们能够干什么。委托:本来需要我自己做的事,现在交给代理类来完成。代理:接受委

2020-10-12 09:10:38 155

原创 MongoDB使用笔记

1. MongoDB简介​ MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。1.1 特点MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的

2020-09-30 09:28:56 200 1

原创 JDK的安装、卸载与配置

1. JDK的描述​ JDK是Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。2. JDK的卸载在控制面板中打开程序和功能进行JDK卸载3. JDK的安装打开安装程序选择JDK安装目录等待安装选择jre安装路径等待安装安装完成4. JDK的配置打开系统面板打开高级系统设置打开环境

2020-09-29 16:41:53 140

原创 Redis使用笔记

1. Redis简介​ Redis(Remote Dictionary Server - 远程字典服务)是一个由Salvatore Sanfilippo写的key - value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、key - value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值可以是 字符串、哈希、 列表、集合和有序集合等类型。1.1 特点Redis支持数据的持久化,可以将内存中的数据保存在磁盘

2020-09-28 09:17:56 126 1

原创 FastJSON使用笔记

1. 简介​ fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。源码地址:https://github.com/alibaba/fastjson依赖坐标<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifa

2020-09-22 15:35:53 230

原创 IntelliJ IDEA的安装与配置

1. InteliJ IDEA的卸载在控制面板中打开程序和功能选中要卸载的IDEA右键单击卸载勾选删除缓存和历史勾选删除设置和插件等待程序卸载卸载完成2. InteliJ IDEA的安装进入IDEA安装选择安装位置创建桌面快捷方式添加快速启动目录等待安装安装完成3. InteliJ IDEA的初启动不导入已有配置选择主题风格是否安装插件(这里不安装)开始使用IDEA进入IDEA界面

2020-09-20 12:32:56 2156

原创 位运算

1. 位运算​ 位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来。所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效的。在简单的低成本处理器上,通常位运算比除法快得多,比乘法快几倍,有时比加法快得多。虽然由于较长的指令流水线和其他架构设计选择,现代处理器通常执行加法和乘法的速度与位运算一样快,但由于资源使用减少,位运算通常会使用较少的功率,所以在一些Java底层算法中,巧妙的使用位运算可以大

2020-09-18 12:17:17 1001

原创 单例Bean工厂的实现

1. 准备数据库环境# 新建用户表CREATE TABLE IF NOT EXISTS `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(32) NOT NULL COMMENT '用户名称', `birthday` DATETIME DEFAULT NULL COMMENT '生日', `sex` CHAR(1) DEFAULT NULL COMMENT '性别', `address` VARCHAR

2020-09-11 17:11:27 214

Linux搭建MySQL环境安装包

Linux搭建MySQL环境安装包

2020-12-26

空空如也

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

TA关注的人

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