初识Nacos基本原理

转载于阿里巴巴中间件高级开发工程师:Nacos 注册中心的设计原理详解

内存泄漏和内存溢出

1. 内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 2. 内存溢出指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。 3. 内存泄漏和内存溢出的关系内存泄漏的堆积最终会导致...
并发

FutureTask详解

Future 表示了一个任务的生命周期,是一个可取消的异步运算,可以把它看作是一个异步操作的结果的占位符,它将在未来的某个时刻完成,并提供对其结果的访问。在并发包中许多异步任务类都继承自Future,其中最典型的就是 FutureTask。

并发

Java线程安全的集合类

一、早期线程安全的集合我们先从早期的线程安全的集合说起,它们是Vector和HashTable 1.VectorVector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所以现在Vec...
Java

字节码增强技术探索

转载于美团技术团队字节码增强技术探索

Java

Java泛型以及类型擦除

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。

Java

count(1)、count(*)、count(列名)的区别

在平时开发,或者写sql过程中,没怎么注意过count(1)、count(*)、count(列名)的区别,本文,将结束一下这三者的区别。

浅谈StringBuilder和StringBuffer的区别

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

Java

Java中父类和子类的加载顺序

加载顺序:父类静态属性(成员变量) > 父类静态代码块 > 子类静态属性 > 子类静态代码块 > 父类非静态属性 > 父类非静态代码块 > 父类构造器 > 子类非静态属性 > 子类非静态代码块 > 子类构造器

Java

线程通信之生产者消费者传统版

实现一个简单的生产者消费者模式

并发