
Java
文章平均质量分 78
海姐软件测试
13年软件测试技术工作经历,大厂测试工程师兼测试主管。分享面试经验、测试学习路线、职场感悟、认知思考、个人成长等。
欢迎大家一起来探讨,陪你一起共同学习进步!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java的线程通信机制是怎样的呢?
线程通信的核心在于状态同步与数据传递的协同控制,类似于测试团队中的协作。基础通信机制包括共享内存和wait()/notify(),其中共享内存虽然常用但存在风险,需通过volatile或synchronized保证内存可见性,而wait()/notify()则用于经典IPC场景,通过线程WAITING状态验证其有效性。高级通信方案如BlockingQueue和CountDownLatch,前者适用于测试日志处理系统,后者用于性能测试场景中的线程同步。测试工程师需掌握线程转储分析、JConsole监控和JMe原创 2025-05-17 18:49:23 · 760 阅读 · 0 评论 -
Golang空接口的用途详解
空接口interface{}是Go语言中一个特殊且强大的工具,它不包含任何方法声明,因此所有类型都实现了空接口。其主要用途包括实现泛型编程(在Go 1.18引入泛型前)、处理未知类型的数据(如JSON解析和数据库操作)、作为容器类型存储任意类型元素以及在测试框架中灵活应用(如断言和比较)。使用空接口时,常配合类型断言或类型判断来获取具体类型。虽然空接口提供了极大的灵活性,但其性能略低于具体类型,因此在性能敏感的场景中需谨慎使用。随着Go泛型的引入,部分场景可用泛型替代,但空接口在处理多类型数据和构建通用函数原创 2025-05-12 10:00:33 · 475 阅读 · 0 评论 -
内存泄露,如何判断是资源泄露还是堆栈泄露?
文章摘要:软件测试工程师在定位和解决内存泄露问题时,需区分资源泄露和堆栈泄露。资源泄露涉及非内存资源未释放,如文件句柄、数据库连接等,可通过监控非堆指标和使用工具如lsof、jstack检测。堆栈泄露则指对象无法被GC回收,表现为堆内存持续增长,可通过jmap、MAT等工具分析。测试流程包括复现问题、使用监控工具、时间分析和压力测试。文章还提供了典型案例和实用检查清单,帮助测试人员有效判断内存问题类型,指导开发人员精准定位问题根源。原创 2025-05-11 20:24:23 · 1067 阅读 · 0 评论 -
JVM内存结构有哪些?HashMap和HashTable的区别?
JVM内存结构主要包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和运行时常量池。程序计数器是线程私有的,记录当前线程执行的字节码行号,是唯一不会出现OOM的区域。Java虚拟机栈和本地方法栈也是线程私有的,存储栈帧和本地方法,可能出现StackOverflowError和OutOfMemoryError。Java堆是线程共享的,存放对象实例,是GC主要管理区域,可能出现OutOfMemoryError。方法区存储类信息、常量、静态变量等,JDK8后由元空间实现,可能出现OutOfMemor原创 2025-05-11 20:21:44 · 384 阅读 · 0 评论 -
什么是线程和应用?线程和进程区别是什么?
本文详细介绍了进程和线程的核心概念、关键区别及其在现代开发中的应用。进程是操作系统分配资源的基本单位,具有独立的内存空间和较高的容错性,如Android中每个APP默认运行在独立进程。线程是进程内的执行单元,共享进程资源,通信成本低但容错性较弱,如Android主线程ANR可能导致整个进程退出。文章通过代码示例和现实场景对比了进程和线程的资源占用、创建/销毁成本、通信方式和典型应用。此外,还探讨了线程的隐藏风险(如竞态条件和死锁)及其解决方案,以及现代演进中的协程和进程池/线程池的应用场景。最后,文章提出了原创 2025-05-10 17:00:11 · 619 阅读 · 0 评论 -
Volatile关键字的本质:可见性与有序性的低成本实现方案
在10万次读写场景下,volatile比synchronized快3-5倍(具体数据需基准测试)误用场景:多线程统计成功次数(volatile++操作仍存在竞态条件)设计多线程读写测试(建议结合JConsole观察内存值)不保证原子性(适合做状态标志位,不适合计数器)读取时:使工作内存失效(从主内存重新加载)// 典型场景:多线程测试中的优雅终止控制。Java中轻量级的同步机制,确保变量的。写入时:强制刷新主内存(通过CPU的。:像LoadRunner中的。:类似JMeter中的。函数控制虚拟用户同步点。原创 2025-05-09 18:22:35 · 413 阅读 · 0 评论 -
MVC是什么?分别对应SpringBoot哪些层?
作为Java开发者,理解MVC在SpringBoot中的实现方式直接影响我们构建可维护的Web应用能力。本文将用生产级代码示例揭示各层对应关系,并分享分层设计中的实用技巧。原创 2025-05-07 10:01:24 · 1182 阅读 · 0 评论 -
单例模式都有哪些?有什么区别?
public static synchronized Singleton getInstance() { // 方法级锁。if (instance == null) { // 第一次检查。if (instance == null) { // 第二次检查。synchronized (Singleton.class) { // 加锁。public static Singleton getInstance() { // 线程不安全!原创 2025-05-06 10:02:46 · 901 阅读 · 0 评论 -
Java常用注解大全(基于JDK17+SpringBoot3)
用原生注解+第三方验证注解。等SpringCloud注解。:自动装配(新版推荐用。:标记Mapper接口。自定义注解的实现步骤。原创 2025-05-05 23:51:10 · 807 阅读 · 0 评论 -
Golang 的 Waitgroup 锁用 Java的话要怎么实现?
在 Go 语言里,主要用于等待一组 goroutine 完成执行。在 Java 中,与之功能对应的实现方式有多种,下面为你详细介绍。原创 2025-03-25 09:45:42 · 488 阅读 · 0 评论