[20170909]为什么是12秒.txt

[20170909]为什么是12秒.txt

--//在开发程序时我一般会强调开发尽量不要写一些自定义函数,往往可能导致CPU忙。
--//例子很像这样:

CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

--//这样定义实际上非常不好,如果执行如下,相当于每行都会调用函数get_dept,形成不必要的递归.
--//本来应该使用表连接解决的,使用函数,有点像标量子查询.
--//当时我建议他好好看一下我写的blog,链接如下:
--// http://blog.itpub.net/267265/viewspace-2138042/ => [20170426]为什么是4秒.txt
--// 结果对方发现在12c for windows下,测试结果与我的测试不符,我重新测试看看.

1.环境:
SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

2.建立函数:
CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

set timing on
set autot traceonly;

SCOTT@test01p> select empno, ename, deptno, get_dept(deptno) c20 from emp;
14 rows selected.
Elapsed: 00:00:14.02
--//执行多次稳定递归的数量.需要14秒完成.
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   182 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   182 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
Statistics
----------------------------------------------------------
         14  recursive calls
          0  db block gets
         36  consistent gets
          0  physical reads
          0  redo size
       1130  bytes sent via SQL*Net to client
        544  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed
--//可以发现递归执行14次(如果不是,执行多次最后会稳定在14次)

--//换成标量子查询:
SCOTT@test01p> select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;
14 rows selected.
Elapsed: 00:00:12.04
Execution Plan
----------------------------------------------------------
Plan hash value: 1340320406
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   182 |     9   (0)| 00:00:01 |
|   1 |  FAST DUAL        |      |     1 |       |     2   (0)| 00:00:01 |
|   2 |  TABLE ACCESS FULL| EMP  |    14 |   182 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
Statistics
----------------------------------------------------------
         12  recursive calls
          0  db block gets
         32  consistent gets
          0  physical reads
          0  redo size
       1130  bytes sent via SQL*Net to client
        544  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed
--//执行时间是12秒,递归12次.与我在11g下测试不同,11g下测试3秒.

set autot off
alter session set statistics_level=all;

SCOTT@test01p> show array
arraysize 200

SCOTT@test01p> select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;
...

SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  apagxtf1p2puy, child number 1
-------------------------------------
select empno, ename, deptno, (select get_dept(deptno) from dual )c20
from emp
Plan hash value: 1340320406
--------------------------------------------------------------------------------------------------------------------
| Id  | Operation         | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
--------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |      1 |        |       |     9 (100)|          |     14 |00:00:00.01 |       8 |
|   1 |  FAST DUAL        |      |     12 |      1 |       |     2   (0)| 00:00:01 |     12 |00:00:00.01 |       0 |
|   2 |  TABLE ACCESS FULL| EMP  |      1 |     14 |   182 |     3   (0)| 00:00:01 |     14 |00:00:00.01 |       8 |
--------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$2 / DUAL@SEL$2
   2 - SEL$1 / EMP@SEL$1
21 rows selected.

--//从执行计划也可以发现fast dual执行了12次.为什么?不好理解?要么3次,要么14次?什么也不应该12次.

3.分析:
--//使用10046跟踪看看
@ 10046on 12
select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;
@ 10046off

--//检查跟踪文件.
*** 2017-09-09 21:20:16.366
WAIT #181607424: nam='PL/SQL lock timer' ela= 999265 duration=0 p2=0 p3=0 obj#=665 tim=5412716150
=====================
PARSING IN CURSOR #181597968 len=42 dep=1 uid=109 oct=3 lid=109 tim=5412716418 hv=328320763 ad='7ff13e15ba0' sqlid='56r5sd49t3jrv'
SELECT DNAME FROM DEPT WHERE DEPTNO = :B1
END OF STMT
BINDS #181597968:
Bind#0
  oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00
  oacflg=03 fl2=1206001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=212a7fb0  bln=22  avl=02  flg=05
  value=20
EXEC #181597968:c=0,e=8900,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=2852011669,tim=5412725274
FETCH #181597968:c=0,e=28,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=1,plh=2852011669,tim=5412725381
STAT #181597968 id=1 cnt=1 pid=0 pos=1 obj=92285 op='TABLE ACCESS BY INDEX ROWID DEPT (cr=2 pr=0 pw=0 time=30 us cost=1 size=13 card=1)'
STAT #181597968 id=2 cnt=1 pid=1 pos=1 obj=92286 op='INDEX UNIQUE SCAN PK_DEPT (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)'
CLOSE #181597968:c=0,e=3,dep=1,type=3,tim=5412735882
FETCH #181607424:c=0,e=1019217,p=0,cr=7,cu=0,mis=0,r=1,dep=0,og=1,plh=1340320406,tim=5412735943
WAIT #181607424: nam='SQL*Net message from client' ela= 1165 driver id=1413697536 #bytes=1 p3=0 obj#=665 tim=5412737203
...

d:\tools\rlwrap>grep "BINDS #181597968:" D:\app\oracle\diag\rdbms\test\test\trace\test_ora_6436.trc |wc
     12      24     216

--//确实12次.

d:\tools\rlwrap> grep -A5 "BINDS #181597968:" D:\app\oracle\diag\rdbms\test\test\trace\test_ora_6436.trc | grep "^  value="
  value=20
  value=30
  value=20
  value=30
  value=10
  value=20
  value=10
  value=30
  value=20
  value=30
  value=20
  value=10

SCOTT@test01p> select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;
     EMPNO ENAME          DEPTNO C20
---------- ---------- ---------- --------------------
      7369 SMITH              20 RESEARCH
      7499 ALLEN              30 SALES
      7521 WARD               30 SALES
      7566 JONES              20 RESEARCH
      7654 MARTIN             30 SALES
      7698 BLAKE              30 SALES
      7782 CLARK              10 ACCOUNTING
      7788 SCOTT              20 RESEARCH
      7839 KING               10 ACCOUNTING
      7844 TURNER             30 SALES
      7876 ADAMS              20 RESEARCH
      7900 JAMES              30 SALES
      7902 FORD               20 RESEARCH
      7934 MILLER             10 ACCOUNTING
14 rows selected.

--//对比你可以发现,如果邻近的值一样,函数调用仅仅1次.

SCOTT@test01p> select * from (select empno, ename, deptno, lag(deptno,1) over(order by rownum) next from emp) where deptno=next;
     EMPNO ENAME          DEPTNO       NEXT
---------- ---------- ---------- ----------
      7521 WARD               30         30
      7698 BLAKE              30         30

--//这样减少2次调用,说明12c与11g在标量子查询上处理与原来不同.不知道是什么回事,上班再仔细对比看看(与11g).
--//或者是OS版本的问题....
--//一个简单的验证,建立一个按照deptno排序的表.
create table empx as select * from emp order by deptno;

SCOTT@test01p> select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from empx;
     EMPNO ENAME          DEPTNO C20
---------- ---------- ---------- --------------------
      7782 CLARK              10 ACCOUNTING
      ...
      7654 MARTIN             30 SALES
14 rows selected.
Elapsed: 00:00:03.03

--//现在3秒...如果这样执行:

select t.* ,(select get_dept(t.deptno) from dual ) c20 from ( select empno, ename, deptno  from emp order by deptno) t;
...
Elapsed: 00:00:12.00

--//竟然也是12秒.不过看执行计划马上明白:
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  248fpg2995yz8, child number 0
-------------------------------------
select t.* ,(select get_dept(t.deptno) from dual ) c20 from ( select
empno, ename, deptno  from emp order by deptno) t
Plan hash value: 3996307794
------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        |       |     9 (100)|          |     14 |00:00:12.00 |      31 |       |       |          |
|   1 |  FAST DUAL         |      |     12 |      1 |       |     2   (0)| 00:00:01 |     12 |00:00:00.01 |       0 |       |       |          |
|   2 |  SORT ORDER BY     |      |      1 |     14 |   182 |     9   (0)| 00:00:01 |     14 |00:00:12.00 |      31 |  2048 |  2048 | 2048  (0)|
|   3 |   TABLE ACCESS FULL| EMP  |      1 |     14 |   182 |     3   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |       |       |          |
------------------------------------------------------------------------------------------------------------------------------------------------
--//可以发现 SORT ORDER BY 消耗12秒.也就是在排序前就进行递归调用函数了.
--//对比前面的执行计划,再次发现奇怪问题,看不出前面的执行计划12秒消耗在那里?

--//使用提示MATERIALIZE改写如下:

SCOTT@test01p> with t as ( select /*+MATERIALIZE */ empno, ename, deptno  from emp order by deptno)  select t.*,(select get_dept(t.deptno) from dual ) c20 from t;
     EMPNO ENAME          DEPTNO C20
---------- ---------- ---------- --------------------
      7782 CLARK              10 ACCOUNTING
      7839 KING               10 ACCOUNTING
      ..
      7654 MARTIN             30 SALES
14 rows selected.
Elapsed: 00:00:03.02

SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  fwvgq6403j0nx, child number 0
-------------------------------------
with t as ( select /*+MATERIALIZE */ empno, ename, deptno  from emp
order by deptno)  select t.*,(select get_dept(t.deptno) from dual ) c20
from t
Plan hash value: 2014637640
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                  | Name                       | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  | Writes |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT           |                            |      1 |        |       |    11 (100)|          |     14 |00:00:00.01 |      21 |      1 |      1 |       |       |          |
|   1 |  FAST DUAL                 |                            |      3 |      1 |       |     2   (0)| 00:00:01 |      3 |00:00:00.01 |       0 |      0 |      0 |       |       |          |
|   2 |  TEMP TABLE TRANSFORMATION |                            |      1 |        |       |            |          |     14 |00:00:00.01 |      21 |      1 |      1 |       |       |          |
|   3 |   LOAD AS SELECT           |                            |      1 |        |       |            |          |      0 |00:00:00.01 |      11 |      0 |      1 |  1036K|  1036K|          |
|   4 |    SORT ORDER BY           |                            |      1 |     14 |   182 |     3   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |      0 |      0 |  2048 |  2048 | 2048  (0)|
|   5 |     TABLE ACCESS FULL      | EMP                        |      1 |     14 |   182 |     3   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |      0 |      0 |       |       |          |
|   6 |   VIEW                     |                            |      1 |     14 |   322 |     2   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |      1 |      0 |       |       |          |
|   7 |    TABLE ACCESS FULL       | SYS_TEMP_0FD9D660E_18A8CC5 |      1 |     14 |   182 |     2   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |      1 |      0 |       |       |          |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

4.继续测试使用 DETERMINISTIC Functions:
--//一般如果在在某个函数定义索引,需要DETERMINISTIC,表示返回结果固定。其实即使不固定,也可以这样定义。
CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
   DETERMINISTIC
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

SCOTT@test01p> select empno, ename, deptno, get_dept(deptno) c20  from emp;
...
14 rows selected.
Elapsed: 00:00:14.01
--//奇怪! 又回到14秒,而在11g下这样的测试是4秒(注意设置array=200的情况,如果太小,时间会变化).

5.最后补充测试RESULT CACHE的情况:

CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
   RESULT_CACHE
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

SCOTT@test01p> select empno, ename, deptno, get_dept(deptno) c20  from emp;
14 rows selected.
Elapsed: 00:00:03.13

SCOTT@test01p> select empno, ename, deptno, get_dept(deptno) c20  from emp;
14 rows selected.
Elapsed: 00:00:00.00

--//第1次执行3秒,第2次执行0秒.修改如下结果一样.
CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
   RESULT_CACHE
   DETERMINISTIC
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

总结:
--//不知道是否是OS版本的问题,有机会安装12c在linux下重复测试看看.
--//看来测试环境该转向12c了....那位有12c for linux的版本测试看看...
--//补充测试11g的情况:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> GRANT EXECUTE ON SYS.dbms_lock TO SCOTT;
Grant succeeded.

CREATE OR REPLACE FUNCTION get_dept (p_deptno dept.deptno%TYPE)
   RETURN dept.dname%TYPE
IS
   l_dname   dept.dname%TYPE;
BEGIN
   DBMS_LOCK.sleep (1);

   SELECT dname
     INTO l_dname
     FROM dept
    WHERE deptno = p_deptno;

   RETURN l_dname;
END;
/

set timing on
set autot traceonly;
select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;

SCOTT@book> select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;
14 rows selected.
Elapsed: 00:00:03.01
Execution Plan
----------------------------------------------------------
Plan hash value: 1340320406
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   182 |     3   (0)| 00:00:01 |
|   1 |  FAST DUAL        |      |     1 |       |     2   (0)| 00:00:01 |
|   2 |  TABLE ACCESS FULL| EMP  |    14 |   182 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
Statistics
----------------------------------------------------------
          3  recursive calls
          0  db block gets
         13  consistent gets
          0  physical reads
          0  redo size
       1114  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed

--//执行多次,基本稳定在3个递归调用.

set autot off
alter session set statistics_level=all;
select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp;

SCOTT@book> @ &r/dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  apagxtf1p2puy, child number 1
-------------------------------------
select empno, ename, deptno, (select get_dept(deptno) from dual )c20 from emp
Plan hash value: 1340320406
--------------------------------------------------------------------------------------------------------------------
| Id  | Operation         | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
--------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |      1 |        |       |     3 (100)|          |     14 |00:00:00.01 |       7 |
|   1 |  FAST DUAL        |      |      3 |      1 |       |     2   (0)| 00:00:01 |      3 |00:00:00.01 |       0 |
|   2 |  TABLE ACCESS FULL| EMP  |      1 |     14 |   182 |     3   (0)| 00:00:01 |     14 |00:00:00.01 |       7 |
--------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$2 / DUAL@SEL$2
   2 - SEL$1 / EMP@SEL$1
21 rows selected.

--//Id=2.starts=3次,也验证函数调用3次.
--//不知道为什么,也许12.2.0.N版本跟11g一样,没有这个oracle版本等以后再测试吧....

时间: 2024-10-23 18:23:35

[20170909]为什么是12秒.txt的相关文章

求助. 想定义一个时间变量,EventTime,设其初值为0:12:383,即0分12秒383毫秒,怎么定义??

问题描述 求助.想定义一个时间变量,EventTime,设其初值为0:12:383,即0分12秒383毫秒,怎么定义?? 解决方案 本帖最后由 u010362303 于 2014-01-09 22:47:55 编辑解决方案二:定义.....解决方案三: 解决方案四:该回复于2014-01-09 23:10:27被版主删除解决方案五:这不是时间(DateTime),是时间间隔(TimeSpan).用TimeSpan类定义.解决方案六:TimeSpansp=TimeSpan.FromMillisec

5万台小米平板3分12秒内售罄

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 [TechWeb报道]小米习惯性的把每周二作为抢购日,在这一天许多消费者都会等待着中午12点的到来,在今天小米官网提供了5万台小米平板.2.3万台小米电视2以及30万台红米系列手机供用户抢购. 可想而知的是这次肯定又是疯狂售罄的节奏,其中5万台小米平板在3分12秒内售罄,这款1499元极具性价比的平板电脑还是很受欢迎的,Tegra K1处理器

比拼刘翔12秒87 iPhone跑酷游戏推荐

比拼刘翔12秒8712秒87!美国时间6月2日下午,刘翔在钻石联赛尤金站的比赛中,以12秒87的成绩夺得了冠军.这一成绩也追平了110米栏罗伯斯创造的记录.遗憾的是,赛时风速为顺风2.4米,超过了国际田联规定的顺风2米每秒的风速限制,所以这个纪录并不会被田联正式承认.追平世界纪录的成绩也让很多人更加期待刘翔在不久之后 伦敦奥运会的表现,会不会夺得冠军,甚至打破世界纪录都成为了瞩目点.除此之外,这样的表现也让很多朋友热血沸腾.如果如此的话,不妨拿起手中的iPhone下载几款跑酷类游戏,来玩儿玩儿.

[20170426]为什么是4秒.txt

[20170426]为什么是4秒.txt --//在开发程序时我一般会强调开发尽量不要写一些自定义函数,往往可能导致CPU忙.今天测试遇到一个问题: --//原始的测试来之nimishgarg.blogspot.com/2016/03/avoiding-unnecessary-function-calls-to.html --//先重复测试. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        B

After Effects实战:打造12秒网站广告条

本文主要介绍一个比较典型的网络广告条动画(banner)设计的流程. 首先看动画的效果. 效果图 一. 任务描述: 对方提供了一个他们已有的平面文件(.PSD格式),要求在不改变他们平面广告风格的基础上做动画设计,时长大约十秒即可.规格是按照网站的要求:638 x83 px(对于他们的"设计"和"创意"我不做任何评价,这都是客户已经定好的,在这个设计过程中,我只考虑motion design的问题) 一般来说,我认为在接到设计任务之后,首先应该对设计任务进行分析--

[20161031]rman备份与数据文件变化2.txt

[20161031]rman备份与数据文件变化2.txt --想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------

选择苹果12英寸Macbook的10大理由

  新的MacBook推出后使得苹果潜在用户更加纠结了,原本很多人是在等待MacBook Air更新,结果没想到更新了MacBook的序列,如此一来形成了MacBook.MacBook Air和MacBook Pro三大序列并存的局面,使得很多人都患上了选择恐惧症,论坛里更是有很多人在MacBook和MacBook Air之间陷入了无休止的辩论当中,在深入使用了全新MacBook一段时间之后,来说说我的感受吧. 首先,这不是一篇MacBook和MacBook Air的对比评测文章,因为关注后者的

移动应用周刊:30秒名片秀、流利说、秀美甲、美拍等

听说交通台,最实用的覆盖全国交通信息的http://www.aliyun.com/zixun/aggregation/26976.html">网络电台.实时路况全掌握,广播音乐尽分享.碎片空间旗下明星产品-听说(TINGSHUO),是为广大交通参与者设计开发的一套基于移动终端运行的客户端软件,是集在线广播.在线音乐.资讯互动.路况播报.车主助理于一体的媒体服务平台. 主要功能:听音媒体–最适合路上听的旋律,人性化的精选分类,电台.音乐.评书.相声.小说,更多的选择,体贴您的耳朵.行车服务–

采用不同技术平台CDMA2000手机网速最高差12倍

作 者:CWW 在中国电信的立体营销攻势下,消费市场对天翼3G互联网手机充满了期待.中外手机品牌纷纷 发力,争相推出了多款最新CDMA2000制式的3G手机,力图博得市场先机. 面对3G手机市场的火热行情,近日有专家提醒,在选购3G手机时,要留意所采用的技术平台,不同的平台的3G手机在网络带宽上有巨大的差距.如不同的CDMA2000EVDO3G手机采用不同的技术平台,网速最高竟相差12倍. EV-DORev.A平台手机优势明显 据业内专家介绍,目前CDMA2000制式3G手机有两大阵营,一种是采