深入理解Lock的底层实现原理

lock的实现完全是由java写的,和操作系统或者是JVM虚拟机没有任何关系。整体来看Lock主要是通过两个东西来实现的分别是CAS和ASQ(AbstractQueuedSynchronizer)。通过加锁和解锁的过程来分析锁的实现。 加锁 一、整体概述流程 1. 读取表示锁状态的变量 2. 如...

2017-01-22 23:58:05

阅读数:4173

评论数:0

深入理解voildate

对于被voildate修饰过的变量大部分人都知道当一个线程修改过后对另外一个线程可见,具体是为什么资料的讲解比较少,通过读并发编程的艺术对voildate变量的原理机制做下总结。     对于voildate变量来讲是有两个语义的,一个是可见性问题,另外一个是禁止指令重排。  1、可见性问题   ...

2017-01-22 13:37:45

阅读数:395

评论数:0

分布式锁(1):Java 常用技术方案

前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也是很好的。 正文:...

2017-01-20 16:04:38

阅读数:132

评论数:0

JVM初探- 内存分配、GC原理与垃圾收集器

JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收.  除了在概念上可简单认为new时分配外, 我们着重介绍后面的3个步骤: I. 怎样分配- JVM内存分配策略 对象内存主要分配在新生代Eden区, 如果启...

2017-01-20 11:30:21

阅读数:288

评论数:0

ReentrantLock 实现原理深入探究

前言 这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLo...

2017-01-20 11:27:38

阅读数:235

评论数:1

getClass().getResourceAsStream() .获取配置文件的方法

class.getResourceAsStream 用法    首先,Java中的getResourceAsStream有以下几种 Class.getResourceAsStream(String path) : path 不以’/‘开头时默认是从此类所在的包下取资源,以’/‘开头则是从   Cl...

2017-01-13 00:21:06

阅读数:2630

评论数:0

跨域SSO

跨域SSO的实现之一:架构设计 翻译自CodeProject网站ASP.NET9月份最佳文章:Single Sign On (SSO) for cross-domain ASP.NET applications。 翻译不妥之处还望大家多多指导、相互交流。 文章分为两部...

2017-01-11 14:35:59

阅读数:222

评论数:0

IO流详解

File类  String path="e:/img";  String fileName="test.jpg";    new File(path,fileName);//相对路径:相对于path的路径  new File(new File(path),f...

2017-01-10 11:32:41

阅读数:323

评论数:0

Java如何定位占用CPU比较高的问题

编写Java项目时,经常会遇到两种问题。   第一种:Java进程占用CPU比较高 第二种:Java进程堆内存溢出   今天主要跟大家聊聊第一种问题如何排查。   一、确定消耗CPU的Java进程   从上图可以看到Java进程 274...

2017-01-09 17:46:06

阅读数:954

评论数:0

SpringMVC 请求数据封装转换

简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解:   @PathVari...

2017-01-05 16:41:32

阅读数:1958

评论数:0

垃圾收集方式

垃圾收集算法 1、标记清除算法       标记清除算法分为标记和清除两个阶段,首先标记出所要回收的对象,在标记完后统一回收所有被标记的对象。有两点不足,一是效率问题,标记清除两个过程的效率都不高;另外一个是标记清楚之后会产生大量的不连续碎片,碎片太多会导致以后无法分配大对象。 2、赋值算法  ...

2017-01-05 01:12:07

阅读数:556

评论数:0

Java虚拟机体系结构

Java程序执行流程 Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成: 在 Java虚拟机规范中,一个虚拟机实例的行为是分别按照子系统、内存区、数据类型和指令来描述的,这些组成部分一起展示了抽象的虚拟机的内部体系结构。 JAVA虚拟机的生...

2017-01-05 00:31:30

阅读数:289

评论数:0

Java变量的初始化问题探究

对于Java的变量,我们知道有成员变量和局部变量。 关于他们的初始化,基本上所有书上都会写。成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化。 对于类的成员变量。不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。 规则为: ...

2017-01-03 16:18:08

阅读数:323

评论数:0

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