`
wangdong9451
  • 浏览: 9131 次
  • 来自: 北京
社区版块
存档分类
最新评论

苦逼程序员HLL的架构师逆袭

 
阅读更多

        是实话作为一名刚入行没多久的程序猿来说,提架构师未免有些太早了,有的人甚至认为一名架构师怎么不得在软件行业摸爬滚打10余载才能熬出来,的确是这样,一名优秀的架构师确实要从项目的开发经验中,汲取养分,不过俗话说的话“不能输在起跑线上”,同时也要“站在巨人的肩膀上”,也就是说从现在开始,有着架构师梦想的骚年们,现在就应该向着这个方向去努力,不过也不用过分的紧张,通往架构师的道路也不无捷径,因为在我们生活的这个年代有好多的巨人,他们为我们撑起了一片天空,今天我就说说我参加架构师培训课的心得。

        首先第一点,提到架构师,我们不得不想起这样两个名人,苹果的前任CEO乔布斯和现任CEO库克,但是这两个人有一个明显的区别,不知道大家有木有发现,乔布斯对技术和业务都非常了解,但是库克不懂得技术,这就导致了一个致命的弱点那就是库克由于对技术不了解,所以很难把握未来的发展方向,所以作为一名合格的架构师,一定要对技术有着深刻的理解,这样才能更好地去把握未来业务的房展方向。通过这个例子,想必大家对架构师更感兴趣了吧。下面我们就一起探索架构师是如何炼成的?

        想成为一名架构师,大家首先要对架构师的职责有一定的了解,首先软件架构师最基本的职责就是通过对需求分析的理解来进行软件的规划与设计(这里要求熟练的运用各种工具,如画UML图的工具),这一点是最重要的,其次自己架构完毕后要指导开发人员进行下一步的开发,在关键的时刻可以写一些demo,不仅能够知道开发人员,而且还能够验证自己的架构师合理的,通顺的,最后如果在项目开发过程中遇到疑难杂症,也要作为咨询师的角色存在,一名合格的架构师也需要在关键的时刻做出决策,如在性能与安全不能兼得的时候,或者遇到公司内部不能解决的问题的时候,一定要请求外援的时候做出关键性决策。

        下面我们来通过论述来慢慢总结一套通用的架构思想,首先我们先看一张图片

 


 
 这样图片是IEEE-1471-2000中的对架构元模型的图解,从图中我们不难看出一个软件架构最重要的就是要找到视点(viewpoint),从而推倒出相应的视图(view),说白了也就是定义我们思考的角度,从而形成我们树形结构的开发大纲,下面大家再看一张图片

       这就是RUP经典的4+1视图,

逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。

过程视图(Process View),捕捉设计的并发和同步特征。

物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。

开发视图(Development View),描述了在开发环境中软件的静态组织结构。

架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例 (use cases)或场景(scenarios)来说明,从而形成了第五个视图。

        大家也可以通过TOGAF所提供的企业架构指导来对架构进行更深一步的理解,企业架构大致可以分为九个方面,如下图所示

         通过对上述架构权威机构对架构的剖析,下面我给大家画出一张比较通用的架构的整体概述图,我们将架构的视点分为业务视点(也就是做什么,说白了就是用户需求分析后的结论)、技术视点(就是怎么去做,这是建立在业务视点的基础之上)、治理视点(决定了软件的能够做的更好,即软件的性能,可扩展性,高可重用性等)、支撑视点(即包括代码结构、运维、安装部署、大数据量的处理等),除了上述所说的RUP4+1视图,还有TOGAF的8+1指导,还有DODAF的22中视图,还有Zachman的36方格矩阵法都能够很好的指导企业架构,大家可以多查找一下这方面的文章,可以下载TOGAF口袋书,没事就看一下,对自己架构思想的养成有着良好的作用。

 

      今天我们就暂时到这里,下一节我们正式进入正题,分别从这四个角度来剖析一个整个架构过程。 

        

  • 大小: 47.3 KB
  • 大小: 158.3 KB
  • 大小: 125 KB
  • 大小: 33.5 KB
  • 大小: 112.7 KB
  • 大小: 251.6 KB
分享到:
评论

相关推荐

    Python库 | HLL-1.2.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:HLL-1.2.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    riemann solver.zip_HLL Riemann solver_HLLC 黎曼_HLLC黎曼解法器_fundev_r

    精确黎曼求解器; 精确黎曼求解器:hll、hllc方法;

    求解二维浅水方程的HLL Riemann求解器

    用MATLAB编写的基于有限体积法求解二维浅水方程边界数值通量的Riemann求解器(HLL格式),可处理干河床问题,适用于规则网格及不规则网格,只需提供边界左右两侧的水深和流速以及外法线矢量。

    Python库 | python_hll-0.1.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python_hll-0.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    2D_inviscid_vortex_HLL_HLLC_HLL通量格式_计算流体力学_CFD_tecplot_

    该压缩包提供的代码是针对二维无粘等熵涡问题的计算,采用了不同的通量格式,如HLL、HLLC,用于评估和比较不同格式的性能。 首先,HLL(Harten-Lax-van Leer)通量格式是一种广义的Riemann求解器,它通过构建两个...

    hive-hll:Hive UD{A,}Fs 包装 https

    add jar target / hive - hll - 0 . 1 - SNAPSHOT . jar ; create temporary function hll_add_agg as ' com.kresilas.hll.AddAggUDAF ' ; create temporary function hll_cardinality as ' ...

    hll-algorithm-sample:HLL算法和Web爬网示例

    “hll-algorithm-sample”指的是基于HyperLogLog(HLL)算法的一个样例项目。HLL是一种概率统计方法,用于估算大型集合的唯一元素数量,常用于大数据场景下的近似计数。 **描述分析:** 描述提到了“使用Wikipedia...

    java笔试题算法-go-hll:与其他语言很好地兼容的HLL的Go实现

    (HLL) 是一种固定大小的类似集合的结构,用于具有可调精度的不同值计数。 例如,在 1280 字节中,HLL 可以估计数百亿个不同值的数量,误差只有几个百分点。 除了 中提出的算法之外,该实现还得到了增强,以提高其...

    hll:用于C编程语言的HyperLogLog库

    if ( hll_init (&hll, 16 ) == - 1 ) { perror ( " hll_init " ); exit ( 1 ); } for (i = 0 ; i < 100000000 ; i++) { long r = random () 00000 ; hll_add (&hll, &r, sizeof (r)); } printf ( " ...

    带制动轮弹性柱销联轴器HLL2

    带制动轮弹性柱销联轴器HLL2 个人CAD图纸,仅供参考用;

    mysql-hll:用于 MySQL 的 HyperLogLog UDF

    INSERT INTO ` uniqueUsersPerDay ` ( ` day ` , ` hll ` )VALUES (CURDATE(), HLL_CREATE(@bits, @userId))ON DUPLICATE KEY UPDATE ` hll ` = HLL_ADD( ` hll ` , @userId);SET @userId = 2 ;INS

    Redis从入门到精通(十二)Redis实战(九)GEO查询附近商户、BitMap用户签到和统计、HLL的UV统计

    在本节中,我们将深入探讨Redis中的几个高级特性:GEO查询、BitMap用户签到与统计以及HyperLogLog(HLL)的UV(独立访客)统计。这些功能在实际应用中具有广泛用途,特别是对于地理位置服务和用户行为分析。 1. GEO...

    postgresql-hll:PostgreSQL扩展添加HyperLogLog数据结构作为本机数据类型

    此Postgres模块引入了新的数据类型hll ,它是数据结构。 HyperLogLog是一种固定大小的,类似于集合的结构,用于以可调的精度进行不同的值计数。 例如,在1280个字节中, hll可以估计数百亿个不同值的计数,而误差...

    《计算机专业英语》考试题A.pdf

    段落[3]中提到的主要挑战是协调并行机器架构、编译器和编程语言,目的是使程序员能够用高级、面向问题的语言编写程序,同时编译器将这些程序翻译成针对各种并行架构的高效目标代码。这一挑战紧迫,因为已有数千甚至...

    rcon_website:为HLL社区在Bootstrap上构建的网站开发了RCON应用程序

    标题中的“rcon_website”指的是一个专门为地狱之师(Hell Let Loose, HLL)社区构建的RCON(Remote Console)应用程序网站。RCON是一种网络协议,通常用于游戏服务器,允许管理员远程控制和管理服务器,例如执行...

    hll.rar_51外部存储

    标题中的“hll.rar_51外部存储”表明这是一个关于51单片机与外部存储交互的教程资源包。51单片机是基于8051微控制器的经典型号,广泛应用于电子工程教学和小型嵌入式系统。外部存储通常指的是扩展的EEPROM或RAM,以...

    go-hll:实施Hyper Log Log

    去 实施Hyper Log Log 安装 go get github . com / mtchavez / go - hll / hll 用法 创建新的 具有所需错误的新超级日志日志表 ... hll . Add ( "foo" ) } 新增中 在表中添加一些文字 package main import ( "github.

    HLL_Fan_Page_JP:针对日语的HLL页面

    Rails的MVC(Model-View-Controller)架构模式使得开发者能清晰地组织代码,实现数据模型、用户界面和业务逻辑的分离,从而更易于维护和扩展。 HLL_Fan_Page_JP项目运用了Rails的这一优势,构建了一个高效稳定的...

    go-hll:HyperLog登录golang

    给定精度P的HLL使用固定大小(8 + 3 * 2 ^(P-2),8字节报头+每个寄存器6位),以字节为单位。 阈值已调整。 与。 为什么 我想要一个HLL实现 简单的 相当快 (几乎)非分配 当唯一元素数量少时准确 内存映射文件...

    riak-hll:挂钩Riak中的Hyper Log Log

    在Riak中,HLL挂钩允许用户在键值对上执行HLL操作,比如将新的值添加到现有的HLL对象,或者合并多个HLL对象以获取更广泛的集合估计。这对于实时分析、数据挖掘和监控场景非常有用,因为它能够在不精确计算所有元素的...

Global site tag (gtag.js) - Google Analytics