- 博客(157)
- 资源 (11)
- 收藏
- 关注
原创 IIBA BABOK 历史
Version 1.0 and 1.4 published 2005. Version 1.6 Draft published 2006. Version 1.6 Final published 2008. Version 2.0published 2009. Version 3.0 published 2015.BABOK在2005年发布1.0和1.4版本。 在2006年发布1.6版草稿。在2008年发布1.6版定稿。在2009年发布2.0版本,在2015年发布3.0版本。IIBA ® w...
2021-02-03 09:42:15
369
转载 软件测试模型
软件测试若使用经典的V模型阶段可以分为单元测试集成测试系统测试V模型是最具有代表意义的测试模型。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系 。从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段...
2018-07-11 15:03:10
415
原创 RocketMQ
在ConsumerOffsetManager中,存储了topic@group 对应的每一个MessageQueue 的offset信息。 【topic@group ->(queueId,offset)】内存结果如下,采用fastjson进行序列化。 private ConcurrentHashMap<String/* topic@group */, ConcurrentHashMa...
2018-03-27 10:04:19
309
原创 Netty 4.1.X源代码 再读1 Future剖析
在Apache Mina 中定义了Future操作。 Netty4.1.x 对Future操作进行的重新设计。io.netty.util.concurrent 包中定义了public interface Future<V> extends java.util.concurrent.Future<V> 接口,该接口实现JDK Future 接口。io.netty.uti...
2018-03-27 10:03:39
298
原创 RocketMQ架构
同一个Topic可以在多个Broker中创建,同一个Broker中的某一个Topic可以拥有多个队列。那么如何保证消息在队列中顺序呢?AllocateMessageQueueStrategy 消费者均衡 MessageQueueSelector 生产者均衡 topicRouteData2TopicPublishInfo在RocketMQ 中在 org.apache.roc...
2018-03-27 10:02:40
687
原创 KafkaConsumer
KafkaConsumer 可以从Kafka集群中消费记录。KafkaConsumer 客户端明确的处理Kafka Brokers的失败,并且明确的在Kafka集群中获取topic分区信息。KafkaConsumer 同时与Broker进行交互,并且允许consumer中的KafkaConsumer实例来负载均衡的消费记录。KafkaConsumer 保持与Kafka 集群中的broker TCP...
2018-03-27 10:02:15
605
翻译 Kafka Message Dilivery Semantics
在Apache Kafka 中确保哪些消息投递语义:为了高效,Apache Kafka 默认确保 at-least-once 投递语义,同时允许使用者通过Producer 取消重试 同时在批量处理消息前提交Offset来实现at-most-once 语义。但是Exactly-once 投递语义需要目的存储系统合作来实现。但是Kafka 提供OffSet 可以使使用者简单容易的来实现Exact...
2018-03-27 10:01:57
275
原创 Yahoo pulsar -1 Producer send和Consumer receive 过程源码剖析
1、同步发送消息 MessageId send(byte[] message) throws PulsarClientException; private static final AtomicLongFieldUpdater<ProducerImpl> msgIdGeneratorUpdater = AtomicLongFieldUpdater .new...
2018-03-27 10:01:14
669
原创 Netty ServerBootstrap bind和acceptor 事件源代码剖析
流程1 :在ServerBootstrap(AbstractBootstrap<B,C>).bind(int) 绑定端口。1、ServerBootstrap(AbstractBootstrap<B,C>).initAndRegister() 创建一个ServerSocketChannel ,并注册到EventLoop中。 在init时,主要通过工厂方法创建一个Serve...
2018-03-27 10:00:42
937
原创 Netty Write
ChannelOutboundInvoker 接口中定义了写出数据的方法。 每一个方法都返回一个Future引用。1、write 方法。 直接把数据写入的OutBuffer中ChannelFuture write(Object msg)Request to write a message via this ChannelHandlerContext through the ChannelPipel...
2018-03-27 10:00:26
499
原创 翻一翻spring历史版本
Spring 0.9 版本,有记录的第一个版本Changes in version 0.9 (25.6.2003)----------------------------------* first public release since the version that came with the book "Expert One-on-One J2EE Design and Develop...
2018-03-27 09:59:55
1683
原创 apache mina: 架构
在2004年java发布NIO1.0版本,这个版本已经过去了十年了。但是java领域中的网络框架比较成熟和流行的主要还是出自韩国作者的apache mina 和jboss netty.apache mina作为reactor模式的java实践可以作为学习reactor模式最合适的源代码。apache mina 架构中,整个架构非常清晰。这里我们主要从服务器端入手来学习整个apache mina...
2018-03-27 09:59:12
549
原创 Memcached namespaces
NamespacingMemcached does not natively support namespaces or tags.It's difficult to support this natively as you cannot atomically expire the namespaces across all of your servers without adding quite...
2017-04-22 22:02:10
425
原创 Redis Data Layout
0Redis Data LayoutTo better understand the data layout, it helps to identify the main "domain" objects inside RetwisJ.In its current form, RetwisJ allows users to be created, to postmessages, to follo...
2017-04-22 21:58:52
444
原创 Apache mina: IoSession.write(Object msg)剖析
在apache mina中通过IoSession 写入数据,返回一个Future可以获取写入数据的结果。NioSocketSession(AbstractIoSession).write(Object) NioSocketSession(AbstractIoSession).write(Object, SocketAddress) .IoSession通过FilterChain
2017-04-22 21:58:14
2963
原创 Armeria 小试牛刀
HelloService.thrift 定义服务接口namespace java com.example.thriftservice HelloService { string hello(1:string name)}使用thrift-0.9.3.exe 工具,命令:thrift-0.9.3 -r --gen java HelloService.thrift 在当前文件夹g
2017-04-22 21:57:02
3005
原创 Apache Mina 源码再读6 Executor
Do I need to make my IoHandler thread-safe?It depends on your implementation. If you access the resource which is shared across multiple sessions, you have to make it thread-safe. If the resourc
2017-04-07 09:48:59
436
原创 Apache Mina 源码再读5 IoSession.close() 源码剖析
Apache Mina IoSession.close(immediately =true) 关闭流程小结:1 、当线程调用IoSession.close(immediately =true) 时,会创建一个CLOSE_REQUEST 写请求。并返回一个CloseFuture 异步操作2、当Processor在处理IoSesion写数据过程中,会把队列中所有排队的消息写入操作系统缓冲区。3、当轮询到最后一个Close_Future 请求时,此时,等待写入的消息都已经写入到缓冲区。此时,IoS
2017-04-07 09:48:40
3467
原创 Apache Mina 源码再读4 IoSession.write()源码剖析
Apache Mina IoSession.write(Object message) 写出数据流程小结:1、Processor 线程首选轮询newSessions中每一个IoSession. 然后,把IoSession 放到IoService 的managedSessions中进行管理追踪。2、当IoSession.write(Object message) 调用时,会创建一个WriteFuture 对象,并创建一个WriteRequest 对象,把这个对象增加到每一个IoSession关联的Wr
2017-04-07 09:48:22
4398
1
原创 Apache mina 源码再读3 I/O Service 源码剖析
Base interface for all IoAcceptor and IoConnector that provide I/O service and manage IoSession.public interface IoService { }IoAcceptor 和IoConnector 的基础接口IoService 来提供I/O服务和管理IoSessi
2017-04-07 09:48:04
344
原创 Apache Mina 源码再读2 IoSession创建过程源代码剖析
在调用bind()函数后,AcceptorOperationFuture 被注册到AbstractPollingIoAcceptor 类中的registerQueue 队列。在AbstractPollingIoAcceptor中存在IoProcessor 类。/** * An internal interface to represent an 'I/O processor' th
2017-04-07 09:47:43
496
原创 Apache Mina 源码再读 1 Bind过程以及DefaultIoFuture源码
1 、bind 事件 在服务器端调用public final void bind(SocketAddress... addresses) throws IOException 方法绑定本地端口时,仔细看看,Apache Mina 在bind()本地端口做了哪些事情? protected final Set bindInternal(List localAddresses) t
2017-04-07 09:47:17
513
原创 Guava ListenableFuture 小试牛刀
参考链接:Guava ListenableFuturehttps://github.com/google/guava/wiki/ListenableFutureExplained
2017-03-28 22:51:12
495
原创 Netty Future 小试牛刀
执行异步任务,执行一个轮询任务和当完成时任务时,获得一个通知是一个非常普通和应该非常容易事情。当JDK中java.util.concurrent.Future 第一次出现时,我们的兴奋没有持续的太久。因为我们必须阻塞当前线程,才能当异步动作完成时获得通知。在异步编程中,我们应该指定在异步操作完成时应该执行什么,而不是等待结果的到来。在Netty中io.netty.concurrent.Future 是JDK Future的一个子类。可以Future 中添加Listener ,当Future异步动作
2017-03-28 22:27:40
684
原创 Trane.io Future 小试牛刀
在最近工作中,遇到使用Apache mina 来模拟多个客户端登录期货交易系统,进行买卖交易。但是,在Code的过程中,发现自己的操作全部都是异步的。我采用异步+定时轮询的方式。但是,感觉这种方式不是最优解。然后,想到Apache Mina本身也是异步操作。以前,所有代码全部都是同步操作,对于异步了解比较少。所有对java语言本身对异步操作进行再次学习。 在学习过程中,了解到T
2017-03-27 22:37:06
370
原创 java中使用javascript Rhino 引擎
Rhino is a JavaScript engine written fully in Java and managed by the Mozilla Foundation as open source software. It is separate from the SpiderMonkey engine, which is also developed by Mozilla, but w
2017-03-27 22:04:01
751
原创 Nashorn 引擎中对javascript Object的实现
public abstract class ScriptObject{ /** __proto__ special property name */ public static final String PROTO_PROPERTY_NAME = "__proto__"; /** Map to property information and a
2017-03-27 22:03:07
758
1
原创 java中使用javascript Nashorn引擎
在混合语言编程中,就是语言与语言间的交互。1 在java中调用javascript 函数javascript文件:nashorn1.js//定义javascript函数var fun1 = function(name) { print('Hi there from Javascript, ' + name); return "greetings from
2017-03-27 22:02:19
3724
原创 Mina分享
Apache Mina是什么?Apache MINA is a network application framework which helps users develop high performance and high scalability network applications Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。我
2017-03-23 13:20:07
760
原创 使用RocketMQ的客户端使用
RocketMQ提供了强大的消息系统功能,RocketMQ提供了java客户端,可以提供使用。下面代码来自RocketMQ4.0.0中的example代码。Producer消息生产端:public class Producer { public static void main(String[] args) { // 创建一个Produer Group DefaultMQ
2017-03-23 10:49:25
7826
原创 内存映射文件
The primary benefit of memory mapping a file is increasing I/O performance, especially when used on large files. memery mapped file 主要的优势是提供I/O的效率,尤其在处理大文件上面。Most modern operating system
2017-03-22 21:14:44
616
原创 apache kafka log 存储格式
Log FormatA log for a topic named "my_topic" with two partitions consists of two directories (namely my_topic_0 and my_topic_1) populated with data files containing the messages for that top
2017-03-22 21:13:48
837
翻译 Apache Kafka Core Concept
The ProducerThe Producer Load balacingproducer 直接发送数据到broker中,这个broker是分区的主服务。 为了帮助producer 可以直接发送数据到broker,kafka中的节点可以在任何时间来回答一个发送请求中哪些server是存在的,并且主题的分区的主server在哪里。这样,kafka中的每一个节点都可以直接回答该请求。p
2017-03-05 17:29:32
375
原创 Apache Kafka Introduction
Topics and Logs首先我们深入Kafka为一串记录提供的核心抽象概念:TopicTopic是一个record发行的类型或者流入名称。Kafka中topic经常有多高订阅者。同时,topic可以拥有零个、一个或者多个消费者来订阅这个topic来消费record.每一个topic,Kafka集群中保持着一个分区的log 如下图所示:每一个partition
2017-03-05 10:30:20
367
翻译 RocketMQ Core Concept
Producer生产者是在应用程序中发送消息给broker的。 在RocketMQ中提供多种语义的消息发送:synchronous,asynchronous和one way.Producer Group具有相同规则的Producers被聚合在一起。一个producer在开启事务消息后,随后宕机。在同一个producer group中的不同的实例可以被broker
2017-03-04 19:09:20
703
翻译 Socket .i0 介绍
在Node.js第一次出现不久,Socket.io第一个版本也出现啦。在此之前,很长一个时间段,我一直子寻找一个框架可以容易的是我能够从服务器端推送数据到客户端,甚至尝试了从服务器端的javascript的途径。在同时,主要的注意力集中于一个类似于在标准化进程中的websocket api 上面。我很幸运的收到很多反馈在会议上,包括node.js的创造者。这使我意识到这件事情的重要性。So
2017-02-18 16:14:57
362
原创 MyBatis 初探
在使用MyBatis时,使用XML文件来构建SqlSessionFactory类。SqlSessionFactory 是由SqlSessionFactoryBuilder类来创建。SqlSessionFactoryBuilder.build(Configuration) SqlSessionFactoryBuilder.build(InputStream, String, Propert
2016-11-04 17:26:31
574
原创 《Pro Java 7 NIO.2 》 The Asychronous Channel API 部分翻译
Groupsthe asynchronous API introduces a class named AsynchronousChannelGroup, which presents the concept of an asynchronous channel group, in which each asynchronous channel belongs to a c
2016-08-12 16:11:15
532
原创 Java AIO 认识
在基本熟悉了JDK7中异步IO的关键类,以后有助于我们深入学习。在java语言和平台中,存在广泛使用的网络开源库屈指可数。netty 和mina出自韩国人之手,netty和mina主要使用select网络模型,主要使用jdk中的nio类库。netty 和mina在各个行业被广泛使用。 netty 和mina 以及 java nio本身都是对reactor 模式的实现。在操作系统层面都是通过select函数来实现。在windows操作系统中,出现I/o Completion port 后,被广泛使用来提供网络
2016-08-12 16:08:00
645
PRINCE2如何完善PMBOK指南和您的PMP证书
2018-04-28
PMbok6 新增敏捷 映射
2018-04-24
Scalable IO in Java -Doug Lea
2015-07-10
java nio and reactor
2015-07-10
flex air案例
2011-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人