Atom 1.0 Syndication Format 概述

Atom 1.0 Syndication Format 概述

流行的 Web 内容联合格式是如何构成的

文档选项
将此页作为电子邮件发送

将此页作为电子邮件发送


最新推荐

Java 应用开发源动力 - 下载免费软件,快速启动开发


级别: 初级

James Snell, 软件工程师, IBM

2005 年 8 月 22 日

从技术角度来看流行的 Atom Syndication Format。本文将讨论 Atom 与其他联合格式相比在技术上的优势,并通过几个典型的例子加以说明。

在 Internet 上,Web 内容联合是防火墙后面日渐重要的一个领域。一旦 bolg 爱好者的独有领地和在线新闻网站演变成基于 Web 的服务和内容发布的下一代平台,会怎么样呢?虽然联合技术(syndication technology)的采用突飞猛进,但这些技术一直都面临着技术问题、意义不明确和互操作性的挑战,这些为紧跟新潮流的软件开发人员和消费者带来了困难。为了解决这些问题,联合技术社区的成员走到了一起,他们共同分享经验,定义了 Atom Syndication FormatAtom Publishing Protocol 标准(请参阅 参考资料)。2005 年 7 月 15 日,第一个规范 Atom Syndication 正式面世。

本文假设您对内容联合和已有的规范家族至少有基本的了解。阅读本文时,建议手头上准备一份 Atom 1.0 格式规范的副本,以便作为所讨论的各种元素的交叉参考。

必须指出的是,本文中的讨论没有任何贬低 RSS 的目的。我们的目的是说明相对于现有的联合格式规范家族,Atom 格式带来了哪些改进,强调 Atom 格式所固有的长处。

一个简单的例子

只要使用 RSS 规范系列产品做过内容联合,任何人都很容易掌握 Atom 1.0。不过 Atom 在很多重要的方面都与 RSS 不同。清单 1 给出了一个简单的 Atom 1.0 feed 的例子。


清单 1. 简单的 Atom 的例子


Atom 要求每个提要(feed)和记录(entry)都包括三个元素:

  • 惟一的标识符,可以与 blog 记录或者用记录表示的其他 Web 资源的 URI 一样简单,也可以像真正的 128 位全球统一标识符(GUID)那样复杂。
  • 标题(title),简短的、人类可读的记录主体行;允许使用空字符串(用空的标题元素表示,如 </code>)。 </li> <li><strong>时间戳</strong> 表示上一次更新的时间。 </li> </ul> <p>此外,Atom 花费很多时间精心描述了一种健壮、灵活、一致的内容模型,该模型能够支持普通文本、不严格的 HTML、结构良好的 XHTML、任意的 XML、base-64 编码的二进制内容、指向没有直接包含在提要(feed)中的内容的 URI 指针,等等。相比之下,由于不考虑使用非标准的名称空间扩展以及已实现的不一致的名称空间扩展,RSS 只能处理普通文本和不严格的 HTML 内容。</p> <p>Atom 还提供了定义良好的可扩展模型,该模型提供了添加受 RSS 支持的新元数据和内容的类似分散动态机制,但采用的方法便于保证实现之间的互操作性。比如,Atom 明确说明文档中什么地方能够和不能使用扩展元素、什么样的扩展是语言敏感的(因此要受 <code>xml:lang</code> 属性的影响)、Atom 实现遇到不认识的扩展元素时必须如何应对。</p> <p>最后,Atom 为核心名称空间中的各种必需和可选元数据元素提供了严格定义。比如,Atom 定义了 <code>author</code> 元素,这是一个复杂结构,包括姓名、邮件地址(按照 RFC 2822 的定义)以及与作者有某种联系的资源标识符(比如作者主页的 URI)。</p> <p>提要(feed)或记录(entry)可以有多个 <code>author</code> 元素,零个或多个 <code>contributor</code> 元素。这些元素表示可能对提要(feed)或记录(entry)的生产作出贡献的个人,但是不能按照输入级别确定作者(如音频工程师、编辑、软件开发人员等)。<code>author</code> 和 <code>contributor</code> 元素都是可扩展的,只要自己认为合适,内容的生产者可以提供关于作者或者参与者更详细的信息。相比之下,RSS 只规定了更加严格的 <code>author</code> 元素,这类元素只能在每个记录中出现一次,而且只能表示电子邮件地址。</p> <br> <strong>清单 2. 使用 FOAF 扩展的例子</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>Atom 1.0 新增的标准特性包括:</p> <ul> <li>单个记录能够独立于提要(feed)存在,为采集和发布联合内容提供了全新的选择。 </li> <li>与 ISO-8601 和 XML Schema 兼容的时间戳。 </li> <li>使用 <code>xml:base</code> 支持相对 URI。 </li> <li>通过使用 Internationalized Resource Identifiers (IRIs) 和 <code>xml:lang</code> 增强了国际化。 </li> <li>可访问性(Accessability)特性使残障人士更容易使用提要(feed)。 </li> <li>类 HTML 的动态可扩展链接机制可以将提要(feed)或记录(entry)链接到外部资源。 </li> <li>自参考(self-referential)提要(feed)有助于简化订阅过程。 </li> <li>可以标识 Atom 1.0 文档的 MIME 媒体类型。 </li> <li>对 XML Digital Signatures 和 XML Encryption 提供内建支持。 </li> <li>验证 Atom 1.0 文档示例的非标准 RELAX NG 模式。 </li> <li>兼容 RDF 的核心子集。 </li> </ul> <p>总之,Atom 内建的种种特性是这种格式能够支持更广泛的联合应用,并克服了现有联合标准家族中普遍存在的很多技术不足。</p> <br> <table width="100%" border="0"> <tbody> <tr> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/d9e5fef902f5495e8fa6f894d7e35b75.gif"><br><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"></td> </tr> </tbody> </table> <table align="right" class="no-print"> <tbody> <tr align="right"> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"><br> <table border="0"> <tbody> <tr> <td valign="middle"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/12fe515f8e564045ad82598ca2a4928d.gif"><br></td> <td valign="top" align="right"><strong><font color="#996699">回页首</font></strong></td> </tr> </tbody> </table></td> </tr> </tbody> </table> <br> <br> <p><span class="atitle"><font>支持 enclosure 标签</font></span></p> <p>在 Weblog 和新闻内容联合之外,联合技术正在发展中的一种最流行的应用是<strong>播客(podcasting)</strong>。播客是发布录制的数据音频文件的数据提要(feed),可自动下载和复制到用户的便携式媒体设备上。目前,播客是通过 RSS 2.0 的 <code>enclosure</code> 标签实现的,如清单 3 所示。</p> <br> <strong>清单 3. RSS 2.0 播客的例子</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>虽然播客迅速盛行,但 RSS 2.0 enclosure 标签至少有一个很突出的局限性,播客们对这一局限性非常讨厌:RSS 只允许每个记录存在一个 <code>enclosure</code> 标签。这意味着对那些希望让自己的音频能以多种格式(如 MP3、BitTorrent 或 WMA)下载的播客生产者,必须为每种格式提供单独的提要(feed)。但是 Atom 允许一个记录中包含多个 enclosure,每个 enclosure 都有相关的媒体 <code>type</code> 属性,这样播客制作者就可以在一个提要(feed)中包含所有发布格式。</p> <p>作为一个例子,可以考虑 IT Conversations(请参阅 <font color="#996699">参考资料</font>)提供的播客提要(feed)列表。因为 IT Conversations 播客是以多种格式提供的,潜在的订阅者必须在至少 73 种带有 enclosure 的 RSS 提要(feed)(不包括列出的 37 种纯文本提要(feed))中进行选择。使用 Atom enclosure,只要在每个 Atom 记录(entry)中包括两个 enclosure 链接,IT Conversations 就可以把提要(feed)数减少一半。提要(feed)的减少可以降低内容发布者和内容订阅者的复杂度。</p> <br> <strong>清单 4. Atom 1.0 播客的例子</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>Atom enclosure 并不是只能用来发布音频内容。Enclosure 链接可以引用任何类型的资源。比如,清单 5 在一个记录中使用多个 enclosure 来引用可通过 FTP 访问的 PDF 文档的翻译版本。<code>hreflang</code> 属性表示每个 PDF 文档被翻译成的语言。</p> <br> <strong>清单 5. 使用 enclosure 表示多种语言版本的 Atom 1.0 提要(feed)</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>除非在提要(feed)中引入非标准名称空间扩展,否则 RSS 2.0 不可能支持 <font color="#996699">清单 5</font> 中的格式。原因是多方面的:</p> <ul> <li>RSS 不允许记录中包含多个 enclosure。 </li> <li>RSS 没有提供关于附加资源语言的含义。 </li> <li>RSS enclosure 要求使用 HTTP URL。 </li> <li>RSS 没有提供一种方式为引用资源添加人类可读的标题。 </li> </ul> <p>Atom <code>link</code> 元素的另一个重要特点是,使 enclosure 不仅能把可下载文件与记录关联在一起,还可以为其他类型的资源规定有意义的链接:</p> <ul> <li><code><link rel="alternate" /></code> —— 表示提要(feed)或记录(entry)的替代版本(如 weblog 主页)。 </li> <li><code><link rel="related" /></code> —— 表示记录(entry)内容中以某种形式描述的资源。 </li> <li><code><link rel="self" /></code> —— 表示和提要(feed)或记录(entry)等价的资源,一般来说,它允许提要(feed)或记录(entry)成为自参考的,从而能实现更灵活的自动发现机制。 </li> <li><code><link rel="via" /></code> —— 表示提供提要(feed)或记录(entry)所含信息的资源。比如,如果通过在线聚合服务来发布记录,那么可以使用 <code>via</code> 链接来标识该聚合程序,代替目前让聚合程序重写 RSS 的 <code>link</code> 元素的一般做法。 </li> </ul> <p>这些内建的链接关系是为提要(feed)中可能使用的最常见、最一般的链接类型设计的。可使用完全限定的 URI 来动态定义新的联系类型。稍后将通过一个例子进一步讨论 link 元素的可扩展性。</p> <br> <table width="100%" border="0"> <tbody> <tr> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/d9e5fef902f5495e8fa6f894d7e35b75.gif"><br><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"></td> </tr> </tbody> </table> <table align="right" class="no-print"> <tbody> <tr align="right"> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"><br> <table border="0"> <tbody> <tr> <td valign="middle"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/12fe515f8e564045ad82598ca2a4928d.gif"><br></td> <td valign="top" align="right"><strong><font color="#996699">回页首</font></strong></td> </tr> </tbody> </table></td> </tr> </tbody> </table> <br> <br> <p><span class="atitle"><font>基于引用的内容</font></span></p> <p>除了 link 和 enclosure 外,Atom 还支持通过 URI 引用记录内容。清单 6 显示了一个图片 weblog 的 Atom 提要(feed)。<code>content</code> 元素引用 bolg 中的每一幅图片,<code>summary</code> 元素提供了图像标题。</p> <br> <strong>清单 6. 使用 Atom 1.0 的简单图像列表</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>这种基于引用的内容(content-by-reference)机制提供了一种非常灵活的机制,可用于扩展通过 Atom 联合的内容类型。</p> <p>比如,人们常常讨论使用联合模型来发布软件升级的想法。这样做的话,链接到包含软件升级、描述升级的网页的可下载文件会很有帮助。因为 Atom 明确区分了 <code>link</code> 和 <code>content</code> 元素的角色,创建这样的提要(feed)非常简单,不需要扩展核心 Atom 名称空间。</p> <br> <strong>请但 7. 使用 Atom 1.0 的软件升级提要(feed)</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>基于引用的内容的其他应用包括通常不适合静态嵌入到提要(feed)中的数据联合。这样的内容包括音频或视频的实时转播流、安全帐户信息或事务的链接和大型数据流。</p> <br> <strong>清单 8. 实时广告音频流的 Atom 1.0 提要(feed)</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <br> <table width="100%" border="0"> <tbody> <tr> <td><font face="Lucida Console"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/d9e5fef902f5495e8fa6f894d7e35b75.gif"><br><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"></font></td> </tr> </tbody> </table> <table align="right" class="no-print"> <tbody> <tr align="right"> <td><font face="Lucida Console"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"><br></font> <table border="0"> <tbody> <tr> <td valign="middle"><font face="Lucida Console"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/12fe515f8e564045ad82598ca2a4928d.gif"><br></font></td> <td valign="top" align="right"><strong><font color="#996699">回页首</font></strong></td> </tr> </tbody> </table></td> </tr> </tbody> </table> <br> <br> <p><span class="atitle"><font>扩展 Atom</font></span></p> <p>当前联合技术的一大优势是开发人员能够用新的元数据类型扩展提要(feed)。Atom 工作组的主要目标之一就是定义良好的可扩展性模型,同时保留内容发布者和联合应用程序开发人员所期望的分散的、动态的可扩展机制,保持 Atom 实现之间的核心互操作性。</p> <p>Atom 的扩展有两种方式,下面将分别举例说明:</p> <ul> <li>新的名称空间限定的扩展元素和属性。 </li> <li>新的 link 元素关系类型。 </li> </ul> <p>名称空间扩展包括在核心 Atom 元素中混合使用新的 XML 元素和属性。比如,Atom 定义了描述记录创建和发布时刻的元素。不过,可以设想一个生成的内容必须在给定的时间点过期作废的应用程序(比如表示特价商品或者每周排名前十的列表)。Atom 没有提供用于规定超期时间的核心元素。但是可以在单独的名称空间中声明这样的元素,然后将它们包括到 Atom 提要(feed)中,如清单 9 所示。不关心 extension 扩展元素的消费者可以选择忽略它。</p> <br> <strong>清单 9. 带有名称空间的有效期扩展</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p>除了几个例外,可以在 Atom 文档中任何地方使用扩展元素和属性。比如,Atom 的日期结构,如 <code>atom:updated</code> 元素,可以包含 <code>extension</code> 属性,但是不能包含 <code>extension</code> 元素。</p> <p>顺便提一下,由于 Atom 是通过正式 IETF 标准化过程定义的,人们常常误以为像 <font color="#996699">清单 9</font> 中的 <code>s:expires</code> 元素这类扩展也必须经过同样正规和集中的过程来批准。绝对不是。Atom 扩展能够以完全分散、开放和非正式的方式定义,不需要任何 IETF 参与,但同时仍能保持互操作性。</p> <p>链接关系扩展包括创建新的 <code>link</code> 元素和 <code>rel</code> 属性值,标识新的链接关系类型。<code>link</code> 元素将外部资源和提要(feed)或记录(entry)联系在一起,<code>rel</code> 属性表示链接的目的。通过创建新的链接关系,可以扩展 <code>link</code> 元素所能表达的联系类型。</p> <p>比如,多数 weblog 软件包都支持读者为 blog 记录提交评注。这些注释本身可作为提要(feed)中的记录。清单 10 显示了我提议的一种链接扩展,它支持记录和相关注释间的双向链接。</p> <br> <strong>清单 10. 建议的注释提要(feed)扩展</strong> <br> <table width="100%" border="1"> <tbody> <tr> <td> <pre><code class="section"> </code></pre> </td> </tr> </tbody> </table> <br> <p><font color="#996699">清单 10</font> 中创建了三种新的链接关系:</p> <ul> <li><code>http://purl.org/syndication/thread/1.0/comments</code> —— 链接提要(feed)或记录(entry)和包含注释的 Atom 提要(feed)。 </li> <li><code>http://purl.org/syndication/thread/1.0/root</code> —— 链接注释提要(feed)和包含原始记录的提要(feed)。 </li> <li><code>http://purl.org/syndication/thread/1.0/in-reply-to</code> —— 链接注释记录和原始记录。 </li> </ul> <p>这种扩展仍然在积极地讨论和开发中,预计将不断地演化。</p> <p>其他建议还包括表示提要(feed)历史、相关许可证、提供一种列表排序机制的提要(feed)扩展,更多的建议仍在讨论之中。其中一些扩展可能会最终成为 IETF Internet-Drafts 甚至 RFC,另一些则不会。随着开发人员不断发现新的和有趣的应用,可以预料随着时间的流逝将出现很多有用的扩展。只要稍加努力,在 Atom 中使用现有的大量 RSS 扩展是完全可能的。</p> <br> <table width="100%" border="0"> <tbody> <tr> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/d9e5fef902f5495e8fa6f894d7e35b75.gif"><br><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"></td> </tr> </tbody> </table> <table align="right" class="no-print"> <tbody> <tr align="right"> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"><br> <table border="0"> <tbody> <tr> <td valign="middle"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/12fe515f8e564045ad82598ca2a4928d.gif"><br></td> <td valign="top" align="right"><strong><font color="#996699">回页首</font></strong></td> </tr> </tbody> </table></td> </tr> </tbody> </table> <br> <br> <p><span class="atitle"><font>结束语</font></span></p> <p>2004 年 5 月,Uche Ogbuji 在 developerWorks 上发表了一篇 <font color="#5c81a7">文章</font>,对 Atom 的定义作了初步介绍。Uche 在文中写道,Atom 的主要目标之一是“创建比很多 RSS 流派技术上更坚实的设计,利用大量 RSS 用户的实践经验作出切合实际的设计决策,使这种新的格式与 Web 的体系结构和文化相适应”。虽然花了一些时间,通过大量仔细地讨论和艰苦的工作,包括 IETF 工作组的积极参与,Atom 1.0 实现了为 Web 内容联合提供一种简单、定义良好和没有歧义的格式的目标。</p> <br> <table width="100%" border="0"> <tbody> <tr> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/d9e5fef902f5495e8fa6f894d7e35b75.gif"><br><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"></td> </tr> </tbody> </table> <table align="right" class="no-print"> <tbody> <tr align="right"> <td><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/faa71289894b4f62a548a50076eba4bc.gif"><br> <table border="0"> <tbody> <tr> <td valign="middle"><img height="0" alt="" width="0" src="http://img.e-com-net.com/image/info8/12fe515f8e564045ad82598ca2a4928d.gif"><br></td> <td valign="top" align="right"><strong><font color="#996699">回页首</font></strong></td> </tr> </tbody> </table></td> </tr> </tbody> </table> <br> <br> <p><span class="atitle"><font>参考资料 </font></span></p> <ul> <li>您可以参阅本文在 developerWorks 全球站点上的 <font color="#5c81a7">英文原文</font>。<br><br></li> <li>阅读 <font color="#5c81a7">Atom 1.0 规范</font>。<br><br></li> <li>查看 <font color="#5c81a7">RSS 2.0 规范</font>。<br><br></li> <li>请访问 Atom Working Group 的 Wiki,可以找到已知 <font color="#5c81a7">Atom 1.0 兼容软件</font> 的列表,以及 Atom 1.0 和 RSS 2.0 的 <font color="#5c81a7">详细比较</font>。<br><br></li> <li>如果希望进一步了解播客,请访问 <font color="#5c81a7">ipodder.org</font>。<br><br></li> <li>阅读 Uche Ogbuji 的 developerWorks 文章“<font color="#996699">Thinking XML: 使用 Atom 格式连锁新闻及其他内容</font>”(2004 年 5 月)。 <br><br></li> <li><font color="#5c81a7">IT Conversations</font> 使用 RSS 提供了多重播客。 <br><br></li> <li>在 <font color="#5c81a7">developerWorks XML 专区</font>可以找到数以百计的 XML 资源。<br><br></li> <li>了解如何才能成为一名 <font color="#5c81a7">IBM 认证的 XML 及相关技术的开发人员</font>。 </li> </ul>   </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1281996898386853888"></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">你可能感兴趣的:(11),Web2.0)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1899334118114652160.htm" title="Linux提权sudo篇" target="_blank">Linux提权sudo篇</a> <span class="text-muted">璃靡</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>文章目录linux提权01.CVE-2019-1428702.sudoapt03.sudoapach204.sudoash05.sudoawk06.sudobase6407.sudobash08.sudocp09.sudocpulimit10.sudocurl11.sudodate12.sudodd13.sudodstat14.sudoed15.sudoenv16.exiftool17.sudoe</div> </li> <li><a href="/article/1899325166618472448.htm" title="Linux tcpdump -any抓的包转换成标准的pcap" target="_blank">Linux tcpdump -any抓的包转换成标准的pcap</a> <span class="text-muted">812503533</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/tcpdump/1.htm">tcpdump</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a> <div>在Linux中使用tcpdump-any抓包并转换为标准pcap文件时出现额外字段,通常与链路层协议头部的差异以及pcap文件格式的兼容性有关。以下是详细原因和解决方案:一、问题原因分析-any选项的局限性tcpdump-any会自动猜测链路层协议类型(如Ethernet、IEEE802.11、PPP等),但可能因环境复杂导致误判。例如:在混合网络(如同时包含有线和无线流量)中,自动检测可能失败。</div> </li> <li><a href="/article/1899318225800327168.htm" title="C++11之列表初始化" target="_blank">C++11之列表初始化</a> <span class="text-muted">Octopus2077</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>发展历史C++11是C++的第⼆个主要版本,并且是从C++98起的最重要更新。它引⼊了⼤量更改,标准化了既有实践,并改进了对C++程序员可⽤的抽象。在它最终由ISO在2011年8⽉12⽇采纳前,⼈们曾使⽤名称“C++0x”,因为它曾被期待在2010年之前发布。C++03与C++11期间花了8年时间,故⽽这是迄今为⽌最⻓的版本间隔。从那时起,C++有规律地每3年更新⼀次。列表初始化(注意区分列表初始</div> </li> <li><a href="/article/1899305361437945856.htm" title="LWC-KD:图结构感知的推荐系统增量学习对比知识蒸馏" target="_blank">LWC-KD:图结构感知的推荐系统增量学习对比知识蒸馏</a> <span class="text-muted">宇直不会放弃</span> <a class="tag" taget="_blank" href="/search/GKD-Middle/1.htm">GKD-Middle</a><a class="tag" taget="_blank" href="/search/layer/1.htm">layer</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/gpu%E7%AE%97%E5%8A%9B/1.htm">gpu算力</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a> <div>LWC-KD:图结构感知的推荐系统增量学习对比知识蒸馏《GraphStructureAwareContrastiveKnowledgeDistillationforIncrementalLearninginRecommenderSystems》2021作者是YueningWang、YingxueZhang和MarkCoates论文地址:https://dl.acm.org/doi/10.1145/</div> </li> <li><a href="/article/1899275732790603776.htm" title="统信uos20:利用docker部署python+jupyterlab开发环境" target="_blank">统信uos20:利用docker部署python+jupyterlab开发环境</a> <span class="text-muted">阆遤</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/actions/1.htm">actions</a><a class="tag" taget="_blank" href="/search/workflow/1.htm">workflow</a><a class="tag" taget="_blank" href="/search/%E7%BB%9F%E4%BF%A1uos20/1.htm">统信uos20</a> <div>很多统信uos20计算机没有联网安装python开发环境的条件,但是工作中需要对数据进行分析处理,因而产生了离线部署python开发环境的想法。我首先下载了python3.11的源代码包,在uos中编译居然正常通过。但后续的麻烦来了:需要安装的库没法安装。尝试了一天,最终放弃。改用Docker方式部署,理由就不多解释了。一、在uos中安装docker。我的系统是uos20linux4.19.0-a</div> </li> <li><a href="/article/1899273967538073600.htm" title="GitLab:GitLab问题追踪与项目协作_2024-07-18_01-47-52.Tex" target="_blank">GitLab:GitLab问题追踪与项目协作_2024-07-18_01-47-52.Tex</a> <span class="text-muted">chenjj4003</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/1.htm">游戏开发</a><a class="tag" taget="_blank" href="/search/gitlab/1.htm">gitlab</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>GitLab:GitLab问题追踪与项目协作GitLab基础介绍GitLab的历史与发展GitLab是一个开源的版本控制系统,最初由乌克兰开发者DmitriyZaporozhets和ValerySizov在2011年创建。它最初是作为GitHub的一个替代品而设计的,旨在提供一个自我托管的Git仓库管理工具。GitLab的第一个版本是在RubyonRails上构建的,随着时间的推移,它逐渐发展成为</div> </li> <li><a href="/article/1899264253756502016.htm" title="架构生命周期(演进史)技术应服务于业务" target="_blank">架构生命周期(演进史)技术应服务于业务</a> <span class="text-muted">Limbo1213</span> <a class="tag" taget="_blank" href="/search/java%E6%9E%B6%E6%9E%84/1.htm">java架构</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%BC%94%E8%BF%9B%E5%8F%B2/1.htm">生命周期演进史</a> <div>架构生命周期简介本篇幅主要讲述架构的各阶段出现的需求问题、业务问题、性能问题以及相应的解决方案。1、web1.0时代(1996年左右)2、web2.0时代(2006年左右)3、互联网时代(2012年左右)–》互联网±-》智慧城市。滴滴打车。饿了么(工商局)4、大数据+云计算5、AI未来以来时代…第一时期单一应用架构allinone。所有的模块和代码都在一起。技术也不分层。(2000年左右)网站的初</div> </li> <li><a href="/article/1899243581386846208.htm" title="二叉树-将二叉树展开为链表" target="_blank">二叉树-将二叉树展开为链表</a> <span class="text-muted">Vacant Seat</span> <a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><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/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>114.将二叉树展开为链表给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。输入:二叉树的根结点输出:空?思路:前序遍历之后再赋值,左边置为空,右边为单链表中的结点使用递归classSolution{Listlist=newArrayLis</div> </li> <li><a href="/article/1899240298421219328.htm" title="小米便签——ui包详细解读" target="_blank">小米便签——ui包详细解读</a> <span class="text-muted">一号言安</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E2%80%94%E2%80%94Android/1.htm">软件工程——Android</a><a class="tag" taget="_blank" href="/search/Studio%E5%B0%8F%E7%B1%B3%E4%BE%BF%E7%AD%BE%E9%A1%B9%E7%9B%AE/1.htm">Studio小米便签项目</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a> <div>目录ui:用户界面类1AlarmAlertActivity2AlarmInitReceiver3AlarmReceiver4DateTimePicker5DateTimePickerDialog6DropdownMenu7FoldersListAdapter8NoteEditActivity9NoteltemData10NotesListActivity11NoteEditText12NotesL</div> </li> <li><a href="/article/1899238031202775040.htm" title="D3D11的简单字体" target="_blank">D3D11的简单字体</a> <span class="text-muted">x-2010</span> <a class="tag" taget="_blank" href="/search/DIRECT3D/1.htm">DIRECT3D</a><a class="tag" taget="_blank" href="/search/D3D%E5%AD%97%E4%BD%93%E5%AE%9E%E7%8E%B0/1.htm">D3D字体实现</a> <div>本篇的任务是要先学会混合和纹理才能够做到的。这儿有几种方法能够在D3D11中实现字体显示,一个是学会使用微软想要我们使用的两个新的API,Direct2D和DirectWrite,实际上它们是很有用处的,暂不提它们的灵活性(除了不能够直接使用D3D11设备之外),它的缺点就是由于不能够直接在D3D11中使用,需要在D3D10.1的设备中使用,导致在渲染时需要在这两种设备之间切换。本篇是在混合篇基础</div> </li> <li><a href="/article/1899229330437894144.htm" title="C++11使用mutex和condition_variable实现线程同步" target="_blank">C++11使用mutex和condition_variable实现线程同步</a> <span class="text-muted">追烽少年x</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E5%9F%BA%E7%A1%80/1.htm">C++基础</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>C++11使用mutex和condition_variable实现线程同步在实现项目的过程中,突然有一个问题:C++中A、B、C三个线程模拟购买100张车票,A输出99,B输出98,C输出97,然后又循环A输出96,B95,C94,直到0,使用线程同步,如何实现?这是一种按顺序执行线程的问题,应该实现?代码如下:#include#include#include#include#include//共</div> </li> <li><a href="/article/1899215836804083712.htm" title="oracle字符时间比较,Oracle字符和时间比较" target="_blank">oracle字符时间比较,Oracle字符和时间比较</a> <span class="text-muted">七娃爸爸</span> <a class="tag" taget="_blank" href="/search/oracle%E5%AD%97%E7%AC%A6%E6%97%B6%E9%97%B4%E6%AF%94%E8%BE%83/1.htm">oracle字符时间比较</a> <div>数据库中的字段2017-07-1113:37:51类型是char或者varchar要进件与'20170625'比较,格式不一致,需要将他转换成:yyyyMMdd字符串1、先to_dateto_date(create_date,'yyyy-mm-dd,hh24:mi:ss')格式一定要与create_date一致2、转字符串to_char(sysdate,'yyyymmdd')例:下面将create</div> </li> <li><a href="/article/1899213309182275584.htm" title="【从零开始学java】第1章,基础知识入门,小白零基础可看,笔记整理" target="_blank">【从零开始学java】第1章,基础知识入门,小白零基础可看,笔记整理</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/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>java基础11注释标志符关键字注释注释并不会被执行,是写给人类看的,书写注释是一个很好的习惯平时写代码一定要注意规范单行注释//多行注释/*注释*/文档注释/**注释*/2标识符关键字abstract:用于声明抽象类或抽象方法。assert:用于调试时进行断言。boolean:表示布尔类型(true或false)。break:跳出当前循环或switch语句。byte:表示字节数据类型。case:</div> </li> <li><a href="/article/1899208387200086016.htm" title="P11:利用marked+highlight.js重构前台文章详细页面" target="_blank">P11:利用marked+highlight.js重构前台文章详细页面</a> <span class="text-muted">知其黑、受其白</span> <a class="tag" taget="_blank" href="/search/React/1.htm">React</a><a class="tag" taget="_blank" href="/search/Hooks%2BLaravel/1.htm">Hooks+Laravel</a><a class="tag" taget="_blank" href="/search/%E5%88%B6%E4%BD%9C%E5%8D%9A%E5%AE%A2/1.htm">制作博客</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a> <div>ReactHooks+Laravel前端博客实战阐述安装marked和highlight.js重构`detailed.js`文件增加Code的高亮显示CSS样式的更换MySQL数据阐述之前我们在博客文章详细页使用了react-markdown模块,但是这个插件的配置项还是太少了,而且我也没做太多的技术调研,所以我决定转回我目前项目中使用的一套方案marked+highlight.js。这个方案是比</div> </li> <li><a href="/article/1899202837116678144.htm" title="数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell" target="_blank">数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell</a> <span class="text-muted">caihuayuan4</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a> <div>@TOC[Mysql数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell:https://blog.csdn.net/weixin_42526326/article/details/121148721什么是CDC?CDC(ChangeDataCapture)是变更数据获取的简称。可以基于增量日志,以极低的侵入性来完成增量数据捕获的工</div> </li> <li><a href="/article/1899195143077031936.htm" title="Permute 3 for Mac v3.11.10 全能媒体格式转换器" target="_blank">Permute 3 for Mac v3.11.10 全能媒体格式转换器</a> <span class="text-muted">明天会在哪</span> <a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a> <div>Permute3软件是一款功能强大的媒体格式转换工具,它为用户提供了前所未有的便利性和灵活性,以处理各种音频、视频和图像文件。无论是在个人娱乐、专业制作还是跨平台兼容性的需求中,Permute3都能轻松应对,满足用户多样化的媒体格式转换需求。前往Mac粉笔下载Permute3forMacv3.11.10全能媒体格式转换器激活版-Mac粉笔网(macfb.com)首先,Permute3支持广泛的媒体</div> </li> <li><a href="/article/1899186306601250816.htm" title="python 使用flask+sqlalchemy 实现简单数据查询接口" target="_blank">python 使用flask+sqlalchemy 实现简单数据查询接口</a> <span class="text-muted">darling331</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</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/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>数据库表结构和部分数据SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforuser------------------------------DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`id`int(11)NOTNULLAUTO_I</div> </li> <li><a href="/article/1899186053558890496.htm" title="FastExcel/EasyExcel简介以及源码解析" target="_blank">FastExcel/EasyExcel简介以及源码解析</a> <span class="text-muted">舌尖上的五香</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>简介官网地址GitHub地址基于MIT协议发展历史由EasyExcel发展而来2018/02/07:发布1.0.02019/09/17:发布2.0.02021/10/21:发布3.0.12024/06/18:发布4.0.02024/11/06:进入维护模式2024/12/05:发布FastExcel1.0.0主要特性高性能读写简单易用流式操作读取执行行数技术原理内存优化:基于流式读取技术,不需要一</div> </li> <li><a href="/article/1899174707232567296.htm" title="基于STM32单片机的仓库管理系统设计-RFID-电磁锁-震动-ISD1820-TFT1.44-WiFi APP-DIY25-112" target="_blank">基于STM32单片机的仓库管理系统设计-RFID-电磁锁-震动-ISD1820-TFT1.44-WiFi APP-DIY25-112</a> <span class="text-muted">通旺科技</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>本设计由STM32F103C8T6单片机核心板电路+3个RFID模块电路+电磁锁电路+震动传感器电路+ISD1820语音模块电路+TFT1.44寸液晶显示电路+WiFi模块电路+电源电路组成。1、有3张RFID卡,分贝代表张三、李四、王二。2、有4个RFID模块,1个RFID模块代表门禁,其余3个RFID模块代表装备A、B、C。3、张三、李四、王二刷门禁,则电磁锁收缩3秒后伸出,即通过电磁锁模拟开</div> </li> <li><a href="/article/1899171931110830080.htm" title="MySQL精选面试题" target="_blank">MySQL精选面试题</a> <span class="text-muted">米二</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>文章目录1.sql优化2.数据库优化3.悲观锁和乐观锁4.共享锁与排他锁5.索引的目的是什么?6.B+Tree对比BTree的优点:6.1磁盘读写代价更低6.2查询速度更稳定且能存更多索引6.3B+树叶子节点两两相连增快区间访问7.聚簇索引和非聚簇索引的区别8.forupdate9.间隙锁GapLocks10.临键锁Next-KeyLocks11.MVCC是什么?1.sql优化对查询进行优化,应尽</div> </li> <li><a href="/article/1899160336271994880.htm" title="python os模块[zt]" target="_blank">python os模块[zt]</a> <span class="text-muted">weixin_34357962</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a> <div>pythonos模块(2008-07-0311:59:39)http://blog.sina.com.cn/s/blog_4e808acf01009uav.html标签:pythonos杂谈分类:pythonPython的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linu</div> </li> <li><a href="/article/1899142939272081408.htm" title="Linux SSHD 启动失败:OpenSSL 版本不匹配问题分析与解决" target="_blank">Linux SSHD 启动失败:OpenSSL 版本不匹配问题分析与解决</a> <span class="text-muted">XMYX-0</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>文章目录LinuxSSHD启动失败:OpenSSL版本不匹配问题分析与解决问题分析解决方案方法1:重启SSH服务方法2:检查sshd依赖的OpenSSL版本方法3:检查OpenSSL共享库方法4:重新安装OpenSSH总结LinuxSSHD启动失败:OpenSSL版本不匹配问题分析与解决在Linux服务器上,sshd可能因OpenSSL版本不匹配而启动失败,具体错误信息如下:Mar1100:09:</div> </li> <li><a href="/article/1899140669725798400.htm" title="鸿蒙HarmonyOS NEXT开发:文本通用" target="_blank">鸿蒙HarmonyOS NEXT开发:文本通用</a> <span class="text-muted">「已注销」</span> <a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a><a class="tag" taget="_blank" href="/search/ArkTS/1.htm">ArkTS</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a> <div>文本通用文本通用属性目前只针对包含文本元素的组件,设置文本样式。说明:从APIVersion7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。fontColorfontColor(value:ResourceColor)设置字体颜色。卡片能力:从APIversion9开始,该接口支持在ArkTS卡片中使用。原子化服务API:从APIversion11开始,该接口支持在原子化服</div> </li> <li><a href="/article/1899130711491801088.htm" title="清华大学deepseek职场赋能pdf手册" target="_blank">清华大学deepseek职场赋能pdf手册</a> <span class="text-muted">2501_91037631</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a> <div>链接:https://pan.quark.cn/s/8f9bf8d96112资料整理的很齐全,赶紧收藏学习吧</div> </li> <li><a href="/article/1899122137160019968.htm" title="windows11家庭版安装ubuntu子系统训练深度模型" target="_blank">windows11家庭版安装ubuntu子系统训练深度模型</a> <span class="text-muted">吃水果不削皮</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>文章目录环境准备前提条件安装环境安装Hyper-V安装Linux分发版升级WSL内核启用虚拟机功能安装ubuntu24.04安装桌面环境安装远程控制软件xrdp从Windows启动桌面版Ubuntu环境准备前提条件windows机器需要支持虚拟化,并且需要在BIOS中开启虚拟化技术,因为WSL2基于hyper-V,查看是否开启虚拟化:按住Windows+R输入cmd打开命令行,输入systemin</div> </li> <li><a href="/article/1899117599900364800.htm" title="学习笔记11——并发编程之并发关键字" target="_blank">学习笔记11——并发编程之并发关键字</a> <span class="text-muted">码代码的小仙女</span> <a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91%E5%BF%85%E5%A4%87%E6%8A%80%E8%83%BD/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/java/1.htm">java</a> <div>并发关键字synchronized关键字在应用Sychronized关键字时需要把握如下注意点:1.一把锁只能同时被一个线程获取,没有获得锁的线程只能等待;2.每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的时候,所有对象公用同一把锁3.synchronized修饰的方法,无论方法正常执行完毕还是抛出</div> </li> <li><a href="/article/1899111043225939968.htm" title="VSCode配置C++11" target="_blank">VSCode配置C++11</a> <span class="text-muted">徐锦桐</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E7%A8%8B/1.htm">教程</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>前言有时候,我们使用c++的时候,想用c++11,在VSCode中如何配置呢,这里我会告诉大家。正文首先点击左上角的文件,找到首选项中的设置在设置中搜索,code-runner在code-runner中找到executorMap,在setting.json中编辑。在cpp中加入-std=c++11。如图接着打开takes.json也是加入-std=c++11,详细位置如图。结尾VSCode的c++</div> </li> <li><a href="/article/1899108142202023936.htm" title="【网络编程】完成端口 IOCP" target="_blank">【网络编程】完成端口 IOCP</a> <span class="text-muted">浅慕Antonio</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/1.htm">网络编程</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>10.11完成端口10.11.1基本概念完成端口的全称是I/O完成端口,英文为IOCP(I/OCompletionPort)。IOCP是一个异步I/O的API,可以高效地将I/O事件通知给应用程序。与使用select()或是其他异步方法不同的是,一个套接字与一个完成端口关联了起来,然后就可以继续进行正常的Winsock操作了。然而,当一个事件发生的时候,此完成端口就将被操作系统加入一个队列中。然后</div> </li> <li><a href="/article/1899101335651938304.htm" title="CAS:1178931-50-4,GalNAz-1-P,N-azidoacetylgalactosamine tetraacylated 1-phosphate" target="_blank">CAS:1178931-50-4,GalNAz-1-P,N-azidoacetylgalactosamine tetraacylated 1-phosphate</a> <span class="text-muted">陕西星贝爱科</span> <a class="tag" taget="_blank" href="/search/GalNAz-1-P/1.htm">GalNAz-1-P</a><a class="tag" taget="_blank" href="/search/1178931-50-4/1.htm">1178931-50-4</a> <div>GalNAz-1-P是一种化合物,通常用于糖基化生物学研究中。以下是关于它的详细介绍:基本信息中文名称:GalNAz-1-P,N-azidoacetylgalactosaminetetraacylated1-phosphate英文名称:GalNAz-1-P,N-azidoacetylgalactosaminetetraacylated1-phosphateCAS号:1178931-50-4化学结构</div> </li> <li><a href="/article/1899098185255677952.htm" title="【LeetCode系列】Google面试题" target="_blank">【LeetCode系列】Google面试题</a> <span class="text-muted">烊萌</span> <a class="tag" taget="_blank" href="/search/LeetCode%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE%E8%AE%B2%E8%A7%A3/1.htm">LeetCode经典题目讲解</a><a class="tag" taget="_blank" href="/search/LeetCode%E7%B3%BB%E5%88%97/1.htm">LeetCode系列</a><a class="tag" taget="_blank" href="/search/Google%E9%9D%A2%E8%AF%95%E9%A2%98%E8%AE%B2%E8%A7%A3/1.htm">Google面试题讲解</a> <div>Google面试题目录Google面试题LeetCode14最长公共前缀1、分析2、代码LeetCode20有效的括号1、分析2、代码LeetCode43字符串相乘1、分析2、代码LeetCode48旋转图像1、分析2、代码LeetCode31下一个排列1、分析2、代码LeetCode23合并K个排序链表1、分析2、代码LeetCode33搜索旋转排序数组1、分析2、代码LeetCode11盛最多</div> </li> <li><a href="/article/21.htm" title="矩阵求逆(JAVA)利用伴随矩阵" target="_blank">矩阵求逆(JAVA)利用伴随矩阵</a> <span class="text-muted">qiuwanchi</span> <a class="tag" taget="_blank" href="/search/%E5%88%A9%E7%94%A8%E4%BC%B4%E9%9A%8F%E7%9F%A9%E9%98%B5%E6%B1%82%E9%80%86%E7%9F%A9%E9%98%B5/1.htm">利用伴随矩阵求逆矩阵</a> <div>package gaodai.matrix; import gaodai.determinant.DeterminantCalculation; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 矩阵求逆(利用伴随矩阵) * @author 邱万迟 </div> </li> <li><a href="/article/148.htm" title="单例(Singleton)模式" target="_blank">单例(Singleton)模式</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%BC%8F/1.htm">模式</a><a class="tag" taget="_blank" href="/search/Singleton/1.htm">Singleton</a> <div>3.1           概述 如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式。这种情况在我们应用中经常碰到,例如缓存池,数据库连接池,线程池,一些应用服务实例等。在多线程环境中,为了保证实例的唯一性其实并不简单,这章将和读者一起探讨如何实现单例模式。 3.2</div> </li> <li><a href="/article/275.htm" title="[开源与自主研发]就算可以轻易获得外部技术支持,自己也必须研发" target="_blank">[开源与自主研发]就算可以轻易获得外部技术支持,自己也必须研发</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a> <div>       现在国内有大量的信息技术产品,都是通过盗版,免费下载,开源,附送等方式从国外的开发者那里获得的。。。。。。        虽然这种情况带来了国内信息产业的短暂繁荣,也促进了电子商务和互联网产业的快速发展,但是实际上,我们应该清醒的看到,这些产业的核心力量是被国外的</div> </li> <li><a href="/article/402.htm" title="页面有两个frame,怎样点击一个的链接改变另一个的内容" target="_blank">页面有两个frame,怎样点击一个的链接改变另一个的内容</a> <span class="text-muted">Array_06</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/XHTML/1.htm">XHTML</a> <div><a src="地址"  targets="这里写你要操作的Frame的名字" />搜索 然后你点击连接以后你的新页面就会显示在你设置的Frame名字的框那里 targerts="",就是你要填写目标的显示页面位置 ===================== 例如: <frame src=&</div> </li> <li><a href="/article/529.htm" title="Struts2实现单个/多个文件上传和下载" target="_blank">Struts2实现单个/多个文件上传和下载</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div>struts2单文件上传:     步骤01:jsp页面 <!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data,不然就会以二进制文本上传到服务器端-->   <form action="fileUplo</div> </li> <li><a href="/article/656.htm" title="推荐10个在线logo设计网站" target="_blank">推荐10个在线logo设计网站</a> <span class="text-muted">362217990</span> <a class="tag" taget="_blank" href="/search/logo/1.htm">logo</a> <div>在线设计Logo网站。 1、http://flickr.nosv.org(这个太简单) 2、http://www.logomaker.com/?source=1.5770.1 3、http://www.simwebsol.com/ImageTool 4、http://www.logogenerator.com/logo.php?nal=1&tpl_catlist[]=2 5、ht</div> </li> <li><a href="/article/783.htm" title="jsp上传文件" target="_blank">jsp上传文件</a> <span class="text-muted">香水浓</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/fileupload/1.htm">fileupload</a> <div>1. jsp上传 Notice: 1. form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法 2. form表单 enctype 属性需要设置为 multipart/form-data 3. form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址或者servlet地址。例如 uploadFile.jsp 程序文件用来处理上传的文</div> </li> <li><a href="/article/910.htm" title="我的架构经验系列文章 - 前端架构" target="_blank">我的架构经验系列文章 - 前端架构</a> <span class="text-muted">agevs</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/jQuer/1.htm">jQuer</a> <div>框架层面:近几年前端发展很快,前端之所以叫前端因为前端是已经可以独立成为一种职业了,js也不再是十年前的玩具了,以前富客户端RIA的应用可能会用flash/flex或是silverlight,现在可以使用js来完成大部分的功能,因此js作为一门前端的支撑语言也不仅仅是进行的简单的编码,越来越多框架性的东西出现了。越来越多的开发模式转变为后端只是吐json的数据源,而前端做所有UI的事情。MVCMV</div> </li> <li><a href="/article/1037.htm" title="android ksoap2 中把XML(DataSet) 当做参数传递" target="_blank">android ksoap2 中把XML(DataSet) 当做参数传递</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>我的android app中需要发送webservice ,于是我使用了 ksop2 进行发送,在测试过程中不是很顺利,不能正常工作.我的web service 请求格式如下     [html]  view plain copy   <Envelope xmlns="http://schemas.</div> </li> <li><a href="/article/1164.htm" title="使用Spring进行统一日志管理 + 统一异常管理" target="_blank">使用Spring进行统一日志管理 + 统一异常管理</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>统一日志和异常管理配置好后,SSH项目中,代码以往散落的log.info() 和 try..catch..finally 再也不见踪影! 统一日志异常实现类: [java]  view plain copy   package com.pilelot.web.util;      impor</div> </li> <li><a href="/article/1291.htm" title="Android SDK 国内镜像" target="_blank">Android SDK 国内镜像</a> <span class="text-muted">BigBird2012</span> <a class="tag" taget="_blank" href="/search/android+sdk/1.htm">android sdk</a> <div>一、镜像地址: 1、东软信息学院的 Android SDK 镜像,比配置代理下载快多了。 配置地址, http://mirrors.neusoft.edu.cn/configurations.we#android 2、北京化工大学的: IPV4:ubuntu.buct.edu.cn  IPV4:ubuntu.buct.cn IPV6:ubuntu.buct6.edu.cn </div> </li> <li><a href="/article/1418.htm" title="HTML无害化和Sanitize模块" target="_blank">HTML无害化和Sanitize模块</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/Linky/1.htm">Linky</a><a class="tag" taget="_blank" href="/search/Sanitize/1.htm">Sanitize</a> <div>一.ng-bind-html、ng-bind-html-unsafe         AngularJS非常注重安全方面的问题,它会尽一切可能把大多数攻击手段最小化。其中一个攻击手段是向你的web页面里注入不安全的HTML,然后利用它触发跨站攻击或者注入攻击。         考虑这样一个例子,假设我们有一个变量存</div> </li> <li><a href="/article/1545.htm" title="[Maven学习笔记二]Maven命令" target="_blank">[Maven学习笔记二]Maven命令</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>mvn compile compile编译命令将src/main/java和src/main/resources中的代码和配置文件编译到target/classes中,不会对src/test/java中的测试类进行编译 MVN编译使用 maven-resources-plugin:2.6:resources maven-compiler-plugin:2.5.1:compile &nbs</div> </li> <li><a href="/article/1672.htm" title="【Java命令二】jhat" target="_blank">【Java命令二】jhat</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a> <div>jhat用于分析使用jmap dump的文件,,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。 jhat默认开启监听端口7000的HTTP服务,jhat是Java Heap Analysis Tool的缩写 1. 用法: [hadoop@hadoop bin]$ jhat -help Usage: jhat [-stack <bool&g</div> </li> <li><a href="/article/1799.htm" title="JBoss 5.1.0 GA:Error installing to Instantiated: name=AttachmentStore state=Desc" target="_blank">JBoss 5.1.0 GA:Error installing to Instantiated: name=AttachmentStore state=Desc</a> <span class="text-muted">ronin47</span> <div>进到类似目录 server/default/conf/bootstrap,打开文件 profile.xml找到: Xml代码<bean    name="AttachmentStore"  class="org.jboss.system.server.profileservice.repository.AbstractAtta</div> </li> <li><a href="/article/1926.htm" title="写给初学者的6条网页设计安全配色指南" target="_blank">写给初学者的6条网页设计安全配色指南</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/ui%E8%87%AA%E5%AD%A6/1.htm">ui自学</a><a class="tag" taget="_blank" href="/search/ui%E8%A7%86%E9%A2%91/1.htm">ui视频</a><a class="tag" taget="_blank" href="/search/ui%E6%95%99%E7%A8%8B/1.htm">ui教程</a><a class="tag" taget="_blank" href="/search/ui%E8%B5%84%E6%96%99/1.htm">ui资料</a> <div>网页设计中最基本的原则之一是,不管你花多长时间创造一个华丽的设计,其最终的角色都是这场秀中真正的明星——内容的衬托     我仍然清楚地记得我最早的一次美术课,那时我还是一个小小的、对凡事都充满渴望的孩子,我摆放出一大堆漂亮的彩色颜料。我仍然记得当我第一次看到原色与另一种颜色混合变成第二种颜色时的那种兴奋,并且我想,既然两种颜色能创造出一种全新的美丽色彩,那所有颜色</div> </li> <li><a href="/article/2053.htm" title="有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。" target="_blank">有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。</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><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div> import java.util.Random; import java.util.Set; import java.util.TreeSet; /** * http://weibo.com/1915548291/z7HtOF4sx * #面试题#有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。 * 写一个函数实现。复杂度是什么</div> </li> <li><a href="/article/2180.htm" title="struts2获得request、session、application方式" target="_blank">struts2获得request、session、application方式</a> <span class="text-muted">chiangfai</span> <a class="tag" taget="_blank" href="/search/application/1.htm">application</a> <div>1、与Servlet API解耦的访问方式。 a.Struts2对HttpServletRequest、HttpSession、ServletContext进行了封装,构造了三个Map对象来替代这三种对象要获取这三个Map对象,使用ActionContext类。 ----->   package pro.action; import java.util.Map; imp</div> </li> <li><a href="/article/2307.htm" title="改变python的默认语言设置" target="_blank">改变python的默认语言设置</a> <span class="text-muted">chenchao051</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div> import sys sys.getdefaultencoding()  可以测试出默认语言,要改变的话,需要在python lib的site-packages文件夹下新建: sitecustomize.py, 这个文件比较特殊,会在python启动时来加载,所以就可以在里面写上: import sys sys.setdefaultencoding('utf-8') &n</div> </li> <li><a href="/article/2434.htm" title="mysql导入数据load data infile用法" target="_blank">mysql导入数据load data infile用法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%AF%BC%E5%85%A5%E6%95%B0%E6%8D%AE/1.htm">导入数据</a> <div>我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明 基本语法: load data  [low_priority] [local] infile 'file_name txt' [replace | ignore] into table tbl_name [fields [terminated by't'] [OPTI</div> </li> <li><a href="/article/2561.htm" title="phpexcel导入excel表到数据库简单入门示例" target="_blank">phpexcel导入excel表到数据库简单入门示例</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a> <div> 跟导出相对应的,同一个数据表,也是将phpexcel类放在class目录下,将Excel表格中的内容读取出来放到数据库中 <?php error_reporting(E_ALL); set_time_limit(0); ?> <html> <head> <meta http-equiv="Content-Type" </div> </li> <li><a href="/article/2688.htm" title="22岁到72岁的男人对女人的要求" target="_blank">22岁到72岁的男人对女人的要求</a> <span class="text-muted">dcj3sjt126com</span> <div>22岁男人对女人的要求是:一,美丽,二,性感,三,有份具品味的职业,四,极有耐性,善解人意,五,该聪明的时候聪明,六,作小鸟依人状时尽量自然,七,怎样穿都好看,八,懂得适当地撒娇,九,虽作惊喜反应,但看起来自然,十,上了床就是个无条件荡妇。 32岁的男人对女人的要求,略作修定,是:一,入得厨房,进得睡房,二,不必服侍皇太后,三,不介意浪漫蜡烛配盒饭,四,听多过说,五,不再傻笑,六,懂得独</div> </li> <li><a href="/article/2815.htm" title="Spring和HIbernate对DDM设计的支持" target="_blank">Spring和HIbernate对DDM设计的支持</a> <span class="text-muted">e200702084</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/1.htm">领域模型</a> <div>A:数据访问对象     DAO和资源库在领域驱动设计中都很重要。DAO是关系型数据库和应用之间的契约。它封装了Web应用中的数据库CRUD操作细节。另一方面,资源库是一个独立的抽象,它与DAO进行交互,并提供到领域模型的“业务接口”。    资源库使用领域的通用语言,处理所有必要的DAO,并使用领域理解的语言提供对领域模型的数据访问服务。</div> </li> <li><a href="/article/2942.htm" title="NoSql 数据库的特性比较" target="_blank">NoSql 数据库的特性比较</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a> <div>Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。   1. 数据模型 作为Key-value型数据库,Redis也提供了键(Key)和值(Value)的映射关系。除了常规的数值或字符串,Redis的键值还可以是以下形式之一: Lists (列表) Sets</div> </li> <li><a href="/article/3069.htm" title="使用 Nginx Upload Module 实现上传文件功能" target="_blank">使用 Nginx Upload Module 实现上传文件功能</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>转载自: http://www.tuicool.com/wx/aUrAzm   普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦。Nginx有一个Upload模块,可以非常简单的实现文件上传功能。此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面。下</div> </li> <li><a href="/article/3196.htm" title="spring-boot-web-ui及thymeleaf基本使用" target="_blank">spring-boot-web-ui及thymeleaf基本使用</a> <span class="text-muted">jishiweili</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/thymeleaf/1.htm">thymeleaf</a> <div>视图控制层代码demo如下:   @Controller @RequestMapping("/") public class MessageController { private final MessageRepository messageRepository; @Autowired public MessageController(Mes</div> </li> <li><a href="/article/3323.htm" title="数据源架构模式之活动记录" target="_blank">数据源架构模式之活动记录</a> <span class="text-muted">home198979</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95/1.htm">活动记录</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84/1.htm">数据映射</a> <div>hello!架构 一、概念 活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑。 对象既有数据又有行为。活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中。   二、实现简单活动记录 活动记录在php许多框架中都有应用,如cakephp。 <?php /** * 行数据入口类 *</div> </li> <li><a href="/article/3450.htm" title="Linux Shell脚本之自动修改IP" target="_blank">Linux Shell脚本之自动修改IP</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/Debian/1.htm">Debian</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a> <div>作为一名 Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! #!/bin/sh #auto Change ip netmask ga</div> </li> <li><a href="/article/3577.htm" title="开发环境搭建" target="_blank">开发环境搭建</a> <span class="text-muted">独浮云</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a> <div>       最近在开发过程中,经常出现MyEclipse内存溢出等错误,需要重启的情况,好麻烦。对于一般的JAVA+TOMCAT项目开发,其实没有必要使用重量级的MyEclipse,使用eclipse就足够了。尤其是开发机器硬件配置一般的人。         &n</div> </li> <li><a href="/article/3704.htm" title="操作日期和时间的工具类" target="_blank">操作日期和时间的工具类</a> <span class="text-muted">vipbooks</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">工具类</a> <div>   大家好啊,好久没有来这里发文章了,今天来逛逛,分享一篇刚写不久的操作日期和时间的工具类,希望对大家有所帮助。 /* * @(#)DataFormatUtils.java 2010-10-10 * * Copyright 2010 BianJing,All rights reserved. */ package test; impor</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>