数据项

Enterprise Library: Caching Application Block概述

假装没事ソ 提交于 2020-04-06 00:50:30
Enterprise Library: Caching Application Block 概述 Written by: Rickie Lee (rickieleemail#yahoo.com) My blog: http://www.cnblogs.com/rickie Enterprise Library 中 Caching Application Block 允许开发人员在应用程序中采用本地缓存( Cache ),它支持内存缓存和可选的辅助存储器( Enterprise Library Data Access Application Block 或隔离的存储器( Isolated storage ))。该 Application Block 提供了检索、增加和删除缓存数据的所有功能,还包括可配置的有效期和清除策略( Expiration and Scavenging Policies )。 在创建企业级分布式应用程序时,架构师和开发人员经常面临许多挑战,缓存技术可以帮助克服如下一些挑战: 性能( Performance ):通过存储相关的数据尽可能靠近数据消费者,缓存提供了应用程序的性能。这样可以避免重复的数据创建、处理和传输。 可扩展性( Scalability ):随着应用程序需求的增加,缓存信息有助于节省资源并提高可扩展性。 可用性( Availability )

PowerDesigner使用教程 —— 概念数据模型

自闭症网瘾萝莉.ら 提交于 2020-03-24 14:15:17
一、概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。 通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系 (Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个 DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。 CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的 静态特性、动态特性以及完整性约束条件 等,其中包括了 数据结构、数据操作和完整性约束 三部分。 1)数据结构表达为实体和属性; 2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作; 3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等); 二、实体、属性及标识符的定义 实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,学校中的每个学生,医院中的每个手术。每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。如学生实体可由学号

多列索引结构和原理

半城伤御伤魂 提交于 2020-03-21 23:32:43
本文摘抄自美团的技术博客 MySQL索引原理及慢查询优化 索引的数据结构 前面讲了生活中索引的例子,索引的基本原理,数据库的复杂性,又讲了操作系统的相关知识,目的就是让大家了解,任何一种数据结构都不是凭空产生的,一定会有它的背景和使用场景,我们现在总结一下,我们需要这种数据结构能够做些什么,其实很简单,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生。 详解b+树 如上图,是一颗b+树,关于b+树的定义可以参见 B+树 ,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存在于叶子节点即3、5、9、10、13、15、28、29、36、60、75、79、90、99。非叶子节点只不存储真实的数据,只存储指引搜索方向的数据项,如17、35并不真实存在于数据表中。 b+树的查找过程 如图所示,如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,内存时间因为非常短

SQL注入详解

↘锁芯ラ 提交于 2020-03-11 17:02:08
今天跟大家分享SQL注入的知识。 前言 先来看一副很有意思的漫画: 相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊SQL注入相关的内容。 1 何谓SQL注入? SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。 SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。 这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。 多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。 SQL数据库操作示例: import sqlite3 连接数据库: conn = sqlite3 . connect ( 'test.db' ) 建立新的数据表: conn . executescript ( '' 'DROP TABLE IF EXISTS students ; CREATE TABLE

2020春招

笑着哭i 提交于 2020-03-11 02:20:46
文章目录 知识点 参考文献 知识点 逻辑结构和物理结构 【1】 数据对象、数据元素、数据项 【2】 平衡二叉树 【3】 参考文献 【1】 http://www.tilaile.com/question/24144 【2】 数据、数据元素、数据项、数据对象的理解 【3】 百度百科:平衡树 【4】 来源: CSDN 作者: lordofadventure 链接: https://blog.csdn.net/lordofadventure/article/details/104780224

测试用例规范

前提是你 提交于 2020-03-08 15:01:07
[+] 目的 范围 术语解释 测试用例原则 1 系统性 2 连贯性 3 全面性 4 正确性 5 符合正常业务惯例 6 仿真性 7 可操作性 测试用例主要元素 测试用例编写规范 1 常规的测试用例 2 初始化的测试用例 3 边界的测试用例 4 空值的测试用例 5 格式错误的测试用例 6 溢出的测试用例 7 关联的测试用例 8 唯一值的测试用例 9 权限不足的测试用例 10 角色权限的测试用例 测试用例编写细则 1 测试用例命名规则 2 测试用例编号规则 测试用例编写方法 1 测试用例编写准备 2 测试用例编写方法 1 目的 统一 用例编写的规范,为测试设计人员提供测试用例编写的指导,提高编写的测试用例的可读性,可执行性、合理性。为测试执行人员更好执行测试,提高测试效率,最终提高公司整个产品的质量。 测试 2 范围 适用于集成 测试 用例和 用例的编写,现在编写用例的辅助工具为 系统测试 TestDirector 8.0。 3 术语解释 集成测试: 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。 系统测试 : 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的 “先知者问题 ”。 4 测试用例原则 4.1 系统性 1.

MySQL索引原理与慢查询优化

房东的猫 提交于 2020-03-06 17:59:57
索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者w开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成? 索引原理 除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等。它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。 数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等。数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据。但如果是1千万的记录呢,分成几段比较好?稍有算法基础的同学会想到搜索树,其平均复杂度是lgN,具有不错的查询性能。但这里我们忽略了一个关键的问题,复杂度模型是基于每次相同的操作成本来考虑的,数据库实现比较复杂,数据保存在磁盘上

android3.0 widget

半世苍凉 提交于 2020-03-02 19:09:44
本文翻译整理自: http://developer.android.com/guide/topics/appwidgets/index.html#preview 前言 在Android3.0中,增加了大量的APP Widgets功能,在本文中将详细介绍它们。 一,设置预览图片 在Android 3.0版本中,增加了 previewImage 属性,它用于指明 App Widget的预览图片,它将在用户选中该App Widget的图标,打算添加该App Widget时,进行显示,以便用户了解该App Widget的界面。如果没提供预览图标的话,显示的将是你的App Widget的启动图标。该属性和AndroidManifest.xml中的<receiver>元素的android:previewImage的属性一致。你可以在XML定义该属性,如 示例1 示例1: <appwidget-provider xmlns:android = "http://schemas.android.com/apk/res/android" ... android:previewImage = "@drawable/preview" > </appwidget-provider> Android emulator提供了一个叫做"Widget Preview"的APK应用程序,以便创建你的App

Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter

房东的猫 提交于 2020-02-28 21:33:38
总结: Adapter相当于一个数据源,可以给AdapterView提供数据,并根据数据创建对应的UI,可以通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作为数据源。 Adapter接口 : Adapter接口定义了如下方法: public abstract void registerDataSetObserver (DataSetObserver observer) Adapter表示一个数据源,这个数据源是有可能发生变化的,比如增加了数据、删除了数据、修改了数据,当数据发生变化的时候,它要通知相应的AdapterView做出相应的改变。为了实现这个功能,Adapter使用了观察者模式,Adapter本身相当于被观察的对象,AdapterView相当于观察者,通过调用registerDataSetObserver方法,给Adapter注册观察者。 public abstract void unregisterDataSetObserver (DataSetObserver observer) 通过调用unregisterDataSetObserver方法,反注册观察者。 public abstract int getCount () 返回Adapter中数据的数量。 public abstract Object getItem

为什么要使用索引?

烂漫一生 提交于 2020-02-27 04:17:38
为什么要使用索引? 什么是索引? MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。   影响数据库效率的原因千千万万,使用索引是为了解决哪方面的数据库的瓶颈? 点一 MySQL 数据库存储数据最终是以文件的形式存储到硬盘的。一般来说,我们在程序中使用的时候肯定要把磁盘文件中的数据读到内存中。那么就这个 “读” 的过程是什么样子的呢?磁盘读取数据靠的是机械运动,每次读取数据花费的时间可以分为寻道时间、旋转延迟、传输时间三个部分,寻道时间指的是磁臂移动到指定磁道所需要的时间,主流磁盘的寻道时间一般在5ms以下;旋转延迟就是我们经常听说的磁盘转速,比如一个磁盘7200转,表示每分钟能转7200次,也就是说1秒钟能转120次,旋转延迟就是1/120/2 = 4.17ms(旋转延迟等于磁盘转动半圈时间);传输时间指的是从磁盘读出或将数据写入磁盘的时间,一般在零点几毫秒,相对于前两个时间可以忽略不计。那么访问一次磁盘的时间,即一次磁盘IO的时间约等于5+4.17 = 9ms左右,听起来还挺不错的,但要知道一台 500 - MIPS 的机器每秒可以执行5亿条指令,因为指令依靠的是电的性质,换句话说执行一次IO的时间可以执行40万条指令(如果以 CPU 的指令执行效率来比较的话),数据库动辄十万百万乃至千万级数据,每次9毫秒的时间,显然是个灾难