对象存储

Oracle数据库的体系结构和用户管理

。_饼干妹妹 提交于 2020-01-08 07:44:38
一、Oracle体系结构 数据库的体系结构是指数据库的组成、工作过程、以及数据库中数据的组织与管理机制,要了解Oracle数据库的体系结构,必须理解Oracle系统的主要组件和重要概念。 1、Oracle体系结构概述 Oracle体系结构包含一系列组件,如下图所示,图中显示了Oracle体系结构中的主要组件,包括实例、用户进程、服务器进程、数据文件及其他文件,如参数文件、口令文件和归档日志文件等。从图中可以看出,实例和数据库是Oracle数据库体系结构的核心组成部分,也是最重要的两个概念;DBA一个很重要的工作就是维护实例和数据库本身的正常工作。 1)实例 Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA)并启动一系列Oracle后台进程。Oracle实例有两种类型:单进程实例和多进程实例,单进程Oracle实例使用一个进程执行Oracle的全部操作,在单进程环境下的Oracle实例仅允许一个用户可存取;多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每个连接的用户都有一个进程。 2)数据库 数据库是数据的集合,物理上指存储数据库信息的一组操作系统文件,每个数据库有一个逻辑结构和物理结构。物理结构是指构成数据库的一组操作系统文件,主要由三种类型文件组成

值类型和引用类型

二次信任 提交于 2020-01-08 05:46:02
1***、C#中有两种类型: 值类型和引用类型: 值类型的变量直接包含他们的数据,而引用类型的变量存储 引用类型存储对他们的数据的引用,后者称为对象: 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象。 2***、 值类型:简单类型、枚举、结构 引用类型: 类类型、接口类型、数组类型和委托类型 3***、值类型与引用类型的内存存储 单纯的说值类型存储在栈上,引用类型存储在托管堆上是不对的。 4***、区别: 1、 托管堆: 同步块和方法表, x,y,托管堆上的需要GC来回收 线程堆栈: 没有同步块和方法表 2、 值类型赋值是重新创建一个副本 而引用类型的赋值是共享同一块内存(副本),是指向同一块内存(引用类型的名字相当于指向操作)。只是复制引用而不复制被引用识别的对象。(“引用”和“引用的对象”) 3、 值类型与引用类型的不同之处就在于值类型的变量直接包括他们的数据,而引用类型的变量把references存储到他们的数据库(Objects)中。 4、 所有的值类型从Object中继承来的。任何类型都不能由值类型派生而来,因此,值类型是封闭式的。 5***什么时候使用值类型 1)当类型是一个十分简单的类型,其中没有成员会修改类型的任何实例字段 2)类型不需要从其他任何类型继承 3)类型不会派生出其他任何类型 4)类型的实例较小 5

C#引用类型和值类型的区别

╄→гoц情女王★ 提交于 2020-01-08 01:26:24
1***、C#中有两种类型: 值类型和引用类型: 值类型的变量直接包含他们的数据,而引用类型的变量存储 引用类型存储对他们的数据的引用,后者称为对象: 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象。 2***、 值类型:简单类型、枚举、结构 引用类型: 类类型、接口类型、数组类型和委托类型 3***、值类型与引用类型的内存存储 单纯的说值类型存储在栈上,引用类型存储在托管堆上是不对的。 4***、区别: 1、 托管堆: 同步块和方法表, x,y,托管堆上的需要GC来回收 线程堆栈: 没有同步块和方法表 2、 值类型赋值是重新创建一个副本 而引用类型的赋值是共享同一块内存(副本),是指向同一块内存(引用类型的名字相当于指向操作)。只是复制引用而不复制被引用识别的对象。(“引用”和“引用的对象”) 3、 值类型与引用类型的不同之处就在于值类型的变量直接包括他们的数据,而引用类型的变量把references存储到他们的数据库(Objects)中。 4、 所有的值类型从Object中继承来的。任何类型都不能由值类型派生而来,因此,值类型是封闭式的。 5***什么时候使用值类型 1)当类型是一个十分简单的类型,其中没有成员会修改类型的任何实例字段 2)类型不需要从其他任何类型继承 3)类型不会派生出其他任何类型 4)类型的实例较小 5

web前端 | 博客(二)登录功能

扶醉桌前 提交于 2020-01-06 20:29:47
实现登录功能 创建用户集合,初始化用户 连接数据库 创建用户集合 初始化用户 为登录表单项设置请求地址,请求方式(GET方法会将参数放到地址栏中,不隐蔽,要用POST方法,它将参数放到消息体中,比较隐蔽)以及表单name属性 当用户点击登录按钮时,客户端验证用户是否填写了登录表单 如果其中一项没有输入,则阻止表单提交 服务器端请求接收参数,验证用户是否填写了登录表单(有时候客户端的js代码会被禁用,无法正确识别表单的准确性,故服务端的表单验证必不可少) 如果有一项没有输入,为客户端做出响应,阻止程序向下执行(例如,如果没有填写邮箱,则找不到该用户)(无论邮箱地址错误还是密码错误,一律提示两者都错,防止用户恶意猜出其他用户的账号密码) 根据邮箱地址查询用户信息 如果用户不存在,为客户端做出响应 如果用户存在,将用户名和密码进行比对 比对成功,则用户登录成功 比对失败,则则用户登录失败 数据库 数据库连接 在model中新建connect.js和user.js,分别用于数据库连接和创建用户集合。 connect.js //连接数据库 //引入mongoose第三方模块,这个对象下面有个connect方法用户连接数据库 const mongoose = require ( 'mongoose' ) ; //连接数据库 mongoose . connect ( 'mongodb:/

为什么密码比字符串更喜欢char []?

左心房为你撑大大i 提交于 2020-01-06 16:43:32
在Swing中,密码字段具有 getPassword() (返回 char [] )方法,而不是通常的 getText() (返回 String )方法。 同样,我遇到了不使用 String 处理密码的建议。 为什么在密码方面 String 会对安全构成威胁? 使用 char[] 感觉很不方便。 #1楼 这些都是原因,应该选择一个 char [] 数组而不是 String 作为密码。 1. 由于字符串在Java中是不可变的,因此,如果您将密码存储为纯文本格式,它将在内存中可用,直到垃圾回收器将其清除为止,并且由于字符串在字符串池中用于可重用性,因此很有可能长时间保留在内存中,构成安全威胁。 由于有权访问内存转储的任何人都可以以明文形式找到密码,这是另一个原因,您应该始终使用加密密码而不是纯文本。 由于字符串是不可变的,因此无法更改字符串的内容,因为任何更改都会产生一个新的字符串,而如果使用char [],仍可以将所有元素设置为空白或零。 因此,将密码存储在字符数组中可以明显减轻窃取密码的安全风险。 2. Java本身建议使用JPasswordField的getPassword()方法,该方法返回char [],而不建议使用不赞成使用的getText()方法,该方法以明文形式返回密码,以说明安全性原因。 遵循Java团队的建议并遵守标准而不是违背标准是很好的。 3.

3.1.1 HTML5存储

主宰稳场 提交于 2020-01-06 14:41:57
一.介绍 二.HTML5本地存储 (一).Localstorage (二).API (三).存储时效 (四).indexDB (五).indexDB-索引 (六).indexDB-游标 三.游标索引结合与区别 (一).IndexDB-游标索引结合 (二).indexDB-区别 四.课程总结 (一)介绍 1. 本地存储 : (1) .web storage (2) .IndexedDB 2. 本地存储的扩展介绍。 3. 离线存储-app cache。 4. 分析存储需求 : ( 1 ). 照顾2g,3g网络的体验。 ( 2 ). 流量节省。 ( 3 ). 在离线情况下使用。 cookie做不到,cookie的局限性:存储大小限制,仅4kb。单个域名下的数量限制,50个左右。污染请求头,浪费流量。 二.HTML5本地存储 (一)Localstorage localStorage和sessionStorage 1. 本地存储和离线存储相同的使用方法: ( 1 ). setItem方法设置存储内容。localStorage.setItem('Key', 'Value'); ( 2 ). getItem方法获取存储内容。localStorage.getItem('Key');//返回value值。 ( 3 ). 使用removeItem方法删除存储内容。(一个一个删)

Set集合

主宰稳场 提交于 2020-01-05 04:16:04
Set接口是Collection接口的子接口,Set集合是无序的(但子类中有很多都是有序的),不能有重复的元素,如果用add()加入一个已有的元素,会添加失败,返回false。 Set接口的继承关系: Set接口的常用实现类: 1、HashSet 按Hash算法来存储元素,具有良好的存储、查找性能。 元素无序,就是说排列顺序和添加顺序可能不同 不是同步的,如果多个线程同时访问、修改一个HashSet,必须要使用同步代码来保证同步。就是说HashSet不是线程安全的。 元素的值可以是null HashSet添加元素(存储)的机制: 先调用该元素的hashCode()方法获取hashCode值,根据hashCode值确定存储位置。 如果该位置上没有元素,则说明HashSet集合中没有与之相同的元素,直接在该位置存储该元素。 如果该位置已有元素,则使用equals()比较这两个元素,返回false则在此位置存储该元素(但这样会在一个位置存储多个元素,导致HashSet性能降低),返回true则添加失败,不存储此元素。 hash,被翻译为哈希、散列。hash算法的价值在于速度,它能快速查找被检索的对象。查询某个元素时,根据hashCode值直接定位元素的存储位置,实现快速查找。如果在HashSet中有多个元素的hashCode相同(在一个位置存储了多个元素),会导致查找性能下降。

Elasticsearch 教程--数据

瘦欲@ 提交于 2020-01-05 02:51:50
在Elasticsearch中,每一个文档都有一个版本号码。每当文档产生变化时(包括删除), _version 就会增大。在《版本控制》中,我们将会详细讲解如何使用 _version 的数字来确认你的程序不会随意替换掉不想覆盖的数据。 自增ID 如果我们的数据中没有天然的标示符,我们可以让Elasticsearch为我们自动生成一个。请求的结构发生了变化:我们把 PUT ——“把文档存储在这个地址中”变量变成了 POST ——“把文档存储在这个 地址下 ”。 这样一来,请求中就只包含 _index 和 _type 了: POST /website/blog/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" } 这次的反馈和之前基本一样,只有 _id 改成了系统生成的自增值: { "_index": "website", "_type": "blog", "_id": "wM0OSFhDQXGZAWDf0-drSA", "_version": 1, "created": true } 自生成ID是由22个字母组成的,安全 universally unique identifiers 或者被称为 UUIDs 。 3.1 文档 文档是什么? 在很多程序中

java容器

試著忘記壹切 提交于 2020-01-05 02:31:01
Collection容器 所有容器的父接口 容器可以存储任意类型的数据 内部存储的是地址 容器只能存储引用数据类型的数据(数据需要通过自动装箱实现) Collection的子接口包括List接口和set接口 格式 Collection 引用= new 子容器() 方法 迭代 iterator() 获取迭代器 增 add(Object) 增加指定元素 addAll(Collection) 将子容器的内容全部加入 删 remove(Object) 移除指定元素,只移除存储位置最前的一个 removeAll(Collection) 将子容器的内容移除 clear() 清空容器 retain(Collection) 获取交集return交集的容器 查 contain(Object) 查找单个元素 containAll(Collection) 查找子容器 size() 查找长度 判断 isEmpty() 判断是否为空 equals(Collection) 比较 转换 toArray() 转换为数组 遍历 增强for|for…each For(元素类型 引用: 容器){操作 } 迭代器 范型 在定义容器和迭代器时添加<>类型标签 Collectin<范型> 引用=new 子容器<范型>() Iterator<范型> 引用=容器.iterator() 迭代器 Iterator迭代器接口 定义获取

偏向锁,轻量级锁,自旋锁,重量级锁的详细介绍

守給你的承諾、 提交于 2020-01-04 05:15:49
何为同步?JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现,而方法同步是使用另外一种方式实现的,细节在JVM规范里并没有详细说明,但是方法的同步同样可以使用这两个指令来实现。monitorenter指令是在编译后插入到同步代码块的 开始位置 ,而monitorexit是插入到 方法结束处和异常处 , JVM要保证每个monitorenter必须有对应的monitorexit与之配对。 任何对象 都有一个 monitor 与之关联,当且一个monitor 被持有后,它将处于锁定状态。 线程执行到 monitorenter 指令时,将会尝试获取对象所对应的 monitor 的所有权,即尝试获得对象的锁。 Java对象头 锁存在Java对象头里。如果对象是数组类型,则虚拟机用3个Word(字宽)存储对象头,如果对象是非数组类型,则用2字宽存储对象头。在32位虚拟机中, 一字宽等于四字节,即32bit。 长度 内容 说明 32/64bit Mark Word 存储对象的hashCode或锁信息等 32/64bit Class Metadata Address 存储到对象类型数据的指针 32/64bit Array length 数组的长度(如果当前对象是数组)