首页 > 其他分享 >架构师备考的一些思考(二)

架构师备考的一些思考(二)

时间:2024-09-10 11:36:01浏览次数:9  
标签:java 数据库 模式 备考 思考 构件 架构师 页面

前言

以我的视野来看,部长或技术总监这种岗位还是比较难竞争的,换言之,程序员的上升空间比较窄,如果想要拿到高级岗位,最好的是工作三五年后就转项目经理,然后再往上爬。
架构师倒是也能晋升高级岗位,但就效率而言,是非常低的。就我的经验而言,架构师系的高级职位通常是技术管理一手抓,但这也代表着,责任更大,也就是锅更大。
所以架构师系的高级职是非常不稳定的,非常累,非常容易坚持不下来,尤其在你结婚生子后,就更难坚持下来。
所以,选择大于努力,如果想拼命向上走,还是尽快入坑项目管理才是上策,不想拼命或者做不到拼命的,那就无所谓选择了。
就算是同样的架构师,java系架构师也相对更好,生态好意味着java系架构师就相对学的不用那么多,也就不用那么累。
举个简单例子,java架构师可以不会安卓和鸿蒙,但net架构师必须会winform和wpf。
所以,还是那句话,选择大于努力,能入坑java还是尽早入坑java,这样你会少走几年弯路,而且如果你躺平了,能让你35岁以后能继续用技术吃饭,还吃的不错的,就只有java的生态。
当然,java系还有细分的,能选大数据就走大数据,大数据是一个工作内容异常简单,工作量异常少的一个岗位,而且大家还觉得你工作内容很神秘,会比较有尊严。
就我的个人学习flink的经验而言,学习flink的难度只有学习java的难度的30%,但你的工资可能高于java,加班也会少于java。
下面回到正题,架构师备考。

架构师备考——记忆难点

其实所谓的记忆难点,就是我们的理解和扯淡描述之间的转换比较难。

原型模式(property)

通过copy对象属性,或者clone获得新对象,就是DTO转实体的那个对象属性映射。

要能通过下面定义分析出他在描述的是原型模式。
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象。运行对象在不了解创建对象的确切类以及如何创建细节的情况下创建自定义对
象。

Builder(生成器模式)

就是java里常见的builder创建对象,或者理解为注解@Builder。
注:其他语言没有这个模式,其他语言开发,就理解为构造函数创建对象即可。

要能通过下面定义分析出他在描述的是生成器模式。
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示。

Abstract Factory(抽象工厂模式):

通过不同的接口来获取不同对象。
注:抽象工厂模式与工厂模式的区别是,工厂模式是通过入参来获取不同的对象。这两种模式在其他语言中是随手写的代码,所以没有形成概念结构,这里要学会区分。

要能通过下面定义分析出他在描述的是抽象工厂模式。
提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。

仓库风格架构

  • 集中存储:就是说数据都在一个数据库里。
  • 数据驱动:就是说数据一更新,查询该数据就马上得到最新数据,因为都在一个库。
  • 数据处理方式:就是存储到数据库
  • 扩展性:可以增加插件扩展功能。

管道过滤器风格

  • 这个主要是考察servlet的机制,所有的题型往servlet里靠即可。其他语言开发就把他像成一堆filter即可。这个一般情况是架构中的一个小环节,纯用管道过滤器做出来的组件还是很少见的。
  • 特点:数据流动,功能单一,组合灵活。
  • 扩展性:可以灵活增加filter。

数据驱动机制

数据驱动机制就是数据驱动的方法,有几种:数据库驱动应用,配置文件驱动应用,脚本语言驱动应用。这个有点IOC的感觉,控制翻转,反向以数据为中心驱动应用的表现。

页面变换表

这个是必背的,一定会有1 ~ 2空,即这1 ~ 2分是必拿的。
虚拟内存:虚拟内存就是物理内存和部分硬盘(辅助存储)组合起来,供cpu调用的。
虚拟页面:在虚拟内存系统中,程序所使用内存,被细分成多个内存块,这些内存块就叫虚拟页面。
页帧/物理块:就是虚拟内存对应的物理内存和硬盘的地址。
页面变换表:就是用于记录虚拟内存中的页帧/物理块之间的对应关系。

存在位(Present Bit):表示该页面是否当前在物理内存中。如果存在位为 1,表示该页面在物理内存中;如果为 0,表示该页面不在物理内存中,需要从辅助存储中调入。
访问位(Access Bit):记录该页面是否被访问过。操作系统可以根据访问位来决定哪些页面是最近使用过的,以便在需要换出页面时进行选择。
修改位(Modified Bit):表示该页面是否被修改过。如果修改位为 1,表示该页面在被调入物理内存后被修改过,在换出时需要写回辅助存储;如果为 0,表示该页面未被修改过,可以直接丢弃。
保护位(Protection Bit):用于指定该页面的访问权限,如只读、读写、可执行等。

页号 物理块号/页帧号 状态位 访问位
0 1 1 0
1 - 0 0
2 3 1 1
3 8 1 1

逻辑地址16位:3148H,第一位5表示虚拟页面地址,页内地址是148H,查表,3对应的页帧是8,所以转换物理地址为8148H。
如果访问1页,因为1页状态位0,所以是没有在内存的,所以要淘汰一个在内存的页,为这次访问提供位置,那么淘汰0页,因为0页在内存,且近期未被访问。

质量属性

质量属性的含义如下:
性能(响应时间),可用性(宕机恢复),可修改性(修改时间短),易用性,可靠性(容错、健壮性),安全性(验证逻辑,阻止非授权用户)

  • 提高性能——资源调度(就是负载均衡)
  • 提高可用性——心跳(考试里的可用性是专指——服务查询(nacos)的心跳体系,通过心跳上线下线服务)
  • 提高可修改性——信息隐藏(这个比较难记难理解,我猜测是他们认为一个表单修改的内容减少了,就提高了可修改性,这个要特殊背一下,有点反逻辑)
  • 易用性——这个就是用户使用难易度。
  • 可靠性——容错、健壮性。在意外或错误使用的情况下维持软件系统的功能特性的能力。
  • 提高安全性——追踪审计,就是记录日志和溯源。
    安全性在考试里应该是特指java的Security和Auth2,他这套逻辑还是挺难理解的,尤其是结合了java的控制反转的结构。(java现在搞的组件设计都是控制反转,而其他语言都是正向开发)
    非java系开发可以参考下面文章理解。
    其实,如果是我们正常的、手工搭框架,我认为即便是java架构师也会把Security和Auth2踢出局,因为他这个模式有问题,不过,考试里很多题都会参考这个出,非java系开发,这块就只能蒙了,确实不好理解。
    SpringBoot的Security和OAuth2的使用

构件类别

这个构件体系,就是spring的体系,因为整体是IOC,所以,就一个一个的构件往里注入。
由于我们大部分开发都是做应用开发的,而这种构件模式,虽然有,但相对还是比较少见的,非java开发可能工作20年也没这么开发过软件的可能性是很高的。
非java开发可以把这个构件模式想象为docker。java开发就比较幸福了,下面的定义一看,马上就可以联想到spring的各种组件了。

  • (1)独立而成熟的构件。独立而成熟的构件得到了实际运行环境的多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。
  • (2)有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象程序设计语言中的基础类库等。
  • (3)适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如 ActiveX等。
  • (4)装配的构件。装配(assemble)的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(gluecode)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。
  • (5)可修改的构件。可修改的构件可以进行版本替换。如果对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。

中间件

这里考的中间件是特指kafka和redis和nacos,其他语言就用rabbitMQ和redis和consul思考即可。
连接与通信:考试中认为,中间件是客户端与服务器的连接与通信(连接与通信是中间件的一个属性,在考试里认为它是主要属性,我个人感觉这么定义是有点怪,但还是能给与一定理解)
交易管理机制保证交易一致性:这个应该指的是用redis构件的分布式锁。
负载均衡和高可用:这个指的是nacos,一个内部组件Load Balance(低版本的是Robbin)实现负载均衡,一个是心跳实现高可用。

关系模式 R(U,F)

这个主要是要记一些名词。
在 “R(U,F)” 中:
“R” 表示一个关系模式(Relation Schema)。
“U” 是属性集(Attributes Set),即关系模式中所有属性的集合。例如,一个学生关系模式可能有属性集 U = {学号,姓名,年龄,班级号} 等。
“F” 是函数依赖集(Set of Functional Dependencies),用于描述属性之间的约束关系。例如,F 中可能包含函数依赖 {学号}→{姓名}、{班级号}→{辅导员} 等。

  • 如给出关系R(U,F),U={A,B,C,D,E,F={A→BC,B→D,D→E}。
    则有【依赖传递】,A→B,B→D,D→E。
    根据依赖传递,可得新依赖关系,A→D,A→E
  • 如,U1={A,B,C)、U2={B,D,E},则分解p()。
    这个问题是问拆表,把U表拆成俩表,然后字段是U1={A,B,C)、U2={B,D,E},这个拆表,比较好理解,我们经常拆,题中的拆法,是正确的拆法,所以什么也不影响,所以【无损连接并保持函数依赖】。
    无损连接就是没丢字段。

数据库分布式模式

这个数据库模式是针对java系的mysql数据库设计的,在java项目中,有时候会使用现有的开源项目,这些项目大多数是微服务模式的。
然后这些开源项目,通常会把表拆到8到20个数据库中,因为一开始起步时表和库就过多,所以之后,随着开发,表和库的混乱就是指数倍的增加,库表越多操作就越复杂,所以一些平平无奇的项目,也会有一些和淘宝京东这种大系统一样的困难要去面对。
也因此,有一些概念,本来是要到特定的环境下才需要学习的,但在java系统,就变成了常用概念。

  • 全局外模式:
    兽语:是对分布式数据库的最高层的抽象。
    人言:全局外模式是一个图。就是是把分布式数据库看成集中数据库,集中数据库就是一个数据库。然后用一个图描述数据库结构。
  • 全局概念模式:
    兽语:是分布式数据库的整体抽象,包含了系统中全部数据的特性和逻辑结构描述分布数据库全局数据的逻辑结构,是分布式数据库的全局概念视图。
    人言:全局概念模式是一个图,分布式数据库的整体、详细的逻辑关系图。
  • 分片模式:
    兽语:描述全局数据逻辑划分的视图,是全局数据的逻辑结构根据条件的划分;每一个逻辑划分就是一个片段或称为分片。
    人言:不是图,他是拆分数据库,就是横向,纵向拆分,比如按字段拆,按日期拆。
  • 分配模式(分布模式):
    兽语:描述局部逻辑的局部物理结构是划分后的片段(或分片)的物理分配视图;是全局概念层的内容。
    人言:是一个图,就是记录上面的数据分片的逻辑关系图。
  • 局部概念层:
    兽语:由局部概念模式描述,是全局概念模式的子集;全局概念模式经逻辑划分后被分配在各局部场地上。
    人言:局部概念层是个图,分布式数据库会有多个库,这个局部概念图就是节点库的逻辑描述图。

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!



若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/18404588

标签:java,数据库,模式,备考,思考,构件,架构师,页面
From: https://www.cnblogs.com/kiba/p/18404588

相关文章

  • 对于linux文件权限的思考
    ​ 一个文件或目录可以从权限和其所属讲起。1.从用户的创建开始​ 一个用户从创建开始就有了所属用户组,这是因为每个用户必须属于一个主组,通常在用户创建时系统会默认为其创建一个同名的主组(后续可由超级用户(root)通过修改用户的账户设置来更改主组)。​ 那么由该用户创建的文......
  • 网络安全证书备考--信息收集
    信息收集一、域名信息收集1.1、域名介绍域名【DomainName】一串用点分隔的名字组成的internet上某一台计算机/计算机组的名称,在数据传输时标识计算机电子方位。如:www.baidu.com、www.51cto.com等关于edu.51cto.com以及www.51cto.com是该域名下对应的子域名,前面的[edu]、[www]都是......
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践
    本章知识考点:        第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆......
  • golang中关于死锁的思考与学习
    1、Golang中死锁的触发条件1.1书上关于死锁的四个必要条件的讲解发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各种方法之前,我们首先深入讨论一下死锁特点。必要条件:如果在一个系统中以下四个条件同时成立,那么就能引起死......
  • 【编程底层思考】理解控制反转Inverse of Control,IOC 和 依赖注入Dependency Injecti
    RodJohnson是第一个高度重视以配置文件来管理Java实例的协作关系的人,他给这种方式起了一个名字:控制反转(InverseofControl,IOC)。后来MartineFowler为这种方式起了另一个名称:依赖注入(DependencyInjection),因此不管是依赖注入,还是控制反转,其含义完全相同。当某个Java对象(......
  • 多媒体应用设计师备考考点讲解(二):多媒体系统架构设计
    多媒体应用设计师备考考点讲解(二):多媒体系统架构设计在多媒体应用设计中,系统架构是核心内容之一。一个合理的多媒体系统架构能够保证数据的高效处理与传输,同时为开发提供灵活的扩展性与维护性。本篇文章将详细讲解多媒体系统架构的设计原理,涉及多媒体数据流、系统分层结构、客户端/......
  • 多媒体应用设计师备考考点讲解(一):多媒体技术基础
    多媒体应用设计师备考考点讲解(一):多媒体技术基础在准备多媒体应用设计师的软考时,理解多媒体技术基础是非常关键的。这篇文章将详细讲解多媒体技术的基本概念和原理,包括多媒体的定义、常见的多媒体元素、数据表示方式、压缩技术以及应用场景。文章还将结合实际的代码示例,帮助读者理解......
  • PMP项目管理怎么备考
    PMP备考资料免费领取PMP(项目管理专业人士)认证考试是由美国项目管理协会(PMI)提供的,它是对项目管理知识、技能和工具的全面测试。备考PMP考试需要系统的准备和策略,以下是一些建议帮助您备考:1.了解考试大纲和结构考试内容:PMP考试基于PMI发布的《项目管理知识体系指南》(PMBOK®指南)。题......
  • 是时候重新思考你的Google广告策略了吗?
    以产品为中心、仅以关键词为焦点的广告活动是谷歌广告中常见的一种活动类型。如果你销售复古女式T恤,你可能会设置基于“复古女式T恤”关键词的独立关键词广告活动。对于许多B2C零售商来说,这种方法效果不错。但是,对于其他一些商家来说,基于产品和关键词的广告活动并不一定是最......
  • 高中数学题的一些背景思考 1 —— 裴蜀定理
    1裴蜀定理「\(\in\)数论」题目设集合\(M=\left\{7m+5n\left|m,n\in\Z\right.\right\},N=\left\{3m-2n\left|m,n\in\Z\right.\right\}\)。试判断集合\(M,N\)的关系。从gcd和Euclid说起比方说我要求\(\gcd(a,b)\),不妨\(a>b\)。令\(r_0=b\),\[\begin{align......