微服务集成测试自动化探索

作者:杜亮亮

1 简介

51信用卡管家自2015年开始实施微服务架构,是业界较早尝试微服务架构的技术团队,整个团队有幸见证了微服务从最初的几个服务试点到全面铺开的过程。架构的演变也催生了自动化测试框架和策略的演变,测试团队通过持续地探索和总结,在集成测试自动化框架建设和策略选择上积累了一些经验,抛砖引玉和大家一起分享。

阅读全文

《Hyperledger Fabric官方文档》介绍

原文链接 译者:周超强

介绍

Hyperledger Fabric 是一个用来解决分布式记账问题的平台,并且Hyperledger Fabric内部模块之间的传输更加的保密、弹性、灵活和可伸缩。Hyperledger Fabric对不同组件的可插拔的实现以及金融生态系统的复杂性提供了帮助。

我们建议第一次阅读文章的读者,可以先浏览引言的其他部分,这样可以熟悉一些基本的概念,比如区块链是如何运行的以及Hyperledger Fabric的特点和内部的组成实现。

一旦具备了基本的知识或者已经对区块链比较熟悉后,可以跳到开始的部分来看一些实例、技术的详细说明、API等等。

阅读全文

TCP 滑动窗口 与窗口缩放因子(Window Scaling)

一、前言

说道TCP滑动窗口协议,相信大家都很熟悉,但是说道 Window Scaling参数或许知道的和用过的人却不多,本文我们来谈谈Window Scaling的由来 阅读全文

不可错过的CMS学习笔记

引子

带着问题去学习一个东西,才会有目标感,我先把一直以来自己对CMS的一些疑惑罗列了下,希望这篇学习笔记能解决掉这些疑惑,希望也能对你有所帮助。

  1. CMS出现的初衷、背景和目的?
  2. CMS的适用场景?
  3. CMS的trade-off是什么?优势、劣势和代价
  4. CMS会回收哪个区域的对象?
  5. CMS的GC Roots包括那些对象?
  6. CMS的过程?
  7. CMS和Full gc是不是一回事?
  8. CMS何时触发?
  9. CMS的日志如何分析?
  10. CMS的调优如何做?
  11. CMS扫描那些对象?
  12. CMS和CMS collector的区别?
  13. CMS的推荐参数设置?
  14. 为什么ParNew可以和CMS配合使用,而Parallel Scanvenge不可以?

阅读全文

白话网络通讯

白话网络通讯

  • 不同主机之间通讯本质-二进制流传输无论你是纯socket通讯,还是应用层的http,Rpc协议进行通讯,本质底层都是传输二进制流
  • 不同主机如何认识二进制流为需要的内容-约定协议既然是二进制,那么发送和接受方如何识别消息的边界,那就约定协议,比如http约定了http包的格式,Dubbo Rpc协议约定了dubbo包的格式

阅读全文

基于redis的分布式锁

1 介绍

这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。

本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息。

阅读全文

猫狗队列的再解

也是头一次在其他的这类型网站投稿,不过似乎没有markdown语法…,以下来自我的个人博客近期所写的,对猫狗
队列的解答。

猫狗队列是一个很经典的问题了吧,在书上我也翻看了很久;而网上的答案呢,也是千篇一律的,跟书的代码也是一字不差的,几乎除了照搬似乎都没什么思路可言的,甚至连书上提到注意的点都没有…

一开始我是没什么思路的,翻来覆去研究书上,发现原来挺简单;但用思路写起来还真不是一回事,挺难的。各个问题涉及到的地方很多,就是如何解决的问题很多,特别是题目的第二点要求。

阅读全文

如何成为一位「不那么差」的程序员

前言

已经记不清有多少读者问过:

博主,你是怎么学习的?像我这样的情况有啥好的建议嘛?

也不知道啥时候我居然成人生导师了。当然我不排斥这些问题,和大家交流都是学习的过程。

因此也许诺会准备一篇关于学习方面的文章;所以本文其实准备了很久,篇幅较长,大家耐心看完希望能有收获。

以下内容仅代表我从业以来所积累的相关经验,我会从硬技能、软实力这些方面尽量阐述我所认为的 “不那么差的程序员” 应当做到哪些技能。

阅读全文

消息队列二三事

最近在看kafka的代码,就免不了想看看消息队列的一些要点:服务质量(QOS)性能扩展性等等,下面一一探索这些概念,并谈谈在特定的消息队列如kafka或者mosquito中是如何具体实现这些概念的。

阅读全文

设计一个百万级的消息推送系统

前言

首先迟到的祝大家中秋快乐。

最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。

鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天?)。

先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。

最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息;同时还得满足大量设备接入的需求。

所以本次分享的内容不但可以满足物联网领域同时还支持以下场景:

  • 基于 WEB 的聊天系统(点对点、群聊)。
  • WEB 应用中需求服务端推送的场景。
  • 基于 SDK 的消息推送平台。

阅读全文

《Python3.6官方文档》– 4.更多流程控制语句

4 更多流程控制语句

除了刚才介绍的while语句,Python也引入了其它语言常见的流程控制语法,并稍作变化。

阅读全文

Java并发编程之美

一、内容简介

并发编程相比 Java 中其他知识点的学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/ 高流量系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。

《Java并发编程之美》通过图文结合、通俗易懂的讲解方式帮助大家完成多线程并发编程从入门到实践的飞跃!《Java并发编程之美》分为三部分,第一部分为Java 并发编程基础篇,主要讲解Java 并发编程的基础知识、线程有关的知识和并发编程中的其他相关概念,这些知识在高级篇都会有所使用,掌握了本篇的内容,就为学习高级篇奠定了基础;第二部分为Java 并发编程高级篇,讲解了Java 并发包中核心组件的实现原理,让读者知其然,也知其所以然,熟练掌握本篇内容,对我们在日常开发高并发、高流量的系统时会大有裨益;第三部分为Java 并发编程实践篇,主要讲解并发组件的使用方法,以及在使用过程中容易遇到的问题和解决方法。

阅读全文

java多线程系列:通过对战游戏学习CyclicBarrier

CyclicBarrier是java.util.concurrent包下面的一个工具类,字面意思是可循环使用(Cyclic)的屏障(Barrier),通过它可以实现让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,所有被屏障拦截的线程才会继续执行。

这篇文章将介绍CyclicBarrier这个同步工具类的以下几点

  1. 通过案例分析
  2. 两种不同构造函数测试
  3. CyclicBarrier和CountDownLatch的区别
  4. await方法及源码分析。

阅读全文

《Python3.6官方文档》14 章

原文链接 译者:Carvendy

14 章 交互式输入编辑和历史替换

   一些版本的Python交互支持行级的输入编辑和历史替换,在Korn shell和GUN Bash shell里可以找到相似之处。这里使用的是GUN 读行库,它可以支持多种风格的编辑。这个库有自己的文档,在这里我们就不打算复述了。 阅读全文

源码分析Kafka之Producer

Kafka是一款很棒的消息系统,可以看看我之前写的 后端好书阅读与推荐来了解一下它的整体设计。今天我们就来深入了解一下它的实现细节(我fork了一份代码),首先关注Producer这一方。

要使用kafka首先要实例化一个KafkaProducer,需要有brokerIP、序列化器必要Properties以及acks(0、1、n)、compression、retries、batch.size非必要Properties,通过这个简单的接口可以控制Producer大部分行为,实例化后就可以调用send方法发送消息了。

核心实现是这个方法:

public Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback) {
    // intercept the record, which can be potentially modified; this method does not throw exceptions
    ProducerRecord<K, V> interceptedRecord = this.interceptors.onSend(record);//①
    return doSend(interceptedRecord, callback);//②
}

通过不同的模式可以实现发送即忘(忽略返回结果)、同步发送(获取返回的future对象,回调函数置为null)、异步发送(设置回调函数)三种消息模式。

阅读全文

return top