- 博客(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 438
原创 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 491
原创 dubbo负载均衡策略
客户端调用服务端时,如何选择调用服务端的哪台机器上的服务呢。这就设计到负载均衡策略了。默认使用的是RoundRobinLoadBalance,轮训策略,或者说是加权轮训策略除此之外,还有随机策略,加权随机策略最不活跃策略以及一致性hash策略还有在DubboInvoker里面我们可以看到,我们与服务端的某台机器建立的是多个连接(默认是两个),那么需要从连接里面选一个出来。 @O...
2019-06-09 18:35:09 456
原创 dubbo客户端调用失败
当我们使用dubbo的时候,如果客户端调用服务端失败,客户端应该如何处理呢客户端默认的如下,失败转移1.失败转移,当出现失败,重试其它服务器,通常用于读操作,但重试会带来更长延迟。public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> { private static...
2019-06-09 18:20:45 7821
原创 dubbo线程模型
一下都是讲的基于netty的通讯模式先说客户端找到NettyClient类doOpen方法 @Override protected void doOpen() throws Throwable { NettyHelper.setNettyLoggerFactory(); bootstrap = new ClientBootstrap(channe...
2019-06-09 14:46:33 600
原创 activemq支持事务
activemq支持两种事务,本地事务,和分布式事务public class TestProducer { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( ...
2019-06-08 19:43:22 2702
原创 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 620
原创 activemq消费端确认机制
// 如果是同步receive方式,下面该方法是消息确认的逻辑private void afterMessageIsConsumed(MessageDispatch md, boolean messageExpired) throws JMSException { if (unconsumedMessages.isClosed()) { return; ...
2019-05-27 23:47:39 1401
原创 dubbo-代理类的生成过程
首先看proxyFactory的生成过程 private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();ExtensionLoader初始化类 @SuppressWarnings(&amp;quot;u...
2018-10-27 23:13:07 1220 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 257
原创 activemq保证消息顺序原理
有时候我们需要消费者消费消息是顺序消费的。比如生成一个订单,先扣库存,然后扣款,这两条消息,由于现在系统都是分布式的,我们可能需要在有多台机器的多个消费者时,这两条消息是顺序消费的。在activemq中,有两种方式来保证,消息消费的顺序性。 1)通过高级特性consumer独有消费者(exclusive consumer)queue = new ActiveMQQueue("TEST.Q...
2018-09-09 22:26:23 8451
原创 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 1860
原创 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 284
原创 mysql之排序
关于explain中的extra是下面的值的含义Using filesort当Query 中包含 ORDER BY 操作,而且无法利用索引完成排序操作的时候,MySQL Query Optimizer 不得不选择相应的排序算法来实现。数据较少时从内存排序,否则从磁盘排序。Explain不会显示的告诉客户端用哪种排序。官方解释:“MySQL需要额外的一次传递,以找出如何按排序顺序检索行。...
2018-04-24 21:06:17 754
原创 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 1031
原创 并发问题总结
1.FutureTask原理public class FutureTask<V> implements RunnableFuture<V>public interface RunnableFuture<V> extends Runnable, Future<V> {可以看到继承类内部是通过一个AQS对象控制的priva...
2018-04-17 10:35:24 225
原创 activemq broker topic消息收发处理过程
首先看一下activemq的网络模型(获取自网络)。 可以看到,TcpTransportServer是一个监听网络的类,如果有socket连接,便会放入阻塞队列,然后创建一个TransportConnection类,该类接收socket的消息,进行逻辑处理;先看看TransportConnector在干啥 第一步:设置server处理类 第二步:接收到连接socket加入线程池 ...
2018-04-16 00:46:46 2520
原创 activemq发送同步发送和异步发送
在默认大多数情况下,AcitveMQ 是以异步模式发送消息。例外的情况:在没有使用 事务的情况下,生产者以PERSISTENT 传送模式发送消息。在这种情况下,send 方法都 是同步的,并且一直阻塞直到ActiveMQ 发回确认消息:消息已经存储在持久性数据存 储中。这种确认机制保证消息不会丢失,但会造成生产者阻塞从而影响反应时间。 高性能的程序一般都能容忍在故障情况下丢失少量数据。如果...
2018-04-06 14:31:13 3845
原创 activemq接收消息pull与push模式
1。同步和异步的方式 public static void main(String[] args) { // ConnectionFactory :连接工厂,JMS 用它创建连接 ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS Provider 的连接 ...
2018-03-25 01:00:23 2287 1
原创 sql注入
sql注入 1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双”-“进行转换等。2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。5.应用的异常信息应该给出尽可能少
2017-12-23 22:12:00 252
原创 2017.10思考
关于java学习。 今年看了几个框架的源码,dubbo,netty,zookeeper,activemq。看了几本mysql,redis相关的书籍。虽然看了,但还是感觉掌握的不够,发现一个问题,就是思考的有点少。 接下来需要详细掌握各个框架的设计思路,能够造出轮子。能熟练的知道代码层面都是这么实现的,总之需要像自己做的项目一样的,这种对代码的掌握程度。对于消息机制方面,需
2017-10-14 13:01:46 325
原创 调试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 3213 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 633
原创 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 1031
原创 查看zookeeper源码的实现原理
今天开始看zookeeper的实现原理,主要是看以下几个功能都是怎么实现的:1.客户端API设计与实现2.序列化与协议3.网络通信4.watcher机制5.数据与存储6.请求处理链7.Leader选举8.服务端各角色工作原理包括三个角色
2016-07-23 01:05:57 559
原创 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 399
原创 spring事务传播特性实现原理
配置spring事务,需要在配置文件中配置,通过spring的Aop,会执行到AbstractPlatformTransactionManager的getTransaction方法 public final TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionExcepti
2016-06-27 23:30:10 3684
原创 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 650
原创 zookeeper选举leader过程
1.每个server会发出一个投票发送的形式是(myid,ZXID),myid表示服务器编号,ZXID表示事务id,每台机器当前的事务id可能不一样。2.接收来自各个服务器的投票3.处理投票规则是先比较ZXID,如果别人的比自己的大,就更新自己的投票,如果一样大,就比较myid,看哪个的大4.统计投票如果有过半的机器,是相同的投票,则结束投票,否则继续5.更改服务器的状
2016-05-08 21:47:19 917
原创 httclient使用socket发送请求
socket Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如
2016-03-27 23:34:40 1965
原创 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 4625
原创 从一台机器给另一台机器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 4191 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 453
原创 2014总结
一年过的好快,14年转眼就过去了,14年发生了太多事情,也是该总结下了。14年比较重要的事情就是在五月份换了一份工作,从一个普通的金融外包公司换到了一个移动互联网公司,现在想来实在是庆幸自己做了这个选择,没有留下来。金融外包跟互联网公司用的技术还是有很大差别的,一家是传统的ssh,更多的是写写业务逻辑,由于跟金钱打交道,自己也是兢兢业业,很担心出错,不敢尝试新的技术,记得当时为了写一个业务逻辑
2015-02-04 12:01:47 752
原创 一些算法题
下面都是我在网上搜集的算法题,我自己想了解法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 720
原创 查找算法
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 642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人