TCP三次握手四次挥手
概念
TCP报文首部格式介绍
源端口和目的端口(Source Port和Destination Port):分别占用2个字节,用于区别主机中的不同进程,而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一的确定一个TCP连接。
序号seq( ...
常见Bean映射工具分析评测
前言
工作中,我们经常需要将对象转换成不同的形式以适应不同的api,或者在不同业务层中传输对象而不同分层的对象存在不同的格式,因此我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。
进行这种转换除了手动编写大量的get/set代码,还可以使用一些方便的类库,常用的有apache的Be ...
ShardingSphere-JDBC原理与使用
ShardingSphere-JDBC是什么
ShardingSphere-JDBC(Sharding-JDBC)是一个分布式数据库中间件,定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为 ...
谈一谈 ConcurrentModificationException
引言
首先我们先看一下下面的代码:
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("1"); ...
Java为啥计算时间从1970-1-1开始
引言
Java中计算开始时间是从1970年1月1日开始的,但是为什么从1970年开始呢?其他语言也是从1970年1月1日开始么?
Java时间计算起点
我们都知道,在Java中执行下面的代码会打印Thu Jan 01 08:00:00 CST 1970(系统时区设置为UTC+08:00-也就是北 ...
MySQL LEFT JOIN 只取被关联表中一条数据
前言
最近遇到一个需求,需要查询被关联表中最新的一条数据,在此记录一下。
创建表和初始化数据
比如我有两个表,用户表(user)、用户登录记录表(user_login_log)。现在需要查询用户并同时带出他最近的登录记录。
下面是初始化SQL
CREATE TABLE `user` ( `id` ...
分库分表中间件选型和分库分表流程
引言
上一篇讲到了分库分表和分库分表的中间件,这篇就来讲讲怎么选择中间件和分库分表使用的流程。
中间件切入层介绍
如下图,从应用程序到数据大体分为以下五层。
编码层
在同一个项目中创建多个数据源,采用if else的方式,直接根据条件在代码中路由。Spring中有动态切换数据源的抽象类,具体 ...
分库分表
前言
关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。
MySQL单库数据量在 ...