1. 程式人生 > >2017這些Android技術可能會很火

2017這些Android技術可能會很火

  2017比較火的概念:人工智慧,影象識別,語音識別;技術驅動和資料驅動
機器學習:機器學習,深度學習,自然語言處理,影象處理,資料探勘,精準推薦的分類
熟悉一種大資料處理的程式語言(R、Python、Java、Go、Perl、Ruby、SPSS等)
資料探勘,搜尋演算法,精準推薦,深度學習,機器學習,影象處理,影象識別,語音識別,機器視覺,演算法工程師,自然語言處理等方向現在十分火熱。
  AI開發工作應該擁有哪些技術:
1.開發語言多數以R、Python、JAVA為主。
2.將演算法轉換為程式碼的能力,即編碼能力,這方面想提高除了多看多寫,別無他法。
3.熟悉opencv,sklearn,tensorflow,caffe,Spark,keras,pyTouch等開發庫,沒必要全會,但是要有熟練的一個或幾個。
4.大規模資訊處理與分散式計算,開發環境搭建與優化,演算法的調參與優化。
5.文件書寫,團隊人員的交流能力。
6.分析問題,分析資料,帶入演算法和模型到實際場景應用的能力。

  也許你會說今年WWDC給客戶端打了強力一針,機器學習+AR。不得不潑冷水,機器學習跟做普通的App有啥關係嗎?AR也是同理,有多少App需要用的到?再說機器學習的學習成本有多大,AR關於圖形學的知識要學多久,這些都是問題。

> 2017 年你應該學習的程式語言、框架和工具- https://zhuanlan.zhihu.com/p/24369470

2017年,你需要GET的9大技術領域- http://geek.csdn.net/news/detail/134070

2017年的六大頂級開源專案- http://geek.csdn.net/news/detail/230493

2017年,論那些為 Web 開發開天闢地的新技術- https://mp.weixin.qq.com/s/GIPGxqyj93bpiXFwb3etQw

> 微信小程式

想開發微信小遊戲,先看看騰訊是如何制定規則的- https://blog.csdn.net/csdnnews/article/details/79049290

> AR增強現實

OpenCV和AR技術
AR-Source- https://github.com/GeekLiB/AR-Source
opencv-markerless-AR-Mobile- https://github.com/meiroo/opencv-markerless-AR-Mobile
關於增強現實(AR技術)的開源庫推薦- http://blog.csdn.net/kezunhai/article/details/38042023

> VR

從 0 到 1 的 VR 介面設計之路- http://geek.csdn.net/news/detail/137534

趨勢分析(大資料和VR)- http://blog.csdn.net/a910626/article/category/6246347

> 直播

基於RTMP協議的流媒體直播系統- https://github.com/NodeMedia/NodeMediaClient-Android
視訊直播技術(四):使用Ijkplayer播放直播視訊- http://www.cnblogs.com/renhui/p/6420140.html

> 微信小程式

   微信小程式開發官方文件,要去熟悉HTML、CSS、JS 的語法

官方文件教程1:http://bcoder.cn/wxopen/
官方文件教程2:http://bing.aliaii.com/wxopen/

微信小程式精選Demo合集【持續更新中...】- http://www.jianshu.com/p/0ecf5aba79e1#

如何在微信小程式中實現今日頭條App那樣的Topbar- http://www.jianshu.com/p/fe5756b541d8#

實戰:詳解貓眼電影小程式開發過程- http://geek.csdn.net/news/detail/137060

大眾點評點餐小程式開發經驗- http://geek.csdn.net/news/detail/188650

微信小程式-仿滴滴公交- http://download.csdn.net/detail/wyx100/9802158

> 熱修復

Android 熱修復 Tinker接入及原始碼淺析- http://mp.weixin.qq.com/s/WHYA4aTWIHcd8CQ95StwDg

Android 熱修復 Tinker 原始碼分析之DexDiff / DexPatch- http://blog.csdn.net/lmj623565791/article/details/60874334

Android熱修復學習之旅——HotFix完全解析- http://blog.csdn.net/u012124438/article/details/62511438

Android 熱修復 Tinker Gradle Plugin解析- http://blog.csdn.net/lmj623565791/article/details/72667669

> 大資料、深度學習、自然語言處理

大資料、深度學習、自然語言處理- http://blog.csdn.net/malefactor?viewmode=contents
深度學習之影象修復- http://blog.csdn.net/stdcoutzyx/article/details/63686825
機器學習、影象處理- http://blog.csdn.net/stdcoutzyx?viewmode=contents

大資料、機器學習和雲端計算。人工智慧  

李理:卷積神經網路之Batch Normalization的原理及實現- http://geek.csdn.net/news/detail/160906

經典的大資料問題- http://blog.csdn.net/qq_34328833/article/details/54584105

TensorFlow架構與設計:會話生命週期- http://geek.csdn.net/news/detail/188234

大資料相關開源專案彙總- http://www.ctolib.com/cheatsheets-big-data-open-source-projects.html?ref=myread

> 大資料
大資料在工作中的應用有三種:
與業務相關,比如使用者畫像、風險控制等;
與決策相關,資料科學的領域,瞭解統計學、演算法,這是資料科學家的範疇;
與工程相關,如何實施、如何實現、解決什麼業務問題,這是資料工程師的工作。

資料來源的特點決定資料採集與資料儲存的技術選型,我根據資料來源的特點將其分為四大類:
第一類:從來源來看分為內部資料和外部資料;
第二類:從結構來看分為非結構化資料和結構化資料;
第三類:從可變性來看分為不可變可新增資料和可修改刪除資料;
第四類,從規模來看分為大量資料和小量資料。

資料處理分為三大類:
第一類是從業務的角度,細分為查詢檢索、資料探勘、統計分析、深度分析,其中深度分析分為機器學習和神經網路。
第二類是從技術的角度,細分為Batch、SQL、流式處理、machine learning、Deep learning。
第三類是程式設計模型,細分為離線程式設計模型、記憶體程式設計模型、實時程式設計模型。

基於Hadoop大資料分析應用場景與實戰- http://geek.csdn.net/news/detail/238565 
  目前主流的三大分散式計算系統分別為Hadoop、Spark和Strom
Hadoop當前大資料管理標準之一,運用在當前很多商業應用系統。可以輕鬆地整合結構化、半結構化甚至非結構化資料集。
Spark採用了記憶體計算。從多迭代批處理出發,允許將資料載入記憶體作反覆查詢,此外還融合資料倉庫,流處理和圖形計算等多種計算正規化。Spark構建在HDFS上,能與Hadoop很好的結合。它的RDD是一個很大的特點。
Storm用於處理高速、大型資料流的分散式實時計算系統。為Hadoop添加了可靠的實時資料處理功能。

  Hadoop適用於海量資料、離線資料和負責資料,應用場景如下:
場景1:資料分析,如京東海量日誌分析,京東商品推薦,京東使用者行為分析
場景2:離線計算,(異構計算+分散式計算)天文計算
場景3:海量資料儲存,如京東的儲存叢集
  Hadoop分散式處理框架核心設計:
HDFS:(Hadoop Distributed File System)分散式檔案系統;
MapReduce:是一種計算模型及軟體架構

> React Native

開發理解React Native,Android開發轉過來的,推薦Webstrom.

   React Native這類的技術,為實現UI層的跨平臺而生,它能夠在多端渲染出一樣的介面,降低開發成本,但是它卻仍然依賴已有的系統元件。它的跨平臺特徵都是建立在一個內建的JavaScript引擎上面的,你能夠利用它已有的元件,但無法對元件進行更新和升級。

react-native完整例項—妹子圖片檢視app- https://git.oschina.net/sleepforests/mmjpg-react-native

RN開發- http://blog.csdn.net/u012515223/article/category/5990897

> 機器學習

機器學習- http://www.techug.com/post/10-algorithms-machine-learning-engineers-need-to-know.html?1492429981192?ref=myread
機器學習演算法可以分為三大類:監督學習、無監督學習和強化學習。監督學習和無監督學習的演算法
監督學習:
1.決策樹(Decision Trees),以結構化和系統化的方式來解決問題;
2.樸素貝葉斯分類(Naive Bayesian classification),貝葉斯公式,其中P(A|B)是後驗概率,P(B|A)是似然,P(A)是類先驗概率,P(B)是預測先驗概率。應用:1.判斷垃圾郵件;2.對新聞的類別進行分類,比如科技、政治、運動;3.判斷文字表達的感情是積極的還是消極的;4.人臉識別
3.最小二乘法(Ordinary Least Squares Regression),線性指的是你用來擬合數據的模型,而最小二乘法指的是你最小化的誤差度量。
4.邏輯迴歸(Logistic Regression).用於以下幾個真實應用場景:1、信用評分/2、計算營銷活動的成功率/3、預測某個產品的收入/4、特定的某一天是否會發生地震
5.支援向量機(Support Vector Machine,SVM),從規模上看,使用SVM(經過適當的修改)解決的一些最大的問題包括顯示廣告、人類剪下位點識別(human splice site recognition)、基於影象的性別檢測,大規模影象分類……
6.整合方法(Ensemble methods)
無監督學習:
7.聚類演算法(Clustering Algorithms)
8.主成分分析(Principal Component Analysis,PCA)
9.奇異值分解(Singular Value Decomposition,SVD)
10.獨立成分分析(Independent Component Analysis,ICA)

1.《機器學習實戰》(強烈推薦)、《統計學習方法》(偏底層數學推導)、《機器學習實踐應用》(偏業務)。也可以去看看吳恩達老師的關於機器學習的斯坦福公開課。 
2.開源工具可以使用,有R、Spark-MLib、Sklearn等
3.開源資料集,推薦UCI資料集。

> 物聯網

Google 之前還發布了物聯網作業系統 Android Things,以及剛剛正式釋出的深度學習系統 TensorFlow 1.0,一切的一切,都充滿想象力,Google 是想打造一個從 Web 到原生 App,到跨平臺、跨終端的作業系統,再到物聯網、人工智慧,這是一個超級帝國啊。如果對演算法感興趣的同學,強烈推薦選擇深度學習領域,學習下 TensorFlow,尤其是還在讀書,並且演算法基礎不錯的學生朋友們,這些都是人工智慧最核心的技術,但是門檻較高,不是所有人都適合學習的。種種跡象表明,繼移動網際網路之後,下一個風口浪尖很可能就是人工智慧!
  PWA(Progressive Web Apps) 一定是將來的移動開發趨勢。
  Service Worker:讓網頁無網路也能訪問- http://blog.csdn.net/kymjs/article/details/55504780
  PWA 和 Service Worker 是什麼關係?Service Worker 是一個執行在瀏覽器後臺程序裡的js,基於它可以實現訊息推送,靜默更新以及攔截和處理網路請求,包括可程式設計的響應快取管理,是 PWA 的核心。 
開源實驗室 (https://www.kymjs.com) 已啟用 Service Worker,現在只要你訪問過的文章,在主流瀏覽器(包括PC、手機)二次訪問均可離線訪問啦。

  開源物聯網專案Openfpgaduino,https://github.com/OpenFPGAduino/
谷歌旗下最重要的人工智慧系統Tensorflow,TensorFlow支援CNN、RNN和LSTM演算法,CNN是Image領域常見的一種深度神經網路。由Yann LeCun提出,通過卷積來發現位置無關的feature,而且這些feature的引數是相同的,從而與全連線的神經網路相比大大減少了引數的數量。
  目前開源的實現分散式Deep learning的GraphLab就是GAS的架構,Google開源了一個單機版的Hadoop
Facebook也宣佈開源其人工智慧工具庫,特斯拉也開源其電動汽車專利,而近期IBM也開源其量子計算平臺。
 
 JavaScript的熱部署也是一個比較熱門的研究領域,通過熱部署,物聯網節點可以實現在執行過程中遠端新增新功能,遠端修正bug。
>   JavaScript物聯網節點開發開源專案彙總
  OpenFPGAduino(https://github.com/OpenFPGAduino/)是筆者設計的基於Node.js與 FPGA的開源物聯網軟硬體開發平臺,與Arduino等快速原型開發平臺類似。基於Node.js提供了網路互動能力,特別包括用於開發的網路IDE以及類似於樹莓派的Linux軟體開發系統,方便安裝各種Linux通用軟體,並且通過FPGA提供了可程式設計的相容Arduino外圍介面用於與豐富的物聯網感測器進行連線。
  iotjs(https://github.com/Samsung/iotjs)是三星開發的嵌入式JavaScript執行環境,能夠在幾百KB記憶體的嵌入式系統上,不依靠作業系統實現完整的網路與JavaScript支援。JavaScript解釋引擎採用
  JerryScript(https://github.com/jerryscript-project/jerryscript),事件迴圈採用libtuv。可以說是Node.js的嵌入式版本,其API與Node.js相相容。
  Esprunio(https://github.com/espruino/Espruino)是為微控制開發的嵌入式JavaScript解釋引擎,提供了最小化的配置,可以在記憶體低至8KB的微控制器上執行JavaScript語言。
  Cyclon(https://github.com/hybridgroup/cylon)是使用JavaScript來做機器人控制的專案,支援市面上主要的開發板,通過提供各種外設的驅動,實現了不需要寫一句C語言就能開發和組裝一個機器人。
  現在大資料技術方興未艾,在這些技術中,最基本的思想是MapReduce,這一思想將不同運算拆解為Map與Reduce,然後將這些Map與Reduce任務在叢集當中最大限度地並行執行。實現MapReduce模式程式設計最重要的一點就是支援函數語言程式設計或者又稱為Lambda程式設計,所有的Map與Reduce操作都接受函數語言程式設計作為引數。
 
> JavaScript物聯網大資料開源專案
  Eclairjs(https://github.com/EclairJS/eclairjs-node)是基於Node.js的Spark大資料處理平臺前端,通過Eclairjs,可以使用JavaScript來操作基於記憶體處理的大資料分析平臺Spark,通過Spark內建的排程器,實現了在整個叢集上排程資源,以最大化並行度來執行JavaScript的演算法。目前,Spark是最主流和發展最快的大資料處理平臺。
  skale(https://github.com/skale-me/skale-engine)是一個完全使用JavaScript開發,採用Node.js作為執行環境的分散式資料處理系統,具有比Spark更快的效能。
  MQTT是為物聯網設計的輕量級通訊協議,協議基於TCP/IP,適用於低頻寬不可靠環境。協議的開銷非常小,支援釋出訂閱模式,是種非常高效的通訊協議。MQTT.js(https://github.com/mqttjs/MQTT.js)是Node.js的MQTT通訊模組,實現了Node.js收發MQTT資料。
  Kafka是大資料分散式訊息匯流排,提供了對海量訊息的持久化能力,通過將接收到的資料直接持久化到硬碟,提供了穩定的資料吞吐量以及高可用性。Kafka Rest(https://github.com/confluentinc/kafka-rest)模組為Kafka訊息匯流排提供了Restful API 的支援,無論是使用瀏覽器還是Node.js都可以方便使用JavaScript來收發訊息。
  convnetjs(https://github.com/karpathy/convnetjs)是完全用JavaScript寫成的神經網路機器學習庫,可以執行在瀏覽器中或Node.js中。convnetjs提供了許多有趣的例子,在瀏覽器上實現了對神經網路學習過程的可視動畫呈現與互動模式,對理解神經網路機器學習有非常好的幫助。
  作為深度神經網路學習方向最重要也是最熱門的專案,Google的TensorFlow是深度學習開源的里程碑。TensorFlow的開源使得使用深度學習來做資料處理已經不再是一件高難度的事情。Node-tensorflow(https://github.com/node-tensorflow/node-tensorflow)是一個NodeJS API,使用了Google的開源機器學習庫TensorFlow。
 
> JavaScript資料展示開源專案彙總
  D3(https://github.com/d3/d3)是基於SVG的向量圖操作工具。通過使用JavaScript,D3將資料以向量圖形式展示出來並提供了任意伸縮的能力,在HTML5出現之前,D3是二維視覺化的底層標準。通常許多繪製圖表與資料視覺化工具都使用D3作為底層驅動引擎,在其之上提供使用者友好的API介面。
  three.js(https://github.com/mrdoob/three.js/)是基於WebGL的JavaScript3D繪圖工具。通過WebGL擴充套件,JavaScript語言實現了直接驅動底層顯示卡進行3D繪圖。three.js在3D影象基礎上還提供了VR支援,可以方便的使用JavaScript來實現VR資料展示。
  ionic(https://github.com/driftyco/ionic)是基於AngularJS的移動端跨平臺開發環境,能夠在一個統一的框架下使用JavaScript HTML CSS,同時完成開發iOS、Android、Window Phone程式,並根據各個環境的不同UI做自動適配。
  Electron(https://github.com/electron/electron)是基於Node.js與chrome的跨平臺桌面開發環境,electron通過將瀏覽器核心和後臺Node.js服務進行打包,實現了一個使用JavaScript的全棧開發環境,無需任何修改就能夠將程式部署到Windows、macOS、Linux平臺上。
  nw(https://github.com/nwjs/nw.js)是輕量級的JavaScript跨平臺桌面開發環境,它實現了在HTML程式碼中直接呼叫Node.js的各種API函式,提供了一個平滑自然的桌面應用開發環境,隱藏了客戶端伺服器程式設計的細節。
  物聯網JavaScript例項講解
  為更好理解JavaScript物聯網開發,下面以筆者設計的物聯網系統為例,詳細介紹物聯網系統的設計。所有設計資料都是開源的,讀者可以對照原始碼網頁與文件。( http://openfpgaduino.github.io)

> 神經網路
  神經網路:比原來更容易學習了- http://geek.csdn.net/news/detail/195039
一本是麻省理工學院出版社的《深度學習》,還有一本是《神經網路與深度學習》。上文列出的那些框架都包含了初學者的入門教程,並且只要你能上網上進行搜尋,都能找到無數的網站和YouTube視訊資源。我發現YouTube上的講座和會議視訊非常的有用。

融匯了視覺、語言和語音網路研發成果的神經網路架構MultiModel- https://arxiv.org/abs/1706.05137

> 人工智慧AI

人工智慧的對應的相應領域:統計學,機器學習,資料探勘等

> 2017年,行業不景氣的原因

2017年,近期的確不是那麼好找工作了,原因有如下幾點:
 1.由於APP創業風口已過,大批創業公司死亡,導致了Android崗位減少;
 2.一些公司並不需要一個Native的APP,他們只需要在APP中嵌入一個網頁;
 3.RN、Weex對Native概念的衝擊

> 公眾號

微信公眾號開發--天氣預報(Java版)- http://blog.csdn.net/coco2d_x2014/article/details/78034239