SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选

应用程序的筛选、排序和分组必不可少。为简化开发的工作量,SAPUI5 做了几个通用控件,包括 OpenUI5 的 sap.m.ViewSettingsDialog 和 SAPUI5 的 Smart Filter Toolbar (只在 SAPUI5 中, OpenUI5 中没有)。基本上,sap.m.ViewSettingsDialog 能够满足常规需求。本篇就介绍 ViewSettingsDialog 如何帮助在 UI 中实现数据的筛选、排序和分组。

应用的界面如下:

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第1张图片

当点击这个按钮,弹出对话框。第一个界面是排序,可以按照 Table 的所有字段,进行升序或降序排序。

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第2张图片

点击切换到筛选,我们设置为允许按照【城市】进行筛选:

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第3张图片

点击城市,可以看到涉及的所有城市,允许勾选:

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第4张图片

切换到分组,设置为按【国家】进行分组:

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第5张图片

应用代码的结构:

SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选_第6张图片

index.html

创建一个 sap.m.App 的实例, App 包含一个 xmlView 的实例:



    
        
        

        

        

    
    
        

Table.view.xml

这是一个 View 文件,用于展示界面。View 中包含一个 Table,有【供应商ID】,【供应商名称】,【地址】,【城市】和【国家】五列。绑定到 Suppliers:


            
    
        
            
                    
                        
                        <ToolbarSpacer />                       
                        <Button press="onTableSettings" 
                                icon="sap-icon://drop-down-list" />
                    </Toolbar>
                </headerToolbar>
                
                <columns>
                    <Column id="SupplierID">
                        <Text text="供应商ID" />
                    </Column>
                    <Column id="CompanyName">
                        <Text text="供应商名称" />
                    </Column>
                    <Column id="Address">
                        <Text text="地址" />
                    </Column>
                    <Column id="City">
                        <Text text="城市" />
                    </Column>
                    <Column id="Country">
                        <Text text="国家" />
                    </Column>
                </columns>
                
                <items>
                    <ColumnListItem >
                        <cells>
                            <ObjectIdentifier title="{SupplierID}" />
                            <Text text="{CompanyName}" />
                            <Text text="{Address}" />
                            <Text text="{City}" />
                            <Text text="{Country}" />
                        </cells>
                    </ColumnListItem>
                </items>
                
            </Table>
        </content>
    </Page> 
</core:View>

</code></pre> 
 <h1>SettingsDialog.fragment.xml</h1> 
 <p>这是一个 OpenUI5 的 Fragement 文件。新建的时候,新建一个文件,然后输入下面的内容。</p> 
 <pre><code><core:FragmentDefinition xmlns:core="sap.ui.core" xmlns="sap.m">
    <ViewSettingsDialog confirm="onConfirm">
    
        <sortItems>
            <ViewSettingsItem selected="true" key="CompanyName" text="供应商名称" />
            <ViewSettingsItem key="City" text="城市" />           
        </sortItems>
        
        <groupItems>
            <ViewSettingsItem key="Country" text="国家"/>     
        </groupItems>   
        
        <filterItems>
            <ViewSettingsFilterItem  text="城市" key="City">
                <items>             
                    <ViewSettingsItem key="City" text="Tokyo"/>
                    <ViewSettingsItem key="City" text="London"/>
                    <ViewSettingsItem key="City" text="Manchester"/>
                </items>
            </ViewSettingsFilterItem>
        </filterItems>
            
    </ViewSettingsDialog>
</core:FragmentDefinition>
</code></pre> 
 <p>主要是申明一个 <code>sap.m.ViewSettingsDialog</code>, 其中包括 <code>sortItems</code> (排序项),<code>groupItems</code> (分组项) 和 <code>filterItems</code> (筛选项)。对这些些项,我们先用用硬编码的方式,后面再来通用化。比如,现在筛选时,目前界面只出现 Tykyo, London 和 Manchester 三个城市,后面根据 <code>Table</code> 中的数据中涉及的城市,全部出现在筛选项中。</p> 
 <h1>Table.controller.js</h1> 
 <p>主要的控制逻辑都在控制器代码中,先给出完整代码:</p> 
 <pre><code>sap.ui.define(["sap/ui/core/mvc/Controller",
    "sap/ui/model/odata/v2/ODataModel",
    "sap/ui/model/json/JSONModel",
    "sap/ui/model/Sorter",
    "sap/ui/model/Filter"],

    function (Controller, ODataModel, JSONModel, Sorter, Filter) {
        "use strict";

        return Controller.extend("webapp.controller.Table", {

            // -------------------------------
            // Initialization event
            // -------------------------------
            onInit: function () {
                // Application model
                var sServiceUrl = "https://cors-anywhere.herokuapp.com/"
                    + "http://services.odata.org/V3/Northwind/Northwind.svc/";
                var oModel = new ODataModel(sServiceUrl);
                oModel.setUseBatch(false);

                this.getView().setModel(oModel);
            },

            // ---------------------------------------------
            // 设置 Table 的 排序,分组和筛选
            // ---------------------------------------------
            onTableSettings: function (oEvent) {
                var oDialog = this.getView().byId("SettingsDialog");
                if (!oDialog) {
                    oDialog = sap.ui.xmlfragment("webapp.view.SettingsDialog", this);
                }

                oDialog.open();
            },

            onConfirm: function (oEvent) {
                var oBinding = this.getView().byId("idTable").getBinding("items");
                var mParams = oEvent.getParameters();

                // Apply grouping
                var aSorters = [];
                if (mParams.groupItem) {
                    var sGroupKey = mParams.groupItem.getKey();
                    var bDescending = mParams.groupDescending;

                    aSorters.push(new Sorter(sGroupKey, bDescending, true));
                }

                // Apply sorter
                if (mParams.sortItem) {
                    var sSortKey = mParams.sortItem.getKey();
                    var bDescending = mParams.sortDescending;
                    aSorters.push(new Sorter(sSortKey, bDescending));
                }
                oBinding.sort(aSorters);

                // Apply filters
                var aFilters = [];
                if (mParams.filterItems) {
                    var count = mParams.filterItems.length;
                    for (var i = 0; i < count; i++) {
                        var oFilterItem = mParams.filterItems[i];
                        var oFilter = new Filter(oFilterItem.getKey(),
                            sap.ui.model.FilterOperator.EQ, oFilterItem.getText());

                        aFilters.push(oFilter);
                    }
                }
                oBinding.filter(aFilters);
            } // end of onConfirm
        });
    });
</code></pre> 
 <p>代码说明:</p> 
 <ul> 
  <li><p><code>onInit</code> 事件处理函数,实例化 <code>oDataModel</code> 并绑定到服务器端数据,设置当前的 View 所用的 Model 为这个 <code>oDataModel</code>。</p></li> 
  <li><p>分组:</p></li> 
 </ul> 
 <pre><code>var aSorters = [];
if (mParams.groupItem) {
    var sGroupKey = mParams.groupItem.getKey();
    var bDescending = mParams.groupDescending;

    aSorters.push(new Sorter(sGroupKey, bDescending, true));
}

var oBinding = this.getView().byId("idTable").getBinding("items");
oBinding.sort(aSorters);
</code></pre> 
 <ul> 
  <li>排序:</li> 
 </ul> 
 <pre><code>if (mParams.sortItem) {
    var sSortKey = mParams.sortItem.getKey();
    var bDescending = mParams.sortDescending;
    aSorters.push(new Sorter(sSortKey, bDescending));
}

var oBinding = this.getView().byId("idTable").getBinding("items");
oBinding.sort(aSorters);
</code></pre> 
 <ul> 
  <li>筛选:</li> 
 </ul> 
 <pre><code>var aFilters = [];
if (mParams.filterItems) {
    var count = mParams.filterItems.length;
    for (var i = 0; i < count; i++) {
        var oFilterItem = mParams.filterItems[i];
        var oFilter = new Filter(oFilterItem.getKey(),
            sap.ui.model.FilterOperator.EQ, oFilterItem.getText());

        aFilters.push(oFilter);
    }
}

var oBinding = this.getView().byId("idTable").getBinding("items");
oBinding.filter(aFilters);
</code></pre> 
 <h1>实现按 Table 的所有字段排序</h1> 
 <p>上面 <code>Controller</code> 对筛选、排序和分组,代码基本上实现了通用的代码。比如通过 <code>var sGroupKey = mParams.groupItem.getKey();</code> 获取 <code>Group item</code> 的 Key, 通过 <code>var bDescending = mParams.groupDescending;</code> 获取是否按降序排列。 但 <code>Table</code> 中有多个字段,为了实现灵活性,通过代码将所有字段加载到 <code>Sort item</code> 中:</p> 
 <p>首先获得 <code>Table</code> 的所有 <code>Headers</code>, 包括 id 和 header text:</p> 
 <pre><code>_getColumnHeaders: function(){
    var aColumnHeaders = [];
    var aColumns = this.getView().byId("idTable").getColumns();
    
    for (var i = 0; i < aColumns.length; i++){
        var sColumnID = aColumns[i].sId;
        var sHeaderText = aColumns[i].getHeader().getText();;
        // ID 中包含 view 的信息,分解得到字段的 id
        var aID = sColumnID.split('--');
        aColumnHeaders.push({
            key: aID[1],
            text: sHeaderText
        });
    }
    
    return aColumnHeaders;
}
</code></pre> 
 <p>然后在 <code>onTableSettings()</code> 事件处理程序中将列增加到 <code>Sort Item</code>:</p> 
 <pre><code>onTableSettings: function (oEvent) {
    
    var oDialog = this.getView().byId("SettingsDialog");
    if (!oDialog) {
        oDialog = sap.ui.xmlfragment("webapp.view.SettingsDialog", this);
    }
    
    // 增加 sort item
    var aColumnHeaders = this._getColumnHeaders();              
    oDialog.destroySortItems();
    for (var i = 0; i < aColumnHeaders.length; i++){
        oDialog.addSortItem(new sap.m.ViewSettingsItem({
            key: aColumnHeaders[i].key,
            text: aColumnHeaders[i].text
        }));
    }

    oDialog.open();
}
</code></pre> 
 <h1>从 Northwind 数据源中加载供应商的城市</h1> 
 <p>为了实现动态的数据,从 Northwind 数据源中加载数据。使用 JSON Model:</p> 
 <pre><code>_getCities: function(){
    var aCities = [];
    //var uniqueCities = [];
    
    // 使用 JSON model 
    var sServiceUrl = "http://services.odata.org/V3/Northwind/Northwind.svc/Suppliers";
    var oJSONModel = new JSONModel();
    oJSONModel.loadData(sServiceUrl, null, false, "GET", false, false, null);
    var oData = oJSONModel.getProperty("/value");
    
    // 获取城市并且消除重复项
    if (oData instanceof Array){
        $.each(oData, function(i, element){
            if ($.inArray(element.City, aCities) === -1) {
                aCities.push(element.City);
            }
        });
    }
    
    return aCities.sort();
            }
</code></pre> 
 <p>然后在 <code>onTableSettings</code> 事件处理程序中添加 <code>Filter Item</code>:</p> 
 <pre><code>onTableSettings: function (oEvent) {
    
    var oDialog = this.getView().byId("SettingsDialog");
    if (!oDialog) {
        oDialog = sap.ui.xmlfragment("webapp.view.SettingsDialog", this);
    }
    
    // 增加 sort item
    ...
    
    // 增加 filter items
    var aSupplierCities = this._getCities();                
    var aFilterItems = [];
    
    for (var i = 0; i < aSupplierCities.length; i++){
        aFilterItems.push(
            new sap.m.ViewSettingsItem({
                text: aSupplierCities[i],
                key: "City"
            })
        );
    }
    
    oDialog.destroyFilterItems();
    oDialog.addFilterItem(new sap.m.ViewSettingsFilterItem({
        key: "Filter_by_City",
        text: "城市",
        items: aFilterItems
    }));

    oDialog.open();
}
</code></pre> 
 <p>这样,就实现了动态加载供应商的城市。最后给出 <code>Table.controller.js</code> 重构后的完整代码。</p> 
 <pre><code>sap.ui.define(["sap/ui/core/mvc/Controller",
    "sap/ui/model/odata/v2/ODataModel",
    "sap/ui/model/json/JSONModel",
    "sap/ui/model/Sorter",
    "sap/ui/model/Filter"],

    function (Controller, ODataModel, JSONModel, Sorter, Filter) {
        "use strict";

        return Controller.extend("webapp.controller.Table", {

            // -------------------------------
            // Initialization event
            // -------------------------------
            onInit: function () {
                // Application model
                var sServiceUrl = "https://cors-anywhere.herokuapp.com/"
                    + "http://services.odata.org/V3/Northwind/Northwind.svc/";
                var oModel = new ODataModel(sServiceUrl);
                oModel.setUseBatch(false);

                this.getView().setModel(oModel);
            },

            // ---------------------------------------------
            // 设置 Table 的 排序,分组和筛选
            // ---------------------------------------------
            onTableSettings: function (oEvent) {

                var oDialog = this.getView().byId("SettingsDialog");
                if (!oDialog) {
                    oDialog = sap.ui.xmlfragment("webapp.view.SettingsDialog", this);
                }

                // 增加 sort item
                var aColumnHeaders = this._getColumnHeaders();
                oDialog.destroySortItems();
                for (var i = 0; i < aColumnHeaders.length; i++) {
                    oDialog.addSortItem(new sap.m.ViewSettingsItem({
                        key: aColumnHeaders[i].key,
                        text: aColumnHeaders[i].text
                    }));
                }

                // 增加 filter items
                var aSupplierCities = this._getCities();
                var aFilterItems = [];

                for (var i = 0; i < aSupplierCities.length; i++) {
                    aFilterItems.push(
                        new sap.m.ViewSettingsItem({
                            text: aSupplierCities[i],
                            key: "City"
                        })
                    );
                }

                oDialog.destroyFilterItems();
                oDialog.addFilterItem(new sap.m.ViewSettingsFilterItem({
                    key: "Filter_by_City",
                    text: "城市",
                    items: aFilterItems
                }));

                oDialog.open();
            },

            onConfirm: function (oEvent) {
                var oBinding = this.getView().byId("idTable").getBinding("items");
                var mParams = oEvent.getParameters();

                // Apply grouping
                var aSorters = [];
                if (mParams.groupItem) {
                    var sGroupKey = mParams.groupItem.getKey();
                    var bDescending = mParams.groupDescending;

                    aSorters.push(new Sorter(sGroupKey, bDescending, true));
                }

                // Apply sorter
                if (mParams.sortItem) {
                    var sSortKey = mParams.sortItem.getKey();
                    var bDescending = mParams.sortDescending;
                    aSorters.push(new Sorter(sSortKey, bDescending));
                }
                oBinding.sort(aSorters);

                // Apply filters
                var aFilters = [];
                if (mParams.filterItems) {
                    var count = mParams.filterItems.length;
                    for (var i = 0; i < count; i++) {
                        var oFilterItem = mParams.filterItems[i];
                        var oFilter = new Filter(oFilterItem.getKey(),
                            sap.ui.model.FilterOperator.EQ, oFilterItem.getText());

                        aFilters.push(oFilter);
                    }
                }
                oBinding.filter(aFilters);
            }, // end of onConfirm

            _getColumnHeaders: function () {
                var aColumnHeaders = [];
                var aColumns = this.getView().byId("idTable").getColumns();

                for (var i = 0; i < aColumns.length; i++) {
                    var sColumnID = aColumns[i].sId;
                    var sHeaderText = aColumns[i].getHeader().getText();
                    // ID 中包含 view 的信息,分解得到字段的 id
                    var aID = sColumnID.split('--');
                    aColumnHeaders.push({
                        key: aID[1],
                        text: sHeaderText
                    });
                }

                return aColumnHeaders;
            },   // end of _getColumnHeaders

            //-----------------------------------------------
            // 从 OData 数据服务获取供应商的城市,并且消除重复项
            //-----------------------------------------------
            _getCities: function () {
                var aCities = [];
                //var uniqueCities = [];

                // 使用 JSON model 
                var sServiceUrl = "http://services.odata.org/V3/Northwind/Northwind.svc/Suppliers";
                var oJSONModel = new JSONModel();
                oJSONModel.loadData(sServiceUrl, null, false, "GET", false, false, null);
                var oData = oJSONModel.getProperty("/value");

                // 获取城市并且消除重复项
                if (oData instanceof Array) {
                    $.each(oData, function (i, element) {
                        if ($.inArray(element.City, aCities) === -1) {
                            aCities.push(element.City);
                        }
                    });
                }

                return aCities.sort();
            }
        });
    });
</code></pre> 
 <h1>源代码</h1> 
 <p>29_odata_filter_sort_group_using_viewSettingsDialog</p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1238599278792921088"></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">你可能感兴趣的:(SAPUI5 (29) - 使用 ViewSettingsDialog 实现排序分组和筛选)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1879891555364433920.htm"
                           title="零中频接收机的问题以及设计解决方案" target="_blank">零中频接收机的问题以及设计解决方案</a>
                        <span class="text-muted">五味书屋</span>
<a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E9%80%9A%E8%AE%AF/1.htm">移动通讯</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E6%94%B6%E6%9C%BA/1.htm">接收机</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%A2%91/1.htm">中频</a>
                        <div>零中频接收机在几十年前被提出来,工程中经历多次的应用实践,但是多以失败告终,近年来,随着通信系统要求成本更低,功耗更低,面积更小,集成度更高,带宽更大,零中方案能够很好的解决如上问题而被再次提起。本文将详细介绍零中频接收机的问题以及设计解决方案,结合TI的零中频方案TRF3711测试结果证明,零中频方案在宽带系统的基站中是可以实现的。1超外差接收机为了更好理解零中频接收的优势,本节将简单总结超外差</div>
                    </li>
                    <li><a href="/article/1879891051540443136.htm"
                           title="显卡的结构和工作原理及发展历史与现状" target="_blank">显卡的结构和工作原理及发展历史与现状</a>
                        <span class="text-muted">pizi0475</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E5%AE%83%E6%96%87%E7%AB%A0/1.htm">其它文章</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F/1.htm">计算机系统</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/express/1.htm">express</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%BD%A2/1.htm">图形</a><a class="tag" taget="_blank" href="/search/ibm/1.htm">ibm</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8/1.htm">存储</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a>
                        <div>显卡的结构和工作原理及发展历史与现状一、显卡的基本结构1.线路板。目前显卡的线路板一般采用的是6层或4层PCB线路板。显卡的线路板是显卡载体,显卡上的所有元器件都是集成在这上面的,所以PCB板也影响着显卡的质量。目前显卡主要采用黄色和绿色PCB板,而蓝色、黑色、红色等也有出现,虽然颜色并不影响性能,但它们在一定程度上会影响到显卡出厂检验时的误差率。显卡的下端有一组“金手指”(显卡接口),它可以插入</div>
                    </li>
                    <li><a href="/article/1879890925195423744.htm"
                           title="YOLOV8涨点技巧之MCA多维协作注意力模块" target="_blank">YOLOV8涨点技巧之MCA多维协作注意力模块</a>
                        <span class="text-muted">呆头鹅AI工作室</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%E8%AF%A6%E8%A7%A3%E5%8F%8A%E4%BB%A3%E7%A0%81%E5%A4%8D%E7%8E%B0/1.htm">深度学习算法详解及代码复现</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</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><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a>
                        <div>1.算法设计:基于MCA的YOLOv8优化1.1总体架构YOLOv8的优化算法在原有架构的基础上,引入了MCA模块,以增强特征提取能力和目标定位精度。MCA模块被嵌入到YOLOv8的主干网络(Backbone)和特征金字塔网络(FPN)中,用于捕捉多维度的上下文信息。1.2MCA模块设计MCA模块的核心思想是通过多维度的注意力机制(如通道注意力、空间注意力和尺度注意力)来增强特征表示。其结构如下:</div>
                    </li>
                    <li><a href="/article/1879890421199466496.htm"
                           title="SQL SERVER(39)游标的使用" target="_blank">SQL SERVER(39)游标的使用</a>
                        <span class="text-muted">ngbshzhn</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/SQL/1.htm">SQL</a><a class="tag" taget="_blank" href="/search/SERVER/1.htm">SERVER</a>
                        <div>1.什么是游标游标是指针的一种结构,它包含结果集和结果集中指向记录的游标位置两部分,游标作为指针来遍历结果集(每次指向一行),游标是一个数据缓冲区,它存放了查询结果,而用户则可以利用SQL语句从这个缓冲区中提取数据。游标可以完成以下的功能操作:允许从当前行检索一行或多行数据。允许操作当前行的数据,这也是最常用的游标使用方式。可以定位在特定的行。游标的主要作用是遍历查询的结果集,在遍历结果集的同时可</div>
                    </li>
                    <li><a href="/article/1879890169146961920.htm"
                           title="实现列表拖拽排序功能,可新增,可删除,拖住排序,draggable,dragstart,dragend,dragover,利用好这几个事件,完美实现拖拽功能" target="_blank">实现列表拖拽排序功能,可新增,可删除,拖住排序,draggable,dragstart,dragend,dragover,利用好这几个事件,完美实现拖拽功能</a>
                        <span class="text-muted">Sherry Tian</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</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>
                        <div>你好呀,我是爱编程的Sherry,很高兴在这里遇见你!我是一名拥有十多年开发经验的前端工程师。这一路走来,面对困难时也曾感到迷茫,凭借不懈的努力和坚持,重新找到了前进的方向。我的人生格言是——认准方向,坚持不懈,你终将迎来辉煌!欢迎关注我,我将在这里分享工作中积累的经验和心得,希望我的分享能够给你带来帮助。文章目录前言效果展示功能说明新增:删除:拖拽排序:关键点:代码实现html(结构)css(样</div>
                    </li>
                    <li><a href="/article/1879889034906497024.htm"
                           title="Java选择结构(switch)" target="_blank">Java选择结构(switch)</a>
                        <span class="text-muted">不说晚安i</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>switch多选择结构>多选择结构还有一个实现方法就是switchcase语句>switchcase语句判断一个变量与一系列值中某个值是否相等每个值称为一个分支>switch语句中的变量类型可以是:byte,short,int,char从JavaSE7开始switch支持字符串String类型了同时case标签必须为字符串常量或者字面量代码展示:packagebase.struct;importj</div>
                    </li>
                    <li><a href="/article/1879889035317538816.htm"
                           title="python录制鼠标键盘操作循环播放" target="_blank">python录制鼠标键盘操作循环播放</a>
                        <span class="text-muted">-Mr_X-</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%96%E8%AE%BE/1.htm">计算机外设</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>依赖pipinstallpynput程序:frompynputimportmouse,keyboardimporttimeimportthreading#用于存储录制的鼠标和键盘事件mouse_events=[]keyboard_events=[]#定义事件处理函数#处理鼠标事件defon_move(x,y):mouse_events.append(('move',x,y))defon_click</div>
                    </li>
                    <li><a href="/article/1879889035833438208.htm"
                           title="设计一个缓存策略,动态缓存热点数据" target="_blank">设计一个缓存策略,动态缓存热点数据</a>
                        <span class="text-muted">「已注销」</span>
<a class="tag" taget="_blank" href="/search/%E6%99%BA%E5%8A%9B%E9%A2%98%26amp%3B%E5%9C%BA%E6%99%AF%E9%A2%98/1.htm">智力题&场景题</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%8E%92%E8%A1%8C%E6%A6%9C/1.htm">排行榜</a>
                        <div>写在前面,因为我们最近的大作业项目需要用到热点排行这个功能,因为我们是要使用Elasticsearch来存储数据,然后最初设想是在ES中实现这个热点排行的功能,但是经过仔细思考,在我们这个项目中使用ES来做热点排行是一个很蠢的方式,因为我们这只是一个很小的排行,所以最终我们还是使用Redis来实现热点排行使用LRU?LRU是一种常见的算法,假如我们设定TOP10的热点数据,那么我们可以规定LRU容</div>
                    </li>
                    <li><a href="/article/1879888279394906112.htm"
                           title="211本硕二战腾讯大模型算法岗,已凉......" target="_blank">211本硕二战腾讯大模型算法岗,已凉......</a>
                        <span class="text-muted">AI大模型入门</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E4%BA%91/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><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E8%B7%9F%E8%B8%AA/1.htm">目标跟踪</a>
                        <div>01背景本弱鸡211本硕,nlp,无论文有实习(老板没资源且放养),本科有acm经历(1铜),面试pcg日常实习。02技术一面(时长1h)Q1:了解什么机器学习算法,讲一下原理?当时只记得实体识别用到了隐马尔可夫模型,讲了讲怎么怎么定义观测状态和隐藏状态、前向传播、解码和应用场景。Q2:讲一下Bert的结构和怎么训练的,怎么用bert做下游任务?八股,双向transformerencoder结构,</div>
                    </li>
                    <li><a href="/article/1879887901274206208.htm"
                           title="复杂查询优化:避免 SQL 查询中的 N+1 查询问题" target="_blank">复杂查询优化:避免 SQL 查询中的 N+1 查询问题</a>
                        <span class="text-muted">檐角小猫</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>在SQL查询优化中,N+1查询问题是一个常见的性能问题,特别是在关系型数据库中。当你的查询不当时,可能会导致对数据库进行大量的额外查询,造成不必要的性能损耗。什么是N+1查询问题?N+1查询问题通常出现在一对多或多对多的关系中。例如,假设你有一个包含用户和订单的数据库模型:一个用户(User)可以有多个订单(Order),即User和Order是一对多的关系。你需要查询所有用户及其相关的订单。一个</div>
                    </li>
                    <li><a href="/article/1879887898333999104.htm"
                           title="leetcode131.分割回文串" target="_blank">leetcode131.分割回文串</a>
                        <span class="text-muted">努力d小白</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%9B%9E%E6%BA%AF/1.htm">回溯</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]思路:主要就是确定一个串的start和endList>list=newArrayListret=newArrayList>partition(Strings){backTracki</div>
                    </li>
                    <li><a href="/article/1879887769464008704.htm"
                           title="【精选】基于RFCBAMConv与YOLOv8优化的杂草分割系统 农业智能检测平台、深度学习图像分割与注意力机制融合 杂草智能识别与分类系统、深度学习目标分割优化改、进型YOLOv8杂草图像分割系统" target="_blank">【精选】基于RFCBAMConv与YOLOv8优化的杂草分割系统 农业智能检测平台、深度学习图像分割与注意力机制融合 杂草智能识别与分类系统、深度学习目标分割优化改、进型YOLOv8杂草图像分割系统</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%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">深度学习实战案例</a><a class="tag" taget="_blank" href="/search/Python%E7%B2%BE%E9%80%89%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">Python精选毕业设计</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E6%84%9F%E5%8F%97%E9%87%8E%E6%B3%A8%E6%84%8F%E5%8A%9B%E5%8D%B7%E7%A7%AF/1.htm">感受野注意力卷积</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2%E4%B8%8E%E5%88%86%E7%B1%BB/1.htm">图像分割与分类</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%86%9C%E4%B8%9A%E5%9B%BE%E5%83%8F%E5%88%86%E6%9E%90/1.htm">智能农业图像分析</a><a class="tag" taget="_blank" href="/search/%E5%86%9C%E4%B8%9A%E6%99%BA%E8%83%BD%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9F/1.htm">农业智能检测系统</a><a class="tag" taget="_blank" href="/search/%E5%86%9C%E4%BD%9C%E7%89%A9%E7%94%9F%E9%95%BF%E7%8E%AF%E5%A2%83%E7%9B%91%E6%B5%8B/1.htm">农作物生长环境监测</a>
                        <div>博主介绍:✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。技术范围:我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nod</div>
                    </li>
                    <li><a href="/article/1879887642116550656.htm"
                           title="Python如何在固定文件夹批量创建固定后缀的文件" target="_blank">Python如何在固定文件夹批量创建固定后缀的文件</a>
                        <span class="text-muted">cheese-liang</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7/1.htm">Python实用小技巧</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>Python如何在固定文件夹批量创建固定后缀的文件1.Python需求的任务2.Python代码的实现3.代码修改的位置4.运行结果5.注意事项6.其他文章链接快来试试吧1.Python需求的任务_我需要使用python批量制作后缀为.md的文件夹,100个。2.Python代码的实现importos#指定要创建文件的文件夹路径folder="D:/400-File/000-Project/000</div>
                    </li>
                    <li><a href="/article/1879887515574398976.htm"
                           title="手撕Transformer -- Day2 -- Embdding" target="_blank">手撕Transformer -- Day2 -- Embdding</a>
                        <span class="text-muted">小菜鸟博士</span>
<a class="tag" taget="_blank" href="/search/%E6%89%8B%E6%92%95Transformer/1.htm">手撕Transformer</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–Day2–Embdding目录手撕Transformer--Day2--EmbddingTransformer网络结构图代码Part1库函数Part2实现嵌入以及位置编码,作为一个类Part3测试参考Transformer网络结构图Transformer网络结构图代码Part1库函数#该模块主要用于实现词嵌入,然后加上位置向量,也就是把每次词嵌入为每个向量,然后对其加上</div>
                    </li>
                    <li><a href="/article/1879887389241962496.htm"
                           title="C++: 实现聚类算法(附带源码)" target="_blank">C++: 实现聚类算法(附带源码)</a>
                        <span class="text-muted">Katie。</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/c%2B%2B%E5%AE%9E%E7%8E%B0%E7%AE%97%E6%B3%95/1.htm">c++实现算法</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%81%9A%E7%B1%BB/1.htm">聚类</a><a class="tag" taget="_blank" href="/search/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA/1.htm">支持向量机</a>
                        <div>项目介绍聚类是无监督学习中一种常用的算法,用于将数据集中的对象分组(称为簇),使得同一簇中的对象相似度较高,而不同簇之间的对象相似度较低。在许多领域,如数据挖掘、图像处理和模式识别等,聚类算法都有广泛应用。在本项目中,我们将实现最常见的聚类算法之一——K均值聚类(K-MeansClustering)。该算法的目标是通过迭代的方式将数据集划分为K个簇,每个簇由其中心(均值)表示。项目实现思路输入参数</div>
                    </li>
                    <li><a href="/article/1879885875031109632.htm"
                           title="python实现排列组合--itertools" target="_blank">python实现排列组合--itertools</a>
                        <span class="text-muted">Draina</span>
<a class="tag" taget="_blank" href="/search/%E6%9D%82%E9%A1%B9%E7%AC%94%E8%AE%B0/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>这是一个python自带的工具集,简单好用功能强大,能够大大提升编写代码效率。功能不止排列组合,其他的用用加深理解了再整理。官方文档:https://docs.python.org/zh-cn/3/library/itertools.html1.1、itertools.permutations()所有可能的排列,元素不可以重复出现,第一个元素是字符集,第二个元素是组合的长度。itertools.p</div>
                    </li>
                    <li><a href="/article/1879885371110649856.htm"
                           title="体验字节跳动豆包AI大模型生成Python绘制三维等高线图" target="_blank">体验字节跳动豆包AI大模型生成Python绘制三维等高线图</a>
                        <span class="text-muted">「已注销」</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/matlab/1.htm">matlab</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在Python中,要绘制三维等高线图,可以使用matplotlib库的contour函数和mplot3d工具包。下面是一个绘制三维等高线图的示例代码:importnumpyasnpimportmatplotlib.pyplotaspltdefplot_3d_contour(X,Y,Z,levels):#创建新的图形fig=plt.figure()ax=fig.add_subplot(111,pro</div>
                    </li>
                    <li><a href="/article/1879885244740464640.htm"
                           title="salesforce 管理员可以reassign其它人的审批流程吗" target="_blank">salesforce 管理员可以reassign其它人的审批流程吗</a>
                        <span class="text-muted">Channing Lewis</span>
<a class="tag" taget="_blank" href="/search/Salesforce/1.htm">Salesforce</a><a class="tag" taget="_blank" href="/search/salesforce/1.htm">salesforce</a>
                        <div>在Salesforce中,审批流程的重新分配取决于用户的权限和审批流程的设置。一般情况下,是否可以重新分配审批流程取决于以下几点:1.用户权限管理员权限:具有系统管理员权限的用户通常可以重新分配审批请求,因为他们拥有对系统的全面控制。审批管理权限:如果用户被授予了审批流程管理的相关权限(例如“管理审批流程”或“管理用户的审批请求”),他们也可以重新分配审批。2.审批流程设置审批者的角色和设置:审批</div>
                    </li>
                    <li><a href="/article/1879885118395445248.htm"
                           title="Java 泛型及其优势" target="_blank">Java 泛型及其优势</a>
                        <span class="text-muted">码农小灰</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</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><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录一、Java泛型简介二、Java泛型的优势(一)类型安全(二)消除类型转换(三)代码复用(四)可读性三、Java泛型的使用场景(一)集合框架(二)算法和数据结构(三)类和接口(四)数据库操作四、Java泛型示例代码(一)泛型类示例(二)泛型方法示例五、总结在Java编程中,泛型是一种强大的工具,它允许我们在编写代码时使用参数化类型,从而提高代码的灵活性和可重用性。本文将深入探讨Java泛型的工</div>
                    </li>
                    <li><a href="/article/1879884991148650496.htm"
                           title="什么是缓存穿透、缓存击穿、缓存雪崩,在项目中是如何解决和预防?它们分别会带来什么危害?" target="_blank">什么是缓存穿透、缓存击穿、缓存雪崩,在项目中是如何解决和预防?它们分别会带来什么危害?</a>
                        <span class="text-muted">码农小灰</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录什么是缓存穿透影响危害解决方案什么是缓存击穿影响危害解决方案什么是缓存雪崩影响危害解决方案什么是缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义,造成缓存穿透。简单说:查询的数据既不在缓存中,也不在数据库中,从而每次查询直接打到数据库中,数据库存在多次被暴击的风险。甚至可能造成数据库崩溃。影响</div>
                    </li>
                    <li><a href="/article/1879884992021065728.htm"
                           title="Java中的动态代理是什么?如何实现?" target="_blank">Java中的动态代理是什么?如何实现?</a>
                        <span class="text-muted">码农小灰</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</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><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>在Java编程中,动态代理是一种强大的机制,允许开发者在运行时动态创建代理类和对象。这种机制使得程序能够在不修改原有代码的情况下,增强或改变对象的行为。动态代理广泛应用于AOP(面向切面编程)、日志记录、事务管理等场景。本文将详细介绍Java中的动态代理及其实现方式。一、什么是动态代理?定义:动态代理是指在运行时动态生成代理类和实例的机制。它允许开发者在不修改原有类代码的情况下,通过代理类来增强或</div>
                    </li>
                    <li><a href="/article/1879884864791048192.htm"
                           title="double值精确到小数点后两位" target="_blank">double值精确到小数点后两位</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/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a>
                        <div>double值精确到小数点后两位功能将程序中的double值精确到小数点后两位。可以四舍五入,也可以直接截断。比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至于是否需要四舍五入,可以通过参数来决定(RoundingMode.UP/RoundingMode.DOWN等参数)。实现代码复制代码packagecom.lhh.sample;importjava.mat</div>
                    </li>
                    <li><a href="/article/1879884486716485632.htm"
                           title="JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南" target="_blank">JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南</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/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1、简述在现代Web开发中,安全性尤为重要。为了确保用户的身份,JSONWebToken(JWT)作为一种轻量级且无状态的身份验证方案,广泛应用于微服务和分布式系统中。本篇博客将讲解如何在SpringBoot中集成JWT实现身份验证,并列出具体代码示例和常见应用场景。2、什么是JWT?JWT是一种开放标准(RFC7519),定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象</div>
                    </li>
                    <li><a href="/article/1879883982871523328.htm"
                           title="【原创】【亲测有效】如何实现内网穿透 反向代理工具实操 超级实用 遗憾没早学会" target="_blank">【原创】【亲测有效】如何实现内网穿透 反向代理工具实操 超级实用 遗憾没早学会</a>
                        <span class="text-muted">精通代码大仙</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%8F%E8%AE%AE/1.htm">协议</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E5%BA%94%E7%94%A8/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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/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/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E5%B7%A5%E4%BD%9C/1.htm">远程工作</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/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a>
                        <div>高价值使用场景FRP(FastReverseProxy)是一个功能强大的工具,适用于多种网络场景。以下是几个常见、鲜明且有价值的使用案例:远程访问内部服务器:场景:远程工作者需要访问公司内部的数据库或Web服务。解决方案:通过FRP,远程用户可以穿透公司防火墙,访问内部服务,如同在公司内部网络一样。开发和测试Web应用:场景:开发者在本地开发Web应用,并希望向不在同一网络的同事展示。解决方案:使</div>
                    </li>
                    <li><a href="/article/1879883604834709504.htm"
                           title="按键精灵ios越狱脚本教程:多选框联动的ui界面" target="_blank">按键精灵ios越狱脚本教程:多选框联动的ui界面</a>
                        <span class="text-muted">ii_best</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/cocoa/1.htm">cocoa</a>
                        <div>以下是一个简单的iOS代码示例,使用Swift语言来创建一个包含多选框(复选框)的UI界面,并实现联动效果。importUIKitclassViewController:UIViewController{letcheckbox1=UIButton(type:.system)letcheckbox2=UIButton(type:.system)letcheckbox3=UIButton(type:.</div>
                    </li>
                    <li><a href="/article/1879883604239118336.htm"
                           title="小白:react antd 搭建框架关于 RangePicker DatePicker 时间组件使用记录 2" target="_blank">小白:react antd 搭建框架关于 RangePicker DatePicker 时间组件使用记录 2</a>
                        <span class="text-muted">LZQ <=小氣鬼=></span>
<a class="tag" taget="_blank" href="/search/react/1.htm">react</a><a class="tag" taget="_blank" href="/search/%2B/1.htm">+</a><a class="tag" taget="_blank" href="/search/antd/1.htm">antd</a>
                        <div>文章目录一、关于RangePicker组件返回的moment方法示例一、关于RangePicker组件返回的moment方法示例moment方法中日后开发有用的方法如下:form.getFieldsValue().date[0].weeksInWeekYear(),form.getFieldsValue().date[0].zoneName(),form.getFieldsValue().date</div>
                    </li>
                    <li><a href="/article/1879882470648770560.htm"
                           title="零中频接收机探讨" target="_blank">零中频接收机探讨</a>
                        <span class="text-muted">xfaxisss</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/1.htm">技术分享</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">硬件架构</a>
                        <div>随着信息技术的发展,数字及模拟对信号带宽要求越来越高,传统超外差结构复杂,成本高昂,且带宽增加对带内平坦度带来巨大挑战,大规模数字FPGA的发展,使得采用零中频技术可实现大带宽信号处理,降低硬件成本。图1传统超外差接收机结构需要考虑镜像抑制,预选滤波,中频滤波,设计结构复杂;可能需要采用多个高中频,带来带内不平坦、杂散等问题。图2模拟零中频接收机架构没有镜像抑制要求;采用相同ADC情况下,带宽是超</div>
                    </li>
                    <li><a href="/article/1879882469604388864.htm"
                           title="⽹络安全国标技术规范分类汇总" target="_blank">⽹络安全国标技术规范分类汇总</a>
                        <span class="text-muted">hao_wujing</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
                        <div>大家读完觉得有帮助记得关注和点赞!!!1、术语/导则GB/T25069-2022信息安全技术术语GB/T1.2-2020标准化工作导则第2部分以ISOIEC标准化文件为基础的标准化文件起草规则GB/T1.1-2020标准化工作导则第1部门标准化文件的结构和起草规则GB/T5271.8-2001信息技术词汇第8部分安全GB/T5271.1-2000信息技术词汇第1部分基本术语2.等级保护GA-T13</div>
                    </li>
                    <li><a href="/article/1879882217430249472.htm"
                           title="CentOS7 安装搭建FTP服务器" target="_blank">CentOS7 安装搭建FTP服务器</a>
                        <span class="text-muted">hao_wujing</span>
<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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1、FTP简介ftp客户端与服务器创建网络连接,请求登录服务器,登录成功后,就可以进行文件传输,主要包括下载文件和上传文件两种操作2、关闭防火墙为了避免一些不必要的麻烦,我们先关闭防火墙和selinux,等搭建成功之后再开启防火墙和相应的端口[root@nsl~]#systemctlstatusfirewalld.service#查看防火墙状态[root@nsl~]#systemctlstopfi</div>
                    </li>
                    <li><a href="/article/1879881712872255488.htm"
                           title="大世界游戏服务器的战斗系统模块设计" target="_blank">大世界游戏服务器的战斗系统模块设计</a>
                        <span class="text-muted">lao geng</span>
<a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">游戏服务器</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a>
                        <div>以下是关于大世界游戏服务器战斗系统模块的详细设计:1.战斗系统模块的总体架构分层架构:战斗逻辑层:包含战斗规则的核心实现,如技能释放、伤害计算、战斗流程控制等。数据交互层:负责与玩家管理模块和游戏世界模块的数据交互,获取玩家和怪物的信息,更新战斗结果等。网络通信层:将战斗结果和相关信息发送给玩家,并接收玩家的战斗操作指令。2.战斗实体和属性玩家和怪物属性:基本属性:包括生命值(HP)、魔法值(MP</div>
                    </li>
                                <li><a href="/article/10.htm"
                                       title="jsonp 常用util方法" target="_blank">jsonp 常用util方法</a>
                                    <span class="text-muted">hw1287789687</span>
<a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jsonp%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95/1.htm">jsonp常用方法</a><a class="tag" taget="_blank" href="/search/jsonp+callback/1.htm">jsonp callback</a>
                                    <div>jsonp 常用java方法 
(1)以jsonp的形式返回:函数名(json字符串) 
/***
	 * 用于jsonp调用
	 * @param map : 用于构造json数据
	 * @param callback : 回调的javascript方法名
	 * @param filters : <code>SimpleBeanPropertyFilter theFilt</div>
                                </li>
                                <li><a href="/article/137.htm"
                                       title="多线程场景" target="_blank">多线程场景</a>
                                    <span class="text-muted">alafqq</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a>
                                    <div>0 
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0 
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗? 
Java多线程 
2012年11月23日 15:41 Young9007 Young9007 
4 
0 0 4 
 
Comment添加评论关注(2) 
3个答案 按时间排序 按投票排序 
 
0 
0 
最典型的如: 
1、</div>
                                </li>
                                <li><a href="/article/264.htm"
                                       title="Maven学习——修改Maven的本地仓库路径" target="_blank">Maven学习——修改Maven的本地仓库路径</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>      安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。 
  
 </div>
                                </li>
                                <li><a href="/article/391.htm"
                                       title="placeholder的浏览器兼容" target="_blank">placeholder的浏览器兼容</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/placeholder/1.htm">placeholder</a>
                                    <div>【前言】 
自从html5引入placeholder后,问题就来了, 
不支持html5的浏览器也先有这样的效果, 
各种兼容,之前考虑,今天测试人员逮住不放, 
想了个解决办法,看样子还行,记录一下。 
  
【原理】 
不使用placeholder,而是模拟placeholder的效果, 
大概就是用focus和focusout效果。 
  
【代码】 
<scrip</div>
                                </li>
                                <li><a href="/article/518.htm"
                                       title="debian_用iso文件创建本地apt源" target="_blank">debian_用iso文件创建本地apt源</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/Debian/1.htm">Debian</a>
                                    <div>1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下

2.创建N个挂载点目录  
如下: 
debian:~#mkdir –r /media/dvd1 
debian:~#mkdir –r /media/dvd2 
debian:~#mkdir –r /media/dvd3 
…. 
debian:~#mkdir –r /media</div>
                                </li>
                                <li><a href="/article/645.htm"
                                       title="SQLSERVER耗时最长的SQL" target="_blank">SQLSERVER耗时最长的SQL</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>对于DBA来说,经常要知道存储过程的某些信息: 
 
1.   执行了多少次 
 
2.   执行的执行计划如何 
 
3.   执行的平均读写如何 
 
4.   执行平均需要多少时间 
 
列名          &</div>
                                </li>
                                <li><a href="/article/772.htm"
                                       title="com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil" target="_blank">com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下: 
 
错误提示信息: 
 
An error has occurred.See error log for more details. 
Reason: 
com/genuitec/</div>
                                </li>
                                <li><a href="/article/899.htm"
                                       title="用正则删除文本中的html标签" target="_blank">用正则删除文本中的html标签</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E5%8E%BB%E6%8E%89html%E6%A0%87%E7%AD%BE/1.htm">去掉html标签</a>
                                    <div>使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。 
如下: 
public static String Html2Text(String inputString) {  
String htmlStr = inputString; // 含html标签的字符串
  String textSt</div>
                                </li>
                                <li><a href="/article/1026.htm"
                                       title="嵌入式系统设计中常用总线和接口" target="_blank">嵌入式系统设计中常用总线和接口</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/linux+%E5%9F%BA%E7%A1%80/1.htm">linux 基础</a>
                                    <div>               嵌入式系统设计中常用总线和接口 
  
        任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线</div>
                                </li>
                                <li><a href="/article/1153.htm"
                                       title="Java函数调用方式——按值传递" target="_blank">Java函数调用方式——按值传递</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%8C%89%E5%80%BC%E4%BC%A0%E9%80%92/1.htm">按值传递</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1/1.htm">对象</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/1.htm">基础数据类型</a>
                                    <div>Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。 
  
首先,让我们看一看基础数据类型是如何按值传递的。 
  
public static void main(String[] args) {
		
	int a = 2;
</div>
                                </li>
                                <li><a href="/article/1280.htm"
                                       title="ios音量线性下降" target="_blank">ios音量线性下降</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/ios%E9%9F%B3%E9%87%8F/1.htm">ios音量</a>
                                    <div>直接上代码吧 
  
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
    KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
    
    if (!_flag) {
        _tempVolume = player.volume;
       </div>
                                </li>
                                <li><a href="/article/1407.htm"
                                       title="与其怨它不如爱它" target="_blank">与其怨它不如爱它</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E9%80%89%E6%8B%A9/1.htm">选择</a><a class="tag" taget="_blank" href="/search/%E7%90%86%E6%83%B3/1.htm">理想</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E4%B8%9A/1.htm">职业</a><a class="tag" taget="_blank" href="/search/%E8%A7%84%E5%88%92/1.htm">规划</a>
                                    <div>        抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。 
        一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。 
  </div>
                                </li>
                                <li><a href="/article/1534.htm"
                                       title="一边时间不够用一边浪费时间" target="_blank">一边时间不够用一边浪费时间</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4/1.htm">时间</a><a class="tag" taget="_blank" href="/search/%E6%B5%AA%E8%B4%B9/1.htm">浪费</a>
                                    <div>一方面感觉时间严重不够用,另一方面又在不停的浪费时间。 
 
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。 
精神还是很差,下午像一直野鬼在城市里晃荡。 
 
 
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。 
控制让自己周末早睡早起,你就成功了一半。 
 
有多少个工作</div>
                                </li>
                                <li><a href="/article/1661.htm"
                                       title="【Scala八】Scala核心二:隐式转换" target="_blank">【Scala八】Scala核心二:隐式转换</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con</div>
                                </li>
                                <li><a href="/article/1788.htm"
                                       title="sudoku slover in Haskell (2)" target="_blank">sudoku slover in Haskell (2)</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a><a class="tag" taget="_blank" href="/search/sudoku/1.htm">sudoku</a>
                                    <div>继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。 
  
board = [0,3,4,1,7,0,5,0,0,
         0,6,0,0,0,8,3,0,1,
         7,0,0,3,0,0,0,0,6,
         5,0,0,6,4,0,8,0,7,
</div>
                                </li>
                                <li><a href="/article/1915.htm"
                                       title="Java-Collections Framework学习与总结-HashSet和LinkedHashSet" target="_blank">Java-Collections Framework学习与总结-HashSet和LinkedHashSet</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/linkedhashset/1.htm">linkedhashset</a>
                                    <div>        本篇总结一下两个常用的集合类HashSet和LinkedHashSet。 
        它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序</div>
                                </li>
                                <li><a href="/article/2042.htm"
                                       title="读《研磨设计模式》-代码笔记-备忘录模式-Memento" target="_blank">读《研磨设计模式》-代码笔记-备忘录模式-Memento</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 

import java.util.ArrayList;
import java.util.List;



/*
 * 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
</div>
                                </li>
                                <li><a href="/article/2169.htm"
                                       title="《RAW格式照片处理专业技法》笔记" target="_blank">《RAW格式照片处理专业技法》笔记</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/PS/1.htm">PS</a>
                                    <div>注意,这不是教程!仅记录楼主之前不太了解的 
 
 一、色彩(空间)管理 
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼) 
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv</div>
                                </li>
                                <li><a href="/article/2296.htm"
                                       title="使用 Git 下载 Spring 源码 编译 for Eclipse" target="_blank">使用 Git 下载 Spring 源码 编译 for Eclipse</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>使用 Git 下载 Spring 源码 编译 for Eclipse 
  
1、安装gradle,下载 http://www.gradle.org/downloads 
配置环境变量GRADLE_HOME,配置PATH  %GRADLE_HOME%/bin,cmd,gradle -v 
  
2、spring4 用jdk8 下载 https://jdk8.java.</div>
                                </li>
                                <li><a href="/article/2423.htm"
                                       title="mysql连接拒绝问题" target="_blank">mysql连接拒绝问题</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/%E7%99%BB%E5%BD%95%E6%9D%83%E9%99%90/1.htm">登录权限</a>
                                    <div>mysql中在其它机器连接mysql服务器时报错问题汇总 
 
一、[running]root@192.168.9.136:~$mysql -uroot -h 192.168.9.108 -p   //带-p参数,在下一步进行密码输入 
Enter password:    //无字符串输入 
ERROR 1045 (28000): Access </div>
                                </li>
                                <li><a href="/article/2550.htm"
                                       title="Google Chrome 为何打压 H.264" target="_blank">Google Chrome 为何打压 H.264</a>
                                    <span class="text-muted">dsjt</span>
<a class="tag" taget="_blank" href="/search/apple/1.htm">apple</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。 
 
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome</div>
                                </li>
                                <li><a href="/article/2677.htm"
                                       title="yii 获取控制器名 和方法名" target="_blank">yii 获取控制器名 和方法名</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                    <div>1. 获取控制器名 
在控制器中获取控制器名:  $name = $this->getId(); 
在视图中获取控制器名:    $name = Yii::app()->controller->id;  
  
2. 获取动作名  
在控制器beforeAction()回调函数中获取动作名:  $name = </div>
                                </li>
                                <li><a href="/article/2804.htm"
                                       title="Android知识总结(二)" target="_blank">Android知识总结(二)</a>
                                    <span class="text-muted">come_for_dream</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>明天要考试了,速速总结如下 
  
1、Activity的启动模式 
       standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。) 
       singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac</div>
                                </li>
                                <li><a href="/article/2931.htm"
                                       title="高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元" target="_blank">高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a>
                                    <div>高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖! 
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕</div>
                                </li>
                                <li><a href="/article/3058.htm"
                                       title="linux expect" target="_blank">linux expect</a>
                                    <span class="text-muted">heipark</span>
<a class="tag" taget="_blank" href="/search/expect/1.htm">expect</a>
                                    <div>1. 创建、编辑文件go.sh 
  
#!/usr/bin/expect

spawn sudo su admin

expect  "*password*" { send "13456\r\n" }

interact  
   2. 设置权限 
   chmod u+x go.sh   3.</div>
                                </li>
                                <li><a href="/article/3185.htm"
                                       title="Spring4.1新特性——静态资源处理增强" target="_blank">Spring4.1新特性——静态资源处理增强</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/3312.htm"
                                       title="idea ubuntuxia 乱码" target="_blank">idea ubuntuxia 乱码</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>    
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。 
2.在ubuntu 下可以执行下面操作安装该字体: 
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf  /usr/share/fonts/truetype/simsun
fc-cache -f -v 
</div>
                                </li>
                                <li><a href="/article/3439.htm"
                                       title="改良程序的11技巧" target="_blank">改良程序的11技巧</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7/1.htm">技巧</a>
                                    <div>有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。 
  
让我们看一些基本的编程技巧: 
  
 
 尽量保持方法简短 
 永远永远不要把同一个变量用于多个不同的</div>
                                </li>
                                <li><a href="/article/3566.htm"
                                       title="300个涵盖IT各方面的免费资源(下)——工作与学习篇" target="_blank">300个涵盖IT各方面的免费资源(下)——工作与学习篇</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/%E5%88%9B%E4%B8%9A/1.htm">创业</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E8%B5%84%E6%BA%90/1.htm">免费资源</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B/1.htm">学习课程</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E5%B7%A5%E4%BD%9C/1.htm">远程工作</a>
                                    <div>工作与生产效率: 
  
 
 A. 背景声音 
 
 
  Noisli:背景噪音与颜色生成器。 
  Noizio:环境声均衡器。 
  Defonic:世界上任何的声响都可混合成美丽的旋律。 
  Designers.mx:设计者为设计者所准备的播放列表。 
  Coffitivity:这里的声音就像咖啡馆里放的一样。 
 
 
 B. 避免注意力分散 
 
 
  Self Co</div>
                                </li>
                                <li><a href="/article/3693.htm"
                                       title="深入浅出RPC" target="_blank">深入浅出RPC</a>
                                    <span class="text-muted">uule</span>
<a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a>
                                    <div>深入浅出RPC-浅出篇 
深入浅出RPC-深入篇 
  
RPC 
Remote Procedure Call Protocol 
远程过程调用协议 
  
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发</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>