软件构造学习笔记——并发

本文介绍了并发编程,指出其意味着多个运算同时发生,在现代编程中十分关键。阐述了共享内存和传递信息两种常见并发模型,还讲解了进程和线程的概念及区别。最后介绍了Java中的并发,包括Java提供的并发库,以及创建线程的方法。

并发编程

什么是并发编程

并发意味着多个运算同时发生:在现代编程中并发到处都是:

  • 网络上的多个计算机
  • 在一个计算机上运行的多个程序
  • 一个计算机上的多个进程

并发在现代编程中十分关键:

  • 网站必须解决多个同时的用户

  • 移动app需要在服务器上处理他们的进程(云处理)

  • 图形用户界面几乎总是需要不会中断用户的后台工作。


为什么并发?

  • 处理器始终速度不断增加

  • 新一代的芯片都会由很多内核

  • 为了让计算更快运行


两种常见的并发模型

共享内存消息传递

共享内存

  • 共享内存:在共享内存的并发模式中,并发模式通过在内存中的共享对象完成读写交互:
    在这里插入图片描述

共享内存模型的例子

-A和B 可能是在同一个计算机的两个进程,共享着相同的物理内存

A和B 可能是在一个计算机上运行的两个程序,共享着它们可以读写的相同的文件系统。

A和B可能在一个Java程序中的两个线程,共享这相同的Java对象

传递信息

  • 传递信息:在纤细传递模型中并发模型通过在信息通道相互传递信息交互。模型向每个模型发出信号,和每个模块的传入消息列队等待处理
    在这里插入图片描述

传递信息的例子:

A和B 可能是网络中的两台计算机,通过网络连接通信;

A和B 可能是一个网络浏览器和一个网络服务器,A 向B 发起一个连接,并且向B请求一个网页,并且B 送回网页数据给A

A和B 可能是一个即时消息的客户端和服务器


进程、线程、时间分片

进程和线程

传递信息和共享内存模型是有关于并发模型如何通信的

并发模型本身可以被分为两个不同的类型:

进程和线程,两种执行(execution)基本单元

一个进程是运行程序的一个实例,拥有自己私有的专用的内存空间

线程是正在运行该程序的一个执行路径(一个进程对应多个线程),线程由自己的堆栈和局部变量,但是多个线程共享内存空间

进程

进程抽象是一个虚拟计算机,拥有独立的执行环境和完整的资源

它让程序感到好像在独占整个机器,想是一个拥有全新内存的,全新的计算机被创造为了运行那个程序

就像网络连接的电脑,进程通常不共享内存。

一个进程不能访问其他进程的内存或者对象

进程间的共享内存在绝大多数操作系统上都是可能的,但是它需要特殊的机制

相反的,一个新进程自动地准备好传递信息,因为他是被标准I&O流(standard input & output streams)创建的.(在Java中的System.out 和 System.in)

进程经常都会被看作和程序或者应用(app)同义。但是,应用程序实际上可能是一组协作进程。为了实现进程间的通信,绝大多数操作系统支持进程间通信(IPC,Inter Process Communication)资源,例如pipe和socket(IPC不仅仅是适用于同一个系统上的进程间通信,同时也适用于不同系统上的进程)


进程

就像一个进程代表着一个虚拟计算机,进程可抽象为一个虚拟处理器,线程有时也被称为轻量级进程。

创建一个新线程模拟创建在进程所代表的虚拟计算机中的一个全新的处理器

这个新的虚拟处理器和其他在进程中的线程,运行相同的程序,并且共享相同的资源(内存,打开的文件,等等)

线程是自动准备共享内存的,因为线程在进程之中共享内存。

它致力于获取进程私有的局部线程内存(”thread-local” memory)。

通过创建和使用队列数据结构来显式创建信息传递也是关键的

线程需要特殊处理才能实现消息传递和访问私有内存。


线程是轻量级的进程是重量级的
线程共享内存空间进程有自己的地址
线程需要同步进程不需要
关掉线程不安全关掉进程是安全的

在JAVA中的并发

在java中,线程是生活的现实,例如GC(garbage collector)在它所有的线程中运行

为了利用多多核处理器,必须编写多线程代码

好消息是:Java提供了并发编程的库函数(java.util.concurrent)

坏消息是:你得理解基本概念

多线程执行是JAVA程式语言平台的一个重要特征

每个程序至少有一个线程

从程序员的角度来看,main线程是开始线程,可以同过它创建其他的线程

创建一个线程的两种方法:1.创建thread类的子类。2.实现runnable接口,作为参数传递给new Thread构造函数

所有的线程都需要实现runnable接口,并实现run()方法

Runnable接口表示着一个线程要去做的任务

public
interface Runnable { 
void run(); 
}
基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理流程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值