在上一节提到的图中,我们知道,可以通过 redisObject 对象的 type 和 encoding 属性.可以决定Redis 主要的底层数据结构:SDS.QuickList.ZipList.HashTable.IntSet.ZskipList . 一.简单动态字符串(SDS) 先来看看传统的C 语言如何存储字符串的:比如一个 "Redis" 字符串: 为什么不用传统的 C 语言的方式,因为我们知道数组方式在获取字符串长度或者扩容上存在缺陷:比如获得一个数组长度的复杂度为O(N),…
前提 上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型.趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究. 通过例子查找本质 在探究JDK注解的底层实现的时候,因为预先参考了不少资料,所以整个过程有点"未卜先知"的意味,这里尝试用未知的角度去看注解的底层实现.先定义一个手机操作系统类型枚举PhoneOsEnum: package club.throwable.enumeration; public enum PhoneOs…
学习 Gin 问题总结 2020.12.29 数据绑定与解析 BindXXX,ShouldBindXXX和ShouldBindWith区别 BindXXX 会自动返回信息,输入无效时,在header写入400. ShouldBindXXX 返回消息,输入无效时,不会在header写入400状态码,这时候可以自定义返回信息,在使用上相对来说更加灵活. ShouldBindWith 在gin 1.4 之前,重复使用ShouldBind绑定会报错EOF. gin 1.4 之后官方提供了一个 Shoul…
2020.12.30 问题总结 中间件 context.Next() 源码注释: // Next should be used only inside middleware. // It executes the pending handlers in the chain inside the calling handler. 只能在中间件中使用的函数,它在调用处理程序内的链中执行挂起的处理程序. 也就是暂时会阻塞中间件的执行,去执行处理请求函数.处理完毕请求函数后,再回来执行中间件剩余部分的操…
智能物联网(AIoT,2020年)(中) 05 中国AIoT产业图谱 06 中国AIoT商业模式 标准程度越低人力和时间成本投入越多,2B2C模式附加值高 07 中国AIoT玩家分布简介 四类玩家,优势与策略各异 08 建筑人居类场景的AIoT 通过单品+系统联动场景,向"管家模式"迈进 增强安防措施.改善居住体验.运营降本增效是场景共性 09 建筑人居:AIoT实现人与环境自主适应 以智能端为入口,配合平台完成感知.分析与联动 10 中国AIoT住宅与人居的发展现状 超半数智慧人居住…
2021.12.07 [TJOI2013]最长上升子序列(Treap+DP) https://www.luogu.com.cn/problem/P4309 题意: 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上升子序列长度是多少? 分析: 对于第 \(i\) 个插进去的数字 \(i\) ,插到了第 \(x\) 位,则对于前 \(i\) 个数字的最长上升子序列 \(f[i]\) : \[f[i]=\max(f[…
第一次来 B 组做,虚的很 T1: 容斥原理 比赛时也打了个大致,但挂了,只有 50 分. 赛后重构了一下代码,AC \(UPDATE:2020/12/13\ \ \ 14:10\) 思路: 像前缀和一样,先求出 [1,r] 的个数,在求出 [1,l-1] 的个数,最后相减 求法就是典型的容斥原理,用深搜来看第 i 个选不选,复杂度为\(O(2^n)\) 传参时多传一个最小公倍数,注意容斥时的奇负偶正 T2: 玄学 正解应该是 Treap ,但不会 不过 WTF?暴力能对? 但是考试时看了看样例…
由于在odi 12.2.1中,必须使用jdk1.8,而jdk1.8中jdbc-odbc bridge已经不再支持,因此,可以使用Progress DataDirect SequeLink来充当jdbc-odbc驱动.架构如下: 原文地址: https://blogs.oracle.com/dataintegration/entry/how_to_load_data_from…
1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素j为结束的索引值,缺省时则获取从i到末尾的所有元素 参数返回:返回索引值从i到j的数组,原数组不改变 在String中 slice(i,[j]) 参数说明:i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个字符j为结束的索引值,缺省时则获取从i到末尾的所有字符 2.splice() 存在Array中     方法…
为了研究一下C++中引用的底层实现,写了一个小代码验证其中的基本原理. 引用是一个变量的别名,到底会不会为引用申请内存空间?如果申请空间,空间存放的是什么,下面的代码就主要解决这个疑问. 代码如下,详细见代码注释 #include <iostream> #include<string> #include <vector> #include <algorithm> using namespace std; class Test { public: int va…