- 博客(13)
- 收藏
- 关注
原创 java线程池的实现原理
jdk自带的线程池有ThreadPoolExecutor、ScheduledExecutorService、ScheduledThreadPoolExecutor、ExecutorService,我们可以使用工具类Executors来创建。简单看看线程池ThreadPoolExecutor的实现原理。1.使用线程池的原因由于创建和回收线程的成本比较高,所以我们会使用线程池来减少线程的频繁创建和回收...
2018-04-14 15:28:07
218
原创 Dubbo 代码结构整理
先上张图,可以看到dubbo的模块划分和层次划分有一定对应关系,我的水平评价不出代码好坏,但是很喜欢这种代码结构。1.每一层的功能Service:需要暴露的接口。服务端会实现接口暴露服务,客户端会将接口反射之后调用远程服务。 Config:xml配置文件中各种标签所属的java类。 Proxy:使用javassist、或者jdk动态代理生成的类,以及stub和local功能的实现。服务端的Abst...
2018-04-13 01:32:31
782
原创 Dubbo 源码再整理(整理中)
1.ExtensionLoader 加载类的过程以 Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension()为例1.1.ExtensionLoader.getExtensionLoader(Protocol.class)ExtensionLoader.getExtens...
2018-04-12 02:37:31
163
转载 mark一下dubbo不适合传输大文件
之前梁峰发的:因dubbo协议采用单一长连接,如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 500KByt...
2018-04-10 14:09:02
3878
原创 使用redis生成分布式循环自增的id
知道redis有原子性执行lua脚本的能力就好办了,命令介绍在这:http://doc.redisfans.com/script/eval.html实现就一句话....是不是有点水....额当redis>9时又重新从0开始:eval "local cur=redis.call('INCRBY', KEYS[1], 1);if(cur>9) then redis.call('set', ...
2018-03-28 21:24:49
3116
原创 Paxos 算法 的理解
Paxos 算法首先,mark一个网上的一个视频,可以有一个初步的了解,虽然可能不完善http://www.tudou.com/programs/view/e8zM8dAL6hM/?qq-pf-to=pcqq.group1.解决的问题分布式系统采用多副本的形式进行存储,必须保证每台服务器上的副本都是一样的,才能保证数据一致性。所以多个用户分别向多台服务器上提交请求时,最终的每台服务器上的副本都是一...
2018-03-27 23:00:22
263
原创 一致性hash算法通俗描述
背景: 当客户端调用redis缓存集群(比如3台)存取数据时, 如果客户端采用普通的hash求余(id%3)的算法,来计算该数据应该由哪台redis服务器存取, 当算法是:id%机器数,redis服务器和id的对应关系有: id%3时===>redis1:0/3/6/9,redis2:1/4/7,redis3:2/5/8, 当redis集群中一台服务器 redis3 down掉后,h...
2018-03-27 18:29:46
339
原创 canal 停机后继续从上次位置拉取binlog的原理
CanalMetaManager 和 CanalLogPositionManager1)canalInstance->CanalMetaManager 1对12)canalInstance->CanalLogPositionManager 1对多 当groupDbAddresses的groupSize()>1时 为1对多因为:canalInstance->CanalEventPar
2017-12-29 18:55:04
6860
2
原创 java.sql.SQLException: Column Index out of range, 2 > 1.
java.sql.SQLException: Column Index out of range, 2 > 1.
2017-12-20 15:24:38
4903
原创 otter如何保持数据有序,回滚时如何丢弃避免重复执行,是否存在重复执行,重复执行是否有影响
otter如何保持数据有序,回滚时如何丢弃避免重复执行,是否存在重复执行,重复执行是否有影响
2017-07-14 16:09:56
622
原创 zookeeper中选举leader过程
注:选举leader的过程是参考zookeeper3.3.1.jar1.名词选举端口electionAddr:我们知道zookeeper选举时的端口是通过配置文件zoo.cfg配置的,zookeeper将配置文件转换成QuorumServer对象,其中electionAddr属性对应选举端口,对应server.1=registry2.dubbo.host:2888:3888中的38
2016-02-22 19:44:46
560
原创 count++不是原子性操作测试
package com.ssy.base;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class CountJIAJIATest { public static void main(String[]
2016-02-01 16:53:45
923
原创 生成活动码,每次获取的记录不重复
思路:1.生成活动码 2.随机打乱顺序 3.将生成的活动码对象(list)写入文件 4.每次获取记录并删除未经同意不得转载package l_gen_numbers;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import j
2015-09-10 10:31:03
531
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人