
Java
文章平均质量分 93
记录java主要知识点
RainbowJier
A Software Development Engineer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot 使用 SLF4J 实现控制台输出与分类日志文件管理
本文介绍如何在Spring Boot项目中实现高效日志管理。通过SLF4J+Logback组合,配置日志系统实现:控制台实时输出、按级别分类保存(info.log/error.log)、按日期滚动存储、统一logs目录管理。提供了完整的logback.xml配置文件示例,包含日志格式定义、按级别过滤、60天历史保留等关键设置。项目启动后,logs目录将自动生成分级日志文件,满足开发和运维需求,为系统调试和问题排查提供有力支持。原创 2025-06-05 20:50:09 · 715 阅读 · 0 评论 -
Maven的生命周期
Maven的生命周期是一系列预定义的构建阶段,用于自动化和标准化项目构建过程。它包含三个核心生命周期:默认生命周期(负责编译、测试、打包和部署)、清理生命周期(清除构建输出)和站点生命周期(生成项目文档)。每个生命周期由多个有序阶段组成,如默认生命周期包括validate、compile、test、package等阶段。Maven通过这些生命周期组合管理项目构建全流程,确保构建过程的一致性和可重复性,使开发者能专注于业务逻辑而非构建细节。原创 2025-06-05 11:06:24 · 897 阅读 · 0 评论 -
深入理解ThreadLocal:线程安全的“独享空间”
ThreadLocal是 Java 提供的一种用于线程本地存储的工具类,它可以为每个线程提供独立的变量副本,从而实现线程隔离。主要用于在多线程环境下存储线程独有的数据,避免多个线程间共享变量带来的数据一致性问题。原创 2025-03-20 21:09:15 · 1149 阅读 · 0 评论 -
线程池-抢票系统性能优化
Java线程池是一种用于优化线程使用和管理的工具,它通过复用一定数量的线程来执行多个任务,从而减少了创建和销毁线程的开销,提高了程序的性能和响应速度。在前面,我们通过创建多个线程模拟抢票场景,并且使用加锁的方式解决了车票超卖的问题。‼️当用户量较大时,就需要频繁的创建线程对象、释放线程对象,十分麻烦。池化后,性能得到了质的飞跃🚀。Java中的线程池是通过。接口及其子类来实现的。原创 2025-02-11 14:22:24 · 651 阅读 · 0 评论 -
Java多线程模拟售票超卖问题-解决方法
多个线程各自占有一些共享的资源,并且相互等待其他线程占有的资源才能运行,从而导致两个线程都在等待对象释放资源。上述情况明确指向了线程同步机制的重要性。在并发编程中,为确保操作的正确性和数据的一致性,必须采取有效的。:Thread 类是通过继承实现,但是一个类只能继承一个父类,所以具有一定的局限性。多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低。这种基于随机选择而非严格遵循请求顺序的锁称为非公平锁。访问资源时在空闲等待时同时访问其他资源,措施来避免竞态条件的发生。Java 的线程池(如。原创 2025-02-10 16:07:12 · 1141 阅读 · 0 评论 -
Java-反射机制
反射机制允许程序在执行期借助于 ReflectionAPI 取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。加载完类之后,在堆中就产生了一个 Class 类型的对象(一个类只有一个 Class 对象),这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的称之为反射。原创 2024-10-16 14:24:30 · 717 阅读 · 0 评论 -
Java-集合框架
Java的集合框架提供了一组用于存储、管理和操作数据的类和接口。这个框架提供了各种数据结构,如列表、集合、队列和映射,以满足不同的数据处理需求。CollectionMap两大类。原创 2023-10-11 23:56:02 · 269 阅读 · 0 评论 -
Java-多线程
多线程编程是现代软件开发不可或缺的一部分,但也存在复杂性和挑战。通过深入理解多线程的原理和最佳实践,开发人员可以更好地利用多核处理器,提高程序性能和响应性,同时避免潜在的线程安全问题。本博客提供了一个较为基础的多线程编程指南,帮助开发人员入门这一重要领域的技能。原创 2023-10-08 08:27:27 · 211 阅读 · 0 评论 -
Java-包装类
通过这种方式,您可以更清晰地呈现每个注解的信息和源码分析,使读者更容易理解和学习Java常用包装类的使用。在父类中,AbstractStringBuilder有属性char[] value,用于存储字符,不是final修饰;字符序列存放AbstractStringBuilder的char[] value数组,因此存放在堆中。装箱是将基本数据类型转为对应的包装类对象的过程,可以直接通过赋值或者方法调用。拆箱是将包装类对象转为基本数据类型的过程,它可以直接通过赋值或者方法调用完成。一个可变的字符序列。原创 2023-10-08 08:07:24 · 124 阅读 · 0 评论 -
Java-Annotation(注解)
Java注解(Annotation)是Java编程语言中的一个重要特性,它们提供了一种在源代码中添加元数据信息的方式,以便在编译、运行时或工具处理时使用。本文将深入探讨Java注解的核心概念和用途。原创 2023-10-08 08:01:36 · 146 阅读 · 0 评论 -
Java-Exception
当程序中出现了某些“错误”,但该类错误信息并没有在Throwable子类中描述处理,这个时候可以自定义异常类,用于描述该错误信息自定义异常步骤自定义异常类;如果继承Exception,属于编译类型异常;如果继承RuntimeException,属于运行时异常(通过继承RuntimeException)super();通过自定义异常类提供多个构造函数,以便能够传递异常消息和可能的原因(Throwable这样可以让您的异常提供更多信息,以便于调试和理解问题。原创 2023-10-08 08:03:08 · 317 阅读 · 0 评论