温故知新 | 学习笔记

简介: 快速学习温故知新

开发者学堂课程【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 协议,与操作系统无关。

相关文章
|
机器学习/深度学习 人工智能 算法
机器学习是什么?
机器学习是什么?
686 4
|
Web App开发 JavaScript Android开发
iOS SFSafariViewController 获取 Cookies
iOS SFSafariViewController 获取 Cookies
347 0
|
4月前
|
人工智能 自然语言处理 算法
数字化转型三阶段:信息化、数字化、数智化,到底有啥区别?
本文深入解析企业数字化转型的三个关键阶段:信息化、数字化与数智化。信息化是将业务流程搬进系统,实现流程规范化;数字化则是打通数据孤岛,实现数据流通与分析;数智化在此基础上引入智能算法,让系统具备自动决策能力。文章强调转型需循序渐进,不能跳步,信息化是基础,数字化是关键,数智化是目标。通过实际案例解析各阶段特征与实施路径,帮助企业明确自身所处阶段并制定合理转型策略。
|
Kubernetes 负载均衡 API
Kubernetes通俗讲解
Kubernetes(K8s)是自动部署、扩展和管理容器化应用的开源平台,源自Google的Borg系统。它简化了大规模容器应用的部署和维护,支持自动部署、扩展、高可用性、服务发现与负载均衡及存储管理。K8s具有Master和Node节点架构,涵盖API Server、Scheduler等组件,其核心概念包括Pod、Service、Deployment和Namespace。使用时需安装集群、定义资源配置文件并应用配置。K8s具备可移植性、可扩展性、自动化及强大的社区支持等优势。
337 2
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
|
人工智能 安全
【新手小白】Sora如何申请?Sora使用教程(最新)
近日,OpenAI发布的Sora模型引发了广泛关注,成为行业内外热议的焦点。这一模型不仅在专业领域引起了极大兴趣,还激发了普通群众对于人工通用智能(AGI)的热情。随着Sora模型的爆红,越来越多的人开始关注一个问题:我们何时能开始使用Sora?在OpenAI的官方论坛上,关于这个问题的讨论异常激烈。有关如何使用Sora的话题阅读量已接近70,000,显示出人们对此充满期待。下面这篇文章解答了大家的这些问题。
5765 3
【新手小白】Sora如何申请?Sora使用教程(最新)
|
搜索推荐 前端开发 数据安全/隐私保护
改善用户体验方法
【10月更文挑战第9天】改善用户体验方法
1194 3
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之复杂推理与逻辑学习
基于深度学习的复杂推理与逻辑学习是当前人工智能领域中的一个前沿研究方向,旨在结合深度学习与传统逻辑推理的优势,使机器能够在处理复杂任务时具备更强的推理能力。
335 2
|
SQL 存储 NoSQL
论文解读|TuGraph Analytics 流式图计算论文入选国际顶会 SIGMOD
蚂蚁流式图计算团队本次的论文 《GeaFlow: A Graph Extended and Accelerated Dataflow System》 被 SIGMOD 2023 收录,代表蚂蚁流式图计算团队的成果不仅在工业界有界广泛的应用,同时也在学术界得到进一步认可。
论文解读|TuGraph Analytics 流式图计算论文入选国际顶会 SIGMOD
|
存储 编解码 算法
栅格数据矢量化(附有完整代码)
栅格数据矢量化(附有完整代码)