magento 开发 -- 深入理解Magento第七章 – 自定义Magento系统配置

 

第七章 – 自定义Magento系统配置

Magento拥有十分强大的后台管理系统。作为一名开发人员,这套后台管理系统可以让你的用户简单直接的配置Magento系统或者你创建的模块。和Magento的其他功能一样,你第一次使用这套管理系统的时候可能觉得很麻烦,但是一旦你上手了,你会发现它强大的功能是那么吸引人。那么让我们开始吧。我们这一章的例子依然是基于Helloworld模块。

添加系统配置文件

首先我们要为模块添加一个系统配置文件。这个文件和“config.xml”是不搭界的
app/code/local/Zhlmmc/Helloworld/etc/system.xml
和全局配置(global config)相似,系统配置也是单独存储的。我们可以通过下面这段代码来获取系统配置文件
//header('Content-Type: text/xml');         
header('Content-Type: text/plain');         
echo $config = Mage::getConfig()
->loadModulesConfiguration('system.xml')        
->getNode()
->asXML();          
exit;

你可以把这段代码放到任何执行函数(Action Method)中。“loadModulesConfiguration”方法会搜索所有配置好的模块的“etc”文件夹,寻找以传入的参数为名字的文件,在这个例子中是“system.xml”。Magento有很多不同的配置文件,比如api.xml, wsdl.xml, wsdl2.xml, convert.xml, compilation.xml, install.xml。你可以为你创建的模块创建这些配置文件。

添加一个标签页

我们首先在后台系统管理页面添加一个标签页(Tab)。标签页就是后台“System->Configuration”页面左侧的导航栏。默认的标签页有General,Catalog,Customers,Sales,Services等等。我们来创建一个新的标签页叫做“Hello Config”。创建如下文件
Location: app/code/local/Zhlmmc/Helloworld/etc/system.xml

   
       
           
            99999
       

   
 

我们来解释一下各个节点(Tag)的意思。【译者注:由于Tab和Tag中文翻译都是标签,所以这里我把Tag翻译成节点,以免混淆】“”就是我们要添加的标签页的定义节点,“helloconfig”是节点的ID。你可以任意命名这个ID,但是必须全局唯一,也就是不能和别人用同样的ID。这个ID是用来唯一标示你的标签页的。“module=helloworld”,意思是这个标签页属于哪个模块。“

打开后台“System->Configuration”,你会看到如下错误
Fatal error: Class 'Mage_Helloworld_Helper_Data' not found in….

Magento Helper简介

正如许多其他的PHP MVC系统一样,Magento也有帮助类(Helper Classes)。这些类用来提供一些不适合放在模型,视图或者控制器中的功能。Magento的帮助类也是采用分组类名的机制。也就是说我们可以覆盖默认的帮助类,同时我们需要在config.xml中指定帮助类的基类名。

Magento系统默认模块有一个默认的帮助类。正如我们上面的异常显示,我们的Helloworld模块并没有指定一个默认的帮助类。下面让我们来添加一个。修改config.xml
File: app/code/local/Zhlmmc/Helloworld/etc/config.xml


   
   
       
            Zhlmmc_Helloworld_Helper
       

   

   


你现在应该对这类配置相当熟悉了。“”节点就是模块的名字,“”就是帮助类的基类名,命名方式如下
Packagename_Modulename_Helper
帮助类是通过全局对象Mage的静态方法“helper”来装载的。
Mage::helper('helloworld/foo')
根据我们的配置,上面这行代码将会装载以下类
app/code/local/Zhlmmc/Helper/Foo.php
class Zhlmmc_Helloworld_Helper_Foo

我们上面说过Magento默认每个模块有一个帮助类“data”
Mage::helper('helloworld');
Mage::helper('helloworld/data');

上面这两行代码是等价的,都会装载以下类
app/code/local/Zhlmmc/Helper/Data.php
class Zhlmmc_Helloworld_Helper_Data

下面我们来创建我们的帮助类
File: app/code/local/Zhlmmc/Helper/Data.php
class Zhlmmc_Helloworld_Helper_Data extends Mage_Core_Helper_Abstract
{

清空Magento缓存,重新装载页面,你会发现错误不见了,但是我们的标签页还是没有出来。如果你好奇帮助类究竟能干什么,建议你去看看“Mage_Core_Helper_Abstract”类。

添加新的段

好了,帮助类的介绍到此结束。下面我们来看看为什么我们的标签页不显示出来。在Magento中,每一个标签页都包含很多段(section)。举个例子,“Advanced”标签页默认包含“Admin, System, Advanced, Developer”四个段。如果一个标签页不包含任何段,那么这个标签页不会被显示出来。下面我们在system.xml中添加“

”节点
Location: app/code/local/Zhlmmc/Helloworld/etc/system.xml

   
       
           
            99999
       

   
 
   
       
           
            helloconfig
            text
            1000
            1
            1
            1                    
       

   
     

这里有些节点你应该很熟悉,就不多解释了,来讲讲以前没见过的。

什么是

和前面的相似,这个节点是用来唯一标示你的段,“helloworld_options”就是段的ID,可以随意取名,只要不重复就好。

什么是

这个节点有点搞。“”在配置文件的其他部分有用(稍后会讲),放在这里其实没什么作用。但是核心模块在此处的配置文件都包含这个节点,所以我们也把它添加进去。

什么是,< show_in_website />,

这些节点的值是布尔类型的,0或者1。这些标签是用来控制在不同的环境下,当前段是否应该显示。

好了,我们已经配置好段了,清空缓存,再一次刷新页面,你应该看到“HELLO CONFIG”标签页显示出来了。

访问控制

如果你刚才点了我们创建的标签页下面的“Hello World Config Options”,你大概会很失望。什么都没有显示出来,连左边的导航栏都没有了。这是因为“Adminhtml”在权限控制列表(Access Control List, ACL)中找不到我们创建的段的权限信息。【译者注:Adminhtml就是Magento的后台管理系统,属于Magento的一个核心模块】

ACL是一个很复杂的话题,但是我会介绍一些最基本的概念,以便于理解Magento的权限控制。这部分内容和上下文关系不大,如果你不感兴趣,可以直接跳到本节结尾,复制一段XML到你的config.xml就行了。

在Magento中,对于有些资源的访问时有限制的。用户必须先经过认证才能访问相关资源。在这里,资源(Resource)是一个广义的概念,它可能是指一个页面,也可能是一个功能。Magento的系统配置功能(System Config)就是需要认证才能访问的资源。

任何一个资源都是通过一个URI来标识。比如说“web”配置段(属于后台管理General标签页)的URI是
admin/system/config/web
我们“helloworld_options”段的URI是
admin/system/config/helloworld_options
当一个用户访问一个受保护的资源的时候,后台管理系统(Adminhtml)的执行控制器会执行以下步骤

  1. 为用户正在访问的资源生成一个URI
  2. 根据ACL系统检查该用户是否有权限访问指定的资源
  3. 如果用户拥有访问权限,那么进行用户指定的操作。否则,跳转到相应的错误页面(也可能是停止操作或者显示空白页面)。

如果你去“System -> Permissions -> Roles”页面,点击“Add New Role”按钮,你会看到所有系统的资源都以树形结构显示在页面上。

添加ACL权限

刚才说ACL中没有我们配置段的信息,那么我们来创建一个。请注意,如果你是创建一个新的段,那么你需要创建一个新的权限,如果你在已有的段上添加内容,你不需要创建权限。

在config.xml中,添加以下内容
File: app/code/local/Zhlmmc/Helloworld/etc/config.xml  
    
   
   
       
           
               
                   
                       
                           
                               
                                   
                                       
                                            Store Hello World Module Section
                                       

                                   

                               

                           

                       

                   

               

           

       

   

   

让我们来分析一下这段代码。所有的资源定义都包含在如下代码中

   
       
       
   


节点下面,每一个子节点都是URI的一部分,比如

   
       
           

代表URI
admin/system
最后一个节点

    Store Hello World Module Section

这里的内容将会在后台权限管理的时候显示出来,也就是我们定义的权限的名字。</p> <p>清空Magento缓存,刷新页面,你应该能看到我们创建的配置段了,标准的后台管理页面,但是主体内容是空的,只有一个“Save Config”按钮。你可能需要重新登录后台管理才能看到正确的页面。那是因为后台管理有一些额外的缓存。【译者注:我们添加了权限以后,管理员是默认拥有该权限的,所以我们用管理员登录后台管理系统就能访问我们创建的段】</p> <p>请注意,不懂事出于什么原因,Magento把<adminhtml />部分从全局配置中删掉了。所以,我们不能用之前创建的Configviewer来查看这部分内容。我正在研究Magento把<adminhtml />存在哪里了。</p> <h4>添加组</h4> <p>【译者注:按照逻辑,这里应该讲的内容是添加选项。Mageto中,选项是按照组(Group)来划分的,所以我们在添加选项之前得先添加组。】修改system.xml<br><span><span>Location: app/code/local/Zhlmmc/Helloworld/etc/system.xml<br><config><br>    <tabs><br>        <helloconfig translate="label" module="helloworld"><br>            <label>Hello Config</label><br>            <sort_order>99999</sort_order><br>        </helloconfig><br>    </tabs> <br>    <sections><br>        <helloworld_options translate="label" module="helloworld"><br>            <label>Hello World Config Options</label><br>            <tab>helloconfig</tab><br>            <frontend_type>text</frontend_type><br>            <sort_order>1000</sort_order><br>            <show_in_default>1</show_in_default><br>            <show_in_website>1</show_in_website><br>            <show_in_store>1</show_in_store><br>            <groups><br>                <messages translate="label"><br>                    <label>Demo Of Config Fields</label><br>                    <frontend_type>text</frontend_type><br>                    <sort_order>1</sort_order><br>                    <show_in_default>1</show_in_default><br>                    <show_in_website>1</show_in_website><br>                    <show_in_store>1</show_in_store><br>                </messages><br>            </groups><br>        </helloworld_options><br>    </sections>     <br></config></span></span><br>这里也没什么好解释的。刷新一下页面看看你就什么都明白了。</p> <h4>添加配置选项</h4> <p>最后,我们要添加每一个单独的配置选项。配置选项是以<fields />节点的形式添加到<messages />节点下面的。<br><span><span><!– … –><br><messages translate="label"><br>    <label>Demo Of Config Fields</label><br>    <frontend_type>text</frontend_type><br>    <sort_order>1</sort_order><br>    <show_in_default>1</show_in_default><br>    <show_in_website>1</show_in_website><br>    <show_in_store>1</show_in_store><br>    <fields><br>        <hello_message><br>            <label>Message</label><br>            <frontend_type>text</frontend_type><br>            <sort_order>1</sort_order><br>            <show_in_default>1</show_in_default><br>            <show_in_website>1</show_in_website><br>            <show_in_store>1</show_in_store><br>        </hello_message><br>    </fields><br></messages><br><!– … –></span></span><br>这里有一个节点需要说明,“<frontend_type>”,刚才说这个节点没什么用。但是这里有用了,这个节点说明了这个选项的数据类型。你可以把它换成别的类型,比如“time”。这里支持大部分默认的Varien定义的数据类型(lib/Varien/Data/Form/Element)。这个有点像是工厂(Factory)设计模式。让我们把类型改成“select”。你会看到一个下拉框,但是没有选项。我们来添加选项。首先我们要添加一个源模型(Source Model)<br><span><span><hello_message><br>    <label>Message</label><br>    <frontend_type>select</frontend_type><br>    <!– adding a source model –><br>    <source_model>helloworld/words</source_model>                           <br>    <sort_order>1</sort_order><br>    <show_in_default>1</show_in_default><br>    <show_in_website>1</show_in_website><br>    <show_in_store>1</show_in_store>                    <br></hello_message></span></span><br>“<source_model>”定义了源模型的URI。和我们以前创建的模型一样,源模型也是一个模型,为“select”提供了默认的数据。我想我不说你也明白,根据这里的URI定义,我们要创建以下文件<br><span><span>File: app/code/local/Zhlmmc/Helloworld/Model/Words.php<br>class Zhlmmc_Helloworld_Model_Words<br>{<br>    public function toOptionArray()<br>    {<br>        return array(<br>            array('value'=>1, 'label'=>Mage::helper('helloworld')->__('Hello')),<br>            array('value'=>2, 'label'=>Mage::helper('helloworld')->__('Goodbye')),<br>            array('value'=>3, 'label'=>Mage::helper('helloworld')->__('Yes')),<br>            array('value'=>4, 'label'=>Mage::helper('helloworld')->__('No')),<br>        );<br>    }<br>}</span></span><br>源模型提供了一个方法“toOptionsArray”,返回的数据时用来填充我们之前定义的配置选项的。这个方法在运行时会被“initFields”调用。“initFields”在以下类中定义<br><span><span>app/code/core/Mage/Adminhtml/Block/System/Config/Form.php</span></span><br>我们这里调用了帮助类的翻译函数(__)来获取数据。虽然不是很必要,但调用翻译函数总是一个好习惯。说不定哪天你要将模块翻译成日文呢。【译者注:值得注意的是我们这里创建的模型不需要继承任何父类,只需要拥有“toOptionArray”方法就可以了。我觉得这个很不科学,起码要继承一个接口吧】</p> <h4>在已有的配置段或者组中添加数据</h4> <p>除了新建一个标签页,或者配置段,你也可以利用已有的标签页和配置段,向里面添加内容。比如我们添加以下代码到system.xml<br><span><span>File: app/code/local/Zhlmmc/Helloworld/etc/system.xml<br><config><br>    <!– … –><br>    <sections><br>        <!– … –><br>        <general><br>            <groups><br>                <example><br>                    <label>Example of Adding a Group</label><br>                    <frontend_type>text</frontend_type><br>                    <sort_order>1</sort_order><br>                    <show_in_default>1</show_in_default><br>                    <show_in_website>1</show_in_website><br>                    <show_in_store>1</show_in_store>                    <br>                </example><br>            </groups><br>        </general><br>        <!– … –><br>    </section><br></config></span></span><br>刷新页面,你会在“General”标签页下面看到一个新的组,叫做“Example of Adding a Group”。</p> <h4>如何获得配置数据</h4> <p>到目前为止,我们只是讲了如何设置Magento,可以让用户可以配置我们的模块。现在让我们来看看如何获取用户的配置数据。<br><span><span>Mage::getStoreConfig('helloworld_options/messages/hello_message');</span></span><br>上面这行代码就可以获取我们上面配置的那个“select”选项的数据。这个函数的参数是我们要获取的数据的URI,格式如下<br><span><span>section_name/group_name/field_name</span></span><br>你也可以通过以下代码来获取一个组或者段的所有值<br><span><span>Mage::getStoreConfig('helloworld_options/messages');<br>Mage::getStoreConfig('helloworld_options');</span></span><br>最后,如果你想获取针对某个特定店面(store)的数据,你可以传入store ID<br><span><span>Mage::getStoreConfig('helloworld_options',1);</span></span></p> <h4>总结</h4> <p>这一章我们讲了如何在Magento的后台管理中添加个性化的配置。我们也顺便介绍了帮助类的使用和ACL基础。这里最重要的内容是后台配置的层级结构,标签页包含了配置段,配置段包含了组,组包含了配置选项。我们将在以后的章节中介绍系统配置的高级内容,包括自定义格式,数据验证等等。</p> <p> </p> <p> </p> <p>源文:http://www.zhlmmc.com/?p=674</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1304146064302968832"></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">你可能感兴趣的:(magento,深入理解Magento)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1899379260221616128.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12页面效果指令输入think组件代码功能增强说明:注意事项:代码测试测试代码正常跑通,附其他基本代码编写路由src\router\index</div> </li> <li><a href="/article/1899157689708113920.htm" title="深入理解Java中的@Async异步功能" target="_blank">深入理解Java中的@Async异步功能</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在Java开发中,处理异步任务是一个很重要的环节,特别是当你希望提高应用程序的响应速度时。Spring框架提供了一个非常方便的注解——@Async,使得异步编程变得简单而高效。接下来我们就来聊聊@Async的工作原理、使用方法以及一些实际应用场景。什么是@Async?@Async是Spring框架中的一个注解,用于实现异步方法的调用。当一个方法被标记为@Async时,Spring会在后台线程中执行</div> </li> <li><a href="/article/1899153779358494720.htm" title="深入理解Vue3中style的scoped" target="_blank">深入理解Vue3中style的scoped</a> <span class="text-muted">Jinuss</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/CSS/1.htm">CSS</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>概述scoped的作用就是样式模块化(CSSModule),即给组件每一个元素(以及非动态添加的子组件的根元素)加上一个data-v-xxxx的属性,样式选择器也会格式化成选择器[data-v-xxxx],这样就做到了样式隔离,每个组件内定义的样式只对该组件生效,避免了不同组件或页面的样式(选择器)冲突。本文将以vue3为例,深入了解scoped原理。scoped实践vue3组件是如下定义样式:标</div> </li> <li><a href="/article/1899094782915964928.htm" title="深入理解 MySQL 架构" target="_blank">深入理解 MySQL 架构</a> <span class="text-muted">sevevty-seven</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</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%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>MySQL是目前最受欢迎的开源关系型数据库管理系统之一,广泛应用于网站开发、企业系统和其他数据密集型应用程序中。为了高效使用MySQL,理解其架构设计是至关重要的。本文将从架构组成、核心组件、存储引擎、扩展性以及性能优化等多个方面深入探讨MySQL的架构。MySQL架构的三层设计MySQL的架构可以分为三层:连接层(ConnectionLayer)这是MySQL的最外层,负责管理客户端的连接。用户</div> </li> <li><a href="/article/1899040048469307392.htm" title="PostgreSQL的学习心得和知识总结(一百二十四)|深入理解PostgreSQL数据库开源扩展pgreplay的安装说明和使用场景" target="_blank">PostgreSQL的学习心得和知识总结(一百二十四)|深入理解PostgreSQL数据库开源扩展pgreplay的安装说明和使用场景</a> <span class="text-muted">孤傲小二~阿沐</span> <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/postgresql/1.htm">postgresql</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a> <div>目录结构注:提前言明本文借鉴了以下博主、书籍或网站的内容,其列表如下:1、参考书籍:《PostgreSQL数据库内核分析》2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》3、PostgreSQL数据库仓库链接,点击前往4、日本著名PostgreSQL数据库专家铃木启修网站主页,点击前往5、参考书籍:《PostgreSQL中文手册》6、参考书籍:《PostgreSQL指南:内幕探索》,点击</div> </li> <li><a href="/article/1899021394159661056.htm" title="智能遥感新质生产力:ChatGPT、Python和OpenCV强强联合;空天地遥感数据分析的全流程;地面数据、无人机数据、卫星数据、多源数据等处理" target="_blank">智能遥感新质生产力:ChatGPT、Python和OpenCV强强联合;空天地遥感数据分析的全流程;地面数据、无人机数据、卫星数据、多源数据等处理</a> <span class="text-muted">小艳加油</span> <a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/ChatGPT/1.htm">ChatGPT</a><a class="tag" taget="_blank" href="/search/%E9%81%A5%E6%84%9F/1.htm">遥感</a><a class="tag" taget="_blank" href="/search/%E9%81%A5%E6%84%9F/1.htm">遥感</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E8%B4%A8%E7%94%9F%E4%BA%A7%E5%8A%9B/1.htm">新质生产力</a><a class="tag" taget="_blank" href="/search/ChatGPT/1.htm">ChatGPT</a><a class="tag" taget="_blank" href="/search/OpenCV/1.htm">OpenCV</a><a class="tag" taget="_blank" href="/search/%E9%81%A5%E6%84%9F%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/1.htm">遥感数据处理</a> <div>通过系统化的模块设计和丰富的实战案例,深入理解和掌握遥感数据的处理与计算。不仅涵盖了从零基础入门Python编程、OpenCV视觉处理的基础知识,还将借助ChatGPT智能支持,引导您掌握遥感影像识别和分析的进阶技术。更为重要的是,通过15个经过精心设计的真实案例,深度参与地质监测、城市规划、农业分析、生态评估等不同场景下的遥感应用实践。层层递进、结构严谨,帮助您系统性掌握从数据预处理、图像增强、</div> </li> <li><a href="/article/1899011307399606272.htm" title="计算机学习的五大避坑指南新手必藏" target="_blank">计算机学习的五大避坑指南新手必藏</a> <span class="text-muted">编程诗人华仔</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">软件工程</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>避坑一:盲目跟风学习编程语言技术性深化:在选择编程语言时,要考虑语言的特点、适用场景以及未来发展趋势。例如,Java适合企业级应用开发,Python在数据分析和人工智能领域有广泛应用,而JavaScript则是前端开发的基础。明确自己的职业发展方向,选择与之匹配的语言进行深入学习。避坑二:忽视基础知识的掌握技术性深化:深入理解算法如排序、搜索等,熟悉常见的数据结构如链表、栈、队列、树等,并掌握设计</div> </li> <li><a href="/article/1898958360640811008.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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</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><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>目录一、拦截器基础概念二、实战案例1.用户认证与授权2.请求日志与性能监控3.国际化与本地化三、注册拦截器四、总结在JavaWeb开发中,拦截器是一种强大的工具,它允许开发者在请求处理的各个环节进行拦截和处理。与过滤器类似,拦截器也能够对请求和响应进行操作,但它工作在SpringMVC框架内部,能够访问Spring管理的Bean,与Spring的依赖注入无缝集成。本文将通过实战案例,帮助您深入理解</div> </li> <li><a href="/article/1898945758586007552.htm" title="深入探索C++标准库与模板元编程的奥秘与实用技巧" target="_blank">深入探索C++标准库与模板元编程的奥秘与实用技巧</a> <span class="text-muted">爱编程的Loren</span> <a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8%E6%96%87%E7%AB%A0/1.htm">活动文章</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8%E6%96%87%E7%AB%A0/1.htm">活动文章</a> <div>  一、引言  侯捷老师作为C++领域的权威专家,其课程不仅深入浅出地讲解了C++的基础知识,更引领我们探索了C++的深层奥秘。本文将围绕侯捷老师的C++系列课程,分享对C++标准库及模板元编程的深入理解与学习心得。  二、C++标准库的强大之处  在侯捷老师的课程中,我们深入了解了C++标准库的强大与实用。标准库中的算法、容器、迭代器等,为我们的编程工作提供了极大的便利。特别是STL(Stand</div> </li> <li><a href="/article/1898906291259109376.htm" title="RoPE——Transformer 的旋转位置编码" target="_blank">RoPE——Transformer 的旋转位置编码</a> <span class="text-muted">机智的小神仙儿</span> <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/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>在自然语言处理领域,Transformer是现代深度学习模型的基础,而位置编码(PositionEmbedding)则是Transformer处理序列数据的关键模块之一。近年来,一种新型的位置编码方法RoPE(RotaryPositionEmbedding)得到了广泛关注。本文将全面解读RoPE的背景、原理、实现、优势及其应用场景,帮助读者深入理解这一方法。1.什么是RoPE?RoPE(Rotar</div> </li> <li><a href="/article/1898895441169281024.htm" title="玩转python: 掌握Python数据结构之字典" target="_blank">玩转python: 掌握Python数据结构之字典</a> <span class="text-muted">千益</span> <a class="tag" taget="_blank" href="/search/%E6%B5%85%E6%98%BE%E6%98%93%E6%87%82%E7%8E%A9%E8%BD%ACpython/1.htm">浅显易懂玩转python</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>字典(Dictionary)是Python中一种非常强大的数据结构,它以键值对(Key-ValuePair)的形式存储数据。字典的特点是快速查找、灵活存储和高效操作。想象一下字典就像一本电话簿:通过名字(键)可以快速找到对应的电话号码(值)。本文将带你深入理解字典的概念,并通过丰富的案例展示其实际应用。字典的常见方法以下是字典的20个常见方法及其功能的简要说明:方法名功能描述clear()移除字典</div> </li> <li><a href="/article/1898880436101246976.htm" title="深入理解 HTTP 的 GET、POST 方法与 Request 和 Response" target="_blank">深入理解 HTTP 的 GET、POST 方法与 Request 和 Response</a> <span class="text-muted">码上就位</span> <a class="tag" taget="_blank" href="/search/http/1.htm">http</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/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>HTTP协议是构建Web应用的基石,GET和POST是其中最常用的请求方法。无论是前端开发、后端开发,还是接口测试,对它们的深入理解都显得尤为重要。在本文中,我们将介绍GET和POST方法,以及Request和Response的工作机制。一、GET方法GET方法用于从服务器获取数据,是一种“只读”操作,通常用于查询操作。特点:1.参数在URL中传递:GET请求通过URL参数将数据发送到服务器。例如</div> </li> <li><a href="/article/1898842233143095296.htm" title="异步 vs 同步:深入理解高并发系统的核心设计抉择" target="_blank">异步 vs 同步:深入理解高并发系统的核心设计抉择</a> <span class="text-muted">以恒1</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Java异步vs同步:深入理解高并发系统的核心设计抉择为什么你的接口响应越来越慢?在一次电商大促中,某平台的订单接口因同步阻塞导致超时率飙升,最终引发雪崩。而另一平台通过异步化改造,轻松扛住每秒10万订单。同步与异步的抉择,直接决定了系统的生死线。本文将从原理到实践,揭示异步编程的底层逻辑、常见陷阱与终极解决方案。一次餐厅点餐引发的技术思考某个周末,我在一家网红餐厅目睹了两种截然不同的服务模式:同</div> </li> <li><a href="/article/1898795207399370752.htm" title="【Flutter入门】3.深入理解Flutter的核心概念:架构、渲染与生命周期" target="_blank">【Flutter入门】3.深入理解Flutter的核心概念:架构、渲染与生命周期</a> <span class="text-muted">西辰Knight</span> <a class="tag" taget="_blank" href="/search/flutter%E5%85%A5%E9%97%A8/1.htm">flutter入门</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>想要成为一名出色的Flutter开发者,就像建造一座精美的高楼大厦,需要深入理解其架构基础、渲染工艺和生命周期管理。Flutter架构原理:精心设计的层级大厦整体架构概览:Flutter的三层宝塔想象Flutter的架构就像一座精美设计的三层宝塔,每一层都有其独特的职责和魅力。通过这种分层架构设计,Flutter成功实现了高性能的跨平台开发能力。让我们来看看这座宝塔的独特之处:分层设计:就像建筑的</div> </li> <li><a href="/article/1898764550270939136.htm" title="深入理解CPU缓存:性能优化的关键" target="_blank">深入理解CPU缓存:性能优化的关键</a> <span class="text-muted">深度Linux</span> <a class="tag" taget="_blank" href="/search/Linux%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/1.htm">Linux内存管理</a><a class="tag" taget="_blank" href="/search/C%2FC%2B%2B%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91/1.htm">C/C++全栈开发</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a> <div>CPU作为计算机的核心部件,其缓存结构犹如一座高效的数据桥梁,在提升计算机性能方面发挥着关键作用。而原子操作,则以其独特的不可分割性,为程序的正确性和稳定性提供了坚实的保障。在接下来的时间里,我们将逐步揭开CPU缓存结构的神秘面纱,深入了解其工作原理和设计理念。同时,我们也将一同探寻原子操作的奥秘,明白它在多线程编程等场景中的重要意义。让我们共同开启这场充满智慧与挑战的科技之旅。一、初识CPU缓存</div> </li> <li><a href="/article/1898764544856092672.htm" title="一文搞懂Linux底层原理,Task的内核态表示" target="_blank">一文搞懂Linux底层原理,Task的内核态表示</a> <span class="text-muted">深度Linux</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a><a class="tag" taget="_blank" href="/search/TASK/1.htm">TASK</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E6%A0%B8%E6%80%81/1.htm">内核态</a> <div>在Linux这个庞大而精妙的操作系统世界里,隐藏着无数复杂而神奇的底层原理。今天,我们将一同深入探索其中至关重要的一环——Task的内核态表示。这就像是打开了一扇通往系统核心深处的大门,在那里,我们会看到Linux是如何有条不紊地管理进程和线程,如同一位技艺高超的指挥家掌控着一场宏大的交响乐演奏。无论是对Linux系统充满好奇的新手,还是希望深入理解其内部机制的专业人士,都将在这次探索中领略到Li</div> </li> <li><a href="/article/1898751808877162496.htm" title="C语言基础系列【20】内存管理" target="_blank">C语言基础系列【20】内存管理</a> <span class="text-muted">程序喵大人</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80%E7%B3%BB%E5%88%97/1.htm">C语言基础系列</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/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><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>博主介绍:程序喵大人35-资深C/C++/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C++20高级编程》《C++23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末记得订阅专栏,以防走丢C++基础系列专栏C语言基础系列C++大佬养成攻略在C++编程中,内存管理是一个至关重要的概念。要深入理解内存管理,我们肯定要</div> </li> <li><a href="/article/1898672205059911680.htm" title="深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析" target="_blank">深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析</a> <span class="text-muted">伤心辞</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>TCP(TransmissionControlProtocol)是互联网中最重要的传输层协议之一,其设计目标是提供可靠的、面向连接的、全双工的数据传输服务。本文将从核心机制、工作原理到经典面试题,全面解析TCP协议的关键特性。一、TCP核心特性1.有连接三次握手建立连接,四次挥手释放连接,确保通信双方的数据传输路径畅通。面向连接vs无连接(如UDP):TCP在数据传输前需要建立虚拟链路,而UDP直</div> </li> <li><a href="/article/1898659084916289536.htm" title="Learn-Java8: 探索Java 8的新特性和实战指南" target="_blank">Learn-Java8: 探索Java 8的新特性和实战指南</a> <span class="text-muted">袁耿浩</span> <div>Learn-Java8:探索Java8的新特性和实战指南learn-java8项目地址:https://gitcode.com/gh_mirrors/lea/learn-java8一、项目介绍Learn-Java8是一个专注于展示和教授Java8新特性以及如何在实际开发中有效利用这些特性的开源项目。该项目包含了丰富的示例代码,旨在帮助开发者快速上手并深入理解Java8中的Lambda表达式、Str</div> </li> <li><a href="/article/1898621764347424768.htm" title="深入理解Vue中的Component:构建灵活且可复用的前端模块" target="_blank">深入理解Vue中的Component:构建灵活且可复用的前端模块</a> <span class="text-muted">Earth explosion</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>在前端开发的世界里,随着应用程序的规模和复杂度不断增加,如何有效地组织和管理代码成为了一个关键问题。Vue.js作为一款流行的前端框架,通过其强大的组件系统为开发者提供了一种优雅且高效的解决方案。本文将深入探讨Vue中的Component(组件),包括其基本概念、创建方式、通信机制以及实际应用场景,帮助开发者更好地理解和运用这一核心特性。一、什么是Vue组件在Vue.js中,组件是可复用的Vue实</div> </li> <li><a href="/article/1898621133939339264.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,基础加载状态,Table8基础加载状态" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,基础加载状态,Table8基础加载状态</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之功能优化,基础加载状态页面效果整理后主要代码调用TableView8.vue测试代码正常跑通,附其他基本代码编写路由src\router\index.js编写展示入口src\Ap</div> </li> <li><a href="/article/1898617981525618688.htm" title="QT 中的元对象系统(三):QObject深入理解" target="_blank">QT 中的元对象系统(三):QObject深入理解</a> <span class="text-muted">流星雨爱编程</span> <a class="tag" taget="_blank" href="/search/%23Qt/1.htm">#Qt</a><a class="tag" taget="_blank" href="/search/%23C%2B%2B%E8%BF%9B%E9%98%B6/1.htm">#C++进阶</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</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/c%2B%2B/1.htm">c++</a> <div>目录1.简介2.特性2.1.对象树与内存管理2.2.信号与槽机制2.3.事件处理2.4.属性系统2.4.1.Q_PROPERTY配置的属性2.4.2.动态属性2.4.3.实现原理2.5.国际化支持2.6.定时器支持3.类设计(q和d指针)4.总结1.简介QObject这个class是QT对象模型的核心,它是所有Qt对象的基类。它为对象间通信(信号与槽机制)、事件处理、定时器支持以及对象树管理等功能</div> </li> <li><a href="/article/1898581923282874368.htm" title="C语言初阶——操作符详解" target="_blank">C语言初阶——操作符详解</a> <span class="text-muted">暗月の流星劫</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/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><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>在前面的一系列文章里,我们一起学习了C语言的基础语法,函数和数组的相关知识,而接下来,让我们一起学习操作符。操作符在C语言中同样有着举足轻重的地位,它的使用可以说是无处不在,能够深入理解并且熟练运用操作符往往能够使我们写出的代码更加准确,精致,巧妙和优雅。接下来,就让我们一起走入操作符的世界吧!!!1.操作符的分类物以类聚,人以群分。不同的人,不同的风格,干不同的事情。操作符都有哪些种类,各自又有</div> </li> <li><a href="/article/1898580913814564864.htm" title="UDP学习笔记(一)为什么UDP需要先将数据转换为字节数组" target="_blank">UDP学习笔记(一)为什么UDP需要先将数据转换为字节数组</a> <span class="text-muted">居然是阿宋</span> <a class="tag" taget="_blank" href="/search/udp/1.htm">udp</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a> <div>UDP发送数据时需要先将数据转换为字节数组再发送,主要是因为计算机网络传输的最基本单位是“字节”(Byte)。让我们从以下几个方面来深入理解这个设计选择:1.计算机网络只能传输“字节”在网络通信中,无论是TCP还是UDP,最终传输的都是二进制数据。计算机不能直接传输字符串、整数或对象,而是需要转换为字节数组。示例:发送字符串"Hello"valdata="Hello".toByteArray()/</div> </li> <li><a href="/article/1898543445333569536.htm" title="Java反射" target="_blank">Java反射</a> <span class="text-muted">lyrhhhhhhhh</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在Java的世界中,反射(Reflection)是一个强大而神秘的工具。它允许程序在运行时动态地获取类的信息并操作类的属性和方法。本文将带你深入理解Java反射,揭开反射的神秘面纱。一、什么是反射?Java反射是指在运行时(runtime)动态地获取类的信息、调用类的方法、操作类的属性等功能。通过Java反射,我们可以在运行时检查类的方法和属性,实例化对象,调用方法,获取和设置属性的值,以及操作数</div> </li> <li><a href="/article/1898456052882534400.htm" title="Deepseek r1回答:人工智能的本质是什么? 给人类社会带来的意义是什么? 相比于之前的互联网革命,这一轮的人工智能革命的特点和异同点有哪些?" target="_blank">Deepseek r1回答:人工智能的本质是什么? 给人类社会带来的意义是什么? 相比于之前的互联网革命,这一轮的人工智能革命的特点和异同点有哪些?</a> <span class="text-muted">强化学习曾小健</span> <a class="tag" taget="_blank" href="/search/Deepseek%E5%8E%9F%E7%90%86%E4%B8%8E%E4%BD%BF%E7%94%A8/1.htm">Deepseek原理与使用</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>嗯,用户问的是人工智能的本质、对社会的意义,以及和互联网革命的比较。首先得拆解这三个问题,逐个分析。用户可能对AI有一定了解,但想深入理解其核心和影响。可能需要从技术、社会、历史角度切入。先想AI的本质。本质是什么?是模拟人类智能,还是数据处理?可能需要提到机器学习、深度学习,尤其是神经网络。但本质可能更深层,比如自主决策、模式识别。还要区分弱AI和强AI,现在都是弱AI,专注于特定任务。然后是意</div> </li> <li><a href="/article/1898453745692372992.htm" title="基于STC89C52的八位数码管显示单个数字" target="_blank">基于STC89C52的八位数码管显示单个数字</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/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/51%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">51单片机</a> <div>一、引言在电子系统设计领域,数码管作为一种直观且常用的数字显示设备,被广泛应用于各种仪器仪表、电子时钟以及工业控制界面等场景。通过单片机对数码管进行精准控制,能够清晰、明了地呈现各类数字信息。本文将聚焦于如何利用STC89C52单片机实现八位数码管显示单个数字的功能,为单片机初学者以及电子电路爱好者提供一个详细且易于实践的案例,助力其深入理解单片机与数码管之间的交互机制以及相关编程技巧。二、硬件设</div> </li> <li><a href="/article/1898395520825618432.htm" title="linux下进程间通信方式(匿名管道)" target="_blank">linux下进程间通信方式(匿名管道)</a> <span class="text-muted">誓约酱</span> <a class="tag" taget="_blank" href="/search/Linux%E5%BA%94%E7%94%A8/1.htm">Linux应用</a><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><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>文章目录深入理解进程间通信:匿名管道原理与实战解析一、进程间通信的本质与实现原理关键设计思想:二、匿名管道深度解析2.1️系统调用接口2.2代码案例详解2.3关键代码解析三、管道运行特性深度分析3.1实验现象3.2⚙️关键特性验证四、开发实践指南️4.1Makefile解析五、管道的核心特征六、管道运行关键场景️深入理解进程间通信:匿名管道原理与实战解析一、进程间通信的本质与实现原理核心目标:打破</div> </li> <li><a href="/article/1898389196951842816.htm" title="深入探索 C# 字符串处理:从基础方法到高级技巧" target="_blank">深入探索 C# 字符串处理:从基础方法到高级技巧</a> <span class="text-muted">行云流者</span> <a class="tag" taget="_blank" href="/search/c%23%E5%B0%8F%E7%99%BD%E5%BF%85%E7%9C%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/visual/1.htm">visual</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a> <div>在C#编程中,字符串处理是日常开发中不可或缺的一部分。无论是处理用户输入、文件读取,还是与外部系统交互,都离不开对字符串的各种操作。本文将全面介绍C#中丰富的字符串处理方法,结合代码示例,帮助你深入理解并掌握这些实用技巧。基础方法1.字符串长度获取-Length属性Length属性用于获取字符串中字符的个数,且不包括末尾的空字符。这是一个非常基础且常用的属性,在很多场景下都能发挥重要作用。stri</div> </li> <li><a href="/article/1898375165583093760.htm" title="深入理解 Linux systemd 单元类型及配置详解" target="_blank">深入理解 Linux systemd 单元类型及配置详解</a> <span class="text-muted">weixin_42587823</span> <a class="tag" taget="_blank" href="/search/linux%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">linux云计算</a><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>深入理解Linuxsystemd单元类型及配置详解在Linux系统中,systemd是一种强大的初始化系统和服务管理工具,它通过**单元(Unit)**来管理服务、文件系统、设备等。systemd支持多种单元类型,如服务单元(.service)、目标单元(.target)、挂载单元(.mount)、设备单元(.device)、计时单元(.timer)。本文将全面介绍这些单元的用途、常用配置项及实际</div> </li> <li><a href="/article/88.htm" title="ztree设置禁用节点" target="_blank">ztree设置禁用节点</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/ztree/1.htm">ztree</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/setDisabledNode/1.htm">setDisabledNode</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。 $(function(){ showTree(); setDisabledNode(); }); </div> </li> <li><a href="/article/215.htm" title="JVM patch by Taobao" target="_blank">JVM patch by Taobao</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a> <div>在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。   7050685:jsdbproc64.sh has a typo in the package name 7058036:FieldsAllocationStyle=2 does not work in 32-bit VM 7060619:C1 should respect inline and</div> </li> <li><a href="/article/342.htm" title="将session存储到数据库中" target="_blank">将session存储到数据库中</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>CREATE TABLE sessions ( id CHAR(32) NOT NULL, data TEXT, last_accessed TIMESTAMP NOT NULL, PRIMARY KEY (id) );   <?php /** * Created by PhpStorm. * User: michaeldu * Date</div> </li> <li><a href="/article/469.htm" title="Vector" target="_blank">Vector</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/vector/1.htm">vector</a> <div>public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) { for (int i = 0; i < cart.size(); i++) { if (cart.get(i).getId().equals(id)) { cart.remove(i); </div> </li> <li><a href="/article/596.htm" title="各连接池配置参数比较" target="_blank">各连接池配置参数比较</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">连接池</a> <div>        排版真心费劲,大家凑合看下吧,见谅~     Druid DBCP C3P0 Proxool 数据库用户名称 Username Username User   数据库密码 Password Password Password   驱动名</div> </li> <li><a href="/article/723.htm" title="[简单]mybatis insert语句添加动态字段" target="_blank">[简单]mybatis insert语句添加动态字段</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>      mysql数据库,id自增,配置如下:       <insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id" parameterType=&</div> </li> <li><a href="/article/850.htm" title="struts2拦截器配置" target="_blank">struts2拦截器配置</a> <span class="text-muted">云端月影</span> <a class="tag" taget="_blank" href="/search/struts2%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">struts2拦截器</a> <div>struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts>     <package name="struts2" extends="struts-default">         &</div> </li> <li><a href="/article/977.htm" title="IE中页面不居中,火狐谷歌等正常" target="_blank">IE中页面不居中,火狐谷歌等正常</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/IE%E4%B8%AD%E9%A1%B5%E9%9D%A2%E4%B8%8D%E5%B1%85%E4%B8%AD/1.htm">IE中页面不居中</a> <div>问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3</div> </li> <li><a href="/article/1104.htm" title="String,int,Integer,char 几个类型常见转换" target="_blank">String,int,Integer,char 几个类型常见转换</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.valueOf(str); 如何将整数 int 转换成字串 String ? 1.</div> </li> <li><a href="/article/1231.htm" title="PL/SQL的游标类型" target="_blank">PL/SQL的游标类型</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%98%BE%E7%A4%BA%E6%B8%B8%E6%A0%87%28%E9%9D%99%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">显示游标(静态游标)</a><a class="tag" taget="_blank" href="/search/%E9%9A%90%E5%BC%8F%E6%B8%B8%E6%A0%87/1.htm">隐式游标</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%A0%87%E7%9A%84%E6%9B%B4%E6%96%B0%E5%92%8C%E5%88%A0%E9%99%A4/1.htm">游标的更新和删除</a><a class="tag" taget="_blank" href="/search/%25rowtype/1.htm">%rowtype</a><a class="tag" taget="_blank" href="/search/ref%E6%B8%B8%E6%A0%87%28%E5%8A%A8%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">ref游标(动态游标)</a> <div>游标是oracle中的一个结果集,用于存放查询的结果;   PL/SQL中游标的声明; 1,声明游标 2,打开游标(默认是关闭的); 3,提取数据 4,关闭游标     注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标   隐式游标:主要是对DML数据的操作隐</div> </li> <li><a href="/article/1358.htm" title="JUnit4中@AfterClass @BeforeClass @after @before的区别对比" target="_blank">JUnit4中@AfterClass @BeforeClass @after @before的区别对比</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit4/1.htm">JUnit4</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>一.基础知识 JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源  对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次</div> </li> <li><a href="/article/1485.htm" title="精通Oracle10编程SQL(12)开发包" target="_blank">精通Oracle10编程SQL(12)开发包</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>/* *开发包 *包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数) */ --包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成 --建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等 --在包规</div> </li> <li><a href="/article/1612.htm" title="【EhCache二】ehcache.xml配置详解" target="_blank">【EhCache二】ehcache.xml配置详解</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/ehcache.xml/1.htm">ehcache.xml</a> <div>在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中! ehcache.xml : http://ehcache.org/ehcache.xml ehcache.xsd : http://ehcache.org/ehcache.xsd ehcache配置文件的根元素是ehcahe   ehcac</div> </li> <li><a href="/article/1739.htm" title="java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL" target="_blank">java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL</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/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>  随后启动</div> </li> <li><a href="/article/1866.htm" title="angular.element" target="_blank">angular.element</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a><a class="tag" taget="_blank" href="/search/angular.element/1.htm">angular.element</a> <div>angular.element 描述:     包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦)     如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e</div> </li> <li><a href="/article/1993.htm" title="java-给定两个已排序序列,找出共同的元素。" target="_blank">java-给定两个已排序序列,找出共同的元素。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CommonItemInTwoSortedArray { /** * 题目:给定两个已排序序列,找出共同的元素。 * 1.定义两个指针分别指向序列的开始。 * 如果指向的两个元素</div> </li> <li><a href="/article/2120.htm" title="sftp 异常,有遇到的吗?求解" target="_blank">sftp 异常,有遇到的吗?求解</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jcraft/1.htm">jcraft</a><a class="tag" taget="_blank" href="/search/auth/1.htm">auth</a><a class="tag" taget="_blank" href="/search/jsch/1.htm">jsch</a><a class="tag" taget="_blank" href="/search/jschexception/1.htm">jschexception</a> <div>com.jcraft.jsch.JSchException: Auth cancel at com.jcraft.jsch.Session.connect(Session.java:460) at com.jcraft.jsch.Session.connect(Session.java:154) at cn.vivame.util.ftp.SftpServerAccess.connec</div> </li> <li><a href="/article/2247.htm" title="[生物智能与人工智能]神经元中的电化学结构代表什么?" target="_blank">[生物智能与人工智能]神经元中的电化学结构代表什么?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>     我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....      我们可以尝试一下...在某些神经</div> </li> <li><a href="/article/2374.htm" title="通过LAC和CID获取经纬度信息" target="_blank">通过LAC和CID获取经纬度信息</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/lac/1.htm">lac</a><a class="tag" taget="_blank" href="/search/cid/1.htm">cid</a> <div>方法1: 用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度 方法2: 发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&</div> </li> <li><a href="/article/2501.htm" title="JAVA的困难分析" target="_blank">JAVA的困难分析</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。   -----------------------------------------------------------------------------------------</div> </li> <li><a href="/article/2628.htm" title="小学5年级英语单词背诵第二课" target="_blank">小学5年级英语单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>money 钱 paper 纸 speak 讲,说 tell 告诉   remember 记得,想起 knock 敲,击,打 question 问题 number 数字,号码   learn 学会,学习 street 街道 carry 搬运,携带 send 发送,邮寄,发射   must 必须 light 灯,光线,轻的 front </div> </li> <li><a href="/article/2755.htm" title="linux下面没有tree命令" target="_blank">linux下面没有tree命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>centos p安装 yum -y install tree   mac os安装 brew install tree   首先来看tree的用法 tree 中文解释:tree 功能说明:以树状图列出目录的内容。 语  法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式</div> </li> <li><a href="/article/2882.htm" title="Map迭代方式,Map迭代,Map循环" target="_blank">Map迭代方式,Map迭代,Map循环</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Map%E5%BE%AA%E7%8E%AF/1.htm">Map循环</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3/1.htm">Map迭代</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3%E6%96%B9%E5%BC%8F/1.htm">Map迭代方式</a> <div>Map迭代方式,Map迭代,Map循环   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年</div> </li> <li><a href="/article/3009.htm" title="Spring Cache注解+Redis" target="_blank">Spring Cache注解+Redis</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>Spring3.1 Cache注解  依赖jar包: <!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </div> </li> <li><a href="/article/3136.htm" title="Guava中针对集合的 filter和过滤功能" target="_blank">Guava中针对集合的 filter和过滤功能</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/filter/1.htm">filter</a> <div>在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:    @Test public void whenFilterWithIterables_thenFiltered() { List<String> names = Lists.newArrayList("John"</div> </li> <li><a href="/article/3263.htm" title="学习编程那点事" target="_blank">学习编程那点事</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧! 接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去</div> </li> <li><a href="/article/3390.htm" title="架构师之流处理---------bytebuffer的mark,limit和flip" target="_blank">架构师之流处理---------bytebuffer的mark,limit和flip</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/ByteBuffer/1.htm">ByteBuffer</a> <div>1.前言。   如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。 2.例子. 例子代码: String str = "helloWorld"; ByteBuffer buff = ByteBuffer.wrap(str.getBytes()); Sy</div> </li> <li><a href="/article/3517.htm" title="org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1" target="_blank">org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%24/1.htm">$</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E4%B9%89/1.htm">转义</a><a class="tag" taget="_blank" href="/search/el%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">el表达式</a> <div>最近在做Highcharts的过程中,在写js时,出现了以下异常:   严重: Servlet.service() for servlet jsp threw exception org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, </div> </li> <li><a href="/article/3644.htm" title="用Java实现发送邮件到163" target="_blank">用Java实现发送邮件到163</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/java%E5%AE%9E%E7%8E%B0/1.htm">java实现</a> <div>/* 在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。 本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。 此篇仅介绍用</div> </li> <li><a href="/article/3771.htm" title="探索实体类存在的真正意义" target="_blank">探索实体类存在的真正意义</a> <span class="text-muted">java小叶檀</span> <a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a> <div>一. 实体类简述    实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的 POJO(Plain Old Java Objects)简单的Java对象   它的一般格式就是 public class A{ private String id; public Str</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>