首页 文章 精选 留言 我的

精选列表

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

docker学习系列1 使用docker 快速实现多版本PHP

多谢此文:https://blog.eriksen.com.br/en/docker-image-multi-version-php-development 最近一个新的后台API项目需要运行在PHP5.3环境中,而无论是本地还是测试服务器都安装的是PHP7.x PHP5.3官方已经不维护了,通过源码安装配置也很麻烦,我又不想污染了现有的环境。 所以想到了docker 我觉得docker适合以下情况: 运行特定的开发环境,比如要运行两个项目。一个要求PHP5.6,一个PHP7.0。不想来回切换。 喜欢尝鲜,折腾,docker有很强的隔离性。在docker里搞坏也不会破坏本地 新项目是基于 ThinkPHP3.2 想通过docker跑起来,可以按如下步骤: 安装 docker,略 记得一定要切换为国内源,不然速度巨慢,还容易报错,推荐免费的https://www.daocloud.io/mirror#accelerator-doc 下载镜像docker pull eriksencosta/php-dev 项目目录是已经存在的 路径是 D:/projects/live-ranking-api 运行容器 其中参数:-p 端口映射 -v 挂载目录,冒号前是宿主机目录,后面的是容器内目录 -t -i 参数 表示已交互方式运行容器,运行成功后会执行 /bin/bash 就是进去终端docker run -t -i -p 8088:80 -v D:/projects/live-ranking-api:/var/www -d "eriksencosta/php-dev:latest" /bin/bash image.png 打开浏览器输入 localhost:8088 正常的话项目已经成功跑起来了 切换PHP版本,在容器内的终端内输入 phpenv命令 列出当前可选择的PHP版本 # phpenv versions 5.3 5.3.29 5.4 5.4.35 5.5 5.5.19 5.6 * 5.6.3 (set by /opt/phpenv/version) 执行 phpenv global 5.4 # phpenv global 5.4 # php -v PHP 5.4.35 (cli) (built: Dec 14 2014 00:35:12) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.6, Copyright (c) 2002-2014, by Derick Rethans 启动nginx # webserver start Starting PHP-FPM (PHP version 5.3) server. Starting Nginx server. Done. 参考:https://hub.docker.com/r/eriksencosta/php-dev/https://github.com/eriksencosta/silex-docker-example

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

物联网多应用刺激32位MCU迅猛增长

物联网的发展趋势与MCU市场的关系密不可分,无论是连接用的小型节点、收集与记录数据的传感器中枢,主要都以MCU平台为基础。IHS早前预估针对连网汽车、可穿戴设备、建筑物自动化以及其他有关物联网应用的MCU市场预计将以11%的CAGR成长,2019年时达到28亿美元的市场规模。嵌入式主板 AI在机器智能学习发展的突破中催生了ASIC芯片需求,也衍生了IP、SSD、MCU的大商机。其中,机器人、工业应用、机器视觉、听觉等需求增加使模拟数据的产出也明显提升,利用MCU与传感器来得到外界信息的解决方案需求也将随之上扬。 意法半导体(ST)MCU市场部相关人士表示现在大部分人工智能都是在处理器或服务器级别的计算设备上实现的,MCU以前都是做一些相对简单的实时性应用,数据处理应用比较少。随着MCU制造工艺的变化使其与CPU之间的界限也开始变得模糊,MCU性能的提升使其可以多做一些算法,也能辅助人工智能的开发。ST推出的Cortex-M7内核高性能的MCU可以辅助大数据处理计算系统,也可以满足对实时性要求比较高的应用。比如在人工智能的一些神经网络引擎,已经可以在MCU上实现,可以帮助用户实现诸如场景识别等算法;另一方面,MCU所能提供的低功耗运行,将为消费类电子的AI算法应用带来更佳的用户体验。 传统的联网方式在中高端MCU产品中都已经有了,MCU集成无线连接技术已经成为了趋势,Wi-Fi、蓝牙、LoRa、NB-IoT都会集成到MCU的方案里,未来我们会根据具体的需求和应用场景决定集成的连接技术供客户选择,同时也将加快产品的开发速度以满足市场的需求。 除了联网功能,高效的传感器接口、各种功能和集成也是关键。有业内人士表示,将各种功能集成到MCU中有许多益处,包括更低的解决方案成本、更小的占板面积和更高的功能集成度,进而可产生更高的性能和更低的能耗。 内核和工艺限制MCU性能的提升,与CPU需要把所有程序都放到内存运行不同,MCU是将程序放到片上Flash进行读取和执行,Flash的工艺包括读取速度都影响MCU性能的提升。不过随着新的IP技术的出现,比如ART加速器在MCU内部的广泛应用,这些限制性能的瓶颈已经被突破。功耗方面,之前MCU普遍采用180nm甚至更高制程工艺,现在市面有推出的量产MCU基于40nm工艺,新的工艺不仅能降低功耗,也能对性能提升有所帮助。 从性能规划上来看,无论是50MHz、100MHz还是高性能400MHz、500MHz的系列都会有低功耗的产品。目的就是尽量在不降低性能和减少功能的前提下做到功耗最低,让客户有更好的选择。当然,要达到这个目标除了硬件方面的优化,软件方面也需要进行优化。因此不仅需要MCU厂商去努力,也需要方案厂商等的共同努力。另外,MCU的性价比在不断提升,与专用芯片的性价比越来越接近,这有利于MCU在物联网市场的推广。 随着32位MCU 开发应用的成本逐渐降低,在消费电子、通讯产品、工业、医疗等领域已经得到了广泛的应用,32位MCU出货量急起直追,但仍未超越8位MCU。其中很重要的原因就是8位MCU性能的持续提升以及本身的价格优势。 为了满足物联网智能家居、智能汽车、智能制造以及可穿戴设备、人工智能等众多应用的需求,MCU的连网性能、丰富的接口、更多的集成必不可少,性能、功耗、安全性的提升同样不容忽视。在人工智能、智能汽车等智能化应用的推动下,继全球领先的MCU企业之后大部分MCU企业都已经全面进军32位MCU领域,32位MCU将迎来更大幅度的增长。

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

OpenStack nova-network 支持多vlan技术实现片段代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 #-*-encoding:utf-8-*- # #Copyright2012RedHat,Inc # #Author:EoghanGlynn<eglynn@redhat.com> # #LicensedundertheApacheLicense,Version2.0(the"License");youmay #notusethisfileexceptincompliancewiththeLicense.Youmayobtain #acopyoftheLicenseat # #http://www.apache.org/licenses/LICENSE-2.0 # #Unlessrequiredbyapplicablelaworagreedtoinwriting,software #distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUT #WARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.Seethe #Licenseforthespecificlanguagegoverningpermissionsandlimitations #undertheLicense. """ImplementationofInspectorabstractionforlibvirt.""" import libvirt import os,sys,time import traceback from lxml import etree from oslo.config import cfg from nova.openstack.common import logaslogging from nova import utils libvirt = None LOG = logging.getLogger(__name__) libvirt_opts = [ cfg.StrOpt( 'libvirt_type' , default = 'kvm' , help = 'Libvirtdomaintype(validoptionsare:' 'kvm,lxc,qemu,uml,xen)' ), cfg.StrOpt( 'libvirt_uri' , default = '', help = 'OverridethedefaultlibvirtURI' '(whichisdependentonlibvirt_type)' ), cfg.StrOpt( 'network_script_path' , default = '/etc/sysconfig/network-scripts/' , help = 'Centos6.6systemnetworkconfigpath' ), ] CONF = cfg.CONF CONF.register_opts(libvirt_opts) class LibvirtNetwork( object ): per_type_uris = dict (uml = 'uml:///system' ,xen = 'xen:///' ,lxc = 'lxc:///' ) def __init__( self ): self .uri = self ._get_uri() self .connection = None def _get_uri( self ): return CONF.libvirt_uri or self .per_type_uris.get(CONF.libvirt_type, 'qemu:///system' ) def _get_connection( self ): if not self .connection or not self ._test_connection(): global libvirt if libvirt is None : libvirt = __import__ ( 'libvirt' ) LOG.debug( 'Connectingtolibvirt:%s' , self .uri) self .connection = libvirt.openReadOnly( self .uri) return self .connection def _test_connection( self ): try : self .connection.getCapabilities() return True except libvirt.libvirtErrorase: print '*' * 100 if (e.get_error_code() = = libvirt.VIR_ERR_SYSTEM_ERROR and e.get_error_domain() in (libvirt.VIR_FROM_REMOTE, libvirt.VIR_FROM_RPC)): LOG.debug( 'Connectiontolibvirtbroke' ) return False raise def _lookup_by_name( self ,instance_name): try : return self ._get_connection().lookupByName(instance_name) except Exceptionasex: if not libvirt or not isinstance (ex,libvirt.libvirtError): LOG.error(ex) error_code = ex.get_error_code() msg = ( "Errorfromlibvirtwhilelookingup%(instance_name)s:" "[ErrorCode%(error_code)s]" "%(ex)s" % { 'instance_name' :instance_name, 'error_code' :error_code, 'ex' :ex}) LOG.error(msg) def get_vnic_name( self ,instance_name): domain = self ._lookup_by_name(instance_name) tree = etree.fromstring(domain.XMLDesc( 0 )) for iface in tree.findall( 'devices/interface' ): target = iface.find( 'target' ) if target is not None : vnic_name = target.get( 'dev' ) else : continue mac = iface.find( 'mac' ) if mac is not None : mac_address = mac.get( 'address' ) else : continue fref = iface.find( 'filterref' ) if fref is not None : fref = fref.get( 'filter' ) return vnic_name #Addwilliam,Bridgesupportsmultiplevlantechnology def bridge_multiple_vlan( self ,instance): network_info = dict () try : new_source_dev = instance[ 'hostname' ].split( '.' )[ - 1 ] if not new_source_dev: new_source_dev = 'br100' if 'vlan' not in new_source_dev: new_source_dev = 'br100' network_info[ 'vlan_name' ] = new_source_dev network_info[ 'instances_name' ] = instance[ 'name' ] #network_info['vnet_name']=self.get_vnic_name(instance['name']) network_info[ 'bond_name' ] = os.listdir( '/proc/net/bonding' )[ 0 ] network_info[ 'bond_dev' ] = '%s.%s' % (network_info[ 'bond_name' ],new_source_dev.split( 'vlan' )[ - 1 ]) network_info[ 'vlan_id' ] = new_source_dev.split( 'vlan' )[ - 1 ] check_result = self .check_bridge_vlan(network_info[ 'vlan_name' ],network_info[ 'bond_dev' ]) if not check_result: self .add_bridge_vlan(network_info) else : LOG.info( "Addwilliam,%sisexists,soisnotcreate" % network_info[ 'vlan_name' ]) except : LOG.error(traceback.format_exc()) def add_bridge_vlan( self ,network_info): utils.execute( "vconfig" , "add" ,network_info[ 'bond_name' ],network_info[ 'vlan_id' ],run_as_root = True ) LOG.info( "Addwilliam,utils.exeuctevconfigadd%s%s" % (network_info[ 'bond_name' ],network_info[ 'vlan_id' ])) utils.execute( "ifconfig" ,network_info[ 'bond_dev' ], "up" ,run_as_root = True ) LOG.info( "Addwilliam,utils.executeifconfig%sup" % (network_info[ 'bond_dev' ])) utils.execute( "brctl" , "addbr" ,network_info[ 'vlan_name' ],run_as_root = True ) LOG.info( "Addwilliam,utils.executebrctladdbr%s" % (network_info[ 'vlan_name' ])) utils.execute( "brctl" , "addif" ,network_info[ 'vlan_name' ],network_info[ 'bond_dev' ],run_as_root = True ) LOG.info( "Addwilliam,utils.executebrctladdif%s%s" % (network_info[ 'vlan_name' ],network_info[ 'bond_dev' ])) utils.execute( "ifconfig" ,network_info[ 'vlan_name' ], "up" ,run_as_root = True ) LOG.info("") #utils.execute("brctl","addif",network_info['vlan_name'],network_info['vnet_name'],run_as_root=True) bond_script = "%s/ifcfg-%s" % (CONF.network_script_path,network_info[ 'bond_dev' ]) vlan_script = "%s/ifcfg-%s" % (CONF.network_script_path,network_info[ 'vlan_name' ]) utils.execute( "chmod" , "777" ,CONF.network_script_path,run_as_root = True ) fp = open (bond_script, 'w' ) fp.write( "DEVICE=%s\n" % network_info[ 'bond_dev' ]) fp.write( "ONBOOT=yes\n" ) fp.write( "NM_CONTROLLED=no\n" ) fp.write( "BOOTPROTO=static\n" ) fp.write( "VLAN=yes\n" ) fp.close() fp = open (vlan_script, 'w' ) fp.write( "DEVICE=%s\n" % network_info[ 'vlan_name' ]) fp.write( "BOOTPROTO=static\n" ) fp.write( "ONBOOT=yes\n" ) fp.write( "TYPE=Bridge\n" ) fp.close() utils.execute( "chmod" , "755" ,CONF.network_script_path,run_as_root = True ) def check_bridge_vlan( self ,vlan_dev,bond_dev): vlan_list = bond_list = list () vlan = bond = False vlan_info = os.popen( "brctlshow|grepvlan|awk'{print$1}'" ).readlines() for i in vlan_info: vlan_list.append(i.strip()) bond_info = os.popen( "ifconfig|grepbond0|awk'{print$1}'" ).readlines() for i in bond_info: bond_list.append(i.strip()) if vlan_dev in vlan_list: vlan = True if bond_dev in bond_list: bond = True if vlan and bond: return True else : return False if __name__ = = "__main__" : instance = {u 'vm_state' :u 'building' ,u 'internal_id' : None ,u 'availability_zone' :u 'nova' ,u 'terminated_at' : None ,u 'ephemeral_gb' : 100 ,u 'instance_type_id' : 26 ,u 'user_data' : None ,u 'cleaned' : 0 ,u 'vm_mode' : None ,u 'deleted_at' : None ,u 'reservation_id' :u 'r-z2zsdcvl' ,u 'id' : 299 ,u 'security_groups' :[{u 'project_id' :u '50fd5d79ab184c399cdc22da78b8a7bc' ,u 'user_id' :u '373ddabe004846ebba268d7e88d13e16' ,u 'name' :u 'default' ,u 'deleted' : 0 ,u 'created_at' :u '2014-09-30T07:49:38.000000' ,u 'updated_at' : None ,u 'rules' :[],u 'deleted_at' : None ,u 'id' : 1 ,u 'description' :u 'default' }],u 'disable_terminate' : False ,u 'root_device_name' :u '/dev/vda' ,u 'user_id' :u '373ddabe004846ebba268d7e88d13e16' ,u 'uuid' :u 'c4cf7bc1-72bd-4523-bab0-fdd0f837fb46' ,u 'default_swap_device' : None ,u 'info_cache' :{u 'instance_uuid' :u 'c4cf7bc1-72bd-4523-bab0-fdd0f837fb46' ,u 'deleted' : 0 ,u 'created_at' :u '2015-04-16T03:36:51.000000' ,u 'updated_at' :u '2015-04-16T03:36:52.000000' ,u 'network_info' :u '[{"ovs_interfaceid":null,"network":{"bridge":"br100","subnets":[{"ips":[{"meta":{},"version":4,"type":"fixed","floating_ips":[],"address":"192.168.221.164"}],"version":4,"meta":{"dhcp_server":"192.168.221.11"},"dns":[{"meta":{},"version":4,"type":"dns","address":"192.168.252.25"},{"meta":{},"version":4,"type":"dns","address":"192.168.252.24"}],"routes":[],"cidr":"192.168.220.0/19","gateway":{"meta":{},"version":4,"type":"gateway","address":"192.168.192.1"}},{"ips":[],"version":null,"meta":{"dhcp_server":"192.168.221.11"},"dns":[],"routes":[],"cidr":null,"gateway":{"meta":{},"version":null,"type":"gateway","address":null}}],"meta":{"tenant_id":"50fd5d79ab184c399cdc22da78b8a7bc","multi_host":true,"should_create_bridge":true,"should_create_vlan":true,"bridge_interface":"bond0"},"id":"4a8546f2-3919-445a-9f87-b938491d41a5","label":"publics"},"devname":null,"qbh_params":null,"meta":{},"address":"fa:16:3e:c5:be:93","type":"bridge","id":"a7a69211-6aeb-4b54-9a20-803b96df73bf","qbg_params":null}]' ,u 'deleted_at' : None ,u 'id' : 299 },u 'hostname' :u 'gg-esc-web.vlan203' ,u 'launched_on' :u 'localhost' ,u 'display_description' :u 'gg-esc-web.vlan201' ,u 'key_data' : None ,u 'deleted' : 0 ,u 'scheduled_at' :u '2015-04-16T03:36:51.000000' ,u 'power_state' : 0 ,u 'default_ephemeral_device' : None ,u 'progress' : 0 ,u 'project_id' :u '50fd5d79ab184c399cdc22da78b8a7bc' ,u 'launched_at' : None ,u 'config_drive' :u' ',u' node ':u' localhost ',u' ramdisk_id ':u' ',u' access_ip_v6 ':None,u' access_ip_v4 ':None,u' kernel_id ':u' ',u' key_name ':None,u' updated_at ':u' 2015 - 04 - 16T03 : 36 : 52.727467 ',u' host ':u' localhost ',u' display_name ':u' gg - esc - web.vlan201 ',u' system_metadata ':[{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' windows ',u' key ':u' image_os_type ',u' deleted_at ':None,u' id ':4889},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 8192 ',u' key ':u' instance_type_memory_mb ',u' deleted_at ':None,u' id ':4890},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 0 ',u' key ':u' instance_type_swap ',u' deleted_at ':None,u' id ':4891},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':None,u' key ':u' instance_type_vcpu_weight ',u' deleted_at ':None,u' id ':4892},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 60 ',u' key ':u' instance_type_root_gb ',u' deleted_at ':None,u' id ':4893},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 26 ',u' key ':u' instance_type_id ',u' deleted_at ':None,u' id ':4894},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' windows - 16 - 8G - 100G ',u' key ':u' instance_type_name ',u' deleted_at ':None,u' id ':4895},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 100 ',u' key ':u' instance_type_ephemeral_gb ',u' deleted_at ':None,u' id ':4896},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 1 ',u' key ':u' instance_type_rxtx_factor ',u' deleted_at ':None,u' id ':4897},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' qcow2 ',u' key ':u' image_disk_format ',u' deleted_at ':None,u' id ':4898},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 74c9f78a - 06d6 - 432d - 8051 - 4eeecf8ebff7 ',u' key ':u' instance_type_flavorid ',u' deleted_at ':None,u' id ':4899},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' ovf ',u' key ':u' image_container_format ',u' deleted_at ':None,u' id ':4900},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 16 ',u' key ':u' instance_type_vcpus ',u' deleted_at ':None,u' id ':4901},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 0 ',u' key ':u' image_min_ram ',u' deleted_at ':None,u' id ':4902},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 60 ',u' key ':u' image_min_disk ',u' deleted_at ':None,u' id ':4903},{u' instance_uuid ':u' c4cf7bc1 - 72bd - 4523 - bab0 - fdd0f837fb46 ',u' deleted ':0,u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' updated_at ':None,u' value ':u' 406c0425 - b8d3 - 4607 - beff - 8fa529b46b7a ',u' key ':u' image_base_image_ref ',u' deleted_at ':None,u' id ':4904}],u' task_state ':u' spawning ',u' shutdown_terminate ':False,u' cell_name ':None,u' root_gb ':60,u' locked ':False,u' name ':u' instance - 0000012b ',u' created_at ':u' 2015 - 04 - 16T03 : 36 : 51.000000 ',u' locked_by ':None,u' launch_index ':0,u' memory_mb ':8192,u' vcpus ':16,u' image_ref ':u' 406c0425 - b8d3 - 4607 - beff - 8fa529b46b7a ',u' architecture ':None,u' auto_disk_config ':False,u' os_type ':u' windows ',u' metadata':[]} sc = LibvirtNetwork() sc.bridge_multiple_vlan(instance) 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1633811

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

物联网技术泡沫多 期望与现实不匹配

目前的情况来看,物联网技术即使含有太多泡沫、期望与现实不匹配、达不到完全的契合,但是我们依然可以寄希望于物联网能够带给我们更极致的生活体验。 如今谈到物联网,我们不免会想到技术、标准化和服务,这也是当下热度很高的几个词。 关于技术,我们可以联想到全球最具权威的IT研究与顾问咨询公司——Gartner公司。关注物联网行业的人也许在去年见过一篇报道《Gartner技术成熟度曲线:物联网登顶2014》。 从这两幅图的对比中,我们可以看到IoT由原来的位置上升到顶端,短短一年内速度如此迅速,可见目前IoT的发展之快。这么看来,IoT市场从安定下来到最后达到稳定期可以比我们预期的时间来得短。另一方面,大数据与云计算已经趋于稳定的成熟期,而IoT沿着这两个技术的发展路径紧随其后,可以看出IoT的发展一定程度上依赖于这两个技术的发展。 虽然上面所提的是一篇过时了的报道,但是我只是想由此引出其中所涉及到的关键点:技术周期。对于物联网来说,已经过了诞生的躁动期,而今正处在过高期望的峰值期并即将迎来泡沫化的狂热期,之所以这么说是因为现在大家确实对物联网的期望太高了,期待这一项新技术能够解决社会上所有的问题、希望它就是万能的。市面上比比皆是的智能手机、智能手环、智能电视等,许多企业一有新产品可以发布,就想拿着“智能”当定语。从这些小细节其实就能看出所谓的过高的期待!但是,另一方面,包括企业与个人也逐步认识到这是不可能的,技术事实上只能解决部分问题。“一落千丈”虽然是个贬义词,但是从Gartner技术成熟曲线来看它却有着积极意义,因为它预示着该项技术即将迎来稳步爬升的光明期以及更久之后的成熟阶段。 在大会上也提出,对于物联网的各项指标,目前在各行各业里面的各个企业都想建立自己的一套标准,都有野心将自己的标准最大化甚至全球化。但是,无论哪个企业又都不愿意“委屈”自己去迎合他人所建立起来的标准。之前,高通Technologies市场营销高级总监Michelle Lyden-Li表示:“物联网生态系统的发展真正障碍并不在技术,而在于系统的互操作性,实现互操作性的关键是实现标准化,尤其是协议的标准化。只有遵循统一的标准协议,不同终端才能彼此发现、连接和对话”。所以说无法将协议、平台等标准化成了物联网快速发展路上的一块绊脚石!这就好像在玩拼图游戏,每个人手中只握着小块图片,需要大家齐心协力的合作才能以最快的速度将真正的拼图拼完整。但是,笔者认为实现小图拼成大图的概率接近于0,企业之间想要达到最好的合作状态几乎是不可能的,无论如何努力还是只能是在一定程度上优化如今割裂的状态。 以目前的情况来看,物联网技术即使含有太多泡沫、期望与现实不匹配、达不到完全的契合,但是我们依然可以寄希望于物联网能够带给我们更极致的生活体验。毕竟,各个大企业小企业都致力于将自己的产品真正的转化成服务。举个例子,京东已然不仅仅只是一个电商平台,人类已经不再满足于它所能提供的某件商品,而是随着这件商品顾客所能享受到的服务,所谓的服务就,比如说是上门安装、售后服务等全套服务,所以说京东能在原本商家与消费者就能完成的交易链上,依然屹立不倒,甚至是日益蓬勃发展的关键原因就是其提供人真正需要的服务。 另一个同样以人为核心提供人性化的服务的例子就是麦当劳与肯德基,也许你就像我一样虽然不只一次进出于这两个场所,但是从来未留意到一些细节,必须要等到他人提醒后才恍然大悟。这其中一个细节就是当我们进入这两个场所时需要拉门而离开时则是推门,为什么说这是以服务为核心的细节呢?因为考虑离开时的你是“满载而归”的,没办法伸手拉门但是推开的话你只需要用身体就可做到。 这种颠覆了以前人处在整个产业链条末端、被动接受企业提供的服务的模式,如今已经是一种围绕人性,以人为核心来生产、设计产品并且提供一整套服务的模式。 但是,事实上这种颠覆在很多方面表现为被扭曲了的颠覆。可以这么理解,智能手机是手机行业发展的必然趋势,是因为消费者有这样的需求,企业在这基础上设计并提供相应的一个产品。而其他很多智能单品的出现则是相反的一个过程,它是企业想要生产智能产品,然后消费者只能被动地接受,但又不能否认这不是以满足人的需求而出现的,只不过将少数人的需求强加给所有人。举个例子来说,你现在想去商场买电视但是你买不到普通电视,你所看到的全部是智能电视,而这正是因为如今的企业热衷于向消费者提供所谓的智能产品,并不是消费者有这样一种需求。虽说有点接近于“胁迫”消费者接受产品。但是呢,如果这种“胁迫”建立在提供一个更加便捷的、可通过统一的平台连接上网络、可提供比原本更贴心的服务的前提下,那么消费者当然也乐意享受这种“胁迫”的。 原本看似不在同一个维度的三个词-----技术、标准化和服务,但是通过以上的论述,反而将它们紧密地联系起来,可以将它们看成是某种“团聚”,让它们成为IoT行业发展的三个不容忽略的点:技术是基础,标准化是关键,而服务则是比产品本身的更吸引人的亮点。 作者:何妍 来源:51CTO

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

大数据产业迎多政策支持 产业迎来爆发期

记者从国家发改委等部门获悉,决策层将出台政策“组合拳”,支持大数据产业发展,其中包括构建国家大数据平台、编制大数据产业规划等。 政府数据统一开放平台2018年建成 作为战略新兴产业重要分支之一,大数据产业正迎来政策层面的诸多支持。其中,《促进大数据发展行动纲要》已在2015年印发。 “2016数博会已升格为国家级盛会。除此之外,近日工信部信息化和软件服务业司司长谢少锋透露,正在制定大数据产业‘十三五’发展规划,预计在今年下半年发布。”分析人士刘阳说,决策层对大数据的政策助力会越来越多。 记者也从国家发改委等部门了解到,决策层对于支持大数据产业将有一系列的“组合拳”,包括国家大数据平台、大数据产业规划、大数据产业链细化政策以及数据可视化的技术攻关等。 “2017年底前,我国将构建跨部门的政府数据共享交换平台;2018年底前,建成国家政府数据统一开放平台。”国家发改委相关人士对记者表示,国家大数据平台是由国家主导、服务全国的大数据平台,是国家重要基础信息设施。 据悉,该平台包括数据共享交换、数据开放等基础支撑平台以及数据汇聚分析等应用平台。 大数据产业迎来爆发期 “中国大数据应用市场快速增长,2015年市场规模46亿元,同比增长133%。2016年有望突破百亿规模。”刘阳分析认为,大数据产业正迎来爆发期。 记者也注意到,一些企业的发展印证了大数据产业进入快速发展阶段的事实。以挂牌新三板的数据堂为例,其2015年度实现营业收入6814.53万元,同比增长270.86%;净利润580.60万元,同比增长249.31%。 事实上,大数据已经渗透到每一个行业和业务职能领域,物联网、云计算、移动互联网、车联网、手机、平板电脑、PC以及遍布各个角落的各种各样的传感器,无一不是大数据来源或者承载的方式。 “大数据将对国家治理模式、企业的决策、组织和业务流程、个人生活方式等产生巨大的影响。”刘阳说,信息技术发展到现阶段,未来的很多行业都是和大数据结合做解决方案,大数据产业的爆发将是必然趋势。 本文转自d1net(转载)

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册