- 博客(172)
- 收藏
- 关注
原创 使用Charles抓取Android App网络请求的完整指南
打开Charles → Proxy → Proxy Settings。确保手机和电脑在同一个WiFi网络下。
2025-04-22 16:03:37
1267
原创 Arthas 指南
JVM/线程/方法/类加载全方位观测。:无需修改代码/重启服务。:Redis CPU飙升。:实时诊断+动态热修复。:命令行交互,开箱即用。:服务间歇性拒绝请求。
2025-04-21 19:18:23
856
原创 数据线性结构
优点:可以很快速的找到内存地址 查询,修改快缺点:在中间部分新增,删除部时需要移动后续的元素像java中的stream流的过滤等操作都是新建立一个集合有序插入返回,空间换时间对于寻址来说减少一次减法运算。
2024-09-01 10:02:09
1228
原创 深入了解反射
当且仅当该类是Java语言规范定义的合成类时。@Test//lambda在编译时生成匿名内部类,所以使用lambda属于我们的合成类System.out.println(((Runnable) new Runnable() {//自己写了一个匿名内部类,编译没有生成,所以它不是合成类@Override字段中同理//输出结果为true,我们知道枚举是在编译后会生成$VALUES字段,所以它是一个合成字段。
2024-06-08 11:38:57
688
原创 mysql调用mybatis代码生成器中getTables()报错Non-grouping field ‘TABLE_TYPE‘ is used in HAVING clause
运行部分sql正常。
2023-11-07 17:34:11
327
原创 vue项目搭建
node.js下载链接:在PATH中配置node的环境变量,node自带npm和npx可以修改启动后自动浏览器打开Vue图形界面,可以在界面创建项目仪表盘可以添加插件。
2023-09-14 23:44:59
680
原创 常见树的数据结构
O(1) 表示一次操作即可直接取得目标元素(比如字典或哈希表),O(n) 意味着先要检查 n 个元素来搜索目标常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n),立方阶O(n),k次方阶O(n),指数阶O(2。
2023-03-22 09:42:41
275
原创 Oracle异常
一 Oracle异常:三类异常Oracle异常三类异常预定义异常Oracle预定义的异常,有24个,对这种异常的处理无需在程序中定义,由Oracle自动引发。非预定义异常其他标准的Oracle异常,对这种异常的处理,需用户在程序中定义,然后由Oracle自动将其引发。非预定义的异常只有编号没有名称。用户定义异常由用户在程序自定义的异常,当出现某种用户认为的非正常情况时,显式地在程序中将其引发。抛出方式系统在运行时自动抛出通过raise语句
2022-06-16 19:19:56
3400
1
原创 常用linux指令及docker指令
正确卸载和重装docker的方式链接: https://blog.csdn.net/ll837448792/article/details/104750757/.ssh-copy-id命令 – 复制公钥到远程主机链接: https://www.linuxcool.com/ssh-copy-id.-i指定公钥文件拷贝本机公钥到远程主机上面:[root@jxsllht ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@ipharbor 启
2022-06-11 19:08:37
1413
原创 详解@PointCut及Spring AOP
@PointCut 详解案例target用来表示目标对象,即需要通过aop来增强的对象。proxy代理对象,target通过aop增强之后生成的代理对象。AspectJAspectJ是一个面向切面的框架,和spring中的aop可以集成在一起使用,通过Aspectj提供的一些功能实现aop代理变得非常方便。AspectJ使用步骤1.创建一个@Aspect标注类2.@Aspect标注的类中,通过@Pointcut定义切入点3.@Aspect标注的类中,通过AspectJ提供的一些通知相关的
2022-02-23 10:05:08
1625
1
原创 Validated
public enum ResultCode { /**操作成功**/ RESULT_SUCCESS_CODE(200,"操作成功"), /**操作失败**/ RESULT_ERROR_CODE(500,"操作失败"); private final int code; private final String message; ResultCode(int code, String message){ this.code = code.
2022-02-21 18:37:47
459
原创 MySQL 查询缓存
强制 MySQL 不从缓存中读取数据关键字SQL_NO_CACHEselect SQL_NO_CACHE * from `tb_test2` ORDER BY student_id LIMIT 100000,10;强制 MySQL 从缓存中读取数据关键字SQL_CACHEselect SQL_CACHE * from `tb_test2` ORDER BY student_id LIMIT 100000,10;释放全部缓存sqlreset query cache;查看是否有查询缓存(注意
2022-02-21 10:47:26
1514
原创 java 注解(Annotation)
一、java 注解(Annotation)定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。作用分类编写文档:通过代码里标识的注解生成文档【生成文档doc文档】代码分析:通过代码里标识的注解对代码进行分析【使用反射】编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】二、JDK中预定义
2022-02-19 15:09:49
340
原创 java 枚举(enum)
一、枚举类的使用枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式。二、如何定义枚举类方式一:jdk5.0之前,自定义枚举类public class SeasonTest { public static void main(String[] args) { Season spring = Season.SPRING;//就是执行了toString方法
2022-02-19 13:55:56
162
原创 @DependsOn
@DependsOn@DependsOn作用,是用来表示一个bean A的实例化依赖另一个bean B的实例化, 但是A并不需要持有一个B的对象,如果需要的话就不用@DependsOn,直接用依赖注入就可以了或者ref标签。如果通过xml配置<bean id="beanId" class="classpath" depends-on="beanB"/>注解源码及举例//当作用在类上时,通常会与@Component及其衍生注解等注解配合使用。//当作用在方法上时,通常会与@Bean注
2022-02-18 09:40:17
845
原创 责任链模式(Chain of Responsibility Pattern)
责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。案例一:传统模式学校OA系统的采购审批项目:需求是采购员采购教学器材如果金额小于等于5000,由教学主任审批(0<=x<=5000)如果
2022-02-16 15:21:41
925
原创 策略模式(Strategy Pattern)
模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。策略模式( Strategy Pattern) 中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对
2022-02-16 14:21:29
668
原创 状态模式(State Pattern)
状态模式在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类案例APP 抽奖活动问题假如每参加一次这个活动要扣除用户50积分,中奖概率是10%奖品数量固定
2022-02-16 13:33:30
482
原创 解释器模式(Interpreter Pattern)
解释器模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式是指给定一一个语言(表达式),定义它的文法的一种表示,并定义一个解释器使用该解释器来解释语言中
2022-02-16 10:51:24
348
原创 备忘录模式(Memento Pattern)
备忘录模式备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。在不破坏封装性的前提下,捕获-一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行
2022-02-16 09:27:09
295
原创 中介者模式(Mediator Pattern)
中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。用一个中介对象来封装一 系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互中介者模式属于行为型模式,使代码易于维护比如MVC模式,C (Controller 控制器)是M (Model 模型)和V (View 视图)的中介者,在前后端交互时
2022-02-15 21:46:52
256
原创 观察者模式(Observer Pattern)
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。案例一天气预报需求气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)需要设计开放型API,便于其他第三方也能接入气象站获取数据提供温度、气压和湿度的接口测量数据更新时, 要能实时的通知给第三方/** * 核心类 * 1. 包含最新的天气情况信息 * 2. 含有 Cur
2022-02-15 20:32:16
186
原创 迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。如果我们的集合元素是用不同的方式实现的,有数组,还有java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露
2022-02-15 19:18:02
219
原创 访问者模式(Visitor Pattern)
访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题访问者模式的基本工
2022-02-15 16:03:28
251
原创 命令模式(Command Pattern)
命令模式介绍命令模式 (Command Pattern) :在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦在命名 模式中,会将一个请求封装为-一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作通俗易懂的理解:将军发布命令,士兵去执行。其中有
2022-02-15 14:58:51
143
原创 模板方法模式(Template Method Pattern)
模板方法模式介绍模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤模板方法模式属于行为型模式。案例一:模板方法模式编写制作豆浆的程序如下:制作豆浆的流程选材-- 添加配料–浸泡–放
2022-02-15 11:45:02
392
原创 代理模式(Proxy)
代理模式介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种静态代理、动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一-起实现相同
2022-02-15 10:17:16
1399
原创 享元模式(Flyweight Pattern)
展示网站项目需求小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布有客户人要求以博客的形式发布有客户希望以微信公众号的形式发布案例一:直接复制粘贴一份直接复制粘贴一份,然后根据客户不同要求,进行定制修改给每个网站租用一个空间缺点需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站的实例对象很多,造成服务器的资源浪费案例二:享元模式享元模式
2022-02-14 19:15:26
551
原创 外观模式(Facade Pattern)
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。影院管理项目组建一个家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关开爆米花机放下屏幕开投影仪开音响开DVD,选dvd去拿爆米花调暗灯光播放观影结束后,关闭各种设备案例一:传统方式解决影院管理总结在
2022-02-14 16:58:58
148
原创 组合模式(Composite Pattern)
组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。案例一:学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成, 一个学校有多个学院,一个学院有多个系。将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际上我们的要求是:在一个页面中展示出学校的
2022-02-14 15:56:54
465
原创 装饰器模式(Decorator Pattern)
装饰者设计模式星巴克咖啡订单项目(咖啡馆)咖啡种类/单品咖啡: Espresso(意 大利浓咖啡)、ShortBlack、 LongBlack(美 式咖啡)、Decaf(无因咖啡)调料: Milk、 Soy(豆 浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用0O的来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合方案1-解决星巴克咖啡订单问题分析Drink 是一个抽象类,表示饮料2)des就是对咖啡的描述,比如咖啡的名
2022-02-14 11:22:03
147
原创 桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。案例一public abstract class Phone { protected void open() { this.open(); } protected void close()
2022-02-06 18:00:30
528
原创 适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协
2022-01-30 11:17:49
198
原创 建造者模式(Builder Pattern)
建造者模式(Builder Pattern)建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。案例一:传统模式(建房案例)public abstract class AbstractHouse { //打地基 public abstract void buildBasic(); //砌墙 public abstract void buildWalls(); //封顶 public abstract void roof
2022-01-30 09:15:08
790
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人