Ali's blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

Java Stream 源码分析

前言Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题。 Java 8 集合中的 Stream 相当于高级版的 Iterator,它可以通过 Lambda 表达式对集合进行各种非常便利、高效的聚合操作(Aggregate Operation),或者大批量数据操作 (Bulk Data Operation)。
2021-12-03
java

Java String 演进全解析

前言String 是我们使用最频繁的对象,使用不当会对内存、程序的性能造成影响,本篇文章全面介绍一下 Java 的 String 是如何演进的,以及使用 String 的注意事项。 下面的输出结果是什么?123456789@Testpublic void testString() { String str1 = "abc"; String str2 = n
2021-11-29
java

Java NIO、Channel、Selector 详解

Java NIO 有三大组件: Buffer Channel Selector BufferBuffer 是一个特定原始类型的容器。Buffer 是一个原始类型的线性的、有限序列,除了 Buffer 存储的内容外,关键属性还包括:capacity, limit 和 position。 capacity:Buffer 包含的元素的数量,capacity 永远不会为负,也不会改变。 limit:
2021-10-14
java

Java ClassLoader

ClassLoader 简介是什么一个完整的 Java 应用程序由若干个 Java Class 文件组成,当程序在运行时,会通过一个入口函数来调用系统的各个功能,这些功能都被存放在不同的 Class 文件中。 因此,系统在运行时经常会调用不同 Class 文件中被定义的方法,如果某个 Class 文件不存在,则系统会抛出 ClassNotFoundException 异常。 系统程序在启动时,不会
2021-09-13
java

Java Lambda 表达式源码分析

Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现? 基本概念Lambda 表达式下面的例子中,() -> System.out.println("1") 就是一个 Lambda 表达式。Java 8 中每一个 Lambda 表达式必须有一个函数式接口与之对应。Lambda 表达式就是函数式接口的一个实现。 123456789
2021-08-18
java

一文看懂Java 对象的内存

说明本文绝大多数内容,都是直接摘自 高端面试必备:一个 Java 对象占用多大内存,因为这篇文章写得太好了,我觉得没有必要重新写一遍了 0_o Java 对象模型HotSpot JVM 使用名为 oops (Ordinary Object Pointers) 的数据结构来表示对象。这些 oops 等同于本地 C 指针。 instanceOops 是一种特殊的 oop,表示 Java 中的对象实例。
2021-08-17
java

Java Agent 使用指南

Java Agent 是什么?Java Agent 是一个特殊的 jar 文件,利用 JVM 的 Instrumentation API 来更改加载到 JVM 中的字节码。一共有 2 种方式: premain:使用 -javaagent 参数在 JVM 启动时静态加载代理 agentmain:使用 Java Attach API 将代理动态加载到 JVM 中 需要说明的是,Oracle、Ope
2021-07-31
java

Java资源大全中文版

前言GitHub项目地址:https://github.com/jobbole/awesome-java-cn Java资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等
2021-07-27
java

深入分析 Java、Kotlin、Go 的线程和协程

前言Go 语言比 Java 语言性能优越的一个原因,就是轻量级线程Goroutines(协程Coroutine)。本篇文章深入分析下 Java 的线程和 Go 的协程。 协程是什么协程并不是 Go 提出来的新概念,其他的一些编程语言,例如:Go、Python 等都可以在语言层面上实现协程,甚至是 Java,也可以通过使用扩展库来间接地支持协程。 当在网上搜索协程时,我们会看到: Kotlin
2020-12-10
java

深入分析 Java 乐观锁

前言激烈的锁竞争,会造成线程阻塞挂起,导致系统的上下文切换,增加系统的性能开销。那有没有不阻塞线程,且保证线程安全的机制呢?——乐观锁。 乐观锁是什么?操作共享资源时,总是很乐观,认为自己可以成功。在操作失败时(资源被其他线程占用),并不会挂起阻塞,而仅仅是返回,并且失败的线程可以重试。 优点: 不会死锁 不会饥饿 不会因竞争造成系统开销 乐观锁的实现CAS 原子操作CAS。在 java.u
2020-12-08
java
1234

搜索

Hexo Fluid
总访问量 次 总访客数 人