标签

Java

20 篇文章

全部文章
  • Mockito单元测试

    一、单元测试核心四要素 1.1 完整测试流程解析 1.2 核心概念详解 · 数据准备:创建待测对象及其依赖的模拟对象(真实对象或Mock对象) · 打桩(Stubbing):定义模拟对象的方法调用规则(返回值/异常/延时等) · 执行测试:触发被测对象的业务方法执行 · 验证(V…

  • 5年Java面试题及面试经验

    参考离职原因 离职原因1:组织架构频繁调整,导致技术沉淀不足,我更需要在平台的业务稳定性和技术积累潜力。 离职原因2:业务进入稳定期,技术迭代更多是维护而非创新,我希望可以突破现有技术边界,实现更大价值。 离职原因3:公司在最近的季度出现百亿级别的扩损,启动了组织架构优化,我所在…

  • 日志到底应该怎么打印?

    写代码的人就没有不写日志的,但我们到底该怎么打印日志,打印日志能不能有点章法? 针对这个问题,我查阅了《阿里巴巴Java开发手册》,里面有 8 条日志规约。比如不同作用的日志存放到不同的日志文件里,以appNamelogTypelogName.log方式进行命名。是挺不错,但属于…

  • 深入理解Java内存模型原理

    一、前言 “请说下你对 Java 的内存模型的了解” 这是一道非常容易答偏的问题。 因为很多人会回答为 Java 内存区域(即 Java 内存管理机制),然后把程序计数器、虚拟机栈、本地方法栈、Java堆和方法区等部分详细说一遍。 虽然网上很多文章也会出现笔误,但是幸运的你看到了…

  • 史上最全的Jackson使用教程

    简单介绍 别再使用 FastJson 了!漏洞天天报,Bug 修不完。快来拥抱 Jackson 吧! Jackson 是用来序列化和反序列化 JSON 的 Java 的开源框架。Spring MVC 的默认 JSON 解析器便是 Jackson。与其他 Java 的 JSON 的…

  • 逐行解读HashMap源码【全文】

    写在前面 相信读者也看过了不少讲解 HashMap 源码的文章了,笔者认为,一切脱离源码去讲原理的都是泛泛而谈。一些所谓的原理大都是阅读源码之后的个人概括,这些概括参差不齐,再加上没有阅读源码,读者们是很难有切身体会的。正因如此,笔者逐行分析了 HashMap 的源码后,开启了本…

  • Java8异步编程之CompletableFuture源码解读

    一、引言 一说到异步任务,很多人上来咔咔新建个线程池。为了防止线程数量肆虐,一般还会考虑使用单例模式创建线程池,具体使用方法大都如下面的代码所示: 经常使用 JavaScript 的同学相信对于异步回调的用法相当熟悉了,毕竟 JavaScript 拥有“回调地狱”的美誉。 我们大…

  • 深入理解类、对象、引用三者之间的关系

    本文旨在扫盲,深入理解类、对象、引用三者之间的关系,在处理 a = b = c 这类问题上可以有清晰无误的思考。 一、什么是类 类是一个模板,它描述一类对象的行为和状态。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 说白了,类就是我们自然界的一些统称,…

  • JDBC、Tomcat为什么要破坏双亲委派模型?

    问题一:双亲委派模型是什么 如果一个类加载器收到了加载某个类的请求,则该类加载器并不会去加载该类,而是把这个请求委派给父类加载器,每一个层次的类加载器都是如此,因此所有的类加载请求最终都会传送到顶端的启动类加载器;只有当父类加载器在其搜索范围内无法找到所需的类,并将该结果反馈给子…

  • 读取ClassPath下resource文件的正确姿势

    1.前言 为什么要写这篇文章? 身为Java程序员你有没有过每次需要读取 ClassPath 下的资源文件的时候,都要去百度一下,然后看到下面的这种答案: 亦或是: 你复制粘贴一下然后放到自己的项目里运行,还真跑起来了。但是当打成 jar 包作为其它项目的依赖时,或者打成 war…

  • 对于BIO/NIO/AIO,你还只停留在烧开水的水平吗?

    1.发发牢骚 相信大家在网上看过不少讲解 BIO/NIO/AIO 的文章,文章中举起栗子来更是夯吃夯吃一大堆,让人越看越觉得 What are you 讲啥嘞? 本文将针对 BIO/NIO/AIO 、阻塞与非阻塞、同步与异步等特别容易混淆的概念进行对比区分,理清混乱的思路。 2.…

  • Java如何执行操作系统的CMD命令行

    在模拟cmd调用Python时遇到一些情况,这类问题可以归类为“超时,阻塞”等,问题原因: Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例,该实例可用于控制进程或取得进程的相关信息。 由于调用Runtime.exec方法所创建的子进程没有自己…

  • Java中数组和集合的foreach操作编译后究竟是啥

    今天和同事在关于foreach编译后是for循环还是迭代器有了不同意见,特做了个Demo,了解一下。 是啥自己来看吧! 编译后查看的源码: 总结: foreach对于数组来说依旧是for循环,对List、Map集合来说是迭代器。

  • 使用try-with-resources优雅的关闭IO流

    Java类库中包括许多必须通过调用close方法来手工关闭的资源。例如InputStream、OutputStream和java.sql.Connection。客户端经常会忽略资源的关闭,造成严重的性能后果也就可想而知了。根据经验,try-finally 语句是确保资源会被适当关…

  • 自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁

    JDK1.6对synchronized关键字做了很多优化,包括自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 自旋锁 所谓自旋锁,就是让某线程进入已被其它线程占用的同步代码时等待一段时间,不会被立即挂起,看持有锁的线程是否会很快释放锁。这里等待的…

  • Java实现动态修改Jar包内文件内容

  • Java8之使用Optional进行Null处理

    Optional类这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题,本篇文章将详细介绍Optional类,以及如何用它消除代码中的null检查。 1.创建optional对象 empty() 方法用于创建一个没有值的Optiona…

  • 基于注解处理器开发自动生成getter和setter方法的插件

    昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter、getter、toString()等方法的class文件。看着挺新奇的,于是自己研究了一下原理,整理下发出来。 1.何处下手 视频中作者的流程为…

  • 深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

    周志明的《深入理解Java虚拟机》很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉。但知识不得不学,于是天天看,反复看,就慢慢的理解了。我其实不想说这种硬磨的方法有多好,我甚至不推荐,我建议大家阅读这本书时,由浅…

  • Java虚拟机性能监测工具Visual VM与OQL对象查询语言

    1.Visual VM多合一工具 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具,它集成了多种性能统计工具的功能,使用 Visual VM 可以代替jstat、jmap、jhat、jstack甚至是JConsole。在JDK 6 Update 7以后,Vi…