
Java大厂应用
文章平均质量分 90
Java并发、多线程、内存模型、JVM、Spring Boot等核心技术在大厂的应用实战分享
神技圈子
八年以上对象存储、分布式文件存储开发老兵。曾在多家存储大厂(华为,腾讯等)担任过存储开发专家。LeetCode讲师、Apache Doris contributor
展开
-
源码讲解kafka 如何使用零拷贝技术(zero-copy)
本文详细讲解零拷贝技术,以及kafka如何使用零拷贝及它的应用场景原创 2024-06-07 16:43:58 · 1249 阅读 · 0 评论 -
【Effective Java】大厂实战之考虑以静态工厂方法代替构造方法
图片Item1-考虑以静态工厂方法代替构造方法Item1-考虑以静态工厂方法代替构造方法缺点1. 只提供静态工厂方法的话,该类就无法被继承(子类化)缺点2. API的查找比较麻烦常见静态工厂方法的命名from —— 类型转换方法of —— 聚合方法valueOf —— 比from和of更繁琐的一种替代方法instance或者getInstancecreate或者newInstancegetTypenewTypeType优点1. 有名字,代码可读性更高优点2. 减少系统的性能开销优点3. 可以返回所声明的原创 2022-06-20 21:55:11 · 316 阅读 · 2 评论 -
大厂面试之JAVA核心技能:Slipped Conditions
聊聊Splipped Condtion定义一个更现实的例子解决Slipped Conditions问题定义所谓Slipped conditions,就是说, 从一个线程检查某一特定条件到该线程操作此条件期间,这个条件已经被其它线程改变,导致第一个线程在该条件上执行了错误的操作。这里有一个简单的例子:public class Lock { private boolean isLocked = true;= public void lock(){ synchronized(th原创 2022-05-10 16:49:45 · 248 阅读 · 0 评论 -
【大厂JAVA核心技能】来聊聊Java的锁使用
聊聊java中的锁背景一个简单的锁锁的可重入性锁的公平性背景锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字(译者注:这说的是Java 5之前的情况)。自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,因此你不用去实现自己的锁了。但是你仍然需要去了解怎样使原创 2021-11-04 14:39:07 · 199 阅读 · 0 评论 -
阿里P7教你如何快速熟悉一个系统
文章目录业务知识技术知识逻辑部分开发部分系统运行物理架构数据模型系统维护上手实战小结大家或多或少都有接触一个已存在的系统,面对不是自己做的东西都有觉得上手有些困难,笔者想从自身的经验去谈谈如何快速上手一个陌生的系统。打算从以下几个维度去分析落地:业务知识从业务角度去学习系统,说白了就是从客户视角看系统提供了什么功能,一定是人能理解的维度,这样也方便你去理解系统。从业务下手则你需要去找设计 产品 运营等相关领域的人去了解,也有些对外的产品文档,方便用户熟悉系统的,都可以入手去学习。业务知识可以按如下原创 2021-09-28 22:52:05 · 12899 阅读 · 12 评论 -
一文搞懂Java并发编程模型有哪些
聊聊多线程的代价是否应该使用多线程程序更复杂上下文切换的开销增加资源消耗是否应该使用多线程从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。程序更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂原创 2021-07-26 16:22:34 · 889 阅读 · 0 评论 -
十分钟吃透Java内存模型
Java内存模型Java内存模型把Java虚拟机内部划分为线程栈和堆。这张图演示了Java内存模型的逻辑视图。每个运行在JVM里的线程都拥有自己的线程栈。线程栈包含了该线程调用的方法的当前执行点相关的信息。一个线程仅能访问自己的线程栈。一个线程创建的局部变量对其它线程不可见,只对自己可见。即使两个线程执行同样的代码,这两个线程任然在在自己的线程栈中的代码来创建局部变量。因此,每个线程拥有每个局部变量的独有版本。所有原始类型的局部变量都存放在线程栈上,因此对其它线程不可见。一个线程可能向另一个线程传递原创 2021-07-10 17:04:12 · 220 阅读 · 0 评论 -
面试官必问java 并发知识总结-同步与锁
同步对象与锁 什么叫java同步?就是java用来保证多线程在共享的内存或临界区,能够可以按照可以预期的行为去顺序执行。如果不做这个同步,那么线程的行为就不可以预期。解释这个问题最好的就是给个实践的例子。下面就写个例子来说明存在共享内存在不同步的场景下对 valueCnt++ 操作的结果不可预期:public class MutiThreadTest { private int valueCnt = 0; public void valueCntAdd(){.原创 2021-05-04 20:24:05 · 435 阅读 · 0 评论 -
面试官必问java 并发知识总结-线程
线程是什么 线程是针对cpu来说的一个执行独立单元,线程的资源来自进程。进程内的线程是共享资源的(如内存 文件句柄 网络等)所以就有线程的并发冲突问题,进程间的资源是隔离的。java.lang.Thread来定义一个线程,并提供对线程的操作。 进程的执行需要依赖线程(前面说了线程是CPU执行的一个最小独立单元),用户态的线程都是人为显示构建的。 分为:用户态和内核态 —>内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网...原创 2021-04-29 17:00:59 · 457 阅读 · 0 评论