2020年11月15日

摘要:vm.init,先为computed变量(假设是age,并在computed方法中依赖于另一个变量vm.factor)初始化,age会关联一个watcher(假设为cWatcher,lazy为true),vm.age的get方法被重写,cWatcher的dirty属性被置为true。其getter属 阅读全文
posted @ 2020-11-15 16:36 chuliang 阅读(324) 评论(0) 推荐(0) 编辑
 

2020年11月2日

摘要:全局组件通过Vue.component注册,而Vue.component的定义是在initGlobalAPI(Vue); >initAssetRegisters(Vue)。ASSET_TYPES数组中有'component'字符串。Vue.component(id, definition)方法的逻辑 阅读全文
posted @ 2020-11-02 00:24 chuliang 阅读(28) 评论(0) 推荐(0) 编辑
 

2020年8月26日

摘要:redisson用的是netty的io框架,逻辑在channel的handler中 先看配置,以常用的哨兵模式为例,config.useSentinelServers()+Redisson.create(config)。Redisson的构造方法中,最重要的是给connectionManager属性 阅读全文
posted @ 2020-08-26 18:21 chuliang 阅读(382) 评论(0) 推荐(0) 编辑
 

2020年8月21日

摘要:先考虑一个问题:在一个JVM进程中,启动多个消费者/生产者,有没有限制?使用的netty client是同一个还是多个? 以DefaultMQPushConsumer为例,start this.defaultMQPushConsumerImpl.start() mQClientFactory.sta 阅读全文
posted @ 2020-08-21 13:19 chuliang 阅读(161) 评论(0) 推荐(0) 编辑
 

2020年8月20日

摘要:close方法中,客户端发出正常的挥手请求,在服务端的AbstractNioByteChannel的内部类NioByteUnsafe的read方法中,close = allocHandle.lastBytesRead() < 0这句为true,就不会进入channelRead而是进入if (clos 阅读全文
posted @ 2020-08-20 14:41 chuliang 阅读(633) 评论(0) 推荐(0) 编辑
 

2020年8月4日

摘要:两个回调方法:发送消息成功之后执行事务的executeLocalTransaction,回查时候调用的checkLocalTransaction。 我的思路:执行事务的时候,调用service的方法,这个方法需要用事务注解,方法参数中传入唯一id,事务方法最后判断如果id不为空,说明此时是事务消息在 阅读全文
posted @ 2020-08-04 15:17 chuliang 阅读(421) 评论(0) 推荐(0) 编辑
 

2020年7月6日

摘要:getBean(String beanName)是spring的核心方法 >doGetBean:其中transformedBeanName是处理beanName的;getSingleton是从缓存中的bean单例;getObjectForBeanInstance是当bean是factoryBean的 阅读全文
posted @ 2020-07-06 01:38 chuliang 阅读(77) 评论(0) 推荐(0) 编辑
 

2020年7月2日

摘要:ReentrantLock、CountDownLatch 、Semaphore三者底层都是AbstractQueuedSynchronizer,逻辑都是先获取通行许可,成功了执行接下来的代码,失败了挂起;另外就是要在合适的时候唤醒其他线程。 对照上面的流程 ReentrantLock获取通行许可是l 阅读全文
posted @ 2020-07-02 16:23 chuliang 阅读(93) 评论(0) 推荐(0) 编辑
 

2020年6月16日

摘要:rocketMQ解决分布式事务的思路:1、a事务成功和mq收到消息保持一致。2、保证这条消息一定会被消费,从而完成b事务。时效性可能差了点,但是能达到最终的一致,优点是不会阻塞。 其中第二步保证消息一定会被消费可以看之前的博文,消费端用集群模式可以做到这一点。 下面来看怎样使得 事务a成功 和 mq 阅读全文
posted @ 2020-06-16 16:52 chuliang 阅读(202) 评论(0) 推荐(0) 编辑
 
摘要:我用的是DefaultMQPushConsumer,启动一个consumer的时候,根据之前的博文,push其实还是一次次的pullrequest。这里就有个问题:如果需要实时性很高,broker新收到一条消息之后,马上就要传递给订阅的consumer,那么consumer这边就需要不停的轮询,一次 阅读全文
posted @ 2020-06-16 15:39 chuliang 阅读(647) 评论(0) 推荐(1) 编辑