1. 程式人生 > >【Oracle】Oracle 12c DB In-Memory入門實驗手冊(一)

【Oracle】Oracle 12c DB In-Memory入門實驗手冊(一)

該手冊實驗基礎要在例項級別啟用IM column store,開啟方法參考上篇文章:

連結:http://blog.csdn.net/badly9/article/details/49724983

(一)基礎篇

1.objects開啟IM column store

對於objects我們可以使用In-Memory clause來指定是否使用IM column store。這個引數我們可以在Create時進行指定,也可以在建立後使用Alter引數進行指定。同時In-Memory clause引數可以在objectstablespace級別來進行指定。

1.1 In-Memory Clause

首先來看一下使用In-Memory Clause

的語句結構:

 

指定INMEMORY屬性來開啟objectsIM column store,對於已經開啟IM column storeobjects可以修改inmemory_parameters

指定NO INMEMORY來禁止objects啟用IM column store

INMEMORY_PARAMETERS允許指定附加sub-clauses來擴充套件objectsIn-Memory定義:

priority:這個屬性控制objects載入到column store。當有多個objects需要載入到IM column store中時,根據priority的設定來確定優先順序進行載入。

MEMCOMPRESS:這個屬性控制了table或者columnsIM column store中的壓縮級別。預設情況下,資料在IM column store中採用FOR QUERY LOW壓縮級別來保證在壓縮比和效能方面的平衡。

DUPLICATE:在RAC場景中,每個資料庫節點有自己的IM column store。同一個objects可以以副本的形式存在於每一個節點的IM column store中。這個引數的預設值為NO DUPLICATE。這個引數僅僅在EXADATA環境中有效。在單例項和非EXADATA中這個屬性不生效。

DISTRIBUTE:這個屬性在RAC環境中有效。如果一個

objects非常大,無法被載入到一個節點上的IM column store上時,可以分成幾個資料片來分別放到rac的幾個節點上。這個屬性的預設值為AUTO-DISTRIBUTE。由Oracle自己來決定大的objects如何在幾個節點的IM column store中進行分佈。在單例項中這個引數無效。

對於使用了In-Memory clauseobjectsIM屬性會被四個原有的資料字典捕獲,分別是:*_tables,*segments,*_tab_partitions,*_tab_sub_partitions。同時在檢視V$IM_SEGMENTSV$IM_USER_SEGMENTS中也可進行檢視,在以上的資料字典和動態檢視中,IM相關屬性被分為以下四列:

INMEMORY:用於指示是否objectsINMEMORY還是NO INMEMORY,對應這一列的值分別為ENABLEDISABLED

INMEMORY_PRIORITY:用於指示該objects PRIORITY的屬性。值分別為:NONELOWMEDIUMHIGHCRITICAL

INMEMORY_COMPRESSION:這個屬性對應著objects inmemory_parametersMEMCOMPRESS屬性。

INMEMORY_DUPLICATEINMEMORY_DISTRIBUTE:這兩個分別對應著objects inmemory_parametersDUPLICATEDISTRIBUTE屬性。

下面通過實驗來看一下簡單的將一個表放入到In-Memory Area中,並修改它的優先順序。

實驗過程如下:

1.建立一個測試表,賦予INMEMORY屬性:

SQL> conn badly9/badly9

Connected.

SQL> CREATE TABLE PARTS (

  2  PART_ID NUMBER,

  3  NAME VARCHAR2(100),

  4  MFR VARCHAR2(50),

  5  CATEGORY VARCHAR2(30),

  6  BRAND VARCHAR2(50)) INMEMORY;

Table created.

2.通過user_tables檢視該表的IM相關屬性:

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PARTS';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  NONE     FOR QUERY LOW     AUTO            NO DUPLICATE

根據上邊給出的各個列的屬性,我們可以看到PARTS表啟用了IM column storePRIORITY級別為NONECOMPRESS 級別為FOR QUERY LOWDISTRIBUTE值為AUTO,未啟用DUPLICATE特性。

3.修改PRIORITY級別

語法如下:

ALTER TABLE ... INMEMORY PRIORTITY {NONE|LOW|MEDIUM|HIGE|CRITICAL}

SQL> alter table parts inmemory priority high;

Table altered.

4.再來看一下parts表的In-Memory屬性:

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PARTS';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  HIGH     FOR QUERY LOW     AUTO            NO DUPLICATE

可以看到此時INMEMORY_PRIORITY屬性已經被調整為HIGH。其他屬性的調整方法類似,具體可變化值參考官檔。

1.2 in-memory column clause

對於表和物化檢視,in-memory clause還有一個允許附加的sub-clause叫做in-memory column clause。可以用來控制表的某些列開啟和關閉IM column store,對某一列更改compress級別(可以對某一列使用和整表不同的壓縮級別)。

 

對於列的IM屬性,我們可以通過檢視V$IM_COLUMN_LEVEL來檢視列的compress屬性。這個檢視只有compress屬性,沒有PRIORITYDUPLICATEDISTRIBUTE屬性。

舉例說明,去開啟一個已存在表的IM column store,你可以使用ALTER table語句進行更改它的INMEMORY屬性,例如:

ALTER TABLE ... INMEMORY (col1)

ALTER TABLE ... INMEMORY (col1,col2)

ALTER TABLE ... NO INMEMORY (col1,col2)

ALTER TABLE ... INMEMORY MEMCOMPRESS QUERY LOW (col1)

ALTER TABLE ... INMEMORY MEMCOMPRESS QUERY HIGH (col2)

             NO INMEMORY (col3)

             INMEMORY PRIORITY HIGH

實驗過程:

1.檢視測試表的IM屬性:

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PROMOTIONS';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

DISABLED

2.檢視測試表表結構

SQL> DESC PROMOTIONS

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 PROMO_ID                                  NOT NULL NUMBER(6)

 PROMO_NAME                                NOT NULL VARCHAR2(30)

 PROMO_SUBCATEGORY                         NOT NULL VARCHAR2(30)

 PROMO_SUBCATEGORY_ID                      NOT NULL NUMBER

 PROMO_CATEGORY                            NOT NULL VARCHAR2(30)

 PROMO_CATEGORY_ID                         NOT NULL NUMBER

 PROMO_COST                                NOT NULL NUMBER(10,2)

 PROMO_BEGIN_DATE                          NOT NULL DATE

 PROMO_END_DATE                            NOT NULL DATE

 PROMO_TOTAL                               NOT NULL VARCHAR2(15)

 PROMO_TOTAL_ID                            NOT NULL NUMBER

3.將測試表中一些列開始IM column store需要注意的是不開啟IM column store的列需要加入到NO INMEMORY中,否則這些列預設也會開啟INMEMORY。同時在某些列開啟IM column store之前整張表也要開啟IM column store,否則執行語句會報錯

SQL> ALTER TABLE PROMOTIONS INMEMORY

  2  INMEMORY (PROMO_NAME, PROMO_CATEGORY, PROMO_COST, PROMO_TOTAL)

  3  NO INMEMORY (PROMO_ID, PROMO_CATEGORY_ID, PROMO_SUBCATEGORY_ID);

Table altered.

4.檢視測試表的IM屬性:

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PROMOTIONS';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  NONE     FOR QUERY LOW     AUTO            NO DUPLICATE

可以看到從這裡可以看到整張表都開啟了IM column store,如果需要知道具體哪些列開啟了IM column store則需要到V$IM_COLUMN_LEVEL中進行檢視

5.檢視測試表列的IM屬性:

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION

  2  FROM V$IM_COLUMN_LEVEL

  3  WHERE TABLE_NAME = 'PROMOTIONS';

TABLE_NAME                      COLUMN_NAME                     INMEMORY_COMPRESSION

------------------------------- ------------------------------- --------------------------

PROMOTIONS                      PROMO_ID                        NO INMEMORY

PROMOTIONS                      PROMO_NAME                      DEFAULT

PROMOTIONS                      PROMO_SUBCATEGORY               DEFAULT

PROMOTIONS                      PROMO_SUBCATEGORY_ID            NO INMEMORY

PROMOTIONS                      PROMO_CATEGORY                  DEFAULT

PROMOTIONS                      PROMO_CATEGORY_ID               NO INMEMORY

PROMOTIONS                      PROMO_COST                      DEFAULT

PROMOTIONS                      PROMO_BEGIN_DATE                DEFAULT

PROMOTIONS                      PROMO_END_DATE                  DEFAULT

PROMOTIONS                      PROMO_TOTAL                     DEFAULT

PROMOTIONS                      PROMO_TOTAL_ID                  DEFAULT

11 rows selected.

可以看到從這個檢視中可以準確的看到哪些列開啟了IM,哪些列沒有開啟IM

1.3 NO INMEMORY clause

可以開啟就可以關閉,那麼關閉表的IM column store可以通過NO INMEMORY clause來實現。

具體語句如下:

ALTER TABLE ... NO INMEMORY

實驗過程如下:

1.關閉IM column store

SQL> ALTER TABLE PROMOTIONS NO INMEMORY;

Table altered.

2.查詢相關檢視

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PROMOTIONS';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

DISABLED

SQL> SET LINES 100;

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION

  2  FROM V$IM_COLUMN_LEVEL

  3  WHERE TABLE_NAME = 'PROMOTIONS';

no rows selected

2 tablespace級別開啟IM column store

我們除了可以對單個objects開啟IM,也可以對整個表空間使用in-memory clause來更改表空間的預設屬性,可以通過create也可以通過alter

舉例說明,通過alter語句修改tablespaceIM屬性:

Ø ALTER TABLESPACE ... DEFAULT INMEMORY

Ø ALTER TABLESPACE ... DEFAULT INMEMORY MEMCOMPRESS QUERY HIGH

Ø ALTER TABLESPACE ... DEFAULT INMEMORY PRIORITY LOW

一旦手工指定了tablespacein-memory clause,則在該表空間內建立表和物化檢視,如果沒有手動指定IM屬性,則將繼承tablespaceIM屬性,只對更改tablespaceIM屬性之後新建的表和物化檢視生效。如果在表或物化檢視建立時手工指定了IM屬性,則最終屬性為手工指定的屬性。

實驗過程如下:

1.檢視測試表空間IM屬性:

SQL> SELECT DEF_INMEMORY, DEF_INMEMORY_PRIORITY,

  2  DEF_INMEMORY_COMPRESSION, DEF_INMEMORY_DISTRIBUTE,

  3  DEF_INMEMORY_DUPLICATE

  4  FROM DBA_TABLESPACES

  5  WHERE TABLESPACE_NAME = 'TBS_TEST';

DEF_INME DEF_INME DEF_INMEMORY_COMP DEF_INMEMORY_DI DEF_INMEMORY_

-------- -------- ----------------- --------------- -------------

DISABLED

2.更改測試表空間的IM屬性

SQL> ALTER TABLESPACE TBS_TEST DEFAULT INMEMORY

  2  MEMCOMPRESS FOR CAPACITY HIGH PRIORITY LOW;

Tablespace altered.

3.檢視更改後的表空間IM屬性

SQL> SELECT DEF_INMEMORY, DEF_INMEMORY_PRIORITY,

  2  DEF_INMEMORY_COMPRESSION, DEF_INMEMORY_DISTRIBUTE,

  3  DEF_INMEMORY_DUPLICATE

  4  FROM DBA_TABLESPACES

  5  WHERE TABLESPACE_NAME = 'TBS_TEST';

DEF_INME DEF_INME DEF_INMEMORY_COMP DEF_INMEMORY_DI DEF_INMEMORY_

-------- -------- ----------------- --------------- -------------

ENABLED  LOW      FOR CAPACITY HIGH AUTO            NO DUPLICATE

4.在該表空間建立測試表parts2,不設定IM屬性

SQL> CREATE TABLE PARTS2 (

  2  PART_ID NUMBER,

  3  NAME VARCHAR2(100),

  4  MFR VARCHAR2(50),

  5  CATEGORY VARCHAR2(30),

  6  BRAND VARCHAR2(50)) tablespace TBS_TEST;

Table created.

5.檢視測試表parts2的屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PARTS2';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  LOW      FOR CAPACITY HIGH AUTO            NO DUPLICATE

6.建立測試表parts3,設定IM屬性

SQL> CREATE TABLE PARTS3 (

  2  PART_ID NUMBER,

  3  NAME VARCHAR2(100),

  4  MFR VARCHAR2(50),

  5  CATEGORY VARCHAR2(30),

  6  BRAND VARCHAR2(50))

  7  INMEMORY MEMCOMPRESS FOR QUERY HIGH PRIORITY HIGH

  8  TABLESPACE TBS_TEST;

Table created.

7.檢視測試表parts3IM屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'PARTS3';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  HIGH     FOR QUERY HIGH    AUTO            NO DUPLICATE

8.關閉tablespace TBS_TESTIM column store

SQL> ALTER TABLESPACE TBS_TEST DEFAULT NO INMEMORY;

Tablespace altered.

9.檢視tablespace TBS_TESTIM屬性

SQL> SELECT DEF_INMEMORY, DEF_INMEMORY_PRIORITY,

  2  DEF_INMEMORY_COMPRESSION, DEF_INMEMORY_DISTRIBUTE,

  3  DEF_INMEMORY_DUPLICATE

  4  FROM DBA_TABLESPACES

  5  WHERE TABLESPACE_NAME = 'TBS_TEST';

DEF_INME DEF_INME DEF_INMEMORY_COMP DEF_INMEMORY_DI DEF_INMEMORY_

-------- -------- ----------------- --------------- -------------

DISABLED

10.檢視已建立的表的IM屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME IN ('PARTS2','PARTS3');

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  HIGH     FOR QUERY HIGH    AUTO            NO DUPLICATE

ENABLED  LOW      FOR CAPACITY HIGH AUTO            NO DUPLICATE

可以看到修改tablespaceIM屬性並不會導致已建立表的IM屬性發生修改。

3 資料庫引數inmemory_clause_default的使用

通過對於INMEMORY_CLAUSE_DEFAULT引數的設定,可以為庫中新建的表或物化檢視指定一個預設的IM column store clause

該引數預設為空,代表INMEMORY_CLAUSE_DEFAULT被禁用,和設定為NO INMEMORY一個效果。

如果設定了該引數,所有新建的表和物化檢視如果沒有設定IM clause或者沒有設定某個inmemory_parameter相應的IM clause,都會按照該引數的設定新增INMEMORY條件。說的有點亂,還是舉例說明,如果該引數被設定成MEMCOMPRESS FOR CAPACITY LOW,新建立的表的IM clauseINMEMORY PRIORITY HIGH,則這個表實際被建立時的IM條件為INMEMORY MEMCOMPRESS FOR CAPACITY LOW PRIORITY HIGH。但是如果該表建立時使用了NO INMEMORY屬性,則不會和INMEMORY_CLAUSE_DEFAULT進行疊加。

實驗過程如下:

1.使用dba使用者登入:

[[email protected] ~]$ sqlplus / as sysdba

2.更改INMEMORY_CLAUSE_DEFAULT引數:

SQL> ALTER SYSTEM SET INMEMORY_CLAUSE_DEFAULT = "MEMCOMPRESS FOR QUERY HIGH" SCOPE=BOTH;

System altered.

3.登陸到測試使用者並建立測試表test_tab

SQL> conn badly9/badly9

Connected.

SQL> CREATE TABLE TEST_TAB (COL1 NUMBER) INMEMORY PRIORITY HIGH;

Table created.

4.檢視測試表test_tabIM屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'TEST_TAB';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  HIGH     FOR QUERY HIGH    AUTO            NO DUPLICATE

可以看到,此時該測試表的IM屬性是由表建立時指定的IM屬性和INMEMORY_CLAUSE_DEFAULT疊加之後的結果。

5.建立測試表test_tab2

SQL> CREATE TABLE TEST_TAB2 (COL1 NUMBER) INMEMORY MEMCOMPRESS FOR CAPACITY LOW;

Table created.

6.檢視測試表test_tab2IM屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'TEST_TAB2';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

ENABLED  NONE     FOR CAPACITY LOW  AUTO            NO DUPLICATE

可以看到當建表語句中的IM屬性和INMEMORY_CLAUSE_DEFAULT定義產生衝突時,會按照建表語句中的屬性來執行。

9.建立測試表TEST_TAB3

SQL> CREATE TABLE TEST_TAB3 (COL1 NUMBER) NO INMEMORY TABLESPACE TBS_TEST;

Table created.

10.檢視測試表TEST_TAB3IM屬性

SQL> SELECT INMEMORY, INMEMORY_PRIORITY, INMEMORY_COMPRESSION,

  2  INMEMORY_DISTRIBUTE, INMEMORY_DUPLICATE

  3  FROM USER_TABLES

  4  WHERE TABLE_NAME = 'TEST_TAB3';

INMEMORY INMEMORY INMEMORY_COMPRESS INMEMORY_DISTRI INMEMORY_DUPL

-------- -------- ----------------- --------------- -------------

DISABLED

11.清除測試資料及設定:

DROP TABLE TEST_TAB;

DROP TABLE TEST_TAB2;

DROP TABLE TEST_TAB3;

ALTER SYSTEM SET INMEMORY_CLAUSE_DEFAULT = '' SCOPE=BOTH;

相關推薦

OracleOracle 12c DB In-Memory入門實驗手冊

該手冊實驗基礎要在例項級別啟用IM column store,開啟方法參考上篇文章: 連結:http://blog.csdn.net/badly9/article/details/49724983 (一)基礎篇 1.對objects開啟IM column store 對於o

OracleOracle 12c DB In-Memory入門實驗手冊

(四)查詢IM中的資料 之前的三篇我們分別介紹了以下三部分內容,感興趣的朋友可以去看一下: 載入資料到IM:http://blog.csdn.net/badly9/article/details/49777993 IM壓縮:http://blog.csdn.net/

JavaFlumeFlume-NG啟動過程源代碼分析

code extends fix tar top 依據 oid article gif 從bin/flume 這個shell腳本能夠看到Flume的起始於org.apache.flume.node.Application類,這是flume的main函數所在。   m

vuevue根據不同環境(正式、測試)打包

前提姿勢 獲取終端中輸入的命令 下面的這個在webpack中會有個process物件 ,看下面圖就知道使用 process.argv.splice() 就可以獲取輸入命令引數了 此處教程區分介面 這裡是通過不同命令將修改介面前部分的地址或者修改

更新Essential Studio for Xamarin更新至2018 v4

下載Essential Studio for Xamarin最新版本 Essential Studio for Xamarin是全面的Xamarin.iOS、Xamarin.Android和Xamarin.Forms元件套包,包含最快的圖表和網格。 COMMON 主題支援 現在,您可以使用預定義的

Dockercentos7伺服器安裝docker想要的版本

事無鉅細、人無完人! 1.Centos 7.X以上,核心版本高於3.10的64位系統支援Docker,通過uname -r檢視。 uname -r 2.查詢安裝過的包 yum list installed | grep docker 3.確認你要安裝docker的版本:

NLP前戲:一起走進條件隨機場

作者:白寧超 2016年8月2日13:59:46 【摘要】:條件隨機場用於序列標註,資料分割等自然語言處理中,表現出很好的效果。在中文分詞、中文人名識別和歧義消解等任務中都有應用。本文源於筆者做語句識別序列標註過程中,對條件隨機場的瞭解,逐步研究基於自然語言處理方面的應用。成文主要源於自然語言處理

從零開始學習音視訊程式設計技術 視訊格式講解

轉自:http://blog.yundiantech.com/?log=blog&id=4  所謂視訊,其實就是將一張一張的圖片連續的放出來,就像放幻燈片一樣,由於人眼的惰性,因此只要圖片的數量足夠多,就會覺得是連續的動作。 所以,只需要將一張一張的圖片儲存下來

nowcoder9.5 阿里巴巴2017實習生筆試題

http://www.nowcoder.com/questionTerminal/0cd6af2fd4374df597b49e09302b1a5a - 使用 inline 關鍵字的函式只是使用者希望

硬碟損壞不能識別等相關知識

硬碟修復真經 誤區、缺陷、引數與低格 ·跳出硬碟認識的誤區 ·修復需要弄明白的基本概念 ·深入瞭解硬碟引數 ·硬碟修復之低階格式化 跳出硬碟認識的誤區   1995年,偶然在同事那裡見到一個陌生的物件,好奇地問那是什麼,朋友答:“這是電腦用的硬碟!”這就是高朋第一次認識硬碟的經過。   幾年下來,單位的電腦

PHP高階面試題之十萬個為什麼?

成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成。 現在也已經工作三年時間了,PHP在平時工作中天天都會使用,但是內心總是感覺差點什麼,覺得自己對PHP這門語言瞭解的還不夠,故下定決心,整理了一下平時工作所學所用,提出各種各樣的問題,

FPGA 組合邏輯中的競爭與險象問題

針對單輸出的組合邏輯進行簡單分析,而多輸出的組合邏輯可分解為多個但輸出的組合邏輯。 單輸入的組合邏輯 對於一個簡單的非閘電路,它的輸出將永遠跟隨輸入變化,即使考慮到門延遲、線延遲的影響,輸出波形最多也就是比輸入波形在時間上滯後一些罷了,並不會出現非預期的現象。 但對於單

震驚手把手教你用python做繪圖工具

在這篇部落格裡將為你介紹如何通過numpy和cv2進行結和去建立畫布,包括空白畫布、白色畫布和彩色畫布。建立畫布是製作繪圖工具的前提,有了畫布我們就可以在畫布上盡情的揮灑自己的藝術細胞。 還在為如何去繪圖煩惱的小夥伴趕緊看過來,這裡手把手教你解決問題~~~~ 當然還是講究一下規則:先點贊再看,尊重一下作者

如何實現一個現代化電子商城搜尋?

  原文《Implementing A Modern E-Commerce Search》,作者:Alexander Reelsen.   原文內容比較多,所以翻譯會分三篇發出: 第一篇:講述了好的搜尋功能由好的索引資料和好的查詢語句(即搜尋關鍵詞+特徵過濾器)組成。電子商務搜尋中的產品資

第124篇 一對一視頻錄制及網站註冊 周四

一對一視頻錄制 網站註冊 關鍵詞:一對一視頻錄制,網站註冊一、一對一視頻錄制1.1 參考網址https://www.webrtc-experiment.com/RecordRTC/視頻錄制下載網址:https://github.com/muaz-khan/RecordRTC1.2 網頁錄制本地:ht

第135篇 一對一視頻錄制及必填項紅色星標及隱藏index.php及必選項不能為空 周

一對一視頻錄制 必填項紅色星標 隱藏index.php 必選項不能為空 關鍵詞:一對一視頻錄制, 必填項紅色星標, 隱藏index.php, 必選項不能為空一、一對一視頻錄制1.1 需要做的二、我的網站2.1 必填項紅色星標代碼如下:<spanstyle="color:red;">

問底夏俊:深入站點服務端技術——站點並發的問題

而是 思路 臨時 系統負載 表現 json article 不能 情況 摘要:本文來自擁有十年IT從業經驗、擅長站點架構設計、Web前端技術以及Java企業級開發的夏俊,此文也是《關於大型站點技術演進的思考》系列文章的最新出爐內容。首發於CSDN,各位技術人員不

西安用Leangoo做Scrum敏捷開發實戰課免費

帶來 互聯網產品 簽到 class -s 認證 名企 gin light Leangoo誠邀您參加 2017《用leangoo做Scrum敏捷開發》實戰課!在此實戰課上,您不僅可以聽到一線資深敏捷顧問帶來的敏捷落地實踐經驗,還可以和眾多企業同仁共同探討敏捷實踐過程中的酸甜

Learning多項式乘法與快速傅裏葉變換FFT

alt 技術 cos 相同 es2017 define ostream 意思 呵呵 簡介:   FFT主要運用於快速卷積,其中一個例子就是如何將兩個多項式相乘,或者高精度乘高精度的操作。   顯然暴搞是$O(n^2)$的復雜度,然而FFT可以將其將為$O(n lg

PHP基礎入門詳解世界上最好用的編程語言

轉換成 c語言 127.0.0.1 mac const 讀取 成對 後臺 isset 簡介 ---------  PHP(超文本預處器)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨