首页 文章 精选 留言 我的

精选列表

搜索[CloudQ共创征文],共1296篇文章
优秀的个人博客,低调大师

浅谈企业绿色IT—虚拟化—"瑞友杯"虚拟化征文

回首过去的两年,“虚拟化”、“云计算” 充斥着各式各样的媒介,渗透着各行各业,对于技术人员来说,好像不跟这俩词沾点边,就赶不上最新趋势了。 虚拟化不是今天才出现的,早在1960年,IBM使用一种专为 System/360 Mainframe量身订造的操作系统CP-40运行了14个IBM S/360的虚拟机,每个虚拟机都拥有各自的内存和硬盘,更可以使用共享资源,如打印机。完整向人们的展示了“虚拟化”技术。 如今,“虚拟化”已成为各大软件厂商的必争之地,VMware、Microsoft、Citrix都在加快步伐,抢占市场。连硬件厂商在推出产品时都全力支持虚拟化技术。 虚拟化之所以越来越受关注,一个重要的原因就是现在硬件资源使用率的低落。在计算机的CPU和内存的性能和数量以穆尔定律(穆尔定律http://baike.baidu.com/view/4427518.htm)倍数发展的今天,CPU和内存在操作系统中无法发挥其完整性能的情况更加明显。虽然软件和操作系统开发人员不多改进,但速度远远比不上CPU和内存的发展速度。因此,让单个硬件平台运行多个操作系统成为解决这个问题的最佳方案。 既然在一个服务器上运行多个操作系统能提高硬件资源利用率,所以服务器合并成为最常见的虚拟化企业应用,依次类推,合并桌面计算机也是可行的。因此,服务器虚拟化和桌面虚拟化成为当前企业虚拟化的两大热点。正因为有了“虚拟化”,“云计算”技术实现也更加容易。 那么企业实施“虚拟化”有什么优势呢,能带来什么商业价值呢?简单总结如下: 1、 提高硬件资源利用率,减少IT整体拥有成本 随着网络环境的不多扩大,服务器的物理空间、耗电、散热成本不断提高。单个服务器CPU的使用率过低,使得“单个物理服务器上运行多个操作系统”解决方案越来越受欢迎。这样可以让每一个系统服务在单个操作系统上运行,而多个操作系统在同一台物理服务器上并行。不但保证了服务隔离,更提高了硬件资源利用率。 在大幅减少实体主机数量后,首先会反映在电费支出和机房物理空间上,其次是IT人员对许多应用系统引入前的测试环境搭建,可以迁移到虚拟机的操作系统中进行。两者效益的结合将会大幅降低硬件购置成本、电力成本、机房租用(建造)成本等。 2、 管理优势 虚拟化提供的功能可以简化IT人员操作,一个人管理上千台服务器不再是梦想。当然完善的管理功能要有完善的基础架构设计。 虚拟化的另一个功能就是服务隔离。在讲究安全、稳定、高可用行、便捷管理的企业IT环境中,“服务隔离”是一个基本原则。多个服务安装在同一个操作系统中,不仅服务之间的资源竞争将使两个服务都变慢,而且任何一个出现问题,都将导致整个系统崩溃。因此在一个操作系统中安装一种服务成为大部分企业服务的首选。 同时将虚拟机迁移至不同硬件架构的虚拟主机上时也将更加简单,因为所有虚拟机都不受任何硬件平台的约束。 3、 更高的可用性运行能力 完成虚拟化架构的部署后,企业最在乎的高可用性、冗余、负载均衡、副本等技术在不增加昂贵设备和复杂技术的前提下,使用虚拟化技术更简化、更简单的解决。同时虚拟化还可以实现动态主机迁移、快捷删除数据、统一桌面管理等,甚至可以创建永远不会蓝屏的企业集成环境。 那么,企业如何将“虚拟化”技术解决方案引入到现有的企业环境中呢? 首先我们需要明确虚拟化解决方案中包含的几大功能组件。 l 虚拟主机 安装在硬件平台上的软件或者系统,承载虚拟机及虚拟机操作系统的实体主机。提供虚拟机的基本备份快照功能,同时支持高可用性HA架构。如VMware的EXSI、Microsoft的Hyper-V、Citrix的XEN等。 l 管理系统 虚拟化平台的神经中枢,一套集中管理虚拟主机及虚拟机的软件系统。虚拟化技术的所有功能几乎都要靠管理系统来落实。同时能实现物理机操作系统转虚拟机操作系统(P2V)和虚拟机操作系统转虚拟机操作系统(V2V)。如VMware的vCenter、Microsoft的SCVMM、Citrix的XenCenter等。 l 备份系统 提供虚拟机在线运行的实时备份。虚拟环境不但需要备份还原机制,更需要完善的计划和设备。因为虚拟环境中的数据都是以文件的形式存在的,一旦丢失或损坏,操作系统、虚拟机集群设置、快照、模板都回丢失。 l 监控系统 提供实时监控虚拟主机和虚拟机的可靠性、可用性,对虚拟化环境进行全面监控。保证虚拟化环境的高效运行。 了解了虚拟化方案的功能组件后,接下来就是实施企业IT虚拟化引入流程。大概分为以下几个阶段。 l 开始评估虚拟化 l 决定虚拟化方案 l 确定虚拟化架构 l 全面部署虚拟化 l 建立虚拟化实施报告 具体实施流程大概如下: 1、 决定虚拟化的范围 包括现有准备迁入虚拟环境及新建立的虚拟应用的软件及硬件信息。并列出迁移及新建应用程序的列表。 2、 列出虚拟化下应用程序所需的资源清单及所需的备份工具 资源清单包括CPU、内存、存储空间等,同时需要确定应用程序所需的备份还原机制。 3、 确定虚拟主机中虚拟机操作系统的资源清单 根据应用系统硬件资源及配置要求,确定哪些虚拟机需要部署在哪些虚拟主机上。 4、 确定虚拟机的备份机制及虚拟主机的高可用性解决方案 虚拟化环境下虚拟机具有可移植性,当所在的实体主机发生问题时,可第一时间迁移到另一台虚拟主机上。对于不能中断、持续运行的IT服务,提供合适的高可用性方案也是实施虚拟化必要考虑的。 5、 确定存储设备及网络规划 为了提高虚拟化的整体性能,推荐整合SAN或者iSCSI存储设备,用作虚拟机操作系统的存储空间。同时建议为虚拟化提供独立网络环境。 6、 确定虚拟化监控系统 一旦成功引入虚拟化,虚拟化环境的运维管理将成为IT人员面临的的第二个阶段,因此,在初期规划阶段建议确定适用于该虚拟化方案的监控系统。 7、 开始部署虚拟平台(虚拟主机) 完成上述6步,即可开始虚拟化的部署工作。首先就是部署虚拟主机。 8、配置虚拟化管理系统 完成虚拟主机后,建议首先配置好虚拟平台管理系统,然后再开始后续的虚拟机部署及配置。 9、开始部署虚拟机及P2V转换 根据企业需要,进行相应的新建虚拟机及物理机转虚拟机部署。建议首先考虑现有应用系统的物理机转虚拟机(P2V)操作。 10、虚拟化环境下的应用程序联机测试 虚拟机的迁移及建立完成后,接下来就是对虚拟机中的应用程序进行应用测试。 11、部署虚拟主机及虚拟机的备份及监控系统 虚拟化备份和监控产品有很多选择方案。完善的备份及监控机制将有效降低IT人员的 运维管理工作。 12、建立虚拟化实施报告 完整的项目实施报告,有助于日后的运维管理。 随着“虚拟化”的普及,采用“虚拟化”技术进行信息管理及服务,将成为企业主流的解决方案。“虚拟化”可以减少企业投入、简化IT管理、降低企业IT结构的整体拥有成本,实现“开源节流”、“企业绿色IT”。(完) 本文转自liang_simon51CTO博客,原文链接:http://blog.51cto.com/shubao ,如需转载请自行联系原作者

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

“HarmonyOS 协同·创新”即将启幕,开发者携手共创新未来

加入鸿蒙开发者联盟官网,快速成为鸿蒙开发者! 当智能终端从“单一设备”走向“全域协同”,从智能家居的联动控制到工业互联的高效协同,从车载系统的无缝衔接到移动办公的跨端流转,开发者如何在这场变革中抢占先机? HarmonyOS 以分布式技术打破硬件边界,“一次开发、多端部署”能力已悄然渗透至千行百业,用全场景生态重构用户体验,正为全球开发者打开一扇通向未来的大门。 但随之而来的挑战也愈发明显:如何高效利用分布式架构实现跨端协同?AI 技术如何深度赋能鸿蒙应用开发?复杂场景下的性能优化有哪些“避坑指南”? 4月27日,由开源中国主办,山东省软件行业协会协办的“HarmonyOS 协同·创新”(软件行业专场)将在济南启幕。这是一场专为鸿蒙生态建设者打造的深度对话——技术大咖、实战派工程师与数百名开发者齐聚,共同探索操作系统的无限可能。 主题:HarmonyOS 协同·创新(软件行业专场) 时间:2025年4月27日 14:00-17:20(13:40开放签到) 地点:济南市山创创意园·ChillPlay Base&coffee(山6创意园内,科技氛围与咖啡香交融的灵感空间) 适合人群:鸿蒙应用开发者、技术团队负责人、生态合作企业 🤝与顶尖专家面对面:破解开发者的“真问题” 华为云 HCDE 专家姚圣伟将解读鸿蒙生态战略布局及2025年新机遇,拆解鸿蒙分布式架构,揭秘跨端协同开发的核心逻辑。 科技公司软件工程师刘张豪分享AI赋能鸿蒙生产力的实战案例,探索智能化开发新路径。 互联网医疗大前端专家黄沅带来高频问题解析与优化指南,助力开发者提升效率、少走弯路。 活动特设“互动时刻”环节,专家现场坐镇答疑解惑。无论是分布式架构设计、多端协同逻辑,还是代码调试中的疑难问题,参与者均可通过现场提问与专家零距离交流,快速打通技术堵点,获取针对性解决方案。 另外,本次活动特设茶歇交流时间,与数百名鸿蒙开发者、技术专家、企业代表轻松氛围中碰撞创新灵感,拓展行业人脉。 👏微信扫码,即刻报名: 加入鸿蒙开发者联盟官网,快速成为鸿蒙开发者!

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

开源共创,你我同行 | 2024 openKylin 社区贡献者荣耀征集

为表彰于2024年度在openKylin做出杰出贡献的组织、团队和个人,并激励更多开发者参与进来共同促进社区繁荣与发展,openKylin社区现面向全球公开征集2024年度优秀贡献者案例。 即日起至2024年11月30日,接受贡献者评选报名,评选结果将于12月6日在官网公布,颁奖典礼将在2024 openKylin伙伴暨开发者年度会议上进行。诚邀社区共建伙伴积极参与推荐,一起见证这一荣耀时刻! 询问AI

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

#2020征文-手机#【鸿蒙基地】鸿蒙跨设备启动窗口:Page Ability

目录: 1. 跨设备迁移:前的准备工作 2. 获取设备列表 3. 根据设备ID调用Page Ability HarmonyOS的核心特性(或称为卖点)之一就是软总线技术,而Page Ability的跨设备迁移是软总线的一个具体技术实现。所谓跨设备迁移Page Ability,是指设备A中的特定App调用设备B中该App的Page Ability。这有一个前提,就是设备A和设备B都安装了同一个App。如果B设备没有安装App,B设备就会自动从华为应用商店下载这个App,当然,这一过程是完全静默的。下载完后,就会自动启动相应的Page Ability。这种技术不仅可以启动另一个设备上的Page Ability,还可以向另一个设备中的Page Ability传递数据。 这种技术的一个主要应用场景是,可以将在设备A上完成了一半的工作,迁移到设备B上继续完成。例如,在家中平板电脑上要回一封EMail,但临时有急事,需要出门,这时可以将在平板电脑上写了一半的EMail迁移到手机上,需要在路上完成剩下的工作。 1. 跨设备迁移前的准备工作 在进行跨设备迁移之前,需要为HarmonyOS设备做一下准备: (1) 打开HarmonyOS设备中的蓝牙; (2)HarmonyOS设备需要连入Wi-Fi,而且多个HarmonyOS需要在同一个网段; (3)多个HarmonyOS设备需要用同一个华为开发者账号登录,如图1所示。 图1 用同一个华为开发者账号登录 (4)点击“设置”>“更多连接”>“多设备协同”,进入多设备协同窗口,打开多设备协同开关,如图2所示。 图2 多设备协同 (5)修改HarmonyOS设备名。点击“设置”>“蓝牙”>“设备名称”,进入设备名称窗口,输入一个新的什么名称,如图3所示。尽管这一步不是必须的,但如果拥有多部HarmonyOS设备,可能很多HarmonyOS设备的名称是相同或相近的。为了更好区分不同的HarmonyOS设备,建议修改HarmonyOS设备名称。 图3 修改HarmonyOS设备名称 2 获取设备列表 跨设备迁移是通过设备ID来区分不同设备的,所以首先要获取所有可用的设备的ID。获取设备ID需要调用DeviceManager.getDeviceList方法,该方法返回一个List对象,类型是DeviceInfo,用来描述设备的相关信息,包括设备ID、设备名称(就是上一节设置的设备名称)等。实现代码如下: List<DeviceInfo> deviceInfoList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE); getDeviceList方法有一个参数,是一个int类型的值,表示获取什么状态的设备的信息。可以指定的值如下: (1) DeviceInfo.FLAG_GET_ONLINE_DEVICE:获取所有在线设备的信息; (2) DeviceInfo. FLAG_GET_OFFLINE_DEVICE:获取所有离线设备的信息; (3) DeviceInfo. FLAG_GET_ALL_DEVICE:获取所有设备的信息; 通常会使用第1个值,获取所有在线设备的信息,因为只有设备在线,才能将Page Ability迁移到该设备上。 下面给出一个案例,该案例实现了一个通用的显示可用设备列表的Page Ability,点击某一个设备,会返回该设备的ID, 在device_ids.xml布局文件中放置了一个ListContainer组件,用于显示获取的所有可用设备的相关信息。实现代码如下: public class DeviceIdsAbility extends Ability { // 保存获取到的所有设备的信息 private List<DeviceInfo> deviceInfos; private ListContainer listContainerDeviceIds; // 获取所有可用的设备的相关信息 public static List<DeviceInfo> getAvailableDeviceIds() { List<DeviceInfo> deviceInfoList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE); if (deviceInfoList == null) { return new ArrayList<>(); } if (deviceInfoList.size() == 0) { return new ArrayList<>(); } return deviceInfoList; } @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_device_ids); deviceInfos = getAvailableDeviceIds(); listContainerDeviceIds = 、 (ListContainer)findComponentById(ResourceTable.Id_listcontainer_deviceids); if(listContainerDeviceIds != null) { // 为ListContainer组件设置列表项监听器 listContainerDeviceIds.setItemClickedListener(new ListContainer.ItemClickedListener() { @Override public void onItemClicked(ListContainer listContainer, Component component, int i, long l) { // 当单击某个列表项(设备)后,会获取该设备的ID,并将这个ID作为Page Ability // 的结果返回 String deviceId = deviceInfos.get(i).getDeviceId(); Intent intent = new Intent(); intent.setParam("deviceId", deviceId); setResult(100,intent); // 关闭当前的Page Ability terminateAbility(); } }); // 为ListContainer组件设置Provider listContainerDeviceIds.setItemProvider(new RecycleItemProvider() { @Override public int getCount() { return deviceInfos.size(); } @Override public Object getItem(int i) { return deviceInfos.get(i); } @Override public long getItemId(int i) { return i; } @Override public Component getComponent(int i, Component component, ComponentContainer componentContainer) { if(component == null) { // 如果component为null,说明没有可以利用的列表项视图,所以要从布局文件 // 装载一个新的视图对象 component = (DirectionalLayout)LayoutScatter.getInstance(DeviceIdsAbility.this).parse(ResourceTable.Layout_device_id_item,null,false); } Text textDeviceName = (Text)component.findComponentById(ResourceTable.Id_text_device_name); Text textDeviceId = (Text)component.findComponentById(ResourceTable.Id_text_device_id); if(textDeviceName != null) { // 显示设备名 textDeviceName.setText(deviceInfos.get(i).getDeviceName()); } if(textDeviceId != null) { // 显示设备ID textDeviceId.setText(deviceInfos.get(i).getDeviceId()); } return component; } }); } } } 在DeviceIdsAbility类中为ListContainer组件装载列表项时,在getComponent方法中利用了第2个参数component,该参数就是列表项的根视图。如果component为null,表明并没有可以利用的列表项视图,所以要创建一个新的列表项视图。如果不为null,表明可以利用其他的还没有显示的列表项视图,只需要替换该视图的Text组件中显示的信息即可。 最后在config.json文件中添加一些与分布式相关的权限。 "reqPermissions": [ { "name": "ohos.permission.GET_DISTRIBUTED_DEVICE_INFO" }, { "name": "com.huawei.permission.ACCESS_DISTRIBUTED_ABILITY_GROUP" }, { "name": "ohos.permission.DISTRIBUTED_DATASYNC" } ] 运行程序,会看到如图4所示的设备列表。 图4 获取可用设备的ID 要注意的是,通过DeviceManager.getDeviceList方法只能获取其他设备的信息,不能获取自身的信息,例如,有设备A、设备B和设备C。在设备A中只能获取设备B和设备C的信息,而不能获取设备A的信息。在设备B和设备C中的表现也类似。 查看更多章节>>> 作者:李宁 想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/

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

#2020征文-TV# 【鸿蒙应用开发】3.1.1 文本组件 - Text

文本组件是我们最常用的组件之一,它是用来在UI界面上显示字符串。作为基本组件,有很多扩展,常见的有按钮组件Button、文本编辑组件TextFiled、计时器组件TickTimer,它们都是Text组件的扩展(也称为Text的子类)。 Text(文本组件)是Component类的子类之一,所以它能够使用Component类的所有公开的属性和方法(后面章节会详细介绍该类),Text类自身也提供了一些特殊的属性、方法、内部类和接口。 1、从源代码入手 阅读官方的Java API文档看结构不是很清晰,所以我们在DevEco中查看源代码。 /** * 继承Component类 */ public class Text extends Component {} 这里我们说一下如何查看类的继承关系,由于DevEco是基于开源的社区版,它是没有Diagrams功能的,我们可以使用第二种方法Navigate --> Type Hierarchy(或者F4)来查看关系图。 我们可以点击DevEco界面左侧选项卡Structure查看类中详细结构,我们可以看到Text自身提供了很多属性和方法,同时也继承父类的很多属性和方法。 /** * 默认构造函数 * 用于使用默认属性和样式创建文本实例 * @param context */ public Text(Context context) {} /** * 提供了用于在XML解析后使用指定的属性集合和默认样式创建文本实例的构造函数 * @param context * @param attrSet */ public Text(Context context, AttrSet attrSet) {} /** * 提供了用于在XML解析后使用指定的属性集和指定的样式创建文本实例的构造函数 * @param context * @param attrSet * @param styleName */ public Text(Context context, AttrSet attrSet, String styleName) {} 我们在代码中要给布局添加组件时,需要先创建组件对象。使用磨人的构造函数创建Text对象,后面两种构造函数我们这里不做过多说明,这两种是用于自定义组件时使用的,后面自定义组件小节中会详细介绍,期待吧。 //创建Text对象 Text text = new Text(this); 我们可以在Structure中看到Text类有很多属性,比如设置文本内容的text属性、设置文本内容颜色的textColor属性、设置文本内容字体大小的textSize属性,及设置文本内容字体的font属性等。也有继承自父类的属性,比如设置文本宽度的width属性、设置文本高度的height属性等。 //1. 创建Text对象 Text text = new Text(this); //2. 设置文本内容宽高 text.setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT); text.setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT); //3. 设置显示内容 text.setText("我是在代码创建的Text。"); //4. 设置文字大小 text.setTextSize(50, Text.TextSizeType.FP); //5. 设置文字颜色 text.setTextColor(Color.BLUE); //6. 添加组件到布局中 layout.addComponent(text); 我们可以启动一下我们的模拟器,查看是不是在界面中显示了我们设置的文本内容。 当然组件不仅仅是做显示使用的,我们还可以在组件上添加监听事件,来实现交互效果,比如我们点击界面中的文字内容,让它显示成其他的内容。 我们现在使用的是代码中构建UI界面,当然官方也给我们提供了在XML中声明布局,添加组件,在代码中设置界面入口只需要指定它在内存中的地址。如果我们要对组件进行监听,需要指定其在内存中的地址,然后创建对象完成监听操作。 在resources --> base目录下创建layout目录(目录下的文件就是布局资源),然后在该目录下创建布局资源文件(后缀为.xml),然后在XML中声明布局和组件。 <!--xml文件--> <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:orientation="vertical"> <Text ohos:id="$+id:text_helloworld" ohos:height="match_parent" ohos:width="match_parent" ohos:layout_alignment="horizontal_center" ohos:text="我是在XML中声明的Text。" ohos:text_size="50" /> </DirectionalLayout> //在AbilitySlice的onStart方法中设置界面入口,这里指定页面在内存中的地址 super.setUIContent(ResourceTable.Layout_ability_text_xml); 2、常用属性和方法 到这里我们已经对Text有了大致的了解,对两种编写布局的方式也有了大致的了解。Text有很多属性和方法,我们在这里给大家列出常用的几个属性和方法。 <Text ohos:id="$+id:text_helloworld" ohos:height="match_content" ohos:width="match_content" ohos:text="我是在XML中声明的Text。" ohos:text_size="50fp" /> <Text ohos:id="$+id:text_auto_font_size" ohos:height="match_content" ohos:width="match_content" ohos:text="T" ohos:text_size="50fp" ohos:auto_font_size="true"/> <Text ohos:height="match_content" ohos:width="match_content" ohos:text="Text Font" ohos:text_size="50fp" ohos:text_font="serif"/> //2. 自动调整字体大小 Text text_auto_font_size = (Text) findComponentById(ResourceTable.Id_text_auto_font_size); text_auto_font_size.setClickedListener(l -> { text_auto_font_size.append("T"); }); 获取原文资源包 作者:IT明 想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com 扫码关注公众号,【免费课程+一手资讯+福利掉落】,速来!

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

【AWS征文】小白终于也能玩上真正的量子计算了!

2019年底云计算江湖来了一波量子计算的小高潮,先是11月4日微软发布了Azure Quantum服务,12月AWS又在ReInvent 2019上发布Amazon Braket,让码农们各种激动。我还写了一篇文章:AWS每年的大招又来了,第一个就介绍了AWS这个量子计算的新产品。只可惜那个时候都是预览版,小白是无法直接上手使用的。直到一年以后的8月,AWS终于官宣了这个产品的GA,可以在美东(北弗吉尼亚)和美西(北加州和俄勒冈)三个区域使用,真是千呼万唤始出来。相比于隔壁的Azure Quantaum一直需要申请早鸟使用,也是快了那么一点点。 量子计算扫盲篇 Braket这个名字还是很有讲究的,来自于著名的量子物理学家保罗·狄拉克(Paul Adrien Maurice Dirac,1902年8月8日-1984年10月20日)1939年提出的“bra-ket”符号,也叫狄拉克(Dirac)符号。他把括号Bracket这个词一分为二,左边是bra,右边是ket,分别表示左矢和右矢,是一种简单地表示量子状态的方法。 再往下的数学物理我就基本上搞不懂了,翻翻20年前的大学物理课本好像也看不懂啥,当然量子物理不是我今天要谈的内容,关键是量子计算!量子计算(Quantum Computing)主要是利用量子力学的原理来处理信息,这和我们经典计算机是不一样的。经典计算机使用的是硅材料芯片,而量子计算机使用的是原子、离子、光子或电子等材料。 要搞明白量子计算,有几个关键的概念是必须理解的:叠加(Superposition),量子测量(Quantum measurement),纠缠(Entanglement)和量子比特(Qubits)。 一个中年大叔,在健身房里锻炼身体,要么向左转,要么向右转。用计算机的语言来说,我的状态要么是0,要么是1,不能同时向左或向右,即同时是0又是1。但是如果我是一个量子粒子,我就可以以一定的概率向左转,又有一定的概率向右转,我是无数个介于0或者1状态的线性组合,直到美女教练来看我,才能知道我的状态到底是0还是1。我这种介于0或者1的状态,就是叠加。美女教练来看我的时候,我要么向左,要么向右,而不是同时在左或者右的状态,就叫做量子测量。我因为教练的美貌,崩塌(collapsed)成了某个确定的状态。 如果美女教练看上了我,她选择跟我的状态保持一致或者相反,如果我的状态是0,那么她的状态就是0或1,无论天涯海角,无论海枯石烂,不管多少光年之外,只要我坍塌了,她同时也坍塌,这种关系就叫做量子纠缠。 对量子计算机软件设计而言,最重要的基础是量子比特(qubit),对应的就是经典计算机里的bit。经典计算机里的bit是0或者1,而处于叠加态的qubit则是有一定概率是0,有一定概率是1,比如说我们可以设置70/30的概率,也就意味着这个叠加态的qubit有70%的概率是0,30%的概率是1,这种概率的状态对计算产生了巨大的优势。对于处于叠加态的2个qubits而言,每个qubits可以是0,1或者同时,也就意味着可以同时表示4个值,即00,01,10,11,而不像经典计算机里同时只能表示一个值,这对计算的速度和效率会产生巨大的优势。例如下面将会提到的拥有2048个量子位的D-Wave量子计算机,同时可以表示2^2048个值,大约是3.23E+616,也就是3后面跟着616个零,这个恐怖的数字超出了人类的想象。 写到这里,我想起了得到上老喻的《人生算法》课上的内容,其实我们的人生说到底,无非是各种不同的概率组合而已,量子计算,也是在玩概率的游戏。量子计算机是不是未来可以真正地模拟人生呢? Amazon Braket的样子 Amazon Braket定义了一个新的概念叫做QPU(Quantum Processing Unit),抽象了量子计算的处理单元,提供了三种不同的量子硬件,包括: 1,D-Wave,运行着2048个量子比特(qubits)的量子退火处理器。量子退火使用一个物理过程来寻找一个低能量配置,编码一个优化问题的解决方案。这个和下面基于门的量子比特技术是完全不同的技术。下图是Amazon的提供的D-Wave 2000Q的真实样子。 2,IonQ,提供了基于门的11个量子比特的离子阱计算机。单个离子通过周围电极产生的电磁阱保持在真空中,使用激光脉冲来执行栅极操作。具有相对较长的相干时间和良好的连通性。这是IonQ的样子。 3,Rigetti,提供基于超导量子位的通用门计算机。用30个在低温下工作的超导量子比特。超导量子比特具有易耦合,电子控制和快速门等优点。Rigeti 16Q Aspen-4看上去是下面这样的。 好吧,我承认对于上面几个关于量子计算机硬件的介绍,我还是不是特别明白,看图片感觉上反正是各种高大上的样子,具体的物理过程其实我也不需要懂,还是赶紧去看看AWS Braket到底是什么样子的吧。 登陆到AWS的Console上,可以看到Braket已经可以直接申请了。完成之后,就能看到刚才介绍的三种不同的硬件和AWS提供的模拟器SV1。我们可以通过创建虚拟机,跑Python Notebook的实例,在模拟器SV1或者是真实的环境上运行量子算法。 Amazon提供了开源的Braket Python的SDK(https://github.com/aws/amazon-braket-sdk-python ),可以用于编写量子计算的代码。我个人觉得最简单的还是在Console里直接创建Notebook的虚拟机,免去了配置环境的麻烦。这个虚拟机自动部署了Anaconda 3.0的环境和Braket Python SDK,并提供了一些Braket的算法示例,用于测试和学习。 下面我们来看一段最简单的python代码,用来模拟两个量子位之间的最大纠缠贝尔态,在AWS的Braket里可以随意切换模拟器或者使用Rigetti/IonQ的硬件执行。 贝尔态是爱尔兰物理学家约翰·斯图尔特·贝尔提出的描述两个量子比特四种最大的纠缠态,即00,01,10,11。具体的物理我就不说了,反正我也不是专家,不能不懂装懂。结论很简单,就是在最大纠缠的状态下,两个量子比特的测量结果“一定相同”或者“一定不同”。下面的代码构建了如下图所示的一个回路,实现了贝尔态。 首先是导入相关的库: # general imports import boto3 import numpy as np import matplotlib.pyplot as plt # magic word for producing visualizations in notebook %matplotlib inline import string import time # AWS imports: Import Braket SDK modules from braket.circuits import Circuit, Gate, Instruction, circuit, Observable from braket.devices import LocalSimulator from braket.aws import AwsDevice, AwsQuantumTask 接下来定义相应的账号和S3的存储桶信息,然后定义相应的阿达马门(Hadamard Gate)和量子非门(CNOT Gate): aws_account_id = boto3.client("sts").get_caller_identity()["Account"] my_bucket = f"amazon-braket-{aws_account_id}" # the name of the bucket my_prefix = "simulation-output" # the name of the folder in the bucket s3_folder = (my_bucket, my_prefix) # define circuit bell = Circuit().h(0).cnot(0, 1) # print circuit print(bell) T : |0|1| q0 : -H-C- | q1 : ---X- T : |0|1| 先在本地模拟器上测试: # set up device: Local Simulator device = LocalSimulator() # run circuit (execute single TASK) result = device.run(bell, shots=1000).result() # get measurement shots counts = result.measurement_counts # print counts print(counts) Counter({'00': 515, '11': 485}) 这个输出表示1000个测量里,有515个是00状态,485个是11状态。我们也可以画个图来显示一下。 # plot using Counter plt.bar(counts.keys(), counts.values()); plt.xlabel('bitstrings'); plt.ylabel('counts'); 接下来我们修改一点代码,让代码在云上的模拟器上运行,也就是SV1,他拥有34个量子位。修改很简单,改一句话就好了。 # set up the managed simulator device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") 结果也是类似的,运行完了以后,在Console的Task里就会出现刚才执行的任务情况。 在S3的Bucket里面也会出现刚才运行的结果,这是个result.json文件,记录了1000次量子测量的结果,并记录纠缠的结果。 接下来就是激动人心的真实硬件运行了。其实这些硬件资源还是特别紧张的,在我测试的时候,除了D-Wave可以用以外,IonQ要1天以后才有资源,Rigetti也要10小时以后,不过我们可以通过代码的方式,创建任务,等机器空出来了,就可以执行获得结果了。 # set up device ionq = AwsDevice("arn:aws:braket:::device/qpu/ionq/ionQdevice") # run circuit with a polling time of 5 days ionq_task = ionq.run(bell, s3_folder, shots=1000, poll_timeout_seconds=5*24*60*60) # get id and status of submitted task ionq_task_id = ionq_task.id ionq_status = ionq_task.state() # print('ID of task:', ionq_task_id) print('Status of task:', ionq_status) 这里我们设置了5天的超时,任务会在5天内执行完成,否则就不执行了,当然可以预期结果也是比较类似的。在真实的量子计算机上出现了四种状态,即00,01,10,00,这在经典的模拟计算机上是没有的,结果如下: 量子纠缠也是量子计算里非常有趣的特性,任何关于量子计算的教材里都会提到,比如Azure Quantum的教程里也有类似的内容,只是微软用的是Q#(qdk)来实现的。(https://docs.microsoft.com/en-us/quantum/tutorials/explore-entanglement ),同样可以在Jupyter或者Visual Studio Code里运行,也是实现了H门和CNOT门。 总结 AWS并不是第一个提供量子云服务的厂商,但是是我能摸到的第一个。IBM在2016年就推出了22个量子位的量子计算服务,之前我也说了微软在AWS之前推出了Azure Quantum,只是我辈小白不能用而已。微软的服务也有IonQ的硬件,还有Honeywell和Quantum Circuits(QCI)的硬件,Honeywell最近推出的硬件包含64个量子位。 事实上到今天为止量子计算还是实验性质的,传统计算机能做所有量子计算机能做的事情,只是可能在特定领域慢一点而已。前天又有一条新闻说Google继去年实现量子优越性以后,对化学反应进行了模拟,在Science上又发表了一篇新文章《超导量子比特量子计算机的 Hartree-Fock 近似模拟》(Hartree-Fock on a Superconducting Qubit Quantum Computer),又解锁了量子计算的新技能。相信要不了多久,量子计算将会进入我们的日常生活,新一代的码农或许又有了更多改变世界的机会。 关于作者 Hotcan,80后技术老炮儿云计算和数字化技术的创业者创业公司被收购之后,继续求索云和数字化技术 历史

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

虚拟化的过去,现在,未来——“瑞友杯”虚拟化征文

1.虚拟化个人用户时代 我第一次接触虚拟化是在2005,当时需要做PCB电路设计,老师提供的软件只能在win98下跑,我们的PC上都是XP,为此我们安装了虚拟机VMware来运行win98,这是我第一次看到原来在一个操作系统里还能安装别的系统,当时觉得虚拟机有别于双系统,我们在一台可以同时操作两或者多个系统,对于一些对系统要求的软件,我可以安装一个操作系统去适应。接着我也接触到一些别的虚拟机软件例如VirtualBox ,微软的virtualPC。这些软件中 1)VMware:基本上是老大,用户体验非常好 2)VirtualBox:基本上模仿VMware,虽然不上太完善,但是胜在免费; 3)VirtralPC只是短暂出现。 个人用户时代虚拟化的特征: 1)能够在一台机器上虚拟出几台虚机 2)主要支持windows,linux,unix三大平台 3)主要用于 a.学习,例如在windows下学习linux; b.软件适配,有些软件只是支持某种操作系统下安装和使用 2.虚拟化云计算时代 随着亚马逊推出云服务,这个改变了每个人对于虚拟机的理解。云计算这个概念颠覆了IT人认为计算机性能越强就越好的概念,用多个虚拟机构建出来的云计算系统也许会比一台高性能技术机性能要差一些,但是由于负载均衡,监控系统,分布式使得云计算要比一台高性能技术机性能可靠性和稳定性要高出很多。虚拟化使得cpu、内存、网络、硬盘等原本只能给个人使用的资源变为像水、电、煤气一样随时可用,随时调整,随时可以不用。这时不仅是个人还公司都可以花钱向云主机服务商购买属于自己的虚拟机,甚至一些大公司可以把自己现有设备进行虚拟化。 主要的虚拟机软件有VMware、xen、Hyper-V、Ec2、openStack 1)VMware:在个人用户方面比较强,在云计算方面也有一整套完整的解决方案。 2)Xen:在服务器虚拟化方面非常广泛,由于开源,各个软硬件厂商都对它贡献,开源免费致使很多公司基于它进行开发适合自己的虚拟机。很多开发者学习虚拟化都是从它开始。 3)Hyper-v是微软在win server提供的虚拟机,最新的windows System Center 2012中可以很方便创建和管理一个数据中心级别的虚拟机集群。结合微软一整套组件(监控,报警,高可用性控制虚拟机切换),我们可以节省大部分运维人员。 4)Ec2是亚马逊云服务提供的虚拟机,结合其他服务,我们可以自己可靠性非常高的网站。 5)Openstack:不是虚拟机,但是它提供了统一管理各种虚拟机的一个平台。 虚拟化云计算时代的特征: 1)利用分布在全球各地的高性能服务器动态虚拟出多台虚拟机,使分布式网站和云计算能够快速搭建 2)虚拟机作为一种商品出现,从购买到生产出虚拟机一般只需要10分钟。 3)需要结合监控系统,控制中心实现高可用性 4)节省服务器和能源,即用即开,不用则删,相同硬件资源可以同时提供给不同的企业和个人使用。 3.未来虚拟化智能时代 1)各种虚拟机都统一 2)虚拟机能够实时动态迁移到全世界任何一台服务器上 3)针对每个人都有一个自己的虚拟机(使用DNA进行标识),存放个人信息和数据、软件,并且能够根据个人地理位置移动,各大洲都有备份虚拟机。只要有一个显示屏接入到网络,就可以进行未完成的游戏,未写完的文档等等。 4)虚拟机管理系统智能运行,能够监控虚拟机运行状况,动态调整虚拟机配置,提供强大的保护和加密服务,动态备份,若是虚拟机宕机,能够自动切换到新虚拟机上,真正做到无人管理。 5) 无人使用的虚拟机可以自动关闭物理机节省能源和设备,若是虚拟机不够用可以自动开启物理机来增加虚拟机 本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/1011535,如需转载请自行联系原作者

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

“HarmonyOS 协同・创新” 即将启幕,开发者携手共创新未来

加入鸿蒙开发者联盟官网,快速成为鸿蒙开发者! 当智能终端从“单一设备”走向“全域协同”,从智能家居的联动控制到工业互联的高效协同,从车载系统的无缝衔接到移动办公的跨端流转,开发者如何在这场变革中抢占先机? HarmonyOS 以分布式技术打破硬件边界,“一次开发、多端部署”能力已悄然渗透至千行百业,用全场景生态重构用户体验,正为全球开发者打开一扇通向未来的大门。 但随之而来的挑战也愈发明显:如何高效利用分布式架构实现跨端协同?AI 技术如何深度赋能鸿蒙应用开发?复杂场景下的性能优化有哪些“避坑指南”? 4月27日,由开源中国主办,山东省软件行业协会协办的“HarmonyOS 协同·创新”(软件行业专场)将在济南启幕。这是一场专为鸿蒙生态建设者打造的深度对话——技术大咖、实战派工程师与数百名开发者齐聚,共同探索操作系统的无限可能。 主题:HarmonyOS 协同·创新(软件行业专场) 时间:2025年4月27日 14:00-17:20(13:40开放签到) 地点:济南市山创创意园·ChillPlay Base&coffee(山6创意园内,科技氛围与咖啡香交融的灵感空间) 适合人群:鸿蒙应用开发者、技术团队负责人、生态合作企业 🤝与顶尖专家面对面:破解开发者的“真问题” 华为云 HCDE 专家姚圣伟将解读鸿蒙生态战略布局及2025年新机遇,拆解鸿蒙分布式架构,揭秘跨端协同开发的核心逻辑。 科技公司软件工程师刘张豪分享AI赋能鸿蒙生产力的实战案例,探索智能化开发新路径。 互联网医疗大前端专家黄沅带来高频问题解析与优化指南,助力开发者提升效率、少走弯路。 活动特设“互动时刻”环节,专家现场坐镇答疑解惑。无论是分布式架构设计、多端协同逻辑,还是代码调试中的疑难问题,参与者均可通过现场提问与专家零距离交流,快速打通技术堵点,获取针对性解决方案。 另外,本次活动特设茶歇交流时间,与数百名鸿蒙开发者、技术专家、企业代表轻松氛围中碰撞创新灵感,拓展行业人脉。 👏微信扫码,即刻报名: 加入鸿蒙开发者联盟官网,快速成为鸿蒙开发者!

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

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

用户登录
用户注册