last

MySQL主键设计

会有一股神秘感。 提交于 2019-11-28 13:36:34
目录 MySQL主键设计原则 主键设计的常用方案 自增ID UUID 自定义序列表 如何解决水平分片的需求 UUID 独立的序列库 复合标识符 带分库策略的自定义序列表 主键的必要性 主键的数据类型选择 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录。 MySQL主键设计原则 MySQL主键应当是对用户没有意义的。 MySQL主键应该是单列的,以便提高连接和筛选操作的效率 永远也不要更新MySQL主键 MySQL主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等 MySQL主键应当有计算机自动生成。 主键设计的常用方案 自增ID 优点 : 1、数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利。 2、 数字型,占用空间小,易排序,在程序中传递方便。 缺点 : 1、不支持水平分片架构,水平分片的设计当中,这种方法显然不能保证全局唯一。 2、表锁 在MySQL5.1.22之前,InnoDB自增值是通过其本身的自增长计数器来获取值,该实现方式是通过表锁机制来完成的(AUTO-INC LOCKING)。锁不是在每次事务完成后释放,而是在完成对自增长值插入的SQL语句后释放,要等待其释放才能进行后续操作。比如说当表里有一个auto_increment字段的时候

Sentinel实现Redis集群的高可用

强颜欢笑 提交于 2019-11-28 12:31:47
Sentinel实现Redis集群的高可用 redis集群中有一主一从两个节点。当主节点down掉的时候需要把从节点提升为主节点继续提供服务,从而实现高可用。结构图如下, redis单机多实例主从的安装和配置请参考: http://my.oschina.net/xinxingegeya/blog/389521 下面是具体的搭建过程和一些验证。这里我们建立三个redis节点,其中两个是slave节点;建立三个sentinel节点,同时监控redis集群中的master节点。 目录结构如下, ➜ redis tree -L 1 . ├── conf ├── data ├── log ├── redis_7000 ├── redis_7001 ├── redis_7002 ├── redis_8000 ├── redis_9000 └── run 9 directories, 0 files 其中conf存放redis的配置文件,data为redis的数据存储目录,log为redis的日志目录,run为redis的pid文件目录。 这里使用了一个master节点,两个slave节点的结构设计,其中的7000作为master节点,7001和7002节点作为slave节点。 首先启动三台redis服务器,如下, ➜ redis_7000 ./src/redis-server ./7000

[算法模版]AC自动机

邮差的信 提交于 2019-11-28 12:22:29
[算法模版]AC自动机 基础内容 板子不再赘述, OI-WIKI 有详细讲解。 \(query\) 函数则是遍历文本串的所有位置,在文本串的每个位置都沿着 \(fail\) 跳到根,将沿途所有元素答案++。意义在于累计所有以当前字符为结尾的所有模式串的答案。看代码就能很容易的理解。 另外 \(e[i]\) 记录的是第 \(t\) 个模式串结尾是哪个节点(所有节点均有唯一的编号)。 贴个 P5357 【模板】AC自动机(二次加强版) 板子: #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<vector> #define maxn (int)(2e6+10000) int ch[(int)(2e5+1000)][30],fail[maxn],cnt,e[maxn],nex[maxn],n,queue[maxn],ans[maxn]; using namespace std; char s[(int)(2e6+1)]; char data[maxn]; void init() { memset(ch,0,sizeof(ch)); memset(fail,0,sizeof(fail)); memset(e,0,sizeof(e));

牛客NOIP暑期七天营-提高组+普及组5

纵饮孤独 提交于 2019-11-28 12:05:54
第一题:deco的abs 题目链接: https://ac.nowcoder.com/acm/contest/934/A   因为每个数都可以加任意次 d ,所以可以推出 0 <= 相邻两个数的差值的绝对值 < d ,于是我们先让所有数对d取模   再枚举每个位置 ,用 last 记录上一个数的值 ,然后求 abs(a[now] - last) 、abs( a[now] + d - last)、abs( a[now] - d, last )即可   下面贴代码:        View Code 来源: https://www.cnblogs.com/StarRoadTang/p/11406840.html

数据结构与算法

ぐ巨炮叔叔 提交于 2019-11-28 12:05:29
第一章:概述 1. 数据和数据结点   数据是对客观事物的描述形式和编码形式的统称。   数据是由数据元素组成的,数据元素又称为数据结点,简称结点。   每个数据元素又包括多个数据项,每个数据项又称为结点的域,其中,用来唯一标识结点的域称为关键字。 2.数据结构、逻辑结构、物理结构   一个有穷的结点集合D,以及该集合中各结点之间的关系R,组成一个数据结构,表示成B=(D, R);   D和R是对客观事物的抽象描述,R表示结点间的逻辑关系,所以(D, R)表示的数据的逻辑结构。   数据结构在计算机内的存储形式称为存储结构,也称为物理结构。 3. 数据结构的种类   表结构(一对一)、树结构(一对多)、图结构(多对多)、散结构(结点之间没有关系,或者说存在特殊关系-无关关系) 4. 抽象、抽象数据类型、抽象数据类型的表示   抽象 - 从一般意义上将,抽象是指“抽取事物的共性,忽略个性;体现外部特征,掩饰具体细节”。   抽象数据类型简称ADT(abstract data type), 是将“数据”连同对其的“处理操作”(即运算)封装在一起而形成的复合体。注意: ADT是对一个确定的数学模型,以及定义在该模型上的一组操作的抽象表示,不涉及具体的实现。   抽象数据类型的表示 - 如可以将有序表有关的数据和处理操作封装成一个ADT,涉及的数据可能有元素个数、数据元素等

【Python数据分析】概述与探索分析笔记

爷,独闯天下 提交于 2019-11-28 11:05:35
目录 第一章 数据分析简介 第二章 数据获取 第三章 单因子探索分析 参考资源 第一章 数据分析简介 1-1、数据分析流程 A 数据获取 B 探索分析与可视化(报表) C 预处理理论(去除脏数据) D 分析建模 E 模型评估 其中,CDE 为数据建模与挖掘 【核心内容】 1-2、前置知识 前置知识:Python3,Python数据分析-基础技术篇;数学; 编译环境:Python3.6+,Pycharm,Anaconda 1-3、数据分析概述 数据分析的含义与目标:统计分析方法,提取有用信息,并进行总结与概括的过程 1-4、使用Python进行数据分析 开发效率高、运行速度慢、胶水语言(比如嵌入C语言配合使用) 1-5、数据分析学习方法 A 重视理论 B 勤于查阅 C 身体力行 D 联系实际 第二章 数据获取 2-1、数据获取手段 A 数据仓库 B 监测与抓取 C 填写、日志、埋点 D 计算 2-2、数据仓库(DW) 1、概念:数据载体,业务数据汇总处理 (1)全部事实的记录 (2)部分维度与数据的整理(数据集市-DM) 2、数据库 VS 仓库 (1)数据库面向业务存储(保证高并发、快速读写、数据结构精简),仓库面向主题存储(主题:较高层次上对分析对象数据的一个完整并且一直的描述,比如购买图书发展的多维度存储信息) (2)数据库针对应用(OLTP,联机事务处理),仓库针对分析

6-2 顺序表操作集 (20 分)

僤鯓⒐⒋嵵緔 提交于 2019-11-28 10:06:42
本题要求实现顺序表的操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef int Position; typedef struct LNode List; struct LNode { ElementType Data[MAXSIZE]; Position Last; / 保存线性表中最后一个元素的位置 */ }; 各个操作函数的定义为: List MakeEmpty():创建并返回一个空的线性表; Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR; bool Insert( List L, ElementType X, Position P ):将X插入在位置P并返回true。若空间已满,则打印“FULL”并返回false;如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false; bool Delete( List L, Position P ):将位置P的元素删除并返回true

web-msg-sender的https支持改造

早过忘川 提交于 2019-11-28 10:04:14
用的是nginx代理转发443到2120端口实现,官方说workman原生支持,没有实现(现象是 访问 htttps://域名:2120/ 超时,不知道是服务器问题还是什么) 后转为用nginx代理转发实现 1、假设用https://socket.test.com 作为socket连接的地址. https://www.test.com还是网站本身,实现共存,不影响主站访问 1、nginx的 网站.conf,注意红色部分。2121那个转发不是必须的,因为是服务端curl请求,可以直接请求ip地址带端口 server { listen 443; server_name *.test.com test.com; set $flag 0; if ($host != 'www.test.com') { set $flag "${flag}1"; } if ($host = 'socket.test.com'){ set $flag "${flag}1"; } if ($flag = "01"){ rewrite ^/(.*)$ http://www.test.com/$1 permanent; } #if ($host != 'www.test.com' ) { # } ssl on; ssl_certificate cert/cert-1542176077391__.test.com

3.梯度下降法

对着背影说爱祢 提交于 2019-11-28 07:10:03
(一)什么是梯度下降法 梯度下降法 和之前介绍的k近邻算法和线性回归法不同,梯度下降法不是一个机器学习算法。它既不能解决分类问题也不能解决回归问题,那梯度下降是什么呢?以及它的作用又是什么呢? 其实,梯度下降法是一种基于搜索的最优化方法。 作用就是最小化一个损失函数,或者最大化一个效用函数,当然最大化一个效用函数就不是梯度下降了,而是梯度上升,但是本质都是一样的。 为什么会有梯度下降 我们在线性回归中,我们可以求出最小化一个函数所对应的参数的解。但是后面我们会看到,很多算法我们是没办法直接求到解的。那么基于这样的模型,我们就需要使用搜索的策略,来找到这个最优解。那么梯度下降法就是在机器学习领域,最小化损失函数的一个最常用的方法。 图解梯度下降 图中描述了损失函数J和参数θ之间的变化关系,图像上每一个点都会对应一个切线,或者说是导数。由于我们这里是一维的,所以就用导数来描述了,如果是多维的,那么就要对每一个维度上进行求导,组合起来就叫做梯度。 我们发现当蓝色的点在左边的时候,那么随着θ的减小,J对应的取值就会变大。θ增大,J对应的取值就会减少。而我们的目的,是希望找到一个合适的θ,使得J能取到最小值。首先我们要知道,梯度(这里是导数)代表方向,代表J增大的方向,所以我们要沿着梯度的反方向(所以才叫梯度下降啊,如果是梯度上升,那么这里的函数就是效用函数),才能找到一个最小值

Q20

梦想的初衷 提交于 2019-11-28 06:19:10
20 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 1 while 1: 2 x = int(input("请输入第几次落地,若退出请输入0")) 3 if x!=0: 4 h=100 5 l=[] 6 l.append(100) 7 8 def hight(x): 9 hight = h*(0.5**x) 10 return hight 11 12 for i in range(1,x+1): 13 l.append(hight(i)*2) 14 15 sum_hight=sum(l) 16 last_hight=hight(x) 17 print(last_hight,sum_hight,l) 18 else: 19 break View Code 来源: https://www.cnblogs.com/xuwinwin/p/11396965.html