C# XML文件基础

文章目录

  • 一、XML介绍
    • 1.1 概念
    • 1.2 例子
    • 1.3创建一个xml文件
  • 二、读取XML文件
    • 2.1加载XML文件
    • 2.2 获取根节点、读取信息、对象映射、填充结构,绑定用户界面
    • 2.3 遍历节点、
    • 2.4例子源代码

一、XML介绍

1.1 概念

在C#中,XML文件是一种用来存储和传输数据的标记语言文档。XML代表可扩展标记语言(eXtensible Markup Language)。它设计用来传输和存储数据,具有自我描述性,并且对人和机器都是可读的。

XML文件的作用包括:

  1. 数据存储: XML是一种流行的方式,用于存储应用程序设置、配置信息或其他数据。例如,微软的.NET框架中的配置文件(如 app.configweb.config)就是XML格式的。

  2. 数据交换: 由于其文本本质和广泛的可读性,XML是一个常用的数据交换格式,可以在不同的系统和程序间传递信息,尤其是在Web服务和SOA(面向服务的架构)中。

  3. 数据结构描述: XML可以描述数据的结构,通过元素和属性来表示数据的层次和语义。这对于确保数据的一致性和完整性很有帮助。

  4. 平台无关性: 作为一个文本格式,XML文件可以在不同的操作系统和环境间轻松地移植和使用。

  5. 可扩展性: 如其名称所示,XML是可扩展的,这意味着你可以设计自己的标记元素和文档结构,以满足特定的需要,而不必依赖于标准的数据格式。

  6. 支持国际化: XML支持Unicode,使得它可以表示几乎所有人类语言中的文本,这对于国际化的应用程序来说非常重要。

  7. 验证: 使用XML Schema定义语言(XSD),可以定义XML文档的结构和数据类型,并对XML文档进行验证,确保数据的正确性。

  8. 转换和呈现: 使用XSLT(Extensible Stylesheet Language Transformations),可以把XML文档转换为其他格式的文档,例如HTML,用于在浏览器中显示。

在C#中操作XML文件,你可以使用System.Xml命名空间中的类,如XmlDocument, XmlReader, XmlWriter, XmlSerializer等,来读取、修改、创建和序列化XML文档。

1.2 例子

在C#或其他编程语言中,有专门的库和工具可以帮助开发者生成或解析XML格式的数据,而不需要手动编写或解析XML的标签和结构。这些工具通常为数据提供了一个高层抽象,允许开发者用编程语言中的数据结构来操作数据,然后这些工具负责将这些数据结构转换成合适的XML格式,或者将XML数据解析成可在程序中使用的数据结构。所以不用去细致了解它的语法;

以下是一个简单的XML文件内容的例子,它描述了一个图书馆中书籍的集合:


<library>
  <book id="1">
    <title>The Great Gatsbytitle>
    <author>F. Scott Fitzgeraldauthor>
    <year>1925year>
    <genre>Fictiongenre>
  book>
  <book id="2">
    <title>Nineteen Eighty-Fourtitle>
    <author>George Orwellauthor>
    <year>1949year>
    <genre>Dystopiangenre>
  book>
  <book id="3">
    <title>To Kill a Mockingbirdtitle>
    <author>Harper Leeauthor>
    <year>1960year>
    <genre>Fictiongenre>
  book>
library>

这个XML文档遵循以下结构和特点:

  • XML声明: 是XML声明,它定义了这个文档的XML版本和字符编码。

  • 根元素: 标签是文档的根元素,所有其他元素都包含在其中。

  • 元素(或标签):</code>、<code><author></code>、<code><year></code> 和 <code><genre></code>。每个 <code><book></code> 元素表示图书馆中的一本书。</p> </li> <li> <p><strong>属性:</strong> <code><book></code> 元素中的 <code>id</code> 是一个属性,它为每本书提供了一个唯一的标识符。</p> </li> <li> <p><strong>文本内容:</strong> 标签如 <code><title></code> 和 <code><author></code> 的文本内容存储了书的标题和作者。</p> </li> </ul> <p>XML文件可以被各种程序和服务用来读取、显示和处理图书馆集合中书籍的信息。因为XML是可扩展的,所以如果需要,我们可以很容易地添加更多的数据字段,比如出版社、ISBN号,或者其他元数据。</p> <h3>1.3创建一个xml文件</h3> <p>假设我们有一个C#对象,并希望将其转换为XML,我们可以使用 XmlSerializer 来序列化这个对象:</p> <pre><code>using System; using System.IO; using System.Xml.Serialization; // 假设有一个Book类 public class Book { public string Title { get; set; } public string Author { get; set; } public int Year { get; set; } public string Genre { get; set; } } class Program { static void Main() { // 创建一个Book实例 Book myBook = new Book { Title = "The Great Gatsby", Author = "F. Scott Fitzgerald", Year = 1925, Genre = "Fiction" }; // 创建一个XmlSerializer对象来进行序列化 XmlSerializer serializer = new XmlSerializer(typeof(Book)); // 使用StreamWriter写入文件 using (StreamWriter writer = new StreamWriter("D:\\IDE\\book.xml")) { serializer.Serialize(writer, myBook); } Console.WriteLine("XML文件已生成。"); } } </code></pre> <p><a href="http://img.e-com-net.com/image/info8/a9e4c2724b82421f9bce08651e9e88a1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a9e4c2724b82421f9bce08651e9e88a1.jpg" alt="C# XML文件基础_第1张图片" width="650" height="165" style="border:1px solid black;"></a></p> <p>于是在我们的目标地址生成了这样的一个文件,而且无法被打开。需要注意的是:在上面的例子,.NET中对XML的处理主要是对象到XML的转换,所以使用XmlSerializer更合适。<br> 如果涉及到需要读取或修改XML文档,或者创建新的XML文档结构,那么XmlDocument可能更适合。此外,XmlDocument在.NET Core中被一个更快和更现代的XDocument类(位于System.Xml.Linq命名空间下)所替代,它提供了LINQ集成和更简洁的API。</p> <h2>二、读取XML文件</h2> <p>假如我们得到了一个这样的XML文件,我们需要使用C#文件读取,文件是这样,里面记载了几个班级学生的信息(姓名 年龄 行别 班级):</p> <pre><code><?xml version="1.0" encoding="utf-8" ?> <Students> <Student> <StuName>王五</StuName> <StuAge>19</StuAge> <Gender>男</Gender> <ClassName>机械1班</ClassName> </Student> <Student> <StuName>王六</StuName> <StuAge>22</StuAge> <Gender>男</Gender> <ClassName>机械2班</ClassName> </Student> <Student> <StuName>刘九</StuName> <StuAge>21</StuAge> <Gender>男</Gender> <ClassName>机械3班</ClassName> </Student> <Student> <StuName>阿红</StuName> <StuAge>23</StuAge> <Gender>女</Gender> <ClassName>机械4班</ClassName> </Student> <Student> <StuName>阿七</StuName> <StuAge>20</StuAge> <Gender>女</Gender> <ClassName>机械5班</ClassName> </Student> <DataInfo> <Version vNo="1.2" pTime="2012-12-12">数据版本信息</Version> </DataInfo> </Students> </code></pre> <p>我们希望可以这样显示出来:<br> <a href="http://img.e-com-net.com/image/info8/a5f3814f017943b6ad64999f954a8c28.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/a5f3814f017943b6ad64999f954a8c28.png" alt="C# XML文件基础_第2张图片" width="377" height="223" style="border:1px solid black;"></a><br> 应该怎么办呢,我们可以按照这样的步骤来进行:</p> <ol> <li> <p><strong>加载XML文件:</strong></p> <ul> <li>使用<code>XmlDocument</code>类或者<code>XDocument</code>类(如果是使用LINQ to XML)来加载XML文件。这通常通过调用这些类的<code>Load</code>方法来实现,传入文件的路径或者一个<code>Stream</code>对象。</li> </ul> </li> <li> <p><strong>获取根节点:</strong></p> <ul> <li>通过<code>DocumentElement</code>属性(对于<code>XmlDocument</code>)或者<code>Root</code>属性(对于<code>XDocument</code>)来获取XML文档的根节点。</li> </ul> </li> <li> <p><strong>遍历节点:</strong></p> <ul> <li>使用循环结构遍历根节点的子节点。如果XML结构更为复杂,可能需要嵌套循环或递归方法来遍历子节点的子节点等。</li> </ul> </li> <li> <p><strong>读取节点信息:</strong></p> <ul> <li>根据节点的类型或名称获取所需的信息。这可能包括节点的文本内容(通常是<code>InnerText</code>或<code>Value</code>属性)以及节点的属性(可以通过<code>Attributes</code>集合或直接访问特定属性)。</li> </ul> </li> <li> <p><strong>对象映射:</strong></p> <ul> <li>将读取的XML数据映射到对象属性。创建对象实例,根据XML节点的内容来设置对象的属性。这个步骤通常需要你有一个与XML数据结构相对应的对象模型。</li> </ul> </li> <li> <p><strong>填充数据结构:</strong></p> <ul> <li>如果要处理多个相似的节点(例如,在XML中表示多个学生的多个<code>Student</code>节点),则可以创建对象的集合,如<code>List<T></code>。读取每个节点的信息,创建并填充对象实例,然后将对象添加到集合中。</li> </ul> </li> <li> <p><strong>绑定到用户界面(可选):</strong></p> <ul> <li>将对象集合绑定到用户界面控件,如在Windows窗体中的<code>DataGridView</code>。这允许自动地将集合中的数据显示在用户界面上。</li> </ul> </li> <li> <p><strong>异常处理(建议):</strong></p> <ul> <li>添加异常处理逻辑来捕获并处理可能发生的任何错误,例如文件找不到、文件损坏或XML结构不匹配等异常情况。</li> </ul> </li> </ol> <p>接下来我们就按照这个步骤完后读取xml文件的任务。</p> <h3>2.1加载XML文件</h3> <pre><code>XmlDocument xml_Doc = new XmlDocument(); //【1】创建XML文档操作对象 xml_Doc.Load("StuScore.xml"); //【2】加载XML文件到文档对象中(路径) </code></pre> <p>我们先实例化一个XmlDocument对象,名为xml_Doc。XmlDocument是.NET框架中的一个类,它提供了一个表示XML文档的对象模型。这个类可以用来加载、编辑和保存XML文档。此时,xml_Doc是一个空的XML文档对象,还没有加载任何数据。</p> <p>接下来我们使用了xml_Doc对象(其实还是XmlDocument的方法)的Load方法,以加载一个名为"StuText.xml"的XML文件。这里的字符串"StuText.xml"指定了XML文件的名称和路径。如果没有指定路径,程序将在应用程序的当前工作目录中查找该文件。(这里就是文件在程序目录中,所以没有具体路径)。<br> 当调用Load方法时,会有下面几种情况:</p> <p>XmlDocument对象xml_Doc会尝试找到并打开指定的XML文件。<br> 如果成功找到并能够访问该文件,XmlDocument将读取文件的内容,并基于这些内容构建内部的DOM(文档对象模型)树。这个DOM树是一个节点的层次结构,它表示XML文档的结构,可以通过程序进行查询和修改。<br> 如果在加载过程中发现任何语法错误(比如不匹配的标签、不正确的属性格式等),将抛出一个XmlException异常,所以需要在调用Load方法的代码周围添加相应的异常处理逻辑(try-catch块)来捕获并处理这些异常。<br> 加载完毕后,可以通过xml_Doc对象访问和操作XML文档的内容。例如,可以读取特定的节点、属性或进行其他的查询和修改操作。这些操作可以用来提取数据,或者在内存中对XML文档进行更改,并最终将更改写回到文件或其他输出流中。</p> <h3>2.2 获取根节点、读取信息、对象映射、填充结构,绑定用户界面</h3> <pre><code> XmlNode rootNode = xml_Doc.DocumentElement; //【3】获取XML文档根目录 </code></pre> <p>这行代码是在加载XML文档后,从<code>XmlDocument</code>对象中获取文档的根元素(root element)。根元素是XML文档结构的最顶层元素,也就是所有其他元素的父元素。</p> <p>在这里:</p> <ul> <li><code>xml_Doc</code>是前面代码中创建并加载了XML文件内容的<code>XmlDocument</code>对象。</li> <li><code>DocumentElement</code>是<code>XmlDocument</code>类的一个属性,它返回一个<code>XmlElement</code>对象,该对象代表文档的根元素。<br> 因为xml其实是一个树结构<br> <a href="http://img.e-com-net.com/image/info8/9cfd8cb285ad417b98b0e0cf59da4801.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9cfd8cb285ad417b98b0e0cf59da4801.jpg" alt="C# XML文件基础_第3张图片" width="650" height="315" style="border:1px solid black;"></a></li> </ul> <p><code>rootNode</code>变量现在包含了对XML文档根元素的引用。持有这个引用之后,就可以遍历整个XML文档的元素,因为所有的节点都是从这个根元素开始嵌套的。我们可以使用这个引用来访问、修改或查询XML文档的各个部分。例如,我们可以访问根节点的子节点、属性等等。</p> <h3>2.3 遍历节点、</h3> <pre><code> List<Student> list = new List<Student>();//创建对象集合 foreach (XmlNode stuNode in rootNode.ChildNodes) //【4】遍历根节点(根节点包含所有节点) { if (stuNode.Name == "Student") { Student xml_Stu = new Student(); foreach (XmlNode subNode in stuNode) //【5】遍历子节点 { switch (subNode.Name)//根据子节点的名称封装到对象的属性 { case "StuName": xml_Stu.StuName = subNode.InnerText;//获取《节点名称》对应的《节点值》 break; case "StuAge": xml_Stu.StuAge = Convert.ToInt16(subNode.InnerText); break; case "Gender": xml_Stu.Gender = subNode.InnerText; break; case "ClassName": xml_Stu.ClassName = subNode.InnerText; break; } } list.Add(xml_Stu); } } this.dgvStuList.DataSource = list; </code></pre> <p>这段代码是在C#中使用的,它展示了如何从XML文档中读取数据并将这些数据封装到一个对象列表中。接着,将这个列表设置为数据网格视图控件(也就是我们的显示窗口)的数据源,以便在用户界面上展示数据。<br> 首先我们创建了一个名为list的新列表,这个列表用来存储Student类型的对象。Student是我们自定义的类,它有StuName(姓名)、StuAge(年龄)、Gender(性别)和ClassName(班级)等属性。<br> foreach (XmlNode stuNode in rootNode.ChildNodes)<br> 该循环遍历前面提到的根节点的直接子节点。这里,stuNode代表当前遍历到的子节点。循环的每次迭代都会处理一个子节点。<br> //<br> //<br> 这里插播一条直接子节点:<br> "直接子节点"是一个术语,用来描述在一个文档对象模型(DOM)树中,某个节点下一级的节点。在XML或HTML文档中,一个节点(例如一个元素)可以有子节点,这些子节点可以是元素节点、文本节点、注释节点等等。</p> <p>以XML为例,考虑以下简单的结构:</p> <pre><code class="prism language-xml"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Parent</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Child</span><span class="token punctuation">></span></span>First child<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Child</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Child</span><span class="token punctuation">></span></span>Second child<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Child</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Parent</span><span class="token punctuation">></span></span> </code></pre> <p>在这个例子中,<code><Parent></code>元素有两个直接子节点,都是<code><Child></code>元素。这些<code><Child></code>元素是<code><Parent></code>元素的直接子节点,因为它们是<code><Parent></code>下第一层的节点。如果这些<code><Child></code>元素内部还有其他元素,则这些内部元素将被视为<code><Child></code>元素的直接子节点,而不是<code><Parent></code>的直接子节点。</p> <p>在处理DOM时,能够区分"直接子节点"(也就是某个特定节点的第一级子节点)与所有后代节点(即所有层级的子节点)是很重要的,因为它们之间的关系会影响你如何设计代码来遍历和操作DOM。<br> ///<br> ///</p> <pre><code>if (stuNode.Name == "Student") </code></pre> <p>在遍历子节点时,代码检查节点的名称是否为"Student"。如果是,这意味着这个节点包含了一个学生对象的数据。</p> <pre><code>Student xml_Stu = new Student(); </code></pre> <p>一旦找到一个名为"Student"的节点,代码就会创建一个新的Student对象实例,名为xml_Stu。</p> <pre><code>foreach (XmlNode subNode in stuNode) //【5】遍历Student节点的子节点 </code></pre> <p>接着,代码遍历"Student"节点的所有子节点,这些子节点包含了关于学生的具体信息,如姓名、年龄等。</p> <pre><code>switch (subNode.Name) { // ... } </code></pre> <p>在此switch语句中,代码根据子节点的名称来判断应该将节点内的文本(InnerText)赋值给xml_Stu对象的哪个属性。例如,如果子节点的名称是"StuName",则将它的文本内容赋值给xml_Stu对象的StuName属性。</p> <pre><code>list.Add(xml_Stu); </code></pre> <p>一旦填充完xml_Stu对象的所有属性,这个对象就会被添加到list列表中。</p> <pre><code>this.dgvStuList.DataSource = list; </code></pre> <p>最后,list列表被设置为名为dgvStuList的数据网格视图控件的数据源。dgvStuList是一个Windows窗体应用程序中的控件,用于显示数据。这样设置后,dgvStuList将显示list列表中的所有学生信息。</p> <p>总之呢,这段代码的作用是将XML文档中特定结构的数据(在这个例子中是学生信息)读取出来,创建对应的C#对象列表,并将这些数据展示在用户界面上。</p> <h3>2.4例子源代码</h3> <p>链接:https://pan.baidu.com/s/1fSmI2USsrVWHxh5zXtQWYg?pwd=1234<br> 提取码:1234</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1747410044451831808"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(c#,xml)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950230804957294592.htm" title="SpringMVC执行流程(原理),通俗易懂" target="_blank">SpringMVC执行流程(原理),通俗易懂</a> <span class="text-muted">国服冰</span> <a class="tag" taget="_blank" href="/search/SpringMVC/1.htm">SpringMVC</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>SpringMVC执行流程(原理),通俗易懂一、图解SpringMVC流程二、进一步理解Springmvc的执行流程1、导入依赖2、建立展示的视图3、web.xml4、spring配置文件springmvc-servlet5、Controller6、tomcat配置7、访问的url8、视图页面一、图解SpringMVC流程图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提</div> </li> <li><a href="/article/1950196906563006464.htm" title="Unity学习笔记1" target="_blank">Unity学习笔记1</a> <span class="text-muted">zy_777</span> <div>通过一个星期的简单学习,初步了解了下unity,unity的使用,以及场景的布局,UI,以及用C#做一些简单的逻辑。好记性不如烂笔头,一些关键帧还是记起来比较好,哈哈,不然可能转瞬即逝了,(PS:纯小白观点,unity大神可以直接忽略了)一:MonoBehaviour类的初始化1,Instantiate()创建GameObject2,通过Awake()和Start()来做初始化3,Update、L</div> </li> <li><a href="/article/1950191587556388864.htm" title="C#中的设计模式:构建更加优雅的代码" target="_blank">C#中的设计模式:构建更加优雅的代码</a> <span class="text-muted">Envyᥫᩣᩚ</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>C#在面向对象编程(OOP)方面的强大支持,我们可以探讨“C#中的设计模式”。这不仅有助于理解如何更好地组织代码,还能提高代码的可维护性和可扩展性。引言设计模式是软件工程中经过实践验证的解决方案模板,它们提供了一种标准化的方法来解决常见的开发问题。对于使用C#进行开发的程序员来说,理解和应用这些模式可以帮助创建结构良好、易于维护和扩展的应用程序。本文将介绍几种常用的设计模式,并展示如何用C#实现它</div> </li> <li><a href="/article/1950177595232415744.htm" title="探索高效文档转换新路径:Aspose.Words v18.7助力Word无缝变PDF" target="_blank">探索高效文档转换新路径:Aspose.Words v18.7助力Word无缝变PDF</a> <span class="text-muted">邴卉露Robust</span> <div>探索高效文档转换新路径:Aspose.Wordsv18.7助力Word无缝变PDF【下载地址】Aspose.Wordsv18.7C示例源码Word转PDF无需安装Office本仓库提供了一个使用Aspose.Wordsv18.7将Word文档转换为PDF文档的C#示例源码。Aspose.Words是一个强大的.NET控件,允许开发者在不安装MicrosoftOffice的情况下读写Word文档,并</div> </li> <li><a href="/article/1950170537007312896.htm" title=".net平台的跨平台桌面应用开发的技术方案总结对比" target="_blank">.net平台的跨平台桌面应用开发的技术方案总结对比</a> <span class="text-muted">yuanpan</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>目前,.NET平台提供了多种跨平台桌面应用开发的技术方案,主要包括.NETMAUI、AvaloniaUI、UnoPlatform、Eto.Forms等。以下是它们的核心特点及优缺点对比:1..NETMAUI(.NETMulti-platformAppUI)支持平台:Windows、macOS、iOS、Android核心特点:微软官方维护,继承自Xamarin.Forms,支持XAML和C#开发。提</div> </li> <li><a href="/article/1950168010954174464.htm" title="C# 探秘:枚举器(IEnumerator)与可枚举类型(IEnumerable) - 揭秘 foreach 的幕后英雄" target="_blank">C# 探秘:枚举器(IEnumerator)与可枚举类型(IEnumerable) - 揭秘 foreach 的幕后英雄</a> <span class="text-muted">钢铁男儿</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E8%A7%A3%E6%95%99%E7%A8%8B/1.htm">图解教程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>在C#开发中,foreach循环是我们遍历集合(如数组、列表)的得力助手。它简洁优雅地为我们取出集合中的每一个元素。但你是否思考过,foreach是如何知道如何遍历这些集合的?其背后的核心机制就是枚举器(Enumerator)和可枚举类型(Enumerable)。本文将深入探讨这两个接口(IEnumerator和IEnumerable),揭开foreach循环的神秘面纱。foreach的魔法背后让</div> </li> <li><a href="/article/1950164356310298624.htm" title="c#分层设计介绍" target="_blank">c#分层设计介绍</a> <span class="text-muted">努力吧_少年</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a> <div>领域驱动分层介绍UI(表示层)最容易理解,这一层负责显示信息给用户,并解释用户的命令。有时,用户不是人,而是另一个系统。应用层用于协调领域模型对象的动作。不建议这一层包含业务规则或领域知识,即使是维护状态也不行——这是领域模型做的事情。应用层对于协调任务和把动作委托给领域模型非常有用。虽然不用于维护业务实体的状态,单应用层可以维护跟踪用户或者系统所执行的当前任务的状态。应用层不干涉阻碍领域模型,这</div> </li> <li><a href="/article/1950163724190937088.htm" title="Spring Boot 2整合Druid的两种方式" target="_blank">Spring Boot 2整合Druid的两种方式</a> <span class="text-muted">玩代码</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Druid/1.htm">Druid</a> <div>一、自定义整合Druid(非Starter方式)适用于需要完全手动控制配置的场景添加依赖(pom.xml)com.alibabadruid1.2.8org.springframework.bootspring-boot-starter-jdbc创建配置类@ConfigurationpublicclassDruidConfig{@Bean@ConfigurationProperties(prefix</div> </li> <li><a href="/article/1950145323812843520.htm" title="构建高效的物流车辆定位管理系统" target="_blank">构建高效的物流车辆定位管理系统</a> <span class="text-muted">体制教科书</span> <div>本文还有配套的精品资源,点击获取简介:物流车辆定位管理系统利用信息技术提高物流效率和安全性。通过集成GPS技术进行实时车辆追踪和监控,它提供及时的货物运送和异常处理。系统的关键技术包括GPS车辆定位、C#编程语言、数据库管理、车辆管理、在途情况监控、预警与通知、数据分析与报告、用户界面设计、安全性与隐私保护以及系统集成。这些要素共同保障物流流程的高效、安全和智能化。1.物流车辆定位管理系统的应用与</div> </li> <li><a href="/article/1950132582230323200.htm" title="使用 C# 实现 FTP 上传的方法,包括详细的代码示例和测试代码" target="_blank">使用 C# 实现 FTP 上传的方法,包括详细的代码示例和测试代码</a> <span class="text-muted">zhxup606</span> <a class="tag" taget="_blank" href="/search/%E6%9D%8E%E5%B7%A5%E7%AF%87/1.htm">李工篇</a><a class="tag" taget="_blank" href="/search/C%23%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/1.htm">C#实战教程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>以下是使用C#实现FTP上传的方法,包括详细的代码示例和测试代码。以下代码使用System.Net.FtpWebRequest实现文件上传,并附带一个简单的测试用例。C#FTP上传方法csharpusingSystem;usingSystem.IO;usingSystem.Net;publicclassFtpClient{//////上传文件到FTP服务器//////FTP服务器地址,例如ftp:</div> </li> <li><a href="/article/1950115692665696256.htm" title="Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现不同水果的检测识别(C#代码,UI界面版)" target="_blank">Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现不同水果的检测识别(C#代码,UI界面版)</a> <span class="text-muted"></span> <div>Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现不同水果的检测识别(C#代码,UI界面版))工业相机使用YoloV8模型实现不同水果的检测识别工业相机通过YoloV8模型实现不同水果的检测识别的技术背景在相机SDK中获取图像转换图像的代码分析工业相机图像转换Bitmap图像格式和Mat图像重要核心代码本地文件图像转换Bitmap图像格式和Mat图像重要核心代码Mat图像导入Yo</div> </li> <li><a href="/article/1950078131993899008.htm" title="C#返回两个数组或多个数组,函数方法的一种写法" target="_blank">C#返回两个数组或多个数组,函数方法的一种写法</a> <span class="text-muted">zhannghong2003</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>public(float[]x,float[]y)GetPolygonCollider2DPoints(PolygonCollider2Dobjects){Vector2[]points=objects.points;float[]x=newfloat[points.Length];float[]y=newfloat[points.Length];for(inti=0;i<points.Lengt</div> </li> <li><a href="/article/1950076871731376128.htm" title="C# 单问号 ? 与 双问号 ??" target="_blank">C# 单问号 ? 与 双问号 ??</a> <span class="text-muted">三分明月墨</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a> <div>https://www.runoob.com/csharp/csharp-nullable.html</div> </li> <li><a href="/article/1950076362085691392.htm" title="C#?和??的作用" target="_blank">C#?和??的作用</a> <span class="text-muted">simpleshao</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/%3F%3F/1.htm">??</a> <div>1.可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:stringstr=null;是正确的,inti=null;编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int?表示可空的整形,DateTime?表示可为空的时间。T?其实是System.Nullable(泛型结构)的缩写形式,也</div> </li> <li><a href="/article/1950071570529579008.htm" title="C#:类型定义中使用‌问号(?)" target="_blank">C#:类型定义中使用‌问号(?)</a> <span class="text-muted">曹牧</span> <a class="tag" taget="_blank" href="/search/CSharp/1.htm">CSharp</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>在C#中,类型定义中的‌问号(?)‌主要用于控制类型的可空性,但具体行为因类型(值类型或引用类型)和C#版本而异。以下是清晰分类的说明:一、可空值类型(T?,适用于所有C#版本)‌用途‌:允许值类型(如int、DateTime等)存储null值。‌语法‌:在值类型后加?,底层由System.Nullable结构实现。‌示例‌:int?age=null;//声明可空整型DateTime?date=n</div> </li> <li><a href="/article/1950058716040589312.htm" title="在一个存在的包里面编写msg消息文件" target="_blank">在一个存在的包里面编写msg消息文件</a> <span class="text-muted">CrimsonEmber</span> <a class="tag" taget="_blank" href="/search/ROS%E7%AC%94%E8%AE%B0/1.htm">ROS笔记</a><a class="tag" taget="_blank" href="/search/ROS2/1.htm">ROS2</a> <div>前言尽管最佳实践是在专门的接口包中声明接口,但有时在同一个包中完成接口的声明、创建和使用会更为便捷。创建文件创建好msg/AddressBook.msg文件,在你的包的目录下package.xmlrosidl_default_generatorsrosidl_default_runtimerosidl_interface_packagesCMakeList找到生成消息代码的包find_packag</div> </li> <li><a href="/article/1950047365528350720.htm" title="百旺金赋航天金税发票清单接口软件使用指南" target="_blank">百旺金赋航天金税发票清单接口软件使用指南</a> <span class="text-muted"></span> <div>本文还有配套的精品资源,点击获取简介:《百旺金赋航天金税发票清单接口软件详解与核心组件解析》详细介绍了该软件的便捷性和功能,它能将Excel销售清单转换成XML格式,简化发票开具流程。该软件通过动态链接库(DLL)文件实现高效数据转换,并支持与金税系统的对接,提升企业财务效率并确保数据安全性。1.百旺金赋航天金税发票清单接口软件概述软件应用背景百旺金赋航天金税发票清单接口软件作为一种财务信息化工具</div> </li> <li><a href="/article/1950046229840850944.htm" title="推客系统小程序机构版开发上线全攻略(2025年最新版)" target="_blank">推客系统小程序机构版开发上线全攻略(2025年最新版)</a> <span class="text-muted">vx_qutudy</span> <a class="tag" taget="_blank" href="/search/%E6%8E%A8%E5%AE%A2%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">推客小程序</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E5%AE%A2%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/1.htm">推客系统开发</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E5%AE%A2%E7%B3%BB%E7%BB%9F%E6%BA%90%E7%A0%81/1.htm">推客系统源码</a> <div>一、开发前准备:筑牢基础,合规先行1.1注册与认证账号注册:登录微信公众平台注册小程序账号,选择“机构版”类型,获取唯一AppID。资质认证:基础资质:企业营业执照、法人身份证、对公账户信息。特殊资质:涉及支付功能:需办理《增值电信业务经营许可证》(ICP证)。涉及教育/医疗内容:需《互联网信息服务许可证》或相关行业资质。1.2技术选型:高效与扩展并重模块推荐方案前端框架微信原生框架(WXML+W</div> </li> <li><a href="/article/1949997804571127808.htm" title="c# winform 五子棋 人机对战 (详细)" target="_blank">c# winform 五子棋 人机对战 (详细)</a> <span class="text-muted"></span> <div>目录1.前言2.人机对战主要功能实现3.其他功能修改4.完整代码1.前言c#winform简单五子棋,支持连续悔棋。-CSDN博客基础版跳链接。建议先阅读。在基础版的界面上增加两个groupBox,并各自放两个radioButton。在基础版上form1.cs中增加变量privateboolisAIThinking=false;//判断是否该ai走privateTimeraiDelayTimer;</div> </li> <li><a href="/article/1949990873580236800.htm" title="C#中的委托,匿名方法和Lambda表达式" target="_blank">C#中的委托,匿名方法和Lambda表达式</a> <span class="text-muted">wcqlwyt</span> <a class="tag" taget="_blank" href="/search/delegate/1.htm">delegate</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E6%96%B9%E6%B3%95/1.htm">方法</a><a class="tag" taget="_blank" href="/search/lambda/1.htm">lambda</a><a class="tag" taget="_blank" href="/search/Anonymous/1.htm">Anonymous</a><a class="tag" taget="_blank" href="/search/Methods/1.htm">Methods</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">表达式</a><a class="tag" taget="_blank" href="/search/%E5%A7%94%E6%89%98/1.htm">委托</a> <div>原文地址为:C#中的委托,匿名方法和Lambda表达式简介在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆。我想下面的代码能证实这点。下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不仅被编译,并都获得正确答案,且他们的结果一样。如果你对此感到困惑,那么请继续看这篇文章。classCustomer{publicintID{g</div> </li> <li><a href="/article/1949985075873509376.htm" title="C#的lambda表达式与Linq" target="_blank">C#的lambda表达式与Linq</a> <span class="text-muted">hccee</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/linq/1.htm">linq</a> <div>C#的lambda表达式、Linq、以及常用方法Lambda:简单来讲就是匿名函数,我们不声明方法名,只写一个方法体,这个方法体就是lambda表达式Linq:Linq是LanguageIntergratedQuery(语言集成查询)的缩写,可以对本地对象**集合**或者远程数据源进行结构化的查询操作。lambda表达式如何写一个lambda表达式首先,在写lambda表达式之前,需要先了解两个特</div> </li> <li><a href="/article/1949975484238458880.htm" title="APP开发入门:了解主流的编程语言" target="_blank">APP开发入门:了解主流的编程语言</a> <span class="text-muted">agi大模型</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E4%B8%9A%E4%B8%8E%E8%81%8C%E5%9C%BA/1.htm">职业与职场</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a> <div>前言在过去的几年里,有许多程序员开始学习和使用编程语言。这其中包括C、C++、Java和Python。尽管有许多语言可供选择,但大多数程序员都会选择最容易学习的编程语言。如今,有很多编程语言供选择。程序员们在学习这些语言时可以自由地选择他们喜欢的方式,因为他们的目标是构建任何软件,而不仅仅是创建一个应用程序。你可以在Linux上学习C/C++、Java、Python、C#或JavaScript,你</div> </li> <li><a href="/article/1949966789882474496.htm" title="Android布局文件中的xmlns:tools" target="_blank">Android布局文件中的xmlns:tools</a> <span class="text-muted">Huang兄</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>2018-01-04文章目录androidapptoolstools可以干什么ErrorhandlingattributesDesign-timeviewattributes(设计时试图属性)tools:insteadofandroidtools:contexttools:itemCounttools:layouttools:listitem/tools:listheader/tools:list</div> </li> <li><a href="/article/1949952165124567040.htm" title="C# EventHandler观察者模式" target="_blank">C# EventHandler观察者模式</a> <span class="text-muted"></span> <div>C#和java比较:java中使用的是接口。C#使用委托机制,可以用时+运算符进行注册,直接多播。而java中是一般是使用一个集合来保存观察者。发布者(Publisher)=被观察者(Observable)=事件源(java中的EventObject,C#中的sender)订阅者(Subscriber)=观察者(Observer)=接收者(java中继承EventLister,接口,或Observ</div> </li> <li><a href="/article/1949947625931337728.htm" title="C#实现观察者模式(附完整源码)" target="_blank">C#实现观察者模式(附完整源码)</a> <span class="text-muted">源代码大师</span> <a class="tag" taget="_blank" href="/search/C%23%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/1.htm">C#实战教程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/1.htm">观察者模式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>C#实现观察者模式以下是C#实现观察者模式的完整源码:Subject.cs:usingSystem;usingSystem.Collections.Generic;publicclassSubject{privateListobser</div> </li> <li><a href="/article/1949947121251708928.htm" title=".NET 9 优化,抢先体验 C# 13 新特性" target="_blank">.NET 9 优化,抢先体验 C# 13 新特性</a> <span class="text-muted">Rodney@Tiger</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>前言微软即将在2024年11月12日发布.NET9的最终版本,而08月09日发布的.NET9Preview7是最终发布前的最后一个预览版。这个版本将与.NETConf2024一同亮相,并已与VisualStudio202217.12预览版1一同发布,可以直接通过VisualStudio安装。同时VisualStudioCode和C#DevKit扩展也支持.NET9。C#13作为.NET9的一部分,</div> </li> <li><a href="/article/1949925685418061824.htm" title="Vue3中Axios的使用-附完整代码" target="_blank">Vue3中Axios的使用-附完整代码</a> <span class="text-muted">【本人】</span> <a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>前言首先介绍一下什么是axiosAxios是一个基于promise网络请求库,作用于node.js和浏览器中。它是isomorphic的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.jshttp模块,而在客户端(浏览端)则使用XMLHttpRequests官方网站:Axios中文文档|Axios中文网目前官方最新版本1.8.4一、Axios优势1.简单易用Axio</div> </li> <li><a href="/article/1949918624361803776.htm" title="spring boot入门" target="_blank">spring boot入门</a> <span class="text-muted">开往1982</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>SpringBoot简介(脚手架)简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与</div> </li> <li><a href="/article/1949912195026448384.htm" title="Python YAML文件处理完全指南:从入门到精通" target="_blank">Python YAML文件处理完全指南:从入门到精通</a> <span class="text-muted">Yant224</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E4%B8%8E%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/1.htm">文件操作与异常处理</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/YAML/1.htm">YAML</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86/1.htm">配置文件处理</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">数据序列化</a><a class="tag" taget="_blank" href="/search/PyYAML/1.htm">PyYAML</a><a class="tag" taget="_blank" href="/search/ruamel.yaml/1.htm">ruamel.yaml</a> <div>一、YAML基础与Python环境搭建1.YAML简介YAML(YAMLAin’tMarkupLanguage)是一种人类可读的数据序列化格式,特点:使用缩进表示层级关系支持复杂数据结构包含注释功能跨语言兼容2.核心特性对比特性YAMLJSONXML可读性★★★★★★★☆☆☆★★★☆☆注释支持✅❌✅数据类型丰富基本基本语法复杂度简单简单复杂3.安装PythonYAML库#安装PyYAML(基础库)</div> </li> <li><a href="/article/1949898065297076224.htm" title="使用memory_profiler 与 cProfile ,line_profiler 优化Python程序运行时间和内存消耗实例" target="_blank">使用memory_profiler 与 cProfile ,line_profiler 优化Python程序运行时间和内存消耗实例</a> <span class="text-muted">NG7711</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BC%98%E5%8C%96/1.htm">优化</a> <div>背景一个用来分析log(XML格式)的程序,运行起来时间很长,有时候内存消耗也会很高。使用pythonprofiler工具来分析使用memory_profiler分析内存消耗运行profiler按照memory_profilerguide,给有可能消耗内存的函数加上decorator@profile开始profiler:mprofrunxxx|tee$(date+“%Y%m%d%I%M_%p”).</div> </li> <li><a href="/article/28.htm" title="如何用ruby来写hadoop的mapreduce并生成jar包" target="_blank">如何用ruby来写hadoop的mapreduce并生成jar包</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a> <div>ruby来写hadoop的mapreduce,我用的方法是rubydoop。怎么配置环境呢: 1.安装rvm:     不说了 网上有 2.安装ruby:     由于我以前是做ruby的,所以习惯性的先安装了ruby,起码调试起来比jruby快多了。 3.安装jruby:     rvm install jruby然后等待安</div> </li> <li><a href="/article/155.htm" title="java编程思想 -- 访问控制权限" target="_blank">java编程思想 -- 访问控制权限</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E6%9D%83%E9%99%90/1.htm">访问控制权限</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a> <div>访问权限是java中一个比较中要的知识点,它规定者什么方法可以访问,什么不可以访问   一:包访问权限;   自定义包: package com.wj.control; //包 public class Demo { //定义一个无参的方法 public void DemoPackage(){ System.out.println("调用</div> </li> <li><a href="/article/282.htm" title="[生物与医学]请审慎食用小龙虾" target="_blank">[生物与医学]请审慎食用小龙虾</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a> <div>      现在的餐馆里面出售的小龙虾,有一些是在野外捕捉的,这些小龙虾身体里面可能带有某些病毒和细菌,人食用以后可能会导致一些疾病,严重的甚至会死亡.....      所以,参加聚餐的时候,最好不要点小龙虾...就吃养殖的猪肉,牛肉,羊肉和鱼,等动物蛋白质     </div> </li> <li><a href="/article/409.htm" title="org.apache.jasper.JasperException: Unable to compile class for JSP:" target="_blank">org.apache.jasper.JasperException: Unable to compile class for JSP:</a> <span class="text-muted">商人shang</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/2.2/1.htm">2.2</a><a class="tag" taget="_blank" href="/search/jdk1.8/1.htm">jdk1.8</a> <div>环境: jdk1.8    maven  tomcat7-maven-plugin  2.0 原因: tomcat7-maven-plugin  2.0 不知吃 jdk 1.8,换成 tomcat7-maven-plugin  2.2就行,即     <plugin> </div> </li> <li><a href="/article/536.htm" title="你的垃圾你处理掉了吗?GC" target="_blank">你的垃圾你处理掉了吗?GC</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/GC/1.htm">GC</a> <div>前序:本人菜鸟,此文研究学习来自网络,各位牛牛多指教  1.垃圾收集算法的核心思想   Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。   垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别</div> </li> <li><a href="/article/663.htm" title="shiro 和 SESSSION" target="_blank">shiro 和 SESSSION</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/shiro/1.htm">shiro</a> <div>shiro 在web项目里默认使用的是web容器提供的session,也就是说shiro使用的session是web容器产生的,并不是自己产生的,在用于非web环境时可用其他来源代替。在web工程启动的时候它就和容器绑定在了一起,这是通过web.xml里面的shiroFilter实现的。通过session.getSession()方法会在浏览器cokkice产生JESSIONID,当关闭浏览器,此</div> </li> <li><a href="/article/790.htm" title="移动互联网终端 淘宝客如何实现盈利" target="_blank">移动互联网终端 淘宝客如何实现盈利</a> <span class="text-muted">小桔子</span> <a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8B%95%E5%AE%A2%E6%88%B6%E7%AB%AF/1.htm">移動客戶端</a><a class="tag" taget="_blank" href="/search/%E6%B7%98%E5%AE%A2/1.htm">淘客</a><a class="tag" taget="_blank" href="/search/%E6%B7%98%E5%AF%B6App/1.htm">淘寶App</a> <div>       2012年淘宝联盟平台为站长和淘宝客带来的分成收入突破30亿元,同比增长100%。而来自移动端的分成达1亿元,其中美丽说、蘑菇街、果库、口袋购物等App运营商分成近5000万元。 可以看出,虽然目前阶段PC端对于淘客而言仍旧是盈利的大头,但移动端已经呈现出爆发之势。而且这个势头将随着智能终端(手机,平板)的加速普及而更加迅猛</div> </li> <li><a href="/article/917.htm" title="wordpress小工具制作" target="_blank">wordpress小工具制作</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E5%B7%A5%E5%85%B7/1.htm">小工具</a> <div>wordpress 使用侧边栏的小工具,很方便调整页面结构 小工具的制作过程 1 在自己的主题文件中新建一个文件夹(如widget),在文件夹中创建一个php(AWP_posts-category.php) 小工具是一个类,想侧边栏一样,还得使用代码注册,他才可以再后台使用,基本的代码一层不变 <?php class AWP_Post_Category extends WP_Wi</div> </li> <li><a href="/article/1044.htm" title="JS微信分享" target="_blank">JS微信分享</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>// 所有功能必须包含在 WeixinApi.ready 中进行    WeixinApi.ready(function(Api) {        // 微信分享的数据            var wxData = {       &nb</div> </li> <li><a href="/article/1171.htm" title="封装探讨" target="_blank">封装探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/JAVA%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1+%E5%B0%81%E8%A3%85/1.htm">JAVA面向对象 封装</a> <div>//封装   属性 方法 将某些东西包装在一起,通过创建对象或使用静态的方法来调用,称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题,增加代码的可读性和可维护性   在 Aname类中申明三个属性,将其封装在一个类中:通过对象来调用   例如   1: //属性 将其设为私有 姓名 name 可以公开 </div> </li> <li><a href="/article/1298.htm" title="jquery radio/checkbox change事件不能触发的问题" target="_blank">jquery radio/checkbox change事件不能触发的问题</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>我想让radio来控制当前我选择的是机动车还是特种车,如下所示:  <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"><</div> </li> <li><a href="/article/1425.htm" title="AngularJS中安全性措施" target="_blank">AngularJS中安全性措施</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%80%A7/1.htm">安全性</a><a class="tag" taget="_blank" href="/search/XSRF/1.htm">XSRF</a><a class="tag" taget="_blank" href="/search/JSON%E6%BC%8F%E6%B4%9E/1.htm">JSON漏洞</a> <div>        在使用web应用中,安全性是应该首要考虑的一个问题。AngularJS提供了一些辅助机制,用来防护来自两个常见攻击方向的网络攻击。 一.JSON漏洞         当使用一个GET请求获取JSON数组信息的时候(尤其是当这一信息非常敏感,</div> </li> <li><a href="/article/1552.htm" title="[Maven学习笔记九]Maven发布web项目" target="_blank">[Maven学习笔记九]Maven发布web项目</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>基于Maven的web项目的标准项目结构 user-project     user-core     user-service     user-web        src      </div> </li> <li><a href="/article/1679.htm" title="【Hive七】Hive用户自定义聚合函数(UDAF)" target="_blank">【Hive七】Hive用户自定义聚合函数(UDAF)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a> <div>用户自定义聚合函数,用户提供的多个入参通过聚合计算(求和、求最大值、求最小值)得到一个聚合计算结果的函数。 问题:UDF也可以提供输入多个参数然后输出一个结果的运算,比如加法运算add(3,5),add这个UDF需要实现UDF的evaluate方法,那么UDF和UDAF的实质分别究竟是什么?   Double evaluate(Double a, Double b)  </div> </li> <li><a href="/article/1806.htm" title="通过 nginx-lua 给 Nginx 增加 OAuth 支持" target="_blank">通过 nginx-lua 给 Nginx 增加 OAuth 支持</a> <span class="text-muted">ronin47</span> <div>前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGeek 在过去几年中取得了发展,我们已经积累了不少针对各种任务的不同管理接口。我们通常为新的展示需求创建新模块,比如我们自己的博客、图表等。我们还定期开发内部工具来处理诸如部署、可视化操作及事件处理等事务。在处理这些事务中,我们使用了几个不同的接口来认证: &n</div> </li> <li><a href="/article/1933.htm" title="利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法" target="_blank">利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法</a> <span class="text-muted">bsr1983</span> <a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>在利用tomcat-redis-session-manager做session同步时,遇到了在session保存一个自定义对象时,修改该对象中的某个属性,session未进行序列化,属性没有被存储到redis中。 在 tomcat-redis-session-manager的github上有如下说明: Session Change Tracking As noted in the &qu</div> </li> <li><a href="/article/2060.htm" title="《代码大全》表驱动法-Table Driven Approach-1" target="_blank">《代码大全》表驱动法-Table Driven Approach-1</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>关于Table Driven Approach的一篇非常好的文章: http://www.codeproject.com/Articles/42732/Table-driven-Approach package com.ljn.base; import java.util.Random; public class TableDriven { public </div> </li> <li><a href="/article/2187.htm" title="Sybase封锁原理" target="_blank">Sybase封锁原理</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/Sybase/1.htm">Sybase</a> <div>       昨天在操作Sybase IQ12.7时意外操作造成了数据库表锁定,不能删除被锁定表数据也不能往其中写入数据。由于着急往该表抽入数据,因此立马着手解决该表的解锁问题。     无奈此前没有接触过Sybase IQ12.7这套数据库产品,加之当时已属于下班时间无法求助于支持人员支持,因此只有借助搜索引擎强大的</div> </li> <li><a href="/article/2314.htm" title="java异常处理机制" target="_blank">java异常处理机制</a> <span class="text-muted">CrazyMizzz</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java异常关键字有以下几个,分别为 try catch final throw throws 他们的定义分别为 try:    Opening exception-handling statement. catch:  Captures the exception. finally: Runs its code before terminating</div> </li> <li><a href="/article/2441.htm" title="hive 数据插入DML语法汇总" target="_blank">hive 数据插入DML语法汇总</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/DML/1.htm">DML</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8F%92%E5%85%A5/1.htm">数据插入</a> <div>Hive的数据插入DML语法汇总1、Loading files into tables语法:1) LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]解释:1)、上面命令执行环境为hive客户端环境下: hive>l</div> </li> <li><a href="/article/2568.htm" title="工厂设计模式" target="_blank">工厂设计模式</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>  使用设计模式是促进最佳实践和良好设计的好办法。设计模式可以提供针对常见的编程问题的灵活的解决方案。 工厂模式 工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是你要生成的对象对应的类名称。 Example #1 调用工厂方法(带参数) <?phpclass Example{ </div> </li> <li><a href="/article/2695.htm" title="mysql字符串查找函数" target="_blank">mysql字符串查找函数</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>  FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在1到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或st</div> </li> <li><a href="/article/2822.htm" title="jvm内存管理" target="_blank">jvm内存管理</a> <span class="text-muted">easterfly</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a> <div>一、JVM堆内存的划分 分为年轻代和年老代。年轻代又分为三部分:一个eden,两个survivor。 工作过程是这样的:e区空间满了后,执行minor gc,存活下来的对象放入s0, 对s0仍会进行minor gc,存活下来的的对象放入s1中,对s1同样执行minor gc,依旧存活的对象就放入年老代中; 年老代满了之后会执行major gc,这个是stop the word模式,执行</div> </li> <li><a href="/article/2949.htm" title="CentOS-6.3安装配置JDK-8" target="_blank">CentOS-6.3安装配置JDK-8</a> <span class="text-muted">gengzg</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>JAVA_HOME=/usr/java/jdk1.8.0_45 JRE_HOME=/usr/java/jdk1.8.0_45/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME</div> </li> <li><a href="/article/3076.htm" title="【转】关于web路径的获取方法" target="_blank">【转】关于web路径的获取方法</a> <span class="text-muted">huangyc1210</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E8%B7%AF%E5%BE%84/1.htm">路径</a> <div>假定你的web application 名称为news,你在浏览器中输入请求路径:  http://localhost:8080/news/main/list.jsp  则执行下面向行代码后打印出如下结果:  1、 System.out.println(request.getContextPath()); //可返回站点的根路径。也就是项</div> </li> <li><a href="/article/3203.htm" title="php里获取第一个中文首字母并排序" target="_blank">php里获取第一个中文首字母并排序</a> <span class="text-muted">远去的渡口</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>很久没来更新博客了,还是觉得工作需要多总结的好。今天来更新一个自己认为比较有成就的问题吧。 最近在做储值结算,需求里结算首页需要按门店的首字母A-Z排序。我的数据结构原本是这样的: Array ( [0] => Array ( [sid] => 2885842 [recetcstoredpay] =&g</div> </li> <li><a href="/article/3330.htm" title="java内部类" target="_blank">java内部类</a> <span class="text-muted">hm4123660</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">内部类</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">匿名内部类</a><a class="tag" taget="_blank" href="/search/%E6%88%90%E5%91%98%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">成员内部类</a><a class="tag" taget="_blank" href="/search/%E6%96%B9%E6%B3%95%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">方法内部类</a> <div>      在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类可以间接解决多继承问题,可以使用内部类继承一个类,外部类继承一个类,实现多继承。      &nb</div> </li> <li><a href="/article/3457.htm" title="Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten" target="_blank">Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.Exten</a> <span class="text-muted">zhb8015</span> <div>maven pom.xml关于hibernate的配置和异常信息如下,查了好多资料,问题还是没有解决。只知道是包冲突,就是不知道是哪个包....遇到这个问题的分享下是怎么解决的。。   maven pom:   <dependency> <groupId>org.hibernate</groupId> <ar</div> </li> <li><a href="/article/3584.htm" title="Spark 性能相关参数配置详解-任务调度篇" target="_blank">Spark 性能相关参数配置详解-任务调度篇</a> <span class="text-muted">Stark_Summer</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/cpu/1.htm">cpu</a><a class="tag" taget="_blank" href="/search/%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6/1.htm">任务调度</a><a class="tag" taget="_blank" href="/search/yarn/1.htm">yarn</a> <div>随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化。   由于篇幅较长,所以在这里分篇组织,如果要看最新完整的网页版内容,可以戳这里:http://spark-config.readthedocs.org/,主要是便</div> </li> <li><a href="/article/3711.htm" title="css3滤镜" target="_blank">css3滤镜</a> <span class="text-muted">wangkeheng</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>经常看到一些网站的底部有一些灰色的图标,鼠标移入的时候会变亮,开始以为是js操作src或者bg呢,搜索了一下,发现了一个更好的方法:通过css3的滤镜方法。 html代码: <a href='' class='icon'><img src='utv.jpg' /></a> css代码: .icon{-webkit-filter: graysc</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>