Sequence

SnowFlake 分布式id生成

人盡茶涼 提交于 2020-08-13 06:47:45
/** * * Twitter_Snowflake<br> * SnowFlake的结构如下(每部分用-分开):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br> * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0<br> * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。 * 41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69<br> * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId<br> * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号<br> * 加起来刚好64位,为一个Long型。<br> * SnowFlake的优点是,整体上按照时间自增排序

TCP协议“三次握手”与“四次挥手”详解(上)

主宰稳场 提交于 2020-08-13 06:43:20
  在使用TCP协议进行数据的传输之前,客户端与服务器端需要建立TCP Connection,即建立连接,之后两端才能进行数据的传输。   下面堆TCP连接“三次握手”的过程进行说明。 1、相关概念   首先,我们需要了解TCP数据报的首部的结构(TCP数据报包括首部以及数据报部分),如下图: 其中需要注意的字段有: (1)序号(sequence number):seq 序号,占32位4个字节。从TCP源端向目的端发送的字节流数据,发起方发送数据报文时对每一个字节进行编号标记,每一个字节都会有一个编号(0 到 2 32 -1)。给报文每个字节编上序号后,需要给报文指派一个序号seq,报文数据段的第一个字节的编号值,就是这段报文TCP首部序号seq的值。 (2)确认号(acknowledgement number):ack 序号,占32位4个字节。表示期待收到对方下一个报文段的序号,那么第一次收到的报文段最后一个字节的编号+1即为确认号。比如第一段报文seq=1(报文第一个字节编号1),报文长度是100,即报文最后一个字节编号为100。确认端接收到发起端发送的报文后,返回给发起端的响应TCP报文中,ACK=1,ack=101,表示发起端发送的1-100编号的字节数据已经收到,希望发起端下一个报文从101编号的字节开始发送。   注意,只有TCP报文的ACK标志位为1时

2020杭电多校第四场 Equal Sentences

我的梦境 提交于 2020-08-13 06:09:01
第四题:Equal Sentences 题目: Sometimes, changing the order of the words in a sentence doesn’t influence understanding. For example, if we change “what time is it”, into “what time it is”; or change “orz zhang three ak world final”, into “zhang orz three world ak final”, the meaning of the whole sentence doesn’t change a lot, and most people can also understand the changed sentences well. Formally, we define a sentence as a sequence of words. Two sentences S and T are almost-equal if the two conditions holds: The multiset of the words in S is the same as the multiset of the words in T. For a word α,

一文彻底搞懂python文件读写

独自空忆成欢 提交于 2020-08-12 14:03:12
Python文件读写 一,I/O操作 I/O在计算机中是指Input/Output,也就是Stream(流)的输入和输出。这里的输入和输出是相对于内存来说的,Input Stream(输入流)是指数据从外(磁盘、网络)流进内存,Output Stream是数据从内存流出到外面(磁盘、网络)。程序运行时,数据都是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方(通常是磁盘、网络操作)就需要IO接口。 操作系统是个通用的软件程序,其通用目的如下 : 硬件驱动 进程管理 内存管理 网络管理 安全管理 I/O管理 二,文件读写原理及操作步骤 1. 文件读写实现原理 文件读写就是一种常见的IO操作。那么根据上面的描述,可以推断python也应该封装操作系统的底层接口,直接提供了文件读写相关的操作方法。 我们将数据写入文件时,操作系统不会立刻把数据写入磁盘,而是先把数据放到内存缓冲区异步写入磁盘。当调用close方法时,操作系统会保证把没有写入磁盘的数据全部写到磁盘上,否则可能会丢失数据,所以,* 文件读写操作完成后,应该及时关闭* 。 2. 文件读写操作步骤 1)打开文件,获取文件描述符 2)操作文件描述符–读/写 3)关闭文件 三,python文件打开模式 文件打开模式 描述 r 以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错 w 以只写模式打开文件

Greenplum中定义数据库对象之创建与管理序列、索引以及视图

时光怂恿深爱的人放手 提交于 2020-08-12 09:38:41
创建与管理序列 序列常用于在新增记录时自动生成唯一标识符,序列的管理包括创建序列、使用序列、修改序列以及删除序列。 创建序列 使用CREATESEQUENCE命令来创建并初始化一个给定名称的单列序列表; devdw=# \h CREATE SEQUENCE 查看创建序列的帮助 Command: CREATE SEQUENCE Description: define a new sequence generator Syntax: CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table.column | NONE } ] devdw=# \ds 通过 \ds 命令查看当前数据库中存在的序列 No relations found. devdw=# create sequence myseq start with 100; 创建名为 myseq 的序列 CREATE SEQUENCE devdw=# \ds

php经典算法题2: 约瑟夫环问题

女生的网名这么多〃 提交于 2020-08-12 06:41:17
0x00 哪只猴子可以当大王? 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,再把它踢出去……,如此不停地进行下去,直到最后只剩下一只猴子为止,那只猴子就可以当大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。 通常使用数组和线性表2种方法来处理。 使用数组 有2种处理过程: 构建一个n个元素的数组,按顺序进行剔除,超过末尾则从头开始,在每次删除元素后重置一下数组。 构建一个n个元素的数组,不从头开始,但将不剔除的元素放至最后,直至只剩一个元素。 线性表应用 每个猴子出列后,剩下的猴子又组成了另一个子问题。只是他们的编号变化了。第一个出列的猴子肯定是a[1] = m mod n,它踢出后剩下的猴子是a[1]+1,a[1]+2,…,n,1,2,…a[1]-2,a[1]-1,对应的新编号是1,2,3…n-1。设此时某个猴子的新编号是i,它原来的编号就是(i+a[1])%n。于是,这便形成了一个递归问题。假如知道了这个子问题(n-1个猴子)的解是x,那么原问题(n个猴子)的解便是:(x+m%n)%n=(x+m)%n。 代码 //构建一个n个元素的数组,按顺序进行剔除,超过末尾则从头开始,在每次删除元素后重置一下数组 function monkeyKing_array1(int $n, int $m){

斐波那契数列的5种python写法

不打扰是莪最后的温柔 提交于 2020-08-12 05:35:43
斐波那契数列的5种python写法 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家 列昂纳多·斐波那契 (Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) 斐波那契数列,难点在于算法,还有如果变成生成器,generator,就要用for循环去遍历可迭代的generator 第一种 递归法 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_recur(n-1) + fib_recur(n-2) for i in range(1, 20): print(fib_recur(i), end=' ') 写法最简洁,但是效率最低,会出现大量的重复计算,时间复杂度O(1.618^n),而且最深度1000 第二种 递推法 def fib_loop(n): a, b = 0, 1 for i in range(n + 1): a, b = b, a + b return a for i in range(20): print(fib

oracle 12.2.0.1 使用 sqlplus 搭建 active dataguard

本小妞迷上赌 提交于 2020-08-12 04:07:24
oracle 12.2.0.1 使用 sqlplus 搭建 active dataguard 数据库人生 2018-07-08 10:12:27 492 收藏 分类专栏: # oracle ha data guard 文章标签: active dataguard dataguard duplicate db_name db_unique_name 版权 postgresql ha patroni patroni 数据库人生 ¥9.90 os: centos 7.4 database:12.2.0.1 + dbf 本次是以 oracle database 12.2.0.1 + dbf 的形式部署的,后面会记录 rac + asm 的形式。 任何时候都要说下三种模式: 最大保护:maximize protection 最高性能:maximize performance 最高可用:maximize availability alter database set standby to maximize protection; alter database set standby to maximize performance; atler database set standby to maximize availability; 规划如下 maser slave $ORACLE_SID

【Paper】CTC Introduce

帅比萌擦擦* 提交于 2020-08-12 02:22:09
Connectionist Temporal Classification, an algorithm used to train deep neural networks in speech recognition, handwriting recognition and other sequence problems. 1. Problem don’t know the characters in the transcript align to the audio when having a dataset of audio clips and corresponding transcripts. people’s rates of speech vary. hand-align takes lots of time. Speech recognition, handwriting recognition from images, sequences of pen strokes, action labelling in videos. 2. Question Define when mapping input sequences X = [ x 1 , x 2 , … , x T ] X = [x_1, x_2, \ldots, x_T] X = [ x 1 ​ , x 2

Socket知识汇总 | 16-TCP数据报结构以及三次握手(图解)

无人久伴 提交于 2020-08-12 00:54:17
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。 客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。 TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)。可以形象的比喻为下面的对话: [Shake 1] 套接字A:“你好,套接字B,我这里有数据要传送给你,建立连接吧。” [Shake 2] 套接字B:“好的,我这边已准备就绪。” [Shake 3] 套接字A:“谢谢你受理我的请求。” 一、TCP数据报结构 TCP数据报的结构: 带阴影的几个字段需要重点说明一下: (1) 序号 :Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。 (2) 确认号 :Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。 (3) 标志位 :每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下: URG:紧急指针(urgent pointer)有效