Servlet
Servlet
Servlet 是用于扩展和增强Web服务器的Java平台技术。
servlet提供了一种基于组件的、独立于平台的方法来构建基于web的应用程序,而不受CGI程序的性能限制。与专有的服务器扩展机制(如Netscape服务器API或Apache模块)不同,servlet是独立于服务器和平台的。这使您可以自由地为您的服务器、平台和工具选择“最佳品种”策略。
servlet可...
2018-09-05 03:45:07 |
Protocol
Tomcat
Tomcat
Apache Tomcat® 是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
由于Tomcat本身也内含了一个HTTP...
2018-09-05 03:45:07 |
Container
Distributed ID
需求
几乎所有的业务系统,都有生成一个唯一记录标识的需求。
这就引出了记录标识生成(也就是上文提到的三个XXX-id)的两大核心需求:
全局唯一
趋势有序
这也是本文要讨论的核心问题:如何高效生成趋势有序的全局唯一ID。
UUID
策略
UUID/GUID 生成的唯一标识。
优缺点
优点
本地调用,全局唯一。
缺...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-05-系统时钟,高并发下的时间优化
高并发下的时间戳优化
/**
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the L...
2018-09-05 00:53:10 |
Distributed
Distributed ID-04-SnowFlake
概述
分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。
有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。
而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassand...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-03-Random
实现方式
package com.github.houbb.heaven.util.id.impl;
import com.github.houbb.heaven.annotation.ThreadSafe;
import com.github.houbb.heaven.util.id.Id;
import com.github.houbb.heaven.util.util.DateUt...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-02-UUID
UUID
基本实现
@Override
public String genId() {
return UUID.randomUUID().toString()
.replaceAll(PunctuationConst.MIDDLE_LINE, PunctuationConst.EMPTY);
}
测试代码
System.out.println(new...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-01-Overview
分布式 ID 生成的需求
不依赖数据库。
详细理解原理
(1)写文件。提前取1000个,然后将下一个值写入文件。
(2)预取+时间戳+线程好+机器码
时间时钟怎么保持一致?
id 递增的线程安全,持久化。
基础知识
网卡 线程 并发安全 持久化 (如果递增)
位运算,进制转换。
常见参考实现
UUID
GUID
timestampe+randomNum
snowf...
2018-09-05 00:53:10 |
Distributed