理解_Tag标签_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
当前位置:程序员俱乐部 >>Tag标签 >> 理解 >>列表
1、类加载:在java代码中,类型的加载、连接和初始化过程都是在程序运行期间完成的。这种机制为程序提供了更大的灵活性,增加了更多的可能性。2、类加载器深入剖析2.1、Java虚拟机和程序的生命周期2.2、有如下的几种情况下、Java虚拟机将结束生命周期--执行了System.exit()方法--程序正常执行结束--程序在执行过程中遇到了异常或者错误而异常终止--由于操作系统出现错误而导致Java虚拟机进程终止... 查看全文
前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能,这篇文章就介绍一下如何利用VisualVM进行性能分析,以及在分析之前需要知道一些GC优化的原则,GC优化的目的,以及遇到问题时怎么去解决问题的方法。1为什么需要开发大型Java应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等... 查看全文
Java虚拟机深入理解系列全部文章更新中…深入理解Java虚拟机-Java内存区域透彻分析深入理解Java虚拟机-常用vm参数分析深入理解Java虚拟机-JVM内存分配与回收策略原理,从此告别JVM内存分配文盲深入理解Java虚拟机-如何利用JDK自带的命令行工具监控上百万的高并发的虚拟机性能深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析深入理解Java虚拟机-你了解GC算法原理吗这篇文章主要介绍Java内存区域,也是作为Java虚拟机的一些最基本的知识... 查看全文
· 深入理解Java 8 Lambda发布时间:2019-08-30
语言篇——lambda,方法引用,目标类型和默认方法关于本文介绍了JavaSE8中新引入的lambda语言特性以及这些特性背后的设计思想。这些特性包括:lambda表达式(又被成为“闭包”或“匿名方法”)方法引用和构造方法引用扩展的目标类型和类型推导接口中的默认方法和静态方法1.背景Java是一门面向对象编程语言。面向对象编程语言和函数式编程语言中的基本元素(BasicValues)都可以动态封装程序行为:面向对象编程语言使用带有方法的对象封装行为,函数式编程语言使用函数封装行为... 查看全文
操作系统中的管程如果你在大学学习过操作系统,你可能还记得管程(monitors)在操作系统中是很重要的概念。同样Monitor在java同步机制中也有使用。管程(英语:Monitors,也称为监视器)是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。这些共享资源一般是硬件设备或一群变量。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。管程提供了一种机制... 查看全文
前言Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。正文1.强引用... 查看全文
计数排序(Countingsort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值。同样具有线性时间排序的算法还有桶排序和基数排序,这一点不要搞混。计数排序不是基于比较的排序,所以它的排序效率是线性的,在特定的场景下(已知数组的最大最小值,切数组元素整体量不是很大的情况下)排序效率极高,而基于比较排序的算法,其时间复杂度基本逃脱不了O(nlogn)的魔咒,当然能达到O(nlogn)的时间复杂度,已经是非常牛逼了... 查看全文
先看下这段神奇的Java代码:publicstaticvoidmain(String[]args)throwsException{doSomethingMagic();System.out.printf("2+2=%d",2+2);}执行结果:2+2=5那么doSomethingMagic到底做了什么神奇的事情呢?先看代码:privatestaticvoiddoSomethingMagic()throwsException{Classcache=Integer.class... 查看全文
###前言理解HashMap和ConcurrentHashMap的重点在于:(1)理解HashMap的数据结构的设计和实现思路(2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路前面的文章已经介绍过Map结构的底层实现,这里我们重点放在其扩容方法,这里分别对JDK7和JDK8版本的HashMap+ConcurrentHashMap来分析:###JDK7的HashMap扩容这个版本的HashMap数据结构还是数组+链表的方式,扩容方法如下... 查看全文
我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量:staticfinalintnumber1=512;staticintnumber3=545;Java程序员都知道两者的区别。下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。使用命令行javap-cconstant.ConstantFolding查看.class文件反编译出来的字节码:结果:这些字节码指令的说明,在wikipedia里有说明:wiki:https://en... 查看全文
· 深入理解Java内存模型的语义发布时间:2018-06-25
###前言Java内存模型(JMM)给我们介绍了在当代不同的硬件架构情况下,多线程程序需要关注什么问题以及如何利用JMM来正确的处理这些问题。###多线程带来的问题多线程程序主要关注两个问题:(1)共享变量可见性问题(2)代码重排序一致性问题###Java内存模型的关键点JMM已经保证了as-if-serial原则,也就是Java的程序在单线程情况下,不管JIT做不做重排序,也不管代码指令在几个CPU上执行,看到的最终结果必须和代码顺序执行的结果保持一致。但是在多线程的情况下... 查看全文
· 深入理解DirectByteBuffer发布时间:2018-04-22
介绍最近在工作中使用到了DirectBuffer来进行临时数据的存放,由于使用的是堆外内存,省去了数据到内核的拷贝,因此效率比用ByteBuffer要高不少。之前看过许多介绍DirectBuffer的文章,在这里从源码的角度上来看一下DirectBuffer的原理。用户态和内核态Intel的X86架构下,为了实现外部应用程序与操作系统运行时的隔离,分为了Ring0-Ring3四种级别的运行模式。Linux/Unix只使用了Ring0和Ring3两个级别。Ring0被称为用户态... 查看全文
说来惭愧,之前一直没有写过博客,学习的内容或者一些技术类话题也只是记录在云笔记上,今天偶然间想起来这件事情,从今天开始不定时更新博客,如有不正确或者待讨论的地方欢迎看到的朋友评论。技术分享从学习周志明的《深入理解java虚拟机》开始吧。文章内容为本人读书笔记,如有雷同,那我们真是太有缘了。下面进入正文:=================================================================JVM中运行时数据区:方法区、虚拟机栈、本地方法栈、堆... 查看全文
本章写的优点简略,有空会补充及丰富内容前面两章讲的是理论方面的内容,本章可以通过命令和可视化界面的两种方式监控jvm的方方面面。jdk命令行工具:(1)jps:jvmprocessstatustool显示指定系统内所有的hotspot虚拟机进程。虚拟机进程状况工具命令格式:jps[options][hostid].options:-q,-m,-i,-ve.g:jps-q(2)jstat:jvmstatisticsmonitoringtool,用于手机hotSpot虚拟机各方面的运行数据... 查看全文
什么是微服务关注作者的微信公众号:“Java架构师学习”一个只分享Java架构干货的公众号首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等。一个打车软件的架构图如下:尽管也是遵循模块化开发,但最终它们会打包并部署为单体式应用。例如Java应用程序会被打包成WAR... 查看全文
(一)什么是序列化和反序列化序列化(serialization)和反序列化(deserialization)是将对象转化成字节数组以方便保存或者用于网络传输,这个对象可以是一个图片,一个字符串,一个class等等,常见序列化格式有字节数组,json格式,xml格式,更加高效的有google开源的ProtocolBuffers,以及ApacheAvro。(二)为什么需要序列化和反序列化(1)实现数据持久化,一般jvm的里面数据,在java程序退出时,所有的状态都不会保留... 查看全文
中国企业家俱乐部等主办的“中英商业论坛”于今日在上海召开,英国首相特蕾莎·玛丽·梅(TheresaMaryMay)、阿里巴巴集团董事局主席马云等出席该论坛,并分别做了主旨演讲。在今天的演讲中,马云细数了英国人类发展中的取得的成就,称“英国为人类社会奠定了基础”;讨论了在全球化的背景下,中英贸易关系以及未来合作的可能。马云称,英国脱欧的时期,他对全球化的进展有过怀疑,对英国的选择也不是完全理解... 查看全文
【猎云网(微信:ilieyun)杭州】1月27日报道(文/盛丽艳)1月25日早晨,80后创业代表人物茅侃侃自杀身亡的消息在朋友圈传开。从曾经与李想、戴志康、高燃并称“京城IT四少”,到离开人世,他的经历让人扼腕叹息。也引来了不少人,对创业深度思考。尚贞涛就是其中一位,他与茅侃侃同年出生,同年创业,同样少年成名,之后又连连失意。联系上尚贞涛,是因为他写了一个祭文“理解茅侃侃敬重茅侃侃”,在访谈中,他从自己的经历出发... 查看全文
· 理解Java中的hashCode和equals 方法发布时间:2018-01-26
在Java里面所有的类都直接或者间接的继承了java.lang.Object类,Object类里面提供了11个方法,如下:````1,clone()2,equals(Objectobj)3,finalize()4,getClass()5,hashCode()6,notify()7,notifyAll()8,toString()9,wait()10,wait(longtimeout)11,wait(longtimeout,intnanos)````这里面我们常用的方法有三个... 查看全文
有时候越是基础的问题,越是容易被我们忽视,比如标题上的问题,感觉挺简单,但真正让解释一下,未必能够说的很清楚,其实这个问题在Oracle官网的Java的文档里面解释的非常清晰,看官网下面的一张图:先解释下几个名词的意思:(一)JVM(JavaVirtualMachine):Java虚拟机主要负责将class文件也就是bytecode编码解释为机器能够识别的010101类似的编码,然后执行程序。因为JVM在主流平台都有对应实现,所以我们经常说JVM是跨平台的,只需要一次编写,便可以到处运行... 查看全文