- 博客(116)
- 收藏
- 关注

原创 MyBatis全篇
MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQLMaps和Data Access Obiects(DAO)。MyBatis官
2023-06-29 20:57:28
11224
1
原创 JVM 内存调优
内存泄漏(Memory Leak)和内存溢出(Memory Overflow)是两种常见的内存管理问题,它们都可能导致程序执行不正常或系统性能下降,但它们的原因和表现有所不同...
2025-04-16 17:18:35
772
原创 JVM 垃圾回收
在 C/C++ 没有自动垃圾回收机制的语言中,一个对象如果不再被使用,则需要手动释放,否则就会出现内存泄漏(不再使用的对象未被系统回收而导致内存溢出)。Java 为了简化对象释放的操作,降低编程的复杂度,引入的自动的垃圾回收 ( GC - Garbage Collection ) 机制。通过垃圾回收器来将不再使用的对象完成自动的回收,其主要负责对堆上的内存进行回收...
2025-04-15 16:42:30
1063
原创 运行时数据区
Java 虚拟机在运行 Java 程序过程中管理的内存区域称之为运行时数据区,运行时数据区负责管理 JVM 使用到的内存,例如创建对象和销毁对象...
2025-04-15 16:37:50
657
原创 类(class)加载器
Tomcat是一个Servlet容器,它需要为部署在同一个实例中的多个Web应用程序提供隔离的类加载环境。如果使用标准的双亲委派机制,那么所有Web应用程序将会共享同一个类加载器,这会导致类冲突和安全性问题。因此,Tomcat为每个Web应用程序创建了一个独立的类加载器(WebAppClassLoader),它首先尝试自己加载类,如果找不到,再委托给父类加载器。这样,每个Web应用程序都有自己的类加载器,可以独立加载类,而不会影响到其他应用程序...
2025-04-15 16:35:18
817
原创 类的生命周期
类的生命周期可以大致分为加载连接初始化使用卸载,其中阶段又可以细分为验证准备解析这三个阶段。其中作为程序员,接触最多的是使用阶段,例如:通过反射或 new 的方式获得一个新对象...
2025-04-15 16:32:44
897
原创 字节码文件
因为字节码文件是以二进制的方式存储,保存了源代码编译之后的内容,但是并未使用规定的字符集(如 UTF-8 )对其进行解释,这就导致了文件无法直接使用记事本打开阅读。)查看一个已经编译好的字节码文件可以得知,一个字节码文件一般分为基础信息、常量池、字段、方法、属性这五个部分...
2025-04-15 16:28:46
1027
原创 JVM 概述
JVM的全为 Java Virtual Machine,但是目前的 JVM 已经不再与任何语言进行深度耦合了,其本质就是运行在计算机上的程序,职责是运行处理 Java 字节码文件...。
2025-04-15 16:26:41
521
原创 SearXNG
什么是 SearXNG?说白了,其实就是一个免费开源的搜索引擎。那为什么要本地安装它呢?看它同时,其本地部署成功,可以向本地的其他服务(自己开发的)提供搜索 API,使其可以具备搜索功能,在如今 AI 爆火的场景下,显得格外实用(为 AI 赋能,使其具有实时搜索的功能等)那么,如何在本地安装属于自己的 SearXNG 搜索引擎呢?....
2025-04-08 17:34:43
1180
原创 Prometheus + Grafana 监控
Prometheus 是一个开源系统 监控和警报工具包最初由构建。自 2012 年成立以来,许多 公司和组织已经采用了 Prometheus,并且该项目具有非常 活跃的开发人员和用户。它现在是一个独立的开源项目 并独立于任何公司进行维护。为了强调这一点,并澄清 该项目的治理结构,Prometheus 于 2016 年加入作为之后的第二个托管项目。省流:Prometheus 就像小区物业的智能监控系统,能24小时盯着服务器/应用服务有没有"生病",一有问题就自动打电话通知管理员。
2025-02-28 22:24:04
1439
原创 行为型模式
行为型设计模式是面向对象编程中的一种模式,它关注的是对象之间的通信和协作,以实现特定的行为或任务。选择合适的模式取决于具体的设计需求和问题。行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或者对象之间怎样相互协作共同完成单个对象无法单独完成的任务,其设计算法与对象间职责的分配。:观察者模式用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会收到通知并自动更新。:备忘录模式用于捕获对象的内部状态,并在不破坏对象封装的前提下将其保存,以后可以将对象恢复到之前的状态。
2024-03-11 20:23:01
603
原创 解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一种语言的文法,并提供一个解释器来解释该语言中的表达式。这个模式主要用于解决问题领域中存在的特定语言或表达式的解释和执行问题。它将一个问题分解成一系列的表达式,并提供一个解释器来解释这些表达式。
2024-03-11 20:14:02
1084
原创 备忘录模式
备忘录模式(Memento Pattern)是一种行为型设计模式,它用于捕获一个对象的内部状态,并在不破坏对象封装性的情况下将状态保存到外部,以便将来可以恢复对象到先前的状态。备忘录模式的核心思想是将状态保存和恢复的责任分离开来,以确保对象的封装性。这允许在不破坏对象封装性的情况下,实现状态的保存和恢复,从而提高了系统的可维护性和灵活性。
2024-03-04 19:41:04
1659
原创 访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它用于在不改变元素类的前提下,为元素的不同操作(访问)提供不同的处理方式。访问者模式将数据结构与数据操作分离,使得可以在不修改数据结构的情况下添加新的操作或访问方式。访问者模式的核心思想是引入一个访问者对象,该对象包含了一组访问操作,每个操作用于处理不同类型的元素。元素类会接受访问者对象,并将自身传递给访问者,让访问者根据元素的类型执行相应的操作。
2024-03-04 19:39:35
1286
原创 迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它用于提供一种访问和遍历聚合对象(例如列表、数组、集合等)元素的方式,而不需要暴露其内部结构。迭代器模式将迭代逻辑封装在一个独立的迭代器对象中,让客户端可以逐个遍历聚合对象的元素,同时保持对聚合对象的封装。
2024-03-04 19:33:46
589
原创 中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,它用于减少对象之间的直接关联,以通过一个中介对象来协调和管理对象之间的交互。中介者模式促使对象之间的通信变得松散,从而提高系统的可维护性和可扩展性。中介者模式的核心思想是引入一个中介者对象,它负责管理对象之间的通信和协调它们的行为,而不是让对象直接相互通信。这有助于减少对象之间的耦合性,使系统更容易扩展和维护。
2024-03-04 19:16:06
829
原创 观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,允许一个对象(称为主题或被观察者)通知多个其他对象(称为观察者)自己的状态变化,从而使观察者能够自动更新。观察者模式的核心思想是将主题与观察者解耦,使主题可以独立变化而不影响观察者,同时使观察者可以自动获取主题的更新信息。这种模式有助于构建松耦合的系统,其中对象之间的关系是动态的。
2024-03-04 19:14:33
752
原创 状态 ( State ) 模式
状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变其行为,使得对象看起来好像修改了其类。状态模式主要解决了对象在不同状态下的行为切换问题,使得状态转换的逻辑更加清晰和可维护。
2024-03-04 19:13:14
917
原创 责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,用于构建处理请求的对象链。在这个模式中,多个对象依次处理请求,直到其中一个对象能够处理请求为止,或者请求被完全处理。每个处理者对象都包含对下一个处理者对象的引用,形成一个链式结构。
2024-03-04 19:11:21
1154
原创 命令 ( Command ) 模式
命令模式(Command Pattern)是一种行为型设计模式,它将请求(命令)封装成一个对象,从而允许参数化客户端对象以传递请求,也允许将请求排队、记录请求日志以及支持可撤销的操作。使得发出请求的责任和执行请求的责任分割开。这样两者间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用与管理。
2024-02-29 10:09:00
791
原创 策略 ( Strategy ) 模式
策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为,以使不同的算法可以互相替代。策略模式将算法封装成一系列的对象,每个对象都代表一个具体的算法,然后客户端代码可以在不修改其结构的情况下选择要使用的算法。:策略模式定义了一个策略接口,其中包含一个或多个算法方法的声明。这些方法通常不包含具体的实现,而是由具体策略类来实现。:具体策略类实现了策略接口,并提供了算法的具体实现。每个具体策略类代表了一种算法的变体,可以根据需要创建多个不同的具体策略类。
2024-02-29 10:07:14
625
原创 模版方法模式
抽象类是模板方法模式的核心组件之一。它定义了模板方法,该方法是算法的骨架,包含了算法的基本步骤。抽象类可能包含一个或多个抽象方法,这些方法由子类来实现,用于定制算法的特定步骤。抽象类可以包含一些具体方法,这些方法可以有默认实现,子类可以选择性地覆盖。
2024-02-29 10:05:46
882
原创 结构型模式
结构型设计模式是一类解决对象组合以形成更大、更复杂结构的设计问题的设计模式。这些模式涉及到对象的组合,以便形成更大的功能单元,同时保持这些对象之间的松耦合。这些结构型模式提供了不同的方法来处理对象之间的组合和接口问题,帮助开发人员构建更灵活、可维护和可扩展的软件系统。选择适当的结构型模式取决于设计需求和系统架构。
2024-02-29 10:02:39
673
原创 享元 ( Flyweight ) 模式
享元模式(Flyweight Pattern)是一种结构型设计模式,其主要目的是减少应用程序中相似对象的数量,从而节省内存或提高性能。这一模式的核心思想是共享对象,即将大量的相似对象中可复用的部分抽取出来,以节省系统资源。
2024-02-29 09:54:17
1135
原创 组合 ( Composite ) 模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树状结构以表示"部分-整体"的层次结构。这种模式使得客户端代码可以一致地处理单个对象和对象组合,而不必关心它们的具体类型。
2024-02-29 09:51:13
653
原创 外观 ( Facade ) 模式
外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简化复杂系统的接口,用于与系统交互。外观模式通过创建一个高级别的接口,将一组相关的子系统接口封装在一起,以提供更简单、更统一的接口给客户端使用。外观模式的核心思想是将复杂系统的内部结构隐藏起来,只暴露出一个简化的接口,使客户端可以更容易地与系统交互,而不必了解系统的复杂性。这有助于降低客户端与系统之间的耦合度,并提供了一种更高级别、更易用的界面。。
2024-02-29 09:49:31
809
原创 桥接模式(Bridge Pattern)
桥接模式是一种结构型设计模式,它的主要目的是将抽象部分和实现部分分离,以便它们可以独立地变化。桥接模式通过将抽象和实现分离来实现这一目标,使得两者可以在不相互影响的情况下进行扩展。桥接模式的关键思想是通过将抽象部分和实现部分分离,使得它们可以独立地扩展和变化。抽象部分和实现部分之间的连接由抽象部分中的引用建立,客户端通过抽象部分来与具体实现部分交互,实现了解耦合的目标。
2024-02-23 11:02:21
1118
原创 装饰器模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许在不修改现有对象代码的情况下,动态地将新行为或责任添加到对象上。这种模式通常被用于扩展一个对象的功能,而不是通过子类化来实现扩展。
2024-02-23 10:58:37
773
原创 适配器模式
适配器模式(Adapter Pattern)是一种常见的设计模式,它属于结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口,从而使两者能够协同工作。适配器模式主要用于解决接口不兼容的问题,它允许不同接口的类协同工作,而不需要修改它们的源代码。
2024-02-23 10:55:15
1169
原创 代理模式(Proxy Pattern)
代理模式是一种结构型设计模式,用于控制对其他对象的访问。代理模式在访问对象时引入了一个代理对象,这个代理对象可以充当访问对象的接口,以控制对实际对象的访问。代理模式可以用于多种情况,包括延迟加载、访问控制、监视和远程代理等。
2024-02-23 10:52:50
1147
原创 计网应用层
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。是解决通过应用进程的交互来实现特定网络应用的问题。早期的应用是基于文本的应用,例如电子邮件、远程登录、文件传输、新闻组。20世纪90年代将因特网带入千家万户的万维网www。到当今流行的即时通信、P2P文件共享及各种音视频应用。计算机设备的小型化和“无处不在”,宽带住宅接入和无线接入的日益普及和迅速发展,给未来更多的新型应用提供了广阔的舞台。
2024-02-23 10:48:53
1015
原创 计网运输层
物理层、数据链路层以及网络层共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。但是实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
2024-02-23 10:35:11
1037
原创 计网网络层
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。网络层向传输层提供的是可靠传输还是不可靠传输服务。网络层寻址问题路由选择问题因特网是目前全世界用户数量最多的互联网,其使用的是TCP/IP协议栈。由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
2024-02-23 10:32:05
1410
原创 数据链路层
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
2024-02-17 10:39:29
886
原创 创建型模式
创建型模式(Creational Design Patterns)是一种设计模式的分类,用于解决对象创建过程中的复杂性和灵活性问题。这些模式关注对象的创建机制,以确保系统在创建对象时能够以合适的方式进行管理。
2024-02-17 10:33:46
931
原创 建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它用于构建复杂对象,将对象的构建过程与其表示分离,这样可以创建不同类型的对象,而不必直接暴露对象的内部细节。这有助于简化对象的构建,提高可维护性,并允许灵活地配置对象的各个部分。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一 个复杂的对象。
2024-02-17 10:22:12
1449
原创 原型设计模式
原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制(克隆)现有对象来创建新对象,而无需显式地使用构造函数创建新对象。这种模式通常用于创建成本较高或复杂的对象,以避免重复的初始化工作。
2024-02-17 10:19:31
1167
原创 工厂设计模式
工厂模式(Factory Pattern)是一种创建型设计模式,用于创建对象的过程中将对象的创建和使用分离开来。它通过提供一个通用的接口来创建对象,而不需要暴露对象的具体实现细节。工厂模式有助于降低代码的耦合性,提高代码的可维护性和可扩展性。
2024-02-17 10:16:24
1109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人