- 博客(121)
- 资源 (14)
- 收藏
- 关注
原创 Spring Security学习二:Spring Security默认的认证流程
1 登录校验流程2 Spring Security的主要过滤器链3 Spring Security内置的认证流程如下
2022-03-25 15:46:07 528
原创 Spring Security学习一:SpringSecurity入门
1 首先新建一个springboot项目,建立一个简单的Controller如下@RestControllerpublic class HelloController { @GetMapping(value="/hello") public String hello(){ return "hello"; } }此时访问将返回简单字符串如下2 在pom.xml中引入SpringSecurity <dependenc...
2022-03-25 11:58:05 273
原创 java设计模式-结构型-代理模式
定义:为其他对象提供一种代理,以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 适用场景 保护目标对象
2021-05-28 13:51:04 103
原创 Java设计模式-结构型-享元
定义:提供了减少对象数量从而改善应用所需对象结构的方式 场景:用于系统底层的开发,解决系统的性能(比如连接池) 系统有大量相似对象,需要缓冲池的场景
2021-05-27 17:50:03 85
原创 Java设计模式-结构型-适配器
定义:将一个类的接口转换成客户期望的另一个接口 使原本接口不兼容的类可以一起工作 适用场景 已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) 不是软件设计阶段考虑的设计模式,随着软件的维护,不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案实现 类适配器 示例代码 //标准接口public interface Target { public void request()...
2021-05-27 17:33:14 84
原创 Java设计模式-结构型-装饰者模式
定义 在不改变原有对象的基础上,将功能附加到对象上提供了比继承更有弹性的替代方案(扩展原有对象功能) 适用场景 扩展一个类的功能或者给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以动态撤销 示例代码(继承模式的)public class Battercake { public String getDesc(){ return "这是一个煎饼"; } public Integer getPric...
2021-05-25 10:10:32 80
原创 Java设计模式-结构型-外观模式
定义:门面模式,提供了一个统一的接口,用来访问子系统中的一群接口 适用场景: 子系统越来越复杂,增加外观模式提供简单调用接口 构建多层系统结构,利用外观对象作为每层的入口,简化层间的调用优点: 减少系统依赖,松散耦合 更好的划分访问层次 符合迪米特法则,即最小知道原则缺点 不符合开闭原则示例代码public class GetUpService { public voi...
2021-05-24 17:11:14 111
原创 Java设计模式-创建型-原型模式
适用场景 类初始化消耗较多资源 new产生的一个对象需要非常繁琐的过程(数据准备,访问权限等) 构造函数比较复杂的过程 循环体中生成大量对象时优点 原型模式性能上比直接new一个对象性能高 简化创建过程确定 必须配备克隆方法 对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险 深拷贝和浅克隆要使用得当示例代码public class Mail imple...
2021-05-24 16:28:14 134
原创 Java设计模式-创建型-单例模式(二)
Enum枚举单例实现单例的核心在于private私有化类中的构造方法,在枚举中的构造方法必须是私有的,这就为枚举来实现单例奠定了基础。 枚举类天然的可序列化机制,能够保证不会出现多次实例化的情况。 序列化是否破坏单例模式测试代码public enum EnumInstance { INSTANCE; public static EnumInstance getInstance() { return INSTANCE; } public
2021-05-19 11:51:52 345
原创 Java设计模式-创建型-单例模式(一)
定义:保证一个类仅有一个实例,并提供一个全局访问点适用场景:想确保任何情况下只有一个实例优点:在内存里只有一个实例,减少了内存开销 可以避免对资源的多重占用 设置了全局访问点,严格控制访问缺点:扩展困难重点私有构造器 线程安全 延迟加载 序列号和反序列化安全 反射攻击示例代码:public class LazySingleton { private static LazySingleton lazySingleton; private LazyS.
2021-05-18 21:00:30 108
原创 Java设计模式-创建型-建造者模式
定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示 适用场景如果一个对象有非常复杂的内部结构(很多属性) 想把复杂对象的创建和使用分离 优点封装性好,创建和使用分离 扩展性好,建造类之间独立,一定程度上解耦缺点:产生多余的Builder对象 产品内部发生变化,建造者都要修改,成本较大代码示例(链式调用)public class Course { private String courseName; private String ..
2021-05-18 19:25:23 82
原创 Java设计模式-创建型-抽象工厂
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口 无须指定他们具体的类适用场景同一产品族一起使用创建对象需要大量重复的代码 所有的产品以同样的接口出现,从而使客户端不依赖于具体实现代码示例:同一产品族使用了一个工厂,从JavaCourseFactory取出的一定是Java的手记和视频public abstract class CourseFactory { abstract Article getArticle(); abstract Video getVideo..
2021-05-17 18:07:31 82
原创 java设计模式-创建型-工厂方法
定义:定义一个创建对象的接口,让实现这个接口的类来决定实例化哪个类 工厂方法让类的实例化推迟到子类中进行适用场景创建对象需要大量重复的代码 应用层不依赖于产品类实例如何被创建,实现等细节代码示例:VideoFactory为抽象工厂类,具体的对象的返回在下放到子类来实现public abstract class VideoFactory { abstract Video getVideo();}public class JavaVideoFactory extends Video
2021-05-17 17:29:25 118
原创 java设计模式-简单工厂(创建型)
简单工厂不属于23种设计模式中的,更像是一种编码习惯适用场景工厂类负责创建的对象比较少 应用层只知道传入工厂类的参数,对于如何创建对象不关心缺点工厂类的职责相对过重,增加新的产品,需要修改逻辑,违背了开闭原则jdk源码示例 private static Calendar createCalendar(TimeZone zone, Locale aLocale) { Calen
2021-05-17 16:33:39 93
原创 Java设计模式-里氏替换原则
定义:类型T1的对象o1,类型T2的对象o2,如果程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 理解:给继承这种关系提供了一种判据。 定义的扩展:一个软件实体如果使用一个父类的话,那一定使用于其子类,子类对象能够替换父类对象,而程序逻辑不变。引申子类可以扩展父类的功能,但是不能改变父类原有的功能 含义1:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法 含义2:子类中可以增加自己特有的方法 含义3:当子类的放重载父类的方法时,方法的前
2021-05-17 15:32:35 112
原创 Java设计模式-迪米特原则
定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则 目的:尽量降低类与类之间的耦合 强调只和朋友交流,不和陌生人说话(朋友:出现在成员变量,方法的输入,输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类) 代码示例:老板命令领导报告一下课程的数量,如下public class Boss { public void commandCheckCourseNumber(TeamLeader leader){ List<Course> cou.
2021-05-17 10:01:19 68
原创 java设计模式-接口隔离原则
定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口 一个类对一个类的依赖应该建立在最小的接口上 建立单一接口,不要建立庞大臃肿的接口 最重要的点:注意适度原则,一定要适度 优点:高内聚,低耦合,从而使类具有很好的可读性,可扩展性和可维护性 示例:定义一个IAnimal的接口public interface IAnimal { void eat(); void fly(); void swim();}定义两个实体类Dog和Bi..
2021-05-17 09:35:25 126
原创 java获取JavaFx中的echarts图表的dom结构-出现的图表的缺失问题解决方案
用javaFx渲染的echarts图表如下主要代码 Platform.runLater(new Runnable() { @Override public void run() { WebView webView = new WebView(); jfxPanel.setScene(new Scene(webView));
2021-05-14 11:27:11 242
原创 Java设计模式-单一职责原则
定义:不要存在多于一个导致类变更的原因 解释:一个类/接口/方法只负责一项职责 优点:降低类的复杂度,提高可读性,降低变更引起的风险 代码示例:鸟类移动的方法,大部分用翅膀飞,实现如下,Bird这个类负责输出翅膀和脚走的方法,如果此时来了个企鹅,则moveMode中还要加判断,影响了原有的逻辑判断,不符合单一职责原则 Bird类public class Bird { public void moveMode(String birdName){ if(birdN...
2021-05-13 15:01:39 97
原创 Java设计模式-依赖倒置原则
定义高层模块不应该依赖底层模块,二者都应该依赖其抽象 解释:抽象不应该依赖细节,细节应该依赖抽象 针对接口编程,不要针对实现编程 优点:减少类间的耦合性,提高系统稳定性,降低修改程序所造成的风险代码演示:加入有一个dog类,喜欢eat,sleep。如果要该dog还喜欢bark,先看一下错误的示范 Dog类public class Dog { public void eat(){ System.out.println("I like eatting"); ..
2021-05-13 14:28:59 128
原创 设计模式原则-开闭原则
定义:对扩展开放,对修改关闭 解释:用抽象构建框架,用实现来扩展细节 优点:提高软件的可复用性和可维护性 示例代码 ICourse接口public interface ICourse { Integer getId(); String getName(); Double getPrice();} 实现ICourse接口的类public class JavaCourse implements ICourse{ private In...
2021-05-13 14:02:19 101
原创 WPS数据表格实现凑数(规划求解)方案
1 在下图的C2单元格中输入公式=SUMPRODUCT(B2:B7,D2:D7),其中B2到B7,是从哪些数据中选择,D2:D7的区域表示求得的结果写入的区域2 选中了这个C2单元格,点击菜单项数据-》模拟分析-》规划求解对话框如下说明:设置目标-也就是你写公式的这个单元格了,这里一般会自动识别了C2填充。目标值-也就是想要加和得到的数字了可变单元格- 这个就是说把规划好的结果放在哪,在咱们这就是D2:D7 可以打开右侧的小按钮,选择D2到D7,这样这个文本...
2021-04-19 09:41:40 20536 3
原创 javaScript实现无向图的连通域获取
编写无向图算法的类export default class GraphAlgorithm{ constructor(){ this.graphArray=new Array(); this.nodeArray; this.visit=new Array(); this.connecedArea=new Array(); } initGraph(nodeArray) { this.nodeArray
2021-04-09 08:58:40 159
原创 实现bootstrap-table的可编辑
需要引入的文件,包括了bootstrap的css和js文件,bootstrap-table的js和css文件,bootstrap-table的extension中的bootstrap-table-edit.js,再加上bootstrap-table官网推荐的插件x-editable中的bootstrap3-editable中的css和js(此处用了github上基于bootstrap3-editable的bootstrap4-editable)。<script src="https://cdn.
2020-11-03 18:17:58 1124 2
原创 父窗口调用iframe中的bootstrap-table进行刷新失败的问题
父窗口使用iframe加载了子页面如下<iframe style="width:100%;height: 100%;" id="modelManagerIframe" src="./model/ui/test.html" frameborder="0"></iframe>test.html中含有bootstrap-table的table如下<!DOCTYPE html><html style="height: 100%;"><hea
2020-10-14 12:03:11 653
原创 在绘图过程中的鼠标事件
在绘图的过程要用到的无非就是mouseDown,mouseMove,mouseUp事件。可能你还会说有mouseDrag事件,mouseDrag其实我们可以自己来判断,mouseDown+mouseMove构成了一个mouseDrag事件,所以我们监听上面的三个事件足够了。如果还有一下图形的绘制中需要双击结束绘制,那么也要监听dblclick双击事件。看起来是比较简单,但是这些鼠标事件构成了我们诸多操作的源头。要理清这些事件中分别要实现哪些功能,就要先思考在绘图过程中都有哪些模式。 要搞清具...
2020-09-21 15:33:59 430
原创 对svg中的元素使用animate.css的旋转,不围绕中心点旋转解决方案
近来在用animate.css实现一些svg的效果,使用rotateIn发现并不能围绕着中心旋转。看了网上的一些文章设置translate到中心点,然而非正途啊。有木有简单的方法呢。经过一番折腾,终于被我找到了,就是这个神奇的transform-box样式,而使用transform-box: fill-box可以使svg 元素像个html一样被操作。<html> <body> <svg width="2000" height="2000" vi
2020-09-21 08:46:55 1673 1
原创 snap.svg 不能正确获取marker-end的值
如下元素,要获取marker-end的值,使用element.attr("#triangle_0")是获取不到的。需要使用lineElement.node.style['marker-end']才能获取到
2020-09-08 14:52:44 180
原创 解决bootstrap popover首次显示位置有偏差的问题
在使用bootstrap popover发现弹框首次显示的位置和再次显示时位置不同。如下这次首次显示的位置(弹窗的小三角并未在按钮的中间)再次打开如下图,位置正确木有问题。代码如下图$("#esymbol").popover({ html: true, content: $("#esymbol_lib"), placement: 'right', container: 'body' });$(..
2020-09-07 11:27:30 1032
原创 sweetAlert2中的告警对话框在layer之上的弹出
由于layer默认的弹窗z-index为19891014,所有在layer之上弹窗出sweetAlert,需要修改sweetalert2.css,可将其中z-index的值大于19891014即可.swal2-container { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-alig...
2018-07-09 10:12:34 2924
原创 node.js中检查目录是否存在
function checkDirExist(path) {try{returnfs.statSync(path).isDirectory();}catch(e) {if(e.code=='ENOENT') { // no such file or directory. File really does not existconsol
2017-12-19 08:43:28 1407
原创 在测试batik源码中的问题
将batik-1.8-src中的sources源码放到eclipse项目中执行时,发现会出现空指针的错误,看了一下找不到XMLResourceDescriptor.properties文件,去batik-1.8-src中去找这个文件,发现原来在resources中,当打包的时候会将resources打包到jar包,但是如果单独拎出源码进行测试,则还是要将resources中的properties文
2017-11-29 10:41:52 404
原创 将batik打成一个jar包
1 首先从官网上下载batik-1.8-src2 进入到此目录下,执行.\build.bat all-jar3 在batik-src-1.8\batik-1.8\batik-1.8\lib目录下可见生成的batik-all-1.8.jar
2017-11-29 09:50:14 970
原创 Eclipse4.7.0在线安装FatJar
1 Help -> Install New Software… -> Work with 选择“The Eclipse Project Updates - http://download.eclipse.org/eclipse/updates/4.5” (尽管是4.7版本但是也要写4.5,亲测写4.7不行) -> 勾选”Eclipse Tests, Examples, and Extra
2017-09-05 15:32:16 4096 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人