Spark入門實戰系列--8.Spark MLlib(上)--機器學習及SparkMLlib簡介

【注】該系列文章以及使用到安裝包/測試數據 可以在《傾情大奉送--Spark入門實戰系列》獲取

1機器學習概念

1.1?機器學習的定義

在維基百科上對機器學習提出以下幾種定義:

l機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能

l機器學習是對能通過經驗自動改進的計算機算法的研究

l機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。一種經常引用的英文定義是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E

可以看出機器學習強調三個關鍵詞:算法、經驗、性能,其處理過程如下圖所示。

clip_image002

上圖表明機器學習是數據通過算法構建出模型并對模型進行評估,評估的性能如果達到要求就拿這個模型來測試其他的數據,如果達不到要求就要調整算法來重新建立模型,再次進行評估,如此循環往復,最終獲得滿意的經驗來處理其他的數據。

1.2?機器學習的分類

1.2.1?監督學習

監督是從給定的訓練數據集中學習一個函數(模型),當新的數據到來時,可以根據這個函數(模型)預測結果。監督學習的訓練集要求包括輸入和輸出,也可以說是特征和目標。訓練集中的目標是由人標注(標量)的。在監督式學習下,輸入數據被稱為“訓練數據”,每組訓練數據有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”、“非垃圾郵件”,對手寫數字識別中的“1”、“2”、“3”等。在建立預測模型時,監督式學習建立一個學習過程,將預測結果與“訓練數據”的實際結果進行比較,不斷調整預測模型,直到模型的預測結果達到一個預期的準確率。常見的監督學習算法包括回歸分析和統計分類:

l? 二元分類是機器學習要解決的基本問題,將測試數據分成兩個類,如垃圾郵件的判別、房貸是否允許等問題的判斷。

l? 多元分類是二元分類的邏輯延伸。例如,在因特網的流分類的情況下,根據問題的分類,網頁可以被歸類為體育、新聞、技術等,依此類推。

監督學習常常用于分類,因為目標往往是讓計算機去學習我們已經創建好的分類系統。數字識別再一次成為分類學習的常見樣本。一般來說,對于那些有用的分類系統和容易判斷的分類系統,分類學習都適用。

監督學習是訓練神經網絡和決策樹的最常見技術。神經網絡和決策樹技術高度依賴于事先確定的分類系統給出的信息。對于神經網絡來說,分類系統用于判斷網絡的錯誤,然后調整網絡去適應它;對于決策樹,分類系統用來判斷哪些屬性提供了最多的信息,如此一來可以用它解決分類系統的問題。

clip_image003

1.2.2?無監督學習

與監督學習相比,無監督學習的訓練集沒有人為標注的結果。在非監督式學習中,數據并不被特別標識,學習模型是為了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見算法包括Apriori算法和k-Means算法。這類學習類型的目標不是讓效用函數最大化,而是找到訓練數據中的近似點。聚類常常能發現那些與假設匹配的相當好的直觀分類,例如基于人口統計的聚合個體可能會在一個群體中形成一個富有的聚合,以及其他的貧窮的聚合。

clip_image005

非監督學習看起來非常困難:目標是我們不告訴計算機怎么做,而是讓它(計算機)自己去學習怎樣做一些事情。非監督學習一般有兩種思路:第一種思路是在指導Agent時不為其指定明確的分類,而是在成功時采用某種形式的激勵制度。需要注意的是,這類訓練通常會置于決策問題的框架里,因為它的目標不是產生一個分類系統,而是做出最大回報的決定。這種思路很好地概括了現實世界,Agent可以對那些正確的行為做出激勵,并對其他的行為進行處罰。

因為無監督學習假定沒有事先分類的樣本,這在一些情況下會非常強大,例如,我們的分類方法可能并非最佳選擇。在這方面一個突出的例子是Backgammon(西洋雙陸棋)游戲,有一系列計算機程序(例如neuro-gammonTD-gammon)通過非監督學習自己一遍又一遍地玩這個游戲,變得比最強的人類棋手還要出色。這些程序發現的一些原則甚至令雙陸棋專家都感到驚訝,并且它們比那些使用預分類樣本訓練的雙陸棋程序工作得更出色。

1.2.3?半監督學習

半監督學習(Semi-supervised Learning)是介于監督學習與無監督學習之間一種機器學習方式,是模式識別和機器學習領域研究的重點問題。它主要考慮如何利用少量的標注樣本和大量的未標注樣本進行訓練和分類的問題。半監督學習對于減少標注代價,提高學習機器性能具有非常重大的實際意義。主要算法有五類:基于概率的算法;在現有監督算法基礎上進行修改的方法;直接依賴于聚類假設的方法等,在此學習方式下,輸入數據部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習數據的內在結構以便合理地組織數據來進行預測。應用場景包括分類和回歸,算法包括一些對常用監督式學習算法的延伸,這些算法首先試圖對未標識數據進行建模,在此基礎上再對標識的數據進行預測,如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(Laplacian SVM)等。

半監督學習分類算法提出的時間比較短,還有許多方面沒有更深入的研究。半監督學習從誕生以來,主要用于處理人工合成數據,無噪聲干擾的樣本數據是當前大部分半監督學習方法使用的數據,而在實際生活中用到的數據卻大部分不是無干擾的,通常都比較難以得到純樣本數據。

clip_image007

1.2.4?強化學習

強化學習通過觀察來學習動作的完成,每個動作都會對環境有所影響,學習對象根據觀察到的周圍環境的反饋來做出判斷。在這種學習模式下,輸入數據作為對模型的反饋,不像監督模型那樣,輸入數據僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入數據直接反饋到模型,模型必須對此立刻做出調整。常見的應用場景包括動態系統以及機器人控制等。常見算法包括Q-Learning 以及時間差學習(Temporal difference learning)。

clip_image009

在企業數據應用的場景下,人們最常用的可能就是監督式學習和非監督式學習的模型。在圖像識別等領域,由于存在大量的非標識的數據和少量的可標識數據,目前半監督式學習是一個很熱的話題。而強化學習更多地應用在機器人控制及其他需要進行系統控制的領域。

1.3?機器學習的常見算法

常見的機器學習算法有:

l? 構造條件概率:回歸分析和統計分類;

l? 人工神經網絡;

l? 決策樹;

l? 高斯過程回歸;

l? 線性判別分析;

l? 最近鄰居法;

l? 感知器;

l? 徑向基函數核;

l? 支持向量機;

l? 通過再生模型構造概率密度函數;

l? 最大期望算法;

l? graphical model:包括貝葉斯網和Markov隨機場;

l? Generative Topographic Mapping

l? 近似推斷技術;

l? 馬爾可夫鏈蒙特卡羅方法;

l? 變分法;

l? 最優化:大多數以上方法,直接或者間接使用最優化算法。

根據算法的功能和形式的類似性,我們可以把算法分類,比如說基于樹的算法,基于神經網絡的算法等等。當然,機器學習的范圍非常龐大,有些算法很難明確歸類到某一類。而對于有些分類來說,同一分類的算法可以針對不同類型的問題,下面用一些相對比較容易理解的方式來解析一些主要的機器學習算法:

1.3.1?回歸算法

回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法。回歸算法是統計機器學習的利器。在機器學習領域,人們說起回歸,有時候是指一類問題,有時候是指一類算法,這一點常常會使初學者有所困惑。常見的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自適應回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。

clip_image011

1.3.2?基于實例的算法

基于實例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數據,然后根據某些近似性把新數據與樣本數據進行比較。通過這種方式來尋找最佳的匹配。因此,基于實例的算法常常也被稱為“贏家通吃”學習或者“基于記憶的學習”。常見的算法包括 k-Nearest Neighbor (KNN),、學習矢量量化(Learning Vector Quantization LVQ)以及自組織映射算法(Self-Organizing MapSOM

clip_image013

1.3.3?正則化方法

正則化方法是其他算法(通常是回歸算法)的延伸,根據算法的復雜度對算法進行調整。正則化方法通常對簡單模型予以獎勵而對復雜算法予以懲罰。常見的算法包括:Ridge RegressionLeast Absolute Shrinkage and Selection OperatorLASSO)以及彈性網絡(Elastic Net)。

clip_image015

1.3.4?決策樹學習

決策樹算法根據數據的屬性采用樹狀結構建立決策模型,決策樹模型常常用來解決分類和回歸問題。常見的算法包括:分類及回歸樹(Classification And Regression Tree CART)、 ID3 (Iterative Dichotomiser 3)C4.5Chi-squared Automatic Interaction Detection (CHAID)Decision Stump、機森林(Random Forest)、多元自適應回歸樣條(MARS)以及梯度推進機(Gradient Boosting MachineGBM)。

clip_image017

1.3.5?貝葉斯學習

貝葉斯方法算法是基于貝葉斯定理的一類算法,主要用來解決分類和回歸問題。常見算法包括:樸素貝葉斯算法、平均單依賴估計(Averaged One-Dependence Estimators AODE)以及 Bayesian Belief NetworkBBN)。

clip_image019

1.3.6?基于核的算法

基于核的算法中最著名的莫過于支持向量機(SVM)了。基于核的算法把輸入數據映射到一個高階的向量空間, 在這些高階向量空間里, 有些分類或者回歸問題能夠更容易解決。常見的基于核的算法包括:支持向量機(Support Vector MachineSVM)、徑向基函數(Radial Basis FunctionRBF)以及線性判別分析(Linear Discriminate AnalysisLDA)等。

clip_image021

1.3.7?聚類算法

聚類就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點或者分層的方式對輸入數據進行歸并。所有的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括 k-Means 算法以及期望最大化算法(Expectation MaximizationEM)。

clip_image023

1.3.8?關聯規則學習

關聯規則學習通過尋找最能夠解釋數據變量之間關系的規則,來找出大量多元數據集中有用的關聯規則。常見算法包括 Apriori 算法和 Eclat 算法等。

clip_image025

1.3.9?人工神經網絡算法

人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法。通常用于解決分類和回歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法(其中深度學習就是其中的一類算法,我們會單獨討論)。重要的人工神經網絡算法包括:感知器神經網絡(Perceptron Neural Network)、反向傳遞(Back Propagation)、Hopfield 網絡、自組織映射(Self-Organizing Map, SOM)、學習矢量量化(Learning Vector QuantizationLVQ)。

clip_image027

1.3.10?深度學習算法

深度學習算法是對人工神經網絡的發展,在近期贏得了很多關注,特別是百度也開始發力深度學習后,更是在國內引起了很多關注。在計算能力變得日益廉價的今天,深度學習試圖建立大得多也復雜得多的神經網絡。很多深度學習的算法是半監督式學習算法,用來處理存在少量未標識數據的大數據集。常見的深度學習算法包括:受限波爾茲曼機(Restricted Boltzmann Machine RBN)、 Deep Belief NetworksDBN)、卷積網絡(Convolutional Network)、堆棧式自動編碼器(Stacked Auto-encoders)。

clip_image029

1.3.11?降低維度算法

像聚類算法一樣,降低維度算法試圖分析數據的內在結構,不過降低維度算法是以非監督學習的方式,試圖利用較少的信息來歸納或者解釋數據。這類算法可以用于高維數據的可視化或者用來簡化數據以便監督式學習使用。常見的算法包括:主成份分析(Principle Component Analysis PCA)、偏最小二乘回歸(Partial Least Square RegressionPLS)、 Sammon 映射、多維尺度(Multi-Dimensional Scaling, MDS)、投影追蹤(Projection Pursuit)等。

clip_image031

1.3.12?集成算法

集成算法用一些相對較弱的學習模型獨立地對同樣的樣本進行訓練,然后把結果整合起來進行整體預測。集成算法的主要難點在于究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。常見的算法包括:BoostingBootstrapped AggregationBagging)、AdaBoost、堆疊泛化(Stacked Generalization Blending)、梯度推進機(Gradient Boosting Machine, GBM)、隨機森林(Random Forest)。

clip_image033

2Spark MLlib介紹

Spark之所以在機器學習方面具有得天獨厚的優勢,有以下幾點原因:

1)機器學習算法一般都有很多個步驟迭代計算的過程,機器學習的計算需要在多次迭代后獲得足夠小的誤差或者足夠收斂才會停止,迭代時如果使用HadoopMapReduce計算框架,每次計算都要讀/寫磁盤以及任務的啟動等工作,這回導致非常大的I/OCPU消耗。而Spark基于內存的計算模型天生就擅長迭代計算,多個步驟計算直接在內存中完成,只有在必要時才會操作磁盤和網絡,所以說Spark正是機器學習的理想的平臺。

2)從通信的角度講,如果使用HadoopMapReduce計算框架,JobTrackerTaskTracker之間由于是通過heartbeat的方式來進行的通信和傳遞數據,會導致非常慢的執行速度,而Spark具有出色而高效的AkkaNetty通信系統,通信效率極高。

MLlib(Machine Learnig lib) Spark對常用的機器學習算法的實現庫,同時包括相關的測試和數據生成器。Spark的設計初衷就是為了支持一些迭代的Job, 這正好符合很多機器學習算法的特點。在Spark官方首頁中展示了Logistic Regression算法在SparkHadoop中運行的性能比較,如圖下圖所示。

clip_image035

可以看出在Logistic Regression的運算場景下,SparkHadoop快了100倍以上!

MLlib目前支持4種常見的機器學習問題: 分類、回歸、聚類和協同過濾,MLlibSpark整個生態系統中的位置如圖下圖所示。

clip_image037

MLlib基于RDD,天生就可以與Spark SQLGraphXSpark Streaming無縫集成,以RDD為基石,4個子框架可聯手構建大數據計算中心!

MLlibMLBase一部分,其中MLBase分為四部分:MLlibMLIML OptimizerMLRuntime

l? ML Optimizer會選擇它認為最適合的已經在內部實現好了的機器學習算法和相關參數,來處理用戶輸入的數據,并返回模型或別的幫助分析的結果;

l? MLI 是一個進行特征抽取和高級ML編程抽象的算法實現的API或平臺;

l? MLlibSpark實現一些常見的機器學習算法和實用程序,包括分類、回歸、聚類、協同過濾、降維以及底層優化,該算法可以進行可擴充; MLRuntime 基于Spark計算框架,將Spark的分布式計算應用到機器學習領域。

clip_image039

3Spark MLlib架構解析

從架構圖可以看出MLlib主要包含三個部分:

l? 底層基礎:包括Spark的運行庫、矩陣庫和向量庫;

l? 算法庫:包含廣義線性模型、推薦系統、聚類、決策樹和評估的算法;

l? 實用程序:包括測試數據的生成、外部數據的讀入等功能。

clip_image041

3.1?MLlib的底層基礎解析

底層基礎部分主要包括向量接口和矩陣接口,這兩種接口都會使用Scala語言基于NetlibBLAS/LAPACK開發的線性代數庫Breeze

MLlib支持本地的密集向量和稀疏向量,并且支持標量向量。

MLlib同時支持本地矩陣和分布式矩陣,支持的分布式矩陣分為RowMatrixIndexedRowMatrixCoordinateMatrix等。

關于密集型和稀疏型的向量Vector的示例如下所示。

clip_image043

????? clip_image045

疏矩陣在含有大量非零元素的向量Vector計算中會節省大量的空間并大幅度提高計算速度,如下圖所示。

clip_image047

標量LabledPoint在實際中也被大量使用,例如判斷郵件是否為垃圾郵件時就可以使用類似于以下的代碼:

clip_image049

可以把表示為1.0的判斷為正常郵件,而表示為0.0則作為垃圾郵件來看待。

對于矩陣Matrix而言,本地模式的矩陣如下所示。

clip_image051clip_image053

分布式矩陣如下所示。

clip_image051[1]?clip_image055

RowMatrix直接通過RDD[Vector]來定義并可以用來統計平均數、方差、協同方差等:

clip_image057

clip_image059

IndexedRowMatrix是帶有索引的Matrix,但其可以通過toRowMatrix方法來轉換為RowMatrix,從而利用其統計功能,代碼示例如下所示。

clip_image061

CoordinateMatrix常用于稀疏性比較高的計算中,是由RDD[MatrixEntry]來構建的,MatrixEntry是一個Tuple類型的元素,其中包含行、列和元素值,代碼示例如下所示:

clip_image063

3.2?MLlib的算法庫分析

下圖是MLlib算法庫的核心內容。

clip_image065

在這里我們分析一些Spark中常用的算法:

3.2.1?分類算法

分類算法屬于監督式學習,使用類標簽已知的樣本建立一個分類函數或分類模型,應用分類模型,能把數據庫中的類標簽未知的數據進行歸類。分類在數據挖掘中是一項重要的任務,目前在商業上應用最多,常見的典型應用場景有流失預測、精確營銷、客戶獲取、個性偏好等。MLlib 目前支持分類算法有:邏輯回歸、支持向量機、樸素貝葉斯和決策樹。

案例:導入訓練數據集,然后在訓練集上執行訓練算法,最后在所得模型上進行預測并計算訓練誤差。

import org.apache.spark.SparkContext

import org.apache.spark.mllib.classification.SVMWithSGD

import org.apache.spark.mllib.regression.LabeledPoint

?

// 加載和解析數據文件

val data = sc.textFile("mllib/data/sample_svm_data.txt")

val parsedData = data.map { line =>

? val parts = line.split(' ')

? LabeledPoint(parts(0).toDouble, parts.tail.map(x => x.toDouble).toArray)

}

?

// 設置迭代次數并進行進行訓練

val numIterations = 20

val model = SVMWithSGD.train(parsedData, numIterations)

?

// 統計分類錯誤的樣本比例

val labelAndPreds = parsedData.map { point =>

val prediction = model.predict(point.features)

(point.label, prediction)

}

val trainErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / parsedData.count

println("Training Error = " + trainErr)

3.2.2?回歸算法

回歸算法屬于監督式學習,每個個體都有一個與之相關聯的實數標簽,并且我們希望在給出用于表示這些實體的數值特征后,所預測出的標簽值可以盡可能接近實際值。MLlib 目前支持回歸算法有:線性回歸、嶺回歸、Lasso和決策樹。

案例:導入訓練數據集,將其解析為帶標簽點的RDD,使用 LinearRegressionWithSGD 算法建立一個簡單的線性模型來預測標簽的值,最后計算均方差來評估預測值與實際值的吻合度。

import org.apache.spark.mllib.regression.LinearRegressionWithSGD

import org.apache.spark.mllib.regression.LabeledPoint

?

// 加載和解析數據文件

val data = sc.textFile("mllib/data/ridge-data/lpsa.data")

val parsedData = data.map { line =>

? val parts = line.split(',')

? LabeledPoint(parts(0).toDouble, parts(1).split(' ').map(x => x.toDouble).toArray)

}

?

//設置迭代次數并進行訓練

val numIterations = 20

val model = LinearRegressionWithSGD.train(parsedData, numIterations)

?

// 統計回歸錯誤的樣本比例

val valuesAndPreds = parsedData.map { point =>

val prediction = model.predict(point.features)

(point.label, prediction)

}

val MSE = valuesAndPreds.map{ case(v, p) => math.pow((v - p), 2)}.reduce(_ + _)/valuesAndPreds.count

println("training Mean Squared Error = " + MSE)

3.2.3?聚類算法

聚類算法屬于非監督式學習,通常被用于探索性的分析,是根據“物以類聚”的原理,將本身沒有類別的樣本聚集成不同的組,這樣的一組數據對象的集合叫做簇,并且對每一個這樣的簇進行描述的過程。它的目的是使得屬于同一簇的樣本之間應該彼此相似,而不同簇的樣本應該足夠不相似,常見的典型應用場景有客戶細分、客戶研究、市場細分、價值評估。MLlib 目前支持廣泛使用的KMmeans聚類算法。

案例:導入訓練數據集,使用 KMeans 對象來將數據聚類到兩個類簇當中,所需的類簇個數會被傳遞到算法中,然后計算集內均方差總和 (WSSSE),可以通過增加類簇的個數 k 來減小誤差。 實際上,最優的類簇數通常是 1,因為這一點通常是WSSSE圖中的 “低谷點”。

import org.apache.spark.mllib.clustering.KMeans

?

// 加載和解析數據文件

val data = sc.textFile("kmeans_data.txt")

val parsedData = data.map( _.split(' ').map(_.toDouble))

// 設置迭代次數、類簇的個數

val numIterations = 20

val numClusters = 2

?

// 進行訓練

val clusters = KMeans.train(parsedData, numClusters, numIterations)

?

// 統計聚類錯誤的樣本比例

val WSSSE = clusters.computeCost(parsedData)

println("Within Set Sum of Squared Errors = " + WSSSE)

3.2.4?協同過濾

協同過濾常被應用于推薦系統,這些技術旨在補充用戶-商品關聯矩陣中所缺失的部分。MLlib當前支持基于模型的協同過濾,其中用戶和商品通過一小組隱語義因子進行表達,并且這些因子也用于預測缺失的元素。

案例:導入訓練數據集,數據每一行由一個用戶、一個商品和相應的評分組成。假設評分是顯性的,使用默認的ALS.train()方法,通過計算預測出的評分的均方差來評估這個推薦模型。

import org.apache.spark.mllib.recommendation.ALS

import org.apache.spark.mllib.recommendation.Rating

?

// 加載和解析數據文件

val data = sc.textFile("mllib/data/als/test.data")

val ratings = data.map(_.split(',') match {

case Array(user, item, rate) => Rating(user.toInt, item.toInt, rate.toDouble)

})

?

// 設置迭代次數

val numIterations = 20

val model = ALS.train(ratings, 1, 20, 0.01)

?

// 對推薦模型進行評分

val usersProducts = ratings.map{ case Rating(user, product, rate) => (user, product)}

val predictions = model.predict(usersProducts).map{

case Rating(user, product, rate) => ((user, product), rate)

}

val ratesAndPreds = ratings.map{

case Rating(user, product, rate) => ((user, product), rate)

}.join(predictions)

val MSE = ratesAndPreds.map{

case ((user, product), (r1, r2)) => math.pow((r1- r2), 2)

}.reduce(_ + _)/ratesAndPreds.count

println("Mean Squared Error = " + MSE)

3.3?MLlib的實用程序分析

實用程序部分包括數據的驗證器、Label的二元和多元的分析器、多種數據生成器、數據加載器。

clip_image067

?

4參考資料

(1)Spark官網 mlllib說明 ?http://spark.apache.org/docs/1.1.0/mllib-guide.html

(2)《機器學習常見算法分類匯總》 http://www.ctocio.com/hotnews/15919.html

轉載于:https://www.cnblogs.com/shishanyuan/p/4747761.html

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

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

相關文章

cadz軸歸零命令_CAD圖形Z軸坐標歸零方法

AutoCAD2012 64位精簡版中文免安裝版軟件大小:561.5M授權方式:免費軟件立即下載CAD軟件怎樣將圖形坐標Z軸歸零?當我們遇到CAD圖形標高一致的時候,如果想要讓圖形統一標高,就需要先將圖形坐標Z軸歸零。本次小編為您整理了CAD軟件里…

net以execl做數據庫_[原創]Net實現Excel導入導出到數據庫(附源碼)

關于數據庫導出到Excel和SQLServer數據導出到Excel的例子,在博客園有很多的例子,自己根據網上搜集資料,自己做了亦歌簡單的demo,現在分享出來供初學者學習交流使用。一、數據庫導入導出到Excel,比較流行的有兩種方式&a…

計算機基礎cpu知識,CPU基礎知識: DIY裝機小白必看的CPU知識掃盲

CPU也就是中央處理器,全拼為Central Processing Unit,在計算機中可以比喻成人的大腦。它是一塊超大規模的集成電路,是一臺計算機的運算核心和控制核心。它的功能主要是解釋計算機指令以及處理計算機軟件中的數據。下面華強電子網的小編分享一…

const 用法

static NSString * const testString "google"; //表示testString這個指針不能被修改,如若對testString賦值則會報錯:testString = "hello";編譯器會報錯 static NSString const *testString "google"; //表…

mvc html validator,ASP.NET MVC實現Validation驗證器擴展

今天介紹在ASP.NET MVC實現Validation驗證器擴展,通過使用Controller驗證并不是最好的方法:驗證過于分散,容易造成重復代碼,不利于維護與擴展,因此本節將使用MVC默認綁定器(DefaultModelBinder)中包含了驗證架構,并實現Validation驗證器擴展&…

git 幾種還原版本_Git恢復之前版本的兩種方法reset、revert(圖文詳解)

一、問題描述在利用github實現多人合作程序開發的過程中,我們有時會出現錯誤提交的情況,此時我們希望能撤銷提交操作,讓程序回到提交前的樣子,本文總結了兩種解決方法:回退(reset)、反做(revert)。二、背景知識git的版…

自定義列表視圖

通過繼承BaseAdapter寫一個子類,可以創建自定義列表視圖: public class MyListAdapter extends BaseAdapter { private LayoutInflater mInflater;//聲明一個LayoutInflater類變量 private Context mContext;//聲明一個Context類變量 priva…

計算機專業答辯模板,論文答辯模板-計算機專業.ppt

《論文答辯模板-計算機專業.ppt》由會員分享,可在線閱讀,更多相關《論文答辯模板-計算機專業.ppt(9頁珍藏版)》請在裝配圖網上搜索。1、基于S2SH論壇系統的設計與實現,專業: 姓名: 學號: 指導教師:,(附)論文…

springmvc請求返回一個字符_SpringMVC系列之Web利器SpringMVC

課程簡介:課程目標:了解SpringMVC和Spring的關系,能夠使用SpringMVC框架開發自己的Web應用。整合Spring , SpringMVC , MyBatis搭建項目開發環境,理解三層架構和MVC模式適用人群:適合對Java基礎知識應用自如&#xff0…

一次完整較為滲透過程

步驟一: 利用阿D瀏覽器通過https://s.bt.gg 注入關鍵字掃描發現注入點: http://www.rqyl.gov.cn/*****.php?ID153 用啊D跑不出賬號密碼 步驟二: 手工注入http://www.rqyl.gov.cn/*****.php?ID153 and 11 、and12出錯 猜字段ht…

html5 filereader讀取文件,H5的FileReader分布讀取文件應該如何使用以及其方法簡介...

這次給大家帶來H5的FileReader分布讀取文件應該如何使用以及其方法簡介,H5的FileReader分布讀取文件的使用以及其方法簡介的注意事項有哪些,下面就是實戰案例,一起來看一下。先介紹一下H5中FileReader的一些方法以及事件FileReader方法名稱 作…

mysql 查詢某一主鍵在那些表中中被設置為外鍵了

use information_schema; show tables; select * from KEY_COLUMN_USAGE where COLUMN_NAMEareaid; 轉載于:https://www.cnblogs.com/liaojie970/p/4799750.html

室內空氣流動原理圖_新風系統原理圖—新風系統原理介紹

如今我們在進行新家的裝修的時候,不少人為了家人的健康著想,都在選購家電的同時會選擇安裝一款新風系統。但是盡管如此,大家對新風系統原理其實并不了解,更不要提新風系統各部分的原理了,下面小編就結合新風系統原理圖…

計算機網絡線路爭用,計算機網絡系統集成復習要點

計算機網絡系統集成復習要點計算機網絡系統集成復習要點1.在信息領域,對于系統集成一般分為軟件集成、硬件集成和網絡系統集成。2.按網絡覆蓋范圍的大小,將計算機網絡分為局域網(LAN)、城域網(MAN)、廣域網(WAN)和互聯網。3. 計算機網絡拓撲結構是指一個…

mrsql查詢第二高的成績_mysql-查找用戶的最高分數和相關的詳細信息

我有一個表,用戶可以在其中存儲分數和有關該分數的其他信息(例如,分數注釋或花費的時間等).我想要一個mysql查詢,該查詢可找到每個用戶的個人最佳成績及其相關的注釋和時間等我嘗試使用的是這樣的:SELECT *,MAX(score)FROM table GROUP BY(用戶)這樣做的問題是,雖然…

centos 7 防火墻和端口配置

開啟redis端口,修改防火墻配置文件 vi /etc/sysconfig/iptables 加入端口配置 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379:7000 -j AC…

計算機網絡實驗11.6.1,6.111 2004春季課程:數位系統概論實驗(Introductory Digital Systems Laboratory, Spring 2004)...

摘要:Lectures and labs on digital logic, flipflops, PALs, counters, timing, synchronization, finite-state machines, and microprogrammed systems prepare students for the design and implementation of a final project of their choice: games, music, …

v380pro設備連接失敗_天貓精靈可以連接臺式電腦使用嗎?需要什么東西? 安裝操作是哪幾個步驟? 最好有圖片解說!...

使用語音將天貓精靈調到【藍牙配對】;打開電腦的藍牙適配界面,讓電腦找到天貓精靈,稍等片刻,點擊【使用遠程裝置的揚聲器聆聽來自此PC的音頻】后的連接;最后調整音量即可。以下是詳細介紹:1、對天貓精靈說【…

SWOT分析是神馬?

SWOT分析是思維的工具來理解事物的方式。人生在世,作為一個獨立的實體,不可避免地需要思考的問題。除非你是豬。豬比這更聰明。眠質量,都要完爆白領,藍領和金領們。SWOT分析分為四個象限。我們用一頭名豬——麥兜來打個例如就清楚…

hive 日誌怎麼查看_Hive各個日志里都存放了什么信息?

審計日志首先,對于審計日志來說,記錄了某個時間點某個用戶從哪個IP發起對HiveServer或者MetaStore的請求以及記錄執行的語句是什么。如下的HiveServer審計日志,表示在2016-02-01 14:51:22 用戶user_chen向HiveServer發起了show tables請求&am…