首页 文章 精选 留言 我的

精选列表

搜索[分库分表],共10000篇文章
优秀的个人博客,低调大师

5分钟用Jitpack发布开源库

项目开发中会用到很多开源库, 他们一般通过Maven/Gradle依赖进来的. 演而优则唱,开发越来越溜以后, 你是否也蠢蠢欲动,想发布自己的库呢. 下面介绍怎么通过Jitpack进行发布Github代码, 真的非常非常简单,几分钟搞定~ 为什么用Jitpack 现在Maven的两个主要仓库是: 1)Maven center 2)jcenter 他们使用面很广, 家大业大,所以带来的相应的问题: 1)发布过程比较麻烦,需要验证和审核 2)发布的时候需要Group唯一,这个group得是一个域名.而现在很多开发者没有自己的域名. 用Jitpack就没有这些烦恼了, 利用Github地址做自己域名, 发布配置也非常简单,不需要验证. 话不多说,来看看怎么搞. 步骤1: 新建Lib工程 在AndroidStudio中新建Andro

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

一分钟快速入门openstack

一、它是什么,能干什么 想认识一个事物,必须先弄明白它是什么,能干什么。 首先说一下,openstack是一个搭建云平台的一个解决方案,说他不是个软件,但是我觉得说是一个软件,能够让初学者更容易接受和理解,在后期的慢慢接触过程中,大家就能够理解,为什么说它不是一个软件。openstack能干什么,可以搭建公有云,私有云,企业云。(顺便说一下,企业云将是openstack的用武之地)二、openstack组成 上面是一个整体的认识,想进一步了解openstack,就必须了解它的组成。其实这有点像研究生物。一般生物都有眼睛,鼻子,嘴等。那么openstack,都有什么。openstack更像是经过计算机的72变之后的产物。包括:7个核心组件:Compute(计算), Object Storage(对象存储),Identity(身份认证),Dashboard(仪表盘), Block Storage(块存储), Network(网络) 和 Image Service(镜像服务) 。 上面从计算机的角度做一个比喻,有不恰当的地方,大家多指正。Compute类似计算的内存;Object Storage类似存储器;Identity就像登陆过程中,验证用户名和密码;Dashboard就操作界面;Network这个大家很容易就明白。三、openstack组件代号 上面各个组件有名字,其实熟悉openstack的都会说他们的代号。也就是专业术语。Compute(代号为“Nova”) Identity(代号为“Keystone”) Dashboard(代号为“Horizon”) Image Service(代号为“Glance”) Network(代号为“Quantum”) Object Storage(代号为“Swift”) Block Storage(代号为“Cinder”)四、openstack组件详细介绍 上面了解了,就差不多有点熟悉openstack了。想进一步认识,必须不能着急。下面进一步详细介绍各个组件的作用: (1)Nova 这个是最核心的,Nova最开始的时候,可以说是一套虚拟化管理程序,还可以管理网络和存储。 (2)keystone 这是提供身份认证和授权的组件。任何系统,身份认证和授权,其实都比较复杂。尤其Openstack 那么庞大的项目,每个组件都需要使用统一认证和授权。 目前keystone 要做的东西其实还是很多。没法基于角色的授权,web管理用户等。(3)Dashboard (代号为“Horizon”) 为所有OpenStack的服务提供了一个模块化的web-based用户界面。使用这个Web GUI,可以在云上完成大多数的操作,如启动实例,分配IP地址,设置访问控制等。 (4)Glance 这是镜像管理。 目前Glance的镜像存储,支持本地存储,NFS,swift,sheepdog和Ceph,基本是够用了。 目前Glance的最大需求就是多个数据中心的镜像管理,如何复制,不过这个功能已经基本实现。还有就是租户私有的image管理,这些目前功能都已经实现。 个人感觉:Glance后续基本就是一个bug修复,稳定的阶段。 (5)Quantum 这是网络管理的组件,也是重头戏,Openstack的未来,基本都要靠quantum。上面介绍nova的时候,说过网络相关的内容,都会交给Quantum。不过Quantum的开发进度不是太如人意。Flosom规划实现功能,到Grizzly才实现。未来nova network的代码清理,估计到H版本都不见得可以实现。 Quantum 后端可以是商业产品或者开源。开源产品支持Openvswitch,和linux bridge。网络设备厂商都在积极参与,让他们的产品支持Quantum。 (6)Swift 这是对象存储的组件。对于大部分用户来说,swift不是必须的。你只有存储数量到一定级别,而且是非结构化数据才有这样的需求。很多人都问一个相同的问题:是否可以把虚拟机的存储放在swift上。简单回答:不行。你需要搞明白对象存储是干啥,擅长那些地方,那些是不行的。 swift是Openstack所有组件了最成熟的,可以在线升级版本,各种版本可以混合在一起,也就是说,1.75版本的swift可以和1.48的在一个群集里.这个是很难得的. (7)Cinder 这是存储管理的组件。Cinder存储管理主要是指虚拟机的存储管理。

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

10分钟用Jitpack发布开源库

1、概述 项目开发中无论Java web 还是Android 都会用到很多开源库,他们一般通过Maven/Gradle依赖进来的。 现在Maven的两个主要仓库是: - Maven center - Bintray jcenter 你有上传JAR或者AAR到上面仓库的经历吗? 如果有你觉得上传步骤繁琐吗? 他们使用面很广,所以带来的相应的问题: - 发布过程比较麻烦,需要注册账号、验证和审核 - 发布的时候需要Group唯一,这个Group得是一个域名(Maven center是需要的、jcenter可能不需要)。 用Jitpack就没有这些烦恼了,利用Github地址做自己域名,发布配置也非常简单,不需要注册账号、验证以及审核。 官方Android library提交到Jitpack的文档 https://jitpack.io/docs/ANDROID/ Android-Example Multiple build variants 官方maven-projects提交到Jitpack的文档 https://jitpack.io/docs/BUILDING/#maven-projects Simple Multiple modules 2、上传Android library到Jitpack 2.1 在项目的build.gradle的buildscript添加 如果你使用的Grade是Gradle 3.0或者更高的版本需要在项目build.gradle中添加 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' 我这里使用的是gradle:2.2.3 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' } } 2.2 在library的build.gradle中添加jitpack配置信息: apply plugin: 'com.github.dcendents.android-maven' group='com.github.YourUsername' 我开源项目中的配置为如下内容: 简易而不简单的Android 支付SDK 2.3 Github上发布代码 注意提交项目到GitHub时不要忽略gradle wrapper 在Github中创建一个release版本或者提交一个Tag 2.4 library发布到Jitpack 进入Jitpack 1、填写仓库名称 2、搜索 3、使用”Get”, 发布就成功啦~~ 点击Log 下的图标可以查看编辑过程 发布成功后,会列出仓库的地址信息, 别人利用这个坐标就可以使用我们的开源库。 3、使用我们的开源库 3.1 在build.gradle中加入Jitpack仓库 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 3.2 使用我们开源库 dependencies { compile 'com.github.javen205.JPay:jpaylib:0.0.3' } 完整详细的配置 https://github.com/Javen205/JPay 4、添加徽章 [![](https://jitpack.io/v/javen205/JPay.svg)](https://jitpack.io/#javen205/JPay) 推荐视频课程 Android通用框架设计与完整电商APP开发系列文章 推荐阅读 Android Studio 上传aar(Library)到JCenter Android依赖管理与私服搭建 AndroidStudio多渠道打包 Android版-微信APP支付 Android版-支付宝APP支付

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

10分钟教你使用阿里云API

我也是从13年才正式开始接触阿里云的,在2014年才开始用,当时可能有些自动化的需求一直使用aliyuncli,但是效率太低,而且记得当时有些地方使用不方便,所以自己就写了个简单的通用SDK。最近发现用阿里云的朋友越来越多,今天分享给大家,这里以负载均衡服务为例子。 阿里云API核心:拼接请求参数把“Access Key ID”放到请求参数里面“相当于用户名”,把url的参数用“Access Key Secret”进行sha1混淆加密生成签名,把签名追加入请求参数。这样这个签名就可以保证参数的完整和安全不可逆转。 [公共参数参考传送门] [签名机制传送门] 我尝试用图片流程还原了整个API的请求过程,大家可以参考这个过程进行API调用: 首先API是通过http/https进行访问的,以GET请求为例, 1. 参数内分为:user_param,公共参数,url编码参数并拼接成url使用的参数形式。 2. 这里详细说下签名的获取方法:url使用的参数形式添加HTTPmethod“&”拼接后,使用“Access Key Secret”为salt调用hashlib.sha1算法加密,然后使用base64编码使用生成签名 3.把访问服务的"http协议"+"域名"+"参数"+"签名"=请求地址 下面是我要分享的自己写的代码,欢迎各位拍砖QQ:850900633 https://github.com/bashhu/blog/blob/master/test/aliyun_api_sdk_v2.py # coding=utf-8 """ __created__ = 2017/6/9 17:33 __author__ = 'baishaohua' # @Site : https://github.com/bashhu """ import os, sys import hashlib import hmac import base64 import urllib import time import uuid import requests def get_iso8601_time(): '''返回iso8601格式的时间''' TIME_ZONE = "GMT" FORMAT_ISO8601 = "%Y-%m-%dT%H:%M:%SZ" return time.strftime(FORMAT_ISO8601, time.gmtime()) def get_uuid(): '''返回uuid''' return str(uuid.uuid4()) def get_parameters(user_param, Action, AccessKeyId, Version): ''' 拼接参数字典 user_param: {"RegionId":"cn-beijing", "LoadBalancerName":"test-node1", "AddressType":"intranet", "VSwitchId":"vsw-2zevjlczuvp2mkhhch12x"} Action操作例如:CreateLoadBalancer AccessKeyId:access key ID Version: 接口的版本 ''' parameters = {} parameters['HTTPMethod'] = 'GET' parameters['AccessKeyId'] = AccessKeyId parameters['Format'] = 'json' parameters['Version'] = Version parameters['SignatureMethod'] = 'HMAC-SHA1' parameters['Timestamp'] = get_iso8601_time() parameters['SignatureVersion'] = '1.0' parameters['SignatureNonce'] = get_uuid() parameters['Action'] = Action for (k, v) in sorted(user_param.items()): parameters[k] = v return parameters def get_param(parameters): '''把公共参数拼接成字符串''' param_str = '' for (k, v) in sorted(parameters.items()): param_str += "&" + urllib.quote(k, safe='') + "=" + urllib.quote(v, safe='') param_str = param_str[1:] return param_str def get_StringToSign(parameters, param_str): '''拼接生成签名的字符串''' StringToSign = parameters['HTTPMethod'] + "&%2F&" + urllib.quote(param_str, safe='') return StringToSign def get_signature(StringToSign, AccessKeySecret): '''构建签名''' h = hmac.new(AccessKeySecret, StringToSign, hashlib.sha1) signature = base64.encodestring(h.digest()).strip() return signature def build_request(server_url, param_str, signature, AccessKeySecret): '''拼接url并进行请求''' Signature = "Signature=" + urllib.quote(signature) param = param_str + "&" + Signature request_url = server_url + param s = requests.get(request_url) print s.content def get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version): '''对请求进行模块 server_url: slb.aliyun.com Action = 'DescribeRegions' AccessKeySecret, AccessKeyId:也就是ak user_param = {'LoadBalancerId': 'lb-2zekxu2elibyexxoo9hlw'} Version:例如slb的版本是2014-05-15,每个服务都不相同 ''' server_url = 'https://' + server_url + '/?' AccessKeySecret = AccessKeySecret AccessKeyId = AccessKeyId parameters = get_parameters(user_param, Action, AccessKeyId, Version) param_str = get_param(parameters) StringToSign = get_StringToSign(parameters, param_str) signature = get_signature(StringToSign, AccessKeySecret + '&') build_request(server_url, param_str, signature, AccessKeySecret) ''' #create slb Action = 'CreateLoadBalancer' user_param = {"RegionId":"cn-beijing", "LoadBalancerName":"test-node1", "AddressType":"intranet", "VSwitchId":"vsw-2zevjlczuvp2mkhhch12x"} server_url = 'slb.aliyuncs.com' Version = '2014-05-15' AccessKeySecret='xxx' AccessKeyId='xxxx' get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version) #create user Action = 'CreateUser' user_param = {"UserName":"new.nginxs.net", "DisplayName":"xxxxx", "Email":"xxxx@126.com", "Comments":"测试用户"} server_url = 'ram.aliyuncs.com' AccessKeySecret='xxx' AccessKeyId='xxx' Version = '2015-05-01' get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version) ''' 防爬虫:http://new.nginxs.net http://nginxs.blog.51cto.com/ 下期预告=》【STS使用SDK临时授权】

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

图文并茂:5分钟了解Hadoop

Hadoop原是Hadoop开发者的孩子给自己的大象玩具起的名字。因为原有的数据存储和处理工具对于处理互联网泡沫之后开始出现的海量数据显得力不从心, 所以开发了Hadoop。首先,谷歌提出了MapReduce构架,它能够应对来自整合全球信息任务所产生的数据流,并使这些数据变得具有很高的可访问性。此后,在2005年雅虎开发了基于MapReduce构架的Hadoop。它作为Apache许可协议下的一个开源工具于2007年被正式发布。 几年来,Hadoop已经变成了一个超大规模的操作系统,尤其是应用于时下产生的海量数据所进行的分布式并行处理。像通常的操作系统一样,Hadoop包括完整的文件系统,可编写程序,以及分布式管理这些程序并返回计算结果。 Hadoop支持能同时运行在低廉硬件设备构建的大型集群上的数据密集型分布式应用程序。它是根据Ap

资源下载

更多资源
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部分的功能。

用户登录
用户注册