自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_46633875的博客

菜鸟努力中...

  • 博客(27)
  • 资源 (5)
  • 收藏
  • 关注

原创 设计模式--适配器模式

适配器模式引例简介基本介绍工作原理示例代码引例简介基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。工作原理适配器模式:将一个类的接口转换成另一种接口.让 原本接口不兼容的类可以兼容。从用户的角度看不到被适配者,是解耦的。用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。用户收到反馈结果,感觉只是和目标接口交互。示例在实际业务

2021-10-18 21:52:01 162

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

建造者模式引例建造者模式介绍结构建造者模式改进引例总结引例建造者模式介绍结构建造者模式改进引例总结

2021-09-27 12:37:29 160

原创 设计模式--原型模式

原型模式1.概述2.介绍3.引例4.原始的设计5. 用原型模式改善5.1 示例:利用clone进行复制5.2 问题5.3 浅拷贝和深拷贝5.4 使用clone实现深拷贝(每个用到的类需要实现clone)5.5 通过对象序列化实现深拷贝6.总结1.概述原型模式主要解决的是创建重复对象的问题。而这部分对象内容本身比较复杂,因此获取相关对象数据耗时较长,所以采用复制的方式节省时间。2.介绍原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽

2021-09-24 21:37:42 156

原创 设计模式--工厂模式(三种)

工厂模式概述简单工厂1.基本结构2.示例3.优缺点4.简单工厂+配置文件解除耦合工厂方法模式1.概念2.基本结构3.示例4.优缺点抽象工厂模式1.概念2.基本结构3.示例4.优缺点概述简单工厂1.基本结构2.示例3.优缺点4.简单工厂+配置文件解除耦合工厂方法模式1.概念2.基本结构3.示例4.优缺点抽象工厂模式1.概念2.基本结构3.示例4.优缺点...

2021-09-07 15:15:27 145

原创 设计模式--单例模式

单例模式1.简介2.分类:使用1.饿汉式(( 静态常量)2.饿汉式(静态代码块 )3.懒汉式(线程不安全)4. 懒汉式(线程安全,同步方法)5. 懒汉式(线程安全,同步代码块)6.双重检查7. 静态内部类8. 枚举1.简介所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。单例模式主要解决的是一个全局使用的类,被频繁的创建于销毁,从而提升代码总体的性能。比如:在实际中,数据库连接池不会反复创建,sprin

2021-09-04 22:15:07 65

原创 SSM简单实现头像(从数据库中读取图片)上传

头像上传效果预览前端布局(js)后端实现1.mysql BLOB类型与JAVA 转换保存到数据库传到前端页面效果预览 SSM头像上传 前端布局(js)<button id="updateImg">更改头像</button><input type="file" id="file" style="display: none"><div cl

2021-09-02 23:26:59 2948 1

原创 java设计模式-六大基本设计原则

六大基本设计原则设计模式的目的设计模式六大原则设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让 序 程序( 软件) ,具有更好:代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现 高内聚, 低耦 合的特性设计模式六大原则

2021-08-17 20:06:07 94

原创 六大设计原则--迪米特法则 (lod)

迪米特法则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述一个对象应该对其他对象保持最少的了解。类与类关系越密切,耦合度越大。迪米特法则(Demeter Principle)又叫 最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息迪米特法则还有个更简单的定义:只与直接的朋友通信。直 接的朋友:每个对象都会与其他对象有耦合关系,只要两个

2021-08-17 19:52:58 218

原创 六大设计原则--开闭原则 (ocp)

开闭原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善1.概述开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量 通过扩展软件实体的行为来实现变化,而 不是通过修改已有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则2.案例2.1.描述2.2.代码//绘制图形class

2021-08-17 19:46:02 130

原创 六大设计原则--里氏替换原则(lsp)

里氏替换原则OO 中的继承性的思考和说明1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善OO 中的继承性的思考和说明继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实 现的方法任意修改,就会对整个继承体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵 入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承, 则当这个类需要修改时,必须考虑

2021-08-17 19:38:16 152

原创 六大设计原则--依赖倒置原则(dip)

依赖倒置原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类。使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他

2021-08-17 19:26:37 98

原创 六大设计原则--接口隔离原则(isp)

接口隔离原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。2.案例2.1.描述类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D。2.2.代码nterface Interface1 { void operation1(); void operation2(); void operation3(); void operation

2021-08-17 19:18:02 72

原创 六大设计原则--单一职责原则(srp)

单一职责1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述所谓的职责就是类变化的原因,也就就实际的业务需求。如果一个类有多于一个原因别改变,那么这个类的职责就有超过两个及以上的规则。而单一职责约定一个类有且仅有一个改变类的原因。在实际开发中,例如在service层,userService就只负责对用户进行操作,商品就交给goodsService处理。2.案例2.1.描述视频网站用户分类2.2.代码public class VideoService

2021-08-17 17:09:11 116

原创 mybatis源码--缓存机制

mybatis缓存机制缓存概述mybatis缓存结构一级缓存概要一级缓存命中的条件一级缓存失效的情况查看源码中失效情况的位置一级缓存性能一级缓存执行的过程(源码)执行流程源码分析spring-mybatis整合后一级缓存失效的分析示例查看源码二级缓存概要二级缓存命中的条件二级缓存为什么必须提交后才能命中二级缓存的设计思想二级缓存的执行流程执行流程源码缓存概述MyBatis提供在执行过程中查询缓存,如果缓存中有数据,则直接从缓存中获取,没有则从数据库查询,用以减轻数据压力,提高系统性能。MyBatis

2021-08-13 23:06:00 84

原创 mybatis源码---Executor执行器

java原生jdbc操作流程读取配置信息(基本信息)加载驱动获取连接获取PreparedStatement的实例 (或:预编译sql语句)针对结果集的处理(增删改用 execute() 不需处理结果集,查询用 .executeQuery(); )关闭连接流程图示例//获取连接Connection conn = JDBCUtils.getConnection(); String sql = "insert intocustomers(name,email,birth,photo)

2021-08-10 17:14:18 115

原创 java--动态代理

动态代理代理代理概念代理作用:代理分类:静态代理概念实现逻辑:示例定义一个卖优盘接口(规范行为)厂家类(实现这个行为)商家代理厂家(同样实现卖优盘这个行为)顾客购买优盘静态代理的缺点动态代理(jdk)概念优点AOP动态代理所涉及的类proxy类InvocationHandler接口Method 类动态代理示例使用过程:定义卖优盘行为的接口厂家定义代理中用到的InvocationHandler实现类测试缺点cglib代理概念代理代理概念在开发中存在a类需要调用c类的方法,完成某一个功能,但是c禁止a

2021-08-09 17:25:44 367

原创 约瑟夫环问题(单向循环链表实现)

约瑟夫环问题问题描述单向循环链表介绍构造链表解决约瑟夫问题测试代码问题描述1.Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。2.提示:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开始计数,计到 m 时

2021-05-31 18:34:28 1014

原创 数据结构-双向链表

介绍定义图解单链表的缺点:遍历添加 (默认添加到双向链表的最后)修改删除指定位置插入Node类DoubleLinkedList类测试类结果定义1.定义:双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。图解2.图解·:与单列表的比较定义图解单链表的缺点:遍历添加 (默认添加到双向链表的最后)修改删除指定位置插入Node类DoubleLinkedList类测试类结果单链表的缺点:单向链表,查找的方向只能是一个方向,

2021-05-30 18:03:58 76

原创 数据结构-稀疏数组转换

1.稀疏数组 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组,当一个数组中大部分元素为0(相同数字,可以是0,1,...), 或者为同一个值的数组时,可以使用稀疏数组来保存该数组。1 1 1 1 1 1 1 5 1 1 1 1 15 1 1 1 1 1 ------------------------------> ...

2021-04-07 23:57:15 157 1

原创 数据结构-队列(数组实现)

1.本文利用数组进行简单地队列实现操作思想很简单:front指向第一个元素的前一个位置,初始化front=-1rear指向队尾元素,初始化rear=-1rear控制入队,front控制出队,算法很简单,直接看代码2.缺点;在入队,出队操作中,前面的空间造成了浪费,不能充分利用数组空间。3.改进算法:(环形队列)参考:https://blog.csdn.net/m0_46633875/article/details/115497667?spm=1001.2014.3001.5502

2021-04-07 23:38:55 88 1

原创 数据结构-环形队列(数组实现)

问题探讨:单向数组实现环形队列的缺点:不能充分利用数组空间针对单向数组的改进:环形队列的思想:1.front含义改变:front指向队列的第一个元素,初始化front=02.rear含义改变:指向队列最后一个元素的后一个位置,空出一个空间作为约定,初始化rear=0;(rear前一个元素为队列的最后一个元素,rear指向空位置的)3.队满条件:(rear+1)%maxsize=front(我们大可想象成一个收尾相连的环形数组(不太严谨,我的鄙见),rear+1就相当于指向了...

2021-04-07 23:32:11 349

原创 数据结构-文本文件检索

一、问题重述:要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写,统计给定单词在文本文件中出现的总次数,检索输出的某个单词出现在文本中的行号、在该行中出现的次数以及位置。 该设计要求可分三个部分实现:其一,建立文本文件,文件名由用户键盘输入; 其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号,该行中出现的次数以及在该行中的相应位 置...

2021-03-03 21:56:34 1289 2

原创 数据结构-启发式算法(隐式图搜索)

1、问题重述 3×3九宫棋盘,放置数码为1 -8的8个棋牌,剩下一个空格,通过数字向空格的移动来改变棋盘的布局。 要求:根据给定初始布局(即初始状态)和目标布局(即目标状态),如何移动棋牌才能从初始布局到达目标布局,找到合法的过程序列。 2、 问题分析: 对于八数码问题的解决,每一个状态可认为是一个1×9的矩阵,问题即通过矩阵的变换,由数学知识可知,可计算这两个有序数列的逆序值,如果两者都是偶数或奇数,则可通过变换到达,否则,这两个...

2021-03-02 16:40:08 909

原创 数据结构-学生成绩管理系统

1、问题重述:学生信息的录入、查询、修改、排序、按学生成绩确定名次以及信息的输出。其中学生信息包含:学号、姓名、专业、四门课、总分以及排名;信息修改仅对四门成绩进行修改;信息查询可以按照学号和姓名两种查询方法;排序方法要给出四种:双向冒泡排序、希尔排序、快速排序、堆排序。2、问题分析:采用单链表存储3、算法分析:(具体代码在最后)(1)、双向冒泡排序原理:比较相邻两个元素的大小。如果前一个元素比后一个元素大,则两元素位置交换对数组中所有元素的组合进行第1步的.

2021-02-27 20:27:35 9750 10

原创 文本绘制中的文字排版

一、1、文字基线英文书写四线三格文字基线baseline:指从下往上的第2根线 文本绘制函数:drawString(str, x,y) 中的 y 指的是基线的位置2、文本的测量Font Size = Leading + Ascent + Descent3、文本测量类:FontMetrics FontMetrics fm = g.getFontMetrics(font); int textWidth = fm.stringWidth( str );...

2020-12-18 15:02:32 359

原创 简单的Java swing应用——图片查看器()

该篇主要运用Java swing的基础知识,展示的应用结果。用到的内容:import swingTool.ImageView;import javax.imageio.ImageIO;(本文主要是读文件)import javax.swing.*;import javax.swing.border.Border;(对于边框的复合使用)import java.awt.*;import java.awt.event.MouseAdapter;(鼠标适配器,实现了各类鼠标事件,写起来更简...

2020-08-26 22:56:21 1659 1

原创 线性布局管理器

线性布局管理器这是我根据阿发老师的讲课内容,自己学习运用的,不足之处,多多谅解。线性布局方式,分为水平布局和竖直布局(1)、水平布局。各个子控件在水平方向上依次排列,每个控件的宽度可以单独指定, 可以使用MyXLayout例如:setLayout(newAfXLayout(5));//子控件之间的间距为5像素add(a1,"80px");-"80px"固定占80像素(不会随窗体的变化而变化)add(a2,"0%");-"20%"固定占总空间的...

2020-08-22 23:16:32 351

javaWeb--SSM整合的配置文件(spring、springMVC、web)

SSM、java、web

2021-08-17

javaWeb--SSM整合的mvc配置

SSM、java

2021-08-17

javaWeb-SSM整合的上下文配置

SSM

2021-08-17

SSm整合所需的全部jar包

最新版- web

2021-08-17

SSM整合web.xml配置

最新版jar包

2021-08-17

空空如也

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

TA关注的人

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