- 博客(108)
- 收藏
- 关注
原创 深入解析ConcurrentHashMap:Java高并发容器的实现精髓
本文分享了Java并发容器ConcurrentHashMap的使用心得。作者从实际项目经验出发,介绍了为何需要ConcurrentHashMap及其相较于Hashtable的优势。重点分析了JDK8实现的三大亮点:CAS+synchronized混合锁策略、链表转红黑树优化和多线程协同扩容机制。同时总结了实战中的经验教训,包括初始容量设置、键对象设计和弱一致性理解等。最后给出了性能调优建议,如监控size()调用、关注冲突率等,推荐深入源码学习并发编程思想。
2025-08-25 10:03:52
3885
原创 Java虚拟机故障处理工具全指南
JVM故障处理工具全景指南:从基础到高阶诊断 本文系统介绍了JVM提供的故障诊断工具链,包括命令行工具(jps、jstat、jinfo、jmap、jhat、jstack、jcmd)和可视化工具(jconsole、VisualVM)。详细解析了各工具的核心功能和使用场景:jps用于进程查看、jstat监控GC行为、jmap生成堆转储等。文章提供了实战建议,强调基线数据收集和工具组合使用的重要性,并指出生产环境的使用注意事项。最后还介绍了远程连接、自动化分析等高级技巧,推荐结合Arthas、MAT等专业工具进行
2025-08-20 17:55:57
4682
原创 强引用、软引用、弱引用、虚引用:应用场景与实战指南
本文深入解析Java中的四种引用类型及其应用场景。强引用确保核心对象不被回收,软引用适合实现智能缓存(内存不足时回收),弱引用用于防止内存泄漏(GC时即回收),虚引用则提供对象回收的精确跟踪。最佳实践建议优先使用强引用,根据场景选择软/弱引用实现缓存,利用弱引用避免内存泄漏,并替代finalize使用虚引用进行资源清理。合理运用这些引用类型能显著提升Java应用的内存管理效率和健壮性。
2025-08-19 21:42:08
3735
原创 Hashmap源码
摘要:HashMap底层采用数组+链表+红黑树结构,默认容量16,负载因子0.75。当元素数量超过容量*负载因子时触发扩容,新容量为原2倍。使用2的N次方长度便于高效位运算计算索引。链表长度超过8转红黑树,小于6转回链表。红黑树相比B树更适合内存操作,能提供更好的查找效率(O(logn))。这种设计优化了哈希冲突处理,保证了高效存取。
2025-08-18 21:20:38
3954
原创 接口和抽象类的区别(面试回答)
抽象类是一种可以包含具体方法和抽象方法的类,它可以被继承,但不能被实例化。简而言之,接口关注的是行为的规范,而抽象类关注的是共享的功能。抽象类是对类的抽象,强调的是"is-a"关系(是什么:如"猫是一种动物");接口是对行为的抽象,强调的是"like-a"关系(能什么:如"手机能拍照、能打电话")。抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的;一个类只能继承 extends 一个抽象类,而一个类却可以实现 implements 多个接口。
2025-08-18 20:10:46
3414
原创 Java面向对象
摘要:面向对象编程(OOP)的三大核心特性是封装、继承和多态。封装通过隐藏内部实现细节确保安全性;继承实现代码重用和功能扩展;多态则使同一方法在不同对象上呈现不同行为,提高代码灵活性。这些特性协同作用,使OOP能够更好地模拟现实世界,提高代码的可维护性和可扩展性。
2025-08-18 16:01:17
3062
原创 128陷阱
摘要:Java中Integer的"128陷阱"指的是使用==比较Integer对象时,-128到127范围内的数字会返回true,超出范围则返回false。这是因为Integer内部维护了一个缓存数组,该范围内返回的是同一个对象。解决方案包括使用equals()方法比较值、直接使用int基本类型,或谨慎配置缓存上限。源码显示默认缓存范围为-128到127,使用equals()可避免此问题,因为它比较的是数值而非对象地址。
2025-08-18 15:34:00
3468
原创 项目管理工具Maven2
Maven进阶与私服实战 本文系统介绍了Maven的核心概念与进阶应用。主要内容包括:1)POM文件结构、坐标定义与依赖管理,详解依赖范围、传递机制及仓库体系(本地/中央/私服);2)Maven生命周期与插件绑定机制;3)项目继承与聚合的实现方法,通过父POM统一管理依赖版本;4)Nexus私服搭建实战,涵盖仓库类型配置、项目发布与第三方JAR上传。重点讲解了如何通过私服实现企业内部依赖的统一管理,包括权限配置、镜像设置及依赖下载策略。文章通过具体配置示例演示了从开发到部署的全流程,为团队协作提供标准化构建
2025-08-14 16:16:56
4252
原创 项目管理工具maven1
Maven是一个跨平台的Java项目管理工具,主要用于项目构建、依赖管理和项目信息管理。它通过标准化目录结构和构建流程,实现自动化编译、测试、打包和部署。Maven的核心优势包括约定优于配置、生命周期管理和依赖管理(自动下载第三方jar包及管理模块依赖)。安装配置包括设置MAVEN_HOME环境变量和本地仓库路径,通过pom.xml定义项目信息。Maven支持IDE集成,如IDEA创建Java/Web项目,并可通过命令行执行构建命令(compile/test/package等)。其仓库分为本地仓库和远程仓库
2025-08-13 23:15:35
3950
原创 前后端分离项目在云服务器的部署
本文介绍了前后端项目的云服务器部署流程。后端部分将SpringBoot项目打包为jar文件上传至服务器,通过java -jar命令运行,并处理端口占用问题。前端部分使用npm打包生成dist文件夹,通过Nginx配置(监听80端口)实现访问,同时配置反向代理连接后端API。部署完成后,通过服务器IP访问测试。最后介绍了后台服务的持久化启动方式(nohup)和Nginx的常用操作命令,包括启动、重启和停止服务。整个部署过程涵盖了前后端联调、端口配置和日志管理等关键环节。
2025-08-13 22:37:42
3416
原创 部署springboot项目环境安装
本文介绍了在云服务器上部署Java项目的完整流程。首先对比了腾讯云和阿里云的学生优惠,详细说明了阿里云服务器的购买和初始设置步骤。接着讲解了使用FinalShell等工具连接远程服务器的方法,并逐步指导了JDK、Redis、Tomcat、MySQL和Nginx的安装配置过程,包括环境变量设置、服务启动、端口开放等关键操作。特别针对MySQL安装提供了密码修改和远程连接配置指南,对Nginx编译安装中可能遇到的问题给出了解决方案。全文提供了从服务器购买到环境搭建的一站式指导,适合开发者在云服务器上部署Java
2025-08-13 21:10:28
3610
原创 八股文总结2
本文摘要总结了Java框架和并发编程的核心知识点: SpringMVC基于MVC模式,核心组件包括DispatcherServlet和ViewResolver; MyBatis特点包括SQL可控、动态SQL和插件机制,支持延迟加载和关联查询; 事务管理分为声明式和编程式,Spring提供传播行为和隔离级别控制; 并发编程涵盖线程状态、锁机制、死锁避免及线程安全实现方案; 集合框架、泛型、反射等Java特性详解,包括使用场景和最佳实践; 内存模型、对象生命周期及JVM调优参数说明; 设计模式如单例模式的线程安
2025-08-11 16:45:54
3622
原创 springboot人脸录入
本文摘要:系统实现了基于腾讯云API的人脸录入功能,采用前后端协作模式。前端采集人脸图片并Base64编码后传输至后端,后端调用腾讯云接口进行检测并获取FaceId。系统进行三重处理:将图片以FaceId命名存储本地、配置URL映射实现前端访问、更新数据库状态。整个过程采用事务性操作确保一致性,通过配置中心管理敏感参数,实现安全存储与便捷访问的统一。
2025-08-11 16:40:42
3540
原创 echarts在前后端分离项目中的实践与应用
本文介绍了ECharts与后端开发的配合使用。ECharts是百度开源的JavaScript可视化库,后端通过接口提供结构化数据。文章详细讲解了柱状图和饼图的数据结构设计、后端接口实现要点(包括数据查询优化、格式化及性能考虑)以及前端配置方法。针对不同图表类型,给出了具体的数据格式要求与配置示例。最后提出了最佳实践建议,包括前后端数据约定、错误处理、性能优化和安全性等。通过前后端协作,可以高效实现美观实用的数据可视化功能。
2025-08-05 20:29:14
3862
原创 MyBatisPlus多数据源
本文演示了MyBatis-Plus多数据源配置,通过将商品表迁移到新建的mybatis_plus_1库,实现纯粹多库场景。关键步骤包括:1)创建新库并迁移表数据;2)引入dynamic-datasource依赖;3)配置主从数据源信息;4)通过@DS注解指定数据源操作。测试验证了不同库表数据的独立访问能力,同时指出该方案稍加改造(如写操作标注主库、读操作标注从库)即可实现读写分离功能。文中还强调了默认数据源的配置要点及方法级数据源指定方式。
2025-07-27 17:58:08
3611
原创 MyBatisPlus通用枚举
摘要:本文介绍使用MyBatis-Plus通用枚举处理固定字段值(如性别)的方法。实现步骤包括:1)在数据库表中添加sex字段;2)创建对应枚举类型;3)配置扫描通用枚举;4)进行功能测试。该方法可简化固定值字段的处理,提高代码可读性和维护性。
2025-07-27 14:55:30
3282
原创 MyBatisPlus插件
本文介绍了MyBatis Plus的分页功能和乐观锁实现。分页功能可通过配置类和XML自定义两种方式实现。乐观锁部分通过商品价格修改的并发场景案例,对比了乐观锁和悲观锁的区别:乐观锁通过版本号机制避免覆盖更新,而悲观锁通过独占访问控制并发。文章详细说明了MyBatis Plus实现乐观锁的步骤,包括实体类修改、插件配置和测试流程,为解决并发冲突提供了优化方案。
2025-07-27 14:52:56
3431
原创 MybatisPlus条件构造器和常用接口
本文介绍了MyBatis-Plus中QueryWrapper和LambdaQueryWrapper的使用方法,主要包括:1.基本查询条件组装(like、between、isNotNull等);2.排序条件设置;3.删除条件构建;4.条件优先级处理(and/or嵌套);5.选择性查询字段;6.子查询实现。同时展示了UpdateWrapper的动态条件更新,以及通过condition参数和Lambda表达式简化条件判断的技巧。这些封装方法有效提升了SQL编写的安全性和便捷性,避免了直接操作SQL字符串的风险。
2025-07-27 14:41:29
3989
原创 springboot基本CRUD
MyBatis-Plus的核心功能摘要:BaseMapper接口提供了内置的CRUD方法,包括insert、deleteById、updateById、selectById等基本操作,支持ID泛型,无需编写mapper.xml文件。通过Wrapper条件构造器可灵活设置SQL条件。插入数据默认使用雪花算法生成ID。IService接口进一步封装了业务层CRUD操作,采用get、remove、list、page等前缀命名方法。开发时可通过继承BaseMapper和IService快速实现数据访问层和业务层功能
2025-07-26 21:17:28
4357
原创 MyBatisPlus常用的注解
摘要:本文介绍了MyBatis-Plus中常用注解的使用方法。通过@TableName解决表名与实体类名不一致问题,支持全局配置表前缀;@TableId用于主键映射,支持雪花算法等主键策略;@TableField处理字段名与属性名的映射关系;@TableLogic实现逻辑删除功能。同时讨论了数据库分表策略,包括垂直分表和水平分表的具体应用场景,以及雪花算法的分布式ID生成原理。这些功能简化了CRUD操作,提高了开发效率。(150字)
2025-07-26 21:00:28
1232
原创 MyBatisPius入门案例
本文介绍了使用MyBatis-Plus框架开发Spring Boot项目的环境配置和实现步骤。开发环境采用IDEA 2019.2、JDK8+、Maven 3.5.4、MySQL 5和Spring Boot 2.6.3。首先创建了mybatis_plus数据库和user表,并初始化测试数据。然后通过Spring Initializr创建项目,引入MyBatis-Plus、Lombok等依赖。配置文件中设置了MySQL数据源连接信息,特别说明了不同Spring Boot和MySQL版本的驱动类配置差异。最后创建
2025-07-25 21:03:43
652
原创 MyBatis-Plus简介
MyBatis-Plus是MyBatis的增强工具,在保留MyBatis功能的基础上提供简化开发的特性。它具有无侵入、低损耗、强大的CRUD操作、Lambda表达式支持、主键自动生成等特性,支持多种数据库。框架内置代码生成器、分页插件、性能分析工具,并可通过通用Mapper和Service快速实现单表操作。MyBatis-Plus兼容主流关系型数据库,官方文档和代码托管在GitHub和Gitee平台。其目标是成为MyBatis的最佳搭档,显著提升开发效率。
2025-07-25 20:53:53
601
原创 springboot开发企业信息管理系统
本文介绍了基于Spring Boot和Thymeleaf的用户管理系统开发过程。主要内容包括:1) 引入web、test、thymeleaf等Maven依赖;2) 配置Thymeleaf模板引擎和MVC视图解析;3) 创建数据库表并配置Druid数据源;4) 实现MyBatis数据访问层,包括用户CRUD操作;5) 开发前端页面:用户列表展示、添加/修改表单、登录界面;6) 实现用户登录验证和会话管理。系统采用分层架构设计,通过注解方式简化配置,整合了Spring Boot、MyBatis、Druid等技术
2025-07-25 20:47:41
710
原创 Springboot数据层开发
本文介绍了Spring Boot整合JDBC和MyBatis的配置方法。首先通过引入spring-boot-starter-jdbc和Druid依赖配置数据源,并详细说明了YAML配置方式。然后演示了如何集成JdbcTemplate进行数据库操作,以及整合MyBatis注解版和XML配置版的实现步骤,包括Mapper接口定义、SQL映射配置和驼峰命名转换等。文章还提供了Druid监控页面的配置方法,展示了Spring Boot应用从数据源到持久层框架的完整技术栈架构。
2025-07-25 20:36:20
757
原创 springboot使用外置的Servlet容器
本文对比了嵌入式与外置Servlet容器的部署方式。嵌入式方式(jar包)简单便携但不支持JSP且定制复杂;外置方式(war包+Tomcat)需要:1)创建war项目结构;2)设置Tomcat依赖为provided;3)配置目录;4)部署Tomcat;5)继承SpringBootServletInitializer并重写configure方法;6)启动服务器。原理上,jar包通过main方法启动嵌入式容器,而war包由服务器通过SpringBootServletInitializer启动IOC容器。
2025-07-24 17:23:02
442
原创 springboot配置嵌入式服务器
摘要:Spring Boot通过ServerProperties配置Servlet容器参数,如端口、上下文路径等。由于采用嵌入式容器,需通过Bean方式注册Servlet三大组件:1)使用ServletRegistrationBean注册Servlet;2)FilterRegistrationBean配置过滤器;3)ServletListenerRegistrationBean添加监听器。DispatcherServlet由DispatcherServletAutoConfiguration自动注册,默认拦
2025-07-24 17:15:13
763
原创 SpringBoot整合springmvc
本文介绍了Spring Boot对Spring MVC的自动配置机制。Spring Boot自动配置了DispatcherServlet、控制器、视图解析器、静态资源访问、消息转换器等核心组件,无需传统XML配置。通过分析源码展示了自动配置的实现方式,并提供了文件上传、静态资源映射等具体示例。文章重点讲解了如何通过实现WebMvcConfigurer接口来扩展Spring MVC功能,包括:1)注册视图控制器实现请求转发;2)自定义格式化器处理日期格式;3)扩展消息转换器集成FastJSON;4)实现拦截器
2025-07-24 17:01:29
860
原创 SpringBoot模版引擎
摘要:本文介绍了Spring Boot推荐的模板引擎Thymeleaf的基本使用和核心语法。主要内容包括:1)引入Thymeleaf依赖并配置默认模板路径;2)Thymeleaf的四大标准表达式语法(变量、选择、国际化、URL);3)常用Thymeleaf标签(如th:text、th:if、th:each等)的功能和使用示例;4)通过示例演示如何在Controller中传递数据到模板并进行渲染。Thymeleaf相比JSP等传统模板引擎语法更简单且功能强大,支持OGNL/SpringEL表达式、条件判断、循
2025-07-24 15:55:25
841
原创 springboot对静态资源的映射规则
本文介绍了Spring Boot中静态资源配置的核心机制。通过ResourceProperties类可以设置缓存时间等静态资源参数。WebMvcAutoConfiguration主要实现三部分功能:1)处理/webjars/**请求,从classpath:/META-INF/resources/webjars/加载WebJars资源;2)配置静态资源路径映射,默认扫描classpath下的META-INF/resources、resources、static、public目录;3)自动配置欢迎页(index
2025-07-24 15:17:40
986
原创 SpringBoot自动配置原理
Spring Boot自动配置原理详解:当启动类添加@EnableAutoConfiguration注解后,Spring会扫描所有jar包的META-INF/spring.factories文件,加载其中定义的自动配置类(如HttpEncodingAutoConfiguration)。这些配置类通过@Conditional条件注解判断是否生效,生效后会向容器注册相关Bean。配置类的属性值通过@ConfigurationProperties与配置文件(如application.properties)绑定,开
2025-07-20 21:59:40
964
原创 SpringBoot配置文件加载位置和外部配置加载顺序
Spring Boot支持多层次的配置文件加载机制。默认会从四个位置加载application.properties/yml文件,优先级从高到低为:./config/、./、classpath:/config/、classpath:/。此外还支持11种外部配置源,包括命令行参数、系统属性、环境变量等,优先级递减但互补。高优先级配置会覆盖低优先级配置,带profile的配置文件优先于不带profile的加载。这种灵活的配置机制允许开发者通过多种方式定制应用行为,实现从开发到生产环境的平滑过渡。
2025-07-20 21:33:00
369
原创 springboot-profile
摘要:Spring Boot支持多环境配置,可通过application-{profile}.properties/yml文件实现,默认加载application.properties。YAML支持多文档块配置。激活指定profile有三种方式:1)配置文件中设置spring.profiles.active=dev;2)命令行添加--spring.profiles.active=dev参数;3)测试时通过虚拟机参数-Dspring.profiles.active=dev指定。这些方法便于在不同环境间切换配置
2025-07-20 21:15:43
290
原创 Springboot配置文件
本文介绍了SpringBoot开发中的关键配置技术:1.使用spring-boot-devtools实现热部署,避免手动重启;2.配置文件类型(properties/yml)及YAML语法特点;3.配置文件值注入的三种方式(@Value/@ConfigurationProperties/@PropertySource)及其区别;4.包含数据校验、随机数占位符等高级特性;5.推荐使用@Configuration+@Bean替代传统XML配置。重点比较了不同注入方式的适用场景,如@Value适合简单值获取,@C
2025-07-20 17:59:46
762
原创 Springboot项目的搭建方式5种
本文介绍了5种创建SpringBoot项目的方法:1)通过Spring官网或阿里云官网在线生成项目后导入IDE;2)直接下载官网压缩包再用IDE打开;3)手动创建Maven项目并改造为SpringBoot项目,需配置pom.xml添加SpringBoot依赖;4)强调必须创建带有@SpringBootApplication注解的启动类;5)说明代码应放在启动类的同包或子包下,配置优先级为.properties高于.yml。重点提示了启动类注解不可缺失,Maven改造需正确配置parent依赖和web模块。
2025-07-19 21:21:56
409
原创 Spring Boot入门
本文介绍了SpringBoot框架的核心特性和微服务架构概念。SpringBoot作为简化Spring应用开发的脚手架,具有快速创建、自动配置、嵌入式Servlet容器等优势,支持快速开发独立运行的Spring项目。微服务架构将应用拆分为小型独立服务,具有松耦合、独立部署等优点,但也带来分布式系统管理复杂性。文章详细说明了环境准备要求(JDK1.8、Maven3.x等),并通过HelloWorld示例演示了SpringBoot项目的创建流程,包括依赖配置、主程序编写和简化部署方法。最后解析了SpringBo
2025-07-19 21:09:47
886
原创 git:tag标签远程管理
本文介绍了Git标签常用操作命令:1)创建标签(普通标签git tag v1,带说明的git tag -a v2 -m 'release version');2)删除标签(本地git tag -d v2,远程git push origin :refs/tags/标签名或git push origin --delete tag 标签名);3)查看标签(git tag);4)推送标签(单个/多个标签或所有标签);5)基于标签创建分支(git checkout -b 分支名 标签名)。这些命令涵盖了标签的完整生命
2025-07-18 17:05:53
256
原创 git多人协作
本文介绍了Git协作开发的基本流程,包括创建组织、仓库管理、成员邀请和分支操作。重点讲解了如何通过git clone、add、commit、pull、push等命令实现代码同步和版本控制。针对协作中常见的冲突问题,说明了正确处理方法:先同步远程修改再提交,遇到冲突需协商解决版本保留问题。文章还详细解释了分支推送(push -u)、拉取(checkout -b/track)和删除(delete/remote prune)等团队协作必备操作,帮助开发者规范Git工作流程,有效避免版本冲突。
2025-07-18 16:25:35
364
原创 git从本地仓库添加到远程仓库
本文介绍了Git的基本配置和使用方法。首先通过git config设置全局用户名和邮箱,然后生成SSH公钥并添加到远程仓库。详细说明了如何关联远程仓库(git remote add)、拉取代码(git pull --rebase)、推送代码(git push)、克隆仓库(git clone)等常用操作。还介绍了git add、git commit等版本控制基本命令。这些操作涵盖了从Git初始化到远程协作开发的完整工作流程,适合Git初学者快速上手版本控制工具的使用。
2025-07-18 16:22:00
276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅