自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 【数据结构与算法】第六章 排序(数组)

第六章 排序(数组) 1、我们这章所说的排序是针对数组的排序。切记这一点。2、被排序的对象必须属于Comparable类型,是可比较的。https://www.cnblogs.com/onepixel/articles/7674659.html 我们介绍以下几种排序的方式:选择排序、插入排序、归并排序、快速排序、堆排序 一、选择排序(O(n^2))选择排序也...

2018-12-15 17:47:15 250

原创 【数据结构与算法】第五章 优先队列(堆)排序

第五章 优先队列(堆)排序优先队列是对Queue的一种优化方案。java标准库中实现Queue的是LinkedList.它只能解决先进先出的排队操作。它是按入队时间的先后顺序进行存储。而优先队列是按优先级的顺序进行存储。在现实生活中也很常见,比如火车站买票,军人优先、有特殊情况的客人优先。也就是说不按你的时间顺序,而是客人的优先级别。 优先队列,也就可以称为最大堆或最小堆,具体...

2018-12-15 17:45:59 463

原创 【数据结构与算法】第四章 散列(解决查找问题)

第四章 散列(解决查找问题)1、散列是一种用于以常数平均时间执行插入、删除和查找的技术。它解决的是数组的值的快速查找问题。2、它解决的是查询的时候可以达到O(1)的时间复杂度。因为它底层是一个数组。所以可以随机的定位。3、散列的底层是数组,但又不同于普通的数组。它牺牲了排序性,同样findMin\findMax这样的方法也不适用。它提高的是对值的查找效率。使得数值和索引下标可以进行改换...

2018-12-15 17:44:51 344

原创 【数据结构与算法】第三章 树(解决查找问题)

第三章 树(解决查找问题)树是对链表的优化:1、对于大量的输入数据,链表的线性访问时间太慢,不宜使用。2、解决链表类的查找和排序的问题。    处理特殊领域的数据,会有出奇的高效率。快速搜索。数据结构不光解决的是数据的存储问题,更重要的是在特定情况使用某种特定的数据结构可以解决高效的搜索问题。树结构可以解决链表的线性访问时间效率的问题。说白了就是对链...

2018-12-15 17:43:50 457

原创 【数据结构与算法】第二章 数组、链表、栈和队列(基础)

第二章 数组、链表、栈和队列(基础)表、栈、队列都属于线性的数据结构这一章是基于数组及对数组的优化来讲。  一、普通数组int[] arr = new int[10];这是一个普通数组的基本结构,也是java语言中最基础的数据结构。数组也分为一维数组和多维数组。我们这次主要来讲一维数组。1、解决数据存储的问题。它是带有一组操作对象的集合。(由于java是强类型的...

2018-12-15 17:42:27 216

原创 【数据结构与算法】第一章 引言及算法分析

第一章 引言及算法分析数据结构和算法解决的问题:1、数据的有效存储数据2、排序问题3、查找问题 一、为什么要学习数据结构1、数据结构是所有计算机专业的同学必学的课程2、数据结构研究的是如何在计算机中组织和存储,使得我们可以更好的获取数据和修改数据3、数据结构的家族,三种结构:4、数据结构的应用:我们常用的数据库、操作系统快速多任务切换、文件压缩、通讯...

2018-12-15 17:40:59 161

原创 【JVM】第十三章 线程安全与锁优化

第十三章 线程安全与锁优化线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。一、java语言中的线程安全我们下面讨论的线程安全限定于多个线程之间存在共享数据访问的这种情况。如果不共享数据,那么从线程的角度来看它就是安全的。...

2018-12-15 17:38:26 154

原创 【JVM】第十二章 Java内存模型与线程

第十二章 Java内存模型与线程高效并发:多任务同时处理衡量一个服务性能高低好坏,每秒事务处理数(TPS)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而TPS值与并发能力又有非常密切关系。下面我们来介绍虚拟机是如何来实现、多线程之间由于共享和竞争数据而导致的一系统问题及解决方案。 一、硬件的效率与一致性处理器、高速缓存、主内存1)处理器与主内存的速...

2018-12-15 17:37:19 117

原创 【JVM】第十章 代码的编译

第十章 代码的编译对于编译来说有三种场景:1、对于java语言来说编译就是把.java文件变成.class文件的过程。(前端编译器)2、指虚拟机在后端运行期编译器JIT把字节码转变成机器码的过程。(即时编译器JIT)3、使用静态提前编译器AOT编译器,直接把.java文件编译成本地机器码的过程。(静态提前编译器AOT) 最为我们熟悉应该是第一种前端编译器javac,它不依赖...

2018-12-15 17:36:14 122

原创 【JVM】第八章 虚拟机字节码执行引擎

第八章 虚拟机字节码执行引擎  字节码是如何被虚拟机执行从而完成指定功能呢?我来们了解一下jvm虚拟机底层的原理。“虚拟机”是有别与物理机的概念,物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上。而虚拟机的执行引擎是自已实现的,因此可以自行的制定指令集与执行引擎的结构,并且能够执行那些不被硬件直接支持的指令集格式。了解两个概念,解释执行和编译执行。解...

2018-12-11 18:56:58 134

原创 【JVM】第七章 虚拟机类加载机制

 第七章 虚拟机类加载机制https://blog.csdn.net/luanlouis/article/details/50529868一、概述class文件中描述的各种信息,最终都要加载到虚拟机中之后才能运行和使用。类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类的加载过程是在...

2018-12-11 18:55:25 131

原创 【JVM】第六章_2 指令简介

字节码指令简介:一、字节码与数据类型i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代表float,d代表double,a代表reference。 二、加载和存储指令加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回的数据传输。a. 将一个局部变量加载到操作栈的指令:iload, iload_<n>,...

2018-12-11 18:54:21 119

原创 【JVM】第六章_1 类文件结构

第六章_1 类文件结构这章开始之前,我们先搞明白两个概念,机器码和字节码。一、机器码与字节码1)机器码:机器语言指令,有时也被称为原生码(Native Code),是CPU直接读取运行的机器指令,运行速度最快。2)字节码:是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件,字节码是一种中间码。编译器将源码编译成字节码,字节码在运行时通过JVM(JAVA虚...

2018-12-11 18:53:06 155

原创 【JVM】第五章_2 性能调优实战

第五章_2 性能调优实战GC的性能怎么样,我们得有数据才能进行分析。同时还得有分析的步骤。第一步要得到GC的日志,第二步进行分析,第三步进行小步调优对比分析开始之前先说介绍一下两款可视化的分析工具,有了工具就可以事半功倍。1、在线工具:http://gceasy.io/2、GCViewerhttps://github.com/chewiebug/GCViewermvn ...

2018-12-11 18:51:47 152

原创 【JVM】第五章_1 故障分析

第五章_1 故障分析这一章就不按照书本来讲了,这里我们重来说来两个重点。1、故障分析(补上第二章落下的内存溢出的案例情况)2、GC两款收集器的性能调优 一、内存溢出模拟jvm垃圾收集其实就是关注的这两块区域,堆和非堆区。1)heap溢出import java.util.ArrayList;import java.util.List;public clas...

2018-12-11 18:47:31 122

原创 【JVM】第四章 虚拟机性能监控及故障处理工具

一、概述理论是指导实践的工具,能把理论应用到实践中去,才是我们学习的最终目的。知识、经验是关键的基础,数据是依据,工具是运用知识处理数据的手段。 二、jdk自带的命令行工具集jdk 的安装目录:打开终端,输入:/usr/libexec/java_home -V/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Conte...

2018-12-11 18:46:05 192

原创 【JVM】第三章_2 内存分配与回收策略

1、对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发生一次新生代GC(Minor GC) 2、大对象直接进入老年代所谓的大对象是指,需要大量连续内存空间的java对象。最典型的大对象就是那种很长的字符串以及数组。 3、长期存活的对象将进入老年代1)第一次minor GC 如果在Eden区存活的对象将被移入...

2018-12-11 18:40:30 91

原创 【JVM】第三章_1 垃圾收集器

第三章_1 垃圾收集器一、概述垃圾收集GC,这项技术当做java语言的伴生产物。 有三个问题需要回答:1、哪些内存需要回收?1)基于线程隔离的区域(操作数栈、本地变量表这些)不需要回收,因为它的生命周期是基于线程存在的,方法或线程结束,内存自然也跟着回收2)堆空间需要进行回收。堆空间又分为堆区和非堆区,而堆区又分为新生代(朝生夕灭)和老年代。这些空间都需要进行回收。...

2018-12-11 18:39:07 128

原创 【JVM】第二章 Java内存区域

1、java内存管理的优势相对于C语言需要开发人员自己手动的管理内存来说,java语言的自动内存回收机制是一大优势。但同时如果生产环境出现了内存溢出和泄露,就需要我们了解jvm的原理,以便更好的应用jvm提高性能和安全。2、运行时数据区域(这是一个理论模型)1)在说每个部分的作用之前说一下线程共享数据区和线程隔离数据区。一个是共享就是这块区域是大家都可以用,一起分享的。一个...

2018-12-11 18:28:20 106

原创 【JVM】第一章 走近java

第一章 走近java1、 TIOBE发布的编程语言排行榜,可见java语言的使用者一直都是遥遥领先,2017年、2018年都排名第一位。当然上面我们也可以看到其他一些语言的流行趋势,每种语言都有它擅长的领域。语言没有好坏之分,只有是否更加适合你的应用场景。 2、java语言的优点:1)它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想。(因为jvm的应用)2)它...

2018-12-11 18:22:15 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除