`
dsxwjhf
  • 浏览: 70742 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论
文章列表
原文地址:http://gnucto.blog.51cto.com/3391516/998509 Redis 与 Memcached 的区别 传统 MySQL + Memcached 架构遇到的问题     实际上 MySQL 是适合进行海量数据存储的,通过 Memcached 将热点数据加载到 cache ,加速访问,很多公司都曾经使用过这 ...
首先我们来定义流的概念,一个流可以是文件, socket , pipe 等等可以进行 I/O 操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论 I/O 的操作。通过 read ,我们可以从流中读入数 ...
以下示例来自网络。 package com.wjxie.test.forkjoin; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.Future; import java.util.concurrent.RecursiveTask; /** * 并行计算 1 到 n 之和。 * * Created by ...

发券逻辑

Service 层: 1. 通过缓存(orderID)判断是否正在发券,若正在发直接返回 2. 发券主流程(Biz 层) 3. 发送微信/QQ/短信通知 4. 发 swallow 消息(非结算) 5. Cat 打点统计 Biz 层: 1. DPBiz   -- 普通发券   -- 第三方发券   -- 导码单发券   -- 实物单发券 2. MTBiz DPBiz 通用逻辑: 1. 插入 SerialNumber-ReceiptID 映射表,生成 ReceiptID 以备后用 2. 插入 TG_Receipt_New: insertWithID 3. 异步插入 JournalVoucher ...
之前的券池分成两个部分,一个 Job 和 一个 Service 。 Job 会每分钟 loop 券首位(1-9),生成一批券码往数据库里面插,这里需要做一些过滤:老券池、新券池、内存券池和券表 。 Service 里面有9个内存券池。它会在外部请求发券时定位到某个券池,看它的券够不够,够的话直接返回,否则重新去数据库捞一批进来。捞进来之后把数据库的券码删掉。 数据库有一个额外的“捞取批次表”,主要用来做幂等(防止分布式环境下捞取相同的券):   1. 生成批次 ID      INSERT INTO TG_ReceiptDistributePoolBatchFetch ..      SELEC ...
基于注解 + 反射 + 动态代理 先上代码: @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface InvokerMethod { enum HttpMethod { Get, Post } HttpMethod method() default HttpMethod.Get; String path() default ""; int timeout() default 5 ...
本文源自他人设计,作者戴神看到请包涵~~ JPA ?两段式提交? No !我们要的是简单、自由!框架的核心代码如类图。 注意: 如果失败策略为默认即抛出异常,则会被 TransactionManager 捕获并触发 rollback() 然后执行一系列的 undo() ;如果失败策略为重试,则异常将被 RetryFailStrategy 自己消化掉,到不了 TransactionManager 这里。 如何使用: XXBiz @Autowired private TransactionManager transactionManager; @A ...
1. 程序顺序规则: func() {   int a = 1;   int b = a; } b 一定能看到 a 的变化 2. 监视器锁规则: synchronized(obj) {   do something } 线程 A 申请锁,而在这之前的一纳秒,线程 B 正好释放了 obj 上的锁,那么 A 一定能觉察到 B 的释放 3. volatile 变量规则: volatile a; 线程对 a 的写入一定能被后面的其它线程看到,这里的后面是指时间上的后面 4. 中断规则: t.interrupt(); 假如我调用这句话,那么 t 一定能觉察到自己中断状态的变化(catch 住 Int ...
CountDownLatch 场景:用10个线程分治计算1到 n 之和 构造函数: CountDownLatch(int count) 方法: await/countDown Semaphore 场景:实现一个有界的、可阻塞的、线程安全的 Set 构造函数: Semaphore(int permits) 方法: acquire/release CyclicBarrier 场景:可重复使用的 CountDownLatch 构造函数: CyclicBarrier(int parties, Runnable barrierAction) 方法: await 说明: await 阻止当前线程运行下去 ...
package com.wjxie.linked.blocking.queue; public class Producer extends Thread { public Producer(String name) { super(name); } @Override public void run() { while (true) { System.out.println("Producer queue size: " + Main.queue.size ...
package com.wjxie.wait.notify; public class Producer extends Thread { public Producer(String name) { super(name); } @Override public void run() { while (true) { synchronized (Main.queue) { try { Thread.s ...
原文地址 http://www.douban.com/group/topic/30286342 Sphinx 的 SetGeoAnchor方法,(LinkWith:http://sphinxsearch.com/docs/manual-0.9.9.html#api-func-setgeoanchor) coreseek提供的中文翻译手册: function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long ) 为地表距离计算设置锚点,并且允许使用它们。$attrlat 和$attrlong 是字符串,分别指定了对应经度和纬度的属性名称。$lat 和 ...

约瑟夫环

package com.wjxie.test; import java.util.ArrayList; import java.util.List; public class Test { public static void yuesefu(int n, int m, int k) { List<Integer> list = new ArrayList<Integer>(); for (int i = 1; i <= n; i++) { list.add(i); } while (list.size( ...
<context:annotation-config /> Spring 容器默认禁止注解装配。所以,在使用基于注解的自动装配前,我们需要在 Spring 配置中启用它。最简单的启用方式是使用 Spring 的 context 命名空间配置中的 <context:annotation-config /> 元素。<con ...
package com.jianfeitech.utils; import java.util.Set; import org.apache.log4j.Logger; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import com.jianfeitech.constants.AdConstants; /** * * Redis 工具类。 * * @a ...
Global site tag (gtag.js) - Google Analytics