WAP 构架

  • WML 是一种适用于无线互连网的标记语言。
  • WAP ( Wireless Application Protocol )是适用于无线互连网的网络协议。
  • 客户是各种基于 WAP 协议的手掌设备或者是各种模拟器。
  • WAP 网关有两个功能:对 WML 网页进行编码和解码;实现 HTTP 协议和 WAP 协议之间的转换。
  • WAP 服务器是指在 MIME 配置中设置了 WML 数据类型的 Web 服务器。
  • 为什么采用 WAP :方便、安全。

URL

  • WML 使用和 HTML 相同的引用方式。

http://www.motorola.com/great.wml

  • 在 URL 后使用片段。

http://www.motorola.com/great.wml#login

  • 相对的 URL ——基础的 URL 是当前的卡片。

<go href=”/next” />

Content Type

  • 在互联网上使用 WML 数据类型。
  • 要想使用 Web 服务器传输 WML 数据类型,就需要对 Web 服务器的 MIME 设置进行配置。
  • 需要增加以下数据类型:

wml : text/vnd.wap.wml

wmlc : application/vnd.wap.wmlc (经过编码 WML 数据类型)

wmls : text/vnd.wap.wmlscript

wbmp : image/vnd.wap.wbmp     (BMP 图象 )

其他可选的数据类型:

wmlsc : application/vnd.wap.wmlscriptc

wmlscript : text/vnd.wap.wmlscript

ws : text/vnd.wap.wmlscript

wsc : application/vnd.wap.wmlscriptc

WML 字符集

  • WML 是 XML 的子集,继承了 XML 的字符集设置。
  • WML 文档缺省的字符集是 UTF – 8 。
  • 显示中文。只要在开头使用 encoding 就可以。在 Motorola L2000www 上测试通过。

<?xml version="1.0" encoding="gb2312"?>

元素和属性

  • 元素

1 .一个完整的 WML 标记有以下两种格式:

<tag> content </tag>

<tag/>

  • 属性

    1. 可以随意地指定或添加元素的属性。
    2. 属性的格式: <tag attr=”abcd”/> 。
    3. 所有的 XML 名字都是大小写敏感的。
    4. 所有的属性值都必须用双引号或单引号括起来。

变量

  • WML 卡片中可以使用变量。
  • 描述变量的语法在 WML 中有最高的解释优先级。
  • 当空格无法表示一个变量名结束的时候,就必须使用括号将参数名括起来。
  • $$ 在 WML 中代表一个‘ $ ’符号。
  • 变量语法格式如下:

$identifier

$(identifier)

$(identifier:conversion)

  • 变量使用说明:
  1. 可以在字符串中使用。
  2. 可以在运行中更新变量的值。
  3. 变量处于设置状态( NOT NULL ),如果变量不等同于空字符串。
  4. 变量处于未设置状态( NULL ),如果变量等同于空字符串。
  • 变量替代:
  1. 变量的数值可以代入卡片中的文本。
  2. 只有文本部分可以实现替代。
  3. 任何元素和属性都不能使用变量来替代。
  4. 替代将在运行期发生。
  5. 替代将不影响变量现在的值。
  6. 替代是按照字符串替代的方式工作。
  7. 如果一个没有定义的变量要实现替代,那么该变量将被看作空字符串。
  8. 变量名是由 US-ASCII 码、下划线和数字组成,并且只能以 US-ASCII 码开头。
  9. 变量名是大小写敏感的。

$ ’符号

  • 美元符号
  1. 要想在文本中显示美元符号,必须成对使用。
  2. 一个美元符号表示变量替代。
  3. 一个简单的显示美元符号的例子:

This is a $$ character.

  • 有效性
  1. 在美元符号后面接字符串都将被认为是变量替代或者是生效。
  2. 几个无效的例子:

<!--bad variable syntax -->

Balance left is $10.00.

<!—bad placement (in the type attribute)-->

<do type=”x-$(type)” label=”$type”>

Newcontext 属性

Newcontext 等于 true 或 false ,将决定浏览是否做以下事情:

  • 删除所有在当前上下文中定义的变量。
  • 清除历史信息。
  • 重新设置所有的状态为一个缺省的状态。

<card id=”card1” title=”Mortgage Calc” newcontext=”true”>

大小写敏感

  • WML 和 XML 都是大小写敏感的语言。
  • 所有的 WML 标记和属性都是大小写敏感的。
  • 任何枚举的属性值也是大小写敏感的。

页面和卡片

  • WML 是 XML 语言的子集。
  • 一个 WML 应用是由许多页面( Deck )所组成的。一个 WML 的页面就相当于 HTML 的一页。
  • 一个 WML 页面是由文件声明和 WML 标记对组成。
  • WML 标记对中间有一个或多个卡片组成。
  • WML 就是在各个卡片之间转换和传递信息。

WML 标记对

  • WML 标记对是任何一个 WML 页面的根元素。
  • WML 标记对中可以包含一个或多个卡片,和可选的头元素。
  • WML 标记对中可以使用可选的“模板”来生成其所包含的所有卡片。

WML 例子

<wml>

<card>

<p>

<do type=”accept”>

<go href=”#card2”/>

</do>

Hello world !

This is the first card…

</p>

</card>

<card id=”card2”>

<p>

This is the second card.

Goodbye

</p>

</card>

</wml>

文件声明

  • XML 声明总是在文件的第一行。

<?xml version=”1.0”?>

  • DOCTYPE 声明。

<!DOCTYPE WML PUBLIC “-//WAPFORUM//DTD WML1.1//EN” http://www.wapforum.org/DTD/wml_1.1.xml>

事件与导航

  • 导航与事件处理:
  1. WML 包括导航和事件处理模块。
  2. WML 允许作者指定需要处理的事件。
  3. 事件可以和所需要完成的任务捆绑在一起。
  4. URL 导航就是这样的一个例子。
  5. 事件捆绑是通过几种元素声明来完成的,包括: go 、 do 和 onevent 。
  6. Do 元素比 Go 元素需要用户更多的参与。

Do 元素

  • Do 元素提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。
  • WML 提供一些预先定义的 Do 模块。
  • accept :确定(或接受)。
  • prev :返回到上次的位置。
  • help :请求帮助。
  • options :上下文敏感的选项请求。

<do type=”options” name=”do1” label=”options”>

<go href=”/options”/>

</do>

任务

  • Go 元素——当用户选中该元素时,就引导用户去 WML 中指定 URL 。

<go href=http://www.mot.com.wireless.wml>Motorola Wireless</go>

  • Prev 元素——当用户选中该元素时,就引导用户去上次用户访问过的 URL 。

<do type=”options” name=”do1” label=”default”>

</prev>

</do>

  • Refresh 元素——当用户选中该元素时,变量值将被重新设置。

<do type=”refresh”>

<refresh>

<setvar name=”firstname” value=”david”>

<setvar name=”lastname” value=”smith”>

<setvar name=”age” value=”29”>

</refresh>

</do>

Setvar 元素

  • 指定在当前的上下文中的变量的值,从侧面影响正在运行的任务。
  • 必须使用 name 属性指定变量的名字。
  • 必须使用 value 属性指定所需要赋给变量的值。

Select 元素和 Option 元素

  • Select 元素和 Option 元素是用来在 WML 中形成选择任务。
  • Option 元素可以指定在用户作出选择后的目标地址。

<select name=”type”>

<option value=”boxed” onpick=”#selectBoxed”>boxed</option>

<option value=”arranged” onpick=”selectArranged”>arranged</option>

</select>

Input 元素

  • Input 元素是用来收集用户的输入。
  1. name 属性是用来指定变量的名字。
  2. value 属性可以指定变量缺省的值。

<input name=”firstname” type=”text” value=”Robert” format=”*A” maxlength=”32”/>

<input type=”text” name=”age” format=”*N”/>

<input type=”text” name=”address” format=”*M”/>

<input type=”password” name=”password”/>

  1. type 属性可以用来指定按密码输入模式进行输入,否则就是普通的文本输入模式。
  2. format 属性用来指定输入的内容是数字( N )、字母、字母和数字,输入长度,大写或者小写等等。

Text 元素

  • 段落: <p></p> (自动换行模式切换)
  • 空白:空格、制表符和换行都将被显示为空白。
  • 重点: em (强调), strong (特别强调), i (斜体), u (下划线), big (预定义的大字体), small (预定义的小字体)。
  • br 元素:建立新的一行。

<p>

<b>

Welcome to…

</b>

<strong><i>

Mobile

</i></strong>

<u>

ADK

</u>

</p>

超级链接

  • a 元素和 anchor 元素被用来创建一个超级链接。选中该元素的时候,用户将被带入到链接的地址(可以是另外的页面或者是同一页面下的不同卡片)。
  • 也可以不使用 a 元素和 anchor 元素,而采用 go 元素中的 href 属性来创建一个超级链接。

1 . <anchor>follow me

<go href=”destination”/>

</anchor>

2 . <a href=”destination”>follow me</a>

3 . <do type=”accept” label=”ACCEPT”>

<go href=”http://www.abc.com/yourcode” method=”post”>

<postfield name=”w” value=”12”>

<postfield name=”password” value=”your password”/>

</go>

</do>

Timer 元素

  • Timer 可以用来延时显示页面或卡片,或在页面和卡片间实现切换以取得动画效果。
  • 下面的例子就是在显示“ Hello World ”五秒钟后,用户将被自动引导至 “/next” 所指定的位置:

<wml>

<card ontimer=”/next”>

<timer value=”50”/>

<p>

Hello World !

</p>

</card>

</wml>

注释

  • 简单的注释(单行或多行,注释中没有 WML 标记)。

<!—Put simple comment here -->

  • 使用 CDATA 标记来实现带有 WML 标记的注释。

<![CDATA[lot of stuff here <b>bold text</b>…

<table column=”2”>…</table> still lot more

]]>

Template 元素

  • Template 元素声明一个在页面中所有卡片都可以使用的事件处理模块。
  1. 模块中的事件处理将自动应用于同一页面中的所有卡片。
  2. 某个卡片可以通过定义同名的事件处理来替代模块中的事件处理。

<wml>

<template>

<do type=”options” name=”do1” label=”default”>

<prev/>

</do>

</template>

<card id=”first”>

<!— 该卡片将自动套用模块中定义的事件处理过程 -->

</card>

<card id=”second”>

<!— 该卡片将使用空操作( noop )来替代模块中定义的事件处理过程,那么就等价于该卡片中没有该事件处理过程 —>

<do type=”options” name=”do1”>

<noop/>

</do>

</card>

<card id=”third”>

<!— 该卡片使用同名的事件处理替代模块中提供的事件处理 —>

<do type=”options” name=”do1” label=”options>

<go href=”/options”/>

</do>

</card>

</wml>

Table 元素

  • Table 元素是用来创建能容纳文本和图片的表格。
  1. align 属性是用来指定对齐的方式( ”L” 是左对齐, ”C” 是对中, ”R” 是右对齐。缺省的对齐方式是从左到右的左对齐方式)。

<table columns=”2”>

<tr><td>One</td><td>Two</td></tr>

<tr><td>1</td><td>2</td></tr>

<tr><td>BA</td><td>B</td></tr>

</table>

  1. tr 元素用来指定表格的行。
  2. td 元素用来指定表格的列。

<table columns=”2”>

<tr><td>One</td><td>Two</td></tr>

<tr><td>1</td><td>2</td></tr>

<tr><td>BA</td><td>B</td></tr>

</table>

图标

  • alt 属性指定可选的文本,当设备不能显示图象的时候。
  • src 属性指定图象的来源。
  • align 属性指定图象与相临的文本对齐。

<p>

<img alt=”MOTOROLA” src=”http://ni-icsd/genevaw/logo.gif”/><br/>

Telecom 99

</p>

Postfield 元素

  • 指定向原始服务器指定提交时候的参数名字和参数数值。
  1. Login 和 Password 效验是最常用提交。
  2. 一个使用 go 元素的提交例子。

<go href=”http://193.120.145.194:80/wap” methos=”post”>

<postfield name=”LI” value=”$LI”/>

<postfiels name=”PV” value=”$PV”/>

</go>

事件

  • ontimer 事件:该事件发生在计时器过期的时候。
  • onenterforward 事件:该事件发生在用户选中一个有效的 URL 之后,在正式引导用户去该 URL 地址之前。
  • onenterbackward 事件:该时间发生在用户选中一个有效的 Prev 操作之后,在正式引导用户之前。
  • onpick 事件:该事件发生在用户选中某个选项。

<card>

<onevent type=”onenterforward”>

<go href=”/url_to_check_security”/>

</onevent>

<p>

Help

</p>

</card>

<card onenterforward=”/url_to_check_security”/>

<p>

Hello

</p>

</card>

WML 核心数据类型

  • 长度
  1. 可以用整数指定画布(屏幕、纸张)的像素大小,或者用百分数表示占用的长度或宽度。
  2. “ 50 ” =50 个像素。
  3. “ 50% ” = 占用一半的位置。
  4. 只能用在属性值中。

ID Class 属性

  • 所有的 WML 元素有两个核心属性: id 和 class 。
  • 这两个属性被用于服务器方的信息传输。
  • id 提供某个元素在页面中唯一的名字。
  • class 接收元素一个更多的 class 定义。
  • 多个元素可以使用同一个 class 定义。
  • class 的名字是大小写敏感的。
  • 元素也可以作为 class 中的一个部分。

WML 编程指导

  • 尽量是用户的操作简单、友好。
  1. 建立一个操作流程图。
  2. 定义每个卡片的操作。
  3. 保持每个卡片小而且简单。
  4. 尽量减少按键的次数。
  5. 不要使用 WML 所有的属性(各个厂家对 WML 兼容情况是不同的)。

创建一个新的 WML 文件

<?xml version=”1.0”?>

<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”

“http://www.wapforum.org/DTD/WML_1.1.xml”>

<wml>

<card id=”card_name” title=”title_name”>

<!—write your code here-->

</card>

</wml>

修改卡片

  • 根据自己的需要改变卡片的 id 和 title 。
  • 增加卡片的内容。

<?xml version=”1.0”?>

<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”

“http://www.wapforum.org/DTD/wml_1.1.xml”>

<wml>

<card id=”welcome” title=”welcome”>

<p>

MADK WML DEMO.

</p>

</card>

</wml>

增加动作

<?xml version=”1.0”?>

<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1 //EN”

“http://www.wapforum.org/DTD/wml_1.1.xml”>

<wml>

<card id=”welcome” title=”welcome”>

<do type=”accept”>

                            <go href=”#greeting”/>

                     </do>

              <p>

MADK WML DEMO.

</p>

</card>

              <card id=”greeting”>

                     <p>

                            Welcome to the wireless bookshop.

                     </p>

              </card>

</wml>

建立一个动画消息

<card id=”greeting” ontimer=”#card2” title=”Toolkit Demo”>

<timer value=”30”/>

<p>

<big>

Welcome to…

</big>

</p>

</card>

<card id=”card2” ontimer=”#card3” title=”Toolkit Demo”>

<timer value=”30”/>

<p>

<b>

the Wonderful

</b>

<u>

Wireless

</u>

</p>

</card>

<card id=”card3” title=”Toolkit Demo”>

<p>

<big><i>

Bookstore.

</i></big>

</p>

</card>

建立选择列表

<card id=”card3” title=”Toolkit Demo”>

<do type=”accept”>

<go href=”#collectBookType”/>

</do>

<p>

<b><i>

BookStore.

</i></b>

</p>

</card>

<card id=”collectBookType”>

<p>

Science or novel:

<select name=”type”>

<option value=”science” onpick=”#science”>Science</option>

<option value=”novel” onpick=”#novel”>novel</option>

</select>

</p>

</card>

更多的选择

<card id=”science”>

<p>

select science title:

<select name=”productID”>

<option value=”universe” onpick=”#price”>The Universe</option>

<option value=”space” onpick=”#price”>Facts About Space</option>

<option value=”time” onpick=”#price”>Time Machine</option>

</select>

</p>

</card>

<card id=”novel”>

<p>

select novel title:

<select name=”title”>

<option value=”speed” onpick=”#price”>Speed</option>

<option value=”terminator” onpick=”#price”>Terminator</option>

<option value=”ghost” onpick=”#price”>Ghost</option>

</select>

</p>

</card>

Scrollbar Setvar

<card id=”price”>

<do type=”accept”>

<go href=”#copies>

<setvar name=”price” value=”30.0”/>

<setvar name=”discount” value=”0.00”/>

</go>

</do>

<p>

Click accept to find the

Price and enter number of copies you need:

</p>

</card>

使用 Input

  • 使用正确的格式。
  • 选择一个合适的标题。
  • 限制所输入内容的最大长度。

<card id=”copies”>

<do type=”accept”>

<go href=”#collectName”/>

</do>

<p>

select number of copies:

<input name=”uint” title=”No Of Copies’ format=”*N” maxlength=”9”/>

</p>

</card>

  • 收集名字

<card id=”collectName”>

<do type=”accept”>

<go href=”#collectAddress”/>

</do>

<p>

name:

<input name=”fullName” title=”Full Name” format=”*A” maxlength=”9”/>

</p>

</card>

  • 收集地址

<card id=”collectAddress>

<do type=”accept”>

<go href=”#cardType”>

<setvar name=”ship” value=”4.0”/>

</go>

</do>

<p>

address:

<input name=”address” title=”Address” format=”*M” maxlength=”9”/>

</p>
</card>

选择信用卡类型

<card id=”cardType”>

<p>

what kind of credit card?

<select name=”creditCardType”>

<option value=”visa” onpick=”#cardNo”>visa</option>

<option value=”mastercard” onpick=”#cardNo”>mastercard</option>

<option value=”discover” onpick=”#cardNo”>dicover</option>

</select>

</p>

</card>

输入信用卡号码

<card id=”cardNo”>

<do type=”accept”>

<go href=”#cardDate”/>

</do>

<p>

card number

<input name=”cardNumber” title=”Card Number” format=”*N” maxlength=”16”/>

</p>

</card>

信用卡过期日期

<card id=”cardDate”>

<do type=”accept”>

<go href=”#confirmation”/>

</do>

<p>

expiration date

<input name=”creditCardExp” title=”Expiration Date” format=”*N” maxlength=”8”/>

</p>

</card>

确认

<card id=”confirmation”>

<p>

Each is $$ $(price), you ordered $(unint) copies,

Shipping is

$(ship),andtotalis

64,

Thank you ! Bye Bye !

</p>

</card>

复合卡片的应用

<card id=”collectAddress”>

<do tyoe=”accept”>

                     <go href=”card.wml#cardType”>

<setvar name=”ship” value=”4.0”/>

                     </go>

</do>

<p>

address:

<input name=”address” title=”Address” format=”*M”/>

</p>

</card>

复合站点的应用

<card id=”collectAddress”>

<do type=”accept”>

       <go href=”http://www.abc.com/wml/card.wml#cardType”>

<setvar name=”ship” value=”4.0”/>

              </go>

</do>

<p>

address:

<input name=”address” title=”Address” format=”*M”/>

</p>

</card>

调用 WMLScript 函数

<card id=”confirmation”>

<do type=”accept” label=”Calculate”>

                     <go href=”calculateTotal.wmls#calculateTotal($(price),$(unit),$(ship))”/>

</do>

<p>

Each is $$ $(price),

You ordered $(unit) copies,

Shipping is $$ $(ship), and

Total is $$ $(total)

</p>

</card>

WMLScript 例子

//wml script used by book store application

extern function calculateTotal(a,b,c)

{

//a: unit price

//b: number of units

//c: shipping charges

var total=a*b+c;

WMLBrowser.setVar(“total”,total);

WMLBrowser.refresh();

}

WBMP 格式

经过仔细地研究,发现 WBMP的格式如下(例如Width=16,Height=15的一个白色的画面):
0x00,0x00,0x10,0x0f,0xff,0xff......,0xff。
头两个字节为0,现在还不清楚它的用途。
第三个字节为Width,第四个字节为Height,后面的是数据。
数据有以下特点:用一个Bit对应一个Pixel。0表示黑色,1表示白色。高位开始到底位结束对应着从左到右,数据从低地址到高地址对应着从上到下。一个字节可以表示8个像素,不足的部分可以用0补齐。
下面是一张太阳的图片,仅供参考。
0x00,0x00,//Unknown or reserved,maybe the mark for the wbmp
0x14,//Width
0x14,//Height
//Pixel data
0xfa,0xf5,0xf0,0xfb,0x6d,0xf0,0xfb,0xad,0xf0,0xfb,
0xdd,0x80,0x1b,0xfc,0x70,0xe7,0x1f,0xe0,0x7c,0xe7,
0xd0,0xbb,0xfb,0xd0,0xdb,0xfb,0xb0,0xd7,0xfd,0x70,
0xb7,0xfd,0xb0,0x77,0xf5,0xd0,0xfb,0xeb,0xe0,0xfb,
0xdb,0xf0,0x1c,0xe7,0x80,0xc7,0x1c,0x70,0xf7,0xfd,
0xf0,0xf7,0xbf,0xf0,0xf6,0x5d,0xf0,0xf5,0xed,0xf0

因此在知道了WBMP的格式后,就可以在WAP移动设备上做出各种图形,甚至是绘图。本来WAP终端设备一般是不支持图形模式,但是可以在服务端将所有的图形按照WBMP的格式准备好再送往WAP终端设备,那么看起来就好象在WAP终端设备上直接绘图。大家可以去 http://www.infoislive.com/demo 看看。

wap,WML语言与编程相关推荐

  1. WML语言基础-WML语言基础(WAP建站)

    WML语言基础-WML语言基础(WAP建站)一 作者:青燕    来源:青燕网    更新时间:2007-8-19 19:22:22    浏览次数:255 完成wap服务器的建立和wap浏览器的安装 ...

  2. WML语言基础(WAP建站)四

    WML Script语法基础 WML Script是属于无限应用协议WAP应用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版.WML Script1.1是在 ...

  3. WML语言基础(WAP建站)四(转)

    WML Script语法基础 WML Script是属于无限应用协议WAP应用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版.WML Script1.1是在 ...

  4. WML语言基础(WAP建站)一

    完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的 ...

  5. WML语言基础(WAP建站)一(转)

    完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的 ...

  6. WAP建站WML语言语法基础教程

    完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的 ...

  7. WAP网站开发二-WML语言基础(转)

    http://bbs.lz8.net/dispbbs.asp?boardID=66&ID=4480&page=1 完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用W ...

  8. WML语言基础(WAP建站)五

    WMLScript脚本程序设计 作为一种编辑语言,WMLScript提供了强大的函数.语句和库功能,以及外部编辑.访问控制等支持,同时对程序运行中可能产生的错误给出了检测手段和具体的解决办法.这些内容 ...

  9. Wap wml开发中需要注意的地方

    最近wap的需求挺多.很多细节搞的人比较郁闷. 比如遇到的一个,默认的wap总是会保存输入框上次输入的值,除非你关闭浏览器重新访问. 但是有时候我们需要他不保存. 找了半天才发现,只要在  <c ...

最新文章

  1. 面试官:Java中 serialVersionUID 的作用是什么?举个例子说明
  2. oracle 2018 版本,Oracle 最新版本变化 转帖
  3. 聚焦国际农民丰收节贸易会-张桃林:农业谋定开放新格局
  4. python3绘图_python3绘图示例2(基于matplotlib:柱状图、分布图、三角图等)
  5. PHPMailer目录和命名空间没有错,但是始终class not found,的原因和解决方法
  6. C#实现在Form上截取消息的两种方法
  7. 财务有必要学python吗-工作三年却被实习生抢了饭碗,学会Python到底有多吃香?...
  8. Vue将echarts数据导出成excel文件
  9. scala函数进阶篇
  10. 说明 RISC 和 CISC 指令系统的区别?
  11. 无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解
  12. matlab函数power,Matlab中Powergui介绍.pdf
  13. UVM——TLM通信机制(port、export、imp + analysis_port)
  14. 个人记账软件(团队成员介绍和软件介绍)
  15. JavaScript数据结构与算法 - 树
  16. esp32的uart串口发送16进制通信指令调用实例
  17. 美国顶级安全公司遭国家黑客攻击,网络武器库失窃
  18. Maven导入com.google.common.collect jar包
  19. nanomsg(4) :pub/sub 模式
  20. linux下weblogic启动报错:BEA-149205

热门文章

  1. wps里表格中间的字怎么置顶_怎么把wps文字放在最中间
  2. CSDN文章自动展开全文无需登录插件(仅限Chrome)!
  3. UNITY 5.2.1 发行说明 中文版
  4. 基于BIM轻量化的智能建造OA管理系统
  5. 前端url编码解码方法
  6. php 跳转邮箱,实例详解JS简单实现点击跳转登陆邮箱功能的方法
  7. java从输入中获取经纬度_java从百度后台接口获取经纬度
  8. ie11与html不兼容,IE11浏览器网页不兼容怎么办?IE 11浏览器网页不兼容解决方法...
  9. [转]天文方法计算二十四节气
  10. 根轨迹分析 matlab,MATLAB的根轨迹分析