- 浏览: 368841 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (760)
- 股票日志 (26)
- Selenium (0)
- selenium 2 环境的搭建 (1)
- 并发 (7)
- 框架开发 (1)
- 动态代理 (2)
- Struts2 (2)
- POI (2)
- jdk (3)
- maven (31)
- spring (35)
- mysql (31)
- 工作机会 (3)
- xtream (1)
- oracle dbms_metadata GET_DDL (0)
- SSI (1)
- DB (61)
- powermock (4)
- java 基础 (25)
- 多线程 (11)
- 高手 (2)
- java 底层 (2)
- 专业网站 (1)
- 开发联想 (1)
- 开发联想 (1)
- bat文件 (2)
- 清queue 语句 (1)
- 清queue 语句 (1)
- jquery (7)
- html5 (1)
- Jenkins (10)
- Linux (17)
- 工作issue (2)
- tomcat log (3)
- jvm (23)
- 项目细节 (0)
- oracle (41)
- 泛型 (3)
- 新知识点 (1)
- 数据库ddl 语句 (0)
- AQ (2)
- jms (0)
- 网络资源 (6)
- github (6)
- Easymock (1)
- Dom 解析XML (1)
- windows命令 (2)
- java (7)
- 正则表达式 (5)
- sequence (1)
- oracle 表meta信息 (1)
- 小工具技巧 (1)
- 辅助工具 (1)
- Junit (1)
- 泛型 generic (2)
- Java程序设计 (1)
- cglib (2)
- 架构师之路 (1)
- 数据库连接池 (5)
- c3p0 (1)
- eclipse使用 (1)
- oracle sql plus (1)
- 码农人生 (3)
- SVN (15)
- sqlplus (2)
- jsoup (1)
- 网络爬虫 (2)
- 新技能 (1)
- zookeeper (4)
- hadoop (1)
- SVNKIT (1)
- 从工具到知识点的整理 (1)
- log4j (13)
- 读文件 (0)
- 转义字符 (1)
- command (1)
- web service (3)
- 锁 (1)
- shell 脚本 (1)
- 遇到的错误 (2)
- tomcat (14)
- 房产 (5)
- bootstrap jquery ui (1)
- easyui (2)
- 个人征信 (1)
- 读写分离 (1)
- 备份 (1)
- rmi (6)
- webservice (1)
- JMX (4)
- 内存管理 (3)
- java设计 (1)
- timer (1)
- lock (2)
- concurrent (2)
- collection (1)
- tns (1)
- java基础 (15)
- File (1)
- 本机资源 (1)
- bat (1)
- windows (4)
- 数据结构 (3)
- 代码安全 (1)
- 作用域 (1)
- 图 (2)
- jvm内存结构 (1)
- 计算机思想 (1)
- quartz (6)
- Mongo DB (2)
- Nosql (4)
- sql (5)
- 第三方Java 工具 jar 项目 (2)
- drools (1)
- java swing (2)
- 调用console (1)
- runtime (1)
- process (1)
- swing (2)
- grouplayout (1)
- dubbo (0)
- bootstrap (0)
- nodejs (2)
- SVN hooks (1)
- jdbc (3)
- jdbc error (1)
- precedure (1)
- partition_key (1)
- active mq (1)
- blob (2)
- Eclipse (6)
- web server (1)
- bootstrapt (2)
- struts (1)
- ajax (1)
- js call back (1)
- 思想境界拓展 (1)
- JIRA (1)
- log (1)
- jaxb (3)
- xml java互相转换 (1)
- 装修 (2)
- 互联网 (2)
- threadlocal (3)
- mybatis (22)
- xstream (1)
- 排序 (1)
- 股票资源 (1)
- RPC (2)
- NIO (3)
- http client (6)
- 他人博客 (1)
- 代理服务器 (1)
- 网络 (2)
- web (1)
- 股票 (5)
- deadlock (1)
- JConsole (2)
- activemq (3)
- oralce (1)
- 游标 (1)
- 12月13日道富内部培训 (0)
- grant (1)
- 速查 (2)
- classloader (4)
- netty (4)
- 设计模式 (2)
- 缓存 (2)
- ehcache (2)
- framework (1)
- 内存分析 (2)
- dump (1)
- memory (2)
- 多高线程,并发 (1)
- hbase (2)
- 分布式系统 (1)
- socket (3)
- socket (1)
- 面试问题 (1)
- jetty (2)
- http (2)
- 源码 (1)
- 日志 (2)
- jni (1)
- 编码约定 (1)
- memorycache (1)
- redis (13)
- 杂谈 (1)
- drool (1)
- blockingqueue (1)
- ScheduledExecutorService (1)
- 网页爬虫 (1)
- httpclient (4)
- httpparser (1)
- map (1)
- 单例 (1)
- synchronized (2)
- thread (1)
- job (1)
- hashcode (1)
- copyonwriteArrayList (2)
- 录制声音 (1)
- java 标准 (2)
- SSL/TLS (1)
- itext (1)
- pdf (1)
- 钻石 (2)
- sonar (1)
- unicode (1)
- 编码 (4)
- html (1)
- SecurityManager (1)
- 坑 (1)
- Restful (2)
- svn hook (1)
- concurrentHashMap (1)
- 垃圾回收 (1)
- vbs (8)
- visual svn (2)
- power shell (1)
- wmi (3)
- mof (2)
- c# (1)
- concurrency (1)
- 劳动法 (1)
- 三国志游戏 (2)
- 三国 (1)
- 洪榕 (2)
- 金融投资知识 (1)
- motan (1)
- tkmybatis mapper (1)
- 工商注册信息查询 (1)
- consul (1)
- 支付业务知识 (2)
- 数据库备份 (1)
- 字段设计 (1)
- 字段 (1)
- dba (1)
- 插件 (2)
- PropEdit插件 (1)
- web工程 (1)
- 银行业知识 (2)
- 国内托管银行 (1)
- 数据库 (1)
- 事务 (2)
- git (18)
- component-scan (1)
- 私人 (0)
- db2 (14)
- alias (1)
- 住房 (1)
- 户口 (1)
- fastjson (1)
- test (6)
- RSA (2)
- 密钥 (1)
- putty (1)
- sftp (1)
- 加密 (1)
- 公钥私钥 (3)
- markdown (1)
- sweet (1)
- sourcetree (1)
- 好工具 (1)
- cmd (1)
- scp (1)
- notepad++ (1)
- ssh免密登录 (1)
- https (1)
- ssl (2)
- js (2)
- h2 (1)
- 内存 (2)
- 浏览器 (1)
- js特效 (1)
- io (1)
- 乱码 (1)
- 小工具 (1)
- 每周技术任务 (1)
- mongodb (7)
- 内存泄漏 (1)
- 码云 (2)
- 如何搭建java 视频服务器 tomcat (1)
- 资源 (1)
- 书 (1)
- 四色建模法 (1)
- 建模 (1)
- 配置 (1)
- 职位 (1)
- nginx (1)
- excel (1)
- log4j2 (2)
- 做菜 (1)
- jmap (1)
- jspwiki (1)
- activiti (1)
- 工作流引擎 (1)
- 安卓 (1)
- acitviti 例子 (1)
- 二维码 (1)
- 工作流 (1)
- powerdesign (2)
- 软件设计 (1)
- 乐观锁 (1)
- 王者荣耀 (1)
- session (2)
- token (5)
- cookie (4)
- springboot (24)
- jwt (2)
- 项目路径 (1)
- magicbook (1)
- requestType (1)
- json (2)
- swagger (1)
- eolinker (1)
- springdata (1)
- springmvc (1)
- controlleradvice (1)
- profile (1)
- 银行四要素 (1)
- 支付人员资源 (1)
- 支付渠道 (1)
- yaml (1)
- 中文编码 (1)
- mongo (2)
- serializable (1)
- 序列化 (1)
- zyd (1)
- unittest (1)
- 工具 (1)
- Something (1)
- 通达信 (1)
- protobuf (1)
- 算法 (1)
- springcloud (2)
- hikari (1)
- rocketmq (7)
- cachecloud (1)
- serfj (1)
- axure (1)
- lombok (1)
- 分布式锁 (1)
- 线程 (2)
- 同步代码块 (1)
- cobar (1)
- mq (1)
- rabbitmq (1)
- 定时执行 (1)
- 支付系统 (3)
- 唱歌 (1)
- elasticjob (1)
- 定时任务 (1)
- 界面 (1)
- flink (2)
- 大数据 (1)
- 接私活 (0)
- 内部培训 (2)
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
自己做的 取sequence的 使用blockingqueue 和 ScheduledExecutorService例子
引用
在取 sequence的 dao里 用了一个 mock的 实现 ,然后 把queue的容量设置为3, 但是每次取可以取到4
这样第一次会把第4个元素 不放进去, 只放进去3个 ,
package com.ssc.dbcttool.seqgenerator; import java.util.List; public interface KeyDao { List<Long> getSequences(String seqName, Long capbility); } package com.ssc.dbcttool.seqgenerator; import java.util.ArrayList; import java.util.List; public class MockKeyDao implements KeyDao{ @Override public List<Long> getSequences(String seqName, Long capbility) { List<Long> longList = new ArrayList<Long>(); longList.add(1000L); longList.add(1001L); longList.add(1010L); longList.add(1100L); return longList; } }
package com.ssc.dbcttool.seqgenerator; public class KeyGeneratorClient { public static void main(String[] args) { SeqGeneratorImpl gen = new SeqGeneratorImpl(); gen.setGenerateKeysDao(new MockKeyDao()); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); System.out.println("key = " + gen.getSeqKey("aaa")); } }
package com.ssc.dbcttool.seqgenerator; import java.lang.Thread.UncaughtExceptionHandler; import java.util.List; import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import com.statestr.gcth.core.concurrency.DefaultThreadFactory; public class SeqGeneratorImpl { final int capacity = 3; ConcurrentMap<String, BlockingQueue<Long>> keyQueues = new ConcurrentHashMap<String, BlockingQueue<Long>>(); ScheduledExecutorService scheduler; public SeqGeneratorImpl() { scheduler = new ScheduledThreadPoolExecutor(2, new DefaultThreadFactory().daemon().eh( new UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { System.out.println("Thread " + t.getName() + " for Key Generator throw a UncaughtException."); } })); } public Long getSeqKey(String keyName) { Long key = null; BlockingQueue<Long> keyQueue = keyQueues.get(keyName); if (keyQueue == null) { keyQueue = getQueue(keyName); } try { key = keyQueue.take(); } catch (Exception e) { Thread.currentThread().interrupt(); System.out.println("Failed to get sequence for unknown reason, the operation is interrupted."); } return key; } synchronized BlockingQueue<Long> getQueue(String keyName) { BlockingQueue<Long> keyQueue = keyQueues.get(keyName); if (keyQueue == null) { keyQueue = new LinkedBlockingQueue<Long>(capacity); keyQueues.putIfAbsent(keyName, keyQueue); triggerTheTask(keyName, keyQueue); } return keyQueue; } void triggerTheTask(String name, BlockingQueue<Long> keyQueue) { scheduler.scheduleWithFixedDelay(new FetchKeyTask(name, keyQueue), 0, 3000, TimeUnit.MILLISECONDS); } protected class FetchKeyTask implements Runnable { private String keyName; private BlockingQueue<Long> keyQueue = null; public FetchKeyTask(BlockingQueue<Long> keyQueue) { this(null, keyQueue); } public FetchKeyTask(String keyName, BlockingQueue<Long> keyQueue) { this.keyName = keyName; this.keyQueue = keyQueue; } @Override public void run() { int remainingCapacity = keyQueue.remainingCapacity(); if (capacity * (1 - 0.5) < remainingCapacity) { try { List<Long> keys = getKeys(keyName, remainingCapacity); for (Long key : keys) { keyQueue.put(key); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); System.out.println("key fetch task is interrupted."); } catch (Exception e) { System.out.println("key fetch task happens exception:"); } System.out.println("retrieve keys from database, the keys' amount is " + remainingCapacity); } } } protected List<Long> getKeys(String name, long capacity) { return generateKeysDao.getSequences(name, capacity); } protected KeyDao generateKeysDao; public void setGenerateKeysDao(KeyDao generateKeysDao) { this.generateKeysDao = generateKeysDao; } }
相关推荐
在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。 1、Create Sequence (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE ...
Medoc sequence generator.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例Medoc sequence generator.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例Medoc sequence generator.zip...
Sequence to Sequence Learning with Neural Networksv论文PDF版
基于循环神经网络和注意力机制的Sequence-to-Sequence模型神经网络方法在信息抽取和自动摘要生成方面发挥了重要作用。然而,该方法不能充分利用文本的语言特征信息,且生成结果中存在未登录词问题,从而影响文本摘要...
机器学习之sequence to sequence learning。(Sequence Generation-----Hung-yi Lee 李宏毅.ppt)
SequenceDiagram-3.0.5.zip
A method for assembly sequence planning is proposed in this paper. First, two methods for assembly sequence planning are compared, which are indirect method and direct method. Then, the limits of the ...
Edward Grefenstette - Beyond Sequence to Sequence with Augmented RNNs
在Oracle数据库移植过程中,sequence可能失效,本资源可使失效的sequence重新恢复作用
NULL 博文链接:https://duqiangcise.iteye.com/blog/749438
教你如何使用oracle中的sequence,实现主键自动增长
memory networks, are extremely appealing for sequence-tosequence learning tasks. Despite their great success, they typically suffer from a fundamental shortcoming: they are prone to generate ...
sequence-to-sequence-learning-with-neural-networks.
Sequence Diagrams of UML
NULL 博文链接:https://snowelf.iteye.com/blog/575555
invalid multibyte character sequence 870告警1
sequence-diagram-js 所需jar包,其中sequence-diagram-js支持自定义颜色
oracle中sequence介绍及应用
字体,圈码类。适用于加圈脚注各用书稿论文文档排版。