oracle 11g 之 result cache

今天是2013-10-12,打算最近时间研究一下shared pool的相关原理以及awr报告分析。今天学习一下在oracle 11g shared pool中新增的一个cache 那就是result cache。

从上图可以看出在oracle 11g 的shared pool中存有对sql进行存储、存储sql执行计划、sql解析树等信息的library cache可以通过查看v$librarycahe视图了解其分配情况,以及row CACHE(data dictionary cache)可以查看v$rowcache视图了解其分配情况,对于这两部分内容咱不讨论,但是可以看一下如下这个图,大体明白这两个component的作用原理。

现在开始研究一下result cache,对于oracle 11g 分为client result cache以及server result cache,前者在client进行内存的分配,后者对于数据库server进行内存分配,现在看一下server result cache(如下皆是server result cache内容)。说白了,result cache 就是为了缓存结果集的一块区域,主要是缓存sql 查询结果集以及pl/sql function结果集。

对于 result cache存在几个参数,如下:

result_cache_max_result              integer     
result_cache_max_size                big integer 
result_cache_mode                    string      MANUAL(AUTO、FORCE)

1)、result_cache_max_result 表示对于单个的缓存结果占整个result cache 大小的百分比。

2)、result_cache_max_size 参数用于设置该result cache 的大小,是一个动态参数,该参数为0 则说明result cache 功能禁用了。

3)、result_cache_mode,表示result cache的模式,其中有manual、force。manual 表示只有使用hints(result_cache)才可以对其结果进行缓存且当从result cache中获取结果集的时候也必须使用hints(result cache)参数;force表示强制对结果集进行缓存 oracle对该参数的设置不建议,如下:

FORCE mode is not recommended because the database and clients will attempt to cache all queries, which may create significant performance and latching overhead. Moreover, because queries that call non-deterministic PL/SQL functions are also cached, enabling the result cache in such a broad-based manner may cause material changes to the results.

如果需要不对操作进行缓存可以使用hints(no_result_cache)进行设置。

如下是练习过程:

一、

设置result cache 大小为20M,模式为manual,每个结果集占用总的cache比例为50%(为了测试方便);

[sql] view plaincopyprint?
  1. SQL> alter system set result_cache_mode=manual;
  2. System altered.
  3. SQL> alter system set  result_cache_max_result=50;
  4. System altered.
  5. SQL> show parameter result_cache
  6. NAME                                 TYPE        VALUE
  7. ------------------------------------ ----------- ------------------------------
  8. client_result_cache_lag              big integer 3000
  9. client_result_cache_size             big integer 0
  10. <span style="color:#ff6666">result_cache_max_result              integer     50
  11. result_cache_max_size                big integer 20M
  12. result_cache_mode                    string      MANUAL
  13. </span>result_cache_remote_expiration       integer     0
  14. SQL>

那么启用result cache 与不启用的效果在那呢?如下测试见证分晓!

eg:

[sql] view plaincopyprint?
  1. SQL> set autotrace trace
  2. SQL> select count(*) from rhys.amy;
  3. Execution Plan
  4. ----------------------------------------------------------
  5. Plan hash value: 2204613761
  6. -------------------------------------------------------------------
  7. | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
  8. -------------------------------------------------------------------
  9. |   0 | SELECT STATEMENT   |      |     1 |   348   (1)| 00:00:05 |
  10. |   1 |  SORT AGGREGATE    |      |     1 |            |          |
  11. |   2 |   TABLE ACCESS FULL| AMY  | 87260 |   348   (1)| 00:00:05 |
  12. -------------------------------------------------------------------
  13. Statistics
  14. ----------------------------------------------------------
  15. 61  recursive calls
  16. 0  db block gets
  17. <span style="color:#ff0000">       1271  consistent gets
  18. 1246  physical reads
  19. </span>          0  redo size
  20. 528  bytes sent via SQL*Net to client
  21. 523  bytes received via SQL*Net from client
  22. 2  SQL*Net roundtrips to/from client
  23. 5  sorts (memory)
  24. 0  sorts (disk)
  25. 1  rows processed
  26. <span style="color:#ff0000">SQL> r
  27. 1* select count(*) from rhys.amy
  28. </span>
  29. Execution Plan
  30. ----------------------------------------------------------
  31. Plan hash value: 2204613761
  32. -------------------------------------------------------------------
  33. | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
  34. -------------------------------------------------------------------
  35. |   0 | SELECT STATEMENT   |      |     1 |   348   (1)| 00:00:05 |
  36. |   1 |  SORT AGGREGATE    |      |     1 |            |          |
  37. |   2 |   TABLE ACCESS FULL| AMY  | 87260 |   348   (1)| 00:00:05 |
  38. -------------------------------------------------------------------
  39. Statistics
  40. ----------------------------------------------------------
  41. 0  recursive calls
  42. 0  db block gets
  43. <span style="color:#ff0000">      1248  consistent gets
  44. 1246  physical reads
  45. </span>          0  redo size
  46. 528  bytes sent via SQL*Net to client
  47. 523  bytes received via SQL*Net from client
  48. 2  SQL*Net roundtrips to/from client
  49. 0  sorts (memory)
  50. 0  sorts (disk)
  51. 1  rows processed
  52. SQL> r
  53. 1* select count(*) from rhys.amy
  54. Execution Plan
  55. ----------------------------------------------------------
  56. Plan hash value: 2204613761
  57. -------------------------------------------------------------------
  58. | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
  59. -------------------------------------------------------------------
  60. |   0 | SELECT STATEMENT   |      |     1 |   348   (1)| 00:00:05 |
  61. |   1 |  SORT AGGREGATE    |      |     1 |            |          |
  62. |   2 |   TABLE ACCESS FULL| AMY  | 87260 |   348   (1)| 00:00:05 |
  63. -------------------------------------------------------------------
  64. Statistics
  65. ----------------------------------------------------------
  66. 0  recursive calls
  67. 0  db block gets
  68. <span style="color:#ff0000">       1248  consistent gets
  69. 1246  physical reads
  70. </span>          0  redo size
  71. 528  bytes sent via SQL*Net to client
  72. 523  bytes received via SQL*Net from client
  73. 2  SQL*Net roundtrips to/from client
  74. 0  sorts (memory)
  75. 0  sorts (disk)
  76. 1  rows processed
  77. SQL> SQL>
  78. SQL>

首先看到查看rhys下的amy这张表在稳定下来的时候一致性读为1248,物理读为1246(万源之恶)。

现在使用result cache 功能。

[sql] view plaincopyprint?
  1. <span style="color:#ff0000">SQL> select /*+result_cache*/ count(*) from rhys.amy;
  2. </span>
  3. Execution Plan
  4. ----------------------------------------------------------
  5. Plan hash value: 2204613761
  6. ------------------------------------------------------------------------------------------
  7. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  8. ------------------------------------------------------------------------------------------
  9. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  10. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  11. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  12. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  13. ------------------------------------------------------------------------------------------
  14. Result Cache Information (identified by operation id):
  15. ------------------------------------------------------
  16. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select /*+result_cache*/ count(*) from rhys.amy"
  17. Statistics
  18. ----------------------------------------------------------
  19. 0  recursive calls
  20. 0  db block gets
  21. <span style="color:#ff0000">       1248  consistent gets
  22. 1246  physical reads
  23. </span>          0  redo size
  24. 528  bytes sent via SQL*Net to client
  25. 523  bytes received via SQL*Net from client
  26. 2  SQL*Net roundtrips to/from client
  27. 0  sorts (memory)
  28. 0  sorts (disk)
  29. 1  rows processed

第一次执行该语句并将其缓存到result cache中,一致性读以及物理 读没有变化。

如下使用hints(result_cache)进行在此查询该结果集。如下:

[sql] view plaincopyprint?
  1. SQL> select /*+result_cache*/ count(*) from rhys.amy;
  2. Execution Plan
  3. ----------------------------------------------------------
  4. Plan hash value: 2204613761
  5. ------------------------------------------------------------------------------------------
  6. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  7. ------------------------------------------------------------------------------------------
  8. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  9. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  10. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  11. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  12. ------------------------------------------------------------------------------------------
  13. Result Cache Information (identified by operation id):
  14. ------------------------------------------------------
  15. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select /*+result_cache*/ count(*) from rhys.amy"
  16. Statistics
  17. ----------------------------------------------------------
  18. 0  recursive calls
  19. 0  db block gets
  20. <span style="color:#ff0000">          0  consistent gets
  21. 0  physical reads
  22. </span>          0  redo size
  23. 528  bytes sent via SQL*Net to client
  24. 523  bytes received via SQL*Net from client
  25. 2  SQL*Net roundtrips to/from client
  26. 0  sorts (memory)
  27. 0  sorts (disk)
  28. 1  rows processed
  29. SQL>

可见物理读和一致性读都没有了,直接获得了结果集。这是好事啊。呵呵。

对于mode为force模式演示如下:

[sql] view plaincopyprint?
  1. <span style="color:#ff0000">SQL> alter system set result_cache_mode=force;
  2. </span>
  3. System altered.
  4. SQL>
  5. SQL> set autotrace trace
  6. SQL> select count(*) from rhys.amy;
  7. Execution Plan
  8. ----------------------------------------------------------
  9. Plan hash value: 2204613761
  10. ------------------------------------------------------------------------------------------
  11. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  12. ------------------------------------------------------------------------------------------
  13. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  14. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  15. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  16. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  17. ------------------------------------------------------------------------------------------
  18. Result Cache Information (identified by operation id):
  19. ------------------------------------------------------
  20. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select count(*) from rhys.amy"
  21. Statistics
  22. ----------------------------------------------------------
  23. 63  recursive calls
  24. 8  db block gets
  25. <span style="color:#ff0000">       1327  consistent gets
  26. 1246  physical reads
  27. </span>          0  redo size
  28. 528  bytes sent via SQL*Net to client
  29. 523  bytes received via SQL*Net from client
  30. 2  SQL*Net roundtrips to/from client
  31. 10  sorts (memory)
  32. 0  sorts (disk)
  33. 1  rows processed
  34. SQL> r
  35. 1* select count(*) from rhys.amy
  36. Execution Plan
  37. ----------------------------------------------------------
  38. Plan hash value: 2204613761
  39. ------------------------------------------------------------------------------------------
  40. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  41. ------------------------------------------------------------------------------------------
  42. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  43. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  44. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  45. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  46. ------------------------------------------------------------------------------------------
  47. Result Cache Information (identified by operation id):
  48. ------------------------------------------------------
  49. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select count(*) from rhys.amy"
  50. Statistics
  51. ----------------------------------------------------------
  52. 0  recursive calls
  53. 0  db block gets
  54. <span style="color:#ff0000">          0  consistent gets
  55. 0  physical reads
  56. </span>          0  redo size
  57. 528  bytes sent via SQL*Net to client
  58. 523  bytes received via SQL*Net from client
  59. 2  SQL*Net roundtrips to/from client
  60. 0  sorts (memory)
  61. 0  sorts (disk)
  62. 1  rows processed
  63. SQL>

另外在联机手册中并没提及到result_cache_mode 存在auto模式,但是我在不经意输错的是否发现了这个值。

SQL> alter system set result_cache_mode=false;
alter system set result_cache_mode=false
*
ERROR at line 1:
ORA-00096: invalid value FALSE for parameter result_cache_mode, must be from amongFORCE, MANUAL, AUTO

查看资料发现auto,是只有使用hints的时候才能起作用,但是当再次查询结果的时候没必要在使用hints了,而是直接把结果取出来。测试如下:

[sql] view plaincopyprint?
  1. SQL> set autotrace off
  2. SQL> execute dbms_result_cache.flush;
  3. PL/SQL procedure successfully completed.
  4. <span style="color:#ff0000">SQL> alter system set result_cache_mode=auto;
  5. </span>
  6. System altered.
  7. SQL> set autotrace trace
  8. SQL> select /*+result_cache*/ count(*) from rhys.amy;
  9. Execution Plan
  10. ----------------------------------------------------------
  11. Plan hash value: 2204613761
  12. ------------------------------------------------------------------------------------------
  13. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  14. ------------------------------------------------------------------------------------------
  15. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  16. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  17. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  18. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  19. ------------------------------------------------------------------------------------------
  20. Result Cache Information (identified by operation id):
  21. ------------------------------------------------------
  22. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select /*+result_cache*/ count(*) from rhys.amy"
  23. Statistics
  24. ----------------------------------------------------------
  25. 49  recursive calls
  26. 0  db block gets
  27. 1275  consistent gets
  28. 1246  physical reads
  29. 0  redo size
  30. 528  bytes sent via SQL*Net to client
  31. 523  bytes received via SQL*Net from client
  32. 2  SQL*Net roundtrips to/from client
  33. 5  sorts (memory)
  34. 0  sorts (disk)
  35. 1  rows processed
  36. SQL> r
  37. 1* select /*+result_cache*/ count(*) from rhys.amy
  38. Execution Plan
  39. ----------------------------------------------------------
  40. Plan hash value: 2204613761
  41. ------------------------------------------------------------------------------------------
  42. | Id  | Operation           | Name                       | Rows  | Cost (%CPU)| Time     |
  43. ------------------------------------------------------------------------------------------
  44. |   0 | SELECT STATEMENT    |                            |     1 |   348   (1)| 00:00:05 |
  45. |   1 |  RESULT CACHE       | 6tux55tbcpqfj66980yb24pfbh |       |            |          |
  46. |   2 |   SORT AGGREGATE    |                            |     1 |            |          |
  47. |   3 |    TABLE ACCESS FULL| AMY                        | 87260 |   348   (1)| 00:00:05 |
  48. ------------------------------------------------------------------------------------------
  49. Result Cache Information (identified by operation id):
  50. ------------------------------------------------------
  51. 1 - column-count=1; dependencies=(RHYS.AMY); attributes=(single-row); name="select /*+result_cache*/ count(*) from rhys.amy"
  52. Statistics
  53. ----------------------------------------------------------
  54. 0  recursive calls
  55. 0  db block gets
  56. <span style="color:#ff0000">         0  consistent gets
  57. 0  physical reads
  58. </span>          0  redo size
  59. 528  bytes sent via SQL*Net to client
  60. 523  bytes received via SQL*Net from client
  61. 2  SQL*Net roundtrips to/from client
  62. 0  sorts (memory)
  63. 0  sorts (disk)
  64. 1  rows processed

二、

result cache 管理

对于11g中新增了result cache 那么也新增了4个视图以及一个包。

相关视图如下:

  • v$result_cache_dependency
  • v$result_cache_memory
  • v$result_cache_objects
  • v$result_cache_statistics

    就不在介绍了,可以参考联机手册进行分析以及学习:

    http://www.oracle.com/pls/db112/search?word=v$result_cache_

    现在看一个dbms_result_cache包:

    存在有6个subprograms,

    Subprogram Description

    BYPASS Procedure

    Sets the bypass mode for the Result Cache

    FLUSH Function & Procedure

    Attempts to remove all the objects from the Result Cache, and depending on the arguments retains or releases the memory and retains or clears the statistics

    INVALIDATE Functions & Procedures

    Invalidates all the result-set objects that dependent upon the specified dependency object

    INVALIDATE_OBJECT Functions & Procedures

    Invalidates the specified result-set object(s)

    MEMORY_REPORT Procedure

    Produces the memory usage report for the Result Cache

    STATUS Function

    Checks the status of the Result Cache

    演示二个:

    其他参考:

    http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_result_cache.htm#CHDJCFJG

    [sql] view plaincopyprint?
    1. SQL> set serveroutput on
    2. SQL> execute dbms_result_cache.memory_report;
    3. R e s u l t   C a c h e   M e m o r y   R e p o r t
    4. [Parameters]
    5. Block Size          = 1K bytes
    6. Maximum Cache Size  = 20M bytes (20K blocks)
    7. Maximum Result Size = 10M bytes (10K blocks)
    8. [Memory]
    9. Total Memory = 168264 bytes [0.134% of the Shared Pool]
    10. ... Fixed Memory = 5352 bytes [0.004% of the Shared Pool]
    11. ... Dynamic Memory = 162912 bytes [0.129% of the Shared Pool]
    12. ....... Overhead = 130144 bytes
    13. ....... Cache Memory = 32K bytes (32 blocks)
    14. ........... Unused Memory = 30 blocks
    15. ........... Used Memory = 2 blocks
    16. ............... Dependencies = 1 blocks (1 count)
    17. ............... Results = 1 blocks
    18. ................... SQL     = 1 blocks (1 count)
    19. PL/SQL procedure successfully completed.
    20. SQL> execute dbms_result_cache.memory_report(true);
    21. R e s u l t   C a c h e   M e m o r y   R e p o r t
    22. [Parameters]
    23. Block Size          = 1K bytes
    24. Maximum Cache Size  = 20M bytes (20K blocks)
    25. Maximum Result Size = 10M bytes (10K blocks)
    26. [Memory]
    27. Total Memory = 168264 bytes [0.134% of the Shared Pool]
    28. ... Fixed Memory = 5352 bytes [0.004% of the Shared Pool]
    29. ....... Memory Mgr = 200 bytes
    30. ....... Cache Mgr  = 208 bytes
    31. ....... Bloom Fltr = 2K bytes
    32. ....... State Objs = 2896 bytes
    33. ... Dynamic Memory = 162912 bytes [0.129% of the Shared Pool]
    34. ....... Overhead = 130144 bytes
    35. ........... Hash Table    = 64K bytes (4K buckets)
    36. ........... Chunk Ptrs    = 24K bytes (3K slots)
    37. ........... Chunk Maps    = 12K bytes
    38. ........... Miscellaneous = 130144 bytes
    39. ....... Cache Memory = 32K bytes (32 blocks)
    40. ........... Unused Memory = 30 blocks
    41. ........... Used Memory = 2 blocks
    42. ............... Dependencies = 1 blocks (1 count)
    43. ............... Results = 1 blocks
    44. ................... SQL     = 1 blocks (1 count)
    45. PL/SQL procedure successfully completed.
    [sql] view plaincopyprint?
    1. SQL> execute dbms_result_cache.flush;
    2. PL/SQL procedure successfully completed.
    3. SQL> execute dbms_result_cache.memory_report(true);
    4. R e s u l t   C a c h e   M e m o r y   R e p o r t
    5. [Parameters]
    6. Block Size          = 0 bytes
    7. Maximum Cache Size  = 0 bytes (0 blocks)
    8. Maximum Result Size = 0 bytes (0 blocks)
    9. [Memory]
    10. Total Memory = 5352 bytes [0.004% of the Shared Pool]
    11. ... Fixed Memory = 5352 bytes [0.004% of the Shared Pool]
    12. ....... Memory Mgr = 200 bytes
    13. ....... Cache Mgr  = 208 bytes
    14. ....... Bloom Fltr = 2K bytes
    15. ....... State Objs = 2896 bytes
    16. ... Dynamic Memory = 0 bytes [0.000% of the Shared Pool]
    17. PL/SQL procedure successfully completed.
    18. SQL>

oracle 11g 之 result cache相关推荐

  1. [20190214]11g Query Result Cache RC Latches.txt

    [20190214]11g Query Result Cache RC Latches.txt --//昨天我重复链接http://www.pythian.com/blog/oracle-11g-qu ...

  2. oracle 结果缓存,Result cache结果缓存

    结果缓存 结果缓存默认是可以开启的 , 可以通过下面的方式查询其是否开启 SQL> SQL> show parameter RESULT_CACHE_MAX_SIZE NAME       ...

  3. Oracle结果集缓存(Result Cache)--服务器、客户端、函数缓存

    Oracle结果集缓存(Result Cache)--服务器.客户端.函数缓存 在11g中,Oracle提供了结果集缓存特性.该缓存是在共享内存中存储全部的结果集,如果一个查询SQL被执行,且它对应的 ...

  4. Oracle 11g 新特性简介

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  5. Oracle 11g新特性

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  6. 【】oracle 11g 新特性

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  7. oracle 11g 新特性

    2019独角兽企业重金招聘Python工程师标准>>> Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的 ...

  8. oracle 11g 新特性详解

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

  9. oracle 11g 新特性1

    racle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informati ...

最新文章

  1. .NET判断字符串是否是数值型或xxx型
  2. 上帝视角任意切换:三维重建和图像渲染是怎么结合的?
  3. 15个最佳的代码评审(Code Review)工具
  4. 【移动通信】多址技术和调制技术
  5. 数据科学竞赛-自然语言处理赛流程
  6. Android开发-Hello World+phonegap(Cordova)
  7. 【高校宿舍管理系统】第十章 缺勤管理、报修管理、来访人员管理以及公告管理
  8. 最后的战线java下载_最后战线2.0游戏
  9. HALCON:Variation Model用法解析
  10. 推荐5款常用编程文本编辑器
  11. ES3~ES6数组的方法总结
  12. DP9637汽车故障诊断仪的原理与作用
  13. 木马是如何编写的(一)
  14. 小米笔记本 wifi 频繁断开重连 解决方案
  15. 恒生电子工作、学习经验总结#3
  16. pycharm汉化之后切换回英文
  17. 用仿ActionScript的语法来编写html5——第二篇,利用Sprite来实现动画
  18. 关于OSCE 的安装部署视频教程
  19. 《基于机器视觉的输电线路交叉点在线测量方法及技术方案》论文笔记
  20. 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法

热门文章

  1. 广东计算机应用专业,广东地区计算机应用技术专业报考热门高校你造吗
  2. knockout框架
  3. 自己对“为什么不同挂载点的inode号码都是2”的理解
  4. 预处理异质性和处理异质性
  5. LeetCode-860-easy-柠檬水找零(贪心,模拟)
  6. 综述二 | 2020年最全的目标检测大综述(附下载链接)
  7. 地表最强APP推荐合集,让你甩别人一条街
  8. iOS日常学习 - App之间常用的五种通信方式及适用场景总结
  9. 4.逻辑控制 —— Java SE
  10. python基于PHP+MySQL的网上书店网上图书销售系统