java基础那点事
文章平均质量分 95
架构技术专栏
知识改变命运,梦想创造未来
展开
-
一文搞定JVM字节码
为什么jvm不能直接运行java代码呢,这是因为在cpu层面看来计算机中所有的操作都是一个个指令的运行汇集而成的,java是高级语言,只有人类才能理解其逻辑,计算机是无法识别的,所以java代码必须要先编译成字节码文件,jvm才能正确识别代码转换后的指令并将其运行。在字节码的4,5,以及13,14中执行的是同一个操作,就是将int型的3入操作数栈顶,并存入第二个局部变量。顺便一提的是,当扩展的方法为Any时,意味着Any是non-null的,这时,编译器会在方法体的开头检查参数的非空,即调用。原创 2024-01-06 23:17:09 · 836 阅读 · 0 评论 -
何时用多线程?多线程需要加锁吗?线程数多少最合理?
爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。一、什么时候应该使用多线程?今天看到一个问题,突然有感而发,想聊下这个话题。不知道大家有没有想过这个问题,就是什么时候我该使用多线程呢?使用多线程就一定会提升系统性能吗?1、其实是否应该使用多线程在很大程度上取决于应用程序的类型。计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的线程中受益, 单C.原创 2020-09-22 23:09:29 · 2566 阅读 · 0 评论 -
看不懂ThreadDump?那是因为你不了解线程状态!
爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。苦恼每当线上应用出现各种吞吐下降、RT增长、CPU飚高、内存溢出等问题的时候是不是脑阔疼。面对出现的问题,简直就是无从下口啊。不要慌,其实对于线上出现的各种奇葩问题,我们使用ThreadDump就能解决90%了。很多时候根本不需要对JVM参数进行各种复杂的调优,好好看看线程栈,优化优化你的代码,简直就是美滋滋的提升性能。好了,言归正传,下面我们就来说下线程栈重点关注的点.原创 2020-09-20 20:07:37 · 683 阅读 · 0 评论 -
如何构建一个开源的javaagent项目
前情提要目前项目使用的agent 是在skywalking 上进行改造扩展的,但由于skywalking 的版本也是需要周期性更新的,这样会导致在合并的时候非常恶心人,所以准备从skywalking agent 中将改造的插件功能剥离出来。先说下独立功能有几个组件,大概访问流程是这样的 ui --> proxy --> agentui 负责命令交互,数据展示等proxy 负责通道维护,数据分拣agent 负责应用数据监控抓取所以在我们剥离出来后也会有三个项目 ui、原创 2020-05-27 11:32:47 · 706 阅读 · 0 评论 -
你还不会堆栈吗?看了这篇文章就全懂了
1. 概述 随着系统日益增大,代码结构日渐复杂,经过验收测试的系统可能在实际生产环境下表现的一塌糊涂,也可能非常棒。因此通过QA并不能保证系统不会发生内存泄漏,往往流量越大泄露的越快,最后导致系统崩溃。比如在某个时间点系统一直出现TimeOut、或者系统突然处理速度急剧下降等问题。对于开发人员就非常棘手了,很多人根本一头雾水,基本上就是拍脑袋瞎猜了。原创 2017-10-19 14:57:42 · 833 阅读 · 0 评论 -
程序猿眼里最全的并发知识点,快收藏!
学习多线程并发,要着重 “外练互斥,内修可见” ,这是掌握多线程、学习多线程并发的重要技术点。 一、基础知识1、currenThread() 方法可返回代码段正在被哪个线程调用的信息2、多线程两种方式 集成Thread OR 实现Runable3、isAlive() 的功能是判断当前线程是否处于活动状态(活动状态就是线程以启动且尚未终止)4、sleep()的作用是在指定的毫秒数内让“正在执行的线程原创 2017-07-28 15:32:39 · 599 阅读 · 0 评论 -
基础知识(一) HashMap 源码详解
因为最近想面试,所以复习下。分析学习基于JDK1.8HashMap 继承于 AbstrackHashMap 实现于 Map, Cloneable, Serializable常量参数1、下面的都是直接static final 的值,也就是在JVM准备的时候就已经初始化了DEFAULT_INITIAL_CAPACITY =16 默认容量为MAXIMU原创 2017-03-16 09:49:04 · 743 阅读 · 0 评论 -
基础知识(二) LinkedHashMap 源码详解
public class LinkedHashMap extends HashMap implements Map知识点 LinkedHashMap 继承了 HashMap 最主要的区别就是有序。内部使用散列链表 红黑树实现。注意此Map不是线程安全的,如果需要同步使用请使用ConcurrentHashMap 或者 Collections.synchronizedMap.原创 2017-03-17 15:01:15 · 306 阅读 · 0 评论 -
生成唯一ID
因为业务需求所以需要一个ID生成器,要求生成器16位ID唯一。UUID太长不适合需求,所以琢磨了一个。总体思路就是,借助UUID(毕竟人家全球唯一,自己写太麻烦了)生成一个baseID,然后搞个位权出来进行数据整合算出所需要的ID。后来经过领导的开导又把生成器变为动态生成,其实就是可生成14到32位任意ID。下面直接上代码了。public abstract class UniCodeU原创 2016-12-02 17:56:22 · 4905 阅读 · 0 评论 -
为什么要使用SLF4J而不是Log4J
本文由 ImportNew - Jaskey 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple loggin转载 2014-10-20 11:52:11 · 442 阅读 · 0 评论 -
为什么String类是不可变的?
本文由 ImportNew - 唐小娟 翻译自 Journaldev。欢迎加入Java小组。转载请参见文章末尾的要求。String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。String类不可变性的好处只有当字符串是不可变的,转载 2014-10-21 10:45:56 · 405 阅读 · 0 评论 -
避免Java应用中NullPointerException的技巧和最佳实践
本文由 ImportNew - 熊铎 翻译自 Javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键。俗话说“预防胜于治疗”,对于这么令人讨厌的空指针异常,这句话也是成立的。值得庆幸的是运用一些防御性的编码技巧,跟踪应用中多个部分之间的联系,你可以将Java中的空指针异常控制在一个转载 2014-10-21 10:46:40 · 424 阅读 · 0 评论 -
Java异常的面试问题及答案-Part 1
本文由 ImportNew - 韩远青 翻译自 Journaldev。欢迎加入Java小组。转载请参见文章末尾的要求。Java提供了一个健壮的、面向对象的方法来处理出现异常,称为Java异常处理。 我以前写过一篇长文章来介绍Java异常处理,今天我将列出一些重要的Java异常面试的问题及答案,希望对你们的面试有所帮助。1.什么是Java异常答:异常是发生在程序执行过程中阻碍转载 2014-10-21 10:55:13 · 375 阅读 · 0 评论 -
深入理解Java中的final关键字
本文由 ImportNew - 唐小娟 翻译自 Javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明转载 2014-10-21 11:10:10 · 344 阅读 · 0 评论