档案日期2014的16

2014年4月21日 - 2014年4月27日

构造Huffman树并计算带权路径长度

描述
构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权。使得这个扩充二叉树的叶节点带权外部路径长度总和最小:
Min( W1 * L1 + W2 * L2 + W3 * L3 + „ + Wn * Ln) Wi:每个节点的权值。
Li:根节点到第i个外部叶子节点的距离。 编程计算最小外部路径长度总和。
输入
对于每组测试数据,第一行输入一个整数n,外部节点的个数。第二行输入n个整数,代表各个外部节点的权值。 2<=N<=100
输出
输出最小外部路径长度总和。
总时间限制: 1000ms内存限制: 65535kB
样例输入
3
1 2 3 
4
1 1 3 ...

继续阅读

SAE新浪云Python添加Django模块

目前SAE预装模块中提供的Django版本包括1.2.7,1.4和1.5,暂不包含1.6及以上版本。

SAE Python可以添加自定义版本的Django模块,假设当前代码版本号为1,步骤如下:

1. 修改1/mysite/wsgi.py文件,将内容变更为:


import os
import sys

root = os.path.dirname(__file__)

sys.path.insert(0, os.path.join(root, '..', 'site-packages'))
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix ...

继续阅读

Infobright数据仓库技术

Dominik S´ le¸ zak Infobright Inc. 波兰 slezak@infobright.com
Victoria Eastwood Infobright Inc. 加拿大 victoriae@infobright.com

1. 引言

Infobright社区版 (ICE,开源) 与 Infobright 企业版 (IEE,商业许可) 能够对TB数量级的数据执行即席查询[13]。MySQL 可插拔式的存储引擎架构可以帮助用户轻松入门,并提供丰富的数据库功能[19]。基于数据压缩 (参见[11]),列式数据存储 (参见[16]),自适应查询处理 (参见[9]),以及粗糙集理论(参见[22]) 的内部机制为我们的数据仓库应用提供了良好的性能和可伸缩性,既不需要专门的硬件,也不需要高级的调优。

我们方法的关键在于将数据划分为“粗糙行”,每一个粗糙行由64K个原始行组成。我们自动地对粗糙行加上标签,这些标签是与它们数据列值相关的复合信息,通常还包括多列及多表的对应关系。利用这种方式(首先在[27]中被拟定),我们创造出新的信息系统(参见[8]),其对象对应于粗糙行和各种类型粗糙信息的属性。在这种新框架下,数据库操作可以得到有效的支持,并且在粗糙信息不充分时对实际数据的访问也可用。ICE和IEE都基于使用粗糙信息最小化和最优化数据访问的若干算法。

论文的组织结构如下:第2和第3章介绍体系结构和技术的基础知识。第4章展示两个关于粗糙信息结构的例子。第5和第6章描述两个关于核心方法的例子:迭代式的粗糙/精确查询过程和对粗糙信息的无缝式重计算。第7和第8章讨论两个研究项目的例子:关于近似查询的调查和智能数据组织。第9章总结全文。

2. INFOBRIGHT体系结构

Infobright数据仓库软件的ICE与IEE版本都基于同样的体系结构组件。当然,它们在功能上(IEE支持数据的增加/更新/删除操作),以及对操作系统的支持上(ICE同时支持Linux和Windows)有不同之处。IEE商业认购版(在论文中未做讨论)可能在大规模工业应用上更具有优势。另一方面,ICE则提供了一个可供外部开发人员贡献代码的框架。关于ICE与IEE对比的进一步讨论可以参考Infobright论坛。

图1在尽可能高的层次上模拟了我们的体系结构。MySQL管理服务用来做连接池。MyISAM引擎则用来存储诸如表定义、视图和用户权限等目录信息。我们有一套快速批量数据加载的方法。IEE额外地支持更多的MySQL特有的加载机制。我们使用MySQL的查询重写和解析,但是替换了查询优化的主要部分。MySQL优化器作为一个与MySQL存储引擎接口相连的子模块被保留。我们在特殊场合,尤其是在IEE中支持数据的增加/更改/删除操作时使用它。

我们使用“知识网格”这个术语来对第一章中提到过的粗糙信息进行定址。我们对于这个术语的解释不同于其在网格计算或者语义网络[3]中的定义,虽然知识网格作为查询引擎和数据之间的媒介时在某种程度上与它们有一些相似之处。Infobright知识网格中的元素被称为“知识节点”,不要与网格/分布式/并行体系结构[10]相混淆。在本文中,我们只提供了关于知识节点的几个例子。如果想了解关于这个领域的更多细节,可以参照[29]。

ICE 和 IEE的核心组件与MySQL集成

Figure 1 ICE 和 IEE的核心组件与MySQL集成。专用于可插拔存储引擎的标准 MySQL 优化器被整合为更高级的Infobright优化器和执行器的一部分。

图1底部的“数据包”通过对数据执行垂直和横向的分解得到。如第一章中所述,我们将行分组为粗糙行。对于每一个粗糙行,我们分别对每一列进行存储。由此得到的包通过[28]中描述的算法进行分解和管理。现在,数据行只按照粗糙行的形式进行组织。我们在第8章中讨论在未来关于这方面的扩展。

知识网格包含于数据包直接相连的数据包节点。数据包节点提供最基本的统计并能够顺利地对数据包进行访问。它们的用法与一些其他的数据库体系结构[18]部分类似。围绕知识网格额更高级的组件和方法是Infobright所独有的。 ...

继续阅读

Django设置301域名重定向

Django网站域名发生迁移变更时,如何告知搜索引擎?

这时需要使用301重定向,把通过旧域名URL访问站点的用户引导至新的域名。

301 Moved Permanently是服务器返回的HTTP头信息(header)中的状态码的一种。当用户或搜索引擎向网站服务器发出浏览请求时,返回301状态码代表网页永久性地迁移到了另一个URL。

例如,网站迁移到了新的域名:www.example.com,修改wsgi.py,在尾部添加如下代码:


import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()

DOMAIN_NAME = 'www.example.com'
def application(environ, start_response):
  if environ['HTTP_HOST'] != DOMAIN_NAME:
    location = DOMAIN_NAME + environ['PATH_INFO']
    if environ.get('QUERY_STRING'):
      location += '?' + environ['QUERY_STRING']
    start_response('301 Redirect', [('Location', location),])
    return []
  return ...

继续阅读

每日归档

上周

下周

归档