㈠ 數據透視表怎麼系統學習,有什麼好的視頻教程可以推薦的嗎謝謝!!!
ExcelHome - 全球領先的Excel門戶,Office視頻教程培訓中心
http://www.excelhome.net/
參考網址
㈡ 編譯系統的過程
接收輸入的編譯任務;根據所述編譯任務生成任務名;解析獲得所述任務名對應的源代碼;編譯所述源代碼,並輸出所述編譯任務的處理狀態信息。上述技術方案中,通過介面平台接收編譯任務,由介面平台以任務名形式發起編譯請求,進行編譯,簡化了編譯輸入操作;處理狀態信息,通過介面平台實時提供給客戶端,簡化了編譯監控操作,大大節約了人力資源。
㈢ 想學習linux嵌入式,請大家推薦一款arm開發板,最好能有配套視頻的。
一.開發板
建議購買友善之臂的,價位低、資源豐富、資料全。www.arm9.net。買一個mini2440足夠了。
二.關於自學
從技術的角度來說,要是有一些基礎,是可以學好的。但是考慮其他因素,很難完成。比如:時間(你可能不能夠拿出三個月的時間來學習)、學習方向(沒有接觸過的根本就不知道該學些什麼)。
建議從以下幾個方向學習。
1.linux基本使用。包括常用命令,vim、gcc、gdb、簡單的伺服器搭建等。
推薦《完美應用Ubuntu》
2.C語言。這個最重要,一定要把C語言基礎打好了,要不以後沒法繼續學習。
講C語言的書很多了。自己參考吧。
3.linux系統編程。
經典的APUE,也就是《UNIX環境高級編程》,不過這本書一般初學者看不懂。可以先看《Linux環境下C編程指南(第2版)》,通俗易懂。
4.linux device driver。要是有盡力,可以學一下。
經典的LDD3,也就是《linux設備驅動(第3版)》,同樣可以先看比較通俗易懂的一本,宋寶華的《linux設備驅動開發詳解》。
5.與嵌入式相關的開發環境、交叉編譯、內核配置、文件系統、系統搭建等等。
這部分有開發版的資料就夠了。
三.關於培訓班
參加了任何一個培訓班都會讓你失望的。因為,他們都是擴大了一百倍來宣傳。選培訓班要選一個正規、師資豐富的學校。學習的每個階段能保證一直有相應的老師上課就可以。
嵌入式是需要深入學習的行業。你目前最重要的是,盡快掌握一些基礎,能找到相關的工作。在工作中才能更深入的學習。只有接觸了大量的代碼才能掌握關鍵技術。
㈣ 編譯系統和解釋系統有什麼區別
首先...直接編譯成可執行文件的方式 在執行速度上要快於解釋執行的方式
但是 JAVA是誇平台的.......
也就是說 ..雖然它是解釋執行的,,在速度上稍微亞於其他語言..(在硬體更新如此之快的今天,這算不上什麼劣勢)
但由於它的誇平台性...這個巨大的優勢 決定了JAVA 會成為熱門.....
JAVA語言程序 也可以根據需要有特定工具 再次編譯 生成在特定系統中能執行的執行程序..比如說windows下的exe 但是這樣就失去了誇平台性..
所以JAVA程序的交互 採用JAVA獨特的程序包 .jar方式進行交互是非常好的選擇
,也並不是非常復雜...
JAVA實際上是既有編譯又有解釋的....先編譯成CLASS文件..這是在誇平台前提下的最大程度的編譯....然後再進行解釋執行,可以讓解釋的過程和復雜度降到最低 .如果完全採用解釋執行...是很不可取的 增加了用戶機的負擔
請參考
㈤ 有哪些比較好的關於編譯原理 操作系統的網路公開課
操作系統:
MIT 6.828
Stanford: Pintos
UCB: Nachos
THU: Ucore
Harvard: OS161
以上均為開源,自己學。
編譯:
UCB CS164,強推
MIT 6.035 OCW上的project是開源的,現在的貌似不開放了
Upenn的PL方面的課程
CMU 15-411
以上所有課程的lecture notes 基本約等於一本好書,並且assignment project均開放下載
還有更多我推了也沒用,畢竟精力有限,很多我自己都沒看完Yesterday was my birthday, so some of my classmates sent me presents. Mother prepared a tea party for me
㈥ 易語言本地視頻播放無法靜態編譯
視頻播放器可以創建WMPlayer 對象
然後就可以編譯了……(系統必須有WMPlayer播放器)
.版本 2
.程序集變數 wm, 對象
.子程序 __啟動窗口_創建完畢
wm = CreateWMPlayer (標簽1.取窗口句柄 (), 0, 0, 標簽1.寬度, 標簽1.高度)
wm.寫屬性 (「URL」, 「播放文件路徑」)
.子程序 CreateWMPlayer, 對象, , 創建WMPlayer對象
.參數 父窗口句柄
.參數 左邊位置, 整數型, 可空
.參數 頂邊位置, 整數型, 可空
.參數 窗口寬度, 整數型, 可空
.參數 窗口高度, 整數型, 可空
.參數 窗口風格, 整數型, 可空, WS_常量
.參數 擴展風格, 整數型, 可空, WS_EX常量
.參數 返回句柄, 整數型, 參考 可空, 返回句柄
.局部變數 _wm, 對象
.局部變數 _hwnd, 整數型
.局部變數 _Style, 整數型
.如果真 (窗口風格 = 0)
_Style = #WS_CHILDWINDOW + #WS_CLIPSIBLINGS + #WS_CLIPCHILDREN + #WS_VISIBLE ' 默認
.如果真結束
AtlAxWinInit ()
_hwnd = CreateWindowEx (擴展風格, 「AtlAxWin」, 「WMPlayer.OCX」, _Style, 左邊位置, 頂邊位置, 窗口寬度, 窗口高度, 父窗口句柄, 0, 0, 0)
AtlAxGetControl (_hwnd, _wm)
返回句柄 = _hwnd
返回 (_wm)
.版本 2
.常量 WS_CHILDWINDOW, "1073741824"
.常量 WS_VISIBLE, "268435456"
.常量 WS_CLIPSIBLINGS, "67108864"
.常量 WS_CLIPCHILDREN, "33554432"
.版本 2
.DLL命令 AtlAxWinInit, 整數型, "atl.dll", "AtlAxWinInit", , 此函數初始化承載代碼ATL的控制項通過注冊 "AtlAxWin80" 和 "AtlAxWinLic80" 窗口選件類以及兩個自定義windows消息。
.DLL命令 AtlAxGetControl, 整數型, "atl.dll", "AtlAxGetControl", , 獲取一個直接介面指針。控制項中包含的於原始的指定windows消息的句柄。
.參數 h, , , 一個處理到承載控制項的窗口
.參數 x, 對象
.DLL命令 CreateWindowEx, 整數型, "user32", "CreateWindowExA", , CreateWindowEx函數通過擴展格式創建一個層疊的,自動彈出的(pop-up)或是一個子窗口。另外這個函數的作用與CreateWindow函數的作用相同。
.參數 dwExStyle, 整數型
.參數 lpClassName, 文本型
.參數 lpWindowName, 文本型
.參數 dwStyle, 整數型
.參數 x, 整數型
.參數 y, 整數型
.參數 nWidth, 整數型
.參數 nHeight, 整數型
.參數 hWndParent, 整數型
.參數 hMenu, 整數型
.參數 hInstance, 整數型
.參數 lpParam, 整數型
㈦ 如何評價《編譯系統透視:圖解編譯原理》一書
本書是編譯原理領域的鴻篇巨著,中文版尚未出版,英文版權已經輸出到了美國。本書的出版將在世界范圍內產生重要影響。從以下多個角度講,本書都具有重要的里程碑意義:
● 它第一次讓編譯原理不再像是一門高深晦澀的「數學課」,而是一個可以調試、可以接觸、可以真切感受的理論體系。本書用1140 余幅信息量巨大的運行時結構圖和視頻動畫取代了同類書中復雜枯燥的數學公式,更加立體和直觀,生動地將編譯後的執行程序在內存中的運行時結構圖展現了出來。
● 它第一次將 GCC 源代碼、編譯原理、運行時結構、編譯系統原理(包含匯編與鏈接)的內在關系、邏輯與原理梳理清楚了,並將它們結合成一個整體,真正能夠讓讀者透徹掌握編譯器如何運行、如何設計,以及為什麼要這么設計。
● 它是第一本系統解讀著名商用編譯器 GCC 核心源代碼的著作。 GCC 源代碼一共有 600 萬行,為了便於講解和閱讀,本書進行了取捨和裁剪,講解了與編譯本質相關的、最核心的 60 萬行代碼。
㈧ 數據透視表具體的使用方法,步驟,教學視頻也行。
方法:
若要創建數據透視表,請運行「數據透視表和數據透視圖向導」。在向導中,從工作表列表或外部資料庫選擇源數據。向導然後為您提供報表的工作表區域和可用欄位的列表。當您將欄位從列表窗口拖到分級顯示區域時,Microsoft Excel 自動匯總並計算報表。
如果使用「Office 數據連接」檢索報表的外部數據 (外部數據:存儲在 Excel 之外的數據。例如,在 Access、dBASE、SQL Server 或 Web 伺服器上創建的資料庫。),則可直接將數據返回到數據透視表,而不必運行「數據透視表和數據透視圖向導」。當不需要合並來自外部資料庫 (資料庫:與特定主題或用途相關的數據的集合。在資料庫內,關於特定實體的信息(如雇員或訂單)分類歸納到表、記錄和欄位中。)的多個表 (表:關於特定主題的一組數據的集合,以記錄(行)和欄位(列)的形式存儲。)中的數據,或者不需要在創建報表前篩選數據以選擇特定記錄時,推薦使用「Office 數據連接」檢索報表的外部數據,以及檢索 OLAP (OLAP:為查詢和報表(而不是處理事務)而進行了優化的資料庫技術。OLAP 數據是按分級結構組織的,它存儲在多維數據集而不是表中。) 資料庫的數據。
創建數據透視表後,可對其進行自定義以集中在所需信息上。自定義的方麵包括更改布局、更改格式或深化以顯示更詳細的數據。
詳細:
處理源數據
在創建數據透視表 (數據透視表:一種交互的、交叉製表的 Excel 報表,用於對多種來源(包括 Excel 的外部數據)的數據(如資料庫記錄)進行匯總和分析)或數據透視圖報表 (數據透視圖:提供互動式數據分析的圖表,與數據透視表類似。可以更改數據的視圖,查看不同級別的明細數據,或通過拖動欄位和顯示或隱藏欄位中的項來重新組織圖表的布局)時,可使用多種不同的源數據 (源數據:用於創建數據透視表或數據透視圖的數據清單或表。源數據可以來自 Excel 數據清單或區域、外部資料庫或多維數據集,或者另一張數據透視表。)類型。
工作表數據
您可以將 Microsoft Office Excel 工作表中的數據作為報表的數據來源。該數據應採用列表 (列表:包含相關數據的一系列行,或使用「創建列表」命令作為數據表指定給函數的一系列行。)格式,其列標簽應位於第一行。後續行中的每個單元格都應包含與其列標題相對應的數據。目標數據中不得出現任何空行或空列。Excel 會將列標簽用作報表中的欄位 (欄位:在數據透視表或數據透視圖中,來源於源數據中欄位的一類數據。數據透視表具有行欄位、列欄位、頁欄位和數據欄位。數據透視圖具有系列欄位、分類欄位、頁欄位和數據欄位。)名稱。
使用命名區域
若要使報表的更新更易於進行,請為源區域命名一個名稱 (名稱:代表單元格、單元格區域、公式或常量值的單詞或字元串。名稱更易於理解,例如,「產品」可以引用難於理解的區域「Sales!C20:C30」),並在創建報表時使用該名稱。如果命名區域在擴展後包含了更多數據,則可以刷新 (刷新:更新數據透視表或數據透視圖中的內容以反映基本源數據的變化。如果報表基於外部數據,則刷新將運行基本查詢以檢索新的或更改過的數據)報表來包含新的數據。
Excel 表格
Excel 表格已經採用列表格式,因而是數據透視表不錯的候選源數據。當刷新數據透視表時,Excel 表格中新增和更新的數據會自動包含在刷新操作中。
有關詳細信息,請參閱 Excel 表格概述。
包括匯總Excel 會自動在數據透視表中創建分類匯總和總計。如果源數據包含用「分類匯總」命令(位於「數據」選項卡上的「大綱」組中)創建的自動分類匯總和總計,則應在創建報表前再用該命令將分類匯總和總計刪除。
外部數據源
您可以從資料庫、OLAP 多維數據集或文本文件等位於 Excel 外部的源中檢索數據。例如,對於要匯總和分析的銷售記錄,可以為它們維護一個資料庫。
Office 數據連接文件如果使用 Office 數據連接 (ODC) 文件 (.odc) 為報表檢索外部數據,則可以直接將該數據輸入到數據透視表中。我們建議使用 ODC 文件為報表檢索外部數據。
有關詳細信息,請參閱連接(導入)外部數據、創建、編輯和管理到外部數據的連接和連接屬性。
OLAP 源數據在從 OLAP 資料庫或多維數據集 (多維數據集:一種 OLAP數據結構。多維數據集包含維度,如「國家/地區)/省(或市/自治區)/市(或縣)」,還包括數據欄位,如「銷售額」。維度將各種類型的數據組織到帶有明細數據級別的分層結構中,而數據欄位度量數量。)文件中檢索源數據時,數據只能以轉換為工作表功能的數據透視表或數據透視圖報表的形式返回 Excel。
有關詳細信息,請參閱連接(導入)OLAP 資料庫。
非 OLAP 源數據這是數據透視表或數據透視圖報表使用的基礎數據,該數據來自 OLAP 資料庫之外的源。例如,來自關系資料庫或文本文件中的數據。
簡介:
數據透視表(Pivot Table)是一種互動式的表,可以進行某些計算,如求和與計數等。所進行的計算與數據跟數據透視表中的排列有關。
之所以稱為數據透視表,是因為可以動態地改變它們的版面布置,以便按照不同方式分析數據,也可以重新安排行號、列標和頁欄位。每一次改變版面布置時,數據透視表會立即按照新的布置重新計算數據。另外,如果原始數據發生更改,則可以更新數據透視表。
㈨ 求《自己動手構造編譯系統編譯匯編與鏈接》全文免費下載百度網盤資源,謝謝~
《自己動手構造編譯系統編譯匯編與鏈接》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1ZNUyA_bRKtFBrKVwnetFzg
㈩ 運用編譯系統的設計原理,設計並實現編譯系統的前端詞法分析器和語法分析器
#include <stdio.h>
#include <ctype.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define NULL 0
#define MAX_KEY_NUM 10
#define MAX_BORDER_NUM 6
#define MAX_ARITH_NUM 4
#define MAX_RELATION_NUM 6
#define MAX_CONSTS_NUM 20
#define MAX_LABEL_NUM 20
FILE *fp;
char cbuffer;
char *key[MAX_KEY_NUM]={"if","else","for","while","do","return","break","continue","main","int"};
char *border[MAX_BORDER_NUM]={",",";","{","}","(",")"};
char *arithmetic[MAX_ARITH_NUM]={"+","-","*","/"};
char *relation[MAX_RELATION_NUM]={"<","<=","==",">=",">","="};
char *consts[MAX_CONSTS_NUM];
char *label[MAX_LABEL_NUM];
int constnum=0,labelnum=0;
//===============================================
int search(char searchchar[],int wordtype)
{
int i=0;
switch (wordtype) {
case 1:
for (i=0;i<MAX_KEY_NUM;i++)
{
if (strcmp(key[i],searchchar)==0)
return(i+1);
}
case 2:
{for (i=0;i<MAX_BORDER_NUM;i++)
{
if (strcmp(border[i],searchchar)==0)
return(i+1);
}
return(0);
}
case 3:
{for (i=0;i<MAX_ARITH_NUM;i++)
{
if (strcmp(arithmetic[i],searchchar)==0)
{
return(i+1);
}
}
return(0);
}
case 4:
{for (i=0;i<MAX_RELATION_NUM;i++)
{
if (strcmp(relation[i],searchchar)==0)
{
return(i+1);
}
}
return(0);
}
case 5:
{
for (i=0;i<constnum;i++)
{
if(constnum>0)
if (strcmp(consts[i],searchchar)==0)
{
return(i+1);
}
}
consts[i]=(char *)malloc(sizeof(searchchar));
strcpy(consts[i],searchchar);
constnum++;
return(i);
}
case 6:
{
for (i=0;i<labelnum;i++)
{
if (strcmp(label[i],searchchar)==0)
{
return(i+1);
}
}
label[i]=(char *)malloc(sizeof(searchchar));
strcpy(label[i],searchchar);
labelnum++;
return(i);
}
} // end of switch
}
//===============================================
char alphaprocess(char buffer)
{
int atype;
int i=-1;
char alphatp[20];
while ((isalpha(buffer))||(isdigit(buffer)))
{
alphatp[++i]=buffer;
buffer=fgetc(fp);
}
alphatp[i+1]='\0';
if (atype=search(alphatp,1))
printf("%s (1,%d)\n",alphatp,atype);
else
{
atype=search(alphatp,6);
printf("%s (6,%d)\n",alphatp,atype);
}
return(buffer);
}
//===============================================
char digitprocess(char buffer)
{
int i=-1;
char digittp[20];
int dtype;
while ((isdigit(buffer)))
{
digittp[++i]=buffer;
buffer=fgetc(fp);
}
digittp[i+1]='\0';
dtype=search(digittp,5);
printf("%s (5,%d)\n",digittp,dtype);
return(buffer);
}
//===============================================
char otherprocess(char buffer)
{
int i=-1;
char othertp[20];
int otype,otypetp;
othertp[0]=buffer;
othertp[1]='\0';
if (otype=search(othertp,3))
{
printf("%s (3,%d)\n",othertp,otype-1);
buffer=fgetc(fp);
goto out;
}
if (otype=search(othertp,4))
{
buffer=fgetc(fp);
othertp[1]=buffer;
othertp[2]='\0';
if (otypetp=search(othertp,4))
{
printf("%s (4,%d)\n",othertp,otypetp-1);
goto out;
}
else
othertp[1]='\0';
printf("%s (4,%d)\n",othertp,otype-1);
goto out;
}
if (buffer==':')
{
buffer=fgetc(fp);
if (buffer=='=')
printf(":= (2,2)\n");
buffer=fgetc(fp);
goto out;
}
else
{
if (otype=search(othertp,2))
{
printf("%s (2,%d)\n",othertp,otype-1);
buffer=fgetc(fp);
goto out;
}
}
if ((buffer!='\n')&&(buffer!=' '))
printf("%c error,not a word\n",buffer);
buffer=fgetc(fp);
out: return(buffer);
}
//===============================================
void main()
{
int i;
for (i=0;i<=20;i++)
{
label[i]=NULL;
consts[i]=NULL;
};
if ((fp=fopen("c:\example.c","r"))==NULL)
printf("error");
else
{
cbuffer = fgetc(fp);
while (cbuffer!=EOF)
{
if (isalpha(cbuffer))
cbuffer=alphaprocess(cbuffer);
else if (isdigit(cbuffer))
cbuffer=digitprocess(cbuffer);
else cbuffer=otherprocess(cbuffer);
}
printf("over\n");
getchar();
}
}