keytool-importkeypair 使用

keytool-importkeypair 下载地址

https://github.com/getfatday/keytool-importkeypair

前言

app 的 AndroidManifest.xml里有

android:sharedUserId=”android.uid.system”

添加这个属性就会有系统app同等的权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等系统级app所有的权限

在AndroidStudio开发中需要用到系统签名 platform.pk8 和 platform.x509.pem

android原生的 目录下 build/target/product/security
fsl的目录 device/fsl/common/security

使用 keytool-importkeypair生成keystore

1 root@jason:/home/jason/tools/keytool-importkeypair-master# ./keytool-importkeypair -k ./platform.keystore -p ljs123 -pk8 platform.pk8 -cert platform.x509.pem -alias platform
2 Importing “platform” with SHA1 Fingerprint=3E:0C:AF:3D:79:9F:BA:EC:56:6F:AC:BE:1A:67:FB:25:0B:DE:FD:93
3 正在将密钥库 /tmp/keytool-importkeypair.3dse/p12 导入到 ./platform.keystore…
4 已成功导入别名 platform 的条目。
5 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

6

7 Warning:
8JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore ./platform.keystore -destkeystore ./platform.keystore -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

AS 中 Build->Generate Signed APK

%title插图%num

生成的APK 目录:

AndroidStudioProjects/JniDemo01/app/build/outputs/apk/

 

 

*近在做一个FOTA项目,在AndroidManifest.xml文件中有如下属性

android:sharedUserId=”android.uid.system”
在android studio中编译出来apk就是安装不上,报如下错误

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
看来是要系统的签名, 但是 由于客户lib库使用了自己扩展android SDK版本,没法放在我们的源码里面编译; 后来google了下,发现可以让android studio支持系统签名,这就用到了keytool-importkeypair ,

github地址

 

https://github.com/getfatday/keytool-importkeypair
使用起来也比较的简单,找到系统的 platform.pk8 和 platform.x509.pem 放在 keytool-importkeypair目录下执行:

./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
修改 build.gradle 再次编译即可

signingConfigs {
releaseConfig {
keyAlias ‘platform’
keyPassword ‘android’
storeFile file(‘/home/gyniu/tools/keystore/platform.keystore’)
storePassword ‘android’
}
}

这样就不报错了。

 

 

手把手教你搭建腾讯云服务器(图文并茂)

背景
暑假期间,愁着无聊但也不能荒废学业吧,毕竟以后想靠技术混口饭吃!为了实施自己的计划,特地挑了一个便宜的云服务器来用作自己的后台;这不是学生狗没钱嘛,所以我就挑了一个腾讯云服务器。虽说配置很低,但够我们玩就行。因为想写一个电商App,数据总不能从本地数据库来吧,那样也太没水平了!因为自己也会一点Java Web 服务器,索性租了一个云服务器,接口啥的自己写,说干就干吧。

由于本人是在校学生,所以从腾讯那买了一个学生版的服务器。性价比确实很高,价位是10元/月。

注意:我选择的是Windows Server,所以这篇文章是基于Windows平台搭建的。本人对于其他平台不是很了解,虽然接触过Linux,但是并不太会玩,所以搭建也变得更费劲了。索性我们就选熟悉的操作系统吧!(附上我的服务器配置图,这配置你懂的。)这里小小提示一下:我们的服务器是可以改变操作系统的。如果你现在是linux想改成window也是可以的,它会帮你重新安装新的系统,这也意味着数据都清空了。
%title插图%num

背景介绍完毕,一个苦逼的android开发者居然还要自己开发服务器,说多的都是泪!那就不多bb了,我们开始搭建环境。

服务器搭建
1、首先,我假设你已经买了腾讯云服务器了(官网购买),如上图中可以看到我们买的服务器在运行中。

2、win + r 组合键,输入:mstsc

计算机:填写你的服务器ip(公网ip)

用户名:Administrator(默认),密码会发到你的邮箱上。

%title插图%num

打开显示选项,可以看到 本地资源 —> 点开详细信息,勾选驱动器(这个作用是让你可以从PC拷贝 jdk、tomcat等到你的服务器盘中,放C盘下就可以。)

%title插图%num

至此*步基本操作完成,我们登录我们刚才配置的服务器体验一下吧。没错,下面这个图就是我们的服务器桌面了。因为是刚初始化的,桌面空空如也!

%title插图%num

之前没接触过服务器的你会惊讶的发现:what?这不是和Win10系统貌似差不多吗,只是它精简了很多软件驱动等,系统变得很小!

环境搭建
安装JDK+Tomcat+MySQL驱动
1、JDK环境配置,这里可以直接复制我的,然后改一下你们自己的路径,就OK了(PS.注意看清楚 .;)

系统变量→新建 JAVA_HOME 变量 = 变量值填写jdk的安装目录 ;JAVA_HOME = E:\Java\jdk1.7.0
系统变量→新建 CLASSPATH 变量 =  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Administrator修改path变量,在*后增加  ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

2、Tomcat环境配置:

系统变量→新建TOMCAT_HOME 变量=变量值填写tomcat安装目录;TOMCAT_HOME = E:\Java\tomcat7
系统变量→新建 CATALINA_HOME变量=变量值填写tomcat安装目录; CATALINA_HOME = E:\Java\tomcat7
Administrator修改path变量,在*后增加  ;%CATALINA_HOME%\bin;%CATALINA_HOME%\lib

· 测试Tomcat服务器是否安装成功:

先启动Tomcat(cmd命令:startup),在浏览器输入  http://localhost:8080/ ,会出现一个tomcat页面,那么说明成功了。

3、MySQL驱动安装,特别提醒,如果出现以下的问题:把mysql安装包拷贝到服务器C盘里面,再进行安装就不会出错。

%title插图%num

  检查是否可用:net start mysql

%title插图%num

至此,云服务器和环境基本搭建完成!

域名绑定
*后,绑定我们域名。(域名自行购买,可根据自己需要决定,这个需要身份证认证。)

%title插图%num

点击图上 解析 ,出现以下界面,点击添加纪录,红色框框里面填写自己的公网IP即可。

%title插图%num

到此结束,你的域名绑定成功了。怎么用呢?

例如:  http://192.168.1.1:8080/

改为:  http://[abc520.com]:8080/          [里面是你的域名]

全部教程结束。这是我的*篇文章,因为我是理工科的难免语言组织得不够好,所以写的不是很好。我们只能关注技术。

Python logging模块继承逻辑

 

0X00 起因
在使用一个第三方库时,在我定义的日志文件中一直有额外的日志输出,于是开始了DEBUG之路。

涉及到的相关知识:logger的继承关系、handler继承、basicConfig、导入另一个模块且该模块包含logger会引发什么现象

0X01 DEMO
可能起因中的话并不能很清晰的描述我到底碰到了什么情况,所以直接上代码,给几个DEMO,大伙可以分析分析代码的日志会怎么输出,输出到哪个文件,如果全部分析正确了,那么说明相关知识已经掌握了。如果分析不出来,那么就还没有弄清楚相关细节。以两个py文件为例,a.py和b.py,我们直接运行b.py,因为在b中会import a。

1.
a.py:

from logging.handlers import RotatingFileHandler
import logging

a_logger = logging.getLogger(__name__)
a_logger.setLevel(logging.WARNING)
formatter = logging.Formatter(‘%(asctime)s %(levelname)s [%(lineno)d]: %(message)s’)
update_debug = RotatingFileHandler(‘./a.log’, maxBytes=20*1024*1024, backupCount=5)
update_debug.setFormatter(formatter)
a_logger.addHandler(update_debug)

a_logger.warning(‘log from a’)
b.py:

import logging
import a

logging.basicConfig(
filemode=’a’,
filename=’./b.log’
)

logging.warning(‘log from b’)
结果:a.log中记录log from a,b.log中记录log from b

2.
a.py:

from logging.handlers import RotatingFileHandler
import logging

a_logger = logging.getLogger(__name__)
a_logger.setLevel(logging.WARNING)
formatter = logging.Formatter(‘%(asctime)s %(levelname)s [%(lineno)d]: %(message)s’)
update_debug = RotatingFileHandler(‘./a.log’, maxBytes=20*1024*1024, backupCount=5)
update_debug.setFormatter(formatter)
a_logger.addHandler(update_debug)

a_logger.warning(‘log from a’)
b.py:

import logging

logging.basicConfig(
filemode=’a’,
filename=’./b.log’
)

logging.warning(‘log from b’)

import a
结果:a.log中记录了log from a,b.log中先记录了log from b,再记录了log from a。

3.
a.py:

from logging.handlers import RotatingFileHandler
import logging

a_logger = logging.getLogger(__name__)
a_logger.setLevel(logging.WARNING)
formatter = logging.Formatter(‘%(asctime)s %(levelname)s [%(lineno)d]: %(message)s’)
update_debug = RotatingFileHandler(‘./a.log’, maxBytes=20*1024*1024, backupCount=5)
update_debug.setFormatter(formatter)
a_logger.addHandler(update_debug)

def func():
a_logger.warning(‘log from a’)
b.py:

import logging
import a

logging.basicConfig(
filemode=’a’,
filename=’./b.log’
)

logging.warning(‘log from b’)

a.func()
结果:a.log记录了log from a,b.log先记录了log from b,再记录了log from a

4.究*折磨
a.py:

import logging

logging.basicConfig(
filemode=’a’,
filename=’./a.log’
)

a_logger = logging.getLogger(__name__)
a_logger.warning(‘log from a’)
b.py:

import logging
import a

logger = logging.getLogger()
logger.warning(‘log from b’)
结果:a.log先记录了log from a,再记录了log from b

0X02 分析
关于logging模块有几个重要的知识点,掌握之后,便可以很好的分析日志究竟是怎么记录的了

1.默认情况下logger分为root logger和其他logger,basicConfig配置的就是root logger,创建的其他logger会自动继承于root logger,并且在调用其他logger记录日志时,会先调用logger自身配置的handler,然后调用父亲的handler。有点绕,给个例子:

import logging
# 设置root logger的handler为FileHandler,以a的模式将日志追加到a.log中
logging.basicConfig(
filemode=’a’,
filename=’./a.log’
)
# 获取一个__name__的logger,该logger自动继承于root logger,并且该logger在日志记录时
# 先会调用自身的handler,然后调用root logger的handler。在此处logger并未设置handler,所以
# 只会调用root logger的handler,也就会将日志记录到a.log中了
a_logger = logging.getLogger(__name__)
a_logger.warning(‘log from a’)
2.当导入的模块中定义了logger时,并且在*外层就进行了日志记录,那么在导入之后就会直接记录日志,因为python导入模块会将模块外层代码执行。参考00X1 DEMO中的1和2两个例子,先import a和后import a的日志记录情况是不同的。那么如何规避这种情况了,那就是在函数中进行日志记录,那么只有在调用该函数时才会记录日志,import模块时不会记录。

3.如何让每个logger只调用自己的handler,不要去调用父类的handler?添加一个配置即可:

logger.propagate = False
4.创建的logger默认只会继承root logger,两个同级logger并不会自动产生继承关系,除非手动指定,例如:

import logging

a_logger = logging.getLogger(‘a’)
b_logger = logging.getLogger(‘b’)
print a_logger.parent
print b_logger.parent
a_logger和b_logger的parent都为logging.RootLogger object

云原生技术_云原生技术如何克服云锁定

云原生技术

Murli Thirumale是Portworx的联合创始人兼首席执行官。

云原生计算是关于如何构建应用程序的, 而不是关于在何处构建它们的 。 这意味着全球企业可以在自己的数据中心以及公共云中运行云原生应用程序。 Kubernetes是该模型的关键基础技术之一,这说明了它在过去几年中的迅猛发展。

Kubernetes通过自动化低价值的操作任务,使全球IT团队可以更快地构建和运行应用程序,以便团队可以专注于增加业务价值。 Kubernetes核心增值的一部分是其可在任何地方(即,在任何数据中心或任何云中)运行的灵活性。

我*近读了一篇文章,描述了采用云原生IT策略危险 。 该文章主张“云原生意味着锁定”,并断言“您全都与特定的公共云提供商(这些云原生服务的单一提供商)保持联系,目标是从您的云计算中获得*大收益。投资。” 这与我与正在部署云原生技术的大型企业合作的经验不符,这些企业通常是开源技术(例如Kubernetes)。 实际上,我相信采用云原生实践是避免供应商锁定的唯一*佳方法。

这可能只是定义上的失调而不是结构上的分歧。 云原生计算基金会将云原生定义为“使组织能够在现代,动态环境(例如公共云,私有云和混合云)中构建和运行可扩展应用程序的技术”。 (另请参阅CNCF常见问题解答 。)构建可跨多个云环境部署的应用程序的能力是云原生主张的核心。 在设计可在任何环境中运行的应用程序时,您可以保护自己免受可能使用锁定提高价格和减少服务的供应商的侵害。

诸如在Kubernetes上运行的云原生应用程序很容易在多种环境中运行,原因有以下几个:

  • 云原生应用程序打包在Linux容器中,与其他打包技术(例如虚拟机)相比,它无需修改即可在多个环境中更轻松地运行。
  • 所有主要的云提供商都提供了Kubernetes服务,该服务使Kubernetes打包的应用程序几乎无需修改即可移动,从而为企业提供了在云之间轻松进行迁移的路径。
  • 由于社区在Kubernetes的开放存储接口方面的进步,现在可以直接在Kubernetes上运行数据服务,从而使数据像容器本身一样可移植,从而消除了重要的锁定来源。

*近来自客户拜访的轶事说明了这一点。 我正在与一家在公共云上进行大量投资的全球银行的IT员工的高级成员会面。 尽管公司的大部分工作负载都在单个云上运行,但该公司*近支付了300美元的开发人员在竞争的云上进行认证的费用,并且正大力投资以在Kubernetes上运行其应用程序-正是因为这些应用程序随后将能够跨多云。 她告诉我:“这就像是核缓速器。” “如果他们知道我们可以离开,他们将是更好的合作伙伴,如果我们留下,我们将获得更好的价格和服务。”

该银行正在以一种头脑平和,平衡的方式来实践云原生。 该公司了解公共云的价值,但它正在构建其应用程序,以便可以根据需要将其移动到其他云提供商。

我认为业内一些人将“原生云”等同于“特定于云的服务”,例如无服务器技术和托管数据服务。 我同意采用无服务器和托管数据服务会导致锁定。 被锁定为专有服务和数据格式将阻止应用程序在云之间轻松移动。 但是就企业使用Kubernetes等云原生技术来简化迁移的程度而言,我认为云原生是克服云锁定的*佳方法,而不是原因。

Murli Thirumale是Portworx的联合创始人兼首席执行官, PortworxKubernetes的云原生存储和数据管理解决方案提供商。

频繁修改的静态文件如何较好地部署到服务器上?

本人搞前端的,将静态文件(修改较频繁)在部署到服务器上时,遇到了如下两难的问题:

  1. 打包的文件始终使用静态文件名,如index.jstest.xml时,浏览器必须要强制刷新才能更新缓存,在移动端如微信 QQ 更是麻烦;
  2. 使用基于内容的 hash 文件名,如index.fd1s20.js时,不好清理服务器中废弃的文件。

请大佬指点

creamiced 1
creamiced 2019-03-07 19:29:19 +08:00
抛砖,HTTP 响应设置不缓存
akira 2
akira 2019-03-07 19:34:17 +08:00
加版本号参数
xiaoming1992 3
xiaoming1992 2019-03-07 19:37:04 +08:00
@creamiced 感谢回复,但是毕竟是前端页面,不可能不缓存的啊。主要是客户经常修改,我上传上去后,客户经常反馈手机上看着没反应(需要更新缓存),但流量消耗较大,稳定阶段不应该频繁更新缓存,这样就矛盾了。还有,不清楚问题复杂度怎么样,所以不方便请后端配合。
izoabr 4
izoabr 2019-03-07 19:38:10 +08:00
应用的时候尾巴加个随机字符参数试试
比如 src=”/js/index.js?random=19322873283939″
xiaoming1992 5
xiaoming1992 2019-03-07 19:38:31 +08:00
@akira 今天刚测试的,在 QQ 上,就算更新了版本号,QQ 依然不会更新缓存,微信上没测试。
xiaoming1992 6
xiaoming1992 2019-03-07 19:39:05 +08:00
@izoabr 今天刚测试的,在 QQ 上,就算更新了版本号,QQ 依然不会更新缓存,微信上没测试。
xiaoming1992 7
xiaoming1992 2019-03-07 19:40:56 +08:00
而且,有修改的文件需要更新缓存,没有修改的文件不需要更新,如果手动修改 url 的话也是个麻烦事,可能错漏。
pelloz 8
pelloz 2019-03-07 19:44:08 +08:00
使用方案 2,然后写一个脚本定时清理,发现文件名相同,hash 后缀不同的文件,移除修改时间比较旧的。
xiaoming1992 9
xiaoming1992 2019-03-07 19:51:04 +08:00
@pelloz 貌似是一个好办法,试试?
mostkia 10
mostkia 2019-03-23 15:04:46 +08:00
检查名字+修改时间较旧的移除+1

浅析云计算的六种架构

云计算要求基础设施具有良好的弹性、扩展性、自动化、数据移动、多租户、空间效率和对虚拟化的支持。那么,云计算环境下的数据中心基础设施各部分的架构应该是什么样的呢?

AD:

云计算要求基础设施具有良好的弹性、扩展性、自动化、数据移动、多租户、空间效率和对虚拟化的支持。那么,云计算环境下的数据中心基础设施各部分的架构应该是什么样的呢?

1、云计算数据中心总体架构

云计算架构分为服务和管理两大部分。在服务方面,主要以提供用户基于云的各种服务为主,共包含3个层次:基础设施即服务IaaS、平台即服务PaaS、软件即服务SaaS.在管理方面,主要以云的管理层为主,它的功能是确保整个云计算中心能够安全、稳定地运行,并且能够被有效管理。

2、云计算机房架构 

为满足云计算服务弹性的需要,云计算机房采用标准化、模块化的机房设计架构。模块化机房包括集装箱模块化机房和楼宇模块化机房。

集装箱模块化机房在室外无机房场景下应用,减轻了建设方在机房选址方面的压力,帮助建设方将原来半年的建设周期缩短到两个月,而能耗仅为传统机房的50%,可适应沙漠炎热干旱地区和*地严寒地区的*端恶劣环境。楼宇模块化机房采用冷热风道隔离、精确送风、室外冷源等*制冷技术,可适用于大中型数据中心的积木化建设和扩展。

3、云计算网络系统架构

网络系统总体结构规划应坚持区域化、层次化、模块化的设计理念,使网络层次更加清楚、功能更加明确。数据中心网络根据业务性质或网络设备的作用进行区域划分,可从以下几方面的内容进行规划。

1)按照传送数据业务性质和面向用户的不同,网络系统可以划分为内部核心网、远程业务专网、公众服务网等区域。

2)按照网络结构中设备作用的不同,网络系统可以划分为核心层、汇聚层、接入层。

3)从网络服务的数据应用业务的独立性、各业务的互访关系及业务的安全隔离需求综合考虑,网络系统在逻辑上可以划分为存储区、应用业务区、前置区、系统管理区、托管区、外联网络接入区、内部网络接入区等。

此外,还有一种Fabric的网络架构。在数据中心部署云计算之后,传统的网络结构有可能使网络延时问题成为一大瓶颈,这就使得低延迟的服务器间通信和更高的双向带宽需要变得更加迫切。这就需要网络架构向扁平化方向发展,*终的目标是在任意两点之间尽量减少网络架构的数目。

Fabric网络结构的关键之一就是消除网络层级的概念,Fabric网络架构可以利用阵列技术来扁平化网络,可以将传统的三层结构压缩为二层,并*终转变为一层,通过实现任意点之间的连接来消除复杂性和网络延迟。不过,Fabric这个新技术目前仍未有统一的标准,其推广应用还有待更多的实践。

4、云计算主机系统架构

云计算核心是计算力的集中和规模性突破,云计算中心对外提供的计算类型决定了云计算中心的硬件基础架构。从云端客户需求看,云计算中心通常需要规模化的提供以下几种类型的计算力,其服务器系统可采用三(多)层架构,一是高性能的、稳定可靠的高端计算,主要处理紧耦合计算任务,这类计算不仅包括对外的数据库、商务智能数据挖掘等关键服务,也包括自身账户、计费等核心系统,通常由企业级大型服务器提供;二是面向众多普通应用的通用型计算,用于提供低成本计算解决方案,这种计算对硬件要求较低,一般采用高密度、低成本的超密度集成服务器,以有效降低数据中心的运营成本和终端用户的使用成本;三是面向科学计算、生物工程等业务,提供百万亿、千万亿次计算能力的高性能计算,其硬件基础是高性能集群。

5、云计算存储系统架构 

云计算采用数据统一集中存储的模式,在云计算平台中,数据如何放置是一个非常重要的问题,在实际使用的过程中,需要将数据分配到多个节点的多个磁盘当中。而能够达到这一目的的存储技术趋势当前有两种方式,一种是使用类似于GoogleFileSystem的集群文件系统,另外一种是基于块设备的存储区域网络SAN系统。

GFS是由Google公司设计并实现的一种分布式文件系统,基于大量安装有Linux操作系统的普通PC构成的集群系统,整个集群系统由一台Master和若干台ChunkServer构成。在SAN连接方式上,可以有多种选择。一种选择是使用光纤网络,能够操作快速的光纤磁盘,适合于对性能与可靠性要求比较高的场所。另外一种选择是使用以太网,采取iSCSI协议,能够运行在普通的局域网环境下,从而降低成本。采用SAN结构,服务器到共享存储设备的大量数据传输是通过SAN网络进行的,局域网只承担各服务器之间的通信任务,这种分工使得存储设备、服务器和局域网资源得到更有效的利用,使存储系统的速度更快,扩展性和可靠性更好。

6、云计算应用平台架构

云计算应用平台采用面向服务架构SOA的方式,应用平台为部署和运行应用系统提供所需的基础设施资源应用基础设施,所以应用开发人员无需关心应用的底层硬件和应用基础设施,并且可以根据应用需求动态扩展应用系统需的资源。

“多云”不等于“混合云”

现如今,云计算可谓风靡一时,但是,你是否真正了解云?你对云的认知是否还停留在使用公有云和私有云上呢?

其实在真实的应用场景里,一种云很难用于多种情形,每个企业和行业的需求及目标各不相同,也没有固定的规律,所以真正意义上能够吃遍天下且持久有效的“一招鲜”根本就不存在,同样,也没有某种所谓的“万能”云战略;甚至在企业内部,他们也无法使用不变的云战略来支持每一种工作负载。

因此,“混合云” (Hybrid Cloud)和“多云”(Multi-Cloud)战略就应运而生了。企业在把原有的IT工作负载迁移到云之前,需要基于它们的特点和需求来为它们选出适合栖身的云平台。

选择多云还是混合云?先把概念弄清楚吧

有些人会把多云和混合云两个词互相替换使用,但它们其实有着明确的含义,两者互有利弊,且不能互相取代。

什么是多云

根据维基百科:

“多云是在单一异构结构中使用多个云计算服务。

即,多云是指使用超过一个公有云。当企业试图避免对单个公有云提供商的依赖时,当他们选择每个公有云的特定服务以获得*佳效果时,或者同时想要这两种好处的时候,这种模式就出现了。

多云在本质上是在单个传输层中使用多个云服务,一个常见的例子是使用多个公有云服务提供商的服务。

企业采用多云模式通常有以下三个原因:

1. 业务杠杆(Leverage)

企业IT组织通常是规避风险的,经常在风险和决策中进行抉择,其中就包括向云计算的迁移以及云服务提供商的选择,还担心被单个云服务提供商锁定。通过多云的方式,企业可以跨多个云服务提供商来对冲风险。这种方式的不利之处在于,需要对多个云服务加以整合,提高了组织技能和数据传输的复杂性。

2. *佳方案

企业通常采用多云战略的第二个原因是对*佳解决方案的需求,单一交付层并不是所有解决方案都提供相同的服务。企业可以选择使用一个云服务提供商的解决方案来实现特定功能,选择另一个云服务提供商的解决方案实现不同的功能。这种方法虽然在某些方面提供优秀的功能,但在其他方面带来了复杂性,包括功能整合、数据传输、组织技能和扩展。

3. 评估

企业采用多云战略的第三个原因是暂时的,是对业务进行评估。第三种方法是企业当中非常普遍的方法,本质上,它提供了一种首次开始时评估单一交付层中的不同云服务提供商的方法。然而,他们*终专注于单一提供商,并围绕单一提供商的解决方案建立专业知识。

*终我们发现企业选择上述三种方法之一的原因通常是通过其成熟度和对云的思考来加以选择,作出选择所要考虑的是业务杠杆等带来的优势能不能超过复杂性等缺陷。

什么是混合云

根据维基百科:

混合云是两个或多个云(私有云、社区云或公有云)的组合,它们仍然是不同的实体,但绑定在一起,提供多种部署模式的好处。混合云还可以指将配置、托管和/或专用服务连接到云资源的能力。

Gartner将混合云服务定义为一种由不同服务提供商提供的私有云、公有云和社区云服务组合而成的云计算服务。混合云服务跨越隔离和提供商界限,因此不能简单地将其放入私有、公有或社区云服务的类别中。它通过与另一个云服务进行聚合、集成或定制,使企业扩展其云服务的容量或功能。

云计算通常是一个向外扩展的商品服务器群集,可提供服务(计算,存储或两者兼有),其中工作负载或数据可以透明在节点之间或跨节点移动。混合云背后的理念是,组织的工作负载和数据可以在私有云和公有云提供商(包括多个提供商)之间透明地移动。

混合云允许组织在每个工作负载的基础上选择*有意义的位置。例如,组织可以决定在本地保留工作负载,因为它仅由内部用户使用,并且延迟或安全性也是一个令人关注的问题。这些也可能是更加传统的规模化工作负载,无法从横向扩展的计算服务中充分获益。

组织可能具有其他工作负载,这些工作负载仅在云端中经常从外部访问,或者是针对横向扩展计算服务而设计的。如果这些工作负载有时间上必须执行大规模处理(如视频呈现或分析处理),组织有能力提供这种工作负载,数以千计的处理器可以彻底改变数据的处理过程,将大大减少获得结果的时间。

大多数企业今天使用的都是混合云模式,混合云指云计算在多个不同的传输层中的垂直使用。通常情况下,企业使用的是基于SaaS的解决方案和公有云,有的企业还可能使用私有云。混合云不需要应用程序跨不同的传输层传输。

混合云不等于多云

混合云和多云之间的差异主要是在用户定位上,一个垂直地处理不同的连续服务,另一个侧重于水平方面的云服务。

 

简单地来说,多云就类似于Uber这类的打车软件——把不同的云上面加了抽取层,但是,混合云则完全不同,混合云完全是在用户看不见的情况之下发生的自然而然的资源共享。

借用两个例子来说明:

*,乘坐飞机,如果你希望找到*便宜的机票,可以先登陆各大航空公司的官网,逐一寻找;你还可以登陆携程这样的第三方应用,它会提供所有航空公司的票价——这就是通过一个价格API,从不同的航空公司的系统抽取过来——这是类似于多云的使用。

第二,iCloud可以共享相册是混合云的一个*好的例子,它的过程完全是无形,用户完全不必知道这一过程所发生的事。真正的混合云完全消除了私有云和公有云之间的界限。所有的能力都通过抽取的方式,通过应用,通过服务的方式来提供给用户,用户无需知道它在哪发生。

对企业来说,需要了解的是利用多云或者混合云的方式。大多数人都走入了术语的误区,而不是去考虑利用这些解决方案能够带来的好处。

多云和混合云是两种截然不同的云计算的采用方式,两种模式各有利弊,多云和混合云都能够推动业务转型,企业应该积*利用这两者的优势。

你们的一加 9 ADB 能识别吗?

昨天短暂的识别之后,到现在的 Android Studio 一直不能发现设备,各种重启都试了

PS:通知栏一直常驻开发者选项已开启,存在风险是什么鬼

感觉一加快弃坑了,对 9 很失望,Color OS 垃圾

第 1 条附言  ·  23 小时 5 分钟前

不支持模糊搜索这个很致命,以前 T9 键盘随意点击几下就可以定位到应用,现在汉字名称的应用必须输入汉字才能定位到
第 2 条附言  ·  19 小时 4 分钟前

已解决,选择传输文件,并且在开发者模式里选择 RDMI
第 3 条附言  ·  19 小时 3 分钟前

RNDIS
24 条回复  •  2021-04-01 08:06:16 +08:00
1 F1ReKing   23 小时 38 分钟前 Color OS 一直都是提示开启 adb 风险的 习惯就好
2 john990   23 小时 35 分钟前 @F1ReKing 现在的应用搜索也不能模糊搜索了,找应用及其不方便
3 lmmortal   23 小时 14 分钟前 via Android 连接手机以后有传输文件 充电 照片什么的,各个选项都试一下
4 jmyz0455   23 小时 12 分钟前 听说接上 usb 连分享网络都拿掉了?
5 unkn369   23 小时 12 分钟前 一加 9 pro 怎么刷氧 OS?
6 john990   23 小时 7 分钟前 @unkn369 现在还刷不了,官方还没出
7 Osk   23 小时 6 分钟前 via Android 一加 8 瑟瑟发抖,大氢亡了,是时候崇氧啦
8 john990   23 小时 3 分钟前 @lmmortal 选 RNDIS 可以了,感谢!! 搜索了一下,似乎是 Color OS 的特性
9 noahhhh   23 小时 1 分钟前 via Android https://weibo.com/u/2448674500 据说氧 OS 已经有了
10 ququYamada   22 小时 58 分钟前 手持 1+6,9 系列换成颜色 OS 后感觉自己对一加失去热情了。本来还打算在和哈苏合作的三年内换机。
11 skkk   22 小时 51 分钟前 @noahhhh 对的,有人已经刷完而且砖了。
12 Samuelcc   22 小时 44 分钟前 via Android 我换了一加 9PRO,也是 color os 用得很恶心 不过可以去售后中心刷氧,就是得等几天因为说是现在国际包有点问题。后面应该也会有直接刷氧的方法。 一加再这样乱搞,真的得弃坑了
13 marcong95   22 小时 24 分钟前 还幻想 ColorOS for OnePlus 会把通知栏的开发者模式提醒去掉,果然还是想多了。我的 1+7Pro 瞬间又不卡了
14 en20   22 小时 4 分钟前 一直开着调试确实是有风险的,oppo 主要使用人群又不是开发者,有提示很正常,以前版本开着整个状态栏都变色
15 Moyudawang   20 小时 53 分钟前 USB 连接模式选择传输文件试试
16 x340   20 小时 35 分钟前 via iPhone 以后我的备用机只能选 pixel 了。
17 HongJay   19 小时 44 分钟前 别用 coloros 用痒不好么
18 john990   19 小时 3 分钟前 via Android @HongJay 9 现在还没出氧
19 john990   16 小时 19 分钟前 via Android @en20 一加很多用户是开发者吧
20 nbweb   16 小时 18 分钟前 我所有一加手机,到手后,*件事拆包装,第二件事开机,第三件事刷成氧 os
21 gablic   16 小时 16 分钟前 请问 coloros 和氢比哪里不好用啊
22 demonzoo   15 小时 41 分钟前 还好 8p 一切正常,我就不升级 color os 了
23 john6lq   9 小时 1 分钟前 via iPhone 我当前状态结合国内 APP 现状而言,安卓机也只能当测试机,完全没有使用欲望。
24 john990   1 小时 55 分钟前 via Android @john6lq 那倒不至于,至少我觉得比 iPhone 好用,可能因为我本来就是 Android 开发吧。