- 博客(25)
- 收藏
- 关注
原创 设计模式之装饰器模式
装饰器模式是一种结构型设计模式,它允许我们在不改变原有对象结构的情况下,动态地给对象增加一些职责(即增加其额外功能)。其核心在于通过组合而非继承的方式来扩展对象的功能。Component: 这是抽象组件接口,所有的具体组件和装饰器都必须实现这个接口。Concrete Component: 具体组件,这是我们要装饰的基本对象,它实现了Component接口。Decorator: 抽象装饰器,也是实现Component接口的,它包含一个对Component类型的引用,通常在构造函数中初始化。
2024-06-05 21:00:00 2168 1
原创 设计模式之代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,它允许我们为某个对象提供一个代理对象,并由代理对象控制对原对象的访问。这种设计模式可以在不改变原始类(或称为被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理设计模式是一种强大且灵活的设计模式,它可以在不修改原始类代码的情况下为原始类添加额外的功能。通过静态代理和动态代理两种方式,我们可以根据具体的应用场景选择合适的实现方式。同时,我们也需要注意到代理设计模式的优缺点,以便在实际应用中做出最佳的选择。
2024-05-28 22:00:00 1027
原创 设计模式之原型模式
原型模式是一种创建型设计模式,它通过复制现有对象(原型)来创建新对象,而不需要从头开始创建。这种模式允许我们在运行时根据需要动态地复制对象,同时保持高性能和最小化资源消耗。原型模式的核心在于定义了一个可以克隆自身的接口,这样就可以通过已经存在的实例来快速生成具有相同或相似状态的新实例,而不需要关注对象创建的具体细节。原型设计模式是一种强大的设计模式,它允许我们通过复制对象来创建新的对象,从而提高了对象的创建效率。
2024-05-26 14:29:52 974
原创 设计模式之建造者模式
Builder模式,即建造者模式,也被称作生成器模式,属于创建型设计模式的一种。它旨在将一个复杂对象的构建过程与其表示过程分离,使得同样的构建过程可以创建不同的表示。此模式的核心思想是将复杂对象的构建分解成一系列步骤,并将这些步骤封装在独立类中,即所谓的建造者类,以实现构建和表示的解耦。建造者模式的核心在于“变与不变”的分离。在软件系统中,经常面临的情况是某些对象的组成部分(即不变的部分)是固定的,但这些部分的组合方式(即变化的部分)可能会频繁地变化。
2024-05-15 20:00:00 831
原创 如何解决IntelliJ IDEA中pom.xml依赖项引发的安全漏洞黄线警告问题
采用上述方法来“消除”警告,实质上是一种自欺欺人的策略。它或许能暂时让警告消失,给了我们一种虚假的安全感,但深知在光鲜的外表下,潜在的问题依旧存在,像定时炸弹一样随时可能引发安全风险。所以,建议大家直面这些警告,仔细地识别和解决每项安全隐患,虽然这可能需要投入更多的时间和精力。
2024-05-12 16:16:42 1602 1
原创 设计模式之工厂模式
工厂模式是一种创建型设计模式,其核心思想是将对象的创建与使用分离,即客户端代码不再直接负责对象的创建,而是通过一个或多个工厂类来负责。这样,客户端代码只需关心如何使用对象,而无需关注对象的创建细节。工厂模式使得对象的创建过程更加灵活和可配置,从而提高了代码的可维护性和可扩展性。工厂模式是一种非常实用的设计模式,它通过将对象的创建与使用分离,使得代码更加灵活和可扩展。在实际项目中,我们可以根据具体的需求选择合适的工厂模式来实现对象的创建。同时,我们也需要注意避免过度使用工厂模式,以免增加系统的复杂性。
2024-05-11 21:00:00 770 1
原创 设计模式之单例模式
单例模式是一种创建型设计模式,目的在于保证一个类仅有一个实例,并通过一个全局访问点提供对该实例的访问。这种模式的优势在于,它有助于在系统中维护某些资源的唯一性,例如配置信息、数据库连接等,防止资源的重复创建和浪费。私有构造函数:确保外部代码不能通过常规方式创建该类的实例(如通过new创建实例)。静态实例属性:用于保存单一实例的引用,并确保其唯一性。公有静态方法:提供一个访问点,使外部能够获取到唯一的实例。线程安全措施:在多线程环境中确保实例的唯一性不受影响。
2024-05-10 22:15:00 1604
原创 开篇:设计原则揭秘
设计原则是构建健壮、可维护和可扩展系统的核心驱动力。通过深入理解和应用这些原则,我们可以提高代码的质量、降低维护成本,并更好地应对不断变化的业务需求和技术挑战。在实际开发中,我们应该根据项目的具体需求和特点来灵活运用这些原则,以构建出更加优秀的软件产品。同时,我们也需要不断学习和探索新的设计原则和技术,以应对日益复杂的软件开发挑战。
2024-05-10 22:00:00 718
原创 Java内存模型:起源、背景与深入剖析
Java内存模型是Java并发编程的基石,它定义了线程之间共享变量的访问规则。了解JMM的可见性、原子性和有序性,以及Happens-Before规则等,对于编写高效且线程安全的Java程序至关重要。在实际开发中,我们应该充分利用JMM提供的机制,如volatile关键字、synchronized关键字和java.util.concurrent包中的工具类,来确保程序的正确性和性能。
2024-04-26 21:15:00 688
原创 深入理解CAS(Compare And Swap)技术
通过深入分析CAS技术的工作原理、实际应用案例以及其优势和潜在限制,我们可以更好地利用CAS技术来提高并发性能。当然,CAS技术并不是万能的,但在适当的场景下,CAS可以极大地提高程序的性能和响应能力。通过本文,希望各位读者能够对CAS有更深入的理解,并在实际开发中灵活运用这一技术。
2024-04-19 22:15:00 954 1
原创 深入理解Java线程池:原理、使用与实践
线程池的参数对于其性能和行为具有重要影响。corePoolSize(核心线程数):线程池中的常驻核心线程数。即使这些线程处于空闲状态,也不会被销毁。maximumPoolSize(最大线程数):线程池中能够容纳的最大线程数。keepAliveTime(线程空闲时间):多余的空闲线程的存活时间。当线程池中的线程数量超过corePoolSize,且线程的空闲时间达到keepAliveTime时,这些多余的空闲线程会被销毁,直到线程数量减少到corePoolSize为止。
2024-04-18 20:45:00 802
原创 揭秘ThreadLocal:Java线程局部变量的实现机制
ThreadLocal是Java中的一个类,它允许你创建线程本地变量,这些变量在每个线程中都有独立的副本。这样,每个线程都可以独立地改变自己的ThreadLocal变量副本,而不会影响其他线程的副本。首先,我们来看一下ThreadLocal的基本使用方法。// 创建一个ThreadLocal对象// 启动两个线程// 设置线程本地变量的值}).start();// 设置线程本地变量的值}).start();
2024-04-16 14:39:56 879
原创 探索Java Collections:HashMap源码深度分析
HashMap是一种基于数组和链表或红黑树(自JDK 1.8起引入)实现的哈希表结构。它允许null键和null值,是非线程安全的,并且不保证映射的顺序。JDK 1.8对HashMap进行了显著的性能优化,特别是在处理大型数据集时,通过引入红黑树的数据结构来替代传统的链表,从而有效避免了在极端情况下链表过长导致的性能问题。红黑树作为一种自平衡的二叉查找树,确保了在最坏情况下仍然能保持较好的查找和插入性能。
2024-04-08 14:08:34 917
原创 Java中隐藏的性能优化之Integer缓存揭秘
Integer缓存机制是Java 5中引入的一项优化措施,它针对自动装箱过程中整数值的频繁使用进行了优化。这种机制特别适用于-128到127之间的整数值,因为这个范围内的整数值在实际应用中使用最为频繁。通过缓存这些常用的整数值,可以避免在自动装箱时频繁地创建和销毁对象,从而减少了内存的消耗。
2024-04-06 00:36:24 585 1
原创 Api接口加解密
接口加解密是确保数据安全的关键技术之一,其通过对传输中的数据进行加密来防止数据在传递过程中被拦截、篡改或伪造。但是,单靠加解密技术并不足以应对所有安全挑战。必须整合多种安全策略,建立一个全方位的安全防护体系,以确保接口的全面安全。
2024-04-02 19:00:00 382 1
原创 函数式接口
定义:有且仅有一个抽象方法,但可以有多个非抽象方法的接口。在Java 8中,函数式接口被专门存放于包内,并且该包下的所有接口都使用@FunctionalInterface注解进行标记,这是Java 8为了支持函数式编程而引入的一个新特性。除了java.util.function包中的函数式接口外,其他包中也存在一些函数式接口(例如java.lang.Runnable),其中有些并没有使用 @FunctionalInterface注解进行标注。
2024-03-21 17:16:56 284
原创 Spring Boot 自动配置原理分析
Spring Boot最核心的功能就是自动配置,功能的实现都是基于约定优于配置的原则。那么Spring Boot是如何约定?又是如何实现自动配置功能的呢?下面我们来分析一下。我们开发Spring Boot项目的时候,都会用到如下的启动类:@SpringBootApplicationpublic class Application{ public static void main(String[] args) { SpringApplication.run(Application
2020-11-22 17:49:40 256 1
原创 IntelliJ IDEA教程:如何更改项目的远程Git仓库地址
在使用IntelliJ IDEA进行Git版本控制时,有时我们需要更改项目的远程Git仓库地址。这可能是因为仓库迁移、权限变更或者其他种种原因。本教程将指导你如何在IntelliJ IDEA中轻松更改项目的远程Git仓库地址。
2020-08-09 15:49:32 1957 1
原创 过期键的删除策略
前言首先要说明的是,redis的内存淘汰策略与redis的过期键删除策略并不完全相同,前者是在redis内存使用超过一定值的时候使用的淘汰策略;而后者是通过定期删除+惰性删除两者结合的方式进行内存淘汰的。缓存,不是存储,无法保证以前设置的缓存绝对存在。因为缓存容量是有上限的,即使set值的时候不设置过期时间,在内存不够的时候,也是会根据内存淘汰策略删除一些数据的。在开始之前请思考:过期后会立即释放内存吗?设置过期时间expire key seconds (这是最常用的方式)setex ke
2020-06-17 14:37:15 142
原创 内存淘汰策略
作为一个内存数据库,redis在内存空间不足的时候,为了保证命中率,就会选择一定的数据淘汰策略,这篇文章主要讲解常见的几种内存淘汰策略。参数设置redis可以通过maxmemory配置,来设置占用的最大内存,如果不设置或者设置为0,那么在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。可以通过以下两种方式进行设置:配置文件redis.conf中设置 (推荐)使用命令设置,config set maxmemory (redis服务重启之后,设置的将失效)127.0.0.1
2020-06-16 13:12:16 287
原创 数据结构之二分搜索树
什么是二叉树在理解二分搜索树之前,我们先来看看二叉树是什么。二叉树是一种动态的数据结构,每个节点最多只有两个叉,也就是两个孩子节点,分别叫做左孩子,右孩子,而没有一个孩子的节点叫做叶子节点。每个节点最多有一个父亲节点,二叉树的起始节点,是唯一没有父亲节点的节点,叫做根节点。二分搜索树特点:二分搜索树是一颗二叉树,满足二叉树的所有定义。二分搜索树的每个节点的值,大于其左子树的所有节点的值...
2020-04-10 19:43:43 156
原创 分布式事务之浅谈JDBC事务与JTA事务
Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。所以本文暂不讨论容器事务。本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务。JDBC事务JDBC的一切行为包括事务是...
2019-10-07 22:30:58 312
原创 分布式事务之浅谈数据库事务
事务是什么是以一种可靠,一致的方式,访问和操作数据库中的程序单元。事务的ACID原则原子性 :事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行。持久性:一个事务一旦提交,他对数...
2019-10-05 22:12:25 233
原创 SpringCloud微服务之Eureka配置
环境springboot版本 2.1.4.RELEASEspringcloud版本 Greenwich.SR1jdk1.8maven 3.6.0idea 2017.3单节点配置Eureka Serverpom.xml启动类添加注解application.yml开启身份认证 关闭CSRF防护@EnableWebSecurity@Configur...
2019-08-10 22:46:13 207
原创 IntelliJ IDEA 必备插件精选(持续更新)
IntelliJ IDEA作为一款非常强大的集成开发环境(IDE),不仅内置了丰富的功能来助力开发者提升生产力,更可通过加装精选插件,进一步拓展其效能。在本文中,我将推荐几款我个人认为非常有用的IDEA插件,希望能为大家带来实质性的帮助和便利。
2019-08-04 11:36:59 292 1
JDK 17 Windows x64 安装程序
2024-05-30
CentOS-7-x86-64-Minimal-2009.iso
2024-05-30
心跳告白页-七夕特供(简易版)
2024-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人