1. 程式人生 > >freemark模板框架+quartz定時框架入門學習(面向百度程式設計)

freemark模板框架+quartz定時框架入門學習(面向百度程式設計)

需求,定時查詢表資料,生成表格,傳送給員工,
相關技術 : quartz freemark

  • Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源專案,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來建立簡單或為執行十個,百個,甚至是好幾萬個Jobs這樣複雜的程式。Jobs可以做成標準的Java元件或 EJBs。Quartz的最新版本為Quartz 2.3.0。
  • FreeMarker是一個基於Java的模板引擎,最初專注於使用MVC軟體架構生成動態網頁。但是,它是一個通用的模板引擎,不依賴於servlets或HTTP或HTML,因此它通常用於生成原始碼,配置檔案或電子郵件。FreeMarker是自由軟體。

    下面是我的疑惑,也許你們也遇到了,為什麼要學quartz框架,應用場景有哪些?

應用場景一

 更新靜態資料,需求,存入redis的選單資料每隔1小時就需要更新一次,(當時主要出於兩個原因:一、專案開發的時間比較緊,二、使用quartz拓展性比較好,維護起來比較方便)。

### 應用場景二
自動結賬
oo 因為涉及到支付,如果學員在上完課之後,沒有結課的話,這部分錢就永遠是講師的帶收入而不是收入。顯然這是不合理的,所以就需要一個自動結賬的過程。類似於咱們在淘寶上購物如果我們不確認收貨,也會預設一個時間段,如果超過這個時間段也會自動結賬。

### 應用場景三
解決伺服器壓力,我們可以把一些資料操作放在晚上執行,錯過流量高峰期,這也是本章選擇使用quartz框架的原因之一,

開始程式碼(採用ssh技術)maven工程

匯入pom檔案

  <!-- 許可權控制 框架 -->
   <dependencies>
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>${poi.version}</version>
      </dependency>
      <dependency
>
<groupId>pinyin4j</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.18.1-GA</version> <exclusions> <exclusion> <artifactId>javassist</artifactId> <groupId>javassist</groupId> </exclusion> </exclusions> </dependency> <!-- spring 框架 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- spring data jpa 資料庫持久層 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${springdatajpa.version}</version> </dependency> <!-- 訊息佇列 MQ --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq.version}</version> </dependency> <!-- struts2 框架 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>${struts2.version}</version> </dependency> <!-- hibernate 框架 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts2.version}</version> </dependency> <!-- 資料庫連線池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>${c3p0.version}</version> </dependency> <!-- 日誌框架 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- 工具包 --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${springdataredis.version}</version> </dependency> <!-- oracle資料庫驅動,需要手動安裝 --> <!-- <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.1.0</version> </dependency> --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.1.0</version> </dependency> <!-- Excel解析工具類 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>${poi.version}</version> </dependency> <!-- Servlet、JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <!-- 單元測試 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- 匯入webservice依賴 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-client</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-extension-providers</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.22</version> </dependency> <dependency> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> <version>1.3.7</version> </dependency> <!-- 物件轉為json 工具包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.37</version> </dependency> <dependency> <groupId>com.colobu</groupId> <artifactId>fastjson-jaxrs-json-provider</artifactId> <version>0.3.1</version> </dependency> <!-- 引入json-lib的依賴 --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency> <!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j --> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> <scope>compile</scope> </dependency> <!-- 快取 --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.11</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>4.2</version> </dependency> </dependencies> <properties> <spring.version>4.2.4.RELEASE</spring.version> <struts2.version>2.3.24</struts2.version> <hibernate.version>5.0.7.Final</hibernate.version> <slf4j.version>1.6.6</slf4j.version> <springdataredis.version>1.4.1.RELEASE</springdataredis.version> <activemq.version>5.2.0</activemq.version> <shiro.version>1.2.2</shiro.version> <springdatajpa.version>1.10.4.RELEASE</springdatajpa.version> <jedis.version>2.6.2</jedis.version> <poi.version>3.11</poi.version> <c3p0.version>0.9.1.2</c3p0.version> <cxf.version>3.0.1</cxf.version> <servlet.version>2.5</servlet.version> <junit.version>4.11</junit.version> <!-- 檔案拷貝時的編碼 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 編譯時的編碼 --> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties>

編寫xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <filter>
    <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>

  <!--配置spring監聽器-->


  <!-- 配置spring框架的監聽器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- 指定spring配置檔案的位置 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

</web-app>

配置spring配置檔案

<?xml version="1.0" encoding="UTF-8"?><!-- @version $Id: applicationContext.xml 561608 2007-08-01 00:33:12Z vgritsenko $ -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="
                        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
                        http://www.springframework.org/schema/data/jpa
                        http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
                        http://cxf.apache.org/jaxws
                        http://cxf.apache.org/schemas/jaxws.xsd">



        <!--配置quartz定時框架-->
            <!--配置定時任務-->
            <bean id="timer" class="cn.demo.web.timer.SendWorkBill"></bean>

        <!-- 將自定義job放入MethodInvokingJobDetailFactoryBean -->
            <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                <!-- 注入自定義類 -->
                <property name="targetObject" ref="timer"></property>
                <!-- 注入自定義類的方法 -->
                <property name="targetMethod" value="sendEmail"></property>
            </bean>

        <!-- 配置觸發器  -->
            <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
                <property name="jobDetail" ref="jobDetail"></property>
                <!-- 配置什麼時間執行具體的job  每隔5秒鐘執行一次任務 cron表示式-->
                <property name="cronExpression" value="0/30 * * * * ?"></property>
            </bean>

        <!-- 配置計劃排程器容器 -->
            <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                <!-- 配置觸發器 -->
                <property name="triggers">
                    <!--可以配置多個-->
                    <list>
                        <ref bean="myTrigger"/>
                    </list>
                </property>
            </bean>




    <!--開啟註解掃描-->
        <context:component-scan base-package="cn.demo.web,cn.demo.service"/>

        <!-- 整合 spring data jpa -->
         <jpa:repositories base-package="cn.demo.dao" />


        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
           <property name="entityManagerFactory" ref="entityManagerFactory"/>
        </bean>


        <!--連線池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.129.100:1521:orcl"/>
            <property name="user" value="xiaoyang"/>
            <property name="password" value="xy123"/>
        </bean>
        <!--spring 跟 jpa整合-->

            <!--配置factory-->
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource"/>

            <!--包掃描-->
            <property name="packagesToScan" value="cn.demo.domain"/>

            <!--持久層使用hibernate框架-->
            <property name="persistenceProvider" >
                <bean class="org.hibernate.ejb.HibernatePersistence"/>
            </property>

            <property name="jpaVendorAdapter">
                <!-- 自動建表 -->
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <property name="showSql" value="true"/>
                    <property name="generateDdl" value="true"/>
                    <property name="database" value="ORACLE"/>

                    <!--其實就是資料庫方言-->
                    <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"/>
                </bean>
            </property>

            <property name="jpaDialect">
                <!--hql hqpl-->
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
            </property>

        </bean>

自定義freemark模板

<html>
<head>
    <title>工單</title>
</head>
<body>
    <table>
        <tr>
            <th>編號</th>
            <th>備註</th>
            <th>追單次數</th>
        </tr>

        <#list workBills as bill>
            <tr>
                <td>${bill.id}</td>
                <td>${bill.remark}</td>
                <td>${bill.attachbilltimes}</td>
            </tr>
        </#list>

    </table>
</body>
</html>

檔案目錄結構(WorkBill.ftl是模板)
這裡寫圖片描述

編寫定時器類,需要放在cn.demo.web.timer包下面,名字必須是
SendWorkBill,因為我們之前設定了,當然你也可以改,

public class SendWorkBill {

    @Resource
    private IWorkBillDaoService workBillDaoService;


    public void sendEmail() throws IOException, TemplateException {

        //查詢資料
        List<WorkBill> workBills = workBillDaoService.findAll();

        if(workBills != null){

            Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);

            //設定資料來源
//
            cfg.setDirectoryForTemplateLoading(new File(this.getClass().getResource("/").getPath()+"/templates"));
            //編碼
            cfg.setDefaultEncoding("UTF-8");


            // 建立一個數據模型
            Map root = new HashMap();

            root.put("workBills",workBills);

            StringWriter stringWriter = new StringWriter();

            //獲取模板
            Template template = cfg.getTemplate("WorkBill.ftl");

            //整合資料
            template.process(root, stringWriter);

            System.out.println(stringWriter.toString());
        }

    }
}

執行結果如下,
這裡寫圖片描述

只要把最後一句syso換成傳送郵箱的程式碼就ok啦,這裡提供一個郵箱工具類給大家

public class MailUtils {

    public static String activeUrl = "http://localhost:8082/bos_fore/customerAction_activeMail";

    public static void sendMail(String subject, String content, String to) {
        Properties pps = new Properties();
        InputStream email = MailUtils.class.getResourceAsStream("/email.properties");
        if (null == email) {
            System.err.println("郵箱配置檔案(email.properties)不存在!");
            return;
        }
        try {
            pps.load(email);
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        String address = pps.getProperty("address");
        String password = pps.getProperty("password");
        String smtp_host = "smtp." + address.replaceAll(".*@(.*)", "$1");

        Properties props = 
            
           

相關推薦

freemark模板框架+quartz定時框架入門學習(面向程式設計)

需求,定時查詢表資料,生成表格,傳送給員工, 相關技術 : quartz freemark Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源專案,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quar

java Spring-Boot框架學習視訊-雲盤

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。本文連結:https://blog.csdn.net/lk142500/article/details/81293235百度雲盤下載地址提取密碼:bxif 線上觀看螞蟻課堂Spring Boot 1. 簡介

400行程式碼手寫一個SpringMVC框架-咕泡學院VIP視訊下載,網盤

  400行程式碼手寫一個SpringMVC框架 https://pan.baidu.com/s/1SAKk2etjQ_1M4cNBXBjk2Q  密碼:f2zv  咕泡學院Java架構師每日錄播視訊索取加QQ群:788692365 咕泡學院Java架構師

Python機器學習教程雲全集

doc sina com gin .com p s l口 shuf www vl握換猶2n竊春8http://www.docin.com/sina_6264039129 6aq韶06壞s雷鼗6mchttp://huiyi.docin.com/sina_6263958852

python學習資料網盤分享

py和編輯器安裝教程連結連結: http://pan.baidu.com/s/1eR4vrk2 密碼:8ij2 新手開發工具包 python新手工具下載連結: http://pan.baidu.com/s/1sllYnCT 密碼:brus pycha

人工智慧,深度學習,計算機視覺,自然語言處理,機器學習網盤視訊教程

人工智慧,深度學習,計算機視覺,自然語言處理,機器學習視訊教程下載: 1. CS224D 2. NLP到Word2vec 3. Opencv3影象處理 4. Tensorflow 5. 機器學習 6. 人工智慧課程 7. 聊天機器人視訊教程 8. 自然語言處理 獲取檔案下載連結

Python入門視頻雲質量如何?

背景 最大 進入 中心 通過 原來 百度雲 百度 fff 百度雲網盤跟其他網盤不一樣的地方是:百度雲網盤是一個集群。這是一個大的百度雲,覆蓋你網絡生活的方方面面,給我們帶來了極大的便利。相信有很大一部分同學在找學習視頻的時候,都會到百度雲上找。那麽Python入門視頻百度雲

python學習------面向物件的程式設計

一 面向物件的程式設計的由來 1940年以前:面向機器 最早的程式設計都是採用機器語言來編寫的,直接使用二進位制碼來表示機器能夠識別和執行的指令和數 據。簡單來說,就是直接編寫 0 和 1 的序列來代表程式語言。例如:使用 0000 代表 載入(LOAD),0001 代表

Ajax(jquery)入門程式--------仿提示

前端介面實現: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C/

各類語言、演算法學習資料------

這是一些學習資源,裡面有Android的,iOS的,PHP的,大資料的,Java的,web前端的,C++,Python的…. 有的來源地址是在一個公眾號的群.感謝群主的分享.有的是我以前收集的.在此我也分享給大家.如果大家有好的資源,非常歡迎在此分享. http:

Axure學習登入介面原型圖

百度登入介面原型圖 最終呈現效果: 1.焦點進入user和pwd輸入框,輸入邊框和圖示變為藍色,失去焦點恢復為灰色; 2.輸入使用者名稱後,輸入框末端出現×刪除標識,清空使用者名稱,刪除標識消失; 3.輸入使用者名稱後點擊刪除標識,將使用者名稱文字全部清除。 原件準備

面向學習

最近在看設計模式,看了很久都不是很明白,於是百度了一下,找到一個網址:www.runoob.com/design-pattern/factory-pattern.html,上邊詳細的記載了Java的各種設計模式,通俗易懂

《TP5.0學習筆記---地圖封裝》

我們常常需要根據地址來獲取經緯度,根據經緯度來調取百度地圖等。 一、 根據地址獲取經緯度類的封裝 1, 獲取第三方介面 2, 編寫map類 3, 測試 1, 獲取第三方介面

Quartz定時任務框架(一) 入門案例

介紹 Quartz是一套支援時間排程的框架,官網http://www.quartz-scheduler.org/, jar 包下載,點這裡 入門案例 1. quartz.properties檔案 這個檔案不是必須建立的,如果需要建立使用,必須建立在ca

Quartz學習總結(2)——定時任務框架Quartz詳解

實現每隔1秒列印一個Hello World1.建立Maven專案,新增依賴:<dependency>      <groupId>org.quartz-scheduler</groupId>      <artifactId>quartz</artifac

定時任務框架Quartz-(一)Quartz入門與Demo搭建

一、什麼是Quartz 什麼是Quartz? Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源專案,完全由Java開發,可以用來執行定時任務,類似於java.util.Timer。但是相較於Timer, Qua

Quartz框架入門學習(一)

一.Quartz的簡單使用 Scheduler在使用之前需要例項化。一般通過SchedulerFactory來建立一個例項。有些使用者將factory的例項儲存在JNDI中,但直接初始化,然後使用該例項也許更簡單(見下面的示例)。 scheduler

任務調開源框架Quartz動態添加、修改和刪除定時任務

star play cit box sport nts str ignorecas tar 作者:Joyce-Luo Quartz 是個開源的作業調度框架,為在 Java 應用程序中進行作業調度提供了簡單卻強大的機制。Quartz框架包含了調度器監聽、

Quartz.NET開源作業調框架系列(一):快速入門step by step-轉

rand 隨機 axis 開發人員 c# returns .net開源 觸發 mis  Quartz.NET是一個被廣泛使用的開源作業調度框架 , 由於是用C#語言創建,可方便的用於winform和asp.net應用程序中。Quartz.NET提供了巨大的靈活性但又兼具

Spring+Quartz框架實現定時任務(集群,分布式)

log cor alt 放置 這一 表達 mod 建數據庫 strac 1、定時任務的必要性:定時任務在應用中的重要性不言而喻,大多是應用,特別是金融應用更是離不開定時任務,能用定時任務來處理異常訂單,完成跑批,定時活動(雙11)等。在初期應用的訪問量並不是那麽大,