首页 文章 精选 留言 我的

精选列表

搜索[零代码],共10000篇文章
优秀的个人博客,低调大师

零基础学python之文本和编码问题

字符串是个相当简单的概念:一个字符串是一个字符序列。问题出在”字符”的定义上。 在2015 年,”字符”的最佳定义是Unicode字符。因此,从Python 3 的str对象中获取 的元素是Unicode字符 Unicode 标准把字符的标识和具体的字节表述进行了如下的明确区分。 字符的标识,即码位,是0~1 114 111的数字(十进制),在Unicode标准中以4~6个十六进制数字表示,而且加前缀U+。例如,字母A的码位是U+0041,欧元符号的码位是U+20AC,高音谱号的码位是U+1D11E. 在Unicode 6.3标准中,约10% 的有效码位有对应的字符。 字符的具体表述取决于所用的编码。编码是在码位和字节序列之间转换时使用的算法。在UTF-8编码中,A(U+0041)的码位编码成单个字节\x41,而在UTF-16LE编码中编码成两个字节\x41\x00。再举个例子,欧元符号(U+20AC)在UTF-8编码中是三个字节——\xe2\x82\xac,而在UTF-16LE中编码成两个字节:\xac\x20. 把码位转换成字节序列的过程是编码,使用encode;把字节序列转换成码位的过程是解码,使用decode. 非英语用户常常会搞反所谓的编码解码,可以这样理解: 把Unicode字符串想成“人类可读”的文本.那么, 把字节序列变成人类可读的文本字符串就是解码 而把字符串变成用于存储或传输的字节序列就是编码 所以,我们在做爬虫的时候,遇到乱码的情况,可以先去看看编码格式是否正确!

优秀的个人博客,低调大师

从零开始建立Rancher Catalog模板 - Part 1

Rancher提供了许多可重用的、预先构建好的程序栈的模板。拓展这些已有的模板或者创建并分享已完成的新模板,是参与Rancher用户社区的好方式。同时,这也可以帮助你的组织更高效地利用基于容器的技术。这个系列的文章致力于通过现有的最好的工具和技术来帮助新Catalog模板的作者快速投入工作。 在这篇文章中,我们将构建一个十分简单(但不是非常有用)的Cattle Catalog模板。在下一篇文章中,我们将以更多细节来完善这个模板,直到我们拥有一个可以正常工作的、多容器的、基于NGINX的静态网站,它利用了Rancher Compose、Docker Compose和Rancher Cattle所有的基础设施。 概述和术语 在我们投身到创建一个新的Rancher Catalog模板之前,让我们先来弄清楚一些通用的术语。如果你是一个有经验的Rancher用户,你应该能够快速浏览本章节。如果你是Linux容器、集群管理以及容器编排世界的新手,那么现在是去google上进行搜索的好时候。 从我们的目的来看,Rancher是一个能够部署基于容器的程序栈、并管理其生命周期的开源的软件。它支持大多数通常容易获得的开源的容器编排框架。目前,Rancher对Docker容器和下面的编排框架有了极好的支持: Kubernetes Mesos Docker Swarm Rancher’s own Docker Compose-based Cattle 在确保考虑了其他框架的情况下,如果你最喜欢的框架仍然没有被列出来,那么对这个框架的支持可能正在进行中。 在先前提到的每一个自动化容器管理框架的背景下,Rancher包括一个预先建立好并且可重用的应用模板的目录。这些模板可能由一个单一的容器镜像构成,但是它们常常由多个镜像拼接而成。模板能被填入特定环境的配置参数,并且可以通过Rancher管理员控制台实例化在运行的程序栈中。下面的截屏是通过Rancher管理员控制台看到的几个程序栈。注意:WordPress和Prometheus栈被展开以显示每一个程序栈中的多个容器。 在这篇文章中我们将会专注于Rancher自己的Cattle编排框架。看下面的图片,它们是一些为Cattle装配的预先建立好的Catalog模板的示例。 建立你的第一个Rancher Cattle Catalog模板 虽然许多时候这些预先建立好的Rancher Catalog模板可以直接装配使用,但是有时你将需要修改一个模板(并且之后请你提交你的pull请求至上行流!),甚至当你渴望的程序栈并不存在时从头去创建一个新的模板。 手动建立它 就这个练习而言,我假定你有: (1)一个运行着rancher/server容器的容器主机 (2)至少一个运行着rancher/agent的计算节点(就这个demo而言,(1)和(2)可以使同一台主机) (3)一个配置好的Rancher Cattle环境(默认具有一个运行中的rancher/server实例) 添加一个定制的Cattle Catalog模板 默认情况下,Rancher管理员控制台上所列出的Catalog模板是来自于Rancher Community Catalog repository。我们将创建我们自己的git仓库作为我们新的‘demo应用’的Cattle Catalog模板。首先,我们要在我们自己的本地工作站上建立工作目录。 尽管这里没有什么高深的魔法,但还是让我们按上面的步骤一步一步地来做: 在工作空间下建立一个名为“rancher-cattle-demo”的工程工作目录。这些名字和路径完全是任意的,但是你可能会发现根据以下惯例命名工作目录和git仓库是很有用的:rancher-<orchestration framework>-<app name>。 创建git仓库,若是在本地则使用”git init”命令,若是在GitHub上则通过“hub”途径。 用Rancher Cattle目录模板所必须的最小文件集合来填充这个仓库。我们将马上详细地介绍这些内容。 现在让我们进行这个示例模版的第一步提交及“git push”。 你可能想确保你成功地推送到了GitHub上面。下面是进行上面的推送后我的账户的样子: 值得注意的是,在上面的截图中,我使用了Chrome浏览器插件Octotree来获得整个仓库文件系统完整的视图。 现在让我们配置Rancher以放入我们新的Catalog模板。这是在Admin/Setting菜单下,使用Rancher管理员控制台完成的: 点击页面中间的“Add Catalog”前面的“+”号。一个你可以为新的Catalog仓库输入名字和URI的文本框会出现。在这次示范中,我为我们新的Catalog仓库起的名字为“demo app”。填写来自先前定制工作的其它定制的Catalog设置。 现在我们可以在Rancher管理员控制台里的Catalog/demo应用中查看容器模板的列表。在这个案例中就是我们的“demo app”模板。但是等等,什么地方错了。 虽然我们已经为Rancher Cattle模板成功创建了框架,但是我们既没有为我们的模板放入任何的元数据,也没有填充对于我们基于容器的应用的定义或配置。 尽管基于dock-compose.yml和rancher-compose.yml的应用值得用一整篇文章(或两篇)来定义,但就目前来看,我们只会关注模板的基本元数据。换句话说,我们只会看一下config.yml的内容。 最小的config.yml Rancher文档包含了关于config.yml的细节信息。虽然我们将要做的已经足够让它工作起来,但是也十分推荐深入的阅读这个文档。 config.yml config.yml文件是与模板相关的元数据的初始资源。让我们看一个最小的例子: 1 2 3 4 5 6 7 ---name:DemoAppdescription:> ADemoAppwhichdoesalmostnothingofanypracticalvalue. version: 0.0 . 1 -rancher1 category:ToyApps maintainer:NathanValentine<nathan @rancher .com|nrvale0 @gmail .com> license:Apache2 projectURL:https: //github.com/nrvale0/rancher-cattle-demo 万一从文件名看不出来的话,元数据就会被指定为YAML。有了以上的YAML和git提交中的图标文件,让我们看看模板的新状态吧。 虽然这开始看起来好多了,但是目前我们创建的这个Catalog模板还没什么实际性的作用。在这个系列的下一篇博文中,我们将介绍如何创建我们的程序栈(提示:它包含填充docker-compose.yml和rancher-compose.yml文件。) 一个更好的创建模板的方法 在我们转移到应用定义这个话题之前,我得告诉你个秘密。 在手动创建新的Catalog模板的时候不需要任何高深的魔法,这个过程很容易产生一些小而愚蠢的错误而引发问题。拥有一个能让我们以快速的、可重复的,低错误的方式创建一个新的Catalog模板的工具将会是极好的。事实上,这种工具的确存在。Rancher社区已经向The Yeoman Project提交了一个Rancher Catalog模板“产生器”。假定你有一个工作的Node.js环境,使用默认的框架产生一个新的Cattle Catalog模板就像下面所示的过程一样简单。 原文来源:Rancher Labs 本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/1927023

优秀的个人博客,低调大师

零基础搭建Hadoop大数据处理-环境

由于Hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体的安装此处不作过多介绍,只作需要用到的知识介绍。 VMware的安装,装好一个虚拟机后利用复制虚拟机的方式创建后面几个虚拟机,省时省力,需要注意的是需要修改每个虚拟机的IP与主机名。 所有虚拟机采用NAT模式上网,而且要保证与物理主机的IP互相能访问。 需要注意的几个问题。nat如果上网首先需要查看物理机(pc机)这个服务器已经启动。上网的原理:流量是走的物理网卡,但是它的ip,却是和物理机没有关系的。也就是说,无论你怎么更换网络环境,你的虚拟机都不需要做改变。这就是它的优点。 首先在安装VMware 之后,我们会看到多了两个网卡 这个如果经过网络配置的折磨,应该能找到着两个网卡:vmnet1和vmnet8,这里讲的是vmnet8。 重点看右侧第三图你会看到ip地址,这个ip地址,因个人而异,也就是说不同网络,不同环境,这个ip变化的概率是很大的。可能是192.168.0.1等等。这里也相当于我们编程的一个变量,这里是需要你根据你的环境来赋值的,建议vmnet1到vmnet8分别设置192.168.10.1到192.168.80.1,好作区分。 上面我们通过看到的虚拟机网卡的ip,为了避免混肴,上面的虚拟网卡和本地网络适配器处于同一界面。如下图: 而下面则是在打开虚拟机之后,通过菜单弹出 弹出之后,我们在看一下虚拟机的(交换机)vmnet8. 可以看到vmnet8子网ip和虚拟机网卡是出于同一个网段的。 同时在右侧net设置界面,我们可以看到网关为:192.168.106.2,改成192.168.80.2 虚拟机的设置会用到。 Linux基础知识 Linux的学习也是一个过程,因为可能你连最简单的开机和关机命令都不会,更不要谈配置网络。这里面给大家提供刚开始学习所查阅的资料和经验总结。 首先我们需要使用一些命令,进行网络配置,但是在网络配置中,这里面又必须懂得虚拟机的一些知识,所以前面的虚拟机知识需要掌握扎实一些。 在此注意CentOS7与CentOS6的命令有些不同,会一些常用命令是必备,每次开机或启动解压安装授权都是最基本的知识,其它的可以暂时不用学。 CentOS中安装java环境 下载对应32或64位jdk,设置好JDK环境变量PATH,具体的配置可自行Google。 环境准备 修改机器名,每个系统中都要修改成这样。 打开终端,切换到root用户下修改机器名称。 $sudosu $vim/etc/sysconfig/network 在其中添加“HOSTNAME=H32” 添加每个服务器IP对应的机器名 三个ip地址都添加到各自的/etc/hosts文件中 每个系统中都要修改成这样 #编辑hosts vim/etc/hosts 关闭SELinux #编辑SELinux配置文件 vim/etc/selinux/config #改状态 SELINUX=disabled SSH设置 进入H30,查看ssh是否安装,如果有,继续,没有安装下。 rpm-qa|grepssh 时间服务器安装 这里需要安装时间服务器,其他的服务器通过这个来进行多机器时间的同步,分布式部署时机器时间不一致会导致数据错误或组件内通讯错误。 安装httpd服务 httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 安装yum-utils yum install yum-utils 用于在线yum安装 它是基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。(需要机器能访问外网) 准备资源和环境 下载Centos 7.2 的iso安装镜像,jdk1.8 for Linux压缩包,hadoop2.7.3压缩包(本来用hadoop3,发现后面不兼容hive的最新版本) Java基础知识 由于Hadoop框架源码都是以java来写,因此最好都以java作为开发的最佳语言,虽然说有些用C#做了封装,但性能已大打折扣。(这就是为什么说Java的学大数据有很大的优势,其它语言的还需要重新学习Java) Eclipse IDE使用 Linux和Windows下源码编译技术 还有最重要的是你的网速要好,因为安装过程中会下载依赖包,网不好会卡到你怀疑人生。 最后还需要有耐心,每台机子的环境都不一样,而且每个人下载的包的版本也有可能不一样 会导致各种问题,此时就需要耐心的去看日志,不停的尝试和仔细的对比安装步骤,可能就是少了个变量 或大小写错误或是要重启。 环境准备就这么多,下一章开始讲如何安装Hadoop集群。 本文作者:欢醉 来源:51CTO

优秀的个人博客,低调大师

零基础搭建Hadoop大数据处理-初识

在互联网的世界中数据都是以TB、PB的数量级来增加的,特别是像BAT光每天的日志文件一个盘都不够,更何况是还要基于这些数据进行分析挖掘,更甚者还要实时进行数据分析,学习,如双十一淘宝的交易量的实时展示。 大数据什么叫大?4个特征: 体量化 Volume,就是量大。 多样化 Variety,可能是结构型的数据,也可能是非结构行的文本,图片,视频,语音,日志,邮件等 快速化 Velocity,产生快,处理也需要快。 价值密度低 Value,数据量大,但单个数据没什么意义,需要宏观的统计体现其隐藏的价值。 可以看出想只要一台强大的服务器来实时处理这种体量的数据那是不可能的,而且成本昂贵,代价相当大,普通的关系型数据库也随着数据量的增大其处理时间也随之增加,那客户是不可能忍受的,所以我们需要Hadoop来解决此问题。 优点: Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点: 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。 Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。 Hadoop在各应用中是最底层,最基础的组件,所以其重要性不言而喻。 框架结构 Hadoop主要由HDFS ( 分布式文件系统)和MapReduce (并行计算框架)组成。 Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。 HDFS 对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。 存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。 单节点物理结构 主从结构 主节点,只有一个: namenode 从节点,有很多个: datanodes namenode负责:接收用户操作请求 、维护文件系统的目录结构、管理文件与block之间关系,block与datanode之间关系 NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。 datanode负责:存储文件文件被分成block存储在磁盘上、为保证数据安全,文件会有多个副本 MapReduce MapReduce是处理大量半结构化数据集合的编程模型。编程模型是一种处理并结构化特定问题的方式。例如,在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出如何产生计算。还可以用更传统的语言(C++,Java),一步步地来解决问题。这是两种不同的编程模型,MapReduce就是另外一种。 MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好。 主从结构 主节点,只有一个: JobTracker 从节点,有很多个: TaskTrackers JobTracker负责:接收客户提交的计算任务、把计算任务分给TaskTrackers执行、监控TaskTracker的执行情况 TaskTrackers负责:执行JobTracker分配的计算任务 Hadoop能做什么? 大数据量存储:分布式存储 日志处理: Hadoop擅长这个 海量计算: 并行计算 ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库 使用HBase做数据分析: 用扩展性应对大量的写操作—Facebook构建了基于HBase的实时数据分析系统 机器学习: 比如Apache Mahout项目 搜索引擎:hadoop + lucene实现 数据挖掘:目前比较流行的广告推荐 大量地从文件中顺序读。HDFS对顺序读进行了优化,代价是对于随机的访问负载较高。 数据支持一次写入,多次读取。对于已经形成的数据的更新不支持。 数据不进行本地缓存(文件很大,且顺序读没有局部性) 任何一台服务器都有可能失效,需要通过大量的数据复制使得性能不会受到大的影响。 用户细分特征建模 个性化广告推荐 智能仪器推荐 扩展 实际应用: Hadoop+HBase建立NoSQL分布式数据库应用 Flume+Hadoop+Hive建立离线日志分析系统 Flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析 酷狗音乐的大数据平台 京东的智能供应链预测系统 Hadoop的学习不仅仅是学习Hadoop,还要学习Linux,网络知识,Java、还有数据结构和算法等等,所以万里长征才开始第一步,希望Hadoop学习不是从了解到放弃。 本文作者:欢醉 来源:51CTO

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册