UI5_Walkthrough_3

Aggregation Binding

创建Invoices.json文件

{
  "Invoices": [
    {
      "ProductName": "Pineapple",
      "Quantity": 21,
      "ExtendedPrice": 87.2000,
      "ShipperName": "Fun Inc.",
      "ShippedDate": "2015-04-01T00:00:00",
      "Status": "A"
    },
    ......
  ]
}

将invoice添加到manifest.json的models中

      "invoice": {
        "type": "sap.ui.model.json.JSONModel",
        "uri": "Invoices.json"
      }

新建InvoiceList.view.xml,并在app view中通过绑定,添加List,items为invoice Model下/Invoices,items的title为Quantity x ProductName


   
      
         
      
   

Data Types

指定invoicelist的controller,在controller的onInit事件中,添加JSONModel{currency: "EUR"},并绑定到Model this.getView().setModel(oViewModel, "view");。在ObjectListItem中添加number与numberUnit属性,number使用Calculated Fields语法,type为sap.ui.model.type.Currency金额类型,需要两个parts,分别为金额和单位,在number属性中我们不显示单位,因此设置formatOptions: {showMeasure: false}

Expression Binding

在ObjectListItem中添加numberState属性,将其定义为三元表达式numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success' }"/>,表达式可以用{=expression}来表示,式中${invoice>ExtendedPrice}取出ExtendedPrice的值。

Custom Formatters

定义formatter.js模块,返回status text

sap.ui.define([], function () {
    "use strict";
    return {
        statusText: function (sStatus) {
            var resourceBundle = this.getView().getModel("i18n").getResourceBundle();
            switch (sStatus) {
                case "A":
                    return resourceBundle.getText("invoiceStatusA");
                case "B":
                    return resourceBundle.getText("invoiceStatusB");
                case "C":
                    return resourceBundle.getText("invoiceStatusC");
                default:
                    return sStatus;
            }
        }
    };
});

在InvoiceList controller中,引入formatter.js模块依赖,定义formatter事件formatter: formatter,在ObjectListItem中添加标签,在ObjectStatus中定义formatter为'.formatter.statusText',表示当前controller下的formatter,并调用statusText


Filtering

给list一个idid="invoiceList",添加headertoolbar,加入搜索框,添加onFilterInvoices事件。

      
         
            
            <ToolbarSpacer/>
            <SearchField width="50%" search="onFilterInvoices" selectOnFocus="false"/>
         </Toolbar>
      </headerToolbar>
</code></pre> 
 <p>在controller中添加Filter FilterOperator依赖,实现onFilterInvoices。SearchField触发事件后,将输入的值添加到query参数下,可以通过 oEvent.getParameter("query")得到输入的Search字段,创建一个Filter对象并将它push到aFilter数组中,Filter参数为path: ProductName,Operator:Contains,Value:sQuery。获取invoiceList的ListBinding对象,调用filter方法</p> 
 <pre><code>        onFilterInvoices : function (oEvent) {
            // build filter array
            var aFilter = [];
            var sQuery = oEvent.getParameter("query");
            if (sQuery) {
                aFilter.push(new Filter("ProductName", FilterOperator.Contains, sQuery));
            }
            // filter binding
            var oList = this.getView().byId("invoiceList");
            var oBinding = oList.getBinding("items");
            oBinding.filter(aFilter);
        }
</code></pre> 
 <h3>Sorting and Grouping</h3> 
 <p>在items中定义sorter及group</p> 
 <pre><code>items="{
            path : 'invoice>/Invoices',
            sorter : {
                path : 'ShipperName',
                group : true
            }
</code></pre> 
 <h3>Remote OData Service</h3> 
 <p>跨域请求配置<br> 配置manifest.json,<br> 在"sap.app"下添加dataSources</p> 
 <pre><code>    "dataSources": {
      "invoiceRemote": {
        "uri": "https://services.odata.org/V2/Northwind/Northwind.svc/",
        "type": "OData",
        "settings": {
          "odataVersion": "2.0"
        }
      }
    }
</code></pre> 
 <p>invoice Model改成使用dataSource</p> 
 <pre><code>      "invoice": {
        "dataSource": "invoiceRemote"
      }
</code></pre> 
 <p>在Eclipse中测试时,使用本地代理<br> 将uri改为<code>proxy/V2/Northwind/Northwind.svc/</code>在web.xml中,SimpleProxyServlet下面添加如下配置,eclipse的Network connection需为Native或Direct</p> 
 <pre><code>    <context-param>
        <param-name>com.sap.ui5.proxy.REMOTE_LOCATION</param-name>
        <param-value>http://services.odata.org</param-value>
    </context-param>
</code></pre> 
 <h3>Mock Server Configuration</h3> 
 <p>创建mockServer.html,在attachInit中,需要引入依赖,可以用sap.ui.require</p> 
 <pre><code>sap.ui.require([
    "sap/ui/demo/wt/localService/mockserver",
    "sap/m/Shell",
    "sap/ui/core/ComponentContainer"
], function (mockserver, Shell, ComponentContainer) {
    mockserver.init();
    new Shell({
        app : new ComponentContainer({
            height: "100%",
            name: "sap.ui.demo.wt"
        })
    }).placeAt("content");
});
</code></pre> 
 <p>其中,mockserver.js模块的定义如下,其中,创建MockServer的rootUri需要匹配上manifest.json文件中的URI,MockServer.config进行全局配置。simulate方法传入Metadata的path及Mockdata的path,Metadata参考odata Metadata定义,Mockdata为json文件,通过start方法启动。</p> 
 <pre><code>sap.ui.define([
    "sap/ui/core/util/MockServer"
], function (MockServer) {
    "use strict";
    return {
        init: function () {
            // create
            var oMockServer = new MockServer({
                rootUri: "/destinations/northwind/V2/Northwind/Northwind.svc/"
            }); 
            var oUriParameters = jQuery.sap.getUriParameters();
            // configure
            MockServer.config({
                autoRespond: true,
                autoRespondAfter: oUriParameters.get("serverDelay") || 1000
            });
            // simulate
            var sPath = jQuery.sap.getModulePath("sap.ui.demo.wt.localService");
            oMockServer.simulate(sPath + "/metadata.xml", sPath + "/mockdata");
            // start
            oMockServer.start();
        }
    };
});
</code></pre> 
 <h3>Unit Test</h3> 
 <p>测试前面创建的formatter.js模块,创建/test/unit/model/formatter.js,QUnit.module创建Module <code>Formatting functions</code>,beforeEach与afterEach事件中分别创建和销毁ResourceModel。</p> 
 <pre><code>QUnit.module("Formatting functions", {
    beforeEach: function () {
        this._oResourceModel = new ResourceModel({
            bundleUrl : jQuery.sap.getModulePath("sap.ui.demo.wt", "/i18n/i18n.properties")
        });
    },
    afterEach: function () {
        this._oResourceModel.destroy();
    }
});
</code></pre> 
 <p>QUnit.test进行测试,测试名为<code>Should return the translated texts</code>,方法中,由于formatter中代码<code>var resourceBundle = this.getView().getModel("i18n").getResourceBundle();</code>我们不需要controller,view,model等功能,我们用SinonJS的stub方法来移除依赖,controller的getView方法返回view,我们这里this.stub()模拟controller,返回viewStub,oViewStub中,getModel返回ResourceModel,这里this.stub()模拟view,withArgs("i18n")模拟参数。然后将formatter.statusText绑定模拟的controller,此时代码中的this将指向ControllerStub。</p> 
 <pre><code>QUnit.test("Should return the translated texts", function (assert) {
    // Arrange
    var oViewStub = {
        getModel: this.stub().withArgs("i18n").returns(this._oResourceModel)
    };
    var oControllerStub = {
        getView: this.stub().returns(oViewStub)
    };
    // System under test
    var fnIsolatedFormatter = formatter.statusText.bind(oControllerStub);
    // Assert
    assert.strictEqual(fnIsolatedFormatter("A"), "New", "The long text for status A is correct");
});
</code></pre> 
 <h3>Integration Test with OPA</h3> 
 <p>创建/test/integration/navigationJourney.js,引入opaQunit依赖,创建Navigation Module,创建opaTest,Given对象中调用准备function,本例中创建一个frame,When对象中调用配置的action,Then对象中进行判断。</p> 
 <pre><code>sap.ui.require([
    "sap/ui/test/opaQunit"
], function () {
    "use strict";
    QUnit.module("Navigation");
    opaTest("Should open the hello dialog", function (Given, When, Then) {      
 Given.iStartMyAppInAFrame(jQuery.sap.getResourcePath("sap/ui/demo/app/test", ".html"));
        When.onTheAppPage.iPressTheSayHelloWithDialogButton();
        Then.onTheAppPage.iShouldSeeTheHelloDialog().
            and.iTeardownMyAppFrame();
    });
});
</code></pre> 
 <p>创建/test/integration/pages/App.js文件,createPageObjects创建Page对象onTheAppPage,添加actions与assertions,通过this.waitFor返回Promise对象,如下代码会寻找Button对象数组,aButtons[0]取第一个Button,.$()创建Jquery对象,并触发tap事件</p> 
 <pre><code>return this.waitFor({
    controlType: "sap.m.Button",
    success: function (aButtons) {
        aButtons[0].$().trigger("tap");
    },
    errorMessage: "Did not find the helloDialogButton button on the app page"
});
</code></pre> 
 <h3>Debug tool</h3> 
 <p>在view中,把list中number改为错误的<code>'invoice>ExTendedPrice'</code>,此时打开页面,Number没有值。<br> CTRL + ALT + SHIFT + S 打开SAPUI5 诊断工具,在control tree中,找到listitem,打开Binding Infos,可以看到number标记为invalid<br> </p> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 518px;"> 
   <div class="image-view"> 
    <a href="http://img.e-com-net.com/image/info10/7e35c8ae995947d8ac6f1010ef5aa038.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/7e35c8ae995947d8ac6f1010ef5aa038.jpg" width="650" height="272" alt="UI5_Walkthrough_3_第1张图片" style="border:1px solid black;"></a> 
   </div> 
  </div> 
  <div class="image-caption"></div> 
 </div> 
 <br> 有时候Debug不是那么容易,SAPUI5文件被优化成最小化版本,要进行深入的Debug源文件时,可以 CTRL + ALT + SHIFT + P 打开窗口,将Use Debug Sources 打上勾,再通过浏览器加载时,在F12开发者工具Network下有很多-dbg后缀的文件,即为未经压缩的源文件 
 <br> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 421px;"> 
   <div class="image-view"> 
    <a href="http://img.e-com-net.com/image/info10/ea9b1016c09d45089a00d82886c95231.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/ea9b1016c09d45089a00d82886c95231.jpg" width="650" height="304" alt="UI5_Walkthrough_3_第2张图片" style="border:1px solid black;"></a> 
   </div> 
  </div> 
  <div class="image-caption"></div> 
 </div> 
 <p></p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1237699289006796800"></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">你可能感兴趣的:(UI5_Walkthrough_3)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1237699289006796800.htm"
                           title="UI5_Walkthrough_3" target="_blank">UI5_Walkthrough_3</a>
                        <span class="text-muted">LiuliuZhang</span>

                        <div>AggregationBinding创建Invoices.json文件{"Invoices":[{"ProductName":"Pineapple","Quantity":21,"ExtendedPrice":87.2000,"ShipperName":"FunInc.","ShippedDate":"2015-04-01T00:00:00","Status":"A"},......]}将invo</div>
                    </li>
                                <li><a href="/article/119.htm"
                                       title="Spring中@Value注解,需要注意的地方" target="_blank">Spring中@Value注解,需要注意的地方</a>
                                    <span class="text-muted">无量</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/%40Value/1.htm">@Value</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>Spring 3以后,支持@Value注解的方式获取properties文件中的配置值,简化了读取配置文件的复杂操作 
 
 
1、在applicationContext.xml文件(或引用文件中)中配置properties文件 
 
<bean id="appProperty"
    class="org.springframework.beans.fac</div>
                                </li>
                                <li><a href="/article/246.htm"
                                       title="mongoDB 分片" target="_blank">mongoDB 分片</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>    mongoDB的分片。要mongos查询数据时候 先查询configsvr看数据在那台shard上,configsvr上边放的是metar信息,指的是那条数据在那个片上。由此可以看出mongo在做分片的时候咱们至少要有一个configsvr,和两个以上的shard(片)信息。 
    第一步启动两台以上的mongo服务 
&nb</div>
                                </li>
                                <li><a href="/article/373.htm"
                                       title="OVER(PARTITION BY)函数用法" target="_blank">OVER(PARTITION BY)函数用法</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>这篇写得很好,引自 
http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html 
 
 
OVER(PARTITION BY)函数用法 
 
 2010年10月26日 
 
OVER(PARTITION BY)函数介绍 
 
开窗函数        &nb</div>
                                </li>
                                <li><a href="/article/500.htm"
                                       title="Android开发中,ADB server didn't ACK 解决方法" target="_blank">Android开发中,ADB server didn't ACK 解决方法</a>
                                    <span class="text-muted">一炮送你回车库</span>
<a class="tag" taget="_blank" href="/search/Android%E5%BC%80%E5%8F%91/1.htm">Android开发</a>
                                    <div>首先通知:凡是安装360、豌豆荚、腾讯管家的全部卸载,然后再尝试。 
  
一直没搞明白这个问题咋出现的,但今天看到一个方法,搞定了!原来是豌豆荚占用了 5037 端口导致。 
参见原文章:一个豌豆荚引发的血案——关于ADB server didn't ACK的问题 
简单来讲,首先将Windows任务进程中的豌豆荚干掉,如果还是不行,再继续按下列步骤排查。 
&nb</div>
                                </li>
                                <li><a href="/article/627.htm"
                                       title="canvas中的像素绘制问题" target="_blank">canvas中的像素绘制问题</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/canvas/1.htm">canvas</a>
                                    <div>pixl的绘制,1.如果绘制点正处于相邻像素交叉线,绘制x像素的线宽,则从交叉线分别向前向后绘制x/2个像素,如果x/2是整数,则刚好填满x个像素,如果是小数,则先把整数格填满,再去绘制剩下的小数部分,绘制时,是将小数部分的颜色用来除以一个像素的宽度,颜色会变淡。所以要用整数坐标来画的话(即绘制点正处于相邻像素交叉线时),线宽必须是2的整数倍。否则会出现不饱满的像素。 
2.如果绘制点为一个像素的</div>
                                </li>
                                <li><a href="/article/754.htm"
                                       title="编码乱码问题" target="_blank">编码乱码问题</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/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81/1.htm">编码</a>
                                    <div>1、JVM中单个字符占用的字节长度跟编码方式有关,而默认编码方式又跟平台是一一对应的或说平台决定了默认字符编码方式;2、对于单个字符:ISO-8859-1单字节编码,GBK双字节编码,UTF-8三字节编码;因此中文平台(中文平台默认字符集编码GBK)下一个中文字符占2个字节,而英文平台(英文平台默认字符集编码Cp1252(类似于ISO-8859-1))。 
3、getBytes()、getByte</div>
                                </li>
                                <li><a href="/article/881.htm"
                                       title="java 求几个月后的日期" target="_blank">java 求几个月后的日期</a>
                                    <span class="text-muted">darkranger</span>
<a class="tag" taget="_blank" href="/search/calendar/1.htm">calendar</a><a class="tag" taget="_blank" href="/search/getinstance/1.htm">getinstance</a>
                                    <div>Date plandate = planDate.toDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(plandate);
// 取得三个月后时间
cal.add(Calendar.M</div>
                                </li>
                                <li><a href="/article/1008.htm"
                                       title="数据库设计的三大范式(通俗易懂)" target="_blank">数据库设计的三大范式(通俗易懂)</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%8D%E4%B9%A0/1.htm">数据库复习</a>
                                    <div>关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库. 
目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推。</div>
                                </li>
                                <li><a href="/article/1135.htm"
                                       title="想学工作流怎么入手" target="_blank">想学工作流怎么入手</a>
                                    <span class="text-muted">atongyeye</span>
<a class="tag" taget="_blank" href="/search/jbpm/1.htm">jbpm</a>
                                    <div>工作流在工作中变得越来越重要,很多朋友想学工作流却不知如何入手。 很多朋友习惯性的这看一点,那了解一点,既不系统,也容易半途而废。好比学武功,最好的办法是有一本武功秘籍。研究明白,则犹如打通任督二脉。 
 
 
系统学习工作流,很重要的一本书《JBPM工作流开发指南》。 
 
本人苦苦学习两个月,基本上可以解决大部分流程问题。整理一下学习思路,有兴趣的朋友可以参考下。 
 
1  首先要</div>
                                </li>
                                <li><a href="/article/1262.htm"
                                       title="Context和SQLiteOpenHelper创建数据库" target="_blank">Context和SQLiteOpenHelper创建数据库</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/Context%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">Context创建数据库</a>
                                    <div>       一直以为安卓数据库的创建就是使用SQLiteOpenHelper创建,但是最近在android的一本书上看到了Context也可以创建数据库,下面我们一起分析这两种方式创建数据库的方式和区别,重点在SQLiteOpenHelper 
  
  
一:SQLiteOpenHelper创建数据库: 
  
1,SQLi</div>
                                </li>
                                <li><a href="/article/1389.htm"
                                       title="浅谈group by和distinct" target="_blank">浅谈group by和distinct</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/group+by/1.htm">group by</a><a class="tag" taget="_blank" href="/search/distinct/1.htm">distinct</a>
                                    <div>        group by和distinct只了去重意义一样,但是group by应用范围更广泛些,如分组汇总或者从聚合函数里筛选数据等。 
        譬如:统计每id数并且只显示数大于3 
select id ,count(id) from ta</div>
                                </li>
                                <li><a href="/article/1516.htm"
                                       title="vi opertion" target="_blank">vi opertion</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/opration/1.htm">opration</a><a class="tag" taget="_blank" href="/search/vi/1.htm">vi</a>
                                    <div>进入 command mode (命令行模式) 
按 esc 键 
再按 shift + 冒号 
 
注:以下命令中 带 $ 【在命令行模式下进行】,不带 $ 【在非命令行模式下进行】 
 
一、文件操作 
1.1、强制退出不保存 
$ q! 
1.2、保存 
$ w 
1.3、保存并退出 
$ wq 
1.4、刷新或重新加载已打开的文件 
$ e 
 
二、光标移动 
2.1、跳到指定行 
数字</div>
                                </li>
                                <li><a href="/article/1643.htm"
                                       title="【Spark十四】深入Spark RDD第三部分RDD基本API" target="_blank">【Spark十四】深入Spark RDD第三部分RDD基本API</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a>
                                    <div>  
对于K/V类型的RDD,如下操作是什么含义? 
  
val rdd = sc.parallelize(List(("A",3),("C",6),("A",1),("B",5))
rdd.reduceByKey(_+_).collect 
 reduceByKey在这里的操作,是把</div>
                                </li>
                                <li><a href="/article/1770.htm"
                                       title="java类加载机制" target="_blank">java类加载机制</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">虚拟机</a>
                                    <div>java类加载机制 
1.java类加载器的树状结构 
引导类加载器 
^ 
| 
扩展类加载器 
^ 
| 
系统类加载器 
java使用代理模式来完成类加载,java的类加载器也有类似于继承的关系,引导类是最顶层的加载器,它是所有类的根加载器,它负责加载java核心库。当一个类加载器接到装载类到虚拟机的请求时,通常会代理给父类加载器,若已经是根加载器了,就自己完成加载。 
虚拟机区分一个Cla</div>
                                </li>
                                <li><a href="/article/1897.htm"
                                       title="动态添加文本框" target="_blank">动态添加文本框</a>
                                    <span class="text-muted">BreakingBad</span>
<a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E6%A1%86/1.htm">文本框</a>
                                    <div>  <script>     var num=1; function AddInput() {      var str="";     str+="<input </div>
                                </li>
                                <li><a href="/article/2024.htm"
                                       title="读《研磨设计模式》-代码笔记-单例模式" target="_blank">读《研磨设计模式》-代码笔记-单例模式</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 



public class Singleton {
}

/*
 * 懒汉模式。注意,getInstance如果在多线程环境中调用,需要加上synchronized,否则存在线程不安全问题
 */
class LazySingleton</div>
                                </li>
                                <li><a href="/article/2151.htm"
                                       title="iOS应用打包发布常见问题" target="_blank">iOS应用打包发布常见问题</a>
                                    <span class="text-muted">chenhbc</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/iOS%E5%8F%91%E5%B8%83/1.htm">iOS发布</a><a class="tag" taget="_blank" href="/search/iOS%E4%B8%8A%E4%BC%A0/1.htm">iOS上传</a><a class="tag" taget="_blank" href="/search/iOS%E6%89%93%E5%8C%85/1.htm">iOS打包</a>
                                    <div>这个月公司安排我一个人做iOS客户端开发,由于急着用,我先发布一个版本,由于第一次发布iOS应用,期间出了不少问题,记录于此。 
  
1、使用Application Loader 发布时报错:Communication error.please use diagnostic mode to check connectivity.you need to have outbound acc</div>
                                </li>
                                <li><a href="/article/2278.htm"
                                       title="工作流复杂拓扑结构处理新思路" target="_blank">工作流复杂拓扑结构处理新思路</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a><a class="tag" taget="_blank" href="/search/OO/1.htm">OO</a>
                                    <div> 我们走的设计路线和国外的产品不太一样,不一样在哪里呢?  国外的流程的设计思路是通过事先定义一整套规则(类似XPDL)来约束和控制流程图的复杂度(我对国外的产品了解不够多,仅仅是在有限的了解程度上面提出这样的看法),从而避免在流程引擎中处理这些复杂的图的问题,而我们却没有通过事先定义这样的复杂的规则来约束和降低用户自定义流程图的灵活性,这样一来,在引擎和流程流转控制这一个层面就会遇到很</div>
                                </li>
                                <li><a href="/article/2405.htm"
                                       title="oracle 11g新特性Flashback data archive" target="_blank">oracle 11g新特性Flashback data archive</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>1. 什么是flashback data archive 
 
Flashback data archive是oracle 11g中引入的一个新特性。Flashback archive是一个新的数据库对象,用于存储一个或多表的历史数据。Flashback archive是一个逻辑对象,概念上类似于表空间。实际上flashback archive可以看作是存储一个或多个表的所有事务变化的逻辑空间。 </div>
                                </li>
                                <li><a href="/article/2532.htm"
                                       title="多叉树:2-3-4树" target="_blank">多叉树:2-3-4树</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E6%A0%91/1.htm">树</a>
                                    <div>    平衡树多叉树,每个节点最多有4个子节点和3个数据项,2,3,4的含义是指一个节点可能含有的子节点的个数,效率比红黑树稍差.一般不允许出现重复关键字值.2-3-4树有以下特征: 
    1、有一个数据项的节点总是有2个子节点(称为2-节点) 
    2、有两个数据项的节点总是有3个子节点(称为3-节</div>
                                </li>
                                <li><a href="/article/2659.htm"
                                       title="C语言学习七动态分配 malloc的使用" target="_blank">C语言学习七动态分配 malloc的使用</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/language/1.htm">language</a><a class="tag" taget="_blank" href="/search/malloc/1.htm">malloc</a>
                                    <div>/*
	2013年3月15日15:16:24
	malloc 就memory(内存) allocate(分配)的缩写
	本程序没有实际含义,只是理解使用	
 */
# include <stdio.h>
# include <malloc.h>

int main(void)
{
	int i = 5;	//分配了4个字节 静态分配
	int * p </div>
                                </li>
                                <li><a href="/article/2786.htm"
                                       title="Objective-C编码规范[译]" target="_blank">Objective-C编码规范[译]</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">代码规范</a>
                                    <div>     
 
  
  原文链接 : The official raywenderlich.com Objective-C style guide  
  原文作者 : raywenderlich.com Team  
  译文出自 : raywenderlich.com Objective-C编码规范  
  译者 : Sam Lau  
  </div>
                                </li>
                                <li><a href="/article/2913.htm"
                                       title="0.性能优化-目录" target="_blank">0.性能优化-目录</a>
                                    <span class="text-muted">frank1234</span>
<a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                                    <div>从今天开始笔者陆续发表一些性能测试相关的文章,主要是对自己前段时间学习的总结,由于水平有限,性能测试领域很深,本人理解的也比较浅,欢迎各位大咖批评指正。 
主要内容包括: 
一、性能测试指标 
吞吐量、TPS、响应时间、负载、可扩展性、PV、思考时间 
http://frank1234.iteye.com/blog/2180305 
 
二、性能测试策略 
生产环境相同 基准测试 预热等 
htt</div>
                                </li>
                                <li><a href="/article/3040.htm"
                                       title="Java父类取得子类传递的泛型参数Class类型" target="_blank">Java父类取得子类传递的泛型参数Class类型</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E7%B1%BB/1.htm">父类</a><a class="tag" taget="_blank" href="/search/%E5%AD%90%E7%B1%BB/1.htm">子类</a><a class="tag" taget="_blank" href="/search/Class/1.htm">Class</a>
                                    <div>  
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

import org.junit.Test;

abstract class BaseDao<T> {
	public void getType() {
		//Class<E> clazz =</div>
                                </li>
                                <li><a href="/article/3167.htm"
                                       title="跟我学SpringMVC目录汇总贴、PDF下载、源码下载" target="_blank">跟我学SpringMVC目录汇总贴、PDF下载、源码下载</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>  
----广告-------------------------------------------------------------- 
网站核心商详页开发 
掌握Java技术,掌握并发/异步工具使用,熟悉spring、ibatis框架; 
掌握数据库技术,表设计和索引优化,分库分表/读写分离; 
了解缓存技术,熟练使用如Redis/Memcached等主流技术; 
了解Ngin</div>
                                </li>
                                <li><a href="/article/3294.htm"
                                       title="the HTTP rewrite module requires the PCRE library" target="_blank">the HTTP rewrite module requires the PCRE library</a>
                                    <span class="text-muted">流浪鱼</span>
<a class="tag" taget="_blank" href="/search/rewrite/1.htm">rewrite</a>
                                    <div>./configure: error: the HTTP rewrite module requires the PCRE library. 
模块依赖性Nginx需要依赖下面3个包 
1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) 
2. rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ ) 
3. s</div>
                                </li>
                                <li><a href="/article/3421.htm"
                                       title="第12章 Ajax(中)" target="_blank">第12章 Ajax(中)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3548.htm"
                                       title="Optimize query with Query Stripping in Web Intelligence" target="_blank">Optimize query with Query Stripping in Web Intelligence</a>
                                    <span class="text-muted">blueoxygen</span>
<a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a>
                                    <div>http://wiki.sdn.sap.com/wiki/display/BOBJ/Optimize+query+with+Query+Stripping+in+Web+Intelligence 
and a very straightfoward video 
http://www.sdn.sap.com/irj/scn/events?rid=/library/uuid/40ec3a0c-936</div>
                                </li>
                                <li><a href="/article/3675.htm"
                                       title="Java开发者写SQL时常犯的10个错误" target="_blank">Java开发者写SQL时常犯的10个错误</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>1、不用PreparedStatements     有意思的是,在JDBC出现了许多年后的今天,这个错误依然出现在博客、论坛和邮件列表中,即便要记住和理解它是一件很简单的事。开发者不使用PreparedStatements的原因可能有如下几个:     他们对PreparedStatements不了解     他们认为使用PreparedStatements太慢了     他们认为写Prepar</div>
                                </li>
                                <li><a href="/article/3802.htm"
                                       title="世纪互联与结盟有感" target="_blank">世纪互联与结盟有感</a>
                                    <span class="text-muted">阿尔萨斯</span>

                                    <div> 10月10日,世纪互联与(Foxcon)签约成立合资公司,有感。 
 全球电子制造业巨头(全球500强企业)与世纪互联共同看好IDC、云计算等业务在中国的增长空间,双方迅速果断出手,在资本层面上达成合作,此举体现了全球电子制造业巨头对世纪互联IDC业务的欣赏与信任,另一方面反映出世纪互联目前良好的运营状况与广阔的发展前景。 
 众所周知,精于电子产品制造(世界第一),对于世纪互联而言,能够与结盟</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>