自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 调试rocketmq源码

1.从github下载rocketmq源码2.添加环境变量name为:ROCKETMQ_HOMEvalue为:rocketmq源码的路径3.从RocketMQ distribution部署目录中将broker.conf、logback_broker.xml文件复制到conf目录中,logback_namesrv.xml文件则只需修改日志文件的目录4.新建启动namesrv和broker...

2019-06-23 23:59:59 418

原创 dubbo服务端客户端长连接心跳

当客户端从注册中心拿到服务端的ip地址之后,客户端与服务端之间建立连接,那这条建立的连接如何去校验状态呢。

2019-06-12 23:00:30 1176

原创 dubbo服务端限流

在服务端调用链条里,会有一个TpsLimitFilter类,用来对服务端限流public boolean isAllowable(URL url, Invocation invocation) { int rate = url.getParameter(Constants.TPS_LIMIT_RATE_KEY, -1); long interval = url.g...

2019-06-12 10:04:45 476

原创 dubbo负载均衡策略

客户端调用服务端时,如何选择调用服务端的哪台机器上的服务呢。这就设计到负载均衡策略了。默认使用的是RoundRobinLoadBalance,轮训策略,或者说是加权轮训策略除此之外,还有随机策略,加权随机策略最不活跃策略以及一致性hash策略还有在DubboInvoker里面我们可以看到,我们与服务端的某台机器建立的是多个连接(默认是两个),那么需要从连接里面选一个出来。 @O...

2019-06-09 18:35:09 431

原创 dubbo客户端调用失败

当我们使用dubbo的时候,如果客户端调用服务端失败,客户端应该如何处理呢客户端默认的如下,失败转移1.失败转移,当出现失败,重试其它服务器,通常用于读操作,但重试会带来更长延迟。public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> { private static...

2019-06-09 18:20:45 7552

原创 dubbo线程模型

一下都是讲的基于netty的通讯模式先说客户端找到NettyClient类doOpen方法 @Override protected void doOpen() throws Throwable { NettyHelper.setNettyLoggerFactory(); bootstrap = new ClientBootstrap(channe...

2019-06-09 14:46:33 575

原创 activemq支持事务

activemq支持两种事务,本地事务,和分布式事务public class TestProducer { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( ...

2019-06-08 19:43:22 2648

原创 activemq发送方速率控制

queue里面send方法 @Override public void send(final ProducerBrokerExchange producerExchange, final Message message) throws Exception { final ConnectionContext context = producerExchange.get...

2019-06-02 15:52:47 589

原创 activemq消费端确认机制

// 如果是同步receive方式,下面该方法是消息确认的逻辑private void afterMessageIsConsumed(MessageDispatch md, boolean messageExpired) throws JMSException { if (unconsumedMessages.isClosed()) { return; ...

2019-05-27 23:47:39 1318

原创 dubbo-代理类的生成过程

首先看proxyFactory的生成过程 private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();ExtensionLoader初始化类 @SuppressWarnings(&amp;amp;quot;u...

2018-10-27 23:13:07 1159 1

原创 dubbo服务启动过程

public class Main { public static final String CONTAINER_KEY = "dubbo.container"; public static final String SHUTDOWN_HOOK_KEY = "dubbo.shutdown.hook"; private static final Logger l...

2018-10-27 15:50:42 227

原创 activemq保证消息顺序原理

有时候我们需要消费者消费消息是顺序消费的。比如生成一个订单,先扣库存,然后扣款,这两条消息,由于现在系统都是分布式的,我们可能需要在有多台机器的多个消费者时,这两条消息是顺序消费的。在activemq中,有两种方式来保证,消息消费的顺序性。 1)通过高级特性consumer独有消费者(exclusive consumer)queue = new ActiveMQQueue(&quot;TEST.Q...

2018-09-09 22:26:23 8339

原创 activemq消费者消息预取和消息消费确认

消费者可以通过设置prefetchSize进行批量取消息,有默认值。可以设置: 1、 tcp://localhost:61616?jms.prefetchPolicy.all=502、 tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=13、 queue = new ActiveMQQueue(“TEST.QUEUE?co...

2018-04-27 13:20:42 1827

原创 activemq消息的持久化

/** * Created by brady on 17/4/8. */public class TestProducer { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ActiveMQConnectionFac...

2018-04-26 23:49:27 263

原创 mysql之排序

关于explain中的extra是下面的值的含义Using filesort当Query 中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL Query Optimizer 不得不选择相应的排序算法来实现。数据较少时从内存排序,否则从磁盘排序。Explain不会显示的告诉客户端用哪种排序。官方解释:“MySQL需要额外的一次传递,以找出如何按排序顺序检索行。...

2018-04-24 21:06:17 727

原创 netty概览

上图是从网上找的

2018-04-22 00:03:59 181

原创 activemq的broker对于queue的处理过程

先写一下生产者和消费者的代码生成者代码/** * Created by brady on 17/4/8. */public class TestProducer { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = ...

2018-04-21 23:05:19 1007

原创 并发问题总结

1.FutureTask原理public class FutureTask&lt;V&gt; implements RunnableFuture&lt;V&gt;public interface RunnableFuture&lt;V&gt; extends Runnable, Future&lt;V&gt; {可以看到继承类内部是通过一个AQS对象控制的priva...

2018-04-17 10:35:24 208

原创 activemq broker topic消息收发处理过程

首先看一下activemq的网络模型(获取自网络)。 可以看到,TcpTransportServer是一个监听网络的类,如果有socket连接,便会放入阻塞队列,然后创建一个TransportConnection类,该类接收socket的消息,进行逻辑处理;先看看TransportConnector在干啥 第一步:设置server处理类 第二步:接收到连接socket加入线程池 ...

2018-04-16 00:46:46 2486

原创 activemq发送同步发送和异步发送

在默认大多数情况下,AcitveMQ 是以异步模式发送消息。例外的情况:在没有使用 事务的情况下,生产者以PERSISTENT 传送模式发送消息。在这种情况下,send 方法都 是同步的,并且一直阻塞直到ActiveMQ 发回确认消息:消息已经存储在持久性数据存 储中。这种确认机制保证消息不会丢失,但会造成生产者阻塞从而影响反应时间。 高性能的程序一般都能容忍在故障情况下丢失少量数据。如果...

2018-04-06 14:31:13 3795

原创 activemq接收消息pull与push模式

1。同步和异步的方式 public static void main(String[] args) { // ConnectionFactory :连接工厂,JMS 用它创建连接 ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS Provider 的连接 ...

2018-03-25 01:00:23 2236 1

原创 sql注入

sql注入 1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双”-“进行转换等。2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。5.应用的异常信息应该给出尽可能少

2017-12-23 22:12:00 242

原创 2017.10思考

关于java学习。 今年看了几个框架的源码,dubbo,netty,zookeeper,activemq。看了几本mysql,redis相关的书籍。虽然看了,但还是感觉掌握的不够,发现一个问题,就是思考的有点少。 接下来需要详细掌握各个框架的设计思路,能够造出轮子。能熟练的知道代码层面都是这么实现的,总之需要像自己做的项目一样的,这种对代码的掌握程度。对于消息机制方面,需

2017-10-14 13:01:46 309

原创 调试activemq源码

git地址:https://github.com/apache/activemq.git如果是编译最新代码activemq-5.14需要jdk1.7,maven3以上。在idea里面倒入整个项目,mvn -Dtest=false install之后, 会在activemq/assembly/target目录下生成apache-activemq-5.15.0-SNAPSHOT-bin.ta...

2016-08-23 22:45:07 3151 2

原创 zookeeper 数据与存储源码实现

在zk集群启动的时候,根据选择的io类型(NIO或者Netty方式)启动监听客户端连接通道,比如NIO方式 @Override public void configure(InetSocketAddress addr, int maxcc) throws IOException { configureSaslLogin(); thread = new Zo

2016-08-23 21:28:14 614

原创 zookeeper 请求处理链源码实现

zookeeper请求处理链的源码实现

2016-08-12 23:39:21 723

原创 zookeeper leader选举源码实现

1.如果要查看zookeeper源码,可以以以下的方式启动配置启动类:org.apache.zookeeper.server.quorum.QuorumPeerMain配置一个启动参数:配置文件的地址注意配置文件需要写清楚集群# The number of milliseconds of each ticktickTime=2000# The number of ticks t

2016-08-08 22:06:03 1017

原创 查看zookeeper源码的实现原理

今天开始看zookeeper的实现原理,主要是看以下几个功能都是怎么实现的:1.客户端API设计与实现2.序列化与协议3.网络通信4.watcher机制5.数据与存储6.请求处理链7.Leader选举8.服务端各角色工作原理包括三个角色

2016-07-23 01:05:57 545

原创 java类初始化顺序

/** * Created by brady on 16/7/18. */class MyTest { public static int a = axax(); public static int axax(){ System.out.println("this is My.axax"); return 1; } public

2016-07-19 17:06:57 371

原创 spring事务传播特性实现原理

配置spring事务,需要在配置文件中配置,通过spring的Aop,会执行到AbstractPlatformTransactionManager的getTransaction方法 public final TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionExcepti

2016-06-27 23:30:10 3661

原创 memcache一致性hash原理

protected void setKetamaNodes(List nodes) { TreeMap newNodeMap = new TreeMap(); int numReps= config.getNodeRepetitions(); for(MemcachedNode node : nodes) { // Ketama does some special work

2016-05-15 14:50:27 631

原创 zookeeper选举leader过程

1.每个server会发出一个投票发送的形式是(myid,ZXID),myid表示服务器编号,ZXID表示事务id,每台机器当前的事务id可能不一样。2.接收来自各个服务器的投票3.处理投票规则是先比较ZXID,如果别人的比自己的大,就更新自己的投票,如果一样大,就比较myid,看哪个的大4.统计投票如果有过半的机器,是相同的投票,则结束投票,否则继续5.更改服务器的状

2016-05-08 21:47:19 902

原创 httpclient长链接与短链接

httpclient长连接

2016-04-24 11:49:33 18356

原创 httclient使用socket发送请求

socket        Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如

2016-03-27 23:34:40 1922

原创 HttpClient线程池原理

HttpClient线程池原理1.cpool对象[java] view plain copy print?class CPool extends AbstractConnPool {        private static final AtomicLong COUNTER = new AtomicLong();    

2016-03-14 23:13:33 4522

原创 从一台机器给另一台机器tomcat发请求,查看各个环节的耗时时间

计算一台机器在给另一台机器的tomcat发请求的时候,在dns解析,到达tomcat,应用处理花费了多长时间。以便来确认是哪个地方比较耗时。我们的做法是这样的。使用linux的curl命令,curl命令里面,打印,dns的解析时间,client和server端建立TCP 连接的时间。curl -o /dev/null -w %{time_namelookup}::%{t

2016-01-26 10:06:32 4152 1

原创 一些线程相关的问题

题目:       8个运动员同时起跑,都到达终点后记录成绩实现:package com.spring.test;import java.util.Random;import java.util.concurrent.CountDownLatch;/** * Created by brady on 15-3-1. */public class CountDownLatc

2015-03-01 10:52:30 437

原创 2014总结

一年过的好快,14年转眼就过去了,14年发生了太多事情,也是该总结下了。14年比较重要的事情就是在五月份换了一份工作,从一个普通的金融外包公司换到了一个移动互联网公司,现在想来实在是庆幸自己做了这个选择,没有留下来。金融外包跟互联网公司用的技术还是有很大差别的,一家是传统的ssh,更多的是写写业务逻辑,由于跟金钱打交道,自己也是兢兢业业,很担心出错,不敢尝试新的技术,记得当时为了写一个业务逻辑

2015-02-04 12:01:47 734

原创 一些算法题

下面都是我在网上搜集的算法题,我自己想了解法1.一个严格递增的序列,从中间某个未知的地方切成两段,将前一段放到后面,求最大值?注意划开的位置你不知道!我的解法2.二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: { 1 2 3 4 } { 5 6 7 8 } { 9 10 11 12 } {13 14 15 16 } 打印出来后

2015-01-30 10:26:03 708

原创 查找算法

1.二分查找package com.spring.test;/** * Created by brady on 15-1-28. */public class Bi { public static int f(int[] a, int l){ int p =0; int left = 0; int right = a.lengt

2015-01-30 10:25:30 630

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除