M-LOG

Redis入门(4)

╄→гoц情女王★ 提交于 2020-07-29 06:14:03
SORT命令 LIMIT参数 BY参数 GET参数 STORE参数 排序性能优化 很多场合需要对元素进行排序,这时除了使用有序集合外,还可以借助Redis提供的SORT命令来排序。 SORT命令 SORT命令可以对列表类型、集合类型和有序集合类型的键进行排序。 SORT key SORT key DESC SORT key ALPHA SORT命令会根据元素自身的值进行排序,在对有序集合类型排序时会忽略元素的分数。 默认按从小到大的顺序排列,增加DESC参数可以按照倒序排列。 如果元素为非数字,增加ALPHA参数可以按照字典顺序排列。如果直接对非数字元素排序会报错: (error)ERR One or more scores can't be converted into double 如果没有加ALPHA参数的话,SORT命令会尝试将所有元素转换成双精度浮点数来比较,如果无法转换则会提示错误。 LIMIT参数 如果返回结果数量较多需要分页,可以使用LIMIT参数 SORT key DESC LIMIT offset count 表示在排序结果中,跳过前offset个元素,获取之后的count个元素。 BY参数 很多情况下列表(或集合、有序集合)中存储的元素值代表的是对象的ID,单纯对这些ID自身排序有时意义并不大。更多的时候会希望根据ID对应的对象的某个属性进行排序。

Redis对象——有序集合(ZSet)

我的梦境 提交于 2020-04-18 14:50:54
Redis对象——有序集合(ZSet) 有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。 一、内部实现# 有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃表) 组成的。 当数据比较少时,有序集合使用的是 ziplist 存储的,有序集合使用 ziplist 格式存储必须满足以下两个条件: 有序集合保存的元素个数要小于 128 个; 有序集合保存的所有元素成员的长度都必须小于 64 字节。 如果不能满足以上两个条件中的任意一个,有序集合将会使用 skiplist 结构进行存储。 有关ziplist 和skiplist 这两种redis底层数据结构的具体实现可以参考我的另外两篇文章。 Redis数据结构——压缩列表 Redis数据结构——跳跃表。 二、常用命令# Redis列表对象常用命令如下表(点击命令可查看命令详细说明)。 命令 说明 时间复杂度 BZPOPMAX key [key ...] timeout 从一个或多个排序集中删除并返回得分最高的成员,或阻塞,直到其中一个可用为止 O(log(N))

决策树随笔

独自空忆成欢 提交于 2020-04-18 11:15:59
决策树原理 决策树是一种多功能的机器学习算法,它可以实现分类和回归任务,甚至是多输出任务。它们功能强大,能够拟合 复杂的数据集。 -优点:简单直观,基本不需要预处理,不用会议华,处理缺失值,精度高、对异常值不敏感、无数据输入假定。可以处理离散或连续值,可以处理多维度输出的分类问题 缺点:计算复杂度高、容易过拟合,泛化能力不好,可能因为样本的一点点改动导致树的结构剧烈改变,空间复杂度高。 适用数据范围:数值型和标称型。 创建分支的伪代码函数createBranch()如下所示: 检测数据集中的每个子项是否属于同一分类: If so return 类标签; Else 寻找划分数据集的最好特征 划分数据集 创建分支节点 for 每个划分的子集 调用函数createBranch并增加返回结果到分支节点中 return 分支节点 上面的伪代码createBranch是一个递归函数,在倒数第二行直接调用了它自己。 其工作原理很简单如图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作分支(branch),它可以到达另一个判断模块或者终止模块。 k-近邻算法可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内在含义

常用数据结构的功能及复杂度总结(OI)

烈酒焚心 提交于 2020-04-13 15:09:45
【今日推荐】:为什么一到面试就懵逼!>>> 不定长数组 维护一个序列 在末尾插入/删除均摊O(1) 任意位置插入O(n) 指定位置查询/修改O(1) 空间O(n) 链表 维护一个序列 定位到第i个位置O(n) 在任意位置(已定位到该位置)插入/删除/修改O(1) 空间O(n) 散列表 维护键-值对应关系或维护键的存在性 1.开放寻址法散列表 若已插入键个数小于表大小的3/4则可以认为查询/修改/插入期望O(1),最坏O(n)若正确选择hash函数一般不会出现 删除只能标记删除 一般所需空间应大于键个数的4/3以保证效率 2.链接法散列表 若表中键个数a,表大小n,则查询/修改/插入/删除期望O(1+a/n),最坏O(n),若正确选择hash函数一般不会出现 必要时可以用平衡树代替链表而做到最坏O(logn)但实用价值不大 栈 维护一些元素 支持O(1)插入和弹出元素,且保证弹出的元素是栈中最后一个插入的元素 队列 维护一些元素 支持O(1)插入和弹出元素,且保证弹出的元素是队列中最先插入的元素 并查集 维护一些元素以及两两之间是否同类(同类关系可传递)并支持将两个元素所属的类合为一类 1.并查集的森林实现 按秩合并+路径压缩 查询/合并 均摊O(α(n,m)) 仅按秩合并 单次操作保证O(logn) 仅路径压缩 单次操作保证O(logn) 2.并查集的链表/不定长数组/图实现 查询

视频直播流程以及直播黑屏问题

爱⌒轻易说出口 提交于 2020-03-15 08:06:59
视频直播流程以及直播黑屏问题 最近做了一个视频直播的项目,要求在直播不流畅或者网络不可用的时候需要做本地录制,而保证视频不丢失。之前的项目都是只有直播没有本地录制,所以在原来项目上需要做非常多的修改以及代码流程的变更。代码编写工作基本完成之后在做压力测试的时候发现,偶现的直播的时候视频会黑屏。我们的项目是基于开源项目 SopCastComponent 来进行的,下面的代码分析也是基于此开源项目。视频直播也是基于RTMP协议完成的。 首先说一下基于RTMP协议如何进行一次直播。RTMP协议是基于TCP协议实现的。首先当然是建立TCP链接,TCP链接建立成功之后发送rtmp相关头信息: private void rtmpConnect() { SessionInfo.markSessionTimestampTx(); Command invoke = new Command("connect", ++transactionIdCounter); AmfObject args = new AmfObject(); args.setProperty("app", connectData.appName); args.setProperty("flashVer", "LNX 11,2,202,233"); // Flash player OS: Linux, version: 11.2

MySQL启动失败分析与解决

久未见 提交于 2019-12-05 23:52:20
1, 背景 早上过来发现电脑非正常关机了,进mysql发现报错: mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 尝试启动mysql sudo service mysql restart 报错 Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. 查看错误信息 systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: activating (start-post) (Result: exit-code) since 四 2019-11-28 14

MySQL启动失败分析与解决

泪湿孤枕 提交于 2019-11-29 17:07:41
1, 背景 早上过来发现电脑非正常关机了,进mysql发现报错: mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 尝试启动mysql sudo service mysql restart 报错 Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. 查看错误信息 systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: activating (start-post) (Result: exit-code) since 四 2019-11-28 14