- 博客(13)
- 收藏
- 关注
转载 一篇就够 快速排序的原理及其java实现(递归与非递归)
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程
2020-06-03 18:50:58
445
转载 JMM理解整理
java内存模型JMM理解整理 什么是JMM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从java 5开始的JSR-133发布后,已经成熟和完善起来。 内存划分 JMM规定了内存主要划分为主内存和工作内存两
2020-05-27 16:44:35
326
转载 单例模式双检锁 volatile 详解
前言单例模式在平时算比较常见,有关java单例模式的写法有很多种,在这里分析一种比较好的写法。代码 public class Test { private volatile static Test instance; private Test() { } public static Test getInstance() { if (instance == null) { synchronize...
2020-05-12 11:42:19
388
原创 设计模式相关
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
2020-05-09 18:00:52
144
转载 HashCode&identityHashCode与偏向锁
hashCode我们知道在Java中,一切对象都继承自java.lang.Object类。这个类中有一个可继承的方法叫hashCode()。它在Object类中的方法签名是这样的:public native int hashCode();可以看到,如果一个对象不覆盖这个方法,那它会继承Object类的实现,是一个native的方法。这个时候,它会根据对象的内存地址返回哈希值。所以我...
2020-05-06 15:34:13
1210
1
转载 ArrayList、LinkedList、Vector、HashSet、Treeset、HashMap、TreeMap的区别和适用场景
ArrayList与LinkedList的区别和适用场景Arraylist:优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。缺点:因为地址连续,ArrayList要移动数据,所以插入和删除操作效率比较低。LinkedList:优点:LinkedList基于链表的数据结构,地址是任意的,所...
2020-05-05 10:53:20
1654
转载 数据库事务和四种隔离级别
面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象的三大特性是"封装、"多态"、"继承"六大原则是"单一职责原则"、"开放封闭原则...
2020-05-04 20:09:41
256
转载 数据库四大特性及数据库隔离级别
本篇文章主要介绍数据库的四大特性ACID,以及说明一下数据库的隔离级别。如果想要说明一个数据库或者一个框架支持事务性操作,则必须要满足下面的四大特性1. 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。2. 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一...
2020-05-04 12:30:55
196
转载 MySQL - 常见的三种数据库存储引擎
数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。查看存储引擎:我们可以用SHOW ENGINES; 来查询数据库的存储引擎。M...
2020-05-01 18:49:19
271
1
转载 一针见血系列: 一句话理解什么是happens-before
在程序运行过程中,所有的变更会先在寄存器或本地cache中完成,然后才会被拷贝到主存以跨越内存栅栏,此种跨越序列或顺序称为happens-before。注:happens-before本质是顺序,重点是跨越内存栅栏通常情况下,写操作必须要happens-before读操作,即写线程需要在所有读线程跨越内存栅栏之前完成自己的跨越动作,其所做的变更才能对其他线程可见。...
2020-04-27 12:06:11
406
转载 Java虚拟机:GC算法深度解析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在前面的文章里介绍了可达性分析算法,它为我们解决了判定哪些对象可以回收的问题,接下来就该我们的垃圾收集算法出场了。不同的垃圾收集算法有各自不同的优缺点,在JVM实现中,往往不是采用单一的一种算法进行回收,而是采用几种不同的算法组合使用,来达到最好的收集效果。接下来详细介绍几种垃圾收集算法的思想及发展过程。 ...
2020-04-27 12:04:59
100
转载 jvm栈深度理解
什么是java栈深度?java栈深度有什么用?我们知道java栈是java虚拟机的一个重要的组成部分,在栈里进行线程操作,存放方法参数等等。栈在初始化过后是有一定的大小的。public class Test{private int count = 0;public void testAdd(){count ++;...
2020-04-27 12:03:34
1051
转载 深入理解JVM
1 CPU和内存的交互了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】有篇很棒的文章,从cpu讲到内存模型:什么是java内存模型在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存...
2020-04-27 11:58:06
318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人