Oracle優化器:星型轉換(Star Query Transformation )



?Oracle優化器:星型轉換(Star Query Transformation )?



Star query是一個事實表(fact table)和一些維度表(dimension)的join。每個維度表都跟事實表通過主外鍵join,且每個維度表之間不join



星型模式設計的好處:

1)?提供了直接、直觀的業務實體與終端用戶schema設計的映射。

2)?對典型的star query提供了高性能的優化。

3)?通過大量的商業智能工具的廣泛支持,可能會期望甚至要求數據倉庫架構包含維度表。

星型模式是用于簡單的數據集市和大型數據倉庫。

?



?

雪花狀模式(snowflake schema):

Snowflake schemastar schema的一種,但更復雜。它的維度數據被分到多個表而不是一個大表。更多的維度表,更多的外鍵joins,使查詢更復雜,查詢性能下降。

Oracle建議使用star schema替代snowflake schema,除非你有別的原因。

?

?

優化Star Query

1)?fact table的每個外鍵列上建立bitmap index

2)?初始化參數STAR_TRANSFORMATION_ENABLED?應被設為TRUE,默認false

星型轉換(Star transformation)能為star query提供高效的查詢性能。


?

?

?

合適的情況下,Oracle會自動選擇star transformation技術,隱視重寫star query SQL,提高star query效率。

?

星型查詢2個基本步驟:

1)?fact table中檢索出必要的結果集。(bitmap index會提高效率)

2)?結果集與維度表joins

?

?

星型轉換(bitmap index)

通過bitmap AND操作將3個維度表bitmaps為一個單獨的bitmap,然后與fact table通過bitmap indexes邏輯JOIN

SELECT?ch.channel_class,

?????? c.cust_city,

?????? t.calendar_quarter_desc,

???????SUM(s.amount_sold) sales_amount

??FROM?sales s, times t, customers c, channels ch

?WHERE?s.time_id = t.time_id

???AND?s.cust_id = c.cust_id

???AND?s.channel_id = ch.channel_id

???AND?c.cust_state_province =?'CA'

???AND?ch.channel_desc?in?('Internet',?'Catalog')

???AND?t.calendar_quarter_desc?IN?('1999-01',?'1999-02')

?GROUP?BY?ch.channel_class, c.cust_city, t.calendar_quarter_desc;


?

?

星型轉換(a Bitmap Join Index)

--建一個bitmap join index

CREATE?BITMAP?INDEX?sales_c_state_bjix?ON?sales(customers.cust_state_province)

FROM?sales, customers

WHERE?sales.cust_id = customers.cust_id

LOCAL?NOLOGGING?COMPUTE?STATISTICS;

即使用bitmap join index代替與表customerbitmap join

?

?

星型轉換的限制

1、?下面的情況不支持星型轉換

???查詢中使用hint

???查詢包含綁定變量

???Fact table上的bitmap indexes太少

???遠程fact tables

???Anti-joined tables

???Fact table是一個unmerged view

???Fact table是一個partitioned view

?

2、?優化器不選擇star transformation的情況

???表有一個好的單表訪問路徑

???表太小不值得轉換

?

3、臨時表在下面情況下不適用star transformation

???數據庫read-only模式

???Star query是串行事務的一部分

?



優化星型查詢?

當你使用星型查詢時,你需要考慮以下兩點:

  1. 調整星型查詢
  2. 使用星型轉換

調整星型查詢
為了獲得星型查詢的最佳性能,遵循一些基本準則是非常重要的:
  • 應該為事實表的每一個外鍵列都創建位圖索引。
  • 初始化參數STAR_TRANSFORMATION_ENABLED應設置為TRUE。這將開啟對星型查詢的?重要優化功能。為了向下兼容,它在默認情況下設置為FALSE
當一個數據倉庫滿足這些條件,在數據倉庫中運行的大多數星型查詢將會使用被稱為星形轉換的查詢執行策略。星型轉換為星型查詢提供了非常高效的查詢性能。

使用星型轉換

星型轉換是依靠隱式重寫(或轉換)原始星型查詢SQL的強大優化技術。最終用戶不需要知道任何關于星形轉換的細節。Oracle數據庫的查詢優化器會在合適的地方自動選擇星型轉換。

星型轉換是一個查詢轉換,旨在高效執行星型查詢。Oracle數據庫使用兩個基本階段來處理星型查詢。第一階段是從事實表(結果集)精確地檢索出必要的行。由于這種檢索使用了位圖索引,因此是非常高效的。第二階段是將一階段查到的結果集與維度表相結合。最終用戶查詢的一個例子是:“在西部和西南部地區的銷售門店的最后三個季度,食品部門的銷售額和利潤是多少?”這是一個簡單的星型查詢。

使用位圖索引的星型轉換
星型轉換的一個前提條件,即在事實表的每一個連接列上都有一個單列位圖索引。這些連接列包括所有的外鍵列。
例如,sh示例模式下的sales表,分別在TIME_ID,CHANNEL_ID,CUST_ID,PROD_ID和promo_id列上建有位圖索引。
考慮下面的星型查詢:

點擊(此處)折疊或打開

  1. SELECT?ch.channel_class,?c.cust_city,?t.calendar_quarter_desc,
  2. ???SUM(s.amount_sold)?sales_amount
  3. FROM?sales s,?times t,?customers c,?channels ch
  4. WHERE?s.time_id?=?t.time_id
  5. AND?s.cust_id?=?c.cust_id
  6. AND?s.channel_id?=?ch.channel_id
  7. AND?c.cust_state_province?=?\'CA\'
  8. AND?ch.channel_desc?in?(\'Internet\',\'Catalog\')
  9. AND?t.calendar_quarter_desc?IN?(\'1999-Q1\',\'1999-Q2\')
  10. GROUP?BY?ch.channel_class,?c.cust_city,?t.calendar_quarter_desc;
該查詢分兩個階段進行處理。在第一階段,Oracle數據庫使用事實表外鍵列的位圖索引從事實表中找出并檢索出必要的行。也就是說,Oracle數據庫從事實表中檢索結果集,從本質上是使用下面的查詢:

點擊(此處)折疊或打開

  1. SELECT?...?FROM?sales
  2. WHERE?time_id?IN
  3. ??(SELECT?time_id?FROM?times?
  4. ???WHERE?calendar_quarter_desc?IN(\'1999-Q1\',\'1999-Q2\'))
  5. ???AND?cust_id?IN
  6. ??(SELECT?cust_id?FROM?customers?WHERE?cust_state_province=\'CA\')
  7. ???AND?channel_id?IN
  8. ??(SELECT?channel_id?FROM?channels?WHERE?channel_desc?IN(\'Internet\',\'Catalog\'));
這是該算法的轉換步驟,因為原始星型查詢已被改造成子查詢表示方式。訪問事實表的這種方法利用了位圖索引的優勢。直觀地說,在關系數據庫中位圖索引提供了基于集合的處理方案。Oracle實現了非常快速的方法去處理集合操作,如AND(交集),OR(并集),MINUS和COUNT。

在這個星形查詢中,TIME_ID位圖索引用于標識事實表中銷售時間在1999年-Q1所有行的集合。這個集合被表示為位圖(一個由1和0組成的字符串,用來表示事實表中的哪些行屬于該集合)。

一個類似的位圖檢索對應sales事實表中1999年第二季度的的所有行。該位圖的或操作用于合并Q1銷售結果集與Q2銷售結果集。

另外還將在客戶維度,產品維度來完成集合操作。在星型查詢處理的這一點上,有三個位圖。每個位圖對應于一個單獨的維度表,并且每個位圖代表了事實表中滿足單獨維度約束的行的集合。

這三個位圖通過AND操作被合并成一個單獨的位圖。這個最終的位圖表示了事實表中滿足所有維度約束的行集合。這就是結果集,從評估查詢所需的事實表行的確切集合。請注意,沒有任何事實表中的實際數據被訪問。所有這些操作完全依賴位圖索引和維度表。因為位圖索引的壓縮數據表示,位圖集合操作是非常高效的。

一旦確認了結果集,可以通過位圖來訪問sales表的實際數據。從事實表中僅僅檢索需要的數據。在這一點上,Oracle數據庫,有效地將所有維度表和事實表結合了起來。這種技術提供了優異的性能,因為Oracle數據庫使用了一個邏輯的連接操作將所有維度表和事實表連接恰里,而不是將每個維度表與事實表分別進行連接。。

該查詢的第二階段是將事實表中的行(結果集)與維度表連接在一起。Oracle使用最有效的方法來訪問和連接維度表。許多維度表非常小,并且全表掃描通常是針對這些維度表的最有效的訪問方法。對于大尺寸的表,全表掃描可能不是最有效的訪問方法。在前面的例子中,product.department列的位圖索引可以用來快速識別在食品部門的所有產品。基于優化程序對每個維度表的大小和數據分布的判斷,Oracle數據庫的優化器會針對給定的維度表來自動確定哪種訪問方法是最適合的。

對于每個維度表而言,具體連接方法(以及索引方法)同樣將被優化器智能地確定。哈希連接往往是連接維度表最有效的算法。一旦連接了所有的維度表,最終的結果將返回到用戶。從一個表中檢索出匹配行,然后連接到另一個表的查詢技術通常被稱為半連接。

使用位圖索引星型轉換的執行計劃
下面這個典型的執行計劃是由帶位圖索引的星型轉換生成的:

點擊(此處)折疊或打開

  1. SELECT?STATEMENT
  2. ?SORT?GROUP?BY
  3. ??HASH JOIN
  4. ???TABLE?ACCESS?FULL CHANNELS
  5. ???HASH JOIN
  6. ????TABLE?ACCESS?FULL CUSTOMERS
  7. ????HASH JOIN
  8. ?????TABLE?ACCESS?FULL TIMES
  9. ?????PARTITION RANGE ITERATOR
  10. ??????TABLE?ACCESS?BY?LOCAL?INDEX?ROWID?SALES
  11. ???????BITMAP CONVERSION?TO?ROWIDS
  12. ????????BITMAP?AND
  13. ?????????BITMAP MERGE
  14. ??????????BITMAP?KEY?ITERATION
  15. ???????????BUFFER SORT
  16. ????????????TABLE?ACCESS?FULL CUSTOMERS
  17. ???????????BITMAP?INDEX?RANGE SCAN SALES_CUST_BIX
  18. ?????????BITMAP MERGE
  19. ??????????BITMAP?KEY?ITERATION
  20. ???????????BUFFER SORT
  21. ????????????TABLE?ACCESS?FULL CHANNELS
  22. ???????????BITMAP?INDEX?RANGE SCAN SALES_CHANNEL_BIX
  23. ?????????BITMAP MERGE
  24. ??????????BITMAP?KEY?ITERATION
  25. ???????????BUFFER SORT
  26. ????????????TABLE?ACCESS?FULL TIMES
  27. ???????????BITMAP?INDEX?RANGE SCAN SALES_TIME_BIX
在這個計劃中,是通過一個由三個位圖合并而來的位圖訪問路徑來訪問事實表。這三個位圖是BITMAP MERGE根據行資源樹的位圖生成的。每個這樣的行資源樹是從子查詢行資源樹的位圖鍵迭代行源組成,在這個例子是一個全表掃描。對于每一個這樣的值,位圖鍵迭代行源從位圖索引中檢索位圖。在相應的事實表行通過這種訪問路徑被檢索到以后,它們與維度表及臨時表合并產生的查詢結果。

?

使用位圖連接索引的星型轉換

除了位圖索引,您可以在星型轉換中使用位圖連接索引。假設你有以下附加索引結構:

?

點擊(此處)折疊或打開

  1. CREATE?BITMAP?INDEX?sales_c_state_bjix
  2. ON?sales(customers.cust_state_province)
  3. FROM?sales,?customers
  4. WHERE?sales.cust_id?=?customers.cust_id
  5. LOCAL NOLOGGING?COMPUTE?STATISTICS;


使用位圖連接索引的星型查詢和之前的例子非常相似,唯一的區別是在星型查詢的第一階段,Oracle利用連接索引,而不是一個單表位圖索引,去訪問顧客數據。

?

使用位連接圖索引星型轉換的執行計劃
下面這個典型的執行計劃是由帶位連接圖索引的星型轉換生成的:

點擊(此處)折疊或打開

  1. SELECT?STATEMENT
  2. ?SORT?GROUP?BY
  3. ??HASH JOIN
  4. ???TABLE?ACCESS?FULL CHANNELS
  5. ???HASH JOIN
  6. ????TABLE?ACCESS?FULL CUSTOMERS
  7. ????HASH JOIN
  8. ?????TABLE?ACCESS?FULL TIMES
  9. ?????PARTITION RANGE?ALL
  10. ??????TABLE?ACCESS?BY?LOCAL?INDEX?ROWID?SALES
  11. ???????BITMAP CONVERSION?TO?ROWIDS
  12. ????????BITMAP?AND
  13. ?????????BITMAP?INDEX?SINGLE?VALUE?SALES_C_STATE_BJIX
  14. ?????????BITMAP MERGE
  15. ??????????BITMAP?KEY?ITERATION
  16. ???????????BUFFER SORT
  17. ????????????TABLE?ACCESS?FULL CHANNELS
  18. ???????????BITMAP?INDEX?RANGE SCAN SALES_CHANNEL_BIX
  19. ?????????BITMAP MERGE
  20. ??????????BITMAP?KEY?ITERATION
  21. ???????????BUFFER SORT
  22. ????????????TABLE?ACCESS?FULL TIMES
  23. ???????????BITMAP?INDEX?RANGE SCAN SALES_TIME_BIX


這個執行計劃和前面相比,區別在于使用位圖索引掃描顧客維度的那一部分沒有子查詢。這是因為在customer.cust_state_province的連接述語信息已經滿足了位圖連接索引sales_c_state_bjix。


Oracle如何選擇使用星型轉換

優化器可以生成并保存一個未經轉換的最優執行計劃。如果星型轉換被啟用,優化器將嘗試將其應用到查詢;如果適用,則產生一個使用轉換查詢的最優執行計劃。基于這兩個版本的執行計劃,優化器通過比較二者的成本估算,然后決定使用經過轉換的最優執行計劃或者是未經轉換的版本。

?

如果查詢需要訪問事實表中的大部分行,最好使用全表掃描,而不是使用星型轉換查詢。但是,如果維度表的約束謂詞具有充分的可選性,也就是說只會從事實表中檢索很小一部分數據,那么基于轉換的執行計劃很有可能會更好。

?

需要注意的是,優化器會根據許多標準判斷,在它任務合理的情況下才會根據維度表生成子查詢。Oracle優化器并不保證為所有維度表生成子查詢。基于表和查詢的特性,優化器還可以決定該轉換是否值得被應用到特定查詢中。在這種情況下,優化器將會使用最優計劃。

?

使用星型轉換的限制條件

具有任何以下特征的表均不支持星型轉換:

?查詢使用了與位圖訪問路徑不兼容的表提示(hint)

?查詢包含綁定變量

?表沒有位圖索引。事實表的列必須有位圖索引,優化器才能創建子查詢。

?遠程事實表。然而,子查詢中允許使用遠程維度表。

?反連接的表

?已經在子查詢中用作維度表的表

?表是unmerged視圖,并且不是分區視圖

?事實表是unmerged視圖

?事實表是分區視圖


在以下場景優化器可能不會選擇星型轉換:

?表具有良好的單表訪問路徑

?表太小,不值得進行轉換

?

此外,在下列條件下星型轉換不使用臨時表:

?數據庫處于只讀模式

?星型查詢是串行化事務的一部分



Oracle優化器:星型轉換

>>>>

>>>>>>

>>

???

>>




?

?


??
  1. >????
  2. ????
  3. >??????
  4. ??
  5. ??????????????????????
  6. ????
  7. ???????????
  8. ?????????????????
  9. ????????????????????
  10. ????????????????
  11. ????????????????
  12. ?????????????
  13. ????????????
  14. ????????????
  15. ????????????
  16. ????????????
  17. ?????????????
  18. ??
  19. ??????????????????????
  20. ????
  21. ?????????????????
  22. ??????????????????
  23. ???????????????
  24. ????????????????????
  25. ???????????
  26. ???????
  27. ????????????????????




??
  1. >?????
  2. ??
  3. ???????????????????????????
  4. ????
  5. ??????????



??
  1. >???
  2. ???????
  3. ??????
  4. ???????
  5. ???????????
  6. ???????
  7. ???????
  8. ?????????
  9. ???????
  10. ????????
  11. ????????
  12. ???????
  13. >???
  14. ??
  15. ?????????????????
  16. ????
  17. ?????????????????????
  18. ????????????????????????
  19. ???????????????????????
  20. ??????????????????????????
  21. ????????????????????????
  22. ??????????????????????????
  23. ??????????????????????
  24. ??????????????????????
  25. ?????????????????????????
  26. ????????????????????
  27. ??????????????????????????
  28. ??
  29. ?????????????????
  30. ????
  31. ??????????????????????
  32. ????????????????????????
  33. ???????????????????????
  34. ??????????????????????
  35. ?????????????????????
  36. ???????????????????
  37. ???????????????????????
  38. ?????????????????????
  39. ??????????????????????
  40. ????????????????????
  41. ???????????????????????
  42. ??
  43. ?????????????????
  44. ????
  45. ????????????????????????
  46. ??????????????????????????
  47. ??
  48. ??
  49. ??
  50. ??
  51. ??
  52. ??
  53. ?????
  54. ??
  55. ??
  56. ???????????????????????????????????????????
  57. ??
  58. ??????????????????????????????????????????????????????
  59. ??????????????????????????????????????????????????????????
  60. ????????????????????????????????????????????????????????
  61. ????????????????????????????????????????????????????
  62. ??????????????????????????????????????????????????????????
  63. ???????????????????????????????????????????????????????????
  64. ???????????????????????????????????????????????????????
  65. ????????????????????????????????????????????????????????????
  66. ????????????????????????????????????????????????????????????
  67. ?????????????????????????????????????????????????????
  68. ??????????????????????????????????
  69. ???????????????????????????????????????????
  70. ??
  71. ??
  72. ???????
  73. ??
  74. ??
  75. ???????
  76. ??????????
  77. ????????????
  78. ?????????
  79. ????????
  80. ???????
  81. ??
  82. ??
  83. ??
  84. ??
  85. ???????????
  86. ????????????
  87. ????????????
  88. ????????????
  89. ???????????
  90. ????????????????
  91. ?????????????
  92. ?????????????
  93. ???????????
  94. ???????????
  95. ??????????
  96. ??
  97. >??????
  98. ??
  99. ????
  100. ??
  101. ??????



??
  1. >??????
  2. ??
  3. >??????

??
  1. >????
  2. ??????
  3. ???????
  4. ???????????
  5. ???????
  6. ???????
  7. ?????????
  8. ???????
  9. ????????
  10. ????????
  11. ????????
  12. ??
  13. ?????????????????
  14. ????
  15. ?????????????????????
  16. ????????????????????????
  17. ???????????????????????
  18. ??????????????????????????
  19. ????????????????????????
  20. ??????????????????????????
  21. ??????????????????????
  22. ??????????????????????
  23. ?????????????????????????
  24. ????????????????????
  25. ??????????????????????????
  26. ??
  27. ?????????????????
  28. ????
  29. ??????????????????????
  30. ????????????????????????
  31. ???????????????????????
  32. ??????????????????????
  33. ?????????????????????
  34. ???????????????????
  35. ???????????????????????
  36. ?????????????????????
  37. ??????????????????????
  38. ????????????????????
  39. ???????????????????????
  40. ??
  41. ?????????????????
  42. ????
  43. ????????????????????????
  44. ??????????????????????????
  45. ??
  46. ??
  47. ??
  48. ??
  49. ??
  50. ??
  51. ?????
  52. ??
  53. ??
  54. ???????????????????????????????????????????????????
  55. ??
  56. ??????????????????????????????????????????????????????????????????
  57. ????????????????????????????????????????????????????????????????????????????????
  58. ??????????????????????????????????????????????????????????????????????
  59. ?????????????????????????????????????????????????????????????????
  60. ??????????????????????????????????????????????????????????????????????
  61. ????????????????????????????????????????????????????????????????????????
  62. ?????????????????????????????????????????????????????????????????????????
  63. ??????????????????????????????????????????????????????????????????
  64. ????????????????????????????????????????????????????????????????
  65. ??????????????????????????????????????????????????????????????????????
  66. ??????????????????????????????????????????????????????
  67. ??????????????????????????????????????????????????????????????
  68. ?????????????????????????????????????????????????????????????????????????????????????
  69. ???????????????????????????????????????????????????????????????????????????????????????
  70. ????????????????????????????????????????????????????????????????????????????????????
  71. ????????????????????????????????????????????????????????????????????????????????????????
  72. ???????????????????????????????????????????????????????????????????????
  73. ??????????????????????????????????????????????????????????
  74. ???????????????????????????????????????????????????????????????????????????????????????
  75. ????????????????????????????????????????????????????????????????????????????????????
  76. ????????????????????????????????????????????????????????????????????????????????????????
  77. ?????????????????????????????????????????????????????????????????
  78. ?????????????????????????????????????????????????????????
  79. ???????????????????????????????????????????????????????????????????????????????????????
  80. ????????????????????????????????????????????????????????????????????????????????????
  81. ????????????????????????????????????????????????????????????????????????????????????????
  82. ???????????????????????????????????????????????????????
  83. ?????????????????????????????????????????????????????????
  84. ?????????????????????????????????????????????????????????
  85. ???????????????????????????????????????????????????????
  86. ??
  87. ??
  88. ???????
  89. ??
  90. ??
  91. ???????
  92. ???????
  93. ???????
  94. ??????????
  95. ????????????
  96. ???????
  97. ??????
  98. ?????????
  99. ????????????
  100. ??????
  101. ??????
  102. ??
  103. ??
  104. ??
  105. ???????????
  106. ??
  107. ??
  108. ??
  109. ??
  110. ?????????
  111. ???????????
  112. ???????????
  113. ????????????
  114. ?????????
  115. ????????????????
  116. ?????????????
  117. ?????????????
  118. ???????????
  119. ???????????
  120. ??????????


??
  1. ????
  2. ?????
  3. ?????
  4. ????
  5. ?????
  6. ?????
  7. ?????
  8. ???
  9. ??????
  10. ??????
  11. ??????
  12. ????
  13. ???
  14. ??????
  15. ??????
  16. ?????
  17. ????
  18. ???
  19. ??????
  20. ??????
  21. ?????
  22. ????????
  23. ????????
  24. ????
  25. ??????????????????
  26. ??????????????????
  27. ???????????????
  28. ??????
  29. ?????????????
  30. ???
  31. ?????
  32. ?????
  33. ????
  34. ????



  1. ?

??
  1. ????
  2. ?????
  3. ?????
  4. ??
  5. ????
  6. ????????????
  7. ???????
  8. ???????
  9. ???????
  10. ??????
  11. ???????
  12. ???????
  13. ?????
  14. ??????
  15. ?????????????????
  16. ?????????
  17. ????????
  18. ??????
  19. ?????
  20. ??????
  21. ??????????
  22. ?????????
  23. ????????
  24. ????????
  25. ??????
  26. ?????
  27. ??????
  28. ??????????
  29. ?????????
  30. ????????
  31. ???????
  32. ??????????
  33. ??????????
  34. ??????
  35. ?????
  36. ?????
  37. ?????
  38. ????
  39. ??????
  40. ???
  41. ?????
  42. ?????
  43. ????
  44. ????





&

???????????

img_e3029f287d989cd04bd75432ecc1c172.png
DBA筆試面試講解群1
DBA筆試面試講解群2
歡迎與我聯系



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540502.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉載] python循環中break、continue 、exit() 、pass的區別

參考鏈接: Python中的循環和控制語句(continue, break and pass) 1、break:跳出循環,不再執行 用在while和for循環中 用來終止循環語句,即循環條件沒有False條件或者序列還沒被完全遞歸完,也會停止執行循環語句 如果…

JavaScript | 聲明數組并使用數組索引分配元素的代碼

Declare an array, assign elements by indexes and print all elements in JavaScript. 聲明一個數組&#xff0c;通過索引分配元素&#xff0c;并打印JavaScript中的所有元素。 Code: 碼&#xff1a; <html><head><script>var fruits [];fruits[0]"…

[轉載] Python入門(輸入/輸出、數據類型、條件/循環語句)

參考鏈接&#xff1a; Python中的循環技術 在介紹之前我們先來看看計算機的三個根本性基礎&#xff1a; 1.計算機是執行輸入、運算、輸出的機器 2.程序是指令和數據的集合 3.計算機的處理方式有時與人們的思維習慣不同 &#xff08;以上是引自《計算機是怎樣跑起來的》…

第5章 函數與函數式編程

第5章 函數與函數式編程 凡此變數中函彼變數者&#xff0c;則此為彼之函數。 ( 李善蘭《代數學》) 函數式編程語言最重要的基礎是λ演算&#xff08;lambda calculus&#xff09;&#xff0c;而且λ演算的函數可以傳入函數參數&#xff0c;也可以返回一個函數。函數式編程 (簡稱…

mcq 隊列_人工智能能力問答中的人工智能概率推理(MCQ)

mcq 隊列1) Which of the following correctly defines the use of probabilistic reasoning in AI systems? In situations of uncertainty, probabilistic theory can help us give an estimate of how much an event is likely to occur or happen.It helps to find the pr…

[轉載] Python中的xrange和range的區別

參考鏈接&#xff1a; Python中的range()和xrange() 在python2 中 range(start,end,step)返回一個列表&#xff0c;返回的結果是可迭代對象&#xff0c;但不是迭代器。iter()轉化為列表迭代器。xrange()返回的是一個序列&#xff0c;他也是可迭代對象&#xff0c;但不是迭代…

Kubernetes基礎組件概述

本文講的是Kubernetes基礎組件概述【編者的話】最近總有同學問Kubernetes中的各個組件的相關問題&#xff0c;其實這些概念內容在官方文檔中都有&#xff0c;奈何我們有些同學可能英文不好&#xff0c;又或者懶得去看&#xff0c;又或者沒有找到&#xff0c;今天有時間就專門寫…

c語言將鏈表寫入二進制文件_通過逐級遍歷將二進制樹轉換為單鏈表的C程序

c語言將鏈表寫入二進制文件Problem statement: Write a C program to convert a binary tree into a single linked list by traversing level-wise. 問題陳述&#xff1a;編寫一個C程序&#xff0c;通過逐級遍歷將二進制樹轉換為單個鏈表 。 Example: 例&#xff1a; The ab…

[轉載] C Primer Plus 第6章 C控制語句 6.16 編程練習及答案

參考鏈接&#xff1a; 用Python打印金字塔圖案的程序 2019獨角獸企業重金招聘Python工程師標準>>> 1、編寫一個程序&#xff0c;創建一個具有26個元素的數組&#xff0c;并在其中存儲26個小寫字母。并讓該程序顯示該數組的內容。 #include int main (void) { …

C# String和string的區別

C#中同時存在String與string MSDN中對string的說明&#xff1a; string is an alias for String in the .NET Framework。string是String的別名而已&#xff0c;string是c#中的類&#xff0c;String是Framework的類&#xff0c;C# string 映射為 Framework的 String。如果用str…

要求用戶在Python中輸入整數| 限制用戶僅輸入整數值

input() function can be used for the input, but it reads the value as a string, then we can use the int() function to convert string value to an integer. input()函數可用于輸入&#xff0c;但它將值讀取為字符串&#xff0c;然后可以使用int()函數將字符串值轉換為…

[轉載] python——if語句、邏輯運算符號

參考鏈接&#xff1a; 用Python鏈接比較運算符 1.if條件判斷語句&#xff1a; if 要判斷的條件(True): 條件成立的時候&#xff0c;要做的事情 elif 要判斷的條件(True): .... elif 要判斷的條件(True): .... else: 條件不成立的時候要做的事情 示例&#xff1a; 判斷學生…

洛谷 P2689 東南西北【模擬/搜索】

題目描述 給出起點和終點的坐標及接下來T個時刻的風向(東南西北)&#xff0c;每次可以選擇順風偏移1個單位或者停在原地。求到達終點的最少時間。 如果無法偏移至終點&#xff0c;輸出“-1”。 輸入輸出格式 輸入格式&#xff1a; 第一行兩個正整數x1,y1&#xff0c;表示小明所…

單鏈表遍歷_單鏈表及其遍歷實現的基本操作

單鏈表遍歷單鏈表 (Single linked list) Single linked list contains a number of nodes where each node has a data field and a pointer to next node. The link of the last node is to NULL, indicates end of list. 單個鏈表包含許多節點&#xff0c;其中每個節點都有一…

[轉載] python中for語句用法_詳解Python中for循環的使用_python

參考鏈接&#xff1a; 在Python中將else條件語句與for循環一起使用 這篇文章主要介紹了Python中for循環的使用,來自于IBM官方網站技術文檔,需要的朋友可以參考下 for 循環 本系列前面 “探索 Python&#xff0c;第 5 部分&#xff1a;用 Python 編程” 一文討論了 if 語句和…

windows 軟鏈接的建立及刪除

在windows服務器上有時有這樣的需求&#xff0c;你的文件在f:\test中&#xff0c;但由于其它原因用戶訪問的是e:\test&#xff0c;如果又希望e:\test 中的文件與f:\test的保持同步&#xff0c;除了用同步軟件來做外&#xff0c;可以用windows 的文件夾映射來做 cmd: mklink /J …

8086簡單的指令流水線_在8086微處理器中執行流水線的指令和概念的步驟

8086簡單的指令流水線Any computer or machine works according to some instructions. These instructions are responsible for all the work that the machine does. But how does a machine work to understand and execute that instruction? 任何計算機或機器都按照某些…

[轉載] 使用Python編寫打字訓練小程序

參考鏈接&#xff1a; 在Python中切換大小寫(替換) 你眼中的程序猿 別人眼中的程序猿&#xff0c;是什么樣子&#xff1f;打字如飛&#xff0c;各種炫酷的頁面切換&#xff0c;一個個好似黑客般的網站破解。可現實呢&#xff1f; 二指禪的敲鍵盤&#xff0c;寫一行代碼&#…

shell兩個數字相乘_使用8086微處理器將兩個16位數字相乘而不帶進位

shell兩個數字相乘Problem statement: 問題陳述&#xff1a; To perform multiplication operation between 2 16bit numbers with carry using 8086 Microprocessor. 使用8086微處理器在2個16位數字之間進行帶進位的乘法運算。 Algorithm: 算法&#xff1a; Load the first…

Dwr 框架簡單實例

Dwr 是一個 Java 開源庫&#xff0c;幫助你實現Ajax網站。 它可以讓你在瀏覽器中的Javascript代碼調用Web服務器上的Java&#xff0c;就像在Java代碼就在瀏覽器中一樣。 Dwr 主要包括兩部分&#xff1a; 在服務器上運行的 Servlet 來處理請求并把結果返回瀏覽器。 運行在瀏覽器…