自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(291)
  • 资源 (16)
  • 收藏
  • 关注

原创 list set 求交集、差集、并集

set 、list集合的交集(retainAll)、差集(removeAll)是没有区别的都是一样的.set 、list集合的合集addAll是有区别的:set可以去重复;list不去重复public static void main(String[] args) {            Set result = new HashSet();         

2017-05-11 10:10:47 1614

原创 JUC 可重入 读写锁 ReentrantReadWriteLock

读写锁 ReadWriteLock读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的。互斥锁一次只允许一个线程访问共享数据,哪怕进行的是只读操作;读写锁允许对共享数据进行更高级别的并发访问:对于写操作,一次只有一个线程(write线程)可以修改共享数据,对于读操作,允许任意数量的线程同时进行读

2017-05-10 19:44:07 397

转载 ReentrantReadWriteLock深入分析

一、ReentrantReadWriteLock与ReentrantLock  说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显然这个特

2017-05-10 19:26:23 203

转载 jvm 可启动线程数

工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码  

2017-05-10 19:03:49 578

原创 Java classloader 常见问题及解决方法

你真的了解ClassLoader吗?这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践、经验和样例。本文的例子比原文更加具有实际意义,文字内容也更充沛一些,非常感谢作者 Jevgeni Kabanov 能够共享如此优秀的文档。1. 为什么你需要了解和敬畏ClassLoader

2017-05-10 17:53:14 6025

转载 基于zookeeper实现分布式锁

一、分布式锁介绍        分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍        在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图                        解释: 左边的整个区域表示一个Zookeep

2017-05-10 11:28:45 332

转载 ReentrantLock实现原理深入探究

转自:http://www.cnblogs.com/xrq730/p/4979021.html前言这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下Reentrant

2017-05-09 19:39:10 259

转载 ReentrantLock可重入锁的使用场景

转自:https://my.oschina.net/noahxiao/blog/101558摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时

2017-05-09 19:22:48 2262 2

转载 ReentrantLock 深入理解

ReentrantLock的实现不仅可以替代隐式的synchronized关键字,而且能够提供超过关键字本身的多种功能。这里提到一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定被先满足,那么这个锁是公平的,反之,是不公平的,也就是说等待时间最长的线程最有机会获取锁,也可以说锁的获取是有序的。ReentrantLock这个锁提供了一个构造函数,能够控制这个锁是否是公平的。而锁的名字

2017-05-09 19:17:36 262

转载 logback

logback系列之一:输出日志到控制台 logback系列之二:输出日志到文件 logback系列之三:输出日志到文件(滚动) logback系列之四:输出日志到不同文件 为了方便查看和归档: 不同包的日志可能要放到不同的文件中,如service层和dao层的日志; 不同日志级别:调试、信息、警告和错误等也要分文件输出。 一、根据包输出,通过logger的

2017-05-09 11:15:13 220

转载 git merge

$ git merge experimentalAuto-merging copy.cCONFLICT (content): Merge conflict in copy.cAutomatic merge failed; fix conflicts and then commit the result.  与configs" title="分支merge 与co

2017-05-03 19:19:53 465

转载 限流 控制

请求是从一个白名单中的IP或客户端key发起的,那么限流策略将不会生效,这个请求的所有信息也不会被存储。 其IP白名单列表支持IP v4和v6的范围配置,比如"192.168.0.0/24", "fe80::/10" 和 "192.168.0.0-192.168.0.255",关于IP范围的更多信息请查看https://github.com/jsakamoto/ipaddressrange

2017-04-27 16:50:57 1046

转载 RateLimiter

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统

2017-04-27 14:01:20 440

转载 Guava官方文档-RateLimiter类

原文链接 作者:Dimitris Andreou  译者:魏嘉鹏 校对:方腾飞RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率

2017-04-27 13:37:50 441

原创 dubbo 学习理解

一、前言部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下。整理这篇文章差不多花了两天半时间,请尊重劳动成果,如转载请注明出处http://blog.csdn.NET/hzzhoushaoyu/article/details/43273099二、什么是dubb

2017-04-24 10:29:27 2057

转载 [Google Guava] 缓存

范例01LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()02        .maximumSize(1000)03        .expireAfterWrite(10, TimeU

2017-04-21 15:49:12 511

原创 线程的工作内存

所谓线程的“工作内存”到底是个什么东西?有的人认为是线程的栈,其实这种理解是不正确的。看看JLS(java语言规范)对线程工作 内存的描述,线程的working memory只是cpu的寄存器和高速缓存的抽象描述。       可能 很多人都觉得莫名其妙,说JVM的内存模型,怎么会扯到cpu上去呢?在此,我认为很有必要阐述下,免 得很多人看得不明不白的。先抛开java虚拟机不谈,我

2017-04-21 14:48:39 12309 11

原创 Guava cacha 机制及源码分析

Guava 是Google开源出来的Java常用工具集库,包括集合,缓存,并发,字符串,I/O操作等在Java开发过程中经常需要去实现的工具类。在平常开发过程中,很多情况需要使用缓存来避免频繁SQL查询或者其他耗时操作,会采取缓存这些操作结果给下一次请求使用。如果我们的操作结果是一直不改变的,其实我们可以使用 ConcurrentHashMap 来存储这些数据;但是如果这些结果在随后时间内

2017-04-21 13:49:16 4778 1

转载 guava cache使用例子

关于介绍请参考:http://blog.csdn.net/liangrui1988/article/details/46120533#下面是测试代码 ,下载源码可在github上获取:https://github.com/liangrui1988/guavaTest[java] view plain copy package org.ru

2017-04-21 13:05:56 2318

转载 cache 使用---mark

转自:http://www.cnblogs.com/always-online/p/4062856.html

2017-04-21 10:01:22 299

原创 com.google.common.cache.CacheLoader 本地緩存的使用方法

package com.taobao.ju.my.common.biz.manager.impl;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.TimeUnit;im

2017-04-21 09:46:55 10257 1

原创 JAVA并发编程学习笔记之ReentrantLock—推荐-mark

ReentrantLock是一个可重入的互斥锁,ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。此类的构造方法提供一个可选的公平参数[html] view plain copy print?public Reentran

2017-04-20 10:58:35 352

原创 ReentrantLock与Condition

一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它

2017-04-20 10:30:30 317

转载 Java中的ReentrantLock和synchronized两种锁定机制的对比

原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构

2017-04-19 19:21:37 502

原创 lock interupt

上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现。 在介绍之前,先抛几个问题。 Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常?Th

2017-04-19 17:25:32 606

转载 Java cas

java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CASCAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。 CAS应用CAS有3个操作

2017-04-19 17:04:13 561

原创 锁Lock的实现

前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在 java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、 ReadWriteLock

2017-04-19 17:02:00 431

原创 LockSupport简单讲解及实例

LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心 AQS: AbstractQueuedSynchronizer,就是通过调用 LockSupport .park()和 LockSupport .unpark()实现线程的阻塞和唤醒 的。 LockSupport 很类似于二元信号量(只有1个许可证可供使用),如果这个许可还没有

2017-04-19 16:38:05 3183

原创 并发性能优化 – 降低锁粒度

在高负载多线程应用中性能是非常重要的。为了达到更好的性能,开发者必须意识到并发的重要性。当我们需要使用并发时, 常常有一个资源必须被两个或多个线程共享。在这种情况下,就存在一个竞争条件,也就是其中一个线程可以得到锁(锁与特定资源绑定),其他想要得到锁的线程会被阻塞。这个同步机制的实现是有代价的,为了向你提供一个好用的同步模型,JVM和操作系统都要消耗资源。有三个最重要的因素使并发的实现

2017-04-19 15:42:19 502

原创 Java lock 简述

提到Java中的锁,相信大家都知道它是用来控制多个线程访问共享资源的方式(即锁能防止多个线程同时访问空享资源而出现线程安全问题)。在实践过程中使用最多的也最常见的锁就是 synchronized 在jdk1.5之前也仅仅有这一种锁而已。在jdk1.5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,Lock接口提供了与synchronized关键字类似的同步功能,但需要在使用时

2017-04-19 14:57:40 318

原创 ReentrantLock与Condition

一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它

2017-04-19 14:34:04 263

原创 lock condition 实例

接近一周没更新《Java线程》专栏了,主要是这周工作上比较忙,生活上也比较忙,呵呵,进入正题,上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。        那么引入本篇的主角,Condition,Condi

2017-04-19 13:53:08 591

转载 推荐系统算法

在推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。一、基于内容推荐基 于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的

2017-04-19 11:45:33 1103

转载 推荐系统入门

1. 推荐系统的意义互联网大爆炸时期的信息过载的解决方案:对用户而言:找到好玩的东西,帮助决策,发现新鲜事物。 对商家而言:提供个性化服务,提高信任度和粘性,增加营收。2. 推荐系统的构成前台的展示页面,后台的日志系统,推荐算法等部分组成,如下图所示:3. 推荐系统的评测3.1 离线实验即线下的部分,用于训练模型优点:

2017-04-19 11:37:50 664

转载 推荐系统简单介绍

推荐系统介绍自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。1998年,林登和他的同事申请了“item-to-item”协同过滤技术的专利,经过多年的实践,亚马逊宣称销售的推荐占比可以占到整个销售GMV(Gross Merchandise Volume,即年度成交总额)的30%以上。随后Netflix举办的推荐算法优化竞赛,

2017-04-19 11:17:55 2891

原创 AbstractQueuedSynchronizer 讲解 ---推荐

在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. Re

2017-04-19 10:47:10 312

原创 AbstractQueuedSynchronizer简单解析

在JDK1.5版本,新增了并发包,其中包含了显示锁、并发容器。在这些锁和容器里,都有同步器(AQS)的身影。为了更好地理解JDK的并发包,我会用三个主题来详细描述AbstractQueuedSynchronizer的实现。在AQS中,涉及到同步队列以及Condition对象,这也是我为什么要用三个主题来讲述的原因。本节将主要讲述同步队列,后面两节会分别讲述Condition对象以及AQS的

2017-04-19 10:38:03 320

原创 Java 可重入锁

四、可重入锁:本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁下面是使用实例01public clas

2017-04-18 19:43:03 483

原创 Java自旋锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。2.自旋锁的其他种类上篇我们讲到了自旋锁,在自旋锁中 另有三种常见的锁形式:TicketLock ,

2017-04-18 19:40:21 404

原创 Java 自旋锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1、自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。

2017-04-18 19:37:48 313

kafka 技术内幕 图文详解Kafka源码设计与实现

kafka 技术内幕 图文详解Kafka源码设计与实现 kafka 源码

2018-04-09

disruptor 实例

disruptor 缓冲队列 高效

2017-05-17

netty 架构剖析 和源码解读

netty 架构剖析 和源码解读

2017-05-16

zookeeper 分布式锁

利用zookeeper 实现分布式锁

2017-05-10

令牌桶Java实现

令牌桶 Java 源码 不限制桶大小

2017-05-05

turbine-web-1.0.0.war

hystrix turbine 服务监控 服务降级

2017-04-12

MySQL编译安装、主从复制的配置(CentOS-6.6+MySQL-5.6)

MySQL编译安装、主从复制的配置(CentOS-6.6+MySQL-5.6)

2017-01-06

Redis集群的安装、高可用测试、扩展测试---带源码

Redis集群的安装、高可用测试、扩展测试---带源码

2017-01-04

ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

2017-01-03

ActiveMQ的安装与使用

ActiveMQ的安装与使用

2016-12-27

Hudson持续集成服务器的安装与配置

Hudson持续集成服务器的安装与配置

2016-12-27

SonarQube代码质量管理平台的介绍与安装

SonarQube代码质量管理平台的介绍与安装

2016-12-27

svn jsvnadmin 搭建 svn服务器

svn jsvnadmin 搭建 svn服务器

2016-12-27

tomcat 启动 重启 shell 脚本

tomcat 启动 停止 重启 shell 脚本

2016-12-27

redis 单点登录

tomcat redis session manager 实现session共享单点登录

2016-12-23

tika-app-1.0

tika-app-1.0.jar 用于lucene 解析文档

2015-11-09

空空如也

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

TA关注的人

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