C#组件开发人员
什么时候使用override?什么时候使用new? 什么叫shadowing?
重写父类的方法的时候用override以实现多态,当你想屏蔽父类成员的时候使用new,shadowing基本就是new与override区别等一些方面的问题,个人认为弄清override与new就没有必要特意考虑shadowing。
解释virtual、sealed、override和abstract的区别?
virtual是声明虚方法的关键字,说明该方法可以被重写,sealed说明该类不可被继承,override重写基类的方法,abstract表明一个类是抽象类或者一个方法是抽象方法,抽象方法不提供实现,由子类中重写这个抽象方法的方法实现,抽象类不可实例化。
Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解释这个字符串每个部分的重要性和作用 ?
程序集的名字、版本(主版本、次版本、内部版本号、修订号)、Culture(文化)如zh-CN,公钥(缩略码),这些是强名程序集的标志。
解释public、protected、private和internal的区别。
标记public后可被在类的内部或外部访问,protected只能被其自身内部或其子类访问,private只能在其内部访问,internal只能在相同的程序集中被访问。
使用Primary Interop Assembly( ......
像在座的各位一样,由于自身的兴趣,我对AJAX编程方面的研究是持续不断的。随着该领域的深入,我越来越发觉所谓的浏览器DOM,即HTML DOM,是一个非常值得关注的点。这观点在与同行们交换意见的时候也曾谈到过,就是,我们仍然缺乏具有深度的、规范的DOM Level 1辅助读物,网络上搜索也比较少见。而我们真实的想法在于,我们工作的时候不仅仅是去翻阅工具库/API那些高级的抽象内容。
因此我打算在本文中拨开其中的云雾,如果您乐于用“DOM-脚本”做很多的事,那么接下来课题内容就不容错过了。内容的主题便是,为什么开发者要认为“DOM Level 1规范的架构”是至关重要的,其突出的重要性在哪里等等,以及还有HTML DOM和XML之间微妙的区别,和内在的联系。
W3C所制订的DOM Level分为两大模块:Core和HTML。第一个大模块是Core核心,W3C规范是这样描述Core的:
“满足软件开发者和Web脚本编写者,访问和操控产品项目中包含的可解析的HTML和XML内容。”
"sufficicent to allow software developers and web script authora to access and mainipulate parsed HTML and XML content inside conforming products."
第二个HTML模块,其 ......
像在座的各位一样,由于自身的兴趣,我对AJAX编程方面的研究是持续不断的。随着该领域的深入,我越来越发觉所谓的浏览器DOM,即HTML DOM,是一个非常值得关注的点。这观点在与同行们交换意见的时候也曾谈到过,就是,我们仍然缺乏具有深度的、规范的DOM Level 1辅助读物,网络上搜索也比较少见。而我们真实的想法在于,我们工作的时候不仅仅是去翻阅工具库/API那些高级的抽象内容。
因此我打算在本文中拨开其中的云雾,如果您乐于用“DOM-脚本”做很多的事,那么接下来课题内容就不容错过了。内容的主题便是,为什么开发者要认为“DOM Level 1规范的架构”是至关重要的,其突出的重要性在哪里等等,以及还有HTML DOM和XML之间微妙的区别,和内在的联系。
W3C所制订的DOM Level分为两大模块:Core和HTML。第一个大模块是Core核心,W3C规范是这样描述Core的:
“满足软件开发者和Web脚本编写者,访问和操控产品项目中包含的可解析的HTML和XML内容。”
"sufficicent to allow software developers and web script authora to access and mainipulate parsed HTML and XML content inside conforming products."
第二个HTML模块,其 ......
XML文档分割成小块
当你要把XML文档分割成小块时,你要读取输入文档,创建输出文档和转换子文档。不管是在C++还是FOAL中的脚本中,CMarkup都使它变得简单。对于很大的XML文档,在提取子文档是使用CMarkup读取文件模式就可用很少的内存读取它。
关键问题是,当你分割XML文档时你想在那个地方分割?可以是一个合乎逻辑的根目录划分成子文档,也可以简单的按照文件大小来划分,就像把一个ten million大小的对象划分成one million大小的。
下面的C++代码是把一个包含N million个对象的XML文档分割成N个包含1 million个对象的文件。
这是程序的思想:
· 声明两个Cmarkup类的对象,一个是要被分割的输入文档,一个是输出文档
· 在循环读取所有对象时先打开那个巨大的输入文档
· 使用输出文档数形式的文件名打开一个输出文档
· 把输入文档的对象子文档转化成输出文档,直到对象计数达到最大值
· 关闭输出文档,重置对象计数器,输出文档计数器++
· 如果还没有达到输入文档的结尾,像上面得方法那样打开一个新的输出文档
· 达到了输入文档的结尾,跳出循环,关闭输出文档,关闭输入文档
// Split XML
......
一直以来读取xml都是通过DataSet的ReadXML方法来解决,其他属性也都没有使用。在数据量小的时候倒也相安无事,直到今天读取一个20M的XML流才发现实在太影响效率了。
默认情况下,ReadXML缺省情况下使用XmlReadMode.Auto方式读取,用以前的作法,由于xml文件里没有包含Scheme,DataSet会先推断xml的结构,然后再加载数据。可是对一个20M的流推断其结构效率可想而知。如果XmlReadMode采用的是除Auto和InferSchema(同样根据数据推断结构)之外的成员,那么除了行数会相应增加外,内容都被忽略。
如何解决这个讨厌的问题呢,其实也很简单先给DataSet提供Schema(ReadXmlSchema方法),XmlReadMode设为IgnoreSchema即可。经过测试处理时间由几分钟提高到几秒。示例如下:
DataSet ds = new DataSet();
using (StringReader sr = new StringReader( xxx ))
{
ds.ReadXmlSchema(sr);
}
ds.Tables[0].BeginLoadData();
using (StringReader sr = new StringReader( xxx ))//(***)代表xml文件路径
{
ds.ReadXml(sr, XmlReadMode.IgnoreSchema);
}
ds.Tables[0].EndLoadData(); ......
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DomTree {
public Document doc;
public Element svg;
public DomTree(File file){
String parser=XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory fac=new SAXSVGDocumentFactory(parser);
if(doc == null)
{
//异常点.............
......
这是一个用c#控制台程序下, 用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。
假设有XML文件:books.xml
Xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo> ......
这是一个用c#控制台程序下, 用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。
假设有XML文件:books.xml
Xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo> ......