java
程序员猪猪侠
这个作者很懒,什么都没留下…
展开
-
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 · 256 阅读 · 0 评论 -
Java设计模式-观察者-行为型
定义 对象之间的一对多的依赖,多个观察者对象同时监听某个主题对象,主题对象发生变化时,所有的依赖着(观察者)原创 2021-06-08 16:24:27 · 193 阅读 · 0 评论 -
java设计模式-解释器-行为型
定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,解释器使用该表示来解释语言中的句子原创 2021-06-08 15:39:58 · 82 阅读 · 0 评论 -
java设计模式-策略模式-行为行
定义 定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户原创 2021-06-08 15:26:41 · 83 阅读 · 0 评论 -
java设计模式-行为型-模板方法
定义 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。适用场景原创 2021-05-31 16:46:02 · 92 阅读 · 0 评论 -
java设计模式-结构型-代理模式
定义:为其他对象提供一种代理,以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 适用场景 保护目标对象原创 2021-05-28 13:51:04 · 90 阅读 · 0 评论 -
java设计模式-结构型-桥接模式
定义:抽象部分与它的具体实现部分分离,使他们都可以独立变化 通过组合的方式建立两个类之间的联系,而不是继承原创 2021-05-28 11:44:53 · 94 阅读 · 0 评论 -
Java设计模式-结构型-享元
定义:提供了减少对象数量从而改善应用所需对象结构的方式 场景:用于系统底层的开发,解决系统的性能(比如连接池) 系统有大量相似对象,需要缓冲池的场景原创 2021-05-27 17:50:03 · 77 阅读 · 0 评论 -
Java设计模式-结构型-适配器
定义:将一个类的接口转换成客户期望的另一个接口 使原本接口不兼容的类可以一起工作 适用场景 已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) 不是软件设计阶段考虑的设计模式,随着软件的维护,不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案实现 类适配器 示例代码 //标准接口public interface Target { public void request()...原创 2021-05-27 17:33:14 · 76 阅读 · 0 评论 -
Java设计模式-结构型-装饰者模式
定义 在不改变原有对象的基础上,将功能附加到对象上提供了比继承更有弹性的替代方案(扩展原有对象功能) 适用场景 扩展一个类的功能或者给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以动态撤销 示例代码(继承模式的)public class Battercake { public String getDesc(){ return "这是一个煎饼"; } public Integer getPric...原创 2021-05-25 10:10:32 · 77 阅读 · 0 评论 -
Java设计模式-结构型-外观模式
定义:门面模式,提供了一个统一的接口,用来访问子系统中的一群接口 适用场景: 子系统越来越复杂,增加外观模式提供简单调用接口 构建多层系统结构,利用外观对象作为每层的入口,简化层间的调用优点: 减少系统依赖,松散耦合 更好的划分访问层次 符合迪米特法则,即最小知道原则缺点 不符合开闭原则示例代码public class GetUpService { public voi...原创 2021-05-24 17:11:14 · 104 阅读 · 0 评论 -
Java设计模式-创建型-原型模式
适用场景 类初始化消耗较多资源 new产生的一个对象需要非常繁琐的过程(数据准备,访问权限等) 构造函数比较复杂的过程 循环体中生成大量对象时优点 原型模式性能上比直接new一个对象性能高 简化创建过程确定 必须配备克隆方法 对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险 深拷贝和浅克隆要使用得当示例代码public class Mail imple...原创 2021-05-24 16:28:14 · 123 阅读 · 0 评论 -
Java设计模式-创建型-单例模式(二)
Enum枚举单例实现单例的核心在于private私有化类中的构造方法,在枚举中的构造方法必须是私有的,这就为枚举来实现单例奠定了基础。 枚举类天然的可序列化机制,能够保证不会出现多次实例化的情况。 序列化是否破坏单例模式测试代码public enum EnumInstance { INSTANCE; public static EnumInstance getInstance() { return INSTANCE; } public原创 2021-05-19 11:51:52 · 334 阅读 · 0 评论 -
Java设计模式-创建型-单例模式(一)
定义:保证一个类仅有一个实例,并提供一个全局访问点适用场景:想确保任何情况下只有一个实例优点:在内存里只有一个实例,减少了内存开销 可以避免对资源的多重占用 设置了全局访问点,严格控制访问缺点:扩展困难重点私有构造器 线程安全 延迟加载 序列号和反序列化安全 反射攻击示例代码:public class LazySingleton { private static LazySingleton lazySingleton; private LazyS.原创 2021-05-18 21:00:30 · 98 阅读 · 0 评论 -
Java设计模式-创建型-建造者模式
定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示 适用场景如果一个对象有非常复杂的内部结构(很多属性) 想把复杂对象的创建和使用分离 优点封装性好,创建和使用分离 扩展性好,建造类之间独立,一定程度上解耦缺点:产生多余的Builder对象 产品内部发生变化,建造者都要修改,成本较大代码示例(链式调用)public class Course { private String courseName; private String ..原创 2021-05-18 19:25:23 · 76 阅读 · 0 评论 -
Java设计模式-创建型-抽象工厂
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口 无须指定他们具体的类适用场景同一产品族一起使用创建对象需要大量重复的代码 所有的产品以同样的接口出现,从而使客户端不依赖于具体实现代码示例:同一产品族使用了一个工厂,从JavaCourseFactory取出的一定是Java的手记和视频public abstract class CourseFactory { abstract Article getArticle(); abstract Video getVideo..原创 2021-05-17 18:07:31 · 72 阅读 · 0 评论 -
java设计模式-创建型-工厂方法
定义:定义一个创建对象的接口,让实现这个接口的类来决定实例化哪个类 工厂方法让类的实例化推迟到子类中进行适用场景创建对象需要大量重复的代码 应用层不依赖于产品类实例如何被创建,实现等细节代码示例:VideoFactory为抽象工厂类,具体的对象的返回在下放到子类来实现public abstract class VideoFactory { abstract Video getVideo();}public class JavaVideoFactory extends Video原创 2021-05-17 17:29:25 · 110 阅读 · 0 评论 -
java设计模式-简单工厂(创建型)
简单工厂不属于23种设计模式中的,更像是一种编码习惯适用场景工厂类负责创建的对象比较少 应用层只知道传入工厂类的参数,对于如何创建对象不关心缺点工厂类的职责相对过重,增加新的产品,需要修改逻辑,违背了开闭原则jdk源码示例 private static Calendar createCalendar(TimeZone zone, Locale aLocale) { Calen原创 2021-05-17 16:33:39 · 89 阅读 · 0 评论 -
Java设计模式-里氏替换原则
定义:类型T1的对象o1,类型T2的对象o2,如果程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 理解:给继承这种关系提供了一种判据。 定义的扩展:一个软件实体如果使用一个父类的话,那一定使用于其子类,子类对象能够替换父类对象,而程序逻辑不变。引申子类可以扩展父类的功能,但是不能改变父类原有的功能 含义1:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法 含义2:子类中可以增加自己特有的方法 含义3:当子类的放重载父类的方法时,方法的前原创 2021-05-17 15:32:35 · 102 阅读 · 0 评论 -
Java设计模式-迪米特原则
定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则 目的:尽量降低类与类之间的耦合 强调只和朋友交流,不和陌生人说话(朋友:出现在成员变量,方法的输入,输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类) 代码示例:老板命令领导报告一下课程的数量,如下public class Boss { public void commandCheckCourseNumber(TeamLeader leader){ List<Course> cou.原创 2021-05-17 10:01:19 · 63 阅读 · 0 评论 -
java设计模式-接口隔离原则
定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口 一个类对一个类的依赖应该建立在最小的接口上 建立单一接口,不要建立庞大臃肿的接口 最重要的点:注意适度原则,一定要适度 优点:高内聚,低耦合,从而使类具有很好的可读性,可扩展性和可维护性 示例:定义一个IAnimal的接口public interface IAnimal { void eat(); void fly(); void swim();}定义两个实体类Dog和Bi..原创 2021-05-17 09:35:25 · 119 阅读 · 0 评论 -
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 · 227 阅读 · 0 评论 -
Java设计模式-单一职责原则
定义:不要存在多于一个导致类变更的原因 解释:一个类/接口/方法只负责一项职责 优点:降低类的复杂度,提高可读性,降低变更引起的风险 代码示例:鸟类移动的方法,大部分用翅膀飞,实现如下,Bird这个类负责输出翅膀和脚走的方法,如果此时来了个企鹅,则moveMode中还要加判断,影响了原有的逻辑判断,不符合单一职责原则 Bird类public class Bird { public void moveMode(String birdName){ if(birdN...原创 2021-05-13 15:01:39 · 87 阅读 · 0 评论 -
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 · 122 阅读 · 0 评论 -
设计模式原则-开闭原则
定义:对扩展开放,对修改关闭 解释:用抽象构建框架,用实现来扩展细节 优点:提高软件的可复用性和可维护性 示例代码 ICourse接口public interface ICourse { Integer getId(); String getName(); Double getPrice();} 实现ICourse接口的类public class JavaCourse implements ICourse{ private In...原创 2021-05-13 14:02:19 · 95 阅读 · 0 评论 -
netbeans众多jar包打成一个jar包
缘由:开发一个项目后,会有很多的第三方jar包,感觉很乱很杂,就想在项目开发完成后将所有class文件打包成一个jar包,尤其是做桌面软件更是想打成一个jar包文件了。 工具:netbeans6.7+ 解决方案:因为netbeans都是采用ant来编译的。 1.在netbeans的文件导航条下找到项目路径下的build.xml文件 2.在文件中加入以下代转载 2015-01-05 16:00:34 · 825 阅读 · 0 评论 -
Spring 3.0: Unable to locate Spring NamespaceHandler for XML schema namespace
昨日,在原本应用中添加了关于webService的调用,使用了Apache CXF 框架,并将其集成到了Spring中。 当时集成时,使用了如下的jar包(Spring2.5.5.JPG) 加入CXF的相关jar包 然后将WebService客户端集成到Spring中,代码类似于:转载 2015-02-26 14:36:03 · 2555 阅读 · 0 评论 -
exe4j打包exe文件(自带jre)
Exe4j把jar打成exe运行exe4j的程序在bin\exe4j.exe1、welcome界面2 、选择jar in exe mode 3、 (1):applicationname : (2) 输出路径(打成exe后exe的输出路径)4、 (1):运行exe的类型:GUI,console,service(2)exe的文件转载 2014-12-31 11:47:37 · 3617 阅读 · 1 评论 -
非web工程下 spring+Hibernate整合
可以利用hibernate的反向生成,将数据库的表映射为对象。根据数据库中的Tstation表,生成station.java和station.hbm.xml文件。在纯粹的hibernate访问中要手动创建sessionFactory的实例,而spring的IoC容器提供了这种管理方式,可以以声明的方式配置SessionFactory实例,还可以为SessionFactory注入数据源的引用。所以可转载 2015-07-23 09:57:06 · 1731 阅读 · 0 评论 -
从一个svg文件中创建一个Document
可以从一个URI中使用SAXSVGDocumentFactory中创建一个SVG DOM树 String parser=XMLResourceDescriptor.getXMLParserClassName(); SAXSVGDocumentFactory f=new SAXSVGDocumentFactory(parser); Document doc=f.crea原创 2015-07-23 10:06:45 · 2186 阅读 · 0 评论 -
native2ascii.exe的用途和使用
native2ascii 工具是对属性文件和其他字符编码进行相互转换。在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为转载 2015-07-23 10:09:18 · 690 阅读 · 0 评论 -
控制点生成算法
首先看在SVGElementsManager中的两个函数 public Rectangle2D getSensitiveBounds(Element shape) { Rectangle2D bounds = null; if (shape != null) { BridgeContext ctxt原创 2016-01-15 15:47:28 · 2676 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker
打开项目的jar包,发现这个类是空的(如下图)于是在网上找了相关的资料,发现原本这个类是包含在xalan.jar中的,但是xalan-j2.7.0版的发布包中,将serializer包中的类单独打包成serializer.jar,不再包含在xalan.jar中,所以才会即使添加了xalan.jar也无法找到该类,添加后即可解决问题。下载地址 http://www.java2转载 2016-09-18 14:30:10 · 6600 阅读 · 8 评论 -
在windows风格下设置JButton的背景色
对于Swing的JButton按钮,setBackground在windows风格下不能将背景完全设置为背景色。解决方法如下import java.awt.*;import javax.swing.*;public class ColorIcon implements Icon{ private Color color; private int width;翻译 2016-09-19 11:54:54 · 5853 阅读 · 0 评论 -
batik在shape-Rending方面的bug
在我对line元素未设置shape-Rending时,line元素未设置stroke-linecap属性,在batik渲染和浏览器渲染都木有问题。当我为line元素设置了shape-Rending为crispEdges后,发现用batik打开线居然不见了,使用浏览器打开OK正常。当为line元素设置stroke-linecap属性后,发现batik才能渲染出来原创 2016-09-28 11:34:23 · 423 阅读 · 0 评论 -
java程序移植到ubuntu下出现了中文大小字问题
用swing做的界面,在打包成jar包移植到ubuntu下的时候,首先出现了个别文字是小方块的问题,发现是由于ubuntu下的jdk缺少字体文件。 1 下载windows底下的simsun.ttc文件 2 找到ubuntu系统下jdk安装目录下的fonts文件 3 在fonts文件新建一个文件夹fallback,将字体文件拷贝到该文件夹下原创 2016-10-26 09:28:49 · 479 阅读 · 0 评论 -
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 · 4084 阅读 · 1 评论 -
Unable to locate Spring NamespaceHandler for XML schema namespace
今天在测试程序的时候发现一个诡异的spring异常,此异常在IDE调试中不存在,但在测试环境中打包后即出现,错误日志如下1234 Causedby:org.springframework.beans.factory.parsing.BeanDefinitionParsingException原创 2015-02-26 14:34:37 · 1218 阅读 · 0 评论