- 博客(33)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 源码分析 Sentinel DegradeSlot 熔断
seatinel cor版本为1.7版本Sentinel的熔断是由slotchain中的最后一个DegradeSlot来实现的public class DegradeSlot extends AbstractLinkedProcessorSlot<DefaultNode> { @Override public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int
2020-08-04 22:36:07
631
原创 从源码分析seata如何使用
使用方式引入jar包 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <revision>2.2.1.RELEASE</revision> </
2020-07-30 21:47:23
1134
1
原创 spring boot 1.5如何最简单的使用seata最新版
添加maven依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <version>1.5.1.RELEASE</version> <excl
2020-07-30 20:00:39
1179
4
原创 tomcat7源码server
tomcat的server组件由StanderServer实现,它实现了Server接口。StanderServer的代码量很少,但这里并不能单单来讲StanderServer。tomcat的各个组件都实现了表示生命周期的接口Lifecycle,但是各个组件并不是直接实现了该接口,而是继承了实现该接口的抽象类。tomcat在设计各个组件时采用了模板模式和观察者模式。所以看Stander
2014-11-07 17:03:01
1051
原创 tomcat源码Catalina
Catalina的作用是初始化各个组件,并开始启动各个组件。上文中介绍了Bootstrap是如何启动Catalina的,现在来看看Catalina的作用:1,Catalina或通过Digester类加载server.xml,获取server.xml中各个组件的实例,并赋值(这个类是通过扩展SAX来完成的)。2,调用server的start方法开启server组件,server会一级一级
2014-11-05 17:48:15
1760
原创 tomcat7源码Bootstrap
tomcat的启动从bootstrap的main方法开始,在main方法中,启动时主要是做了三件事,调用init方法初始化自己,调用catalinaDaemon对象的setAwait方法设置它的await属性为true,最后调用自己的start方法。 首先看看init方法: public void init() throws Exception
2014-11-04 12:11:05
1812
原创 java线程池框架源码分析
相关类Executor,Executors,AbstractExecutorService,ExecutorServiceExecutor:整个线程池执行者宽肩的顶层接口。定义了一个execute方法,整个线程执行者框架的核心方法。public interface Executor { void execute(Runnable command);}ExecutorServ
2014-10-29 11:35:18
1380
原创 java的join方法
在某个线程中调用另一个线程的join方法,是将当前的cpu让给另一个线程,等到规定的时间到了或另一个线程执行结束后,自己再执行。package test;public class TestJoin1 { public static void main(String[] args) throws InterruptedException { TheOtherThread to
2014-08-12 18:00:56
859
原创 python插入排序
def insert_sort(list): for i in range(len(list)): while i > 0 and list[i] < list[i-1]: temp = list[i] list[i] = list[i-1] list[i-1] = temp i = i-1
2014-08-12 14:38:50
986
原创 python选择排序
def select_sort(list): for i in range(len(list)): position = i for j in range(i,len(list)): if list[position] > list[j]: position = j temp = list[i] list[i] = list[position] list[pos
2014-08-12 14:28:52
956
原创 python冒泡排序
def bubble_sort(list): for i in range(len(list)): for j in (range(i,len(list))): if list[j] temp = list[j] list[j] = list[i]
2014-08-12 14:13:21
1154
翻译 nginx负载均衡配置
原文http://nginx.org/en/docs/http/load_balancing.html本文依照自己的理解翻译 在多个应用程序间提供负载均衡是一种常用的提高资源利用率的技术,提高服务器的吞吐量,减少延迟,确保应用程序容错。Nginx可以做为一个高效的http负载均衡器来将负载分发到多个应用程序上以提高性能,它也是一种可靠地,可伸缩的web应用程序服务器。
2014-08-12 11:34:20
1294
原创 nginx使用指南
1,运行nginx可以运行nginx命令开启nginx:nginx如果nginx已经开启了,可以运行nginx命令加-s 参数来控制nginx的运行nginx -s signalsignal的值:stop — 快速关闭quit — 优雅的关闭reload — 重新加载配置文件reopen — 重新打开日志文件 例如:要等nginx处理完当
2014-08-11 17:52:34
1246
原创 fastdfs安装
1:安装libevent rpm -aq |grep libevent|xargs rpm -e --nodeps tar zxvf libevent-2.0.21-stable.tar.gz cd libevent-2.0.21-stable ./configure --prefix=/usr/local/libevent make && mak
2014-08-07 09:51:58
1059
原创 MapReduce中Map数量的控制
InputFormat这个类是用来处理Map的输入数据的,任务开始时,InputFormat先将HDFS里所有输入文件里的数据分割成逻辑上的InputSpilt对象这里的split是HDFS中block的部分或者一整块或几个快中的数据的逻辑分割,一个split对应于一个Map,所以Map的数量是由split的数量决定的。那么怎样去确定InputSpilt的个数呢,下面列出于split个
2014-07-25 10:11:09
2190
原创 什么场景下用Hbase
Hbase适用于存储不太复杂但数据很大的数据。列如商城系统中:用户,商品,订单,店铺,卖家,这些数据关系复杂不适合用Hbase。这里面订单数据量很大,而且要频繁拿出来计算,可以考虑只将订单这项存入Hbase。其他方面:1,数据量达到上亿以上时可以使用Hbase如果只有上千或上百万行,则用传统的RDBMS。2,不依赖所有RDBMS的额外特性(列数据类型, 第二索引, 事物,高级查询语言等.)
2014-07-11 12:12:16
1736
原创 MapReduceTopK TreeMap
MapReduce TopK统计加排序中介绍的TopK在mapreduce的实现。本案例省略的上面案例中的Sort步骤,改用TreeMap来实现获取前K个词package TopK1;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configurat
2014-06-22 13:28:04
2208
原创 hadoop实现购物商城推荐系统
1,商城:是单商家,多买家的商城系统。数据库是mysql,语言java。2,sqoop1.9.33:在mysql和hadoop中交换数据。3,hadoop2.2.0:这里用于练习的是伪分布模式。4,完成内容:喜欢该商品的人还喜欢,相同购物喜好的好友推荐。步骤:1,通过sqoop从mysql中将 “用户收藏商品” (这里用的是用户收藏商品信息表作为推荐系统业务上的依据,业务依
2014-06-17 20:51:50
9898
原创 MapReduce实现矩阵相乘
矩阵相乘可以查看百度百科的解释http://baike.baidu.com/view/2455255.htm?fr=aladdin有a和b两个矩阵a: 1 2 3 4 5 0 7 8 9 10 11 12b:
2014-06-15 16:40:50
1905
原创 java二叉树
网上有关于二叉数的java实现http://blog.youkuaiyun.com/skylinesky/article/details/6611442多数案例都没有键值,有键值的也全是整型。我用java实现了一个可以任何对象为键的二叉数package Tree;import java.io.IOException;public class Tree ,V> { @SuppressW
2014-05-30 16:40:26
980
原创 java数组实现的树
import java.util.Arrays;public class MyTree { public static final int LEVEL = 10; //用户存放数据 private Object[] datas; @SuppressWarnings("unchecked") MyTree(){ int length = (int) (Math.pow
2014-05-30 11:14:44
1481
原创 Java算法快速排序
快速排序的原理:每次将序列以一个值为界限分成两组,在将两个序列分别以一个界限分成两组这样一直分下去。int[] a = {11,222,44,63,84,11,24,53,123,25,98,76,34};第一步:以34将数组a分成两组 11, 25, 24, 11 34, 63, 44, 53, 123, 222, 98, 76, 84第二步:以11将
2014-05-29 16:28:48
841
原创 java插入排序
在大多数情况下插入排序比选择排序和冒泡排序快些,int[] a = {222,44,11,63,84,24,53,123,25,98,76,34};挨个读取数组a中的每个元素,将它与前面的数最对比,如果比前面的小就将前面的数向后移,当移动停止时,将该数填充到空出的位置。第一次:222前面没有数不做变化。第二次:44小于222,将222后移一位变成了{x,222,11,63,84,24,53,123,25,98,76,34},最后将44填充到x的位置(移动222后空出的位置),数组变成了{44,22
2014-05-27 09:28:45
608
原创 MapReduce的Kmeans聚类算法
最近在网上查看用MapReduce实现的Kmeans算法,例子是不错,http://blog.youkuaiyun.com/jshayzf/article/details/22739063但注释太少了,而且参数太多,如果新手学习的话不太好理解。所以自己按照个人的理解写了一个简单的例子并添加了详细的注释。大致的步骤是:1,Map每读取一条数据就与中心做对比,求出该条记录对应的中心,然后以中心的ID为
2014-05-23 19:05:44
2599
原创 MapReduce的TopK统计加排序
Hadoop技术内幕中指出Top K算法有两步,一是统计词频,二是找出词频最高的前K个词。在网上找了很多MapReduce的Top K案例,这些案例都只有排序功能,所以自己写了个案例。这个案例分两个步骤,第一个是就是wordCount案例,二就是排序功能。一,统计词频package TopK;import java.io.IOException;import java.util
2014-05-20 16:17:36
4125
死锁的问题
2011-10-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人