- 浏览: 195060 次
- 性别:
- 来自: 杭州
博客专栏
-
Percolator与分布...
浏览量:5674
文章分类
最新评论
-
heglase:
好牛逼 竟然解决了我别的问题
使用jdk工具tools.jar引发的问题 -
wqcva:
在使用这个类的时候workerId应该怎么传
java时间有序id生成 -
沙漠绿树:
增加虚拟节点解决数据均衡的问题。我有个疑问:1.使用虚拟节点后 ...
一致性hash的实现 -
BucketLi:
wangjian95 写道tddl.....?不是
java唯一ID生成 -
wangjian95:
tddl.....?
java唯一ID生成
应用启动初始化的时候有时候会判定下是否已经初始化过了。这个时候会设置一个变量,然后判断,然后设值。如果有概率发生并发的初始化,有可能还要加个锁。非常不简洁。下面这个方式,就让这个检查并设值的原子操作给底下来做吧,比较简洁。
以前做一些并发性测试的时候用CountDownLatch挺好,对于类似CyclicBarrier只是有个功能上的大概认知。现在发现CyclicBarrier也挺不错的,关键是比较简洁。下面是一个示例,CyclicBarrier还能再促发后运行一个指定Runnable,很方便。
结果类似每10个线程执行下Runnable
做一些固定EL或者特定语言(比如sql)分析的时候,常常cache一些分析过的结果,但是都用FutureTask来表示。具体这样使用的原因还需要理解,至少我看到过两个地方都是这么使用了。
分配id
if(!startFlag.compareAndSet(false, true)){ return; }
以前做一些并发性测试的时候用CountDownLatch挺好,对于类似CyclicBarrier只是有个功能上的大概认知。现在发现CyclicBarrier也挺不错的,关键是比较简洁。下面是一个示例,CyclicBarrier还能再促发后运行一个指定Runnable,很方便。
public class CyclicBarrierTest { public static void main(String[] args){ final CyclicBarrier cb=new CyclicBarrier(10, new Runnable() { @Override public void run() { System.out.println("get here!"); } }); for(int i=0;i<100;i++){ final int index=i; Thread t=new Thread(new Runnable() { @Override public void run() { System.out.println("i am "+index); try { cb.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } }); t.start(); } } }
结果类似每10个线程执行下Runnable
i am 0 i am 9 i am 7 i am 5 i am 3 i am 1 i am 13 i am 11 i am 4 i am 2 get here! i am 6 i am 10 i am 15 i am 8 i am 14 i am 12 i am 17 i am 16 i am 18 i am 20 get here! i am 22 i am 24 i am 26 i am 28 i am 30 i am 19 i am 21 i am 23 i am 32 i am 25 get here! i am 34 i am 36 i am 38 i am 29 i am 31 i am 35 i am 37 i am 27 i am 33 i am 39 i am 50 get here! ...
做一些固定EL或者特定语言(比如sql)分析的时候,常常cache一些分析过的结果,但是都用FutureTask来表示。具体这样使用的原因还需要理解,至少我看到过两个地方都是这么使用了。
/** * Compiled Expression cache */ private final static ConcurrentHashMap<String/* text expression */, FutureTask<Expression>/* * Compiled * expression * task */> cacheExpressions = new ConcurrentHashMap<String, FutureTask<Expression>>(); /** * Compile a text expression to Expression object * * @param expression * text expression * @param cached * Whether to cache the compiled result,make true to cache it. * @return */ public static Expression compile(final String expression, boolean cached) { if (expression == null || expression.trim().length() == 0) { throw new CompileExpressionErrorException("Blank expression"); } if (cached) { FutureTask<Expression> task = cacheExpressions.get(expression); if (task != null) { return getCompiledExpression(expression, task); } task = new FutureTask<Expression>(new Callable<Expression>() { public Expression call() throws Exception { return innerCompile(expression); } }); FutureTask<Expression> existedTask = cacheExpressions.putIfAbsent(expression, task); if (existedTask == null) { existedTask = task; existedTask.run(); } return getCompiledExpression(expression, existedTask); } else { return innerCompile(expression); } } private static Expression getCompiledExpression(final String expression, FutureTask<Expression> task) { try { return task.get(); } catch (Exception e) { cacheExpressions.remove(expression); throw new CompileExpressionErrorException("Compile expression failure:" + expression, e); } }
分配id
private static Integer allocateId(Channel channel) { Integer id = Integer.valueOf(System.identityHashCode(channel)); for (;;) { // Loop until a unique ID is acquired. // It should be found in one loop practically. if (allChannels.putIfAbsent(id, channel) == null) { // Successfully acquired. return id; } else { // Taken by other channel at almost the same moment. id = Integer.valueOf(id.intValue() + 1); } } }
发表评论
-
Spring Validator 部分注解说明
2021-01-30 17:13 347@AssertFalse Boole ... -
Mac 安装 OpenJDK
2019-07-17 08:05 820现在 ORACLE 新版本 JDK 越发越快,新版本固然好,但 ... -
git fork 分支合并原分支
2019-06-27 10:35 11181. List the current configured ... -
Cobar内存快速检测tips
2017-11-07 17:20 410很长时间没有使用mat,技巧生疏,趁这次使用Cobar(htt ... -
ORACLE CDC增量同步初始化
2016-09-07 22:29 756// Step 1 Find the source tab ... -
一些文章
2015-09-04 14:38 0http://www.biaodianfu.com/herme ... -
java资源加载
2015-04-22 10:04 591tips下。 this.getClass().getReso ... -
使用jdk工具tools.jar引发的问题
2015-04-22 09:31 1723这里tips下这个问题 之前本地开发机使用jdk7进行开发和 ... -
eclipse for mac快捷键
2015-02-26 13:16 701Command + O:显示大纲 Command + D:删除 ... -
zookeeper client的一些操作
2014-11-07 12:30 7261.登陆 ./zkcli.sh -server 127.0.0 ... -
java获取类版本和检查重复代码
2014-10-13 21:59 1383public final class Version { ... -
java代码细节
2014-10-17 09:29 842看代码过程中一些细节记录,不断补充。质量可靠,开发高效的捷径在 ... -
java程序启动的一些设置
2014-09-19 11:14 01. 开启debug,suspend值设置成y会等待debug ... -
java_web开发tips
2014-07-21 09:44 01.这两天接手一个新的应用,打算在上面开发几个api,因为功能 ... -
信息安全基础
2014-07-21 09:46 740转自某微博,这边tips下,虽然很不完全,但是有一些思路 信 ... -
java 的一些排序方法(转)
2014-07-21 09:48 713一些java排序方法,记录下。 package com.ta ... -
Shift-And和Shift-Or ByteBuffer匹配器
2012-09-07 18:15 1514两个ByteBuffer的匹配算法java实现,原作者 庄大侠 ... -
一个简单的BufferPool
2012-08-31 10:15 955一个简单的buffer分配和收集代码,将一大段buffer分片 ... -
一个典型md5生成工具类
2012-08-23 09:27 1151import java.io.UnsupportedEnc ... -
Java程序员常用工具集(转)
2012-08-31 10:18 1027转自庄大侠(killme2008)的博客,我这边收藏下。 原 ...
相关推荐
db2日常操作的一些小细节主要内容是远程编目节点
在实际项目开发中,这三者之间的集成涉及到许多小细节,对于初学者来说,理解和掌握这些细节至关重要。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)框架,它负责管理应用的业务对象和服务。在整合...
以下便是计算机二级考试准备过程中一些值得重视的小细节,这些内容不限于某一种考试类型,而是普遍适用于多种考试内容。 一、明确考试内容和格式 在准备开始之前,考生需要详细了解计算机二级考试的科目和内容,...
接下来将详细介绍C语言中if语句的一些小细节。 首先,关于布尔变量的使用。在C语言中,布尔值并没有一个标准的数据类型,通常使用整型变量来表示布尔值,其中0表示假,非0表示真。然而,使用整型变量代替布尔值时,...
Surface RT 作为微软推出的旗舰产品,虽然具有很高的期待,但是在使用过程中却存在一些小细节需要留意。以下是使用 Surface RT 需要注意的一些问题。 1. 过于“私人化”的平板电脑 Surface RT 的一个特点是对个人...
以下是基于提供的文件内容,关于SEO优化中需要注意的一些小细节: 1. **原创内容的重要性**:搜索引擎优先考虑独特、有价值的内容。即使在济南这样的地方做网站优化,也要尽量避免过度采集他人的文章,而应该注重...
后台一些小细节的优化及一些小 BUG 的处理,前端进行了些小细节优化,针对上几版大家非常关心的卡密兑换 H5 端及小程序端均正常,该版本为编译版无开源端。开源版近期会单独更新,注意 PHP 版本选择 7.4。
后台一些小细节的优化及一些小BUG的处理,前端进行了些小细节优化,针对上几版大家非常关心的卡密兑换H5端及小程序端均正常,该版本为编译版无开源端。开源版近期会单独更新,注意PHP版本选择7.4。提供的安装教程...
后台一些小细节的优化及一些小BUG的处理,前端进行了些小细节优化,针对上几版大家非常关心的卡密兑换H5端及小程序端均正常,该版本为编译版无开源端。开源版近期会单独更新,注意PHP版本选择7.4。提供的安装教程...
后台一些小细节的优化及一些小BUG的处理,前端进行了些小细节优化,针对上几版大家非常关心的卡密兑换H5端及小程序端均正常,该版本为编译版无开源端。开源版近期会单独更新,注意PHP版本选择7.4。提供的安装教程...
这些小细节和技巧对于SQL Server DBA来说至关重要,它们可以帮助你更好地管理和维护数据库,预防潜在问题,提升系统的整体性能和稳定性。记住,每个决策都应基于实际业务需求,以确保最佳实践的应用。
在对好第一面十字的过程中,我们需要注意一些小细节,例如白蓝棱色块在底层,且白色冲下,这个其实最简单,请看动画。 下一步,我们需要对好四个小棱块逐一对好侧面颜色,然后翻下去就行了。请看下边这个动画的例子...
Unet的U没变,但是为什么叫U2Net呢,这里的2是平方的意思,实际上就是在一些小细节方面又做了一次Unet结构,每一个小模块不在像之前的Unet使用VGG来做backbones,而是每一个backbones都使用了Unet,即U2Net
因此,代码可能在一些小细节上与书中的内容有所不同。 有十五个子目录,其名称与标准头文件相匹配。这些目录包含了书中提供的所有 *.c 文件。(注意:limits、stdarg 和 stddef 目录是空的。)_headers 目录包含了...
1.修改自Convert X转帖工具 2.新增批量替换关键词(原来是单个词语替换,可以利用这个功能删除一些网站的防转帖代码) 3.批量随机新增文字(新增内容...7.优化一些小细节 8.重新布局优化显示及方便操作 9.不断更新中...
Nero Burning ROM 2017是一款刻录软件,是Nero 2017 ...新版Nero Burning ROM 2017更新了用户界面还有一些小细节,另外还具有一个重大的更新,那就是在安全方面是无与伦比!复制和导入数据和音乐并刻录在首选类型的光