數據驅動設計:如何用A/B測試提升用戶體驗

来源:https://www.cnblogs.com/shuzhiwuyu/archive/2019/05/05/10812847.html
-Advertisement-
Play Games

A/B測試本質上是一種線上實驗。本篇把業務中常見的概念與A/B測試專業術語進行對應,並額外介紹其他實用且重要的概念。 ...


 

文章發佈於公號【數智物語】 (ID:decision_engine),關註公號不錯過每一篇乾貨。

 

 

 

作者 | [美]羅謝爾·肯,伊麗莎白F.邱吉爾

內容出自《數據驅動設計:A/B測試提升用戶體驗》一書

來源 | 大數據(ID:hzdashuju)

 

導讀:設計師最關註的可能就是提供良好的用戶體驗。良好的業務指標應時時把用戶考慮在內。當希望藉助數據更好地瞭解用戶時,面臨的第一個問題是選擇哪些用戶進行數據收集。

 

通過高效的實驗方法收集用戶數據,將在用戶行為多樣性、相似性、差異性及設計對用戶影響等方面獲得大量洞察。實際上,實驗是一種與用戶對話的方法,能瞭解用戶的想法。收集實驗數據有助於落實“用戶至上”的理念,並且在打造最佳體驗的前提下進行設計決策。

 

A/B測試本質上是一種線上實驗。它們的概念幾乎相同,都是設置變數,並與對照組衡量比對。但久而久之,A/B測試形成了自己的一套與現有業務用語更加一致的表述。接著,我們將把業務中常見的概念與A/B測試專業術語進行對應,並額外介紹其他實用且重要的概念。

 

 

本文將利用一個形象的比喻幫助闡述一些概念與場景。

 

我們邀請你扮演夏令營的擁有者。每年,你將迎接大約200名兒童,並將與他們一起遠足,開展戶外活動,一同進餐。由於夏令營的規模很大且活動豐富,一些營員的反饋也許不能代表整體營員的感受。

 

夏令營已運營了一些年頭,每年都有一些老營員光顧,但這畢竟是在做生意,你希望能夠持續吸引更多新成員。夏令營是一個迴圈往複的過程,這也解釋了你為何希望採用新方式來改進夏令營的體驗,進而提升你的業務。

 

01線上用戶抽樣

 

在沖向營地的比喻中,我們探討了應如何分配小屋中的營員以達到測試的目標。這個部分對A/B測試來說極其關鍵。樣本量很大時,即使實驗分配有細小差異,也會幹擾對照條件,導致混亂不可靠的實驗結果。這是為何進行隨機分配的原因。隨機分配使得各組情況基本保持一致。

 

到目前為止,我們一直在談論不同的條件。比如,實驗組與對照組。A/B測試中,這些條件通常被稱作測試單元。這與我們曾經介紹過的概念相同:測試單元指包含隨機分配樣本的各個體驗組,基於不同的方法產生變化。

 

01用戶隊列與細分

 

當希望藉助數據更好地瞭解用戶時,面臨的第一個問題是選擇哪些用戶進行數據收集。研究合適的用戶群體非常重要,並將影響研究結果。

 

用戶群體多種多樣。將用戶通過兩種方式劃分成不同的隊列或進行細分,有助於根據不同的用戶行為或動機獲取不同的洞察。相比將用戶整體當作一個大組,你能夠通過這種方式觀察到更多有價值的信息。

 

隊列是一組擁有共同經歷的用戶群體。這種經歷也許是基於時間的(同一時間註冊產品或服務的用戶)或由某些因素造成的(例如,畢業於2015年的學生)。

 

例如,許多人在1月開始使用你的產品及服務,也許是因為他們在聖誕節購買了手機。與其他時間加入的用戶相比,這些用戶在動機或在其他方面有所差異。回到夏令營的比喻,一組用戶可能代表2016年夏季第一批營員。當時開展的活動類型以及營銷宣傳構建了夏令營的基調與營員的期待。

 

或者,你也可以基於人口統計因素等更加穩定的特征(例如,性別、年齡、國籍)或行為特征(例如,新用戶、高級用戶)將用戶群體細分成不同群組。夏令營的細分方式也許是基於年齡或居住城市,比如紐約。營員的成長地點與年齡都有可能影響他們所熱衷的營地活動類型。

 

現在,需要意識到,基於不同需求的不同分組對所提供的產品或體驗可能產生不同的反應。

 

比如,據Coursera前任首席執行官John Ciancutti所述,線上課程學習網站Coursera在打造產品之初考慮了幾種不同的用戶群體:終身學習者、有經驗的專業人士、缺乏經驗的專業人士。不同用戶的需求不同,他們通過不同方式使用產品,或多或少為Coursera產品買單。

 

當你思考A/B測試時,選取哪種用戶隊列或細分群體進行測試非常關鍵。集中對單一隊列用戶進行抽樣有助於深入瞭解某特定用戶群體所面臨的特殊問題與需求。

 

比如,你決定關註其中一組用戶,即2015年第一批加入夏令營的營員,而從其他相似營員中,也許能夠獲得更多有意義的洞察。比如,處於中學階段、擁有相似家庭背景的營員。因為在2015年你只接收中學生,主要是紐約附近的郊區居民。

 

但假如你只對此用戶隊列進行研究,數據結果將無法適用於其他類型的潛在營員,比如家庭營員(假如改造成了家庭營)、高中營員,或來自西海岸、其他國家的營員,因為他們的信息沒在初始用戶隊列中體現。

 

如你所知,A/B測試的樣本將決定哪些洞察可以進行大範圍推廣,所以應推廣那些從有代表性的用戶樣本中得到的洞察。

 

 

02人口統計信息

 

有時,你希望基於更穩定的特征對用戶進行細分,比如人口統計特征。以下問題將幫助你確定需要瞭解的信息類型,以及如何收集此類信息:

 

  • 可基於用戶收集哪些基礎統計信息(假設你已通過註冊流程中的問題瞭解了你的用戶,或想通過購買用戶報告瞭解那些尚未成為你的用戶的目標受眾)?

  • 居住地點、年齡、性別、種族、身體是否健全,以及收入等信息會如何影響與新的體驗相關的用戶需求?

  • 用戶有哪些行為習慣?時間或地點信息會對這些行為產生哪些影響?

  • 用戶的現有設備有哪些?

  • 用戶的價值觀和產品期望是什麼?

  • 用戶對技術、設備和互聯網的接受度與經驗如何?對於使用新技術或體驗的態度是什麼?

 

當你試圖瞭解更多用戶信息時,並非所有這些問題都是相關的,但希望你可以瞭解到,收集的信息與數據將如何影響你的設計。隨著時間的推移和用戶群體的不斷發展與增長,你需要不斷適應和調整已有經驗。正因如此,瞭解用戶、收集用戶數據將是一個長期而持續的過程。

 

03新用戶與現有用戶

 

在大多數產品及設計決策中,你可能希望在現有用戶的基礎上,拓展新用戶。數據可以幫助你更多地瞭解現有用戶與未來潛在用戶。從新用戶還是現有用戶中進行抽樣是A/B測試中一個至關重要的考慮因素。

 

現有用戶是擁有先前產品或服務使用經驗的群體。因為如此,他們才帶著先入為主的觀念想象你的產品或服務。這些已習得的行為會影響他們的思考方式、期待,以及他們如何使用你的產品或服務的新功能,這些都是針對現有用戶進行新功能測試時需要考慮的重要因素。

 

相比現有用戶,新用戶沒有相關的產品使用經驗。當你試圖拓展業務,你更希望瞭解新用戶,因為他們不會受現有產品體驗的影響。

 

為了生動闡述新用戶與現有用戶之間的差異,假定你計劃在淡季調整營地佈局,將盥洗室調整到離餐廳更近的位置。之前的佈局如圖2-5所示。

 

▲圖2-5:舊的佈局圖。老營員已經養成步行至小木屋外側街道,再步行至盥洗室的習慣

 

位置調整後你會發現,住在3號木屋的老營員步行路程增加了,而新營員選擇了線路更短的直線抵達盥洗室。一切都在情理之中,他們基於已有經驗選擇線路。返營的老營員需學習新的路線,而之前的行為習慣根深蒂固,他們總不由自主地選擇這條道路,無論什麼情況。

 

相比之下,新營員由於不受盥洗室最初位置與舊有習慣的干擾,能夠輕易找出抵達盥洗室的最近路線。圖2-6體現了這些行為差異。

 

▲圖2-6:新老營員前往盥洗室的路線。老營員的已有習慣影響了他們的路線選擇,即使小木屋位置有了變動。新營員不受影響,會選擇一條更接近直線的路線

 

這類已習得的行為習慣將引起A/B測試偏差,因此要註意,參與測試的用戶是哪種類型。

 

規劃實驗時間時也要考慮“學習效應”。谷歌的Jon Wiley分享了他的相關經驗。產品體驗調整後,用戶需要一段時間剋服已習得的經驗或行為帶來的干擾。他說:

 

當我們進行了一些視覺上或任何明顯的調整時,因為學習效應曲線,我們會採用更長的實驗周期。我們知道,當用戶受到全新界面或設計帶來的衝擊時,會產生難以預料的反應及行為。

 

幾年前在設計改版時,我們做了一個重大的視覺調整。A/B測試的結果一次次告訴我們,此類改變,需要很長的學習時間。這意味著改動後的最初一段時間,我們的數據指標將非常混亂,之後會趨於穩定。

 

這是因為,一個人需要花費幾倍時間來適應新的體驗,形成所期望的正常或更好的行為習慣。不同改動對應的適應時間也不同。較小的調整,學習曲線對應的時間更短。

 

我曾經是2010年搜索引擎第一次重大視覺調整的首席設計師之一。作為設計師,我對自己的設計非常有信心。然而,指標結果表明,新設計的接受度並不是很好。這讓我完全不能接受。於是我開始尋找其中的問題,與分析師和工程師緊密合作,深入研究這些數據。

 

因為學習效應,第一件事就是提出問題:“為什麼我們不看看高頻用戶的數據呢?就是那些經常使用谷歌搜索、大量輸入問題、進行頻繁搜索的用戶。他們的數據結果如何?”

 

結果發現,高頻用戶組的數據有很多差異。我們所擔心的幾個部分的數據相對好很多。這是我們得到的第一個線索——也許一切都與學習效應有關。我們決定延長實驗時間。然後發現,相當長一段時間後,低頻用戶和中頻用戶的行為開始逐漸與高頻用戶保持一致。

 

這是一個非常清晰的案例,Jon積極地定義探索設計方案的衡量過程及結果。當設計師對數據結果感到好奇,這會促使他們更積極地推進瞭解他們試圖影響的用戶潛在行為背後的真實原因。

 

除了習得的行為習慣效應,你也需要考慮現有用戶及潛在用戶之間人口統計特征方面的差異。比如,現有用戶相對潛在用戶可能存在統計偏差。

 

假如你的最初方案強烈吸引著技術群體及年輕受眾,那麼很有可能,現有用戶樣本中年輕用戶及技術用戶的占比將超過總體的平均水平。那麼你需要好好思考一下,假如你的原始用戶正是一年內你所期望的群體類型,那麼你會繼續以技術群體作為目標用戶,還是希望得到更多主流用戶的青睞,減少技術用戶的份額?

 

與此類似,當你考慮吸收新用戶時,你認為未來的用戶人口統計特征是什麼樣的?正如之前提到過,你希望確保你所瞭解的用戶能夠代表未來的潛在用戶。

 

我們介紹了3個關於A/B測試用戶樣本的註意事項:你希望在實驗結果中得到哪些用戶隊列或細分用戶的信息,哪些人口統計的考量是互相關聯的,你對哪類用戶更感興趣,新用戶還是現有用戶?

 

你應當在每一次A/B測試前重新審視這三個問題。同時花些時間考慮前期的用戶抽樣以確保從正確的受眾中收集到合適的洞察,這是A/B測試有效進行的關鍵。

 

 

02指標:A/B測試的因變數

 

目前為止,我們介紹了一些A/B測試從用戶總體中抽樣的考量事項,同時簡要介紹了測試單元的概念。接下來,我們將回顧一下A/B測試中的因變數。因變數指觀察到的自變數所引起的結果。本節中,我們希望更為具體地瞭解A/B測試中的因變數通常有哪些。

 

一般來說,度量(measure)指觀察、捕捉與計算得到的信息。比如,度量可能是網站某個頁面的用戶訪問量,或成功完成某個流程的人數。

 

度量指標(metric)指一種預設的評估基準,具有一定的商業價值。指標在某種意義上是若幹度量比對後的結果,通常類似於比率。使用指標是因為它能夠提供令人信服的信息,以瞭解業務或設計的健康狀況。採集率、留存率與活躍率都是指標。

 

指標是A/B測試中的因變數,即你所衡量的、用於判定測試結果的變數。比如,沖向營地中,指標是時間,尤其指從起始位置到營地花費的時間。

 

通常情況下,指標幫助你度量與量化設計或產品改變產生的影響,因而衡量用戶行為變化導致的成功或失敗。主要通過企業關鍵指標來觀察這些改變。

 

關鍵指標(key metric)是業務的核心,是希望提升的核心指標,是設計是否成功的判定因素。它應以驅動業務成功的指標為基準——你可以認為它是一種與成功相關的用戶行為的衡量方法。

 

通常來說,你希望增加一些對業務至關重要的指標(比如用戶留存率或轉化率,即採取預期行動的用戶占比),那麼這些指標便決定你的設計成功與否。然而在開展測試以及進行結果分析時,你應當考慮如何定義更多新的業務指標。這些指標將數據、設計原則與業務緊密結合在一起。

 

一個例子來自線上學習平臺Coursera。Coursera採用一種證書驅動的商業模式,即從用戶完成課程後的證書(資質證書)購買費用中賺錢。關鍵指標之一是售賣的證書數量,或證書購買帶來的收入。

 

你也許對此表示懷疑且理由充分:Coursera的課程通常以13周為一個周期,衡量設計改動對指標的影響將花費很長時間,這不現實。於是,John Ciancutti詳細闡述了Coursera確定其他指標的過程,這些指標可直接監測用戶行為造成的影響:

 

Coursera的商業模式是驅動用戶購買證書,購買的提前是完成課程,所以我們希望用戶進行課程學習,於是劃分了課程模塊,用戶完成的課程模塊數量與完成度存在一些關聯。在此之前,我們還發現了令人有所啟發的兩件事。

 

一是:他們是否通過了首次測驗?這很重要。我們可以提前提供教材與課程內容,以便他們更早測驗,因為學習者會得到更多投資。

 

二是:他們會分兩到三次完成課程。這是出於一種承諾。假如你計劃分兩天戒煙,你會想:“我不打算第三天仍然繼續,雖然兩天完成很困難。但我不想全部的努力付之東流。”

 

通過這兩種方式,你可以將整體業務目標拆分成幾個部分進行測試,使團隊更快地進行迭代。

 

 

假如不能輕鬆確認關鍵指標造成的影響,則可選擇代理指標。這類指標能夠衡量用戶行為,與相關聯的關鍵指標一樣,能夠影響用戶行為。

 

代理指標比關鍵指標或主導指標更易衡量你已成功改變了用戶行為。為了選擇合適的代理指標,需尋找與關鍵指標密切相關的指標,同時思考,哪些跡象能夠及早暗示用戶已逐漸產生了預期行為。

 

藉助一些關鍵指標,可以立即得到答案,例如,如果衡量收入,每次課程結束時,你就能確認用戶是否有購買行為。

 

由此可以發現,A/B測試很大一部分的設計工作量集中在衡量指標的選擇上,即追蹤哪些數據類型,如何進行決策?

 

你所處的業務領域將影響對業務整體健康程度與成功標準的衡量。業務健康狀況是一個極其複雜的概念,包含由大量不同類型的度量編織成的一條“業務底線”以定義業務的可行性。

 

類似指標包括工程分析(服務交付與穩健性指標)、業務分析指標(關註於盈虧平衡及商業影響評估)及市場與業務競爭力分析

 

最終,無論你關註一組還是多組迥然不同的用戶,當今市場的動態質量表明作為設計師,我們應關註用戶的行為。雖然你的工作可能主要集中在用戶體驗設計上,但它怎樣影響業務狀況的核心指標值得你再三思考。你的工作與其他度量指標的關聯取決於三件事:

 

  • 所處業務類型。

  • 收入模型。

  • 現有業務的成熟度情況。

 

你的答案將決定你期望收集的數據類型。

 

這裡不再深入探討不同因素如何影響所應考慮的指標等問題,但這是一個好的開始,詢問和瞭解你所在的企業使用了哪些指標。時間或金錢相關的指標通常與業務緊密相關。比如,你也許對用戶“參與度”感興趣。

 

活躍用戶(AU)是用戶參與度的一個基本度量指標,瞭解產品或服務日均或月度用戶使用量。業務報告通常包含日活躍用戶量(DAU)與月活躍用戶量(MAU)的彙總情況,假如業務複雜,這部分數據可能會包含許多不同類別的信息。對於維基百科而言,日活躍用戶可能指當日貢獻了一篇以上內容的用戶。

 

據華爾街日報所述,Twitter認定活躍用戶的標準是每月登錄一次。對社交平臺而言,活躍用戶指30天內至少登錄一次的用戶。對商業平臺而言,一周中至少兩天瀏覽平臺信息的活躍度即看作成功。對於新聞媒體,每天查看一次的活躍度就足夠。

 

作為設計師,最關註的可能就是提供良好的用戶體驗。良好的業務指標應時時把用戶考慮在內。比如,假如你的產品體驗非常糟糕,你將不會期望用戶頻繁使用這種糟糕的產品。

 

我們支持你不斷質疑那些與良好用戶體驗相悖的指標——停下來並評估是否需要更換指標,如果需要,考慮提供一種更能體現用戶體驗與長期激勵用戶流程的指標。記住,一項成功的業務應始終優先考慮向用戶提供出色的體驗。

 

 

03探察分組差異

 

當談到實驗基礎時,我們提到,假如要判斷改動是否產生了效果,需先觀察因變數是否有差異。但如何得知這種差異是真正的關鍵?假如第2組超越其他組提前30秒抵達營地,是否足以證明差異的效果,然後購買更多指南針?這是一個統計顯著性問題。

 

我們希望站在設計角度思考這些統計概念應承擔的角色,以幫助你瞭解並體會具有統計思維的成員在A/B測試中的諸多考慮。我們認為,瞭解一些術語表述將有助於你參與顯著性與功效的相關討論,使你能夠在設計A/B測試以瞭解真實效果時提出問題。

 

統計顯著性是一種度量結果差異的隨機概率的方法。通過度量測試結果的顯著性,能夠判定觀察到的實驗差異到底源於指標的隨機變化,還是實驗改動產生的有意義的結果。因此需要判定彼此間因果關係的可能性或概率。

 

儘管通常在測試結束時計算統計顯著性,你依然需要考慮能否在A/B測試的設計流程中進行度量。功效(power)指準確檢測到實驗組與對照組之間真實差異的統計顯著性結果的概率。你期望所設計的測試足以檢測到分組之間真實存在的差異。

 

不同於統計顯著性計算,功效計算在測試開展前進行。兩者的差異在於:功效預測能否在實驗中觀察到差異,而統計顯著性指出是否在實驗樣本觀察中發現了差異。

 

你可以把這個想象成,在一個設計不佳的測試中,你戴著一副度數過低不足以矯正視力的鏡片:如果沒有足夠的提示,你甚至難以辨別貓與狗的差異,最終你所看到的一切都將是模糊不清且不可信的。

 

 

這兩個概念的細節與功效計算不再詳述。下麵介紹一些用於測試需求的功效的影響因素。

 

01預設差異大小

 

除了期望瞭解不同分組是否存在差異外,另一個顯而易見的問題是,這些差異有多大?效應值(effect size)指對照組與實驗組之間的差異大小。統計顯著性指明是否存在差異,而效應值量化差異的大小。

 

科學研究中,效應大通常比效應小更有意義。這對產品設計也同樣適用,由於設計改動能對體驗或關鍵指標產生重大影響,因此堅持實踐效應值大的設計改動能夠獲得更多收益。

 

在產品設計中,我們將期望觀察到的測試條件與控制條件之間的最小差異定義為最小檢測效應(MDE),以此作為A/B測試的成功標準。MDE取決於一些業務因素,比如,至少多大的指標差異才能引起收益增長。

 

直觀來說,測試與改動實踐應通過某種方式獲得“回報”,比如通過具有顯著意義的指標改動,這是業務健康發展與成功的關鍵,也是對用戶體驗的巨大提升。你也可以基於之前的A/B測試定義MDE的大小,以往觀測到的效應大小可以作為未來實驗效應值定義的一個參考。

 

測試的統計功效取決於最小檢測效應。較大的差異更容易被捕捉到。比如,假定部分營員可搭乘計程車去往山頂,則不同分組抵達山頂的時間將產生巨大差異。相較而言,MDE較小時,則需要功效更強的實驗以有效捕捉差異。

 

02抽取充足的樣本量

 

基於定義的最小檢測效應,你可以定義測試的功效大小。樣本量是影響測試功效的一項因素。

 

假設1名營員說他們在盥洗室後面看到一隻臭鼬,你比較可能會認為他們把松鼠或浣熊當作了臭鼬。假如5名營員都這樣說呢?你將更加傾向於相信這件事,為他們的安全隱隱擔憂。假如50名營員都這樣說呢?

 

你將更加堅信附近出現了臭鼬,以至於擔心營員在往返盥洗室的路上再次偶遇它們,而安排營員暫時使用教員盥洗室。

 

再一個例子。假設許多營員病了,4個分組中每組僅有1名營員參與徒步。也許你能觀察到分組間的差異,但對基於小樣本量進行決策表示懷疑。

 

假如其中1名營員速度更快,如何確定不是他的身高因素或更強的運動能力引起的?假如每組有40名營員參與徒步,情況又如何?假設所有分組一同徒步,由於樣本量充足,假如第4組最快登頂,你將更有把握就此進行決策。

 

分組差異的效果將趨同,40人趕超其他120名營員的結果將會比1名營員趕超3人更具說服力。

 

這種直覺背後的原則在於,樣本量越大,你對響應的結果就越認可。對結果而言,樣本量越大,效應更明顯:假如樣本量較大,即使是時間或幸福感之類的細微差異,也具有很強的說服力。反之,假如僅有一名或若幹營員樣本,該結果將不具有說服力。

 

 

03顯著性水平

 

P值代表觀察到的隨機因素產生的差異概率。比如,當我們觀察到P值=0.01,說明觀察到的,由隨機因素引起的而非分組有意義的差異引起的差異的概率為1%。P值多小才足夠,這取決於你的期望。

 

在許多社會實驗領域,比如心理學,任何P值<0.05(5%)都被看作具有統計顯著性,即觀察到的差異不是隨機因素引發的結果。換種說法,即觀察到的數據的效應存在5%的概率是由數據中隨機產生的干擾。在其他領域,比如物理學,僅當P值<0.000 000 3時才被看作具有統計顯著性。

 

這個數值對於產品設計,甚至最大的互聯網網站的設計調整而言,都有些不切實際。

 

A/B測試的一部分設計工作是提前確定測試結果所具有的置信程度。比如,能否接受測試結果5%的錯誤概率?這是絕大多數互聯網團隊的標準置信範圍。10%呢?20%呢?直至達到團隊成員均可接受的程度為止。

 

放寬置信程度的主要原因是,風險越大,統計功效越小。功效越小說明樣本量越小,意味著實際上可能進行了耗時更短、成本更小的測試,因為有時你需要更快地從少量用戶中獲取數據。

 

如你所知,A/B測試的設計需權衡具體情況中的各種因素。但是,測試產生的統計數據僅是獲取用戶信息的其中一個重要環節。針對目標提出充分的假設同樣重要。

 

關於作者:

Rochelle King,Spotify產品設計創意全球副總裁,擅於融合運用設計與數據,並且曾擔任一些技術企業的負責人。

Elizabeth Churchill博士,人機交互(HCI)領域專家,曾在許多矽谷企業中主導以用戶為核心的研究,近專註於設計和開發者工具方面的研究。

Caitlin Tan,Spotify的用戶研究員,畢業於麻省理工學院。

本文摘編自《數據驅動設計:A/B測試提升用戶體驗》,經出版方授權發佈。

 

推薦閱讀:

 

鏈接圖片1.png

 

鏈接圖片2.png

 

 

數智物語徵稿啟事.png

 

星標我,每天多一點智慧

星標備選20190408.gif

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當redis環境搭建結束後,接下來需要掌握並瞭解redis的一些相關命令,本篇文章主要從實際操作的層面來與大家分享redis基本命令, 具體包括:Redis五大基本類型命令(Strings,Lists,Hashes,Sets和Sort Sets)和Keys相關命令。 一 Strings 1. SET ...
  • 問題 在使用zabbix_get獲取agent端的mysql數據時,總是報錯,ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/data/mysql.sock' (13)。 ...
  • 1. 數據定義語句 - 模式 · 創建: CREATE SCHEMA · 刪除: DROP SCHEMA - 表 · 創建: CREATE TABLE · 刪除: DROP TABLE · 修改: ALTER TABLE - 視圖 · 創建: CREATE VIEW · 刪除: DROP VIEW  ...
  • 存儲過程名稱為A,假設A返回一個ID EXEC @id = A 1031,1 在觸發器中像上面那樣調用,調試時發現@FolderHierarchyid的值為0 後面參考網上的方法,建了一個表,表結構和存儲過程的返回結果集結構一樣 declare @idtable table(ID int); ins ...
  • 遇到一個錯誤如下 System.Data.SqlClient.SqlException HResult=0x80131904 Message=伺服器主體 "用戶名" 無法在當前安全上下文下訪問資料庫 "資料庫名"。 Source=.Net SqlClient Data Provider StackT ...
  • 1.線性回歸模型線性回歸是統計學中最常用的演算法,當你想表示兩個變數間的數學關係時,就可以用線性回歸。當你使用它時,你首先假設輸出變數(相應變數、因變數、標簽)和預測變數(自變數、解釋變數、特征)之間存在的線性關係。(自變數是指:研究者主動操縱,而引起因變數發生變化的因素或條件,因此自變數被看作是因變 ...
  • 1.關係型資料庫的特點 基於關係代數理論: 缺點:表結構不直觀,實現複雜,速度慢 優點:健壯性高、社區龐大,在一些情況下人們發現健壯性,並不是要求那麼高,因而產生了十分流行的非關係型資料庫,如Redis,Memcached等。 2.資料庫表關係 下麵以Product表和Category進行舉例,Ca ...
  • 腳本如下: EXEC sp_addlinkedserver @server='XXX', --鏈接伺服器別名 @srvproduct='', @provider='SQLOLEDB', @datasrc='.' --要訪問的的資料庫所在的伺服器的ip GO EXEC sp_addlinkedsrvl ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...