自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速排序【排序算法】

目录1.理解2.动态可视化3.静态示例4.实现5.是否是稳定的1.理解快速排序是冒泡排序的变种,提高了效率。2.动态可视化https://visualgo.net/zh/sorting3.静态示例4.实现public class QuickSort { public static void quickSort(int[] arr,int startIndex,int endIndex){ // ...

2021-12-16 21:04:08 156

原创 归并排序【排序算法】

1.理解通过递归的思想,进行“分而治之”,然后再合并到上一层。2.动态可视化https://visualgo.net/zh/sorting3.静态图例4.实现 public static int[] sort(int[] array) { ...

2021-12-16 20:56:39 127

原创 希尔排序【排序算法】

1.理解希尔排序可以理解成是插入排序的变种,在排序过程中往往会出现与需要排序相反的排序型,在插入排序的时候,要唯一很多次,很浪费性能。2.动态可视化演示暂无3.静态图示4.实现...

2021-12-16 20:52:07 139

原创 插入排序【排序算法】

目录1.理解2.动态可视化展示3.静态图例4.实现5.算法稳定性1.理解插入排序本质上和选择排序差不多,选择选择最小值插入进去,插入排序是按照顺序出入,在插入之前先寻找合适的插入位置。2.动态可视化展示https://visualgo.net/zh/sorting3.静态图例4.实现public static int[] sort(int[] array) {​ if (array.length == 0)...

2021-12-16 20:46:45 103

原创 选择排序【排序算法】

1.理解选择当前指针之后的数据(最大值或者最小值)放到该指针所指向的位置即可。2.动态可视话演示https://visualgo.net/zh/sorting3.静态图示4.实现public static int[] sort(int[] array) {​ if (array.length == 0) {​ return array; ​ }​ for (int i = 0; i &...

2021-12-16 20:43:29 74

原创 冒泡排序【排序算法】

目录1.理解2.动态图示例3.静态图示例4.实现1.理解冒泡算法,原理是通过相邻两个进行比较,把大值或者小值往统一的方向变更,这样就能确认出该数组的最左面或者最右面是最大值或者是最小值。2.动态图示例https://visualgo.net/zh/sorting3.静态图示例4.实现public static int[] sort(int[] array) { ​ if (array.length == 0...

2021-12-16 20:39:57 62

原创 建造者模式【创建型模式】

目录1.特点2.模式与结构2.1.模式2.2.结构图3.实现3.1.创建产品3.2.抽象建造者3.3.建造者实现3.4.指挥者3.5.客户端4.应用场景1.特点创建抽象类的构造器,之后进行实现抽象构造器(可以实现多个构造器),然后把构造器交由指挥者进行指挥(Directo)创建出想要的产品。2.模式与结构2.1.模式建造者(Builder)模式的主要角色如下。产品角色(Product):它是包含多个组成部件的复杂对象,由...

2021-12-15 23:10:14 261

原创 简单工厂模式【创建型模型】

目录1.特点2.模型与结构2.1.模型2.2.结构图3.代码实现3.1.产品抽象3.2.产品实现3.3.产品的构建4.应用场景1.特点在一个类中定义不同类型的不同实现,通过入参进行判断,生产出来的产品是什么。2.模型与结构2.1.模型简单工厂模式的主要角色如下:简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。抽象产品(Product

2021-12-15 22:59:54 781

原创 抽象工厂【创建者模型】

目录1.特点2.模式与结构2.1.模式2.2.结构图3.实现3.1.动物类抽象3.2.动物类实现类3.3.植物类抽象类3.4.植物类实现类3.5.农场类抽象类3.6.农场类实现类4.应用场景1.特点抽象工厂是工厂模式的升级版本,工厂模式只生产一个等级的产品,而抽象类可以生成多个等级的产品。2.模式与结构2.1.模式抽象工厂模式的主要角色如下抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个...

2021-12-13 11:30:38 95

原创 工厂模式【创建型模式】

目录1.特点2.模式与结构2.1.模式2.2.结构3.实现3.1.产品的抽象3.2.产品的具体实现3.3.工厂抽象类3.4.工厂类实现类4.应用场景1.特点工厂模式是简单工厂的升级版本,在简单工厂模式中,把所有的创建细节交给了简单工厂,不符合开闭原则(在新增产品的时候需要对工厂进行修改),所以引进了简单工厂类,把产品和工厂进行抽象出来,只有那个产品才知道使用那个工厂进行加工。2.模式与结构2.1.模式工厂方法模式的主要角色如下...

2021-12-13 09:48:23 66

原创 原型模式【创建型模式】

目录1.特点2.模型与结构2.1.模型2.2.结构图3.实现3.1.深克隆3.2.浅克隆4.应用场景1.特点实在原有对象的基础上进行复制操作。克隆的实现都需要继承Cloneable,重写clone方法。克隆还分为深克隆和浅克隆两种类型。2.模型与结构2.1.模型原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现接口具体访问类:实现抽象原型类的clone()方法,它是可被复制的对象...

2021-12-12 15:44:20 259

原创 单例模式【创建型模式】

目录1.特点2.模式与结构2.1.结构图3.实现3.1.懒汉模式3.2.饿汉模式4.应用场景1.特点只有一个对象存在,懒汉模式和饿汉模式的区别是是否在加载信息的时候就创建对象。2.模式与结构2.1.结构图3.实现3.1.懒汉模式public class LazySingleton { private static volatile LazySingleton instance = null; //保证 in

2021-12-12 13:32:54 1049

原创 二叉搜索树的简单实现

/** * 树节点属性的定义 * @author Webster */public class TreeNode { //数据 int data; //左孩子 TreeNode leftChild; //右孩子 TreeNode rightChild; TreeNode(int data){ this.data =data; }}/** * @author Webster */public class .

2021-12-12 13:24:24 272

原创 队列的简单实现

队列的简单实现package edu.wan.Test03;/** * @Auther: Webster * @Date: 2021/6/19 07:07 * @Description: */public class QueueTest { //存储的数据 private int[] array; // 队头指针 private int front; //队尾指针 private int rear; public QueueT

2021-06-19 07:36:37 94

原创 链表的简单实现

package edu.wan.Test02;/** * @Auther: Webster * @Date: 2021/6/17 06:36 * @Description: */public class LinkedTest { //头指针节点 private Node head; //尾指针节点 private Node lase; //链表的实际长度 private int size; /** * @Author We.

2021-06-17 23:13:16 107 1

原创 数组简单的实现

package edu.wan.Test01;/** * @Auther: Webster * @Date: 2021/6/17 05:30 * @Description: */public class ArrayTest { private final double x = 0.75; //拓展因子 private int[] array ; private int size; public ArrayTest(int capacity){ .

2021-06-17 23:12:02 135

原创 Spring源码解析准备工作(一)

源码图:

2021-06-17 23:03:08 104

原创 装饰者模式

装饰者模式的使用场景:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 需要动态地给一个对象增加功能,这些功能也可以动态地被撤销。 当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。不能采用继承的情况主要有两类:第一类是系统中存在大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长;第二类是因为类定义不能继承(如final类)...

2021-06-17 22:54:53 74

原创 观察者模式

观察者模式目录观察者模式1.首先创建"广播与管理"的抽象类(以及对应的实现类)1.1.抽象类1.2.实现类2.创建广播实体的抽象方法以及对应的实现(便于实现个性功能)2.1.抽象2.2.对应的抽象的实现方法3.验证观察者定义了对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。注:在使用设计机构的时候,要注意松耦合的,当两个对象是松耦合的时候,他们之间依然是可以相交,但是不太清楚彼此的细节。观察者模式提供一种对象设计,让

2021-05-18 21:48:02 72

原创 抽象工厂设计模式

抽象工厂的设计模式目录抽象工厂的设计模式Duck类定义的两个行为抽象类FlyBehavior以及QuackBehavior定义这两个行为抽象类的实现类测试验证思考问题:如果把一个类作为抽象类,然后把功能进行抽象,这样做会存在什么问题呢?假设: 我对一个鸭子的抽象类进行定义,我可以定义其飞行的方法、叫声、颜色及相关属性。正常的鸭子是没有问题的,但是如果有一个橡皮鸭,是否也需要重写这个方法。先首:橡皮鸭是不会飞的,所以我们不需要有飞行方法。每次要实现鸭子的抽象

2021-05-18 21:43:34 58

原创 Mysql主从复制

Mysql主从复制目录1.Mysql主从复制的原理2.数据库主从复制配置(主)2.1.主库进行配置​2.1.1.service-id讲解2.1.2.sync-bilog讲解2.2.在数据库进行配置2.3.启动Master并查看状态3.数据库主从复制配置(从)3.1.配置主库的连接信息3.2.从库的信息查看4.半主从复制4.1.半主从复制简介4.2.半同步复制的配置(主库)4.2.1.在配置半同步之前需要查看have_dynamic_loading.

2021-03-31 16:18:19 485

原创 增加Swagger配置

增加Swagger配置增加Swagger配置在增加Swagger配置之前,我们要知道为什么要增加Swagger。首先在开发中我们遇到的痛点:在前后端开发的过程中,我们或多或少的被接口文档折磨过。前端经常抱怨后端给的接口文档与实际的接口文档不一致后端觉得编写文档以及对应的维护接口文档,会耗费大量的精力,经常来不及更新。这次引入的Swagger就是为了解决这个问题。1.引入Swagger的jar包<!--**************************.

2021-03-29 14:19:07 694

原创 SSM项目增加异常处理功能

SSM项目增加异常处理功能1.普通的浏览器类的异常处理如果是普通的浏览器类的异常处理,我们可以直接通过web.xml进行配置。

2021-03-27 23:43:39 187

原创 Explain工具介绍

Explain工具介绍1.Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。注意:如果from中包含子查询,仍会执行该子查询,将结果放入临时表中。1.1.Explain分析示例如下需要创建三个表:actor表:SET FOREIGN_KEY_CHECKS=0;D...

2021-03-27 23:12:31 626 2

原创 Mysql索引的数据结构

Mysql索引的数据结构目录1.索引1.1.数据结构1.1.1.二叉树1.1.2.红黑树1.1.3.Hash树1.1.4.BTree1.1.5.B+Tree1.2.索引引擎1.2.1.MyISAM(因为数据和索引没有在一起所以是非聚集索引)1.2.2.InnoDB(因为索引和数据都在一起所以也叫做聚集索引)1.3.联合索引1.索引索引是帮助MySQL高效获取数据的排好序的数据结构。1.1.数据结构1.1.1.二叉树二叉树(Binar

2021-03-24 10:53:21 368 1

原创 Maven+SSM项目

Maven+SSM项目目录1.创建项目2.导入依赖包3.修改web.xml配置文件4.配置Spring配置文件相关的内容4.1.applicationContext-dao.xml4.2.applicationContext-service.xml5.配置springMVC.xml6.验证6.1.在数据库中创建数据6.2.创建实体对象6.3.创建Mapper以及对应的映射6.4.创建Service以及对应ServiveImpl6.5.Controll.

2021-03-12 19:28:07 405

原创 Cookie和Session

Cookie和Session目录1.Cookie1.1.Cookie理解1.2.对Cookie的验证2.Session2.1.Session理解2.2.Session测试1.Cookie1.1.Cookie理解Cookie是储存在用户本地终端上的数据。首先在讲解Cookie,Cookie存储在本地的服务端,在上文已经体现了,但是Cookie的存储也会在浏览器上进行体现,下图是我从火狐浏览器截取的我的Cookie的数据对应的是站点(个人理解就是不同的

2021-03-10 22:53:41 114

原创 静态代理与JDK动态代理

静态代理与JDK动态代理1.静态代理静态代理就是已知的代理类,对其进行代理。首先创建普通的项目1.1.创建Service//创建Pen服务类//这里指代的是买钢笔的服务类public interface PenService { public float sellPen(int num);}1.2.创建对象的实现类package edu.wan.service.serviceImpl;import edu.wan.service.PenService;

2021-03-09 01:07:00 129

原创 Mybatis项目搭建

Mybatis项目搭建1.创建项目创建Maven项目,点击下一步。Maven需要等java和resources文件夹都加载完毕之后,在进行开发,如果不行多点击几下项目右键 -> Maven -> Reimport。还是不行的话在pom.xml上增加写东西然后再注释掉。2.导入依赖包<dependencies> <!--mybatis 核心包 --> <dependency> <..

2021-03-08 16:56:50 164 3

原创 10-获取用户信息

10-获取用户信息目录1.获取关注用户的基本信息2.网页授权(获得未关注的人员信息)1.获取关注用户的基本信息首先是微信官方文档https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId获取关注该公众号的人员信息https://api.weixin.qq.com/cgi-bin/user/info?ac

2021-03-03 22:45:06 323 1

原创 09-二维码生成和扫描

09-二维码生成和扫描目录1.二维码的生成2.二维码的获取3.二维码的扫描1.二维码的生成首先需要详细的阅读腾讯的官方文档https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html二维码的创建请求为两种临时二维https://api.weixin.qq.com/cgi-bin/qrcode/create?acces

2021-03-03 22:41:28 715 1

原创 08-微信公众号素材管理

08-微信公众号素材管理目录1.素材上传2.素材下载1.素材上传首先素材的上传是有一定的规范的,具体的规范请参考微信公众号的官方文档https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html接口调用请求说明http请求方式:POST/FORM,使用https https://api.weixin.qq.com/cgi-bin/media/

2021-03-03 22:31:56 476 1

原创 07-模板消息设置

07-模板消息设置目录1.模板消息的基本设置1.1.设置行业1.2.获取设置的行业信息1.3.模板的创建1.模板消息的基本设置在设置模板消息之前,我们需要详细的阅读下开发文档中对模板消息的规范。开发文档对模板消息的规范如下。https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#1注意:所有服务号都可以在功能-&

2021-03-03 22:25:52 820 1

原创 06 - 微信公众号的菜单配置

06 - 微信公众号的菜单配置目录1.1.抽象报文信息1.2.菜单配置1.微信公众号菜单首先要配置微信公众号的菜单之前,需要了解微信平台对菜单的api是如何进行定义的。详细信息参考url如下:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html调用的微信请求如下:https://api.weixin.qq.com/cgi

2021-03-03 22:12:16 1376 2

原创 05-获取ACCESS_TOKEN

05-获取ACCESS_TOKEN1.基本参数的获取在获取ACCESS_TOKEN之前,首先需要看下微信的开放文档中是如何定义获取ACCESS_TOKEN接口的。接口调用请求说明https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET返回说明{"access_token":"ACCESS_TOKEN","expir

2021-03-03 22:00:07 1359 1

原创 04节- 微信公众号消息处理

04节- 微信公众号消息处理目录1.获取消息1.获取消息关注测试号二维码在测试号管理中就能看到,微信扫码关注即可。发送消息关注之后,发送消息即可,发送消息servle会收到一个post请求,验证代码如下 @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

2021-03-03 21:50:13 124 2

原创 03节-微信公众号验证

03节-微信公众号验证目录1.创建Springboot web项目2.写验证程序1.创建Springboot web项目新建项目进行参数设置选择springboot嵌入的内容搭建好了之后如果有创建Servlet需要进行配置使用Servlet必须要配置ServletComponentScan,basePackages里面配置的是Servlet的路径2.写验证程序首先是URL的填写我这上面接收的是/wx所以我在微信公众号配置.

2021-03-03 21:35:13 205 2

原创 02节-接口的信息配置

02节-接口的信息配置目录1.接口信息配置1.接口信息配置再申请完测试号的时候,就进入如下页面,需要配置的内容有URL以及Token注:图上的URL与Token是我已经配置好的首先解决URL的问题创建外网的URL我使用的是ngrok。首先进入ngrok的官网 :https://www.ngrok.cc/1.进行注册2.申请开通隧道3.进行隧道的配置在隧道管理进行隧道的配置,我的配置信息如下。4.客户端下载登录主页面.

2021-03-03 21:21:11 419 1

原创 01节-微信公众号开发前提准备

01节-微信公众号开发前提准备1.测试账号申请流程登录网站https://mp.weixin.qq.com/点击服务号 -> 点击服务号的开发文档账号申请 点击【开始开发】目录下的【接口测试号申请】...

2021-03-03 21:03:15 71 1

原创 Nginx 部署与配置

Nginx 部署与配置目录Nginx 部署与配置1.Nginx 下载地址2.Nginx 安装配置3.Nginx配置文件详解4.Nginx安装产生的问题记录1.Nginx 下载地址http://nginx.org/en/download.html2.Nginx 安装配置##安装Nginx依赖,pcre、openssl、gcc、zlib(推荐使⽤yum源⾃动安装)yum -y install gcc zlib zlib-devel pcre-devel open.

2021-02-20 09:27:35 1254

空空如也

空空如也

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

TA关注的人

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