自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 一篇就够 快速排序的原理及其java实现(递归与非递归)

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程

2020-06-03 18:50:58 370

转载 JMM理解整理

java内存模型JMM理解整理   什么是JMM   JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从java 5开始的JSR-133发布后,已经成熟和完善起来。   内存划分   JMM规定了内存主要划分为主内存和工作内存两

2020-05-27 16:44:35 267

转载 单例模式双检锁 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 340

原创 设计模式相关

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

2020-05-09 18:00:52 106

转载 HashCode&identityHashCode与偏向锁

hashCode 我们知道在Java中,一切对象都继承自java.lang.Object类。这个类中有一个可继承的方法叫hashCode()。它在Object类中的方法签名是这样的: public native int hashCode(); 可以看到,如果一个对象不覆盖这个方法,那它会继承Object类的实现,是一个native的方法。这个时候,它会根据对象的内存地址返回哈希值。 所以我...

2020-05-06 15:34:13 1123 1

转载 ArrayList、LinkedList、Vector、HashSet、Treeset、HashMap、TreeMap的区别和适用场景

ArrayList与LinkedList的区别和适用场景 Arraylist: 优点:ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。 缺点:因为地址连续,ArrayList要移动数据,所以插入和删除操作效率比较低。 LinkedList: 优点:LinkedList基于链表的数据结构,地址是任意的,所...

2020-05-05 10:53:20 1482

转载 数据库事务和四种隔离级别

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象的三大特性是"封装、"多态"、"继承" 六大原则是"单一职责原则"、"开放封闭原则...

2020-05-04 20:09:41 198

转载 数据库四大特性及数据库隔离级别

本篇文章主要介绍数据库的四大特性ACID,以及说明一下数据库的隔离级别。 如果想要说明一个数据库或者一个框架支持事务性操作,则必须要满足下面的四大特性 1. 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。 2. 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一...

2020-05-04 12:30:55 155

转载 MySQL - 常见的三种数据库存储引擎

数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。 查看存储引擎: 我们可以用SHOW ENGINES; 来查询数据库的存储引擎。 M...

2020-05-01 18:49:19 224 1

转载 一针见血系列: 一句话理解什么是happens-before

在程序运行过程中,所有的变更会先在寄存器或本地cache中完成,然后才会被拷贝到主存以跨越内存栅栏,此种跨越序列或顺序称为happens-before。 注:happens-before本质是顺序,重点是跨越内存栅栏 通常情况下,写操作必须要happens-before读操作,即写线程需要在所有读线程跨越内存栅栏之前完成自己的跨越动作,其所做的变更才能对其他线程可见。 ...

2020-04-27 12:06:11 367

转载 Java虚拟机:GC算法深度解析

版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在前面的文章里介绍了可达性分析算法,它为我们解决了判定哪些对象可以回收的问题,接下来就该我们的垃圾收集算法出场了。不同的垃圾收集算法有各自不同的优缺点,在JVM实现中,往往不是采用单一的一种算法进行回收,而是采用几种不同的算法组合使用,来达到最好的收集效果。接下来详细介绍几种垃圾收集算法的思想及发展过程。 ...

2020-04-27 12:04:59 79

转载 jvm栈深度理解

什么是java栈深度? java栈深度有什么用? 我们知道java栈是java虚拟机的一个重要的组成部分,在栈里进行线程操作,存放方法参数等等。 栈在初始化过后是有一定的大小的。 public class Test{ private int count = 0; public void testAdd(){ count ++; ...

2020-04-27 12:03:34 945

转载 深入理解JVM

1 CPU和内存的交互 了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】 有篇很棒的文章,从cpu讲到内存模型:什么是java内存模型 在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。 但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存...

2020-04-27 11:58:06 285

空空如也

空空如也

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

TA关注的人

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