自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 设计模式之装饰器模式

装饰器模式是一种结构型设计模式,它允许我们在不改变原有对象结构的情况下,动态地给对象增加一些职责(即增加其额外功能)。其核心在于通过组合而非继承的方式来扩展对象的功能。Component: 这是抽象组件接口,所有的具体组件和装饰器都必须实现这个接口。Concrete Component: 具体组件,这是我们要装饰的基本对象,它实现了Component接口。Decorator: 抽象装饰器,也是实现Component接口的,它包含一个对Component类型的引用,通常在构造函数中初始化。

2024-06-05 21:00:00 2151 1

原创 设计模式之代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它允许我们为某个对象提供一个代理对象,并由代理对象控制对原对象的访问。这种设计模式可以在不改变原始类(或称为被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理设计模式是一种强大且灵活的设计模式,它可以在不修改原始类代码的情况下为原始类添加额外的功能。通过静态代理和动态代理两种方式,我们可以根据具体的应用场景选择合适的实现方式。同时,我们也需要注意到代理设计模式的优缺点,以便在实际应用中做出最佳的选择。

2024-05-28 22:00:00 1015

原创 设计模式之原型模式

原型模式是一种创建型设计模式,它通过复制现有对象(原型)来创建新对象,而不需要从头开始创建。这种模式允许我们在运行时根据需要动态地复制对象,同时保持高性能和最小化资源消耗。原型模式的核心在于定义了一个可以克隆自身的接口,这样就可以通过已经存在的实例来快速生成具有相同或相似状态的新实例,而不需要关注对象创建的具体细节。原型设计模式是一种强大的设计模式,它允许我们通过复制对象来创建新的对象,从而提高了对象的创建效率。

2024-05-26 14:29:52 963

原创 设计模式之建造者模式

Builder模式,即建造者模式,也被称作生成器模式,属于创建型设计模式的一种。它旨在将一个复杂对象的构建过程与其表示过程分离,使得同样的构建过程可以创建不同的表示。此模式的核心思想是将复杂对象的构建分解成一系列步骤,并将这些步骤封装在独立类中,即所谓的建造者类,以实现构建和表示的解耦。建造者模式的核心在于“变与不变”的分离。在软件系统中,经常面临的情况是某些对象的组成部分(即不变的部分)是固定的,但这些部分的组合方式(即变化的部分)可能会频繁地变化。

2024-05-15 20:00:00 823

原创 如何解决IntelliJ IDEA中pom.xml依赖项引发的安全漏洞黄线警告问题

采用上述方法来“消除”警告,实质上是一种自欺欺人的策略。它或许能暂时让警告消失,给了我们一种虚假的安全感,但深知在光鲜的外表下,潜在的问题依旧存在,像定时炸弹一样随时可能引发安全风险。所以,建议大家直面这些警告,仔细地识别和解决每项安全隐患,虽然这可能需要投入更多的时间和精力。

2024-05-12 16:16:42 1092 1

原创 设计模式之工厂模式

工厂模式是一种创建型设计模式,其核心思想是将对象的创建与使用分离,即客户端代码不再直接负责对象的创建,而是通过一个或多个工厂类来负责。这样,客户端代码只需关心如何使用对象,而无需关注对象的创建细节。工厂模式使得对象的创建过程更加灵活和可配置,从而提高了代码的可维护性和可扩展性。工厂模式是一种非常实用的设计模式,它通过将对象的创建与使用分离,使得代码更加灵活和可扩展。在实际项目中,我们可以根据具体的需求选择合适的工厂模式来实现对象的创建。同时,我们也需要注意避免过度使用工厂模式,以免增加系统的复杂性。

2024-05-11 21:00:00 754 1

原创 设计模式之单例模式

单例模式是一种创建型设计模式,目的在于保证一个类仅有一个实例,并通过一个全局访问点提供对该实例的访问。这种模式的优势在于,它有助于在系统中维护某些资源的唯一性,例如配置信息、数据库连接等,防止资源的重复创建和浪费。私有构造函数:确保外部代码不能通过常规方式创建该类的实例(如通过new创建实例)。静态实例属性:用于保存单一实例的引用,并确保其唯一性。公有静态方法:提供一个访问点,使外部能够获取到唯一的实例。线程安全措施:在多线程环境中确保实例的唯一性不受影响。

2024-05-10 22:15:00 1594

原创 开篇:设计原则揭秘

设计原则是构建健壮、可维护和可扩展系统的核心驱动力。通过深入理解和应用这些原则,我们可以提高代码的质量、降低维护成本,并更好地应对不断变化的业务需求和技术挑战。在实际开发中,我们应该根据项目的具体需求和特点来灵活运用这些原则,以构建出更加优秀的软件产品。同时,我们也需要不断学习和探索新的设计原则和技术,以应对日益复杂的软件开发挑战。

2024-05-10 22:00:00 705

原创 Java内存模型:起源、背景与深入剖析

Java内存模型是Java并发编程的基石,它定义了线程之间共享变量的访问规则。了解JMM的可见性、原子性和有序性,以及Happens-Before规则等,对于编写高效且线程安全的Java程序至关重要。在实际开发中,我们应该充分利用JMM提供的机制,如volatile关键字、synchronized关键字和java.util.concurrent包中的工具类,来确保程序的正确性和性能。

2024-04-26 21:15:00 651

原创 深入理解CAS(Compare And Swap)技术

通过深入分析CAS技术的工作原理、实际应用案例以及其优势和潜在限制,我们可以更好地利用CAS技术来提高并发性能。当然,CAS技术并不是万能的,但在适当的场景下,CAS可以极大地提高程序的性能和响应能力。通过本文,希望各位读者能够对CAS有更深入的理解,并在实际开发中灵活运用这一技术。

2024-04-19 22:15:00 872 1

原创 深入理解Java线程池:原理、使用与实践

线程池的参数对于其性能和行为具有重要影响。corePoolSize(核心线程数):线程池中的常驻核心线程数。即使这些线程处于空闲状态,也不会被销毁。maximumPoolSize(最大线程数):线程池中能够容纳的最大线程数。keepAliveTime(线程空闲时间):多余的空闲线程的存活时间。当线程池中的线程数量超过corePoolSize,且线程的空闲时间达到keepAliveTime时,这些多余的空闲线程会被销毁,直到线程数量减少到corePoolSize为止。

2024-04-18 20:45:00 749

原创 揭秘ThreadLocal:Java线程局部变量的实现机制

ThreadLocal是Java中的一个类,它允许你创建线程本地变量,这些变量在每个线程中都有独立的副本。这样,每个线程都可以独立地改变自己的ThreadLocal变量副本,而不会影响其他线程的副本。首先,我们来看一下ThreadLocal的基本使用方法。// 创建一个ThreadLocal对象// 启动两个线程// 设置线程本地变量的值}).start();// 设置线程本地变量的值}).start();

2024-04-16 14:39:56 860

原创 探索Java Collections:HashMap源码深度分析

HashMap是一种基于数组和链表或红黑树(自JDK 1.8起引入)实现的哈希表结构。它允许null键和null值,是非线程安全的,并且不保证映射的顺序。JDK 1.8对HashMap进行了显著的性能优化,特别是在处理大型数据集时,通过引入红黑树的数据结构来替代传统的链表,从而有效避免了在极端情况下链表过长导致的性能问题。红黑树作为一种自平衡的二叉查找树,确保了在最坏情况下仍然能保持较好的查找和插入性能。

2024-04-08 14:08:34 902

原创 Java中隐藏的性能优化之Integer缓存揭秘

Integer缓存机制是Java 5中引入的一项优化措施,它针对自动装箱过程中整数值的频繁使用进行了优化。这种机制特别适用于-128到127之间的整数值,因为这个范围内的整数值在实际应用中使用最为频繁。通过缓存这些常用的整数值,可以避免在自动装箱时频繁地创建和销毁对象,从而减少了内存的消耗。

2024-04-06 00:36:24 542 1

原创 Api接口加解密

接口加解密是确保数据安全的关键技术之一,其通过对传输中的数据进行加密来防止数据在传递过程中被拦截、篡改或伪造。但是,单靠加解密技术并不足以应对所有安全挑战。必须整合多种安全策略,建立一个全方位的安全防护体系,以确保接口的全面安全。

2024-04-02 19:00:00 354 1

原创 函数式接口

定义:有且仅有一个抽象方法,但可以有多个非抽象方法的接口。在Java 8中,函数式接口被专门存放于包内,并且该包下的所有接口都使用@FunctionalInterface注解进行标记,这是Java 8为了支持函数式编程而引入的一个新特性。除了java.util.function包中的函数式接口外,其他包中也存在一些函数式接口(例如java.lang.Runnable),其中有些并没有使用 @FunctionalInterface注解进行标注。

2024-03-21 17:16:56 278

原创 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 214 1

原创 IntelliJ IDEA教程:如何更改项目的远程Git仓库地址

在使用IntelliJ IDEA进行Git版本控制时,有时我们需要更改项目的远程Git仓库地址。这可能是因为仓库迁移、权限变更或者其他种种原因。本教程将指导你如何在IntelliJ IDEA中轻松更改项目的远程Git仓库地址。

2020-08-09 15:49:32 1585 1

原创 过期键的删除策略

前言首先要说明的是,redis的内存淘汰策略与redis的过期键删除策略并不完全相同,前者是在redis内存使用超过一定值的时候使用的淘汰策略;而后者是通过定期删除+惰性删除两者结合的方式进行内存淘汰的。缓存,不是存储,无法保证以前设置的缓存绝对存在。因为缓存容量是有上限的,即使set值的时候不设置过期时间,在内存不够的时候,也是会根据内存淘汰策略删除一些数据的。在开始之前请思考:过期后会立即释放内存吗?设置过期时间expire key seconds (这是最常用的方式)setex ke

2020-06-17 14:37:15 122

原创 内存淘汰策略

作为一个内存数据库,redis在内存空间不足的时候,为了保证命中率,就会选择一定的数据淘汰策略,这篇文章主要讲解常见的几种内存淘汰策略。参数设置redis可以通过maxmemory配置,来设置占用的最大内存,如果不设置或者设置为0,那么在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。可以通过以下两种方式进行设置:配置文件redis.conf中设置 (推荐)使用命令设置,config set maxmemory (redis服务重启之后,设置的将失效)127.0.0.1

2020-06-16 13:12:16 278

原创 数据结构之二分搜索树

什么是二叉树在理解二分搜索树之前,我们先来看看二叉树是什么。二叉树是一种动态的数据结构,每个节点最多只有两个叉,也就是两个孩子节点,分别叫做左孩子,右孩子,而没有一个孩子的节点叫做叶子节点。每个节点最多有一个父亲节点,二叉树的起始节点,是唯一没有父亲节点的节点,叫做根节点。二分搜索树特点:二分搜索树是一颗二叉树,满足二叉树的所有定义。二分搜索树的每个节点的值,大于其左子树的所有节点的值...

2020-04-10 19:43:43 143

原创 分布式事务之浅谈JDBC事务与JTA事务

Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。所以本文暂不讨论容器事务。本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务。JDBC事务JDBC的一切行为包括事务是...

2019-10-07 22:30:58 299

原创 分布式事务之浅谈数据库事务

事务是什么是以一种可靠,一致的方式,访问和操作数据库中的程序单元。事务的ACID原则原子性 :事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行。持久性:一个事务一旦提交,他对数...

2019-10-05 22:12:25 230

原创 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 199

原创 IntelliJ IDEA 必备插件精选(持续更新)

IntelliJ IDEA作为一款非常强大的集成开发环境(IDE),不仅内置了丰富的功能来助力开发者提升生产力,更可通过加装精选插件,进一步拓展其效能。在本文中,我将推荐几款我个人认为非常有用的IDEA插件,希望能为大家带来实质性的帮助和便利。

2019-08-04 11:36:59 257 1

SSH远程连接工具(xshell7+xftp7)

SSH远程连接工具(xshell7+xftp7)

2024-06-28

Java贪吃蛇游戏毕业设计(源代码+论文)

Java贪吃蛇游戏毕业设计(源代码+论文)

2024-06-21

hsdis-amd64.dll

hsdis-amd64.dll

2024-06-21

Java游戏设计打飞机程序(源代码+论文)

Java游戏设计打飞机程序(源代码+论文)

2024-06-20

基于Java的视频会议系统(程序+论文)

基于Java的视频会议系统(程序+论文)

2024-06-20

Java图书管理系统毕业设计(源代码+论文)

Java图书管理系统毕业设计(源代码+论文)

2024-06-20

基于java的聊天系统的设计于实现(源代码+论文)

基于java的聊天系统的设计于实现(源代码+论文)

2024-06-12

基于JAVA的网络通讯系统设计与实现(源代码+论文)

基于JAVA的网络通讯系统设计与实现(源代码+论文)

2024-06-12

基于Java的在线购物系统的设计与实现(源代码+论文)

基于Java的在线购物系统的设计与实现(源代码+论文)

2024-06-12

基于Java的远程视频会议系统(系统+论文)

基于Java的远程视频会议系统(系统+论文)

2024-06-12

基于Java的五子棋游戏的设计(源代码+论文)

基于Java的五子棋游戏的设计(源代码+论文)

2024-06-12

java网络爬虫(蜘蛛)源码

java网络爬虫(蜘蛛)源码

2024-06-11

java(结合lucene)版的公交搜索系统

java(结合lucene)版的公交搜索系统

2024-06-11

Java企业进销存管理系统源码

Java企业进销存管理系统源码

2024-06-11

java+毕业设计+扫雷(程序)

java+毕业设计+扫雷(程序)

2024-06-11

JAVA+access综合测评系统毕业设计(源代码+论文+开题报告+任务书)

JAVA+access综合测评系统毕业设计(源代码+论文+开题报告+任务书)

2024-06-11

基于JAVA的ICQ系统的设计与实现

基于JAVA的ICQ系统的设计与实现

2024-06-11

Linux命令大全使用手册

Linux命令大全使用手册

2024-06-05

JDK 17 Windows x64 安装程序

本资源旨在为Java开发人员提供一条在Windows 64位操作系统上轻松设置Java Development Kit 17(JDK 17)的途径。安装流程经过精心优化,通过运行jdk-17.0.10_windows-x64_bin.exe安装文件并跟随直观的安装向导步骤,用户可以毫不费力地完成JDK 17的部署。 在安装过程中,安装程序会自动处理JDK和JRE的集成,无需用户单独安装JRE,从而简化了配置流程。

2024-05-30

CentOS-7-x86-64-Minimal-2009.iso

CentOS-7-x86_64-Minimal-2009.iso是一个针对x86_64架构系统的CentOS 7版本的ISO镜像文件。它包含了运行CentOS操作系统所需的最基本组件和软件包,相较于完整版或桌面版,它没有预装许多额外的应用程序和图形界面,默认情况下更倾向于命令行界面操作。此镜像适用于希望在服务器或虚拟机上部署一个轻量级、资源占用少的Linux环境的用户,适合那些需要高度定制系统或者主要用于服务器应用部署的场景。由于它是Minimal版本,安装后用户可能需要手动安装额外的软件包和工具来满足特定需求。

2024-05-30

Java开发手册(黄山版)

Java开发手册(黄山版)

2024-05-28

心跳告白页-七夕特供(简易版)

七夕快到了,你还在为如何向心仪的TA表白而烦恼吗? 不用担心,我为你准备了这款“心跳告白页”! 打开页面,仿佛进入了一个浪漫的心动世界。页面中心的表白盒子,就像一个充满爱意的小宇宙,它轻轻跳动着,就像你为TA心跳加速的感觉。 页面背景采用了温柔的灰色调,仿佛是一个温暖的拥抱,让人心生暖意。还等什么?赶紧把这个心跳告白页分享给TA吧!让这个七夕,成为你们之间最难忘的美好回忆! 温馨提示:请确保TA对你有同样的感觉哦,不然可能会有点尴尬~

2024-05-13

PostgreSQL Like模糊查询优化方案

使用场景:要求LIKE '%xxx%'模糊查询支持索引,提高数据检索速度

2024-04-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除