Categories
程式開發

微服務測試—六份案例研究和技術組合(第三部分)

本文要點

  • 測試微服務時,要考慮的一個重要因素是如何管理關聯的依賴項。有很多種技術可以用來解耦依賴項,但是它們都有一些權衡,開發/QA團隊必須意識到這一點。
  • 架構師、開發人員和QA團隊必須共同努力,以理解和指定測試目標、上下文和當前的約束條件。
  • 制訂一套全面的測試方法通常需要實施多種測試策略。必須仔細選擇這些策略,以避免重複工作或增加測試套件的偶發複雜性。
  • 契約測試是驗證服務之間交互的一種有價值的方法。可以將契約測試與精心挑選,數量有限的端到端測試相結合,以驗證完整的業務流程。
  • Mock和服務虛擬化有助於在測試過程中解耦組件。應當精心確保這些測試替身處於正確狀態,並與當前關聯實現的最新版本保持同步。

這是《微服務測試》系列的第三篇文章。另請參見《微服務測試的 12 項實用技術(第一部分)》和《微服務測試的 12 …

Categories
程式開發

金融行業數據複雜、成本高、難獲取?看路孚特如何打破困局

2018 年,湯森路透金融與風險業務部門獨立成為 Refinitiv(路孚特)。路孚特在湯森路透金融數據和市場知識積累之上,利用領先的技術、信息和分析方法繼續為行業者提供著服務。如今路孚特推出金融數據平台(Refinitiv Elektron Data Platform,簡稱 RDP),進一步發揮其在行業積累的優勢。 InfoQ 記者專訪路孚特 RDP

Categories
程式開發

為什麼連BAT都很難參與到區塊鏈技術的競爭中?

為什麼連BAT都很難參與到區塊鏈技術的競爭中? 5

區塊鏈技術的競爭在經過聯盟鍊和公有鏈技術的合二為一後,最終將發展為組網能力的競爭,而這是一個 BAT 都很難參與的競爭。

1、區塊鏈技術是什麼

當我們談到區塊鏈技術,大多數人想到的可能是去中心化的記賬,但什麼是去中心化的記帳呢?我們先看記帳這個詞,”記”是指記錄編寫,“帳”廣義上可以指數據,“記賬“就是對數據的存儲和計算操作;而什麼是去中心化呢?就是組成區塊鏈系統的眾多計算機,並不是由一個中心化的機構或組織擁有,而是由眾多機構、組織、群體等共同擁有的。所以,從本質上說,區塊鏈技術就是一個去中心化計算機網絡基礎上,對數據進行存儲或操作的技術,該技術的特點是,任何數據存入到這個系統後,該數據都不可銷毀,不可篡改。

2、區塊鏈技術的商業價值

2.1 區塊鏈技術的商業價值本質

區塊鏈技術對比傳統的分佈式數據庫技術,有什麼優點呢?核心就是區塊鏈技術是去中心化的,而傳統的分佈式數據庫技術是中心化的。

去中心化對比中心化有什麼好處呢?我們以新浪舉例,新浪是一個中心化的信息平台,大眾只能閱讀新浪提供的新聞,如果新浪篡改或刪除已發布的新聞,大眾是很難感知的;如果是一個去中心化的信息平台,在新聞發布後,沒有任何人,包括平台自身,能篡改或刪除這些已經發布的新聞,所以大眾可以完全信賴這些新聞發布後沒有被篡改過。…

Categories
程式開發

GitHub熱門項目:生產級深度學習項目如何構建?

在生產中部署深度學習模型可能很有挑戰性,因為這遠遠不僅是訓練出具有良好性能的模型就足夠了。為了部署生產級深度學習系統,還需要正確設計和開發一眾組件。本文介紹了 GitHub 上的一個工程指南,用於構建將部署在實際應用程序中的生產級深度學習系統。

GitHub熱門項目:生產級深度學習項目如何構建? 7

在這篇文章中,我們將詳細介紹生產級深度學習系統的各個模塊,並推薦適合每個組件的工具集和框架,以及實踐者提供的最佳實踐。

GitHub熱門項目:生產級深度學習項目如何構建? 8

GitHub熱門項目:生產級深度學習項目如何構建? 9

1. 數據管理

1.1. 數據源

開源數據 (好的開端,但並非優勢)、數據增強以及合成數據…

Categories
程式開發

Django 3.0 版本正式發布,支持異步功能

2019年12月2日,Django官方博客發布了Django 3.0的發布說明,Django 3.0 正式版真的來啦!

Django是一款用於開發Web應用程序的高級Python框架,Pinterest,Instagram和NASA等網站都是使用該框架來編寫的。雖然Django一直佔據著Python Web開發界的頭把交椅,但其不支持異步一直困擾著開發者,而Django 3.0正式版本終於支持ASGI了,這不免讓開發者興奮。

Django

Categories
程式開發

蘋果、谷歌紛紛公佈“2019年度最佳App”

蘋果、谷歌紛紛公佈“2019年度最佳App” 17

google play

12月3日,蘋果、谷歌各自公佈了App Store與Google Play上的“年度最佳App”。每到年底,公佈“年度App榜單”已經成為蘋果和谷歌的慣例。

一、蘋果:2019年度App與遊戲名單

今年,蘋果從iPhone、iPad、Mac和Apple TV上各選出一款年度App和遊戲,並從Apple …

Categories
程式開發

AssemblyScript如何幫助WebAssembly發揮潛力?

WebAssembly(或Wasm)是Web瀏覽器中相對較新的功能,但它有潛力極大地擴展Web作為一個應用程序服務平台的能力。 Web開發人員在入門WebAssembly時可能會經歷艱難的學習過程,而AssemblyScript就提供了一種解決辦法。首先我們來看一下為什麼WebAssembly是一項很有前途的技術,然後再介紹AssemblyScript是怎樣幫助WebAssembly發揮潛力的。

WebAssembly

WebAssembly是針對瀏覽器使用的底層語言,為開發人員提供了JavaScript之外的Web編譯目標。它使網站代碼可以在安全的沙盒環境中以接近原生的速度運行。

它是根據所有主流瀏覽器(Chrome、Firefox、Safari和Edge)代表的意見開發的,這些代表於2017年初達成了設計共識。所有這些瀏覽器現在都支持WebAssembly,意味著整個市場中約87%的瀏覽器可以使用它。

WebAssembly以二進制格式交付,這意味著與JavaScript相比,WebAssembly在大小和加載時間上均佔優勢。但它也有供人類閱讀的文本…

Categories
程式開發

程序員自我欺騙的9個謊言

“我們對計算機的自信可能使我們犯錯誤,因為我們希望將現實世界都轉化為代碼。”

程序員有充分的理由感到自豪,因為其他人是無權進入數據庫並更改的。世界越是依賴計算機定義,程序員的能力就越強。

實際上,沒有什麼代碼是完美的代碼,計算機也會經常犯錯誤。

當然,許多問題源於我們的程序員所做的假設,這些假設雖然在某些時候是正確的,但在根本上是不正確的。正如馬克·吐溫(Mark Twain)所說:“這不是讓您陷入困境的原因,但是您肯定會知道事實。”

編程語言不同

曾經我們也滿是理想,我們曾寫過很長的項目啟動宣言,然後向老闆保證,這次,採用新的語言將改變一切,同時精彩的軟件功能將從鍵盤上快速湧現,以至每個項目都將提前完工。…

Categories
程式開發

那些本以為能在2020年成為現實的“黑科技”

懸浮汽車滿天飛、機器人管家滿街跑、克隆人危機出現、人類已經面臨著來自外太空的挑戰…

不知道上面這些場景你有沒有在科幻小說、電影裡見到過,乍看之下感覺似乎很遙遠,但是如果有人告訴你:“這些技術都在2020年實現了”,你會不會用看“傻子”的眼神凝視他幾秒,心中默念“有病”然後默默離開?

2020,這個看似遙遠實則只剩一個月就到來的年份,被不少作者設定為“未來發生年代”,在作者的想像中,這個神奇的年代擁有著高度發達的黑科技,人們也早已過上充滿科技感的“未來生活”。

今天的文章,InfoQ將盤點一些“本以為能夠在2020年實現”的技術,看看我們今天的生活離所謂的未來還有多遠?

全智能機器人

機器人幾乎是所有科幻作品裡都會涉及到的元素。

電影《終結者》中,機器人控制人類的橋段給不少人留下了深刻印象,“天網”這樣的監控系統更是讓人不寒而栗,這也使得人們對於人工智能技術形成了比較負面的刻板印象。

《終結者》的故事背景設定在2015年,距今已經過去了四年,但是目前的機器人仍然只能進行簡單的、流程化的操作,比如工廠流水線上的機械臂。近兩年,一家名叫波士頓動力的公司在機器人設計上取得了不錯的進展,他們製造的兩足機器人已經可以奔跑、跳躍,甚至做出後空翻這樣高難度的動作:

image

MIT的校園裡,也有一群外形酷似小狗的四足機器人正在列隊進行後空翻,這款名為這款“迷你獵豹”(Mini Cheetah …

Categories
程式開發

深度迁移学习在NLP中的应用:选BERT还是被评逆天的GPT 2.0?

迁移学习是什么?前百度首席科学家、斯坦福的教授吴恩达(Andrew Ng)曾经说过:迁移学习将会是继监督学习之后的下一个机器学习商业成功的驱动力。不可否认,机器学习在产业界的应用和成功主要是受监督学习、深度学习及大量标签数据集的推动。但是,当我们没有足够的来自于任务域的标注数据来训练可靠模型时,应该怎么办?本文,InfoQ采访了百分点首席算法科学家苏海波,聊聊深度迁移学习在NLP中的应用实践以及被评效果逆天的GPT 2.0到底咋样?

深度迁移学习在NLP中的应用:选BERT还是被评逆天的GPT 2.0? 19

为什么需要迁移学习?

过去几年,我们已经具备了将模型训练得越来越准确的能力,现今比较先进的模型在很多任务上已经达到了不错的效果,大幅降低了使用者的门槛。但这些模型的共同特点都是极其重视数据,依靠大量的标注数据才能实现理想的效果。

但是,在真实的业务环境中,标注数据往往是不足的,而且标注的代价比价高,迁移学习可以帮助处理这些场景,使机器学习在没有大量标注数据的任务域中规模化应用。那么,什么是迁移学习?迁移学习是指利用数据、任务或模型之间的相似性,将在旧领域学习过的模型,应用于新领域的一种学习过程。

概括来说,之所以需要迁移学习,是因为要解决以下四个问题:

  1. 深度学习和少标注之间的矛盾:目前深度学习只有在拥有充足标注数据的场景下,才能发挥它的威力。但是在实际的很多问题中,我们没有足够的标注数据,这时就需要迁移学习;

  2. 强算力与弱资源之间的矛盾:某些海量数据的模型训练任务,需要非常大的算力,大公司才能烧得起这个钱,而普通人的机器资源是很有限的,需要让他们也能利用这些数据和模型;

  3. 通用模型与个性化需求之间的矛盾:通用的模型可以解决绝大多数的公共问题,但是具体到个性化的需求,都存在其独特性,通用模型根本无法满足。因此,需要将这个通用的模型加以改造和适配,使其更好地服务于各种个性化需求;