InfoQ 趋势报告:架构和设计领域技术演变详解

https://www.infoq.cn/article/R7lWXd0R4VFf3E0bB*38本文概述了我们对当前“架构和设计”领域的看法,这个领域侧重于基础设施模式、技术框架模式的实现,以及软件架构师必须掌握的设计流程和技能。我们看到了“演化式架构”设计需求的增长,这种架构建立在可替换性设计和关注“胶水”组件的基础之上。演化式架构支持功能性和跨功能性需求和约束的未来变化。“微服务”架构可能会进入晚期大众阶段,但与“正确设计分布式系统”相关的主题以及反应式和容错式设计将越来越靠近采用曲线。我们预测有些架构主题永远不会转移到早期大众或晚期大众阶段,但它们当中有一些高效的针对特定用例的模式,如基于事件溯源/CQRS或基于Actor模型的系统。我们看到“架构师”这个角色越来越多地偏向于技术领导力、架构模式识别和框架意识以及横切关注点设计。虽然我们认为“serverless”这个术语有点含糊不清,但我们很欣赏serverle...

从程序员到架构师的最佳技术成长之路

https://www.infoq.cn/article/Qr-vTStW6uuvjs4SZJZr我把程序员到架构师的技术成长之路分为几个典型的阶段:工程师-高级工程师-技术专家-初级架构师-中级架构师-高级架构师,总的成长原则是每个阶段都需要“积累经验、拓宽视野、深度思考”。今天我将结合我的专栏《从0开始学架构》,跟你聊聊不同阶段具体如何实践才能更高效。工程师阶段是最原始的“基础技能积累阶段”,主要积累基础知识,包括编程语言、编程工具、各类系统的基本使用。工程师阶段需要积累的经验和技能有:此阶段必备知识:架构到底指什么架构设计的历史背景从普通工程师成长为高级工程师,主要需要积累方案设计经验并能独立完成开发,包括需求分析、方案设计、编码实现,其中需求分析和方案设计已经包含了“判断”和“选择”,只是范围相对来说小一些,更多是在已有架构下进行设计。比如对于存储技术来说,需要掌握:此阶段必备知识:高性能数据库集群:分库分表高性能NoSQL高性能缓存从高级工程师成长为技术专家,主要需要“...

OpenStack的基本概念与架构

https://blog.csdn.net/zjluobing/article/details/51489325  OpenStack项目是一个开源的云计算平台,旨在实现很简单,大规模可伸缩,功能丰富。来自世界各地云计算开发人员和技术人员共同创建OpenStack项目。OpenStack通过一组相关的服务提供一个基础设施即服务(IaaS)解决方案。每个服务提供了一个应用程序编程接口(API),促进了这种集成。根据您的需要,你可以安装部分或全部服务。下表描述了构成OpenStack架构的OpenStack服务:OpenStackServicesServiceCodeNameDescriptionIdentityServiceKeystoneUserManagementComputeServiceNovaVirtualMachineManagementImageServiceGlanceManagesVirtualimagelikekernelimageordiskimageDashboardHorizonProvidesGUIconsoleviaWebbrowserO...

DCOS :私有云的物理基础架构管理引擎

https://cloud.tencent.com/developer/article/1005598云计算经过多年的发展,逐渐从概念到渐为人认知、到接受、到现在全行业拥抱上云,云的客户也从最初的中小初创互联网企业为主,逐步渗透到大型互联网企业、金融企业、传统企业,甚至到大型央企/政企。因此,为了应对不同客户的市场需求,云的形态也开始多样化,根据客户对资源控制权的不同,基本分为以下几类:图1云的集中形态在传统公有云中,计算资源主要是虚拟机的形态,以至于在云计算早期一段时间内,大部分人认为云计算技术=虚拟机技术,这种形态下的云,你只能接触到虚拟机,任何物理资源对你都是透明的;当这些物理资源产生冲突时,势必会影响到你的业务,所以当业务要求越来越高,他们对资源的控制权也慢慢提升,希望能独享物理机,就有了裸机云;进一步,他们还希望能自定义组网,方便其原有业务的迁移或重新规划,于是有了黑石云的解决方案(顺便提一下,其实“黑石”的核心是支持Overlay的虚拟网络,而非外界解读的物理机售卖);到最后连数据中心也要求独享,就有了私有云。这时,相当于裸奔了,原来隐藏在客户背后的...

微服务架构的理论基础

https://yq.aliyun.com/articles/8611概述关于微服务的介绍,可以参考微服务那点事。微服务是最近非常火热的新概念,大家都在追,也都觉得很对,但是似乎没有很充足的理论基础说明这是正确的,给人的感觉是 不明觉厉 。前段时间看了MikeAmundsen 《远距离条件下的康威定律——分布式世界中实现团队构建》(是DesignRESTfulAPI的作者)在InfoQ上的一个分享,觉得很有帮助,结合自己的一些思考,整理了该演讲的内容。可能出乎很多人意料之外的一个事实是,微服务很多核心理念其实在半个世纪前的一篇文章中就被阐述过了,而且这篇文章中的很多论点在软件开发飞速发展的这半个世纪中竟然一再被验证,这就是康威定律(Conway'sLaw)。在康威的这篇文章中,最有名的一句话就是:Organizationswhichdesignsystemsareconstrainedtoproducedesignswhicharecopiesofthecommunicationstructuresoftheseorganizati...

平台级 SAAS 架构的基础:统一身份管理系统

https://my.oschina.net/bochs/blog/2248954 业内在用户统一身份认证及授权管理领域,主要关注4个方面:集中账号管理(Account)、集中认证管理(Authentication)、集中授权管理(Authorization)和集中审计管理(Audit),简称4A管理。后来发展了IAM(IdentityandAccessManagement,即身份识别与访问管理)的相关技术,在云计算等领域应用广泛。整体来说,不管是4A还是IAM还是未来可能的其他技术方案,都可以归纳为『统一身份治理』的范畴。本文基于『统一身份治理』的概念提出了统一身份管理系统(UnifiedIdentityManagementSystem)的设计思路。统一身份管理系统(简称UIMS)可以认是多租户软件架构的升级版,通常是整个平台帐号和权限管控的基础性系统,平台下所有系统的账户管理、身份认证、用户授权、权限控制等行为都必须经由该系统处理,提供帐号密码管理、基本资料管理、角色权限管理等功能。UIMS基于『统一身份治理』的概念,可划分为两级账户体系、基础权限模块和基础信息模块三大模...

armadillo配置简明教程

好久没写随笔了,最近项目中需要用C做大量的矩阵运算,考虑用armadillo线性代数库来优化。关于这个库是为何物,网上有很多教程,这里不再赘言。本篇就简单讲述一下我的配置过程,我的环境是win10+64bit+vs2013。受时间限制,这里讲个粗线条,以后再慢慢完善。1.首先,下载armadillo及相关的lib。可以从这里https://pan.baidu.com/s/1lz8Mzq__cALfeeXZFAiETA提取码:ysoj2.下载并解压后,里面有四个压缩包。中间两个不用。  把第一个解压,放在一个盘的根目录下,比如我这里是 E:/armadillo3、修改E:/armadilloincludearmadillo_bitsconfig.hpp,将 #defineARMA_USE_LAPACK  #defineARMA_USE_BLAS4.解压lib压缩包,然后放在E:/armadillo/中。5.再项目属性配置中添加包含目录及库目录 6.添加附加依赖项  7.下面是一段测试程序,输出10*...

标准粒子群优化(Particle Swarm Optimization, PSO)算法

       先来唠唠什么是最优化问题,就是在满足一定的约束条件下,找到一组合适参数,使得系统的某些性能指标(最优性度量)达到最值。迭代提供了一种求解最优化问题的基本思路:给定初始点,按照某种特定规则生成点列。若是有穷点列,那最后一个点是最优点。若是无穷点列,则极值点是最优点。好的优化算法能稳定的接近局部极值点,并迅速收敛,直到满足规则时终止。       然后说说PSO的发展史:Reynolds假设每只鸟都遵循一定的行为准则,提出了Boid(Bird-oid)模型。每只人工鸟称为Boid,可以感知周围一定范围内其它Boid的飞行信息,作为决策机构的输入,再结合自身的当前状态(空间位置、飞行方向、飞行速度)作出下一步决策。个体应遵循3条规则:(1)避免碰撞;(2)速度一致;(3)中心集群。由Boid组成的系统完全自下而上地运行。Hepner和Grenander在Boid模型上,进一步加入了“鸟群受栖息地吸引”的特点。开始时,...

App 开发:Hybrid 架构下的 HTML5 应用加速方案

在移动App开发领域,主流的开发模式可分为Native、Hybrid、WebApp三种方式。然而2013年,纯WebApp开发模式的发展受到一定挫折,以Facebook为代表的独立App转投Native阵营。但是开发者对WebApp更新速度快,跨平台优势的渴望却并未减弱,最终的结果是促成了HybridApp在2013年数量的激增,并且增长的速率非常之快。 简单的说,HybridApp是NativeApp和MobileWeb二者混合开发的产物,HTML5  的页面被嵌入到NatvieApp的webview中。因此它综合了更新速度快,交互体验好,跨平台等优点。本文分享的就是HTML5页面(尤其是被嵌入的H5应用) 借助Hybrid架构来提升自己的加载速度和性能的一种解决方案。该方案要求你对HybridApp进行以下三步骤的改造:一:模块化你的H5页面/应用,引入模块加载器(可选)模块加载器不必多说,SeaJS、requireJS、kissyloader等耳熟能详,任你挑选。使用模块化的方式来开发你的应用,不仅仅将有利于后期的代码维护,在Hrbrid的...

****一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能是狭隘的。  今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的扩大、用户的需求不断完善的,下面是一个网站架构逐步发展的基本过程,读完后,请思考,你现在在哪个阶段。  架构演变第一步:物理分离WebServer和数据库  最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了。这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用...

谈谈APP架构选型:React Native还是HBuilder

原文链接导读:最近公司的一款新产品APP要进行研发,老大的意思想用H5来做混合APP以达到高效敏捷开发的目的。我自然就开始进行各种技术选型的调研,这里重点想说的是我最后挑选出的2款hybridapp开发技术方案:RN(reactnative),HBuilder。ReactNative是大名鼎鼎的Facebook的开源技术框架,而HBuilder是国内的H5工具开发公司DCLOUD的产品。我自己先总结下吧:这两个技术框架在开发效率上基本上可以媲美WEB开发的速度,RN强调的是“Learnonce,writeanywhere”,RN不强求一份原生代码支持多个平台;而HBuilder则可以实现类似JAVA的“Writeonce,runanywhere”,也就是说写一份代码,即可同时发布多平台,这个效率比原生开发而言自然会double。两者的原理其实都是基于JS在做前端开发,用JS去做桥接调用原生的API,最大的优点是方便做APP的动态更新而不用频繁去发布版本,当然hybrid的这种框架也有弱势缺点,就是目前原生APP的开发生态已经趋向成熟,一些...

构建iOS稳定应用架构时方案选择的思考,主要涉及工程结构,数据流思想和代码规范

我打算采用Informationflow的方式自上而下,两大层分为基础层和展现层的结构。基础层分为多层,展现层也可分为多层。主要思想是将基础层的最下一层当做零部件,将业务层最下层当做组装大部件,通过流程串起来形成一个完整的产品,做零件时按照做出一个就扔进对应基础层的篮子里思路来,目录结构也可以按照这种来进行。这两大层的最下层按照零件拆得越小越容易应对需求变化越容易保护巩固上层的思路来就好。拿微信这个大家都熟悉的产品的几个功能来简单示例说明下这个思路构建后的结构,模块比较多,一些模块就不深入到最底层分析了:基础层-网络--收发数据---单例(持续使用数据)---本地(缓存和持续化存储数据对业务的封装输出)---单次使用(API接口Model封装输出和业务逻辑封装的ViewModel,将这些做为业务零件)-存储---NSUserDefault(对轻量需要存储的添加下一层业务零件封装)---keychain(对安全级别较高需要存储的添加下一层业务零件封装)---文件存储(对时效需求短的需要存储的添加下一层业务零件封装)---数据库存储(对数据量大的需要存储的添加下一层业务零件封装,业务层上一...

pycharm跨目录调用文件

笔者今天在一个测试qq群中遇到解决跨目录中调用文件的问题。现在来总结一下。以下图目录为例: 1、同目录下直接调用掉用。test2.py和test3.py在同一个目录test2下。  所以在test3.py调用test2.py可以直接调用的  importtest2即可使用test2中所有的方法 2、跨目录调用,需要增加调用文件的目录。以test3.py中调用test1.py为例  在test3.py中增加test1.py所在目录下的路径。可以是相对路径也可以是绝对路径。  步骤:导入sys模块,然在在sys的path下添加路径,再导入test.py  test1.py内容如下:  deffunc():print('test1')  test3.py内容如下: importsyssys.path.append("..")fromtest1importtest1test1.func()print("test3")结果如下: 3、根据上边的做法是可以成功调用到的。但是在pycharm中会在fromtest1importtest1中的两个导入名称下方出现红色波浪线...

Pycharm 快捷键

Ctrl+/注释(取消注释)选择的行Shift+Enter开始新行Ctrl+Enter智能换行TABShift+TAB缩进/取消缩进所选择的行Ctrl+Alt+I自动缩进行Ctrl+Y删除当前插入符所在的行Ctrl+D复制当前行、或者选择的块Ctrl+Shift+J合并行Ctrl+Shift+V从最近的缓存区里粘贴Ctrl+Delete删除到字符结尾Ctrl+Backspace删除到字符的开始Ctrl+NumPad+/-展开或者收缩代码块Ctrl+Shift+NumPad+展开所有的代码块Ctrl+Shift+NumPad-收缩所有的代码块  ...
IT猿 IT猿·2023-05-06

人工智能深度学习Caffe框架介绍,优秀的深度学习架构

人工智能深度学习Caffe框架介绍,优秀的深度学习架构在深度学习领域,Caffe框架是人们无法绕过的一座山。这不仅是因为它无论在结构、性能上,还是在代码质量上,都称得上一款十分出色的开源框架。更重要的是,它将深度学习的每一个细节都原原本本地展现出来,大大降低了人们学习研究和开发的难度。一、从Caffe的开发中了解到的用户需求:深度学习的框架总会不断改变,Caffe也会有被新框架代替的一天。但是在开发Caffe的过程中,贾扬清发现大家喜欢的框架其实有着很多相似的地方,这些闪光点拥有很长的生命周期,发现并掌握人们这些共同偏好将为以后开发新的框架积累经验。Caffe之所以广受欢迎可能是因为有以下的四个特点:  1、稳定的模型架构  Caffe通过Protobuf来定义一个网络的结构,而这个由Google开源的库具有优秀的版本兼容性。随着Caffe的框架源码的不断更新迭代,之前定义的网络结构依然能兼容解析,模型仍然能正确加载运行。  2、较好的设备抽象  合理的设备抽象能够精简代码,提高框架适用性。在这方面Caffe做了比较好的尝试,模型的训练和使用与不同的平台耦合比较低,只要平台能解析网络结...
首页上一页...6465666768下一页尾页