`
yychao
  • 浏览: 98349 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
spring-data-redis提供了redis操作的封装和实现;RedisTemplate模板类封装了redis连接池管理的逻辑,业务代码无须关心获取,释放连接逻辑;spring redis同时支持了Jedis,Jredis,rjc 客户端操作;   spring redis 源码设计逻辑可以分为以下几个方面:   Redis连接管理:封装了Jedis,Jredis,Rjc等不同redis 客户端连接 Redis操作封装:value,list,set,sortset,hash划分为不同操作 Redis序列化:能够以插件的形式配置想要的序列化实现 Redis操作模板化: red ...
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分:   对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjectFactory,JedisFactory 面向用户的redis操作封装:BinaryJedisCommands,JedisCommands,BinaryJedis,Jedis 面向redis服务器的操作封装:Commands,Client,BinaryClient,Connection,Protocol   其类设计图如下:     关于common-poo ...
hive执行计划语法 EXPLAIN [EXTENDED] query EXTENDED参数:输出执行计划中操作符的额外信息;通常,展示物理信息,如文件名等 hive查询转换为一个 有向无环图 的阶段序列;这些阶段可能是 Map/Reduce阶段 或者是执行元数据与文件操作(例如:重命名,移动); explain 输出包括三部分: 查询语句的抽象语法树 执行计划不同阶段间的依赖关系 每个阶段的描述 阶段描述信息以操作符和与其相关元数据来显示 操作序列;操作符元数据有以下东西组成,像 FilterOperator 的过滤表达式;SelectOperator 的 选 ...

java spi 机制

  参考地址: http://blog.csdn.net/fenglibing/article/details/7083071   oracle地址: http://docs.oracle.com/javase/1.4.2/docs/guide/jar/jar.html#Service Provider http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html     例子: http://blog.csdn.net/fenglibing/article/details/7083526  
java移位操作符号 java中三种移位操作: << : 向左移位,低位补零 >> : 有符号右移:符号位为0时,高位补零;符号位为1时,高位补1 >>> : 无符号右移:不管符号位是否为1,高位都补零; java支持移位操作数据类型:int,long两种;char,byte,short 移位操作时,先转换为对应的int,再移位; PS: java中负数采用补码表示 int 移位只移动右侧操作数的低五位(0-31),防止无效移位 long 移位只移动右侧操作数的低六位(0-63) >>> 移动 char,b ...
FutureTask实现一个可以取消的异步计算任务。   FutureTask的同步控制有内部类Sync负责;使用AQS的sync state表示运行状态。   FutureTask的状态: RUNNING =1: 表示任务正在运行 RAN =2: 表示任务已经运行结束 CANCELLED =4: 表示任务被取消 任务创建时,state = 0  FutureTask的同步操作发生在: get()/get(timeout, TimeUnit) 等待任务执行结束; 同步控制采用共享模式:重写并支持AQS的 tryAcquireShare() /tryReleaseSha ...
ExecutorCompletionService解耦异步任务的生产者和消费者;当有任务执行完毕时,可以通过take直接获取结果处理;   ExecutorCompletionService线程执行委托给Executor的实际实现,其使用BlockingQueue保存已完成任务队列,同时提供了QueueingFuture对提交任务进行装饰,并提交执行;   QueueingFuture的实现:   private class QueueingFuture extends FutureTask<Void> { QueueingFuture(Runn ...
ScheduledThreadPoolExecutor实现:   public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService { /** * False if should cancel/suppress periodic tasks on shutdown. */ private volatile boolean continueExistingPeriodic ...
ThreadPoolExecutor 状态:   RUNNING:接受新任务,并处理队列的任务 SHUTDOWN:不接受新任务,但是处理等待队列的任务 STOP:不接受新任务,不处理等待队列的任务,并且中断正在执行的任务 TERMINATED:和STOP相同,并附加所有线程已终结   状态转换:   RUNNING --> SHUTDOWN :  调用shutdown(),或者再finalize()方法中隐式调用shutdown();   RUNNING/SHUTDOWN --> STOP : 调用shutdownNow()   SHUTDOWN --> ...
ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务;Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。先来看看ThreadPoolExecutor都有那些参数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
提到java并发编程必然绕不过java的线程和任务接口;那么,构建java多线程程序,必然需要使用到Thread类和Runnable接口;此处,只考虑异步任务创建、线程创建与启动,暂时不考虑线程互斥和同步、线程安全等;看看通常异步任务创建与线程创建、启动,通常使用两种方式创建任务、并启动线程执行任务:方式一:继承Thread,重写run方法 class Task extends Thread{ @Override public void run() { //do something } public static void main(String[] args) ...
谈到数据库优化概念,总感觉很庞大,无从下手;最近,听了一次DBA的分享,感觉有些思路;整理成文字,强化记忆;仅仅是一些个人理解和信息聚合,可能有所偏差,还望有所指正: 为什么需要数据库优化? 数据库性能优化 ...
Synchronized性能优化: 粗化锁区域:通过扩大已存在锁,减少unlock和re-lock操作,降低所开销;默认启用,启用参数:-XX:+EliminateLocks 同步削减:通过逃逸分析,削减线程局部变量上的锁;启用参数:-XX:+DoEscapeAnalysis 偏袒锁机制:延长创建锁机制线程上锁的租约,知道有其他线程竞争锁时才释放(个人理解:相当于延长锁时间,减少释放、获取锁开销);默认启用,启用单数:-XX:+UseBiasedLocking 通过Adaptive Spinning提升同步性能:这个没有看明白;原文放在最下边,望大牛指导; 其他性能优化: ...
Global site tag (gtag.js) - Google Analytics