- 博客(53)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Java Stream API: 如何优雅地操作集合类
本文介绍了Java Stream API的概念及其常见的操作。Stream API为集合操作提供了一种优雅、高效的编程方式,可以大大简化代码的编写和维护,并且支持并行化处理,提升数据处理的效率。
2023-06-12 21:58:54
1523
原创 Java中transient关键字的详细总结
一、概要介绍Java中的transient关键字,transient是短暂的意思。对于transient 修饰的成员变量,在类实例的序列化处理过程中会被忽略。 因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里持久化。(1)序列化Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对...
2018-06-14 22:15:12
143971
13
原创 Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)
本文从Java的内存模型和线程的工作原理出发,对volatile关键字进行介绍。帮助读者深入理解volatile的工作机制。同时,还通过简单易懂的示例讲解了如何正确地使用volatile关键字实现线程安全,避免常见的多线程安全问题。
2018-06-13 17:28:14
248879
146
原创 Java中各类修饰符的使用总结(看完这篇就够了)
引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分 b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员。
2018-06-07 18:45:24
60140
22
原创 深入理解Java的final关键字
1.final关键字有几种用法(1)修饰变量 # 用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。final修饰的变量可以先声明,后赋值。 # final修饰基本类型时,起到常量的作用,基本类型的值不可变。 final修饰引用类型时,不能再指向其他的对象,但被引用的对象 的值是可以改变的(引用变量的值 实际上是它所引用的对象的地址)。 ...
2018-06-05 13:36:30
18615
1
原创 Java设计模式之组合模式深度剖析
组合模式是一种结构型设计模式,通过树形结构表示部分-整体层次关系,使客户端能统一处理单个对象和对象组合。其核心价值在于简化复杂结构的创建与操作,提供统一的处理接口,支持递归组合和灵活扩展。模式包含Component抽象接口、Leaf叶子节点和Composite复合节点三个主要角色,通过透明模式(统一接口)或安全模式(分离接口)实现。典型应用场景包括文件系统、组织架构等层次结构,通过递归操作实现对整个结构的统一管理。代码实现展示了文件系统的透明模式实现,包含基础组件、文件和目录类,以及递归显示和计算大小的功能
2025-11-20 19:21:57
976
原创 初识JVM:揭开 Java 虚拟机的神秘面纱
**JVM(Java虚拟机)是Java生态的核心执行引擎,具备平台无关性、自动内存管理、安全沙箱和性能优化等核心能力。其架构主要包括类加载子系统、运行时数据区和执行引擎三大模块,通过双亲委派模型实现类加载,采用堆内存分区管理和垃圾回收机制。JVM支持解释执行与即时编译(JIT)协同工作,利用分层编译策略和代码缓存优化性能。主流实现包括HotSpot、OpenJ9等,其中HotSpot占据90%以上市场份额。随着Java版本演进,JVM不断引入G1、ZGC等创新垃圾收集器,持续提升运行效率和稳定性。
2025-11-18 17:06:48
95
原创 Java设计模式之桥接模式:解耦抽象与实现的艺术
桥接模式是一种解耦抽象与实现的结构型设计模式,通过组合替代继承,使二者能独立变化。其核心思想是正交分解系统维度,通过抽象层(Abstraction)和实现层(Implementor)分离,避免类爆炸问题。典型应用场景包括跨平台UI开发(如不同渲染引擎)和数据库驱动设计(多数据库支持)。该模式符合开闭原则,运行时动态绑定实现,仅需n+m个类即可支持n*m种组合情况,显著提升系统扩展性。
2025-11-17 14:53:36
899
原创 Java 设计模式之适配器模式:系统集成的万能接口
适配器模式是一种结构型设计模式,用于解决接口不兼容问题,使不同接口的类能够协同工作。主要包含目标接口(Target)、被适配者(Adaptee)和适配器(Adapter)三个角色。适配器模式有两种实现方式:对象适配器(通过组合实现)和类适配器(通过继承实现),前者更灵活且推荐使用。该模式适用于遗留系统集成、跨平台开发等场景,能实现接口转换、代码复用和解耦隔离。典型应用包括统一不同日志系统、适配不同UI组件等,是处理接口兼容问题的优雅解决方案。
2025-11-14 18:57:04
1013
原创 Java设计模式之原型模式深度解析
摘要: 原型模式是一种创建型设计模式,通过复制现有对象创建新对象,避免重复初始化。核心特点包括对象自复制、绕过构造函数和动态对象创建。模式结构包含原型接口、具体原型类、客户端和注册管理器。实现时需区分浅克隆(共享引用)和深克隆(完全独立副本),可通过序列化实现通用深克隆。典型应用场景包括游戏角色复制、配置管理和事务快照。优化技巧如原型池可提升性能,适用于创建成本高的对象。该模式是工厂方法替代方案,遵循开闭原则和依赖倒置原则。
2025-11-14 17:13:16
1079
原创 Java设计模式之建造者模式(Builder)详解
建造者模式是一种创建型设计模式,用于分步骤构建复杂对象,特别适合多参数配置或复杂初始化场景。其核心价值在于分离构造与表示,通过链式调用提供流畅API,支持参数灵活组合和构造过程可控。典型应用包括复杂对象创建、多参数配置和不可变对象构建等。模式结构包含指挥者、抽象建造者、具体建造者和产品四个角色,体现了单一职责、开闭等设计原则。代码实现中,产品类封装复杂对象属性,建造者接口定义构建步骤,具体建造者实现细节,指挥者控制流程。该模式优化了对象创建过程,提高了代码可读性和可维护性。
2025-11-13 16:22:08
1330
原创 Java设计模式之抽象工厂模式详解
摘要: 抽象工厂模式是一种创建型设计模式,用于生成相关对象的家族(产品族)而无需指定具体类。它通过抽象接口隔离实现,支持跨平台UI、数据库访问等场景,确保产品一致性。模式结构包含抽象工厂、具体工厂和产品层次,扩展时符合开闭原则(新增产品族不修改代码)。优点是解耦客户端与产品、便于切换产品族;缺点是增加新产品种类需修改接口,可能过度设计。实际应用如Spring的多数据库访问层,可通过配置切换具体工厂。
2025-11-11 09:28:52
658
原创 Java设计模式之单例模式(实现、应用的详细总结)
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例的访问方法。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求调用。总之,选择单例模式就是为了避免不一致状态。
2025-05-07 18:29:22
146
原创 Java设计模式之工厂方法模式:Java对象创建利器
工厂方法模式(Factory Method Pattern)属于创建型模式家族,其核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这种模式将类的实例化延迟到子类,完美解决简单工厂模式违反开闭原则的问题。工厂方法模式是经典的创建型模式,通过子类延迟绑定对象创建,为构建灵活可扩展的系统提供了优雅的解决方案。将对象创建与使用分离,使代码更加模块化、易于维护和扩展。当你看到代码中遍布new关键字时,不妨想想是否可以用工厂方法模式来重构,让代码变得更加优雅和健壮。学习建议。
2025-04-14 18:40:12
912
原创 初识23种设计模式:分类、原理与实际应用
本文深入剖析了软件开发中至关重要的23种设计模式,涵盖了创建型、结构型和行为型三大类别。通过简明扼要的原理介绍、作用阐述及具体使用场景分析,帮助读者全面理解并掌握这些设计模式的精髓。无论你是初涉软件开发的新手,还是经验丰富的工程师,本文都将为你提供宝贵的参考与启示,助力你打造出更加健壮、灵活且易于维护的软件系统。
2024-04-08 19:32:19
1379
原创 IntelliJ IDEA快捷键大全(中英文对照):提升编程效率的必学秘籍!
本博客介绍了IDEA的各类快捷键,从基础的文件操作、代码编辑到高级的调试和版本控制功能。通过本文,你将学会如何更快速地完成代码编写、代码格式化、代码导航、代码调试等任务。这些快捷键将帮助你在IDEA中更加游刃有余,提升编程效率。
2024-03-04 16:12:58
1182
原创 Java设置session过期时间的几种方法(亲测有效)
本文介绍了Java中如何设置Session会话对象的过期时间。首先介绍了Session的基本概念和过期时间的意义,然后给出了配置Session的过期时间的四种方法
2024-01-08 19:36:32
6869
原创 Java集合类详解:概述、优点、实现与应用
Java集合类提供了动态存储、高效的数据访问和操作等特性,大大简化了开发过程并提高了代码效率。本文将从多个方面详细介绍Java集合类的概念、基本结构、常见实现、操作方法以及性能优化和扩展,帮助读者全面掌握和应用这一关键工具。
2023-06-13 22:14:00
1269
原创 深入理解Java抽象类:定义、特点与实现
本文将深入介绍Java抽象类的定义、特点以及与普通类的区别,探讨抽象类的实现原理、与接口的区别,讨论抽象类的应用场景和优缺点。
2023-06-02 22:42:55
708
原创 一文读懂JAVA的hashCode方法:原理、实现与应用
本文详细介绍了hashCode的作用和定义、实现原理和重写规则、常见的hashCode实现方法以及hashCode和equals的联系,可以帮助开发者们深入理解和使用hashCode方法。
2023-04-22 21:57:15
1197
原创 深入解析Java中的==和equals方法:如何正确比较对象
本篇博客深入探讨了Java中的"=="和"equals"方法,介绍了它们的概念、原理、代码示例和区别,并给出了适用场景和如何覆盖equals方法的建议。可以帮助读者更好地应用Java中的==和equals方法。
2023-04-15 16:42:18
856
原创 如何正确实现JAVA对象拷贝:深入剖析拷贝机制,避免“拷”入歧途
本篇博客将讲解深拷贝和浅拷贝的区别,介绍JAVA对象拷贝的实现方式,以及详细阐述对象拷贝的激活机制,并提供代码示例。希望你能从本文中获得有价值的知识和经验。
2023-04-06 21:58:17
740
原创 Java如何使用Spring JdbcTemplate向in语句中传递参数
Java如何使用Spring JdbcTemplate和NamedParameterJdbcTemplate向in语句中传递参数
2023-02-02 16:23:05
5561
原创 Linux系统与Tomcat时区不一致的解决方法总结(全)
问题:通常情况下,我们会遇到linux系统时区与其上部署的tomcat时区不一致的问题。最常见的是系统时间为正常的CST中国标准时区(东八区),而tomcat日志时间却比系统时间慢了8个小时。一、准备工作在将解决问题之前,首先要确定系统当前时间是正确的。这里可以通过linux的date命令查看当前时间及时区。1. 如果结果与本地时间或自己想要的效果一致 这种情况可以确定问题是出在tomcat上。可以通过步骤二中所列方法进行解决。2. 如果结果与本地时间或自己想要的效果不一致...
2021-01-06 16:13:59
5918
4
原创 Linux中如何释放交换空间swap
一、Linux内存机制简单介绍 直接从物理内存读写数据要比从硬盘读写数据要快的多(硬盘磁道寻址),因此,我们希望所有数据的读写都在内存完成,但是内存大小是有限的,并且内存价格高于硬盘价格,于是就有了物理内存与虚拟内存的概念。物理内存:系统硬件提供的内存大小,是真正的内存,可用 free -h 查看内存的使用情况。交换内存Swap:交换内存swap是linux下一个虚拟内存的概念,它是利用磁盘空间虚拟出的一块逻辑内存,用于解决物理内存容量不足的问题。可查看swapon -s查看交换内存的...
2020-12-30 10:31:44
20537
1
原创 npm如何设置代理和镜像
由于网络原因,使用npm下载nodejs依赖包时,经常会出现下载失败的情况,这里就需要设置镜像和代理。现将具体操作总结如下:一、设置镜像1.npm设置镜像npm config set registry=镜像地址//设置阿里镜像npm config set registry=https://registry.npm.taobao.org2.npm取消镜像npm config delete registry3.npm查看镜像信息npm config get
2020-12-22 15:24:19
8443
原创 npm安装下载依赖包失败的问题
使用npm下载nodejs依赖包时,会出现下载失败,可以使用如下方法解决:1. npm默认的镜像地址为国外镜像地址npm config get registry# http://registry.npmjs.org 为国外镜像地址从国外镜像地址下载依赖包时,速度很慢甚至会出现异常。因此可以将npm的镜像地址改为国内镜像,阿里镜像:https://registry.npm.taobao.orgnpm config set registry https://registry.npm.tao
2020-12-22 15:16:36
4576
原创 Java 实现JSON字符串、JSON对象和Java对象的相互转换(fastjson)
一、准备工作 定义三个json字符串用于以下测试://json字符串-简单对象String jsonStr = "{\"studentName\":\"张三\",\"studentAge\":18}";//json字符串-数组类型String jsonArrStr = "[{\"studentName\":\"张三\",\"studentAge\":18},{\"studentName\":\"李四\",\"studentAge\":17}]";//json字符串-复杂对象Strin.
2020-11-11 10:34:33
22440
6
原创 Linux系统中MySQL数据库主从搭建(步骤详细、零基础教学)
一、在线安装MySQL数据库wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmsudo rpm -ivh mysql-community-release-el7-5.noarch.rpmsudo yum updatesudo yum install mysql-serversudo systemctl start mysqld二、离线安装MySQL数据库一般来说,如果是公司的生产环境,与外网是不连通的,
2020-11-03 19:19:55
7295
1
原创 Mysql中查看用户、创建用户、删除用户、授权用户、回收授权
一、创建用户1.语法 查看用户没有直接的SQL语句,需要进入 mysql数据库的user表(mysql库和user表是mysql安装后就有的)查看所有用户信息。代码如下:use mysql;select * from user;2. 结果示例:3.注意事项 5.7版本后,移除了password字段, 而是改成了字段authentication_string来存储用户密码。二、创建用户1.语法CREATE USER 'user_name'@'...
2020-10-30 15:51:15
17701
2
原创 Linux系统中修改/etc/sysctl.conf后,如何立即生效
/etc/sysctl.conf是系统控制文件,主要用于用于运行时配置内核参数等系统信息,它的内容全部对应于/proc/sys/目录及其子目录。修改完sysctl.conf中配置信息后,有以下两种方法使其生效:(1)重启机器reboot。但是一般不推荐,因为可能机器上正在运行的程序(2)使用如下命令刷新配置,使其立即生效。/sbin/sysctl -p /sbin/sysctl -w net.ipv4.route.flush=1...
2020-10-20 16:27:59
27976
1
原创 Spring boot项目Fortify漏洞扫描问题解决
一、背景 前段时间公司使用Fortify工具对项目源码进行安全漏洞扫描,结果报出Dynamic Code Evaluation: Unsafe Deserialization漏洞。整个项目是基于Spring boot框架开发的。二、问题源 Fortify工具明确指出该安全漏洞是由于引入了Spring Boot Actuator依赖导致的<dependency><groupId>org.springframework.boot</grou...
2020-09-01 20:22:49
6016
5
原创 Java异常分类总结及try...catch异常捕获处理
一、异常简介Java中所有异常的根是Throwable类。该类有两个子类: Error和Exception。1.Error类 Error也称为错误,通常是由JVM错误或者系统奔溃等引起的,无法通过程序来解决,所以在程序中不需要主动捕捉处理。2.Exception类 Exception类又可以分为Checked异常和Runtime异常。checkedException异常在编译时期就可以知道是否会发生异常,如果不对这些异常进行抛出、捕获的话就无法通过编译。而RuntimeExc...
2020-09-01 20:02:12
6852
原创 Maven依赖冲突的几种有效解决方法总结
一、问题描述 在项目开发中使用Maven管理Jar包时,常常会遇到Jar包依赖冲突。其根本原因是不同Jar包引用了同一Jar包的不同版本,从而在代码调用时,无法确定使用的是哪个版本的Jarba包。二、解决办法 解决这一问题的方法有多种,按照思路分为总结如下:1、第一声明原则 在pom.xml配置文件中,如果有两个名称相同,版本的不同依赖声明,先写的会生效,所以先声明自己要用的版本。这里的名称相同,版本不同的依赖声明,既可以是直接依赖,也可以是传递依赖。例如,b引...
2020-07-20 19:26:04
4712
2
原创 如何将本地Jar包添加到本地的Maven仓库
一、问题描述项目开发过程中,经常遇到项目缺少依赖的问题。这些Jar包无法从远程仓库中下载,究其原因有以下几点:(1)依赖的Jar包是与该项目关联的公司其他项目(2)依赖的Jar包是其他公司开发,并未发布到远程仓库(3)网络原因导致从远程仓库中无法下载Jar包二、解决方案需要将依赖的Jar包从其他途径下载到本地,然后添加到本地仓库。这样在每次构建项目就能够从本地加载到依赖的Jar包。三、操作方法1.打开命令行cmd窗口2.执行mvn install以阿里的oceanba
2020-07-16 19:31:51
6662
2
JAVA面试通关:100道经典JAVA面试题及答案解析
2023-08-25
用什么方法可以识别出UML图所要表达的内容,并把它转换成自然语言
2016-10-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅