温故知新 | 学习笔记

简介: 快速学习温故知新

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

相关文章
|
存储 算法 安全
2023年Java核心技术面试第五篇(篇篇万字精讲)
2023年Java核心技术面试第五篇(篇篇万字精讲)
65 0
|
2月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
29 0
|
5月前
|
设计模式 存储 算法
【软件设计师—基础精讲笔记7】第七章 面向对象技术
【软件设计师—基础精讲笔记7】第七章 面向对象技术
93 1
|
5月前
|
自然语言处理 Java 编译器
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
71 1
|
12月前
|
存储 安全 编译器
【C++】C++入门必备知识详细讲解
【C++】C++入门必备知识详细讲解
212 0
|
11月前
|
编译器 Linux C语言
C++Primer 【学习笔记】第一章 深思
main 函数在很多方面都比较特别,其中最重要的是每个 0+程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。
58 0
|
12月前
|
安全 编译器 C语言
C++入门必备知识
C++入门必备知识
52 0
|
存储 缓存 安全
2023年Java核心技术面试第四篇(篇篇万字精讲)
2023年Java核心技术面试第四篇(篇篇万字精讲)
34 0
|
存储 安全 编译器
【C++入门必备知识】
库里的名称我们无法改变,那我们可以将自己定义的名称放在命名空间里,当需要时指令访问即可。 那怎么定义命名空间呢?
83 0
|
设计模式 Cloud Native 算法
《一本技术畅销书是如何写成的?》 | 学习笔记(二)
快速学习《一本技术畅销书是如何写成的?》
128 0
《一本技术畅销书是如何写成的?》 | 学习笔记(二)
下一篇
无影云桌面