- 博客(12)
- 收藏
- 关注
原创 多线程-基本概念
多线程的基本原理及挑战学习方法:场景->需求->解决方案->应用->原理Java 中如何应用线程1、实现Runnable接口2、直接使用Thread类(本质上是对Runnable接口的实现)3、Callable/Futrue带返回值的线程4、ThreadPool线程可以合理的利用多核心CPU资源,提高程序的吞吐量实际应用线程池new Thread();怎么去应用?文件批量处理 收益文件 对账文件BIO 模型优化socket socket = soc
2021-05-16 00:16:23
126
原创 Java多线程-----锁理论(自旋锁)
一、自旋锁的概念何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。为了解决对某项资源的互斥使用。在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。如果锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。二、自旋锁可能引起的问题1、死锁问题:当一个线程连续2次试图获得自旋锁(递归调用),第一次已经获得该锁,...
2018-07-04 21:14:00
260
转载 Java多线程----CAS介绍
CAS:Compare And Swap(比较并交换):三个参数,一个当前内存值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。看一段简单的代码/** * Created by hanwei on 2018/6/15 0015. * version v1.0 */public class SpringSi...
2018-07-04 21:13:44
155
转载 Java —— GC
要想深入了解Java的GC(Garbage Collection),我们应该先探寻如下三个问题:What? -- 哪些内存需要回收?When? -- 什么时候回收?How? -- 如何回收?GC DefinitionDefinition: Program itself finds and collects memory which is useless. It is a form of autom...
2018-06-07 10:55:10
257
原创 Zookeeper Leader选举过程
一、先明确几个关键字的含义:1、myid:给每台服务器定义的标识2、zxid:节点在运行过程中产生的数据id,id越大表示数据越清晰3、Epoch:选举的轮数,即逻辑时钟。随着选举的轮数++4、Server状态:LOOKING--寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有Leader,因此需要进入Leader选举状态 F...
2018-04-08 15:16:58
354
原创 Java 8中基本数据类型
byte、short、int、long、float、double、char、boolean整型其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)int的取值范围为(-2147483648~...
2018-03-29 11:31:28
345
原创 适配器模式
平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类的方法。有一个解决方法是,修改它们各自的接口,但是这是我们最不愿意看到的。这个时候Adapter模式就会派上用场了。Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)...
2018-03-29 10:28:56
136
原创 Java synchronized关键字使用小结
1. 在编写一个类时,如果该类中的代码可能运行与多线程环境下,就要考虑同步问题了。会同时被多个线程访问的资源,就是竞争资源,也称为竞争条件。对于多线程共享的资源我们必须进行同步,以避免一个线程的改动被另一个线程所覆盖。synchronized 关键字有两种作用域:1> 某个对象实例内,synchronized aMethod(){}关键字可以防止多个线程访问对象的synchronized方法...
2018-03-29 10:22:01
9599
1
转载 Java volatile关键字使用小结
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下...
2018-03-29 10:19:28
153
转载 Java 5年应该掌握的东西
1、常用设计模式单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。代理模式:动态代理和静态代理,什么时候使用动态代理。适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。装饰者模式:动态给类加功能。观察者模式:有时被称作发布/订阅模式,观察者模式定义了...
2018-03-28 22:38:55
2929
转载 Java transient关键字使用小记
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需...
2018-03-28 17:16:26
137
原创 常用设计模式之动态代理1(JDK)
从下面几个问题来了解JDK动态代理:一、什么是代理模式?定义:为其他对象提供一种代理以控制这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在调用端和目标对象之间起到中介的作用。组成元素:接口,代理类,接口的实现类。二、一个简单的例子一个接口IUserDaopackage com.hw.proxy;/** * Created by hw on 2018/3/...
2018-03-26 11:41:28
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人