`
madbluesky
  • 浏览: 83822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
先说说什么是CAP限制 cap限制是说一个分布式系统不可能同时满足 c:一致性 a:高可用性 p:分区容错性 由于分布式环境下,p是必须满足的,因此分布式系统一般有两种选择,一种是高可用的AP模式,一种是高一致性的CP模式,适用不同的分布式场景。例如Redis Cluster集群就选择了AP模式,采用gossip协议,而zookeeper就选择了AP模式,采用zab协议 那么对于分布式锁系统来说,如果将自己设计成分布式的,那只有一种选择,就是CP模式,这样的话,适用zookeeper实现分布式锁是最好的选择,但是,zookeeper分布式锁有个问题,就是性能不高 有没有性能高一点的办法呢? 也 ...
tcc的预锁资源可以作为saga中的一个事务,这样的话,tcc就变成了saga,也就是说,tcc是saga的一个特例。 tcc要求每一个事务都有预锁资源的操作,saga则可以灵活的决定某一个事务是否需要拆解成2个事务(预锁资源,执行事务) tcc中,预锁资源对事务发起方透明,然而预锁资源的结果却对发起方可见(如转账的锁定金额),因此tcc模型中的事务是有副作用的。 saga中可以灵活的定义故障处理是向前成功或是向后还原,tcc在try阶段只能向后复原,confirm阶段只能向前成功 tcc牺牲了性能、灵活性,引入副作用,最终目的是希望构建起一套规整的模型,从而可以通过开发框架,隐藏分布式 ...
说明: 1、参考了spring state machine,但是个人感觉spring state machine,使用注入的方式太重了,而且附加的各种特性如监听,条件选择等等都不实用,不适合自己的业务场景,个人期望的是,每一个实体类都可以有一个自己的状态机,状态机用来清晰的展示状态的迁移逻辑,核心作用是可读性、内聚性,同时可以限制未定义的状态迁移。 2、状态机跟状态的关系,根据个人的理解做了区隔。状态机是状态迁移的逻辑定义,本身并不代表一个状态,状态机的作用就是对于给定的输入(状态,事件),告诉你下一个状态是什么,是一个辅助工具。 3、对于迁移条件,条件绝大部分时候具有外部性,将外部性的逻辑纳入 ...
一、Commons BeanUtils 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。 二、Commons CLI 说明:这是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则,然后就可以调用CLI来解析。 三、Commons Codec 说明:这个工具是用来编码和解码的,包括Base64,URL,Soundx等等。用这个工具的人应该很清楚这些,我就不多介绍了。 四、Commons Collections 说明:你可以把这个工具看成是java.util的扩展。 五、 ...
题目: 数组a[0..n-1],找出i和j使得a[j] - a[i]的值最大。 注意j > i。 要求是时间复杂度O(n),空间复杂度O(1)。 思路:   样例数组 11,1,5,8,11,2,3,2,11,5,3   1.先从后到前依次求出相邻2个数的差值,得到 {-2,-6,9,-1,1,-9,3,3,4,-10}   2.问题转化为求差值数组最大和序列,从前至后遍历该数组,保留所有的序列和为正数的和,得到{9,8,9,3,6,10},求最大值为 10 代码: static int maxIj(int[] arr){ for(int i=arr ...
package com.xhb1.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapreduce.Job; i ...
最近为js跨域所困,花费了不少时间和精力,总结一下 浏览器跨域场景分3种情况: 1.希望跨域获取数据    这一类场景可以通过jsonp的方式来获取,jquery本身就提供了很好的支持,这一方案本质还是利用了浏览器不限制js代码的跨域获取,json本身就是合法的js代码. 2.希望跨域集成html页面    直接跨域集成html是不可能的,唯一的办法就是将html代码转化为js代码,利用js代码生成html,然后通过jquery的getscript方法或者直接使用script标签将js代码引入 3.使用iframe集成跨域的html页面    跨域后iframe是不可以读取父窗口的UR ...
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * c1...cn个硬币,面值各不相同,现要用最少的硬币数,使得钱数为k,给出方案 * @author sky * * 设dp[i]为k为i时,最少需要的硬币个数 * dp[0]=1 dp[i] = min(dp[i-cons[j]])+1 */ public class MinIcons { private List<Integ ...
正确解看此链接 http://www.cnblogs.com/sunyongyue/archive/2010/12/04/1896675.html 这个条件粗看起来不是很靠谱,事实上却很好用 代码实现如下, import java.util.Arrays; public class AiEqualsISearcher { private static int ARR_LENGTH = 100; private int[] numArr = new int[ARR_LENGTH]; private int stepCount = 0; private void i ...
一个给javabean列表建立倒排索引的通用类,主要可用于给缓存中的一类对象添加索引便于搜索,对于缓存中的对象实现模糊搜索是一种非常合适的方案 import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class InvertedIndexGeneric<T> { /** * 索引 */ private Map<String, ...
/* * <p> 描述: </p> * * <p> Create Date: 12-5-14 下午1:41 <p> * * @author madbluesky * @version 1.0 */ import org.quartz.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class MyTrigger extends SimpleTrig ...
有环链表如何高效的判断是否有环,以及在何处产生环? 采用2个指针不同步数(步数小的每次1步,步数大的每次2步),步数大的如果能够与步数小的相遇则必然存在环。   相遇后的情况如图,假设相遇后步数大的回绕环遍历了n遍,步数小的肯定一遍也没遍历完,假设第一段距离为a,第2段距离为c,第3段距离为b 则有(a+c)*2 = a+n(b+c)+c,转换后得 a = n(b+c) - c,也就是说,从出发点出发,移动a的距离,刚好等于相遇点出发移动n个整圈减c的距离,这个点刚好就是环产生的点,由此可以设置2个指针,分别从根节点与相遇点出发,第一次相遇的地方则是环产生的点。 完成证明后 ...
从今天开始仔细学习学习大数据量处理相关的算法,这是第一个算法,布隆过滤器   适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1, 查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的 结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位 会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个 counter数组代替位数组,就可以支持删除了。 还有一个比较重要的问题, ...
1。首先配置jboss的jbossmq,启动jboss(启动jboss时会同时启动mq,使用其他mq时类似,需要配置启动mq) 2。在spring中进行消息发送接收者的相关配置(封装了jms发送与接收的模版)     <!--  jndi配置 -->     <bean id="jndiTemplate"         class="org.springframework.jndi.JndiTemplate">         <property name="environment" ...
经典书籍,架构师必看
Global site tag (gtag.js) - Google Analytics