首页
分类
后端开发
数据库
前端开发
学习笔记
错误合集
标签
Java
MySQL
MongoDB
Linux
IDEA
归档
海尔经典面试题
Linux清理磁盘空间
MySQL查询结果输出到文件
MongoDB数据处理
瞬间
留言板
友情链接
Java学习笔记
Java博客
累计撰写
66
篇文章
累计创建
22
个标签
累计收到
12
条评论
栏目
首页
分类
后端开发
数据库
前端开发
学习笔记
错误合集
标签
Java
MySQL
MongoDB
Linux
IDEA
归档
海尔经典面试题
Linux清理磁盘空间
MySQL查询结果输出到文件
MongoDB数据处理
瞬间
留言板
友情链接
Java学习笔记
目 录
CONTENT
以下是
Java
相关的文章
2026-01-23
千万级数据表COUNT查询优化实战
本文记录了一次SQL慢查询优化实战,从8秒降至0.1秒。初始查询因优化器选错索引导致大量数据扫描。通过创建覆盖索引(含`rating_type`、`areacode`、`id`),避免回表操作,性能提升80倍。进一步通过`ANALYZE TABLE`更新统计信息,使优化器自动选择最优索引。对比`count(*)`与`count(id)`,前者因MySQL优化机制通常更快。生产环境应避免强制索引,依靠统计信息让优化器智能选择。最终推荐方案为创建覆盖索引、更新统计信息、使用`count(*)`,并辅以定期维护与监控。优化核心在于理解执行计划、数据分布及查询模式,而非简单加索引。
2026-01-23
13
0
0
学习笔记
数据库
2025-09-10
Linux系统切换多JDK版本
本文介绍了在Linux系统中管理多个JDK版本的五种常用方法。第一种是使用`update-alternatives`工具,适用于Debian/Ubuntu/RedHat系统,可系统级切换JDK默认版本;第二种是手动配置`JAVA_HOME`环境变量,灵活但需手动维护;第三种是使用JEnv轻量级工具,支持全局、shell和项目局部三种切换模式,并自动管理`JAVA_HOME`;第四种是SDKMAN,功能全面,支持多种开发工具的安装与版本切换;第五种是使用Docker容器,提供完全隔离的运行环境,适合构建独立的开发或测试环境。每种方法各有优劣,用户可根据使用场景和需求选择合适方案。
2025-09-10
23
0
0
建站系统
开发工具
2025-03-25
海尔经典面试题
本文分享了一篇海尔Java开发岗位的面试经验(一面通过),内容涵盖多个核心技术点。重点包括:Redis缓存击穿、雪崩、穿透的问题及解决方案,如随机过期时间、互斥锁、布隆过滤器等;Spring Boot启动流程及常用注解(如@Component、@RestController、@Autowired等);MyBatis特点与灵活性;Git基础操作及回退方法;Java异常体系(Error与Exception);Java 8新特性(Lambda、Stream、Optional等);HashMap底层结构(JDK 8红黑树优化);Docker隔离原理(Namespace与cgroups);Jenkins与CI/CD流程。此外,还包含项目及聊天类问题。整体面试体验良好,面试官态度亲切,氛围轻松。
2025-03-25
95
0
3
面试
2024-06-19
Java版本切换
本文介绍了三种在多版本Java环境中切换 `JAVA_HOME` 的方法。第一种是使用 `jEnv`,通过安装、配置并添加Java版本路径,支持全局、会话或项目级别切换,操作灵活。第二种是手动修改 `.zshrc` 或 `.bash_profile` 文件,通过定义别名快速切换不同版本,适合简单场景。第三种是使用 `SDKMAN`,自动安装和管理Java版本,语法简洁,支持便捷切换。三种方法各有优劣:`jEnv` 和 `SDKMAN` 功能全面、易于管理,适合复杂环境;手动切换则轻量、易理解,适用于基础需求。用户可根据实际使用场景和个人偏好选择合适方案。
2024-06-19
46
0
0
建站系统
开发工具
2024-06-04
try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!
关于`try-catch`写在循环内还是外,没有绝对优劣,需结合业务场景选择。写在循环外,若某条数据异常则整个循环终止,适合事务性场景或需整体回滚的业务;写在循环内,可隔离异常不影响其他数据处理,适合容忍部分失败的场景。但循环内频繁使用`try-catch`会降低效率,尤其异常频发时。阿里巴巴《Java开发手册》也指出异常处理开销大,应避免无意义的循环内异常捕获。因此,应根据实际需求权衡:如需保证数据一致性或整体成功则放外;如需容错、部分失败不影响整体则放内,且可结合异常类型(如超时)设置阈值强制退出,提升系统健壮性与效率。
2024-06-04
36
0
2
后端开发
2024-04-19
MongoDB进阶连表查询
本文展示了一个MongoDB聚合查询脚本及其对应的Spring Mongo Java实现。查询目标是从`collect.template`集合中根据指定的`_id`筛选出模板数据,通过`$lookup`关联`collect.template.group`表获取模板对应分组信息,并提取`groupId`组成数组。接着再次关联`collect.group.field`表,根据`groupId`查询字段信息,并筛选出`unit`为“万元”的数据。最终通过`$project`和`$map`格式化输出,仅保留模板名称、分组ID及字段的标题、编码和分组ID。Java代码中使用Spring Data Mongo的Aggregation构建相同逻辑,通过自定义`AggregationOperation`实现复杂投影和过滤操作,最终返回结构化的结果列表。
2024-04-19
44
0
0
数据库
学习笔记
2023-02-13
equals 和 == 的区别
在Java中,`a == b` 和 `a.equals(b)` 的区别主要在于比较方式:`a == b` 比较的是对象的引用(即内存地址),只有当两个引用指向堆中同一个对象时才返回 `true`;而 `a.equals(b)` 比较的是对象的内容,通过调用 `equals` 方法实现逻辑相等性判断。对于自定义类,通常需要重写 `equals` 方法以实现基于属性值的比较。例如,两个 `String` 对象内容相同但引用不同,`==` 返回 `false`,而 `equals` 返回 `true`。此外,重写 `equals` 时一般需同步重写 `hashCode`,确保对象在哈希表等集合中行为一致。
2023-02-13
27
0
0
后端开发
2022-12-20
优化SpringBoot项目启动时间和内存占用
作者使用Spring Cloud Alibaba搭建了包含7个微服务的项目,部署在2C4G的阿里云服务器上,采用Docker部署Spring Boot fat jar镜像。每个微服务默认占内存约500M,加上Nacos、Redis、Sentinel、RocketMQ、ELK等中间件,内存压力巨大,仅部署4个微服务便内存不足。为此,作者尝试通过JVM参数优化(如-Xms128m、-Xmx128m、-Xss256k等)将内存占用降至100~200M,但未达预期的几十M目标。经调研,作者计划采用Spring Native技术以实现更低内存占用和更快启动速度,其官方示例镜像仅50M,但构建时间较长(约2分钟),且该技术尚处快速迭代阶段,暂不推荐用于生产环境。文章未完待续。
2022-12-20
36
1
1
后端开发
2022-12-09
在线 yaml(yml)和 properties 互转
该页面提供在线YAML(yml)与Properties配置文件格式之间的相互转换工具,方便开发者在不同框架或系统间进行配置文件格式的快速转换。用户可通过访问指定网址(https://www.toyaml.com/index.html)进入工具界面,直接粘贴或上传文件,一键完成格式转换。页面内置嵌入式框架,支持全屏显示,用户无需下载任何软件,即可在浏览器中实时操作。该工具适用于Java、Spring、微服务等项目中常见的配置文件兼容需求,提升开发效率。整体界面简洁,操作直观,支持常见配置语法转换,是开发人员处理配置文件的实用辅助工具。
2022-12-09
22
0
0
软件推荐
开发工具
2022-12-09
基于SpringBoot拦截所有接口类及实现类中方法上面的自定义注解
本文介绍了在Spring Boot中使用自定义注解同时拦截接口方法和实现类方法的实现方案。通过定义`@Ax`注解、创建`AxMethodPointcutAdvisor`匹配切入点、实现`AxInterceptor`拦截器,并注册`DefaultAdvisorAutoProxyCreator`,实现了对注解方法的统一拦截。关键在于`DefaultAdvisorAutoProxyCreator`会自动为匹配的方法生成CGLIB代理,从而支持接口方法的拦截。测试显示,无论注解在接口或实现类上,均可成功拦截并执行前后逻辑。文章强调,接口必须有实现类,否则Spring启动会报错。该方案借鉴了“keetone”大神的思想,并提供了完整可运行的代码示例,适合在需要灵活使用自定义注解的场景中应用。(198字)
2022-12-09
23
0
0
后端开发
2022-12-09
Java-Collectors(Stream流)常用的20个方法
本文介绍了Java 8 Stream API中常用的`Collectors`工具类方法,用于对流中的元素进行收集、聚合和转换。主要内容包括:通过`toList()`、`toSet()`、`toCollection()`将元素收集为不同集合类型,其中`toSet()`自动去重;`toUnmodifiableList()`和`toUnmodifiableSet()`生成不可变集合;`counting()`统计元素数量;`minBy()`和`maxBy()`分别求最小/最大值,支持自然排序或自定义比较器;`joining()`用于拼接字符串;`averagingInt()`、`averagingLong()`、`averagingDouble()`计算平均值(返回Double类型);`summingInt()`、`summingLong()`、`summingDouble()`计算总和;`summarizingInt()`提供统计摘要(含计数、总和、最小值、最大值、平均值);`toMap()`创建Map,支持处理重复键;`partitioningBy()`按条件将集合分为两部分;`groupingBy()`实现多级分组,支持指定分组集合类型。这些方法极大简化了集合操作,提升代码可读性和效率。
2022-12-09
30
0
0
后端开发
2021-05-14
IDEA项目启动非法字符
在启动Spring Boot项目时,出现“非法字符:'\ufeff'”错误,该字符为BOM(Byte Order Mark),常见于UTF-8编码文件头部。此问题通常由编辑器在保存文件时自动添加BOM导致,虽不影响普通文本显示,但Java编译器将其识别为非法字符,引发编译错误。解决方法为:删除包含BOM的文件(如主类或配置文件),并重新创建文件,确保以无BOM的UTF-8格式保存。推荐使用如VS Code、IntelliJ IDEA等支持BOM设置的编辑器,并关闭自动添加BOM选项。若需保留原文件内容,可复制内容后新建文件并手动设置编码为UTF-8无BOM。此操作可彻底解决非法字符导致的编译失败问题。
2021-05-14
51
0
0
错误合集
1
2
鄂ICP备20003961号-3