Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美xx高清,久久狠狠丁香婷婷综合,一本色道久久爱88av

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Kubernetes已部署集群切換kube-apiserver等核心容器鏡像倉(cāng)庫(kù)地址

          使用Kubeadm在國(guó)內(nèi)部署Kubernetes集群時(shí),由于無(wú)法訪問(wèn)k8s.gcr.io,就修改了默認(rèn)的倉(cāng)庫(kù)地址,直接使用了Azure 提供的gcr.azk8s.cn/google_containers倉(cāng)庫(kù)。

          部署信息

          操作系統(tǒng):Centos7

          Kubernetes:v1.17.0 單Master節(jié)點(diǎn)

          問(wèn)題

          docker pull gcr.azk8s.cn/google_containers/pause:3.1
          Error response from daemon: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx/1.14.0 (Ubuntu)</center>\r\n</body>\r\n</html>\r\n"

          近期Azure調(diào)整了策略,其倉(cāng)庫(kù)只允許 Azure China IP 使用,不再對(duì)外提供服務(wù), 如果確實(shí)有需求,可以聯(lián)系akscn@microsoft.com并提供IP地址。

          官方說(shuō)明:https://mirror.azure.cn/help/docker-registry-proxy-cache.html

          這樣我在新增節(jié)點(diǎn)時(shí)就無(wú)法下載`kube-proxy`以及`pause`鏡像了,甚至已有節(jié)點(diǎn)出現(xiàn)意外時(shí),對(duì)恢復(fù)節(jié)點(diǎn)也造成一定影響。

          目標(biāo)

          切換所有相關(guān)鏡像至新的倉(cāng)庫(kù)。

          實(shí)施

          升級(jí)過(guò)程中服務(wù)會(huì)短暫中斷,也可能存在未知風(fēng)險(xiǎn),應(yīng)提前做好準(zhǔn)備。

          升級(jí)過(guò)程中服務(wù)會(huì)短暫中斷,也可能存在未知風(fēng)險(xiǎn),應(yīng)提前做好準(zhǔn)備。

          升級(jí)過(guò)程中服務(wù)會(huì)短暫中斷,也可能存在未知風(fēng)險(xiǎn),應(yīng)提前做好準(zhǔn)備。

          倉(cāng)庫(kù)切換涉及到兩個(gè)核心內(nèi)容:

          1. Kubernetes集群鏡像,以及現(xiàn)有運(yùn)行中的所有基礎(chǔ)服務(wù)。

          2. Kubeadm配置信息,保證新增節(jié)點(diǎn)拿到新的配置信息,進(jìn)行初始化。

          創(chuàng)建倉(cāng)庫(kù)代理

          創(chuàng)建代理倉(cāng)庫(kù)的細(xì)節(jié)網(wǎng)上很多,就不詳細(xì)贅述。

          網(wǎng)上可以找到很多更好的倉(cāng)庫(kù),像:阿里、中科大、網(wǎng)易都有相關(guān)的服務(wù)提供。為了以后不會(huì)在出現(xiàn)什么意外,我還是選擇了自建代理,使用了阿里云香港節(jié)點(diǎn)的輕量應(yīng)用服務(wù)器做了代理,寬帶峰值30M,每月1T流量,經(jīng)常會(huì)被限速,體驗(yàn)不怎么好,但好歹不會(huì)突然變化了。急需的同學(xué)倒是可以拿來(lái)應(yīng)急下。

          • hub.docker.com -> dockerhub.msorg.cn
          • gcr.io -> gcr.msorg.cn
          • k8s.gcr.io -> k8sgcr.msorg.cn
          • quay.io -> quay.msorg.cn

          鏡像清單

          鏡像清單可以通過(guò)kubeadm config images list命令查看到。

          k8s.gcr.io/kube-apiserver:v1.17.0
          k8s.gcr.io/kube-controller-manager:v1.17.0
          k8s.gcr.io/kube-scheduler:v1.17.0
          k8s.gcr.io/kube-proxy:v1.17.0
          k8s.gcr.io/pause:3.1
          k8s.gcr.io/etcd:3.4.3-0
          k8s.gcr.io/coredns:1.6.5

          kube-apiserverkube-controller-managerkube-scheduleretcd可以在主節(jié)點(diǎn)的/etc/kubernetes/manifests/目錄下找到,yaml配置文件修改保存后立即生效

          corednskube-proxy是發(fā)布到Kubernetes集群中的,直接kubectl更新配置。

          pause是與kubelet綁定在一起的,修改service配置即可。

          更新kubeadm配置

          Kubernetes中存有名為kubeadm-configConfigMap配置信息,需要對(duì)其進(jìn)行更新。

          可以使用kubectl edit cm kubeadm-config -n kube-system命令進(jìn)行編輯,修改imageRepository部分,如:imageRepository: gcr.msorg.cn/google_containers

          更新kube-apiserver

          在主節(jié)點(diǎn)的/etc/kubernetes/manifests/目錄中,找到kube-apiserver.yaml文件,修改其中的image部分即可,如:image: gcr.msorg.cn/google_containers/kube-apiserver:v1.17.0

          修改之后保存文件立即生效

          更新kube-controller-manager

          在主節(jié)點(diǎn)/etc/kubernetes/manifests/目錄中,找到kube-controller-manager.yaml文件,修改其中的image部分即可,如:image: gcr.msorg.cn/google_containers/kube-controller-manager:v1.17.0

          修改之后保存文件立即生效

          更新kube-scheduler

          在主節(jié)點(diǎn)/etc/kubernetes/manifests/目錄中,找到kube-scheduler.yaml文件,修改其中的image部分即可,如:image: gcr.msorg.cn/google_containers/kube-scheduler:v1.17.0

          修改之后保存文件立即生效

          更新etcd

          在主節(jié)點(diǎn)/etc/kubernetes/manifests/目錄中,找到etcd.yaml文件,修改其中的image部分即可,如:image: gcr.msorg.cn/google_containers/etcd:3.4.3-0

          修改之后保存文件立即生效

          更新coredns

          coredns被以deployment的方式發(fā)布在Kubernetes集群之上,我們只需要修改其配置即可。

          可以使用命令kubectl edit deployment coredns -n kube-system,修改其image部分配置,如:image: gcr.msorg.cn/google_containers/coredns:1.6.5

          更新kube-proxy

          kube-proxy被以daemonset的方式發(fā)布在Kubernetes集群之上,我們只需要需改其配置即可。

          可以使用kubectl edit daemonset kube-proxy -n kube-system命令進(jìn)行編輯,修改其image部分配置,如:image: gcr.msorg.cn/google_containers/kube-proxy:v1.17.0

          更新pause鏡像

          該鏡像配置被放在每個(gè)節(jié)點(diǎn)上的kubelet啟動(dòng)命令中,可以通過(guò)以下方式確認(rèn)。

          使用ps -ef | grep kubelet命令查看當(dāng)前kubelet啟動(dòng)信息

          root     26588     1  2 Apr11 ?        06:18:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=gcr.msorg.cn/google_containers/pause:3.1

          可以看到在啟動(dòng)時(shí)有pod-infra-container-image參數(shù),修改此參數(shù)即可。具體此參數(shù)如何修改,因?yàn)橄到y(tǒng)不同,可能方式也不太一樣,下面以Centos7系統(tǒng)為例,Centos7使用了systemd,演示如何查找該參數(shù)配置位置。

          第一步:kubeadm已經(jīng)將kubelet已經(jīng)被安裝為service了,可以使用service kubelet status查看當(dāng)前service信息。

          kubelet.service - kubelet: The Kubernetes Node Agent
             Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
            Drop-In: /usr/lib/systemd/system/kubelet.service.d
                     └─10-kubeadm.conf
             Active: active (running) since Sat 2020-04-11 17:27:03 CST; 1 weeks 1 days ago
               Docs: https://kubernetes.io/docs/
           Main PID: 26588 (kubelet)
              Tasks: 35
             Memory: 196.4M
             CGroup: /system.slice/kubelet.service
                     └─26588 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-...

          從以上信息中我們可以看到當(dāng)前使用的service配置文件為/usr/lib/systemd/system/kubelet.service,并且加載了10-kubeadm.conf

          第二步:查看service配置

          使用cat /usr/lib/systemd/system/kubelet.service進(jìn)行查看

          [Unit]
          Description=kubelet: The Kubernetes Node Agent
          Documentation=https://kubernetes.io/docs/
          [Service]
          ExecStart=/usr/bin/kubelet
          Restart=always
          StartLimitInterval=0
          RestartSec=10
          [Install]
          WantedBy=multi-user.target

          發(fā)現(xiàn)其中并沒(méi)有什么特別的,進(jìn)一步查看10-kubeadm.conf,至于這個(gè)文件呢,在/usr/lib/systemd/system/kubelet.service.d路徑下,或者使用find命令進(jìn)行查找即可。

          [Service]
          Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
          Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
          # This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
          EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
          # This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
          # the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
          EnvironmentFile=-/etc/sysconfig/kubelet
          ExecStart=
          ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

          從此文件中我們可以找到/var/lib/kubelet/kubeadm-flags.env文件是在kubeadm initkubeadm join時(shí)產(chǎn)生的。基本可以確定下一步的目標(biāo)了。

          第三步:查看/var/lib/kubelet/kubeadm-flags.env文件

          使用cat /var/lib/kubelet/kubeadm-flags.env查看該文件

          KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=gcr.msorg.cn/google_containers/pause:3.1"

          我們會(huì)發(fā)現(xiàn)需要的內(nèi)容真的在里面,這時(shí)候只需要改了pod-infra-container-image這個(gè)參數(shù)為我們所需要的,重新啟動(dòng)kubelet即可,每個(gè)node節(jié)點(diǎn)都需要手動(dòng)修改。

          總結(jié)

          至此所有操作就已經(jīng)完成了,當(dāng)然了,此方式比較野路子。哪位大神有官方相關(guān)材料,可以告訴小弟的。

          者:NSS

          翻譯:楊金鴻

          術(shù)語(yǔ)校對(duì):韓海疇

          全文校對(duì):林亦霖

          本文約3000字,建議閱讀7分鐘

          本文為帶大家了解R語(yǔ)言以及分段式的步驟教程!

          人們學(xué)習(xí)R語(yǔ)言時(shí)普遍存在缺乏系統(tǒng)學(xué)習(xí)方法的問(wèn)題。學(xué)習(xí)者不知道從哪開(kāi)始,如何進(jìn)行,選擇什么學(xué)習(xí)資源。雖然網(wǎng)絡(luò)上有許多不錯(cuò)的免費(fèi)學(xué)習(xí)資源,然而它們多過(guò)了頭,反而會(huì)讓人挑花了眼。

          為了構(gòu)建R語(yǔ)言學(xué)習(xí)方法,我們?cè)赩idhya和DataCamp中選一組綜合資源,幫您從頭學(xué)習(xí)R語(yǔ)言。這套學(xué)習(xí)方法對(duì)于數(shù)據(jù)科學(xué)或R語(yǔ)言的初學(xué)者會(huì)很有用;如果讀者是R語(yǔ)言的老用戶,則會(huì)由本文了解這門語(yǔ)言的部分最新成果。

          R語(yǔ)言學(xué)習(xí)方法會(huì)幫助您快速、高效學(xué)習(xí)R語(yǔ)言。

          前言

          在開(kāi)始學(xué)習(xí)之前,第一個(gè)要回答的問(wèn)題是:為什么要用R語(yǔ)言?或者R語(yǔ)言為何如此有用?

          R語(yǔ)言是一門快速發(fā)展的開(kāi)源軟件,是SAS、STATA和SPSS這類商業(yè)軟件的競(jìng)爭(zhēng)對(duì)手。就業(yè)市場(chǎng)對(duì)R語(yǔ)言的需求正在迅速上升,微軟等公司也同時(shí)承諾將致力讓R語(yǔ)言成為數(shù)據(jù)科學(xué)通用語(yǔ)言。

          看看由Revolution Analytics制作的90秒視頻(https://www.youtube.com/watch?v=VlJnNSeO1uQ),您就知道R語(yǔ)言的用處。順便說(shuō)下,微軟剛剛收購(gòu)了Revolution Analytics。

          步驟一:配置計(jì)算機(jī)環(huán)境

          建立R語(yǔ)言學(xué)習(xí)環(huán)境最簡(jiǎn)單方法是通過(guò)綜合R語(yǔ)言歸檔網(wǎng)絡(luò)(CRAN)下載(https://cran.r-project.org/)到您的本地計(jì)算機(jī)上。可以選擇Linux、Mac和Windows對(duì)應(yīng)二進(jìn)制文件下載。

          您可能會(huì)考慮使用R語(yǔ)言自帶的控制臺(tái),但我們建議您安裝R語(yǔ)言集成開(kāi)發(fā)環(huán)境(IDE)。RStudio(https://www.rstudio.com/)是最有名的IDE,它能讓R語(yǔ)言編碼更容易、更快,還能讓您輸入多行代碼、處理圖形、安裝和維護(hù)程序,有效引導(dǎo)您的編程環(huán)境。RStudio此外可以選用基于eclipse的Architect(http://www.openanalytics.eu/architect)。如果需要安裝圖形用戶界面(GUI),請(qǐng)選擇R-commander(http://www.rcommander.com/)或Deducer(http://www.deducer.org/pmwiki/index.php?n=Main.WindowsInstallation)。

          課后作業(yè)

          • 安裝R和RStudio。

          • 安裝Rcmdr、rattle和Deducer程序包。以及推薦或依賴的程序包,包括GUI。

          • 使用庫(kù)命令加載安裝程序,并打開(kāi)GUI。

          步驟二:R語(yǔ)言基礎(chǔ)學(xué)習(xí)

          您應(yīng)該首先了解語(yǔ)言、庫(kù)和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)。

          如果您更傾向于在線交流方式學(xué)習(xí)R語(yǔ)法,DataCamp(https://www.datacamp.com/courses/free-introduction-to-r)提供的免費(fèi)在線R教程是很好的資源。還可以選擇后續(xù)課程:中級(jí)R編程(https://www.datacamp.com/courses/intermediate-r)。另一種學(xué)習(xí)方法是在線版本swirl(https://www.datacamp.com/swirl-r-tutorial),它能讓您在類似RStudio環(huán)境中學(xué)習(xí)R語(yǔ)言。

          在互動(dòng)學(xué)習(xí)環(huán)境中,您可以選擇參加Coursera(https://www.coursera.org/specializations/jhu-data-science)或Edx(https://www.edx.org/course/introduction-r-programming-microsoft-dat204x-0)上mooc課程。

          除了上述在線資源,您還可以考慮以下優(yōu)秀資源:

          • CRAN免費(fèi)教學(xué)R語(yǔ)言(https://cran.r-project.org/doc/manuals/R-intro.pdf)。

          • Jared Lander’s R for Everyone(http://www.jaredlander.com/r-for-everyone/)

          • Quick-R(http://statmethods.net/)

          專門學(xué)習(xí):閱讀、數(shù)據(jù)幀、表、概述、描述、加載和安裝包、使用繪圖命令可視化數(shù)據(jù)。

          課后作業(yè)

          • 使用DataCamp免費(fèi)在線R教程,熟悉基本的R語(yǔ)法。

          • 創(chuàng)建Github(http://github.com/)賬號(hào)。

          • 通過(guò)google幫助,解決安裝過(guò)程中出現(xiàn)的問(wèn)題。

          • 安裝swirl包并學(xué)習(xí)R編程(見(jiàn)上文)。

          步驟三:了解R社

          強(qiáng)大社區(qū)的存在是R語(yǔ)言發(fā)展迅速、大獲成功的主要原因。社區(qū)中核心的是R語(yǔ)言的“包”生態(tài)系統(tǒng)。R語(yǔ)言程序包可以在CRAN、bioconductor、github和bitbucket中下載。在Rdocumentation(http://www.rdocumentation.org/)中,您可以輕松搜索來(lái)自CRAN、github和bioconductor中能滿足您當(dāng)前工作需要的程序包。與在R語(yǔ)言程序包生態(tài)系統(tǒng)同樣重要的是,您可以在R endeavours上輕松獲得幫助與反饋。首先,R內(nèi)置幫助系統(tǒng),您可以通過(guò)命令來(lái)訪問(wèn)。同時(shí),在Analytics Vidhya Discussions,Stack OverflowR語(yǔ)言是增長(zhǎng)最快語(yǔ)言。R-bloggers(http://www.r-bloggers.com/)匯集許多R語(yǔ)言愛(ài)好者寫(xiě)的博文。

          課后作業(yè):

          • 訪問(wèn)CranTask Views了解R語(yǔ)言生態(tài)系統(tǒng)。

          • 在http://r-bloggers.com上注冊(cè)并訂閱每日新聞。

          步驟四:數(shù)據(jù)導(dǎo)入和操作

          導(dǎo)入和操作數(shù)據(jù)是數(shù)據(jù)科學(xué)工作流程中重要步驟。R語(yǔ)言允許使用特定包導(dǎo)入不同數(shù)據(jù)格式,從而使您工作更輕松,如下:

          • readr:導(dǎo)入平面文件。

          • Readxl package:將excel文件轉(zhuǎn)化為R語(yǔ)言。

          • haven package包:讓您將SAS、STATA和SPSS數(shù)據(jù)文件導(dǎo)入R語(yǔ)言。

          • Databases:連接通過(guò)像RMySQL和RpostgreSQL包,使用DBI訪問(wèn)和操作。

          • rvest: 網(wǎng)頁(yè)數(shù)據(jù)抓取。

          一旦數(shù)據(jù)在工作環(huán)境中可用,您就可以使用下面程序包操作:

          • 整理數(shù)據(jù)的tidyr程序包。

          • stringr包處理字符串操作。

          • 對(duì)象數(shù)據(jù)幀,可以學(xué)習(xí)dplyr包輸入和輸出(https://www.datacamp.com/courses/dplyr-data-manipulation)。

          • 需要執(zhí)行繁重?cái)?shù)據(jù)爭(zhēng)用任務(wù)?試試data.table程序包。

          • 執(zhí)行時(shí)間序列分析?嘗試一下像zoo,xts和quantmod程序包。

          課后作業(yè)

          • 通過(guò)“導(dǎo)入數(shù)據(jù)進(jìn)入R語(yǔ)言”課程,或閱讀文章1、2、3、4。掌握導(dǎo)入數(shù)據(jù)軟件包。

          • 通過(guò)RStudio觀看Data Wrangling with R 。(https://www.rstudio.com/resources/webinars/data-wrangling-with-r-and-rstudio/)

          • 閱讀并練習(xí)如何使用dplyr、tidyr和data.table程序包。

          步驟五:有效數(shù)據(jù)可視化

          自己創(chuàng)建數(shù)據(jù)可視化作品是一件很自豪的事情。然而,數(shù)據(jù)可視化既是一項(xiàng)技能,也是一門藝術(shù)。許多學(xué)者閱讀Edward Tufte 的“可視化定量數(shù)據(jù)”原理,或者StephenFew的 “pitfalls on dashboard design”。也可以閱讀NathanYau在FlowingData 寫(xiě)的博文,來(lái)獲得創(chuàng)建R語(yǔ)言可視化靈感。

          1. 平面圖無(wú)處不在

          R語(yǔ)言提供了多種創(chuàng)建圖形方法,使用原理圖創(chuàng)建圖形是標(biāo)準(zhǔn)的方法。然而,有一些好的工具(或包)使用更簡(jiǎn)單的方式來(lái)創(chuàng)建,查看圖形。

          • 在R語(yǔ)言中學(xué)習(xí)基本圖形語(yǔ)法是數(shù)據(jù)可視化中一種實(shí)用方法。

          • 在R語(yǔ)言中g(shù)gplot是數(shù)據(jù)可視化中最重要的包,并且很受歡迎,網(wǎng)上有很多它的學(xué)習(xí)資源,比如在線ggplot2教程,cheatsheet ,和以及一本由哈德利韋翰編寫(xiě)的教學(xué)書(shū)。

          • ggvis程序包允許您使用基本圖形語(yǔ)法創(chuàng)建交互式web圖形(參見(jiàn)教程)。

          • 您知道Hans Rosling ted課程嗎?教您如何的用googleVis(一個(gè)帶有谷歌圖表接口)來(lái)重建圖表。

          • 如果您遇到了繪制數(shù)據(jù)的問(wèn)題,這篇文章會(huì)對(duì)您有所幫助。在這個(gè)CRAN任務(wù)視圖中可以查看到更多的可視化資源。或者查看R語(yǔ)言數(shù)據(jù)可視化指南。

          2. 地圖無(wú)處不在

          您對(duì)分析空間可視化數(shù)據(jù)感興趣嗎?學(xué)習(xí)本教程:介紹R語(yǔ)言空間數(shù)據(jù),您會(huì)輕松地使用這些包。

          • 源自Google maps和ggmap開(kāi)放街道的靜態(tài)圖片,可用來(lái)創(chuàng)建可視化空間數(shù)據(jù)和模型。

          • Ari Lamstein’s中的choroplethr程序包。

          • tmap 程序包

          3. HTML插件

          HTML插件是R語(yǔ)言可視化產(chǎn)品中非常有前景的插件,您可以用簡(jiǎn)單的方式創(chuàng)建交互式web可視化(參見(jiàn)RStudio教程),掌握這種可視化方法將會(huì)成為R語(yǔ)言學(xué)習(xí)中必備技能。其帶來(lái)的視覺(jué)效果會(huì)給您朋友和同事留下深刻印象。

          • leaflet創(chuàng)建動(dòng)態(tài)圖片。

          • 使用dygraphs生成時(shí)間序列數(shù)據(jù)圖表。

          • 互動(dòng)表(datatable)。

          • DiagrammeR創(chuàng)建圖和流程圖。

          • MetricsGraphics創(chuàng)建散點(diǎn)圖、線圖和直方圖。

          課后作業(yè)

          • 理解基本圖形語(yǔ)法原理。

          • 學(xué)習(xí)ggplot2教程。

          • 使用RStudio環(huán)境學(xué)習(xí)html插件。

          步驟六:數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)

          對(duì)于新的統(tǒng)計(jì)數(shù)據(jù)學(xué)習(xí)方法,我們推薦下列資源:

          • Andrew Conway’s課程:R語(yǔ)言統(tǒng)計(jì)數(shù)據(jù)簡(jiǎn)介。

          • 杜克大學(xué)數(shù)據(jù)分析和統(tǒng)計(jì)推斷。

          • R語(yǔ)言實(shí)用數(shù)據(jù)科學(xué)。

          • 約翰霍普金斯大學(xué)數(shù)據(jù)科學(xué)專業(yè)課程。

          • R語(yǔ)言數(shù)據(jù)科學(xué)使用指南。

          如果您想提高機(jī)器學(xué)習(xí)能力,可以考慮從以下教程開(kāi)始學(xué)習(xí):

          • 機(jī)器學(xué)習(xí)算法要點(diǎn)。

          • 自行車共享大賽--一套R(shí)語(yǔ)言完整解決方案。

          • Kaggle上的機(jī)器學(xué)習(xí)課程。

          • 掌握機(jī)器學(xué)習(xí)。

          • 介紹機(jī)器學(xué)習(xí)。

          確保在相關(guān)的CRAN任務(wù)視圖中查看到R語(yǔ)言可用的機(jī)器學(xué)習(xí)資源。

          課后作業(yè)

          • 從統(tǒng)計(jì)學(xué)課程開(kāi)始入門。

          • 學(xué)習(xí)Kaggle上免費(fèi)機(jī)器學(xué)習(xí)課程。

          • 看Rattle中的一些R語(yǔ)言數(shù)據(jù)挖掘書(shū)。

          • 可以從這本小冊(cè)子上學(xué)習(xí)時(shí)間序列——A Little Book for Time Series in R .

          步驟七:報(bào)告結(jié)果

          與數(shù)據(jù)科學(xué)愛(ài)好者交流成果,分享見(jiàn)解是一件很重要的事情。幸運(yùn)的是,R語(yǔ)言針對(duì)這個(gè)問(wèn)題有一些非常實(shí)用工具。

          第一個(gè)工具是R Markdown,采用knitr和pandoc復(fù)制方式生成您的數(shù)據(jù)分析結(jié)果報(bào)告。使用R markdown工具,R語(yǔ)言最終生成文檔,替換R語(yǔ)言代碼。文檔可以是html、word、pfd、ioslides等格式。您可以通過(guò)本教程學(xué)到更多知識(shí)并使用cheatsheet作為參考資料。

          第二個(gè)工具是ReporteRs,它是個(gè)創(chuàng)建Microsoft(Worddocx和Powerpoint pptx)和html R語(yǔ)言文檔程序包,并可以在Windows、Linux、Unix和Mac OS系統(tǒng)上運(yùn)行。像R Markdown工具一樣自動(dòng)生成R語(yǔ)言報(bào)告,點(diǎn)擊這里我們來(lái)看看如何操作。

          第三個(gè)是Shiny,目前R語(yǔ)言中最令人興奮的工具。使R語(yǔ)言構(gòu)建交互式web應(yīng)用程序變得非常容易。您可以把分析報(bào)告轉(zhuǎn)換為交互式web應(yīng)用程序,您不需要了解HTML、CSS或Javascript相關(guān)知識(shí)。如果您想要學(xué)習(xí)Shiny ,請(qǐng)點(diǎn)擊RStudio learning portal。

          課后作業(yè)

          • 使用RMarkdown或ReporteRs創(chuàng)建第一個(gè)交互式報(bào)告。

          • 嘗試構(gòu)建一個(gè)Shiny應(yīng)用。

          練習(xí)

          只有通過(guò)大量練習(xí)才能成為優(yōu)秀R語(yǔ)言程序員。因此,要定期解決數(shù)據(jù)科學(xué)中的問(wèn)題。我們的建議是趕緊開(kāi)始與Kaggle上的數(shù)據(jù)科學(xué)家交流。

          在解決問(wèn)題中測(cè)試自己的R語(yǔ)言水平--練習(xí)中的問(wèn)題。

          步驟八:時(shí)間序列分析

          R語(yǔ)言有一個(gè)用于專屬任務(wù)視圖時(shí)間序列。如果你想在R語(yǔ)言中做一些時(shí)間序列分析,這將是您開(kāi)始的地方。您很快會(huì)發(fā)現(xiàn)工具的強(qiáng)大。

          想要從在線資源中掌握時(shí)間序列分析是件不容易的事情。好的切入點(diǎn)是一本關(guān)于時(shí)間序列的書(shū)或者選擇《原理與實(shí)踐》這本書(shū)。在程序包方面,您需要熟悉Zoo與xts程序包。Zoo為您提供了常用的保存時(shí)間序列對(duì)象格式,而xts供了操作時(shí)間序列的數(shù)據(jù)集工具。

          輔助資源: 時(shí)間序列綜合教程。

          課后作業(yè)

          • 選擇上述列出的時(shí)間系列教程,開(kāi)始您的分析。

          • 使用quantmod或quandl程序軟件包下載財(cái)務(wù)數(shù)據(jù),開(kāi)始您的時(shí)間序列分析。

          • 使用諸如dygraphs的程序包創(chuàng)建您的可視化時(shí)間序列數(shù)據(jù)和分析。

          文本挖掘一個(gè)重要工具

          學(xué)習(xí)文本挖掘,您可以從edge課程中學(xué)習(xí)。雖然課程已經(jīng)結(jié)束,但是您仍然可以訪問(wèn)這些課程。

          練習(xí)

          • 文本挖掘競(jìng)賽--一套R(shí)語(yǔ)言的完整解決方案。

          步驟九:成為R語(yǔ)言大師

          現(xiàn)在您已經(jīng)掌握了大部分R語(yǔ)言數(shù)據(jù)分析,是時(shí)候給出一些高級(jí)課程資源了。您很可能已經(jīng)知道其中的一些內(nèi)容,但不妨看看這些教程。

          • Hadley Wickham的高級(jí)R語(yǔ)言教程。

          • 在Hadoop、MongoDB或NoSQL中使用R語(yǔ)言。

          • 微軟的RevoScaleR 程序包

          原文鏈接:

          https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-r-data-science/

          楊金鴻,北京護(hù)航科技有限公司員工,在業(yè)余時(shí)間喜歡翻譯一些技術(shù)文檔。喜歡閱讀有關(guān)數(shù)據(jù)挖掘、數(shù)據(jù)庫(kù)之類的書(shū),學(xué)習(xí)java語(yǔ)言編程等,希望能在數(shù)據(jù)派平臺(tái)上熟識(shí)更多愛(ài)好相同的伙伴,今后能在數(shù)據(jù)科學(xué)的道路上走的更遠(yuǎn),飛的更遠(yuǎn)。

          在,我們已經(jīng)充分了解了 HTTP 和 Socket 的關(guān)系,也了解了 HTTP 報(bào)文的格式,為了讓小伙伴能夠加深對(duì)這兩個(gè)概念的理解,本文我們來(lái)看看如何利用 Socket 模擬 HTTP 請(qǐng)求。如果小伙伴們對(duì) HTTP 和 Socket 的關(guān)系、HTTP 報(bào)文格式尚不熟悉的話,可以參考前面的文章 Http 和 Socket 到底是哪門子親戚?。

          由于 HTTP 是基于 TCP 協(xié)議的應(yīng)用層協(xié)議,因此我們可以用更為底層的方式來(lái)訪問(wèn) HTTP 服務(wù),即直接使用 Socket 完成 HTTP 的請(qǐng)求和響應(yīng)。我們前面說(shuō)過(guò),HTTP 的任務(wù)就是完成數(shù)據(jù)的包裝, Socket 提供了網(wǎng)絡(luò)的傳輸能力,所以我們只需要按照 HTTP 報(bào)文的格式來(lái)組裝數(shù)據(jù),然后利用 Socket 將數(shù)據(jù)發(fā)送出去,就能得到回應(yīng)。

          POST 請(qǐng)求上傳數(shù)據(jù)

          假設(shè)我現(xiàn)在有一個(gè)數(shù)據(jù)接口 http://localhost/hello,該接口每次接收一個(gè)參數(shù) name ,調(diào)用成功之后返回給用戶一個(gè) hello:name 字符串,那我們用 Socket 來(lái)實(shí)現(xiàn)這樣一個(gè) HTTP 請(qǐng)求。

          首先,我們要先組裝出 HTTP 的請(qǐng)求頭,如下(如果小伙伴對(duì)下面這個(gè)請(qǐng)求頭有疑問(wèn),請(qǐng)復(fù)習(xí) Http 和 Socket 到底是哪門子親戚?一文):

          POST /hello HTTP/1.1
          Accept:text/html
          Accept-Language:zh-cn
          Host:localhost
          
          name=張三
          

          我這里為了簡(jiǎn)單,只添加了三個(gè)請(qǐng)求頭,然后我們通過(guò) Socket 將上面這個(gè)字符串發(fā)送出去:

          Socket socket = new Socket(InetAddress.getByName("localhost"), 80);
          OutputStream os = socket.getOutputStream();
          String data = "name=張三";
          int dataLen = data.getBytes().length;
          String contentType = "Content-Length:" + dataLen+"\r\n";
          os.write("POST /hello HTTP/1.1\r\n".getBytes());
          os.write("Accept:text/html\r\n".getBytes());
          os.write("Accept-Language:zh-cn\r\n".getBytes());
          os.write(contentType.getBytes());
          os.write("Host:localhost\r\n".getBytes());
          os.write("\r\n".getBytes());
          os.write(data.getBytes());
          os.write("\r\n".getBytes());
          os.flush();
          

          我在 Serlvet 中接收這個(gè)請(qǐng)求并作簡(jiǎn)單處理,如下:

          BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream(),"UTF-8"));
          StringBuffer sb = new StringBuffer();
          String str;
          while ((str = br.readLine()) != null) {
              sb.append(str).append("\r\n");
          }
          System.out.println("sb:"+sb.toString());
          resp.setContentType("text/html;charset=utf-8");
          PrintWriter out = resp.getWriter();
          out.write(sb.toString());
          out.flush();
          out.close();
          

          然后通過(guò) Socket 中的輸入流我就能拿到響應(yīng)結(jié)果,如下:

          BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          StringBuffer sb = new StringBuffer();
          String str;
          while ((str = br.readLine()) != null) {
              sb.append(str).append("\r\n");
          }
          System.out.println(sb.toString());
          

          響應(yīng)結(jié)果如下:

          HTTP/1.1 200 
          Content-Type: text/html;charset=utf-8
          Transfer-Encoding: chunked
          Date: Sun, 03 Dec 2017 10:46:52 GMT
          
          name=張三
          

          這是一個(gè)簡(jiǎn)單的通過(guò) POST 請(qǐng)求下載文本的案例。接下來(lái)我們?cè)賮?lái)一個(gè) GET 請(qǐng)求下載圖片的案例,來(lái)加深對(duì) Socket 的理解。

          GET 請(qǐng)求下載圖片

          這個(gè)實(shí)際上也不難,但是要實(shí)現(xiàn)圖片的下載需要我們首先熟悉HTTP響應(yīng)的數(shù)據(jù)格式,不熟悉的小伙伴可以閱讀 Http 和 Socket 到底是哪門子親戚?一文。  

          下載圖片,響應(yīng)頭是文本文件,響應(yīng)數(shù)據(jù)是二進(jìn)制文件,我們要想辦法通過(guò)空行將這兩塊數(shù)據(jù)分開(kāi),分別處理。為了解決這個(gè)問(wèn)題,我首先提供一個(gè)工具類,這個(gè)工具類用來(lái)實(shí)現(xiàn)一行一行的解析字節(jié)流,如下:  

          public class BufferedLineInputStream {
              private InputStream is;
          
              public BufferedLineInputStream(InputStream is) {
                  this.is = is;
              }
          
              /**
               * @param buf    將數(shù)據(jù)讀入到byte數(shù)組中
               * @param offset 數(shù)組偏移量
               * @param len    數(shù)組長(zhǎng)度
               * @return 返回值表示讀取到的數(shù)據(jù)長(zhǎng)度 -1表示數(shù)據(jù)讀取完畢,0表示其他異常情況
               */
              public int readLine(byte[] buf, int offset, int len) throws IOException {
                  if (len < 1) {
                      return 0;
                  }
                  //count用來(lái)統(tǒng)計(jì)已經(jīng)向數(shù)組中存儲(chǔ)了多少數(shù)據(jù)
                  int count = 0, c;
                  while ((c = is.read()) != -1) {
                      buf[offset++] = (byte) c;
                      count++;
                      //如果一行已經(jīng)讀完或者數(shù)組已滿
                      if (c == '\n' || count == len) {
                          break;
                      }
                  }
                  return count > 0 ? count : -1;
              }
          }
          

          然后將響應(yīng)中的頭信息和圖片分別保存在不同的文件中,數(shù)據(jù)解析的核心思路就是一行一行讀取響應(yīng)數(shù)據(jù),當(dāng)遇到 \r\n 表示頭信息已經(jīng)讀取完了,要開(kāi)始讀取二進(jìn)制數(shù)據(jù)了,二進(jìn)制數(shù)據(jù)讀取到之后,將之保存成圖片即可。核心代碼如下:

          fos = new FileOutputStream("E:\333.png");
          pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("E:\222.txt")));
          socket = new Socket(InetAddress.getByName("localhost"), 80);
          OutputStream out = socket.getOutputStream();
          out.write("GET /1.png HTTP/1.1\r\n".getBytes());
          out.write("Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n".getBytes());
          out.write("Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n".getBytes());
          out.write("Host:localhost\r\n".getBytes());
          out.write("\r\n".getBytes());
          
          BufferedLineInputStream blis = new BufferedLineInputStream(socket.getInputStream());
          int len;
          byte[] buf = new byte[1024];
          while ((len = blis.readLine(buf, 0, buf.length)) != -1) {
              String s = new String(buf, 0, len);
              System.out.println(s);
              if (s.equals("\r\n")) {//表示頭信息讀取完畢
                  break;
              }
          }
          //開(kāi)始解析二進(jìn)制的圖片數(shù)據(jù)
          while ((len = blis.readLine(buf, 0, buf.length)) != -1) {
              fos.write(buf, 0, len);
          }
          

          OK,Socket 模擬 HTTP 請(qǐng)求我們就先說(shuō)到這里,兩個(gè)案例,希望能夠加深小伙伴對(duì) Socket 和 HTTP 的理解。


          主站蜘蛛池模板: 亚洲线精品一区二区三区| 国产一区二区在线观看app| 国产主播福利精品一区二区| 中文字幕国产一区| 精品国产一区二区麻豆| 福利一区二区三区视频在线观看| 鲁大师成人一区二区三区| 日韩一区二区在线视频| 午夜福利一区二区三区在线观看 | 暖暖免费高清日本一区二区三区| 日本免费一区二区三区最新vr| 好湿好大硬得深一点动态图91精品福利一区二区 | 波多野结衣一区二区免费视频 | 亚洲日韩精品一区二区三区| 亚洲一区综合在线播放| 国产SUV精品一区二区88| 97久久精品午夜一区二区| 蜜桃无码AV一区二区| 日韩精品一区二区三区老鸦窝| 日韩经典精品无码一区| 亚洲AV美女一区二区三区| 精品日韩一区二区| 高清一区二区三区免费视频| 在线观看中文字幕一区| 国产成人精品一区二区三区无码| 国产精品亚洲一区二区麻豆 | 国产精品综合AV一区二区国产馆| 区三区激情福利综合中文字幕在线一区| 国产免费无码一区二区| 欧洲精品一区二区三区| 亚洲天堂一区二区三区四区| 国产精品无码不卡一区二区三区| 亚洲国产成人精品无码一区二区| 日韩AV在线不卡一区二区三区| 亚洲AV无码一区二区二三区入口| 国产伦精品一区三区视频| 亚洲高清日韩精品第一区| 国产精品一区二区久久精品无码| 国产精品视频分类一区| 国精品无码一区二区三区左线| 国产精品区一区二区三|