- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 Spring核心概念复习AOP
CGLIB 代理:当目标对象没有实现接口时,Spring AOP 会使用 CGLIB(Code Generation Library)来动态生成目标类的子类,并重写方法以实现代理。在代理模式中,一个对象(称为代理)被用来控制对另一个对象(称为目标对象)的访问。通知是切面中的代码,它定义了在切点定义的方法执行时需要执行的额外逻辑。增强代理类中的被增强方法。当代理对象的方法被调用时,会根据配置的切点和通知来执行相应的逻辑。容器为这些切面创建代理对象,代理对象会拦截对目标对象方法的调用。
2024-08-28 11:01:18
467
原创 常用的JUC(Java Util Concurrent)工具类
包下的原子类为Java并发编程提供了一组高效的、线程安全的原子操作类,它们主要用于在高并发环境下确保对共享变量的操作具有原子性,即在同一时刻只有一个线程能够修改这些变量的值,而不会出现因多线程并发导致的中间状态或数据竞争问题。当两个线程都到达交换点时,它们各自携带的数据会被互换,确保线程间的通信和协作。,等待其他线程也到达屏障。当所有线程都到达后,屏障动作执行,然后屏障重置,线程们继续进行下一次迭代,如此反复三次。的特性,它们各自操作的是独立的本地副本,因此输出结果互不影响,展示了线程间数据的隔离。
2024-04-14 22:35:32
1478
原创 微信小程序支付报错appid与mchid不匹配
微信商户平台地址:https://pay.weixin.qq.com/index.php。没有再微信商户平台配置 关联appid。
2024-03-31 18:55:06
256
原创 @RequestParam和@RequestBody区别
举个例子,在SpringMVC配置了HttpMessageConverters处理栈中,指定json转化的格式,如Date转成‘yyyy-MM-dd’,则参数接收对象包含的字段如果是Date类型,就只能让客户端传递年月日的格式,不能传时分秒。•POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用。因为不同的接口,它的参数可能对时间参数有不同的格式要求,所以这样做会让客户端调用同事对参数的格式有点困惑,所以说扩展性不高。
2024-03-11 21:11:32
436
原创 ‘userServiceImpl‘: Unsatisfied dependency expressed through field ‘baseMapper‘; nested exception is
springboot项目启动报错
2023-02-08 22:02:07
1339
原创 CentOS7安装docker时报container-selinux >= 2:2.74错误
CentOS7安装docker时报container-selinux >= 2:2.74错误
2022-06-25 19:53:53
1594
原创 docker操作
卸载dockeryum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux
2021-06-23 17:12:30
73
原创 解决pdf名称包含特殊字符和中文时无法打开问题--使用工具objectpdf
先是通过url将pdf文件名传到openpdf页面:encodeURI(encodeURIComponent(url))//这个地方必须转义俩次//此处encodeURIComponent可以将url中的特殊字符一并转义为url可识别的%码到了openpdf页面,对传过来的url进行一次反转义:decodeURIComponent(fileUrl);最后通过objectpdf进行预览:PDFObject.embed(fileUrl);以上方法都无法搞定,此时需要考虑tomcat编码是否统
2021-05-24 09:19:28
2250
原创 Spring处理循环依赖思路?
大体思路:Spring中解决循环依赖使用了三个map,singletonObjects(一级缓存单例池)\earlySingletonObjects(三级缓存)\singletonFactories(二级缓存)class A{B b;}class B{A a;}A实例化—>属性注入B—> B实例化—>属性注入A(从singletonFactories中拿到半成品A)—>B初始化完成,下次循环将B注入A—>循环依赖完成class A{B b;}class B{A
2021-04-21 11:07:09
69
原创 @Value失效
@Value失效的四种原因:1.不能作用于静态变量;2.不能作用于常量;3.不能在非注册的类中使用;4.使用这个类时,只能通过依赖注入的方式,用new的方式是不会自动注入这些配置的。
2021-03-24 16:10:59
7556
原创 委派模式
委派模式委派模式(Delegate Pattern)不属于GoF23中设计模式。委派模式的基本作用就是负责任务的调用个分配,和代理模式相似但是代理模式注重过程而委派模式注重的是结果委派模式在spring中应用的非常多,比如我们熟悉的DispatcherServlet老板给项目经理下达任务,项目经理会根据实际情况把任务分配给每一个员工,等员工完成任务,再由项目经理向老板汇报这里的项目经理就是老板委派帮自己干活的人具体实现public interface IEmployee { public
2021-01-28 10:49:44
152
原创 模板模式
模板模式模板模式又叫做模板方法模式(Template Method Pattern),是指定义一个算法骨架,并允许子类为一个或者多个步骤提供实现。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。如何把大象放进冰箱?打开冰箱门–>把大象塞进冰箱–>关闭冰箱门如何把长颈鹿放进冰箱?打开冰箱门–>把大象拿出来–>把长颈鹿塞进去–>关闭冰箱门上面的例子打开冰箱和关闭冰箱是固定的,可以提到抽象类中实现,抽象类的子类只需要实现中间不同
2021-01-27 11:32:46
165
2
原创 适配器模式
适配器模式适配器模式(Adapter Pattern)是指将一个类的接口转换成用户期望的另一个接口,使原本接口不兼容的类可以一起工作,属于结构型设计模式结构型模式(Structural Pattern)关注如何将现有类或对象组织在一起形成更加强大的结构可分为两种:类结构型模式:关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系对象结构型模式:关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。更符合“合成复用
2021-01-26 17:08:58
100
原创 原型模式
原型模式原型模式:(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象适用场景类初始化消耗资源较多使用new生成一个对象需要非常繁琐的过程(数据准备,访问权限等)构造函数比较复杂在循环体中产生大量对象具体实现浅克隆定义:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。浅克隆只是复制一个当前对象的引用出来,相当于在栈中开辟一块空间下面例子的运行结果:com.mashib
2021-01-25 21:13:45
74
原创 代理模式
代理模式介绍代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性其主要缺点是:代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一个代理对象,会造成请求处理速
2021-01-21 10:56:20
141
1
原创 观察者模式
观察者模式模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。目标与观察者之间建立了一套触发机制。它的主要缺点如下。目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。当观察者
2021-01-20 22:16:12
82
原创 装饰者模式
装饰者装饰模式的定义与特点装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则其主要缺点是:装饰模式会增加许多子类,过度使用会增加程序得复杂性。装饰模式的应用场景前面讲解了
2021-01-19 10:23:14
114
原创 工厂模式
工厂模式工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。在简单工厂模式中创建实例的方法通常为静态(static)方法,因此简单工厂模式(Simple F
2021-01-18 13:36:23
205
原创 策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍**意图:**定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。**主要解决:**在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。**何时使用:**一个系统有许多许多类,而区分它们的只
2021-01-15 11:16:14
92
原创 单例模式
饿汉式优点:逻辑简单,线程安全缺点:用不用这个对象,在类加载到jvm时都会创建出来。不用的话就是无故占内存public class Main1 { //类加载时创建对象 private static final Main1 INSTANCE=new Main1(); //私有化构造方法 private Main1() {} public static Main1 getInstance() { return INSTANCE; } public static void
2021-01-15 11:15:42
99
2
原创 架构设计原则
开闭原则开闭原则(Open-Closed Principle, OCP)是指一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭。优势:开闭原则强调用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。//我的课程(抽象出来)public interface ICourse { Integer getId(); String getName(); Double getPrice();}//java课程实现课程接口,新增python课程,我只需要
2021-01-15 11:15:06
162
1
原创 jvm垃圾回收之finalize方法
垃圾回收:首先进行一次引用判断,当前资源是否有GCroot引用,没有引用则进行下一步查看对象是否有必要执行finalize方法,有必要则进行下一步-----没有必要执行finalize则直接进行gc(没有自救的机会)finalizde方法会将对象放到一个F-Queue中,等待gc回收这其中有一次对象的自救,在队列中没有被回收并且再一次被对象引用,此时当前对象成功进行了自救/** * 垃圾回收: * 首先进行一次引用判断,当前资源是否有GCroot引用,没有引用则进行下一步 * 查看对
2020-12-30 13:28:11
321
原创 redis实现分布式锁
为什么要使用分布式锁?首先看synchronized的作用范围就是在一个JVM中有效,如果我在俩个系统中同时去秒杀一个商品,synchronized时不能控制并发的进行。所以我们现在将锁放到一个能让所有的系统都能访问到公共的区域,然后设置一个布尔值,如果我在秒杀商品将布尔值设置为1(就是让别人等着,等我买完你们在来),当我买商品完毕,我将布尔值设置为0,下一个人再来买。基于这样的思想,我们就可以想到,公共区域数据库,redis缓存,zookeeper这些放在公共区域大家一起用的都可以用来实现分布式锁的。
2020-12-11 18:32:09
259
原创 swagger2-实时生成接口文档
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。6.1 使用swagger生成实时接口文档https://swagger.io/在scw-parent父工程中pom.xml引入Swagger2和swagger ui <!-- https://m
2020-12-05 20:16:32
123
原创 富文本编辑器介绍
富文本编辑器介绍富文本编辑器,Rich Text Editor, 简称 RTE, 它提供类似于 Microsoft Word 的编辑功能。常用的富文本编辑器:KindEditor http://kindeditor.net/UEditor http://ueditor.baidu.com/website/CKEditor http://ckeditor.com/4.3使用kindeditor完成商品介绍的录入4.3.1导入kindeditor编辑器所需js类库 allo
2020-11-21 19:44:25
303
原创 redis设置有效时间
redisTemplate.boundHashOps("smsCode").put(phone,checkCode);redisTemplate.expire("smsCode",60,TimeUnit.SECONDS);//设置有效值得键 时间长度 第三个参数控制时间单位,详情查看TimeUnit
2020-11-21 19:41:34
1407
原创 单点登录CAS集成security使用
SSO单点登录访问流程主要有以下步骤:访问服务:SSO客户端发送请求访问应用系统提供的服务资源。定向认证:SSO客户端会重定向用户请求到SSO服务器。用户认证:用户身份认证。发放票据:SSO服务器会产生一个随机的Service Ticket。验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。cas原理图1.引入jar包<!--security add by
2020-11-21 19:40:06
564
原创 Excel文件导出
jar坐标<!--POI包-Excel导入导出操作包--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> <version>3.17</version></dependency>采用同步提交表单的方式前端:导出按钮<button id=
2020-10-21 21:11:58
142
原创 SSM文件上传
jar包坐标<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version></dependency>springmvc配置文件中,添加一个解析文件的bean<!--上传解析器的配置--><
2020-10-09 20:18:19
138
原创 SSM分页插件使用
jar包坐标<!--分页插件的jar包--><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version></dependency>controller中方法@RequestMapping("/sho
2020-10-09 20:14:30
251
PPT模版,可旋转式高级模版
2024-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人