<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[print_out的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/print_out</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; print_out]]></copyright><item><title><![CDATA[java设计模式（七）——适配器模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/156686718</link><guid>https://blog.youkuaiyun.com/print_out/article/details/156686718</guid><author>print_out</author><pubDate>Wed, 07 Jan 2026 14:04:30 +0800</pubDate><description><![CDATA[结构型模式的一种，主要将一个类的接口转换成客户端期待的另一个接口，主要目的是兼容性，使原来因为接口不匹配而无法工作的类可以一起工作。别名为包装器适用场景：1、当希望使用某个类，但是其接口与其他代码不兼容时，可以使用适配器类。2、当需要复用一些类，且复用的类处于同一继承体系，并且他们又有额外的共同方法，但这些共同方法不是所有在这个继承体系中的子类所具有的共性工作原理：1、适配器模式：将一个类的接口转换成另一种接口，让原本接口不兼容的类可以兼容2、从用户的角度看不到被适配者，是解耦的。]]></description><category></category></item><item><title><![CDATA[geoserver发布图层修复安全漏洞]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/156684952</link><guid>https://blog.youkuaiyun.com/print_out/article/details/156684952</guid><author>print_out</author><pubDate>Wed, 07 Jan 2026 13:26:45 +0800</pubDate><description><![CDATA[tomcat发布的geoserver服务中，进入tomcat/webapps/geoserver/WEB-INF，打开web.xml文件，第八步：访问测试，访问所有的工作空间都需要加&authkey=b52d2068-0a9b-45d7-kedu-144d12222025。第四步：配置权限认证。第二步：将下载的插件jar包，放到geoserver的lib目录中geoserver\WEB-INF\lib。通过东方通发布的geoserver服务，与tomcat类似，配置完成后重启东方通。]]></description><category></category></item><item><title><![CDATA[东方通Tongweb发布vue前端，HSTS漏洞修复]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140297290</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140297290</guid><author>print_out</author><pubDate>Tue, 09 Jul 2024 16:06:24 +0800</pubDate><description><![CDATA[在前端压缩包中新建WEB-INF文件夹（上一篇文章中已新建WEB-INF文件夹），在WEB-INF文件夹新建class文件夹，然后根据SecutiryFilter类的包路径，新建对应的文件夹，比如我们的包路径是com.test.filter,那么我们就要在class文件夹下，新建com文件夹，在com文件夹下新建test文件夹，在test文件夹下新建filter文件夹。com.test.filter.SecutiryFilter是SecutiryFilter类所在的包路径。4、修改web.xml文件。]]></description><category></category></item><item><title><![CDATA[东方通Tongweb发布vue前端]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140296679</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140296679</guid><author>print_out</author><pubDate>Tue, 09 Jul 2024 15:21:06 +0800</pubDate><description><![CDATA[以dist.zip为例，解压之后得到dist文件夹，进入dist文件夹，新建WEB-INF文件夹，进入WEB-INF文件夹，新建web.xml文件，执行完成后，会在dist文件夹下，生成一个test.war包，使用Tongweb发布test.war包即可。返回命令行，通过命令行进入dist文件夹下，使用jar.exe对dist重新打包，打包命令如下。打开web.xml文件，输入以下内容。1、解压vue打包文件。保存web.xml文件。]]></description><category></category></item><item><title><![CDATA[java设计模式（六）——原型模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140295207</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140295207</guid><author>print_out</author><pubDate>Tue, 09 Jul 2024 14:43:04 +0800</pubDate><description><![CDATA[原型模式：创建型模式之一，就是基于原型创建对象，也就是一个对象的产生可以不由零起步，直接从一个已经具备一定雏形的对象克隆，然后再修改为所需要的对象。节约创建对象时间。使用场景如果对象创建成本比较大，例如某个对象里面的数据需要访问数据库才能拿到；并且同一个类的不同对象之间差别不大（大部分字段相同）,这种场景下可以考虑使用原型模式。]]></description><category></category></item><item><title><![CDATA[java设计模式（五）——建造者模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140143602</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140143602</guid><author>print_out</author><pubDate>Wed, 03 Jul 2024 09:47:04 +0800</pubDate><description><![CDATA[建造者模式创建型模式的一种，他可以将复杂对象的建造过程抽象出来，使这个抽象过程的不同实现方法可以构造出不同表现的对象。使用场景：当一个类的构造参数有多个，而且这些参数有些是可选的参数，就可以考虑使用建造者模式。//大小，必须//颜色，必须//logo，可选//标签，可选大小（size）颜色（color）是必须的，logo（logo）、标签（tip）是可选的。在实例化对象时size和color是必填参数，而logo和tip是可选参数，通常有两种方式构建1、折叠构造函数模式。]]></description><category></category></item><item><title><![CDATA[java设计模式（四）——抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140130530</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140130530</guid><author>print_out</author><pubDate>Tue, 02 Jul 2024 16:39:56 +0800</pubDate><description><![CDATA[改善在工厂方法模式中，扩展时新增产品类、工厂类，导致项目中类巨多的场面，减少系统的维护成本，且一个工厂可以生成多种产品，而不是同一种的产品，比如一个工厂既可以生产鞋子又可以衣服，而不是只能生产鞋子。理解抽象工厂模式的核心关键在于理解品牌家族的概念，简单工厂方法与工厂方法创建工厂的着眼于某类具体的产品，某个工厂与某个产品对应，而抽象工厂这是某个工厂与家族的产品对应，这个工厂可以生产这个品牌家族的一系列产品。如果新增品牌。则定义具体产品类，定义具体工厂类，然后调用抽象工厂方法即可。]]></description><category></category></item><item><title><![CDATA[java设计模式（三）——工厂方法模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140100000</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140100000</guid><author>print_out</author><pubDate>Mon, 01 Jul 2024 14:27:55 +0800</pubDate><description><![CDATA[在工厂方法模式中，不再使用简单工厂方法模式中那个静态工厂方法，而是为每一种要生产的产品配备一个工厂，每种工厂只生成一种特定产品，这样以后增加新产品时，直接新增对应的工厂就可以了，而不用修改原有的工厂。和简单工厂模式相比，工厂方法模式中，工厂类取代了简单工厂模式中的静态方法，如果需要扩展，比如要生产老北京布鞋第一步：定义具体产品类，继承产品抽象类。比如老北京布鞋(LaoBeiJIngShoes.class)第二步：定义具体产品工厂类，实现工厂类接口方法。]]></description><category></category></item><item><title><![CDATA[java设计模式（零）——模式简单介绍]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140059966</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140059966</guid><author>print_out</author><pubDate>Sat, 29 Jun 2024 10:32:27 +0800</pubDate><description><![CDATA[【代码】java设计模式（零）——模式简单介绍。]]></description><category></category></item><item><title><![CDATA[java设计模式（二）——简单工厂模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140059577</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140059577</guid><author>print_out</author><pubDate>Sat, 29 Jun 2024 10:19:18 +0800</pubDate><description><![CDATA[1、工厂模式工厂模式属于创建型模式，即解决的是如何创建一个类的对象问题。常见的创建对象是自己使用new，这样是不是感觉有点普通，如果有一种高逼格的方式可以将对象创建出来，是不是让人刮目相看。工厂模式就能让你做到这一点。2、分类简单工厂模式工厂方法抽象工厂3、使用场景1.不想自己new对象，防止这个类改变的时候在new的地方到处去改，麻烦且容易遗漏2.要创建类的对象构建过程非常复杂，不想在代码的各个地方将这么复杂的构建过程反复书写。]]></description><category></category></item><item><title><![CDATA[java设计模式（一）——单例模式]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140047626</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140047626</guid><author>print_out</author><pubDate>Fri, 28 Jun 2024 16:49:47 +0800</pubDate><description><![CDATA[单例模式:某一个类在系统中只需要有一个实例对象，而且对象由这个类自行实例化并提供给系统其他地方使用，这个类称为单例类。使用场景:1、处理资源访问的冲突2、从业务概念上有些数据在系统中只应保存一份特点：某个类只能有一个实例，即使是在多线程运行环境下；单例类的实例一定是单例类自身创建，而不是单例类外部用其他方式如new方式创建单例类只需要提供一个方法想整个系统提供这个实例对象分类：单例模式分为饿汉模式和懒汉模式，]]></description><category></category></item><item><title><![CDATA[spring boot 通过自定义注解记录日志]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/137559033</link><guid>https://blog.youkuaiyun.com/print_out/article/details/137559033</guid><author>print_out</author><pubDate>Fri, 28 Jun 2024 16:19:31 +0800</pubDate><description><![CDATA[如果一个注解@B，被@Documented标注，那么被@B修饰的类，生成文档时，会显示@B。RetentionPolicy.CLASS：注解被保留到class文件，但jvm加载class文件时候被遗弃，这是默认的生命周期。RetentionPolicy.RUNTIME：注解不仅被保存到class文件中，jvm加载class文件之后，仍然存在。修饰注解，用来表示注解的生命周期，生命周期的长短取决于@Retention的属性RetentionPolicy指定的值。8、异步任务工厂 AsyncFactory。]]></description><category></category></item><item><title><![CDATA[从零开始搭建spring boot多模块项目]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/140041133</link><guid>https://blog.youkuaiyun.com/print_out/article/details/140041133</guid><author>print_out</author><pubDate>Fri, 28 Jun 2024 16:12:46 +0800</pubDate><description><![CDATA[选择/填写group、artifact、type、language、packaging（后面需要修改）、java version（后面需要修改成和第2步中版本一致）。添加将业务子模块pay-server-wechat作为依赖添加进启动类子模块pay-admin中。移除pay-admin，右击pay-admin模块，选择Remove Module。原始父级模块目录如下，删除src、.mvn、mvnw、mvnw.cmd文件。修改java版本配置，与第二步中保持一致，配置编码方式，配置项目版本。]]></description><category></category></item><item><title><![CDATA[spring boot + redis]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/126606119</link><guid>https://blog.youkuaiyun.com/print_out/article/details/126606119</guid><author>print_out</author><pubDate>Tue, 09 Apr 2024 16:41:55 +0800</pubDate><description><![CDATA[1、将application.properties改为application.yml。4、将对象集合转换成jsonString，并设置过期时间存入至redis。至此 spring boot + redis 项目创建完成；拷贝下面的代码，需要的相关jar包在pom.xml中添加。2、将对象转换成jsonString并存入redis。一、创建spring boot项目。此次用到了建造者模式，可以学习一下。3、创建redis公共类及方法。1、添加字符串到redis。6、添加 hash-set。]]></description><category></category></item><item><title><![CDATA[spring boot + AOP 实现日志记录]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/122926456</link><guid>https://blog.youkuaiyun.com/print_out/article/details/122926456</guid><author>print_out</author><pubDate>Mon, 14 Feb 2022 17:07:55 +0800</pubDate><description><![CDATA[一、AOP
1、简介
AOP：面向切面编程，是通过预编译方式和运行期动态代理，实现在不修改源代码的情况下给程序动态统一添加功能的一种技术，同时是对OOP(面向对象编程)的补充和完善，常被用来在spring中实现日志记录、性能监控等功能。
面向对象实现日志记录，性能监控这些功能时，需要在每个对象中都添加相同的方法，这样就产生了较大的重复工作量和大量的重复代码，不利于维护，使用AOP，可以大大减少代码数量，方便维护。
2、AOP实现原理
Spring 实现AOP思想使⽤的是动态代理技术
默认状况下， Sprin]]></description><category></category></item><item><title><![CDATA[spring boot 配置默认数据连接池 HiKariCP]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/121516932</link><guid>https://blog.youkuaiyun.com/print_out/article/details/121516932</guid><author>print_out</author><pubDate>Wed, 24 Nov 2021 15:40:57 +0800</pubDate><description><![CDATA[一、为什么选择HiKariCP
没其他原因，就是一个字 快。
性能方面 hikariCP&gt;druid&gt;tomcat-jdbc&gt;dbcp&gt;c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
二、导入依赖
		&lt;!--spring对象jdbc支持（此时会默认帮我们下载HiKariCP连接池） start--&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boo]]></description><category></category></item><item><title><![CDATA[spring boot 配置多环境开发]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/121286148</link><guid>https://blog.youkuaiyun.com/print_out/article/details/121286148</guid><author>print_out</author><pubDate>Fri, 12 Nov 2021 14:36:55 +0800</pubDate><description><![CDATA[在开发过程中常常需要有多个环境，每个环境中数据库、文件保存地址、swageer是否开启需求都不相同，比如在正式环境中swagger就不能开启。因此需要配置多个环境
一般有 开发环境、测试环境、正式环境
一、pom.xml设置
1、在pom.xml的 build  resources 标签下添加如下代码
		&lt;resource&gt;
          &lt;!--声明公共资源--&gt;
           &lt;directory&gt;src/main/resources&lt;/dire]]></description><category></category></item><item><title><![CDATA[spring boot + swagger3 生成word接口文档]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/121249408</link><guid>https://blog.youkuaiyun.com/print_out/article/details/121249408</guid><author>print_out</author><pubDate>Wed, 10 Nov 2021 15:47:08 +0800</pubDate><description><![CDATA[一、spring boot 集成 swagger3
1、添加swagger3依赖
		&lt;dependency&gt;
            &lt;groupId&gt;io.springfox&lt;/groupId&gt;
            &lt;artifactId&gt;springfox-boot-starter&lt;/artifactId&gt;
            &lt;version&gt;3.0.0&lt;/version&gt;
        &lt;/depe]]></description><category></category></item><item><title><![CDATA[spring boot 集成 durid 数据库加密]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/121233123</link><guid>https://blog.youkuaiyun.com/print_out/article/details/121233123</guid><author>print_out</author><pubDate>Tue, 09 Nov 2021 18:14:29 +0800</pubDate><description><![CDATA[一、生成密钥、公钥、加密后密码
1、在IDEA中找到durid.jar包

2、右键点击durid.jar包，选择“Open in Terminal”，进入Terminal 窗口，

3、在Terminal 窗口中输入
java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 1234

4、生成如下内容，保存密钥、公钥、密码

二、配置
5、开启加密、配置公钥
在application.yml的durid配置中添加
conn]]></description><category></category></item><item><title><![CDATA[Spring security 认证及授权流程（一）——登录认证]]></title><link>https://blog.youkuaiyun.com/print_out/article/details/119274985</link><guid>https://blog.youkuaiyun.com/print_out/article/details/119274985</guid><author>print_out</author><pubDate>Thu, 04 Nov 2021 11:35:44 +0800</pubDate><description><![CDATA[1、Spring security介绍
Spring Security：是一个提供身份验证，授权和保护以防止常见攻击的框架。 凭借对命令式和反应式应用程序的一流支持，它为Spring应用程序的安全提供实际标准。
Spring security实现功能，
1、认证，即who are you ，解决你是谁的问题
2、授权，即what are you，你能干什么。
3、安全保护，防止常见攻击
1、认证（who are you）
Spring Security为身份验证提供了全面的支持。 身份验证是我们验证谁试图访]]></description><category></category></item></channel></rss>