温故知新 | 学习笔记

简介: 快速学习温故知新

开发者学堂课程【Scala 核心编程 - 进阶温故知新学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9118


温故知新


内容介绍:

一、项目开发的大致流程

二、程序框架图

三、并发编程模型 Akka

四、Actor 模型开发流程

五、Akka 网络编程基础


一、项目开发的大致流程

image.png

作为一个项目,前期会有可行性分析(拉项目,找产品需求),市场部或销售部拿到单子或者产品并且做了报告之后,要进行需求分析。由需求分析师负责,某些大单子,需求分析师一般会去甲方公司“坐班“,因为对接的是老板或者负责人,甲方老板或者负责人时间不空闲,并且有时想要看甲方的工作流程,所以需求分析师往往要到甲方公司上班,需求分析师出需求分析报告(要完成什么功能),然后进入设计阶段,通常是项目经理或者架构师完成该工作,涉及到很多事情,比如,用什么技术,用什么架构等等。

一般来说,项目经理擅长什么技术往往就会选用什么技术,建议到公司跟着该公司最核心的项目走,设计完成后将设计文档交给程序员,在这里可能会遇到一些问题,参加工作后,有可能你参加的项目已经开始运作,作为一个程序员,加入时进入实行阶段,这时你前期是不知道的,所以一般来说,项目小组长或者项目经理会将文档交给你看,在前一周或者两周都不会让你参加写代码。

看完文档后才开始让你慢慢写代码,甚至一些好一点的公司会有一个需求反讲的工作,如果你看懂了文档,小组长或者项目经理会单独找一个小房间让你表达你对需求的理解。

然后才让你去做代码。在写代码的过程中,项目经理往往会指定一个测试人员,你将与他对接,测试人员会专门测试你的模块。

测试人员一旦发现问题可能会以邮件或者有专门的 Bug 提交系统告诉你代码的 bug 。这时你将每天调试好 bug ,否则有很多 bug 没有被调货,你有可能不能通过试用期,项目经理会认为你态度有问题或者能力不够。

如果你与测试人员在邮件交流不顺畅,也可以通过开会来解决。每到一个月或者一个大的里程碑时,一般来说,项目中要组织人员开会,大家可能要汇总进行集成测试。

一般来说,一个正规的公司,你只负责你的模块,将自己的模块做完之后,会写一个 demo 来测试。

测试完成后将代码提交到版本控制,然后项目经理进行测试,测试没有问题后进入实施阶段。实施阶段一般来说与程序员无关,该代码通过内测。一般大公司在实施阶段会部署到甲方的内网。实施阶段完成后进入维护阶段,如果有问题会打电话给项目经理。


二、程序框架图

在自己写代码、写模块时,可以写一个自己模块的程序结构图,程序结构图利于我们分析,也利于自己与其他程序员交流,参加工作以后,有很多东西不知道,有很多技术难题,你是想要别人给你帮助的,问问题不能太频繁也不能什么都不问。

如果有一个有技术有检验的程序员,你想要跟他学习,你可以将自己画的程序结构图与他一起交流,让自己成长更快。不懂就问,要善于交流。


三、并发编程模型  Akka

学 akka 最主要的目的是为 Scala 打基础

1.基础内容

1)Akka 是 JAVA 虚拟机 JVM 平台上构建高并发、分布式和容错应用的工具包和运行时,你可以理解成 Akka 是编写并发程序的框架。谈到构架,说明已经将整体结构做好了,我们要做的是按照其规范去进行开发,提供框架的好处,高效并且性能得到保障。

2) Akka 用  Scala 语言写成,同时提供了 Scala 和 JAVA 的开发接口。

3)Akka 主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程锁和资源竞争等细节。

2. Actor模型用于解决什么问题

1)处理并发问题关键是要保证共享数据的一致性和正确性,因为程序是多线程时,多个线程对同一个数据进行修改,若不加同步条件,势必会造成数据污染。

但是当我们对关键代码加入同步条件synchronized后,实际上木并发就会阻塞在这段代码,对程序效率有很大影响。

2)若是用单线程处理,不会有数据一致性的问题,但是系统的性能又不能保证。

3)Actor模型的出现解决了这个问题,简化并发编程,提升程序性能。你可以理解:Actor模型是一种处理并发问题的解决方案,很厉害!

3.Actor 模型整体的机制示意图

image.png


四、Actor 模型开发流程

Actor 模型中有一个 System ,简单回顾一下其开发流程

Actor 是公布在 ActorSystem 的体系之下,在该体系之下有很多 Actor 

image.png

1.说明

Actor ActorRef 是一个指向关系,Actor 发信息时是将信息通过 ActorRef 发送给 Dispatcher Message(消息分发器),运行时是 mes 程序的,Dispatcher Message runnable runnable 接管了所有 actor ,在 Dispatcher Message 中可以找到一个集合,可以认为里面有一个 Hashmap Hashmap 可以找到这个 actor同一个体系下面  actor 不能有相同的名字,将信息发给另一个Actor 对应的 MailBox。

如果该邮箱有很多 message,会进行排队,然后将信息推给这个 Actor。

Actor 中有一个 receive 方法,会被MailBox 调用(该 Actor 与 MailBox 是关联关系),于是最后可以得到消息。

2.步骤

1先创建Actorsystem

2通过Actorysytem创建对应的Actor /ActorRef

3通过ActorRef!消息〔这里表示将消息发送ActorRef对应的Actor的MailBox]

4先将消息发送给Dispatcher Message

5由DispatcherMessage将消息转发对应的Actor的MailBox

6当Actor的MailBox 收到消息后,就会调用Actor的receive方法,把消息推送给Actor

7如果希望回复消息通过sender() ! "消息"

后面我们做所有 actor 开发的时候,这个机制都是不变的,无论远程和本地。


五、Akka 网络编程基础

后面讲了 Akka 网络编程基础,下图需要注意

image.png

一个客户端A他们之间相互通讯,假设这个服务器监听的是80端口,又有一个客户端B,个80端口是可以被多个程序连接的,因为这不是监听而是连接,这就叫并发。

另外,一旦连接形成,客户端也会有端口与之对应,该端口一般是随机分配的。

整个机制的底层在进行通讯的时候,不依赖于操作系统,因为有 tcp/ip 协议,与操作系统无关。

相关文章
|
机器学习/深度学习 人工智能 算法
机器学习是什么?
机器学习是什么?
742 4
|
5月前
|
人工智能 自然语言处理 算法
数字化转型三阶段:信息化、数字化、数智化,到底有啥区别?
本文深入解析企业数字化转型的三个关键阶段:信息化、数字化与数智化。信息化是将业务流程搬进系统,实现流程规范化;数字化则是打通数据孤岛,实现数据流通与分析;数智化在此基础上引入智能算法,让系统具备自动决策能力。文章强调转型需循序渐进,不能跳步,信息化是基础,数字化是关键,数智化是目标。通过实际案例解析各阶段特征与实施路径,帮助企业明确自身所处阶段并制定合理转型策略。
|
9月前
|
存储 数据库连接 开发者
《鸿蒙原生应用开发:掌控Ability生命周期的艺术》
在鸿蒙原生应用开发中,Ability作为核心组件,其生命周期管理至关重要。从创建、启动到销毁,每个阶段的回调函数(如onCreate、onStart、onActive等)都为开发者提供了优化性能和用户体验的机会。合理加载与释放资源、保存与恢复状态、管理多线程及应对设备配置变化,是高效管理生命周期的关键策略。通过案例实践,如图片浏览应用,展示了细致管理Ability生命周期如何确保应用在复杂场景下的稳定运行,为用户带来流畅体验。掌握这些技巧,是开发者在鸿蒙生态中打造优质应用的必备技能。
344 1
|
存储 人工智能 大数据
直播预告|FFA 2024 上海主论坛,11月29日正式上线!
Flink Forward Asia 2024 将于11月29日至30日在上海举行,作为Apache Flink社区的重要活动,本次大会将聚焦Flink十年技术演进与未来规划,涵盖Flink 2.0新特性、Paimon数据湖格式、Fluss实时分析存储解决方案等内容,并设有圆桌讨论,探讨AI时代下大数据技术的发展方向。欢迎预约直播,参与互动赢取好礼。
523 68
直播预告|FFA 2024 上海主论坛,11月29日正式上线!
|
存储 人工智能 算法
《C++与AI共舞:模型压缩率与预测准确率的平衡之路》
在AI领域,C++凭借其高效性能成为构建智能应用的重要工具。本文探讨了模型压缩与预测准确率之间的平衡问题,从模型架构、数据特性和压缩算法选择等方面提出了解决方案,并强调了动态调整和持续优化的重要性,旨在帮助开发者在资源受限环境下实现高性能、高精度的AI应用。
298 68
|
9月前
|
5G 网络架构 UED
网速只拼Mbps?解码网速真相的五大关键因素
Mbps(兆比特每秒)是衡量数据传输速度的单位,表示每秒传输的百万比特数。它是评估网络性能的核心指标,广泛应用于家用宽带、移动网络和企业级网络中。Mbps 数值越高,理论上数据传输越快,但实际体验还受网络拥塞、丢包率和信号强度等因素影响。例如,在网络高峰时段或信号较弱的地方,即使Mbps数值高,也可能出现卡顿。5G和光纤技术显著提升了Mbps速率,但仍需考虑硬件设备如路由器和网卡的性能瓶颈。理解Mbps及其影响因素,有助于用户选择合适的网络服务并优化网络体验。
1001 1
|
10月前
|
SQL 数据可视化 数据挖掘
2025年热门报表工具大盘点!助力企业快速建立数据管理中心!
2025年热门报表工具大盘点!助力企业快速建立数据管理中心!
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
|
机器学习/深度学习 人工智能 算法
AI技术在医疗领域的深度应用与未来展望####
本文深入探讨了人工智能(AI)技术在医疗领域的多维度应用,从疾病早期诊断、个性化治疗方案制定到复杂手术辅助,展现了AI如何重塑医疗服务的面貌。通过分析真实案例与最新研究成果,本文揭示了AI技术提升医疗效率、精准度及患者体验的潜力,同时审视了当前面临的挑战与伦理考量,为未来医疗技术的发展提供了前瞻性的思考框架。 ####
|
JSON 搜索推荐 API
LAZADA关键词搜索API接口的获取与应用
Lazada作为东南亚领先的电商平台,为满足开发者和商户需求,开放了关键词搜索API接口。本文详细介绍该接口的获取与应用,助力提升电商业务效率。接口支持关键词搜索、指定搜索范围和排序方式,提供精准、灵活且全面的数据支持,促进电商应用和服务的优化与创新。
177 3