自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 堆排序基本思路

堆排序的基本思路:   a.将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;   b.将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;   c.重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。 ...

2019-09-05 08:17:00 381

转载 hashcode和equals什么时候需要重写

HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等的。若equals()不相等则认为他们不相等。如果只重写hashcode()不重写equals()方法,当比较equals()时只是看他...

2019-09-04 14:11:00 489

转载 进程和线程的区别及通信方式

根本区别:进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位。 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销...

2019-08-31 16:35:00 693

转载 计算机网络OSI模型与TCP/IP模型

OSI模型 OSI(open system interconnected,OS)参考模型是一个开放式体系结构,它规定将网络分为七层,从下往上依次是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 1.物理层(physical layer)的主要功能:是完成相...

2019-08-31 15:30:00 1892

转载 类加载过程

类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallization)、使用(Using)和卸载(Unloading)这7...

2019-08-31 14:52:00 64

转载 static关键字与final

解释:被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的 静态方法 1、静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。 2、静态方法里面能不能引用静态资源?可以,因为都是类初始化...

2019-08-31 10:51:00 74

转载 聚集索引与非聚集索引

聚集(clustered)索引,也叫聚簇索引。 定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引 解释:就像字典根据A~Z去查汉字。 数据行的物理顺序与列值的顺序相同,如果我们查询id比较靠后的数据,那么这行数据的地址在磁...

2019-08-31 10:28:00 123

转载 堆、栈概念

堆: ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②...

2019-08-28 10:02:00 1375

转载 dubbo 集群容错策略

failover cluster 模式 失败自动切换,自动重试其他机器,默认就是这个,常见于读操作。(失败重试其它机器) failfast cluster 模式 一次调用失败就立即失败,常见于非幂等性的写操作,比如新增一条记录(调用失败就立即失败) failsafe cluste...

2019-08-23 16:33:00 291

转载 集群下dubbo负载均衡配置

Random LoadBalance 随机,按权重设置随机概率。 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。 RoundRobin LoadBalance 轮循,按公约后的权重设置轮循比率。 存在慢的提供者累积请...

2019-08-23 16:22:00 291

转载 foreach与正常for循环效率对比

需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。 需要循环链表结构的数据时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。 ...

2019-08-22 16:41:00 386

转载 如何判断一个常量是废弃常量,如何判断一个类是无用的类

类需要同时满足下面3个条件才能算是 “无用的类” : 1.该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。 2.加载该类的 ClassLoader 已经被回收。 3.该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该...

2019-08-22 10:27:00 1586

转载 如何判断对象是否死亡

1.引用计数法 概念: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就增加1;当应用失效时,计数器值就减1;任何时刻计数器为0是对象就是不可能再被使用的。 但是:主流的java虚拟机并没有选用引用计数器算法,其中一个最主要的原因是:它很难解决对象之间是相互循环引用。 优...

2019-08-22 09:23:00 124

转载 CAS与synchronized的使用情景

简单的来说CAS适用于写比较少的情况下(多读场景,冲突一般较少),synchronized适用于写比较多的情况下(多写场景,冲突一般较多) 1.对于资源竞争较少(线程冲突较轻)的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源;...

2019-08-19 17:26:00 301

转载 乐观锁与悲观锁

乐观锁(Optimistic Lock) 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_co...

2019-08-19 16:31:00 59

转载 Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

1.与运算符 与运算符用符号“&”表示,其使用规律如下: 两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。 public class data13 { public static void main(String[] args) { int a=129; int b=...

2019-08-16 16:50:00 128

转载 长连接、短连接

1.什么是长连接、短连接 在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中 断连接。当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web ...

2019-08-14 10:49:00 74

转载 HTTP协议与TCP/IP协议的关系,以及如何理解HTTP协议是无状态的

1.HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使得网络上接收发送端所发出的所...

2019-08-14 10:25:00 543

转载 TCP 与 UDP

一、 TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,使用三次握手协议建立连接、四次挥手断开连接。面向连接意味着两个使用TCP的应用(通常是一个客户端和一个服务器)彼此在交换数据包之前必须先建立一个TCP...

2019-08-14 10:08:00 101

转载 HTTP和HTTPS协议

1.什么是协议? 网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者“规则”,有了这种“约定”,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。 2.HTTP协议是什么? HTTP协议是超文本传输协议的缩写,英文是 Hyper Text Tran...

2019-08-13 18:29:00 139

转载 面试中的线程池

1.为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。每个线程池还维护一些基本统计信息,例如已完成任务的数量。 《java并发编程的艺术》中提到使用线程池的好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应...

2019-08-13 12:07:00 65

转载 synchronized关键字和volatile关键字比较

1. volatile关键字是线程同步的轻量级实现,所以volatile性能肯定要比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized可以修饰方法以及代码块。synchronized关键字在Java1.6之后进行了主要包括为了减少获得锁和释放锁...

2019-08-13 11:29:00 178

转载 java内存模型

在JDK1.2之前,java的内存模型实现总是从主存(即共享内存)读取变量,是需要进行特别注意的。而在当前的java内存模型下,线程 可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还在继续使用它...

2019-08-13 11:13:00 60

转载 谈谈 synchronized和ReenTrantLock 的区别

1.两者都是可重入锁 “可重入锁”概念是:自己可以再次获得自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获得这个对象的锁的时候还是可以获取的,如果锁不可重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都增1,所以要等到锁的计数器下降为0时...

2019-08-13 10:48:00 91

转载 说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗...

JDK1.6对锁的实现引入了大量的优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术来减少锁操作的开销。 锁主要存在四种状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,他们会随着竞争的激烈而逐渐升级。注意锁可以升级不可降级,这种策略 ...

2019-08-13 10:18:00 1178

转载 面试中关于synchronized关键字

一、 说说对synchronized关键字的了解 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或代码块在任意时刻只能有一个线程执行。 另外,在早期的java版本中,synchronized属于重量级...

2019-08-13 10:08:00 162

转载 ArrayList和Vector区别

Vector类所有的方法都是同步的,可以由两个线程安全的访问一个Vector对象、但是一个线程访问Vector的话,代码要在同步操作上耗费大量的时间。 ArrayList不是同步的,所以在不需要保证线程安全时推荐使用ArrayList ...

2019-08-12 16:22:00 37

转载 Java 中的异常处理

在java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是java异常处理的重要子类,各自都包含大量子类。 Error(错误):是程序程序无法处理的错误,表示运行应用程...

2019-08-11 21:39:00 51

转载 Object类的常见方法总结

Object类是一个特殊的类,是所有类的父类。它主要提供了以下11个方法: public final native Class<?> getClass() //native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。pub...

2019-08-11 21:09:00 131

转载 关于 final 关键字的一些总结

final关键字主要用在三个地方:变量、方法、类 1.对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化后便不能更改;如果引用类型的变量,则在对其初始化后便不能再让其指向另一个对象。 2.当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会...

2019-08-11 20:49:00 51

转载 == 与 equals

==:它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals():它的作用也是判断两个对象是否相等。但它一般有两种情况: 1.类没有覆盖equals方法。则通过equals比较该类的两个对...

2019-08-11 20:26:00 60

转载 String 和 StringBuffer、StringBuilder 的区别是什么?String 为什 么是不可变的?

可变性 简单来说:String类中使用final关键字字符数组保存字符串 private final char value[] 所以String对象是不可变的。 StringBuilder与StringBuffer都继承自AbstractStringBuilder...

2019-08-11 17:01:00 290

转载 简单叙述minor和fullgc

从年轻代空间(包括Eden和Survivor区域)回收内存被称为Minor GC,对老年代GC成为Major GC ,而Full GC是对整个堆来说的,出现Full GC的时候经常伴随至少一次的Minor GC,但非绝对的。Major GC的速度一般会比Minor GC慢10倍以上 ...

2019-08-11 16:33:00 80

转载 Java中创建子类实例时会创建父类实例吗?

每个类的这些元数据,无论是在构建这个类的实例还是调用这个类某个对象的方法,都会访问方法区的这些元数据。构建一个对象时,jvm会在堆中给对象分配空间,这些空间用来存储当前对象实例属性以及其父类的实例属性(而这些属性信息都是从方法区获得),注意,这里并不是仅仅为当前对象的实例属性分配空间,还需要给...

2019-08-11 15:35:00 154

转载 synchronized和volatile(可见性与禁止指令重排序)区别?

Volatile final synchronized都可以实现可见性。 Volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 Volatile 仅能使用在变量级别...

2019-08-11 15:24:00 131

转载 Java线程同步的方式有哪些?

同步方法:即有synchronized关键字修饰的方法。 同步代码块:即有synchronized 关键字修饰的语句块 使用特殊域变量(volatile)实现线程同步 使用reentranLock实现线程同步 使用局部变量实现线程同步,如果使用ThreadLocal管理变量,则每一个使...

2019-08-11 14:02:00 411

转载 简述为什么会出现锁机制

Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据出现不正确的结果,相互之间产生冲突,因此加入锁保证了该变量的唯一性和准确性。 转载于:...

2019-08-11 13:35:00 121

转载 Java中的引用

强引用、软引用、弱引用、虚引用 强引用:即常用的 object o = new object(); 只要强引用还在,垃圾回收器就永远不会回收掉此类对象。 软引用:用来描述一些还有用但非必须的对象。在内存即将发生内存溢出之前,会把这些对象列进回收范围之中进行二次垃圾回收。如果这次回收还没有足...

2019-08-11 11:57:00 40

转载 将对象从年轻代到老年代是如何判断该对象执行了多久?以及什么情况下发生转移?那些对象在老年代中?...

Minor GC发生在年轻代,频率较高速度较快 Major GC 是清理永久代 Full GC 是清理整个堆空间,包括年轻代和永久代 一般新生成的对象都出现在Eden区,当Eden区被填满时,所有经过垃圾回收还存活的对象被复制到两个Survivor区域中的一个,我们假定是...

2019-08-11 10:46:00 800

转载 在垃圾回收对象的时候程序的逻辑是否可以继续执行?

不同的垃圾收集器不同。Serial,parnew等会停止逻辑的执行 。 而CMS G1等会在某一阶段停止用户线程。 转载于:https://my.oschina.net/u/417739...

2019-08-11 10:41:00 123

空空如也

空空如也

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

TA关注的人

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