Sequence

TCP参数调优详解

旧街凉风 提交于 2020-12-23 03:18:29
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到 SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目, 服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。 SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超 过系统规定的最大重传次数

美团Leaf分布式ID生成策略

别说谁变了你拦得住时间么 提交于 2020-12-22 23:51:16
ID生成原则 全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。 信息安全:如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号就更危险了,竞对可以直接知道我们一天的单量。所以在一些应用场景下,会需要ID无规则、不规则。 segment号段模式 重要字段说明:biz_tag用来区分业务,max_id表示该biz_tag目前所被分配的ID号段的最大值,step表示每次分配的号段长度。 test_tag在第一台Leaf机器上是1~1000的号段,当这个号段用完时,会去加载另一个长度为step=1000的号段,假设另外两台号段都没有更新,这个时候第一台机器新加载的号段就应该是3001~4000。同时数据库对应的biz_tag这条数据的max_id会从3000被更新成4000,更新号段的SQL语句如下: UPDATE table SET max_id=max_id+step WHERE biz_tag= xxx SELECT tag, max_id, step FROM table WHERE biz_tag =xxx 实时监控: 优点:

126篇殿堂级深度学习论文分类整理 从入门到应用

北战南征 提交于 2020-12-21 08:04:58
如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步。而作为新人,你的第一个问题或许是:“ 论文那么多,从哪一篇读起?” 本文将试图解决这个问题——文章标题本来是:“从入门到绝望,无止境的深度学习论文”。请诸位备好道具,开启头悬梁锥刺股的学霸姿势。 开个玩笑。 但对非科班出身的开发者而言,读论文的确可以成为一件很痛苦的事。但好消息来了——为避免初学者陷入迷途苦海,昵称为 songrotek 的学霸在 GitHub 发布了他整理的深度学习路线图, 分门别类梳理了新入门者最需要学习的 DL 论文,又按重要程度给每篇论文打上星星。 截至目前,这份 DL 论文路线图已在 GitHub 收获了近万颗星星好评,人气极高。雷锋网感到非常有必要对大家进行介绍。 闲话少说,该路线图根据以下四项原则而组织: 从大纲到细节 从经典到前沿 从一般到具体领域 关注最新研究突破 作者注:有许多论文很新但非常值得一读。 1 深度学习历史和基础 1.0 书籍 █[0] Bengio, Yoshua, Ian J. Goodfellow, and Aaron Courville. "Deep learning ." An MIT Press book. (2015). [pdf] (Ian Goodfellow 等大牛所著的教科书,乃深度学习圣经

C++11 标准库笔记1

≡放荡痞女 提交于 2020-12-19 11:01:32
STL(standard template library,标准模板库) 初始化:int values[] {1, 2, 3} 引入 range-based for 循环: for (decl: coll) { statement } // 打印某集合内所有元素,这里不用 & 会产生 copy template <typename T> void printElements (const T& coll) { for (const auto& elem : coll) { std::cout << elem << std::endl; } } 拿 lambda 当作 inline 函数使用 [] () -> double { return 42; } 4、命名空间(Namespace)std 当你采用不同的模块或程序库时,经常会出翔名称冲突现象,这是因为不同的模块和程序库可能对不同的对象使用相同的标识符。Namespace 正是用来解决这个问题的。所谓 namespace 是指标识符的某种可见范围。和 class 不同, namespace 具有可扩展开放性,可发生于任何源码文件上。因此你可以使用一个 namespace 来定义若干组件,而它们可散布于多个实质模块内。这类组件的典型例子就是 C++ 标准库,因为 C++ 标准库使用了一个 namespace. 5、通用工具 Pair

线上直播丨国际人工智能会议AAAI 2021论文北京预讲会,33场报告+31个Poster等你来...

安稳与你 提交于 2020-12-19 08:50:46
注册官网:https://hub.baai.ac.cn/activity/details/119 国际人工智能会议AAAI 2021论文北京预讲会 由中国中文信息学会青年工作委员会主办、智源社区承办,将于 12月19日 在北京北大科技园北领讲堂举办。 AAAI( The National Conference on Artificial Intelligence)会议是国际人工智能领域最高级别的学术会议之一,主要是为促进人工智能(AI)的研究和为人工智能研究人员、从业人员、科学家以及附属学科工程师之间提供一个良好的学术交流平台。正式会议将于明年召开。 本次预讲会对于部分国内研究人员录用的论文进行提前召集以及汇报预讲,旨在加强国内相关学者之间的交流,同时为不能参会的人员提供一次学术分享,从而促进我国人工智能研究的发展。 本届论文预讲会的形式分为特邀报告、口头报告和海报展示三类。此外,还安排了两场面向技术前沿的特邀报告,由本领域的两位优秀青年学者担任报告人。 本次报告会用于提前分享被顶级会议接受的论文,所有报告的著作权/版权由报告人所有,论文的版权/著作权遵从相关会议的约定,也提醒大家尊重作者和会议的相关权利。整个会议报告人和听众均自愿参与,主办方仅承担议程协调和会务组织工作。 时间形式 会议时间:2020年12月19日(周六)08:40-17:50 在线观看:微信扫码入群

【04期】分库分表之后,id 主键如何处理?

孤街浪徒 提交于 2020-12-19 04:54:08
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 6 分钟。 来自:java面试题精选 问: 分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个 全局唯一 的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用; 缺点就是单库生成 自增 id,要是高并发的话,就会有瓶颈的;如果你硬是要改进一下,那么就专门开一个服务出来,这个服务每次就拿到当前 id 最大值,然后自己递增几个 id,一次性返回一批 id,然后再把当前最大 id 值修改成递增几个 id 之后的一个值;但是 无论如何都是基于单个数据库 。 适合的场景 :你分库分表就俩原因,要不就是单库并发太高,要不就是单库数据量太大;除非是你 并发不高,但是数据量太大 导致的分库分表扩容,你可以用这个方案,因为可能每秒最高并发最多就几百,那么就走单独的一个库和表生成自增主键即可。 设置数据库

【原】无脑操作:Markdown可以这样玩

走远了吗. 提交于 2020-12-17 15:37:37
一、背景: Markdown是一种纯文本格式的标记语言。通过简单的标记语法,可以使普通文本内容具有一定的格式。因为语法简单明了、功能又比纯文本强大,所以很适合作为开发人员的书写工具。 Markdown的编辑器很多,常用的有:MarkdownPad、Typora、MarkdownEditor等。不过在最近的尝试中,发现了一个比较适合开发人员使用的书写工具VSCode。 二、安装: 在VSCode官网: https://code.visualstudio.com/#alt-downloads 进行下载,根据自己的操作系统版本选择对应的安装版本。VSCode的安装很简单,选择安装路径一路回车安装就好了。 注意:VSCode默认的自定义插件位置在C:\Users\用户名\.vscode\extensions 三、配置: VSCode好用的插件很多,列了如下这几个,其中Markdown工具和Markdown转PDF工具是搭建Markdown书写环境所必需的。 1、Chinese中文语言支持插件(安装后需要重启VSCode) 2、Material Theme主题插件 3、Material Icon Theme主题图标插件 4、Markdown Preview Enhanced插件 5、Markdown PDF插件 四、使用: 常用的Markdown语法 1 # 01、注释 2 3 - 通用写法

C.Bracket Sequences Concatenation Problem

半城伤御伤魂 提交于 2020-12-17 07:53:53
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output A bracket sequence is a string containing only characters "(" and ")". A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example, bracket sequences "()()", "(())" are regular (the resulting expressions are: "(1)+(1)", "((1+1)+1)"), and ")(" and "(" are not. You are given n n bracket sequences s 1 , s 2 , … , s n s1,s2,…,sn. Calculate the

Bracket Sequences Concatenation Problem括号序列拼接问题(栈+map+思维)

微笑、不失礼 提交于 2020-12-17 01:49:42
A bracket(括号) sequence is a string containing only characters "(" and ")".A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example, bracket sequences "()()", "(())" are regular (the resulting expressions are: "(1)+(1)", "((1+1)+1)"), and ")(" and "(" are not. You are given n bracket sequences s1,s2,…,sn. Calculate the number of pairs i,j(1≤i,j≤n) such that the bracket sequence si+sj is a regular bracket sequence. Operation + means concatenation i

SnowFlakeId 分布式雪花id算法

半城伤御伤魂 提交于 2020-12-16 11:33:38
package com.jn.baseservice.utils; import com.jn.baseservice.common.Number; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; @Log4j2 @Getter @Setter public class SnowFlake { // 起始的时间戳 private final static long START_TIMESTAMP = 1555894860007l ; // 每一部分占用的位数,就三个 private final static long SEQUENCE_BIT = 12; // 序列号占用的位数 private final static long MACHINE_BIT = 5; // 机器标识占用的位数 private final static long DATA_CENTER_BIT = 5; // 数据中心占用的位数 // 每一部分最大值 private final static long