键值

NoSQL数据库-Redis笔记

℡╲_俬逩灬. 提交于 2019-11-30 18:42:14
nosql(not only sql) D:一类新出现的数据库,不支持sql语句,以键值对形式存储数据 常用的产品种类:Mongodb,Redis,Hbase hadoop Redis D:是一个开源的使用ANISIC语言编写,支持网络,可基于内存也可持久化的日志型数据库。 Redis还支持数据的备份,即master-slave模式的数据备份 优势:读取快,性能高;有丰富的数据类型,支持二进制String,Lists,Hashes等 操作原子性,还支持key过期,通知等特性。 应用场景:用来做缓存;用来实现特定功能,session共享,购物车,商品历史浏览记录 U:使用redis常用命令 下载 wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压 tar -zxvf redis-3.2.8.tar.gz 编译和安装(进入redis解压出来的根目录下 sudo make install 安装完成后,进入目录/usr/local/bin中查看 cd /usr/local/bin ls -all 验证是否安装成功(不报错) sudo redis-server 查看已启动的redis-server ps -ef|grep redis-server 指定配置文件启动redis服务端 sudo redis-server

Cookie与Session

北战南征 提交于 2019-11-30 17:51:49
Cookie与SessionCookie: cookie是保存在浏览器端的键值对,可以用做登录 1.保存在用户浏览器 2.可以主动清除 3.可以被“伪造” 4.跨域名cookie不共享 5.浏览器设置不接收cookie 服务端设置Cookie v=datetime.datetime.utcnow() + datetime.timedelta(seconds=10) #设置cookie超时时间,系统默认一个时间,也可以用此方式添加一个时间,但以系统默认时间为基准。 obj.set_cookie('k1','v1',max_age=10,expires=v,path="",domain="",secure=False,httponly=False) #max_age时间周期,给某个url生效设置cookie,如果path="/"表示全局生效。 #domain参数:用域名设置访问权限 secure参数(证书访问)执行https的cookie设置等操作的时候用ture httponly参数:(安全)禁止了js使用时获取cookies,仅仅Http网络传输使用 获取cookie数据:.request_COOKIES.get() cookie: 客户端可修改 服务端也可修改 保存在客户端 cookie 应用: 登录认证: 普通的cookie: 敏感信息,不适于放在cookie中,放在数据库中

用Python获取计算机网卡信息

谁说胖子不能爱 提交于 2019-11-30 16:55:29
目录 0. 前言 1. 测试环境及关键代码解释 1.1 测试环境 1.1.1 系统: 1.1.2 开发工具: 2. 模块介绍及演示 2.1 platform模块使用示例 2.2 netifaces模块使用示例 2.2.1 Linux环境下如何获取网卡口的信息 2.2.2 Windows环境下如何获取网卡口的信息 3. 完整代码 4. 碎碎语 4.1 官方参考链接: 0. 前言 正常情况下,如果想要查看电脑的网卡IP地址或是MAC地址,直接通过界面找到网卡进行查看就有了,亦或是通过命令如linux的ifconfig得到IP等信息,那么本节教大家如何通过python的方式获取网卡的IP/MAC信息。 1. 测试环境及关键代码解释 1.1 测试环境 1.1.1 系统: Ubuntu 16.04.6 LTS Windows 10 x64 1.1.2 开发工具: pycharm 专业版 备注:专业版支持本地远程linux调试。 2. 模块介绍及演示 本次只需要用到3个模块就搞定,但也是挺费劲的咯。 netifaces //需要安装,主要用于获取网卡接口IP/MAC等信息; winreg //内置模块,主要用于Windows系统通过注册表获取网卡接口键值; platform //内置模块,主要用于判断系统类型:如Widows、Linux、MacOS等; 2.1 platform模块使用示例

python dict 字典详解

本小妞迷上赌 提交于 2019-11-30 14:37:07
和列表相同,字典也是许多数据的集合,属于可变序列类型。不同之处在于,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。 字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。 字典类型很像学生时代常用的新华字典。我们知道,通过新华字典中的音节表,可以快速找到想要查找的汉字。其中,字典里的音节表就相当于字典类型中的键,而键对应的汉字则相当于值。 表 1 Python 字典特征 主要特征 解释 通过键而不是通过索引来读取元素 字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。 字典是任意数据类型的无序集合 和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素。而字典中的元素是无序的。 字典是可变的,并且可以任意嵌套 字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。 字典中的键必须唯一 字典中,不支持同一个键出现多次,否则,只会保留最后一个键值对。 字典中的键必须不可变 字典中的值是不可变的,只能使用数字、字符串或者元组,不能使用列表。 Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。 1) 花括号语法创建字典

散列表(哈希表)

混江龙づ霸主 提交于 2019-11-30 13:23:45
散列表(哈希表) 散列表是根据键(KEY)来直接访问内存存储位置的一种数据结构,它通过散列函数计算键值对中键(KEY)的散列地址,然后将值存在此地址上,这样就可以直接根据键来取得所对应的值。 散列函数的冲突 对于不同的键(KEY),散列函数得到同一个散列地址,这种现象称为冲突。 如何处理散列冲突 开放定址法 线性探测法:就是一旦冲突了就放到下一个位置就好了,只要存储空间够大总会有位置放的(但是这样会产生堆积,因为他可能会把其他的原来属于别人的位置只是暂时空着的给占了) 二次探测法:冲突了就放在1或者2或者3等等的平方后的位置,而不是像前面那样就是单纯的不停地加1,这样就可以不让关键字对集中在一块地方 伪随机探测法:用一个种子产生一个随机数来作为位移量来避免冲突,然后最后查找这个数在不在的时候也用这个种子生成随机数来找 当散列表存在"堆积"(在函数地址的表中,散列函数的结果不均匀地占据表的单元,形成区块)的情况时,使用开放定址法的效率大大降低,此时不能再使用开放定址法 单链表法:将散列地址值一样的键值对保存在一个链表中。 再散列:在上次散列计算发生冲突时,利用该次冲突的散列函数地址产生新的散列函数地址,直到冲突不再发生。这种方法不易产生"堆积",但增加了计算时间。 公共溢出区:将所有冲突的键值对放在一个数组中。查找时如果在散列表中没有找到就在数组中顺序查找。 散列表的查找效率

JavaScript 本地存储

倾然丶 夕夏残阳落幕 提交于 2019-11-30 12:22:11
1.Cookie 简介 Cookie 是一些数据, 存储于你电脑上的文本文件中,用于存储 web 页面的用户信息 Cookie 数据是以键值对的形式存在的,每个键值对都有过期时间。如果不设置时间,浏览器关闭,cookie就会消失 Cookie 内存大小受限,一般每个域名下是4K左右,每个域名大概能存储50个键值对 基本操作 通过访问document.cookie可以对cookie进行创建,修改与获取。 默认情况下,cookie 在浏览器关闭时删除,你还可以为 cookie的某个键值对 添加一个过期时间 如果设置新的cookie时,某个key已经存在,则会更新这个key对应的值,否则他们会同时存在cookie中 <script> // 设置cookie document.cookie = "username=orochiz" document.cookie = "age=20" // 读取cookie var msg = document.cookie console.log(msg) // username=orochiz; age=20 // 添加过期时间(单位:天) var d = new Date() // 当前时间 2019-9-25 var days = 3 // 3天 d.setDate(d.getDate() + days) document.cookie =

B+Tree索引原理

拜拜、爱过 提交于 2019-11-30 06:36:26
什么是索引? 索引是一种数据结构,具体表现在查找算法上。 索引目的 提高查询效率 【类比字典和借书】 如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的。 去图书馆借书也是一样,如果你要借某一本书,一定是先找到对应的分类科目,再找到对应的编号,这是生活中活生生的例子,通用索引,可以加快查询速度,快速定位。 数据结构——树 树 二叉树 每个节点最多含有两个子树的树称为二叉树。 二叉查找树ADT Tree 左子树的键值小于根的键值,右子树的键值大于根的键值。 平衡二叉树AVL Tree 在符合二叉查找树的条件下,还满足任何节点的两个子树的高度最大差为1。 BTree BTree也称为平衡多路查找树 B-Tree是为磁盘等外存储设备设计的一种平衡查找树。 B+Tree B+Tree是在B-Tree基础上的一种优化 非叶子结点只存储键值信息,不存储数据 所有的叶子结点都有一个链指针 数据记录都存放在叶子结点中 MySQL默认使用B+Tree索引 索引本身也很大,所以存储在磁盘中,需要加载到内存中执行。 故: 索引结构优劣标准:磁盘I/O次数 BTree是为了充分利用磁盘预读功能而创建出来的一种数据结构。 局部性原理和磁盘预读 局部性原理:当一个数据被用到

注册表的主键、子键、键值

我只是一个虾纸丫 提交于 2019-11-30 03:47:28
注册表中记录了用户安装在计算机上的软件和每个程序的相关信息,通过它可以控制硬件、软件、用户环境和操作系统界面的数据信息文件. 主键,根键 概念有时不清, 灵活理解 根键(主键):这个称为HKEY…………,某一项的句柄 项(键,主键):附加的文件夹和一个或多个值 子项(子键):在某一个项(父项)下面出现的项(子项) 值项(键值数据项):带有一个名称和一个值的有序值,每个项都可包括任何数量的值项,值项由三个部分组成:名称、数据类型和数据。   根键:注册表中最底层的键,类似于磁盘上的根目录,通过“HKEY_”来表示。   主键:主键是根键的下级支配单元,以子目录的形式而存在,负责组织系统对注册表中数据的访问。   子键:子键位于主键下,也可以嵌套于其他子键中。在注册表的六大根键中,有若干子键,而每个子键中又可以嵌套成千上万的子键。   键值数据项:键值数据项简称为键值项,在每个根键和子键下可以有若干键值项。键值项由键值名、键值类型和键值数据三部分组成 注册表包括以下5个根键(主键) 1.HKEY_CLASSES_ROOT 说明:该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等。 2.HKEY_CURRENT_USER 说明:该根键包括当前登录用户的配置信息,包括环境变量,个人程序以及桌面设置等

链表去重

本小妞迷上赌 提交于 2019-11-30 03:33:42
L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10 ​5 ​​ ,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −1 来表示。 随后 N 行,每行按以下格式描述一个结点: 地址 键值 下一个结点 其中地址是该结点的地址,键值是绝对值不超过10 ​4 ​​ 的整数,下一个结点是下个结点的地址。 输出格式: 首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。 输入样例: 00100 5 99999 -7 87654 23854 -15 00000 87654 15 -1 00000 -15 99999 00100 21 23854 输出样例: 00100 21 23854 23854 -15 99999 99999 -7 -1 00000 -15 87654 87654 15 -1 #include <bits/stdc++.h> using namespace std;

第十八章 表驱动法

梦想与她 提交于 2019-11-30 01:44:17
表驱动法是一种编程模式——从表里面查找信息而不使用逻辑语句( if 和 case )。 表驱动法使用总则 在适当的环境下,采用表驱动法,所生成的代码会比复杂的逻辑代码更简单、更容易修改,而且效率更高。 使用表驱动法的两个问题 使用表驱动法必须先解决两个问题。首先,你必须要回答怎样从表中查询条目的问题。其次是考虑在表中存些什么。 直接访问表 和所有的查询表一样,直接访问表代替了更为复杂的逻辑控制结构。之所以说它们是“直接访问”的,是因为你 无须绕很多复杂的圈子就能够在表里面找到你想要的信息。 索引访问表 有时候,只用一个简单的数学运算还无法将数据转换成表键值。这类情况中的一部分可以通过使用索引访问的方法加以解决。 当你使用索引的时候,先用一个基本类型的数据从一张索引表中查出一个键值,然后再用这一键值查出你感兴趣的主数据。 索引访问技术有两个主要优点: 首先,如果主查询表中的每一条记录都很大,那么创建一个浪费了很多空间的索引数组所用的空间,就要比创建一个浪费了很多空间的主查询表所用的空间小得多; 其次,即使你用了索引以后没有节省内存空间,操作位于索引中的记录有时也要比操作位于主表中的记录更方便更廉价; 索引访问技术的最后一个优点是表查询技术在可维护性上所具有的普遍优点。 访问阶梯表 使用阶梯技术时需要注意的细节: 留心端点; 考虑使用二分查找代替顺序查找; 考虑用素银访问来取代阶梯技术