信息存储

koa-session学习笔记

早过忘川 提交于 2020-01-27 04:42:55
koa-session 是koa的 session 管理中间件,最近在写登录注册模块的时候学习了一下这部分的代码,感觉还比较容易看明白,让自己对于 session 的理解也更加深入了,这里总结一下。 session基础知识 这部分算是基础知识,熟悉的朋友可以跳过。 我们都知道 http协议本身是无状态的 ,因此协议本身是不支持“登录状态”这样的概念的,必须由项目自己来实现。我们常常说到 session 这个概念,但是可能有人并不是非常清楚我们讨论的 session 具体指代什么。我觉得这个概念比较容易混淆,不同的上下文会有不同的含义: session 首先是一个抽象的概念, 指代多个有关联的http请求所构成的一个会话 。 session 常常用来指代为了实现一个会话, 需要在客户端和服务端之间传输的信息 。这些信息可以是会话所需的所有内容( 包括用户身份、相关数据等 ), 也可以只是一个id , 让服务端可能从后台检索到相关数据 ,这也是实际系统中最常用的方式。 当我们讨论** session 的实现方式 的时候,都是 寻找一种方式从而使得多次请求之间能够共享一些信息**。不论选择哪种方式,都是 需要由服务自己来实现的, http 协议并不提供原生的支持 。 实现 session 的一种方式就是 在每个请求的参数或者数据中带上相关信息 ,这种方式的好处是 不受 cookie

JVM 的内存模型

折月煮酒 提交于 2020-01-26 18:56:17
为什么要了解? 很多做Android开发的同学会问,我们为什么要了解这个呢?首先移动端资源有限,我们了解jvm的内存模型,便于我们更好的管理客户端的内存。 什么是JVM? java代码的执行过程如下图: 运行时数据区可分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器五个部分。 概述 方法区:线程共享数据,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 堆:线程共享数据,主要是存放对象实例和数组。内部会划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer, TLAB)。可以位于物理上不连续的空间,但是逻辑上要连续。 虚拟机栈:线程隔离数据,每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。 本地方法栈:线程隔离数据,区别于 Java 虚拟机栈的是,Java 虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 程序计数器:线程隔离数据,字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。 1.方法区  

MySQL8.0新特性【转】

China☆狼群 提交于 2020-01-26 11:50:32
Server层,选项持久化 mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 512 | | mysqlx_max_connections | 100 | +------------------------+-------+ 2 rows in set (0.00 sec) mysql> set persist max_connections=8000; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 8000 | | mysqlx_max_connections | 100 | +------------------------+-------+ 2 rows

SLAM拾萃(1):octomap

半城伤御伤魂 提交于 2020-01-26 01:56:42
前言   大家好,时隔多年之后,我又开始了博客旅程。经历了很多事情之后呢,我发现自己的想法真的很简单:好好读书做课题,闲下来时写写博客,服务大家。所以我会继续写SLAM相关的博客。如果你觉得它对你有帮助,那是最好不过的啦!写作过程中得到了许多热心读者的帮助与鼓励,有些读者还成了要好的朋友,在此向大家致谢啦!关于SLAM,读者也会有很多问题。由于我个人精力和学力都有限,无法一一回答,向大家说声抱歉!有些共同的问题,我肯定会在博客里介绍的!   前两天刚从珠海开会回来,与中山大学的同学们聚在一起玩耍,很开心!   《一起做》系列已经结束,事实上它是我以前探索过程中的一些总结。虽然仍然有很多令人不满意的地方,不过相信读了那个系列,读者应该对SLAM的流程有一定的了解了。尤其是通过代码,你能知道许多论文里没讲清楚的细节。在这之后,我现在有两个规划。一是对目前流行的SLAM程序做一个介绍,沿着《视觉SLAM实战》往下写;二是介绍一些好用的开源工具/库,写成一个《SLAM拾萃》。我觉得这两部分内容,对读者了解SLAM会有较大的帮助。当然,如果你对我的博客有任何建议,可以在下方评论或给我发邮件。   本篇是《SLAM拾萃》第一篇,介绍一个建图工具:octomap。和往常一样,我会介绍它的原理、安装与使用方式,并提供例程供读者学习。必要时也会请小萝卜过来吐槽。(小萝卜真是太好用了

操作系統-進程管理3(進程通信)

别说谁变了你拦得住时间么 提交于 2020-01-25 23:06:31
操作系统-进程管理3(进程通信) 进程通信 进程间的通信分为控制信息的传送和大量信息的传送两种,控制信息的传送称为 低级通信 ,大批量数据的传送称为 高级通信 。 高级通信分为 共享存储系统、消息传递系统和管道通信系统 。 共享存储系器系统 共享存储器系统类型:在共享存储系统中,相互通信的进程共享某些 数据结构 或 共享存储区 ,进程之间能通过这些空间进行通信。 共享数据结构的通信:在这种方式中,要使各进程间共享某些数据结构以实现进程间的信息交换。如生产者-消费者问题中,生产进程和消费进程共享了empty和full的信号量,使得彼此知道能否放置或拿走产品。这种方式只适用于传递少量的数据。 共享存储区的通信:为了实现高级通信,在存储区划出一块共享存储区,各进程可通过对共享存储区的读或写来实现通信。进程在通信前,先向系统申请获得共享存储区的一块分区,并指定该分区的一个关键字;若系统已经给其他进程分配了这样的分区(如本进程是读进程,但是已经有同类的读进程在读这块数据),则将该分区的描述符返回给申请者,由申请者去连接共享存储区。 Linux共享存储区通信的实现 1).共享存储区的建立:当进程要利用共享存储区与另一个进程进行通信时,必须先让系统调用shmget()建立一块共享存储区。 2).共享存储区的操纵:系统可以调用shmctl()对共享存储区的状态信息进行查询,如长度、所连接的进程数

MongoDB快速入门

泪湿孤枕 提交于 2020-01-25 16:36:07
从我第一次听到Nosql这个概念到如今已经走过4个年头了,但仍然没有具体的去做过相应的实践。最近获得一段学习休息时间,购买了Nosql技术实践一书,正在慢慢的学习。在主流观点中,Nosql大体分为4类, 键值存储数据库,列存储数据库,文档型数据库,图形数据库 。 今天主要快速的浏览了文档型数据库中目前市场占有率的最高的MongoDB数据库。记得初次见到和关注这个数据库还是我刚来上海的时候,公司将该数据库作 为新建的项目管理系统的后台数据库,当时还是很向往的,只是无缘参与那个项目,也就一直没有和该数据库打上交道。接下来简单的介绍下该数据库的基本原理和 相关应用,也算是巩固知识和加强记忆了。大体上快速学习分为两部分,第一部分为基础,第二部分为进阶。 优势与不足    首 先,MongoDB不需要表结构,它是模式自由的(schema-free),例如{"welcome", "Shanghai"}, {"name", "bibi"}可以放到同一个集合中。那么它是如何在存储数据的呢?MongoDB在保存数据时会使用Bson的形式,一种json的二进制化形式,并把 它与特定的Key进行关联。这样将非常便于程的扩展和维护,在需要增加新字段或者修改字段时只需要修改程序,而不需要修改数据库的架构,非常的方便。   其 次,MongoDB原生的提供很强的伸缩性,对于web应用

Flask框架之session

…衆ロ難τιáo~ 提交于 2020-01-25 10:47:28
session基本概念 session 技术也叫会话技术。 session 和 cookie 的作用有点类似,都是为了存储用户相关的信息,都是为了解决 http 协议无状态的这个特点。 不同的是, cookie 信息是存储在客户端,而 session 信息是存储在服务器端。 需要注意的是,不同的语言,不同的框架,有不同的实现。 虽然底层的实现不完全一样,但目的都是让服务器端能方便的存储数据而产生的。 session 的出现,是为了解决 cookie 存储数据不安全的问题的。 session的跟踪机制与cookie有关 Flask 框架中, session 的跟踪机制跟 Cookie 有关,这也就意味着脱离了 Cookie , session 就不好使了。 session工作过程: 服务器端可以采用类似于 mysql 、 redis 等技术来存储 session 信息。 原理是,客户端发送验证信息过来(比如用户名和密码),服务器验证成功后,把用户的相关信息存储到服务器端的 session 中(可想象为一个容器),再通过 盐 的机制, 盐 起到混淆原数据的作用(类似于 加密 ),然后随机生成一个唯一的 session_id ,用来标识(用户名和密码)并存储到 session 中,之后再把这个 session_id 存储到cookie中返回给浏览器。 浏览器以后再请求我们服务器的时候

Hadoop学习笔记和总结(七)

走远了吗. 提交于 2020-01-25 09:41:11
目录 第七章 HDFS的四个机制与两个核心功能 7.1 HDFS 机制 7.1.1 心跳机制 7.1.2 安全模式 7.1.3 机架策略 7.1.4 负载均衡 7.2 HDFS文件上传流程 7.3 HDFS文件下载流程 第七章 HDFS的四个机制与两个核心功能 HDFS提供的是高容错性的分布式数据存储方案,其包括 四个主要的机制 :(1) 心跳机制 (2) 安全模式 (3) 机架策略 (4) 负载均衡 ;并作为一个文件系统 两大核心功能 包括:(1) 文件上传 (2) 文件下载 (3) 元数据的管理 当Hadoop集群启动时,各个进程启动的顺序如下: NameNode --> DataNode --> SecondaryNameNode 7.1 HDFS 机制 HDFS机制中需要重点掌握心跳机制、安全模式和机架策略并理解负载均衡。 7.1.1 心跳机制 集群节点必须做时间同步。 NameNode是集群的Boss,负责集群中任务的分工。如果要进行分工,则必须知道各个DataNode的存活状况。NameNode是如何知道各DataNode的存活状态的呢? 利用心跳机制,即:DataNode定期向NameNode发送心跳报告所确定的。 具体实现: DataNode会每隔3秒(默认)向NameNode发送一次心跳报告,目的是告诉NameNode自己的存活状况。 可以通过修改 hdfs

UICC,USIM卡与SIM的区别

帅比萌擦擦* 提交于 2020-01-25 01:13:03
USIM卡与SIM的区别 SIM卡(Subscriber Identity Module) ,即用户识别卡,是全球通数字移动电话的一张个人资料卡。它采用A 级加密方法制作,存储着用户的数据、鉴权方法及密钥,可供GSM系统对用户身份进行鉴别。同时,用户通过它完成与系统的连接和信息的交换。 移动电话只有装上SIM卡才能使用。“SIM卡”有大小之分,功能完全相同,分别适用于不同类型的GSM移动电话。SIM卡可以插入任何一部符合GSM规范的移动电话中,而通话费则自动计入持卡用户的帐单上,与移动电话无关。 SIM卡的使用,有效的防止了盗用、并机和通话被窃听,使用户的正常通信得到了可靠的保障。 为了保证您的移动电话丢失后不被盗用,每张SIM卡都可设置一组个人密码(PIN码)来对SIM卡上锁,它是由用户自己设定的。只有正确输入密码后,手机 才会进入正常的使用状态。连续三次输入错误的个人密码,手机即会将SIM卡锁住。发生这种情况,请您立即关机并携机及SIM卡到无线局营业厅解锁。如果此 时您还继续操作,将引起SIM卡的自动封毁,给您造成不必要的损失。 USIM卡就是第三代手机卡 USIM: Universal Subscriber Identity Module(全球用户识别卡) 全球用户身份模块(USIM),也叫做升级 SIM ,是在 UMTS 3G 网络的一个构件。 很多人认为在3G时代

ASP.NET MVC 随想录——开始使用ASP.NET Identity,初级篇

末鹿安然 提交于 2020-01-24 05:43:05
在之前的文章中,我为大家介绍了OWIN和Katana,有了对它们的基本了解后,才能更好的去学习ASP.NET Identity,因为它已经对OWIN 有了良好的集成。 在这篇文章中,我主要关注ASP.NET Identity的建立和使用,包括基础类的搭建和用户管理功能的实现—— 点此进行预览 点此下载示例代码 在后续文章中,我将探索它更高级的用法,比如身份验证并联合ASP.NET MVC 进行授权、使用第三方登录、声明式认证等。 ASP.NET Identity 前世今生 ASP.NET Membership 在 ASP.NET 2.0 时代, ASP.NET Membership 用于用户管理的常见需求。包括表单身份验证( Form Authentication ),一个用于存储用户名、密码和其他用户信息的 SQL Server 数据库。但是现在,对于 Web 应用程序的数据存储我们有了更多的选择。而且,大多数开发者希望自己的站点能够使用第三方供应商提供的社交账号来实现身份验证和授权。但是,由于 ASP.NET Membership 自身设计的限制,已经难以满足如下变化: 数据库架构为 SQL Server 设计,而且无法修改。虽然你可以添加额外的用户信息,但这些数据被存入了一张不同的数据表。而且这些信息难以访问,除了使用 Profile Provider API 。 虽然通过