Twisted网络编程必备
虽然还没有用到wisted,但是发现很多文章都提到它,还是不错的。它是异步的、事件驱动的网络函数库。其它的我也不知道。。
这里给出一些文章的链接,回头再看。
| 标签: 没有标签
虽然还没有用到wisted,但是发现很多文章都提到它,还是不错的。它是异步的、事件驱动的网络函数库。其它的我也不知道。。
这里给出一些文章的链接,回头再看。
| 标签: 没有标签
Berkeley DB XML入门
For dbxml-2.2.13
第一章 概观
本章内容的以dbxml-2.2.13为例,请使用dbxml-2.2.13
基础
BDB xml 以库的形式直接练到用户的应用程序,BDB XML也有一个命令提示符让用户在脱离编程环境的情况下访问xml文档,你可以把命令提示符作为你应用程序的管理工具.
在DBD xml中,所有的数据存储在成为”容器”(containers)的文件中,BDB xml shell
提供了简便的方式操纵”容器”和所有的DBD功能.
容器可以把整个XML文档存储为一个文档,或把其中的节点单独存储,当整体存储时,XML文档就是一个”容器”或一个系统文件,当存储节点时,xml被分割成小块,存储在”容器”中.
在”节点存储”模式下,取出的文档的格式就是你存储的的格式(除非你指定了格式输出),区别就在于你是怎么存储的.”节点存储”模式比”整个文档存储”提供更好的性能.所有默认是”节点存储”模式
使用SHELL
shell命令在BDB xml的安装目录的bin目录下,进入bin目录输入dbxml启动shell
如下
Bin>dbxml
d’b’xml>
BDB xml的语句有单行的和多行的.
BDB xml 用容器来存储文档 ,容器包含文档的集合,在一个容器中的多个文档可以结构不同,也可以相同.
开始我们的BDB xml之旅,首先创建一个容器,我们的第一个例子是一个简单的电话本,容器的名字叫phone.dbxml(扩展名不是必须为dbxml,但推荐这么写)
dbxml>createContainer phone.dbxml
因为我们现在所在的目录是bin>,所以phone.dbxml创建在bin目录下
创建完成后,shell会自动打开最后一个创建的容器.
接下来输入xml到phone.dbxml
(以’(单引号)包含输入的数据)
dbxml>putDocument phone1 ‘
(回车)
(回车)
Tom(回车)
Jones(回车)
(回车)
420-203-2033(回车)
‘(空格)s(回车)(s表示输入结束)
如果成功,则显示
Document added,name=phone1
再输入一条记录
dbxml> putDocument phone2 ‘
(回车)
(回车)
Lisa(回车)
Smith(回车)
420-992-4801(回车)
390-812-4292(回车)
‘(空格)s(回车)
如果成功,则显示
Document added, name = phone2
现在phone.dbxml中有了两条记录,在下面的例子中应用了几个基本的基于XPath 语句的XQuery查询 ,以后会有更复杂的XQuery 语句.
XPath语句是XQuery规范的一个主要部分,就像SELECT语句在sql中一样//注意collection (”phone.dbxml”)这个语句,我们也可以简单的写为collection ()表示我们的操作对象是当前打开的容器.
dbxml>query ‘collection (”phone.dbxml”) /phonebook/name/last/string();
查询成功后显示
2 objects returned for eager expression ‘
collection(”phone.dbxml”)/phonebook/name/last/string()’
显示一下找到的last name
dbxml>print
Jones
Smith
至此,第一个小试验已经成功
下面我们找一下 lisa的home phone number
dbxml>query ‘collection(”phone.dbxml”)/phonebook[name/first=”Lisa”]/phone[@type=”home”]/string()’
查询成功后显示
1 objects returned for eager expression ‘
collection(”phone.dbxml”)/phonebook[name/first […]
| 标签: Berkeley DB, index, xml
基于Lucene/XML的站内全文检索解决方案
作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com
写于:2003/05 最后更新:
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/weblucene.html
关键词:Lucene xml xslt web site search engine
内容摘要:
为Lucene做一个通用XML接口一直是我最大的心愿:更方便的在WEB应用中嵌入全文检索功能
提供了XML的数据输入接口:适合将原有基于各种数据库的数据源导入到全文索引中,保证了数据源的平台无关性;
通过了基于XML的搜索结果输出:方便了通过XSLT进行前台的结果显示;
MySQL […]
Berkeley DB XML是一种原生的XML数据库,它允许将XML文档内容直接存储在数据库中。
由此,我想可以用它来存储一些简单的、不经常更新的、但是要求快速查询的数据。
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bsddb.db import *
from dbxml import *
mgr = XmlManager()
uc = mgr.createUpdateContext()
container = mgr.openContainer("demo.dbxml", DB_CREATE)
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bsddb.db import *
from dbxml import *
mgr = XmlManager()
container = mgr.openContainer("demo.dbxml")
container.addAlias("demo")
qc = mgr.createQueryContext()
results = mgr.query("collection(’demo’)/result", qc)
for value in results:
document = value.asDocument()
print document.getName(), "=", value.asString()
在实际应用过程中,发现当大量数据同时插入的时候,会产生类似以下的错误:
Traceback […]
| 标签: Berkeley DB, python, xml, xquery
什么是自省?
在日常生活中,自省(introspection)是一种自我检查行为。自省是指对某人自身思想、情绪、动机和行为的检查。伟大的哲学家苏格拉底将生命中的大部分时间用于自我检查,并鼓励他的雅典朋友们也这样做。他甚至对自己作出了这样的要求:“未经自省的生命不值得存在。”(请参阅参考资料以获取关于苏格拉底更多信息的链接。)
在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。一旦您使用了支持自省的编程语言,就会产生类似这样的感觉:“未经检查的对象不值得实例化。”
本文介绍了 Python 编程语言的自省能力。整个 Python 语言对自省提供了深入而广泛的支持。实际上,很难想象假如 Python 语言没有其自省特性是什么样子。在读完本文时,您应该能够非常轻松地洞察到自己 Python 对象的“灵魂”。
在深入研究更高级的技术之前,我们尽可能用最普通的方式来研究 Python 自省。有些读者甚至可能会争论说:我们开始时所讨论的特性不应称之为“自省”。我们必须承认,它们是否属于自省的范畴还有待讨论。但从本文的主旨出发,我们所关心的只是找出有趣问题的答案。
现在让我们以交互方式使用 Python 来开始研究。当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入 Python 代码,而且立刻会从 Python 解释器获得响应。(本文中列出的命令可以使用 Python 2.2.2 正确执行。如果您使用较早的版本,则可能产生不同的结果或发生错误。可以从 Python 网站下载最新版本 [请参阅参考资料]。)
清单 1. 以交互方式启动 Python 解释器
$ python
Python 2.2.2 (#1, Oct 28 2002, 17:22:19)
[GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2
Type “help”, “copyright”, “credits” or “license” […]
| 标签: python
原文点击这里查看:(1), (2), (3)。
DBXML for PHP 并没有提供全部的 for C 方法
XmlManager
XmlManager::existsContainer()
XmlManager::createContainer()
XmlManager::openContainer()
XmlManager::removeContainer()
XmlManager::renameContainer()
XmlManager::createMemBufInputStream()
XmlManager::createDocument()
XmlManager::createQueryContext()
XmlManager::createUpdateContext()
XmlManager::prepare()
XmlManager::query()
XmlManager::createResults()
XmlManager::createModify()
XmlManager::createTransaction()
XmlManager::createIndexLookup()
XmlManager::upgradeContainer()
XmlContainer
XmlContainer::addAlias()
XmlContainer::addDefaultIndex()
XmlContainer::addIndex()
XmlContainer::close()
XmlContainer::deleteDefaultIndex()
XmlContainer::deleteDocument()
XmlContainer::deleteIndex()
XmlContainer::getAllDocuments()
XmlContainer::getContainerType()
XmlContainer::getDocument()
XmlContainer::getIndexNodes()
XmlContainer::getIndexSpecification()
XmlContainer::getName()
XmlContainer::getNumDocuments()
XmlContainer::lookupIndex()
XmlContainer::lookupStatistics()
XmlContainer::putDocument()
XmlContainer::removeAlias()
XmlContainer::replaceDefaultIndex()
XmlContainer::replaceIndex()
XmlContainer::setIndexSpecification()
XmlContainer::updateDocument()
XmlIndexLookup
XmlIndexLookup::execute()
XmlIndexLookup::getContainer()
XmlIndexLookup::getHighBoundOperation()
XmlIndexLookup::getHighBoundValue()
XmlIndexLookup::getIndex()
XmlIndexLookup::getLowBoundOperation()
XmlIndexLookup::getLowBoundValue()
XmlIndexLookup::getNodeName()
XmlIndexLookup::getNodeURI()
XmlIndexLookup::getParentName()
XmlIndexLookup::getParentURI()
XmlIndexLookup::setContainer()
XmlIndexLookup::setHighBound()
XmlIndexLookup::setIndex()
XmlIndexLookup::setLowBound()
XmlIndexLookup::setNode()
XmlIndexLookup::setParent()
附:安装PHP的dbxml扩展(windows下的暂时没有找到)
载 wget http://download.oracle.com/berkeley-db/dbxml-2.2.13.tar.gz
tar zxvf dbxml-2.2.13.tar.gz
cd dbxml-2.2.13
./buildall.sh
编译 Berkeley DB for php 模块
cd dbxml-2.2.13/db-4.3.29/php_db4
phpize
./configure –with-db4
make
make install
编译 Berkeley DB XML for php 模块
cd dbxml-2.2.13/dbxml/src/php
phpize
make
make install
修改php.ini
extension=db4.so
extension=dbxml.so
重启 apache
| 标签: Berkeley DB, PHP, xml
#!/usr/bin/env python
# $Id: examples.py,v 1.23 2005/09/25 23:36:42 gmf Exp $
# As of Python 2.3, there is a built-in module for Berkeley DB,
# called bsddb. The next uncommented line assumes that module is being used.
# If you are using your own bsddb3 module, use this line:
# from bsddb3.db import *
from bsddb3.db import *
from dbxml import *
book_content […]
| 标签: Berlekey DB, pyton, xml
字符串内码的转换,是开发中经常遇到的问题。
在Java中,我们可以先对某个String调用getByte(),由结果生成新String的办法来转码,也可以用NIO包里面的Charset来实现。
在Python中,可以对String调用decode和encode方法来实现转码。
比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作
s.decode(’gbk’).encode(’utf-8′)
可是,在实际开发中,我发现,这种办法经常会出现异常:
UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 30664-30665: illegal multibyte sequence
这是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。
这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字符串——有时候,就是整篇文章——就都无法转码。
幸运的是,tiny找到了完美的解决办法(我因此被批评看文档不仔细,汗啊……)
s.decode(’gbk’, ‘ignore’).encode(’utf-8′)
因为decode的函数原型是decode([encoding], [errors=’strict’]),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;
如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。
| 标签: 没有标签
关于原生XML数据库指导性的介绍
from: http://xiaohublog.bokee.com/4019048.html
by:小虎的网络生活
原文章: http://berkeleydb.net/man/bdbxml/intro_xml/index.html
关键词: BerkeleyDB ,BDB XML ,BDBXML
Berkeley DB 介绍
关于原生XML数据库指导性的介绍
法律通知
这个文档按照Sleepycat公共授权规定发布,你能够在http://www.sleepycat.com/download/oslicense.html查看这个授权文档。
Sleepycat软件,Berkeley DB, Berkeley DB XML和Sleepycat Logo是Sleepycat软件公司的商标或者服务标志,这些标志的版权是保留的,在没有经Sleepycat软件公司明确同意前,不允许第三方使用。
Java(TM)和所有基于Java的标志是Sun Micorsystems公司在美国和其它国家的商标或者注册商标。
要获取这个文档的原始源代码,请发邮件到:.
内容列表
1.介绍
基本概念
运行Shell
获取帮助
2.XQuery和Berlekey DB XML
加入数据
依靠文档结构查询
值查询
索引介绍
改造结果
排序结果
在多个容器的数据中工作
在特定文档数据中工作
用元数据
修改文档
Schema约束
Berkeley DB XML API
3.封装
好处
XML特征
数据库特征
语言和平台
4.哪里学习更多
Berkeley DB XML资源
XML资源
XQuery资源
Sleepycat软件的Berkeley DB XML(BDB XML)是一个嵌入式数据库规范,用来存储和获取XML格式的文档,它建立在成功的Berkeley DB之上, BDB XML支持用XQuery 1.0有效的查询上百万的XML文档。XQuery是设计用来验证和返回XML文档部分数据的查询语言。
本文档介绍BDB XML,以及用BDB XML命令行介绍一下它的一些特征。这是一个高层次的介绍,提供关于系统能做什么以及它如何应用到你的项目的一些基本介绍。本文档不是详细指南和参考手册,所以我们将省略技术细节,着重于用BDB XML能够做什么事情。你应该熟悉XML和XQuery基本概念。依照本文档,你能够用BDB XML shell来运行例子,并且很快熟悉BDB XML的能力。
第一章. 介绍
内容列表
基本概念
运行Shell
获取帮助
欢迎来到Berkeley DB XML(BDB XML),一个提供XQuery查询支持的原生XML数据库(NXD)引擎。这个文档将向你介绍BDB XML的特征。在读完这篇文档之后,你应该非常清楚BDB XML能为你做什么,并且知道如何在你的系统和应用程序中如何用它来管理数据。
基本概念
典型的,BDB XML是一个库,直接联结到你的程序中,另外,BDB XML有一个命令行工具Shell,允许你与BDB XML交互,而不用通常使用的程序语言。你能够将Shell作为你的应用程序的一部分,当作一个管理工具,或者简单的解释产品特征工具。
在BDB XML中,所有XML数据是存储在叫做容器的文件中,BDB XML Shell提供一个简单和方便的方法在这些容器中工作,并用友好的,交互式的环境暴露大多数BDB XML的功能,而不需要用程序语言。
允许Shell
Shell命令定位在/bin目录,名字未dbxml.
要运行shell,简单的在你的操作系统的命令行输入dbxml。假设你在操作系统命令行路径中包含dbxml shell,那么你将看到dbxml>提示。
user>dbxml
dbxml>
在后面的例子中,你将看到dbxml>提示后跟你要输入的命令,许多命令是简单的一行。可是,复杂的XQuery例子将分成多行。每个例子将展示输入的命令和输出结果。当输出太长时,省略号(…)将被用来代替中间结果。
当用BDB XML,你将发现文档内容时存储在一个容器中,这是BDB XML的第一个基本概念:容器装载XML文档。在一个容器中的文档可能也可能不共享同样的schema。
要开始探索BDB XML,建立一个容器。我们第一个例子模型是一个简单的电话本数据库。容器名称将是phone.dbxml。
dbxml>createContainer phone.dbxml
Creating document storage […]
| 标签: Berkeley DB, xml
Berkeley DB
产品首页 , 官方下载地址
Berkeley DB XML
产品首页 , 官方下载地址
首先,我们可以通过一个简单的例子来说明如何使用bsddb:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bsddb import *
demodb = hashopen(’demo.db’, ‘c’)
for i in range(10):
demodb[’%d’%i] = ‘%d’%(i*i)
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bsddb.db import *
from dbxml import *
mgr = XmlManager()
uc = mgr.createUpdateContext()
container = mgr.openContainer("demo.dbxml", DB_CREATE)
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bsddb.db import *
from dbxml import […]
| 标签: 没有标签