Dubbo分析之心跳设计

2020-05-09
阅读 8 分钟
4.2k
前言 谈到RPC肯定绕不开TCP通信,而主流的RPC框架都依赖于Netty等通信框架,这时候我们还要考虑是使用长连接还是短连接: 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接;优点就是无需管理连接,无需保活连接; 长连接:每次通信结束不关闭连接,连接可以复用,保证了性能;缺点就是连接需要统一管理,并且...

Kubernetes服务篇

2020-02-12
阅读 21 分钟
2.7k
上文介绍了Kubernetes副本机制,正是因为副本机制你的部署能自动保待运行,并且保持健康,无须任何手动干预;本文继续介绍kubernetes的另一个强大的功能服务,在客户端和pod之间提供一个服务层,提供了单一的接入点,更加方便客户端使用pod。

Kubernetes 副本机制篇

2019-12-25
阅读 19 分钟
6.5k
在上文Kubernetes Pod操作篇介绍了kubernetes的核心组件Pod,本文继续介绍kubernetes的副本机制,正是因为副本机制你的部署能自动保待运行,并且保持健康,无须任何手动干预。

Kubernetes Pod操作篇

2019-12-19
阅读 8 分钟
3.3k
在上文Kubernetes入门篇中对kubernetes有一个初步的介绍,本文继续介绍kubernetes的核心组件Pod,当然还是以实际操作为主;另外说明一点的是本系列是本人的学习笔记。

Kubernetes入门篇

2019-12-17
阅读 11 分钟
2.8k
随着越来越多的公司使用Kubernetes作为它们运行应用的最佳平台,Kubernetes帮助企业标准化了无论是云端部署还是内部部署的应用交付方式;作为研发人员我们还是很有必要去了解其使用方式,了解其内部机制,接下来的一段时间准备通过阅读<Kubernetes in Action>来更多的了解Kubernetes。

Mybatis分页那点事

2019-12-10
阅读 7 分钟
6.2k
分页可以说是非常常见的一个功能,大部分主流的数据库都提供了物理分页方式,比如Mysql的limit关键字,Oracle的ROWNUM关键字等;Mybatis作为一个ORM框架,也提供了分页功能,接下来详细介绍Mybatis的分页功能。

Mybatis之插件分析

2019-12-06
阅读 6 分钟
1.9k
Mybatis提供了强大的扩展功能,也就是Mybatis的插件(plugins)功能;MyBatis允许你在已映射语句执行过程中的某一点进行拦截调用,拦截之后可以对已有方法添加一些定制化的功能,比如常见的分页功能;试图修改或重写已有方法的行为的时候,你很可能在破坏MyBatis 的核心模块,这些都是更低层的类和方法,所以使用插件的...

如何设计一个本地缓存

2019-11-23
阅读 5 分钟
1.8k
最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。

如何设计一个安全的对外接口

2019-11-20
阅读 3 分钟
1.8k
最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。

Mybatis之缓存分析

2019-11-18
阅读 12 分钟
1.5k
缓存可以说是提升性能的标配,操作系统,cpu,各种各样的框架我们总能看到缓存的身影,当然Mybatis也不例外,Mybatis提供了强大的缓存功能,分别有一级缓存和二级缓存,接下来我们来做一一介绍。

Mybatis之结果处理器

2019-11-13
阅读 6 分钟
6k
在上文Mybatis之方法如何映射到XML中讲到需要实例化SqlCommand和MethodSignature两个类,在MethodSignature初始化的时候有一个resultHandlerIndex的参数用来指定是否设置了ResultHandler参数,本文将重点ResultHandler如何使用,分析如何触发的以及如何自定义结果处理器。

Mybatis之类型处理器

2019-11-12
阅读 9 分钟
2.4k
上文Mybatis之XML如何映射到方法中讲到了类型处理器,分别用在两个地方设置参数到数据库和从结果集中取出数据,根据不同的数据类型从类型注册器里面获取具体的类型处理器,分别进行处理;本文将重点介绍一下类型处理器,注册器,如何处理数据以及如何扩展。

Mybatis之对象工厂

2019-11-11
阅读 6 分钟
2.2k
在上文Mybatis之XML如何映射到方法中讲到结果映射的时候,需要创建好对象,然后再给对象的属性赋值,而创建对象就用到了Mybatis的内置的对象工厂类DefaultObjectFactory,当然Mybatis也提供了扩展机制,用户可以实现自己的对象工厂。

Mybatis之XML如何映射到方法

2019-11-10
阅读 9 分钟
5.1k
上文Mybatis之方法如何映射到XML中介绍了Mybatis是如何将方法进行分拆出方法名映射到statementID,参数如何解析成xml中sql所需要的,以及返回类型的处理;本文将从XML端来看是如何同方法端进行映射的。

Mybatis之方法如何映射到XML

2019-11-09
阅读 8 分钟
3.2k
上文Mybatis之Mapper接口如何执行SQL中了解到,Mapper通过动态代理的方式执行SQL,但是并没有详细的介绍方法是如何做映射的,方法包括:方法名,返回值,参数等;这些都是如何同xxMapper.xml进行关联的。

Mybatis之Mapper接口如何执行SQL

2019-11-08
阅读 7 分钟
5.1k
在众多的ORM框架中,Mybatis现在越来越多的被互联网公司所使用;主要原因还是因为Mybatis使用简单,操作灵活;本系列准备通过提问的方式来从源码层来更加深入的了解Mybatis。

如何快速安全的插入千万条数据

2019-10-15
阅读 6 分钟
2.6k
因为告诉文件有千万条,同时每条记录大概在20个字段左右,所以可以大致估算一下整个订单文件的大小,方法也很简单使用FileWriter往文件中插入一千万条数据,查看文件大小,经测试大概在1.5G左右;

为什么Netty的FastThreadLocal速度快

2019-10-14
阅读 9 分钟
1.5k
最近在看netty源码的时候发现了一个叫FastThreadLocal的类,jdk本身自带了ThreadLocal类,所以可以大致想到此类比jdk自带的类速度更快,主要快在什么地方,以及为什么速度更快,下面做一个简单的分析;

从SpringBoot整合Mybatis分析自动配置

2019-07-02
阅读 15 分钟
4.9k
SpringBoot凭借"约定大于配置"的理念,已经成为最流行的web开发框架,所以有必须对其进行深入的了解;本文通过整合Mybatis类来分析SpringBoot提供的自动配置(AutoConfigure)功能,在此之前首先看一个整合Mybatis的实例。

记一次升级Oracle驱动引发的死锁

2019-04-24
阅读 6 分钟
4.1k
近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了2次“死锁(deadlock)”的问题,部分关键日志如下:

谈谈Java任务的并行处理

2019-04-22
阅读 6 分钟
2.6k
谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度;为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分利用cpu资源;如果站的更高一点来看,我们每台机器都可以是一个处理节点,多台机器并行处理;并行的处理方式可以说无处不在,本文主要来谈谈...

关于零拷贝的一点认识

2019-04-10
阅读 7 分钟
2.3k
从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在java nio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。

从RocketMQ看长轮询(Long Polling)

2019-03-06
阅读 13 分钟
6.3k
消息队列一般在消费端都会提供push和pull两种模式,RocketMQ同样实现了这两种模式,分别提供了两个实现类:DefaultMQPushConsumer和DefaultMQPullConsumer;两种方式各有优势:push模式:推送模式,即服务端有数据之后立马推送消息给客户端,需要客户端和服务器建立长连接,实时性很高,对客户端来说也简单,接收处理消...

RocketMQ生产者消息篇

2019-02-21
阅读 25 分钟
7.4k
系列文章 RocketMQ入门篇RocketMQ生产者流程篇RocketMQ生产者消息篇 前言 上文RocketMQ生产者流程篇中详细介绍了生产者发送消息的流程,本文将重点介绍发送消息的通信模式以及各种不同的消息类型。 通信模式 RocketMQ提供了三种通讯模式,分别是:同步,异步和单向;可以查看内部类CommunicationMode: {代码...} 下面分...

RocketMQ生产者流程篇

2019-02-15
阅读 19 分钟
9.7k
生产者向消息队列里面写入消息,不同的业务场景会采用不同的写入策略,比如:同步发送,异步发送,延迟发送,事务消息等;本文首先从分析生产者发送消息的流程开始,然后再来介绍各种发送消息的策略。

RocketMQ入门篇

2019-01-10
阅读 18 分钟
29.6k
可以理解为是消息队列的协调者,Broker向它注册路由信息,同时Client向其获取路由信息,如果使用过Zookeeper,就比较容易理解了,但是功能比Zookeeper弱;NameServer本身是没有状态的,并且多个NameServer直接并没有通信,可以横向扩展多台,Broker会和每一台NameServer建立长连接;

Java SPI机制分析

2018-12-26
阅读 10 分钟
2.5k
SPI全称为(Service Provider Interface) ,是JDK内置的一种服务提供发现机制;主要被框架的开发人员使用,比如java.sql.Driver接口,数据库厂商实现此接口即可,当然要想让系统知道具体实现类的存在,还需要使用固定的存放规则,需要在classpath下的META-INF/services/目录里创建一个以服务接口命名的文件,这个文件里的...

Dubbo分析之Registry层

2018-12-21
阅读 19 分钟
4.1k
紧接上文Dubbo分析之Cluster层,本文继续分析dubbo的register层;此层封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory, Registry, RegistryService;

Dubbo分析之Cluster层

2018-11-21
阅读 16 分钟
4.2k
紧接上文Dubbo分析之Protocol层,本文继续分析dubbo的cluster层,此层封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster, Directory, Router, LoadBalance;

Dubbo分析之Protocol层

2018-11-02
阅读 17 分钟
6.3k
紧接着上文Dubbo分析之Exchange层,继续分析protocol远程调用层,官方介绍:封装RPC调用,以Invocation, Result为中心,扩展接口为Protocol, Invoker, Exporter;