精华内容
下载资源
问答
  • 交叉口概述
    2022-03-04 19:14:15

    一、信号概述

    1、什么是信号?

    信息:人对现实世界事物存在方式或运动状态的某种认识
    数据:用于描述事物的某种属性的具体量值
    信号:信息传递的媒介

    2、信号的分类

    信号可以分为模拟信号和数字信号。
    (1)模拟信号
    模拟信号是信号参数(幅度、频率等)大小连续变化的电磁波,可以以不同的频率在媒体上传输,是一个连续变化的物理量。

    (2)数字信号
    数字信号是不连续的物理量,信号参数也不连续变化。数字信号使用几个不连续的物理状态来代表数字。现在最常见的数字信号是振幅取值,一般只有两种(0和1)波形的信号,称为二进制信号。脉冲的出现表示1,不出现表示0。

    模拟信号和数字信号的区别
    (1)模拟信号:信号连绵不断,幅度大小不固定。
    (2)数字信号:信号是离散的,幅度大小固定不变。

    3、信号在传输过程中产生的失真

    1. 噪声
    2. 衰减

    4、数字信号的优势

    1. 抗干扰能力强
    2. 传输距离远并能保证质量

    二、双绞线

    1、双绞线

    1. 总共8根双绞线,两两绞合在一起
    2. 常用的有5类、超5类和6类

    2、双绞线分类

    (1)屏蔽双绞线

    1. 铜线外包裹一层金属网膜
    2. 用于电磁环境非常复杂的工业环境中

    (2)非屏蔽双绞线

    1. 用于电磁干扰相对较弱的环境

    3、双绞线标准与分类

    1. EIA/TIA-568 ---------“商用建筑物电信布线标准”
    2. Cat 5:主要用于100Base-T和Base-T网络
    3. Cat 5e:衰减更小,串扰更少,性能优于5类线
    4. Cat 6:传输速率可达1Gbps
    5. Cat 7:传输速率可达10Gbps

    三、光纤概述

    1、光纤的特点

    1. 传输带宽高
    2. 传输距离远
    3. 抗干扰能力强

    2、光纤分类

    (1)单模光纤
    单模光纤的纤芯很细,其直径只有几微米(有些已经达到纳米级)。同时单模光纤的光源要使用较贵的半导体激光器,而不能使用较便宜的发光二极管,因此单模光纤的光源质量的高速率下可传输数十千米甚至上百米而不必采用中继器。

    (2)多模光纤
    多模光纤的纤芯较粗,其直径一般在50~100微米,制造成本低。光源质量较差,且传输过程损耗比较大,因此传输距离较单模光纤近得多,一般在几百米到几千米。

    四、双绞线的连接规范

    **T568A:**白绿,绿,白橙,蓝,白蓝,橙,白棕,棕
    **T568B:**白橙,橙,白绿,蓝,白蓝,绿,白棕,棕
    线序1、2用于发送数据
    线序3、6用于接收数据

    标准网线(又称为直通线、平行线,straight-through)就是RJ-45两端同时采用T568A或T568B标准的解法。
    交叉网线(Crossover)则一端采用T568A标准制作,而另一端采用T568B标准制作。
    全反线(Rolled)线序一般是一头为T568B,另外一头的颜色反过来(线序12345678-876654321),主要连接电脑和交换机、路由器的Console口。

    不同设备间用直通线:路由-交换、PC-交换
    相同设备间用交叉线:PC-PC、路由-路由、交换-交换、PC-路由(PC网口与路由器网口是同类的)

    总结

    通过这次学习,我对网络布线有了基本的了解,知道如何选择网络布线的通信介质。

    更多相关内容
  • 智能网联交通,这个概念在近些年被搬上了大荧幕,并不断发酵,相关的研究层出不穷:基于智能网联汽车(Connected Vehicle,以下简称CV)的交叉口排队长度估计,信号交叉口配时方法,公交优先配时方法;智能网联共享...

    导读

    智能网联交通,这个概念在近些年被搬上了大荧幕,并不断发酵,相关的研究层出不穷:基于智能网联汽车(Connected Vehicle,以下简称CV)的交叉口排队长度估计,信号交叉口配时方法,公交优先配时方法;智能网联共享自动驾驶汽车的路径规划问题(Shared Autonomous Vehicle);也有部分学者研究在不同渗透率下,智能网联汽车对于交通流(Mixed-traffic flow)的影响。这些研究大部分假设了在理想的通讯条件下,应用CV的实时轨迹数据来对目前的交通出行模式、交通控制进行优化与改进。然而,似乎很少有研究讨论另一个层面的问题,即智能网联条件下的信息安全问题(Cyber Security)。本文由来自密歇根大学的研究团队撰写,以著名的MCity基地为依托,从智能网联条件下信号交叉口受恶意攻击的角度出发,探讨了一辆发送恶意车辆轨迹的智能网联汽车是如何从不同程度影响智能交叉口运行,甚至导致整个交叉口交通崩溃的情况。此外,研究人员还分析了基于CV的信号控制系统的漏洞,并给予了相关的改进方案。本文是一篇简要针对该文章的概述,并不涉及具体的算法部分,若有需要请联系公众号索要相关论文。

    摘要

    智能网联汽车(CV)技术,通过无线通信连接车辆和交通基础设施,将很快改变如今的交通系统。在其展现出能极大提高交通移动效率的潜力外,智能网联同时也为网络攻击开辟了新的大门。在这项工作中,我们将对新一代基于智能网联汽车的交通系统进行首次详细的安全分析。首先,我们选择了USDOT(美国交通部)赞助的基于智能网联汽车的交通控制系统,该系统已经过测试,并且在实际道路交叉口中显示出高效。在分析中,我们选择的是一个现实的威胁,即来自一辆智能网联汽车的数据欺骗,以造成交通拥堵。

    我们首先分析了该系统的设计并确定可能会影响交通控制的数据欺骗策略。基于这些策略,我们通过彻底尝试所有这些策略的数据欺骗选项来执行漏洞分析,以了解攻击有效性的上限。对于高效案例,我们分析发现当前的信号控制算法设计和实施选择极易受到来自单个攻击车辆的数据欺骗攻击的影响。这些漏洞可以被利用来彻底扭转基于智能网联汽车的信号控制系统的优点,使交通可达性比没有采用这种系统的情况还要差23.4%。然后,我们构建实际攻击并在真实世界交叉口设置下评估它们。评估结果与我们的漏洞分析是一致的,我们发现这些攻击甚至可能导致阻塞整个交叉口。在30分钟干扰期间,22%的车辆需要花费超过7分钟才能完成原来的半分钟行程,这比原来高出14倍。我们还利用我们分析的见解讨论防御的方法。

    主要贡献

    • 我们对基于智能网联的交通系统(USDOT赞助的I-SIG系统)开展了首次安全分析。我们用一个高度真实的威胁模型来模拟情景,从一个单一的攻击车辆数据欺骗出发,分析系统设计来识别一组数据欺骗策略。
    • 针对创建拥塞的目标,我们首先执行漏洞分析以了解攻击有效性的上限。我们分析受攻击程度高案例的原因,并发现当前的信号控制算法设计和配置选择极易受到来自单个攻击车辆的数据欺骗的影响。这些漏洞在系统的整个部署和过渡期间都存在,并且可能会导致交通可达性比没有使用I-SIG系统时更差。
    • 对于已识别的漏洞,我们构建实际的漏洞并在真实条件下对其进行评估。结果验证了攻击的有效性;此外,在过渡时期,攻击甚至可能造成阻塞效应,堵塞整个交叉口。

    I-SIG系统简介

    由装备的车辆广播的基本安全讯息(Basic Safety Message,简称BSM)由被称为轨迹感知的组件接收,保持BSM消息中由车辆ID索引的每辆车的最新轨迹。它还为信号配时组件中的使用的数据做了一些预处理任务,例如基于交叉图将车辆数据分配给它们所请求的相位。信号配时组件收听由信号控制器报告的交通信号状态,并逐步启动信号配时方案。更具体地说,在每个阶段开始时,信号配时组件调用交叉口中的经过预处理的车辆实时轨迹数据,选择配时方案并向信号控制器发送信号控制命令。(相关的具体算法请参考文献一)

    威胁模型介绍

    I-SIG系统的操作涉及基础设施侧设备,即路侧设备单元(Road Side Unit,以下简称RSU)和信号控制器,以及车辆侧设备,即车载单元(On-board Unit,以下简称OBU)。以前的工作发现传统的交通基础设施端设备倾向于使用较弱的认证机制,使得攻击者可以很容易地完全取得控制。这也是许多嵌入式网络设备中已知的问题,并且我们假设下一代基于智能网联汽车的交通系统将完全意识到这个问题,并采用足够强的认证机制,如之前的工作所建议的那样,以便系统不会轻易被攻击成功。

    因此,在这项工作中,我们更关注车辆设备OBU的攻击。更具体地说,我们假设攻击者可以在他们自己的车辆或其他车辆上危害车载系统或OBU,以便向RSU发送恶意BSM消息来影响信号配时。需要注意的是,我们并不认为攻击者可以欺骗BSM消息中的发件人身份。USDOT将部署SCMS系统以确保所有BSM消息都被认证。由于本文中我们更关注基于智能网联汽车的信号控制特有的新安全问题,我们假设SCMS系统已经过充分测试并且不易被利用。

    因此,在我们的威胁模型中,攻击车辆需要使用它们的真实身份,在发送BSM消息时仍然正确地签名,但是会在这些消息中发送伪造的车辆轨迹数据,例如速度和位置。这可以通过两种方式来实现:

    1. 首先,攻击者可能通过利用软件漏洞直接危害OBU,类似于其他电子控制单元(ECU)上的妥协。
    2. 其次,如果让OBU妥协难以实现,攻击者可以通过损害其他ECU,将带伪造传感器数据的伪造CAN消息发送给OBU。
    3. 由于威胁模型包括具有任意物理访问权限的恶意车主,只要车载系统不是无漏洞的,这种妥协总是可以实现的,就像今天的智能手机越狱一样。

    为了最大化我们的威胁模型的真实性,在本文中,我们假设只有一个攻击车辆出现在交叉路口。由于信号控制算法(COP算法,具体请查阅参考文献一)针对交叉口中所有车辆(通常有100多个车辆)的总延误进行优化,对于来自单个车辆的数据能够显著影响信号配时应该是非常具有挑战性的。但是,如后面所示,由于几个新发现的易受攻击的设计和配置选择,这实际上极有可能实现的。

    假设攻击者利用有限的计算能力来发起攻击,例如仅使用消费者笔记本电脑。更具体地说,当使用并行计算时,攻击笔记本电脑假定有四个处理器同时执行,这是消费类笔记本电脑(如Macbook Pro)的常用规格。在攻击交叉路口之前,攻击者被假定已经执行了足够的侦察,因此已经知道(1)信号控制算法选择,通过测试本文中确定的算法特定的漏洞,以及(2)信号控制配置和相位图,通过预先测量运行的相位,相应的信号持续时间和相位图。

    由于在CV环境中,车辆向周围路侧设备广播BSM消息,同时攻击车辆在受害者交叉口处,所以我们假设攻击车辆可以接收与RSU中的那些相同的BSM消息。因此,他们可以自己运行COP和EVLS算法来了解执行的信号计划,并估算要执行的信号计划,这也在我们的开发过程中实施。

    防御措施

    1. 强鲁棒性的过渡时期算法设计:正如我们的评估所具体显示的那样,拥堵攻击最易发生于过渡时期:总延误增加近200%,通过少于20分钟的持续攻击,它可以触发整个系统的阻塞点,造成大量交通拥堵。根据目前的I-SIG系统设计,当智能网联汽车渗透率达到95%以上时,这种问题才能在很大程度上得到缓解。因此,这是目前I-SIG系统设计中最迫切的问题:智能网联技术的市场渗透率需要从某个地方开始,因此不可避免地需要经历一个过渡期。即使所有新型轻型车辆都被要求安装OBU,这正是美国交通部门现在提出的,但道路上仍然有重型车辆和旧车。根据USDOT的估计,在开始此类任务后,可能需要25至30年的时间才能达到95%的渗透率。因此,如果这样的系统无法应对过渡期的安全挑战,那么即使在实践中开始实施大规模部署,也不够稳定。从根本上说,这是由于过渡期缺乏足够强大的信号控制算法造成的。COP算法对于基于智能网联汽车的信号控制来说是一个合适的设计选择,但它仅在完全部署后才是最优的。为了确保低渗透率时I-SIG系统仍然有效,当前的设计试图通过估计非智能网联汽车的数据来解决困境。然而,如果这种推论不健全,那么可能会因恶意目的而被大大操纵——这正是我们在本研究中发现的。由于车辆数据输入的数量远远少于整个部署期间的数据量,所以任何用于过渡期的信号控制算法本质上都对数据欺骗攻击更加敏感,从而使其在确保鲁棒性方面具有根本性的挑战性。考虑到过渡时期是不可避免的,可能会持续30年,我们认为这需要运输部和安全部门共同开展研究工作,以设计专门用于过渡期的有效和强大的信号控制算法。
    2. 路侧设备单元(RSU)的性能改进:基于到达时间的信号控制在COP算法中非常适合基于智能网联汽车的信号控制,并且当给定足够的计算能力时,这样的规划确实很难在整个部署期间被少量欺骗数据恶意地影响。不幸的是,由于当今路测设备的性能有限,I-SIG系统不得不使用COP算法的次优实现,该算法引入了最后一辆车辆的优势,允许来自单个攻击车辆的数据显着影响信号控制。因此,即使解决了过渡期的安全挑战,I-SIG系统仍然可以被数据欺骗攻击大大操纵。因此,提高当今路侧设备的性能非常重要,以便可以在信号控制中使用更优化的配置。这种改进可以在软件级别(例如代码优化)和硬件级别(例如CPU和内存升级)两者上进行。这种性能改进通常是有益的,因为更多的计算能力可以帮助更好地平衡安全和性能之间的权衡。
    3. 使用基础设施控制的传感器进行数据欺骗检测:除了提高控制算法级别的鲁棒性之外,另一个防御方向是在基础设施侧检测和过滤具有攻击性的BSM消息。由于这些消息仍然是正确签署的,所以这种防御必须依赖数据有效性检查。不幸的是,在目前的设计中,I-SIG系统只有一个关于攻击车辆的数据源——攻击者通过BSM消息控制的轨迹数据。因此,基于此的任何数据有效性检查方法都不太可能有效,因为攻击者可策略性地控制欺骗数据,以使车辆轨迹看起来完全正常。因此,为了确保高效,基础设施侧的数据欺骗检测需要依赖于攻击者无法轻易控制的数据源(例如基础设施控制的传感器)来交叉验证BSM消息中的数据。我们发现实际上现有的基础设施侧传感器已可以应用于此目的。例如,在每条车道的停车栏下面埋设的车辆探测器被用来测量实时交通条件中的汇总交通信息。即使它们在智能网联环境中用处不大,它们也可能被重新用于帮助检测数据欺骗,因为它们已经被事先安装,所以这可能是一种具有高成本效益的解决方案。如果这样的汇总数据不充分,则基础设施侧可能需要安装具有更多信息数据的传感器,例如视频检测器。这个方向面临的一个挑战是如何最好地利用不同类型的基础设施侧传感器来设计既准确又难以逃避的检测系统,这将是未来工作中的一项重点。

    总结

    在这项工作中,我们对新兴的基于智能网联汽车的信号控制系统进行了首次安全分析。针对高度真实的威胁模型,来自单一攻击车辆的数据欺骗,我们执行漏洞分析,并发现当前的信号控制算法设计和配置选择非常容易受到拥堵攻击。在真实世界设置下的评估结果验证了攻击的有效性,并表明攻击甚至可以产生堵塞整个交叉口的阻塞效应。然后利用这些见解来讨论防御方向。

    这项工作是了解下一代智能网联汽车交通系统中的新安全问题和挑战的第一步。预计将启动一系列后续研究,包括但不限于:(1)以不同交叉口大小和交通模式进行更广泛的评估;(2)考虑其他基于智能网联汽车的交通系统,算法和安全影响的更广泛分析; (3)更具体的防御系统设计和评估。

    展开全文
  • - 具有直路、交叉、弯曲光路和平面输入输出光的传输模式。 - 光路由光纤和/或光波导组成。 - 如果需要,光路的长度可控。 - 可与印制电路板结合,其功能不在本标准范围内。 - 以实现光学元件之间的互连,并能安装...
  • 交叉口 该Web应用程序是MVP,它提供了一种通过生活经验来查看人口统计数据的新方法。 它的目的是清楚地了解包容性和排除性,并让个人将自己在数据中的代表视为对性别,BIPOC或残疾的二元选择。 工作概述 工作网路...
  • AOP概述

    2021-03-27 17:29:03
    AOP概述 AOP(Aspect Orient Programming),面向切面编程。面向切面编程时从动态角度考虑程序运行过程。 AOP底层,就是采用动态代理模式实现的,采用了两种代理:JDK的动态代理,与CGLIB的动态代理。 AOP为Aspect ...

    AOP概述

    AOP(Aspect Orient Programming),面向切面编程。面向切面编程时从动态角度考虑程序运行过程。
    AOP底层,就是采用动态代理模式实现的,采用了两种代理:JDK的动态代理,与CGLIB的动态代理。

    AOP为Aspect OrientProgramming的缩写,意为:面向切面编程,可通过运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。

    面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP容器的共嗯那个将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的,与主页午逻辑无关的代码,如安全检查、事务、日志、缓存等。

    若不使用AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使主业务逻辑编程混杂不清。

    例如,转账,在真正转账业务逻辑前后,需要权限控制、日志记录、加载事务、结束事务等交叉业务逻辑,而这些业务逻辑与主业务逻辑间并无直接关系。但,它们的代码量占比重能达到总代码量的一半甚至还多。它们的存在,不仅产生了大量的“冗余”代码,还大大干扰了主业务逻辑----转账

    AOP(Aspect Orient Programming)面向切面编程

    Aspect:切面,给你的目标类增加的功能,就是切面。像上面用的日志,事务都是切面。
    Orient:面向,对着
    Programming:编程

    OOP:面向对象编程

    怎么理解面向切面编程?

    (1)需要在分析项目功能时,找出切面。
    (2)合理的安排切面的执行时间(在目标方法前,还是目标方法后)
    (3)合理的安全切面执行的位置,在哪个类,哪个方法增加增强功能

    术语:

    (1)Aspect:切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知(Advice)。实际就是对主业务逻辑的一种增强。
    (2)JoinPoint:连接点。指可以被切面织入的具体方法。通常业务接口中的方法均为连接点。
    (3)Pointcut:切入点。指声明的一个或多个连接点的集合。通过切入点指定一组方法。被标记为final的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。
    (4)目标对象:给哪个类的方法增加功能,这个类就是目标对象
    (5)Advice:通知,通知表示切面功能执行的时间

    aop的实现

    aop是一个规范,时动态的一个规范化,一个标准 aop的技术实现框架

    1.spring

    1.spring在内部实现了aop规范,能做aop的工作
    2.spring主要在事务处理时使用aop
    3.我们项目开发中很少使用spring的aop实现。因为spring的aop比较笨重

    2.aspectj:一个开源的专门做aop的框架,spring框架中集成了aspectj框架,通过spring就能使用aspectj的功能

    aspectj框架实现aop有两种方式:
    1.使用xml的配置文件:配置全局事务
    2.使用注解,我们在项目中要做aop功能,一般都使用注解,aspectj有5个注解

    aspectj框架的使用

    1.切面的执行时间,也叫切面的通知(Advice)类型

    在aspectj框架中使用注解表示的,也可以使用xml配置文件中的标签
    1)@Before :切入点前执行的代码
    2)@AfterReturning:后置通知
    3)@Around:环绕通知
    4)@AfterThrowing:抛出异常后进行异常处理的代码
    5)@After:切入点后执行的代码
    以上5个表示切面的执行时间

    2.切面的执行位置,使用的是切入点表达式

    Aspectj定义了专门的表达式用于指定切入点。表达式的原型是:
    execution(modifier-pattern? ret-type-pattern
    declaring-type-pattern?name-pattern(param-pattern)
    throw-pattern?)
    解释:
    modifier-pattern: 访问权限类型
    ret-type-pattern:返回值类型
    declaring-type-pattern?name-pattern(param-pattern):类路径+方法名(参数类型和参数个数)
    throw-pattern:抛出异常类型
    ?:表示可选的部分
    以上表达式共4个部分
    execution(访问权限 方法返回值 方法声明(参数) 异常类型)
    红色字体为必须要有的对象
    切入点表达式要匹配的对象就是目标方法的方法名。所以,execution表达式中明显就是方法的签名。注意:表达式中黑色文字表示可省略部分,各部分间用空格分开。在其中可以使用以下符号:

    符号      意义
     *    0至多个任意字符
     ..   用在方法参数中,表示任意多个参数
    		 用在包名后,表示当前包及其子包路径
     +    用在类名后,表示当前类及其字类
    		 用在接口后,表示当前接口及其实现类
    	
    

    举例:
    exection(public * (…)) :指定切入点为:任意公共方法
    exection(
    set*(…)):指定切入点为:任意一个以“set”开始的方法
    exection(* com.itcast.service..(…)):指定切入点为:包名为service下任意类的任意方法

    3.使用aspectj实现aop的基本步骤:

    1.新建maven项目
    2.加入依赖
    (1)spring依赖
    (2)asceptj依赖
    (3)junit单元测试
    3.创建目标类:接口和它的实现类。要做的是给类中的方法增加功能
    4.创建切面类:普通类
    (1)在类的上面加入@Aspect
    (2)在类中定义方法,方法就是切面要执行的功能代码
    在方法的上面加入aapectj中的通知注解,例如@Before,需要指定切点表达式execution()
    5.创建spring的配置文件:声明对象,把对象交给容器统一管理
    声明对象你可以使用注解,或xml配置文件<bean>
    (1)声明目标对象
    (2)声明切面类对象
    (3)声明aspectj框架中的自动代理生成器标签
    自动代理生成器:用来完成代理对象的自动创建功能的。
    6.创建测试类,从spring容器中获取目标对象(实际就是代理对象)。
    通过代理执行方法,实现aop的功能的增强。

    4.关于切面类的介绍

    在类的上面加入@Aspect
    @Aspect:是aspectj框架中的注解
    作用:表示当前类是切面类
    切面类:是用来给业务方法增加功能的类,在这个类中有切面的功能代码
    位置:在类定义的上面

    5.关于方法上面使用注解的介绍

    (1)@Before:前置通知注解
    属性:value,是切入点表达式,表示切面的功能执行的位置。
    位置:在方法的上面
    特点:
    1.在目标方法之前先执行
    2.不会改变目标方法的执行结果
    3.不会影响目标方法的执行

    (2)@AfterReturning:后置通知
    属性:returning,用于指定接收方法返回值的变量名
    value,是切入点表达式,表示切面的功能执行的位置。
    位置:在方法的上面
    特点:
    1.由于是目标方法之后执行,所以可以获取到目标方法的返回值
    2.该注解的returning属性就是用于指定接收方法返回值的变量名的。所以,被注解为后置通知的方法,除了可以包含JoinPoint参数外,还可以包含用于接收返回值的变量。该变量最好为Object类型,因为目标方法的返回值可能是任何类型

    (3)@Around:环绕通知
    属性:value切入点表达式
    位置:在方法的定义什么
    特点:
    1.它是功能最强的通知
    2.在目标方法的前和后都能增强功能
    3.控制目标方法是否被调用执行
    4.修改原来的目标方法的执行结果。影响最后的调用结果
    环绕通知,等同于jdk动态代理的InvocationHandler接口
    参数:ProceedingJoinPoint就等同于Method
    作用:执行目标方法的
    返回值:就是目标方法的执行结果,可以被修改

    环绕通知方法的定义格式
    1.public
    2.必须有一个返回值,推荐使用Object
    3.方法名称自定义
    4.方法有参数,固定的参数ProceedingJoinPoint

    @Aspect
    public class Aspect6 {
        /**@Around
         * 1.它是功能最强的通知
         * 2.在目标方法的前和后都能增强功能
         * 3.控制目标方法是否被调用执行
         * 4.修改原来的目标方法的执行结果。影响最后的调用结果
         *
         * 环绕通知,等同于jdk动态代理的InvocationHandler接口
         * 参数:ProceedingJoinPoint:等同于Method
         *      作用:执行目标方法的
         * 返回值:就是目标方法的执行结果,可以被修改。
         *
         * 环绕通知:经常做事务,在目标方法之前开启事务,执行目标方法,在目标方法之后提交事务
         * @param point
         * @return
         * @throws Throwable
         */
        @Around(value = "execution(* com.itcast.aop6.HumanImpl.getUp(..))")
        public Object Aspect6(ProceedingJoinPoint point) throws Throwable {
            System.out.println("前置环绕执行。。。");
            Object[] args = point.getArgs();
            if (args!=null && args.length>1){
                if (args[0].equals("zhangsan")){
                    Object proceed = point.proceed();
                }
            }
            System.out.println("后置环绕执行。。。");
            return null;
        }
    }
    

    环绕通知:经常做事务,在目标方法之前开启事务,执行目标方法,在目标方法之后提交事务
    事务概念(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

    (4) @AfterThrowing:异常通知
    属性:1.value切入点表达式
    2.throwing自定义的变量,表示目标方法抛出的异常对象
    变量名必须和方法的参数名一样
    特点:
    1.在目标方法抛出异常时执行的
    2.可以做异常的监控程序,监控目标方法执行时是不是有异常。
    如果有异常,可以发送邮件,短信进行通知

    /**
     * 声明切面类
     */
    @Aspect
    public class Aspect7 {
    
        //出异常时,方法执行
        @AfterThrowing(value = "execution(* com.itcast.aop7.HumanImpl.byZeroException())",throwing = "e")
        public void testEx(Exception e){
            System.out.println("除数出错"+e.getMessage());
        }
    }
    
    

    (5)@After:最终通知
    属性:value切入点表达式
    位置:在方法的上面
    特点:
    1.总是会执行
    2.在目标方法之后执行的,一般做资源清除工作的。

    @Aspect
    public class Aspect8 {
    
        /**
         * 最终通知方法的定义格式
         * 1.public
         * 2.没有返回值
         * 3.方法名称自定义
         * 4.方法没有参数,如果有就是JoinPoint
         */
        
        /**
         * @After:最终通知。一般做资源清除工作的
         * 属性:value切入点表达式
         * 位置:在犯法的上面
         * 特点:
         * 1.总是会执行
         * 2.在目标方法之后执行的
         */
        @After(value = "execution(* com.itcast.aop8.HumanImpl.byAfter())")
        public void byAfter(){
            System.out.println("执行最终通知,最终都会执行的代码");
        }
    }
    

    (6)@Pointcut:定义和管理切入点
    如果你的项目中有多个切入点表达式是重复的,可以复用的。可以使用@Pointcut
    属性:value切入带你表达式
    位置:在自定义的方法上面
    特点:
    当使用@Pointcut定义在一个方法的上面,此时这个方法的名称就是切入带你表达式的别名。
    其他的通知中,value属性就可以使用这个方法名称,代替切入带你表达式了

    @Aspect
    public class Aspect9 {
        @Before(value = "mypt()")
        public void myBefore(){
            System.out.println("前置通知执行。。。。");
        }
    
        @After(value = "mypt()")
        public void myAfter(){
            System.out.println("后置通知执行。。。。");
        }
    
        @Pointcut(value = "execution(* com.itcast.aop9.HumanImpl.myTarget())")
        public void mypt(){
            System.out.println("前置通知执行。。。。");
        }
    }
    
    

    JoinPoint:指定通知方法中的参数
    位置:在切面方法中
    JoinPoint:业务方法,要加入切面功能的业务方法
    作用:可以通知方法中获取方法执行时的信息,例如方法名称,方法的实参
    如果你的切面功能中需要用到方法的信息,就加入JoinPoint
    这个JoinPoint参数的值是由框架赋予,必须是一个位置的参数

    6.关于spring配置文件的介绍

    <-- 声明目标对象 -->
    <bean id="humanImpl" class="com.itcast.aop3.HumanImpl"></bean>
    
    <-- 声明切面对象 -->
    <bean id="aspect3" class="com.itcast.aop3.Aspect3"></bean>
    
    <-- 声明自动代理生成器:使用aspect框架的内部的功能,创建目标对象的代理对象。创建代理对象是在内存中实现的,修改目标对象的内存中的结构。创建为代理对象,所以目标对象就是被修改后的代理对象
    aspectj-autoproxy:会把spring容器中的所有的目标对象,一次性都生成代理对象
     -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    

    7.关于测试切面类的介绍

    public class Test3 {
        @Test
        public void test01(){
        	//加载spring配置文件,获取spring容器
            ApplicationContext ac = new ClassPathXmlApplicationContext("aop3/ApplicationContext.xml");
            //从容器中获取目标对象
            Human humanImpl = (Human)ac.getBean("humanImpl");
            //通过代理对象执行方法,实现目标方法执行时,增强功能
            humanImpl.getUp();
            humanImpl.makeMoney(300);
            humanImpl.shopping(20);
            humanImpl.sleep();
        }
    }
    

    以上代码的执行:spring加载配置文件,通过spring配置文件读取到有两个<bean>标签的对象并放入到spring容器中,走到aspectj-autoproxy:会把spring容器中的所有的目标对象,一次性都生成代理对象。接下来通过<bean>标签中的class为目标类的id值来获取代理目标类对象,然后执行方法 . . . 实现增强。

    8.什么时候考虑使用aop技术

    (1)当要给一个系统中存在的类修改功能,但是原有类的功能不完善,但是还有源代码,使用aop就能增强功能
    (2)要给项目中的多个类,增加一个相同的功能,使用aop
    (3)给业务方法增加事务,日志输出

    9.关于JDK代理和CGLIB的动态代理

    jdk代理目标的类是继承接口的类 CGLIB的动态代理,可以继承接口和不继承几口两种
    1.不继承接口的类实现的AOP属于CGLIB的动态代理
    2.使用接口继承的类实现CGLIB的动态代理,需要在配置文件中添加以下配置proxy-target-class=“true”

    <--   如果你期望目标类有接口,使用cglib代理
    proxy-target-class=“true”:告诉框架,要使用cglib动态代理-->
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
    
    展开全文
  • 嵌入式开发概述 由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分 在系统总体开发中,由于嵌入式系统与硬件...

    嵌入式开发概述

    由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分

    在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,新词需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择,往往通过硬件实现会增加产品的成品,但是能够大大提高产品的行了电脑和可靠性

     

    在系统总体开发,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能够通过特定的硬件才能实现,需要进行处理器选型,以满足产品的需求

    开发环境的选择对于嵌入式系统的开发也有很大的影响,这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择

    对开发成本和进度箱子比较大的产品可以选择嵌入式linux系统,对实时性要求比较高的产品可以选择Vxworks

    嵌入式开发分为  嵌入式硬件开发 和嵌入式软件开发,这里主要介绍软件开发流程

    嵌入式软件开发概述

    嵌入式软件开发概述:软件开发流程,它同计算机软件开发流程一样,分为需求分析,软件概要设计,软件详细设计,软件实现,软件测试,其中嵌入式软件需求分析和硬件的需求分析合二为一,故没有分开画出

    嵌入式开发工具简介:

    需求分析阶段:IBM的Rational Rose 

    程序开发阶段:Codewarrior

    调试阶段:Multi-ICE

     

    交叉编译:嵌入式软件开发采用的编译时交叉编译,所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码,编译的最主要的工作就是将程序转化成运行该程序的cpu能够是别的机器码,由于不同的体系结果给有不同的指令系统,因此,不同的cpu需要有相应的编译器

     

    交叉编译就像翻译一样,把相同的程序代码翻译成不同cpu的对应可执行的二进制文件,要注意的是,编译器本身也是程序,也要在与之相对应的某个cpu平台上运行

    这里进行交叉编译的足迹称为宿主机,也就是普通的通用pc机,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境,由于一般通用计算机拥有非常丰富的系统资源,使用方便集成的开发环境和调试工具,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机来编译出目标机的可执行代码

    由于编译的过程包括编译链接几个阶段,因此,嵌入式的交叉编译也包括交叉编译和交叉链接等过程,通常ARM的交叉编译器为arm-elf-gcc ,arm-linux-gcc等,交叉链接器为arm-elf-ld,arm-linux-ld等

     

    交叉调试

    嵌入式软件经过编译和连接后即可进入调试阶段,调试是软件开发过程中一个必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发的调试有很大的区别,在常见的软件开发过程中,调试器和被调试的程序往往运行在同一台计算机上,调试器是一个单独运行的进程,他通过操作系统提供的调试接口来控制被调试的进程。

    而在嵌入式的软件开发中,调试时采用的事在宿主机和目标机上进行交叉调试,调试器仍然运行在宿主机的通用操作系统上,但被调试的进程确实运行在基于特定硬件平台的嵌入式系统中,调试器和被调试的进程通过串口或者是网络进行通信,调试器可以控制,范围被调试的进程,读取北条司的进程的当前状态,并能够改变被调试进程的运行状态

     

    嵌入式系统的交叉调试有很多种方法,可以分为软件方式 和 硬件方式

    特点;1:调试器和被调试的进程运行在不同的机器上,调试器运行在pc机(宿主机),被调试的进程则运行在各种专业的目标板上

       2:调试器通过某种通信方式(串口,并口你,网络,JTAG等)控制被调试的进程

       3:在目标机上一般会具备某些形式的调试代理,他负责与调试器共同配合完成对目标机上运行者的进程的调试,这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件(gdbserver)

       4:目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行,此时,物理上虽然只有一台计算机,但是逻辑上仍然存在着宿主机和目标机的区别

     

    软件调试的方式:
      软件调试主要通过插入调试桩的方式来进行的,调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者进行信息来进行调试,该方式典型的调试器有gdb调试器

    gdb的交叉调试器分为gdbserver,和gdbclient,其中gdbserver就作为调试桩安装在目标板上,gdbclient就是驻于本地的gdb调试器,他们的调试原理如同所示

    gdb 调试的工作流程

      1:建立调试器(本地gdb)与目标操作系统的通信连接,可通过串口,网卡,并口等多种方式

      2:然后,在目标机上开启gdbserver进程,并监听对应端口

      3:在宿主机上运行调试器gdb,这时gdb就会自动寻找远端的通信进程也就是gdbserver的所在进程。

      4:在宿主机上的gdb通过gdbserver请求对目标机上的程序发出控制命令,这时,gdbserver将请求转化俄日程序的地址空间,或目标平台的某些寄存器的访问,这对于没有虚拟存储器的简单的嵌入式操作系统而言是十分容易的

      5:gdbserver把目标操作系统的所有的异常处理转向为通信模块,并告知宿主机上gdb当前有异常

      6:宿主机上的gdb向用户显示被调试程序产生了哪一类异常

    小结:

      软件的调试实质上是用软件接管目标机的全部异常处理以及部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互,但是他只能在目标机系统初始化完毕,调试端口初始化完毕才能起作用,因此,一般只能用于调试运行于目标操作系统之上的应用程序,而不宜用来调试目标操作系统的内核代码以及启动代码,而且,他必须改变目标操作系统,因此,也就多了一个不用于正式发布的调试版

     

    硬件调试

      相对于软件调试而言,使用硬件调试器可以获得更强大的调试功能和更优调试性能,硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行状态,目前,嵌入式系统开发中最常用到的硬件调试器是ROMmonitor,ROmEmulator ,In-CircuitEmulator,In-CircuitDebugger

    几种常见的硬件调试方式简介

    ROMMonitor:在宿主机上运行ROM监视器和被调试程序,在宿主机上运行ROM监视器和被调试程序,宿主机通过调试器与目标机上的ROM监视器遵循远程调试协议,建立通信连接,ROM监视器可以是一段运行在目标机上ROM上的可执行程序,也可以是一个专门的硬件调试设备,他负责监控目标机上被调试的程序的运行情况,能够与宿主机端的调试器一同完成对应用程序的调试

    使用这种调试方式,被调试的程序首先通过ROM监视器下载到目标机,然后在ROM监视器的监控下完成调试

    优点:ROM监视器功能强大,能够完成设置断点,单步执行,查看寄存器,修改内存空间等各项调试功能

    《调试这一块还没有用到,以后再来完善,毕竟硬件调试对于学生来说,设备没有,经验没有,要到专门的工厂才能完成》

    版权所有,转载请标明链接地址http://www.cnblogs.com/fengdashen

    转载于:https://www.cnblogs.com/fengdashen/p/3292234.html

    展开全文
  • Linux-设备驱动概述

    千次阅读 2022-04-21 18:02:30
    文章目录Linux设备驱动概述1. 设备驱动的作用2. 无操作系统的设备驱动3. 有操作系统时的设备驱动4. Linux设备驱动4.1 设备的分类及特点4.2 Linux设备驱动与整个软硬件系统的关系4.3 Linux设备驱动的重难点5. 源代码...
  • 嵌入式系统概述1,讲解嵌入式系统定义、特点和发展历程
  • 51单片机之《概述

    2022-05-03 19:12:07
    交叉开关是一个大的数字开关网络,可通过编程设置,将片内的计数器/定时器、串行、中断系统、A/D转换器等片内外设资源灵活配置给端口I/O引脚。   4.低功耗   目前单片机产品均为CMOS芯片,具有功耗小的优点。...
  • 汽车电子嵌入式软件概述

    千次阅读 2022-03-31 15:48:50
    应用软件是嵌入式系统功能的体现,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等,一般面向特定的应用领域 支撑软件 支撑软件是指辅助软件开发的工具软件,如在线仿真工具、交叉编译器源程序模拟器和配置...
  • 第二章 大数据技术概述

    千次阅读 2022-01-10 14:54:31
    2.1 大数据技术的产生 大数据的基本概念 1、什么是大数据?大数据(Big data或Megadata):大数据,或称巨量数据、海量数据、大资料,指的是所涉及的数据量规模巨大到无法通过人工,在合理时间达到截取、管理、处理...
  • 计算机网络基本概述 网络基础 (一)、网络的定义 通过网络传输介质 (有线的传输介质和无线的传输介质) 将计算机设备(个人电脑、服务器等) 和网络设备 (路由器、交换机、防火墙等)连接在一起,所构成的环境...
  • 嵌入式Linux入门:概述

    万次阅读 多人点赞 2017-06-01 20:48:25
    另外对于USB转串线、网络这类的东西,就不一一详细说明了。   掌握程度:不同人使用的开发环境不尽相同。原则上只要是自己熟悉的环境就可以了,以提高开发效率为准则。 推荐软件:vmware、notepad++、...
  • 目录 一.一些基本概念 二.... 1.集合结构: 2.线性结构: ...三....数据结构就是研究数据的逻辑结构和物理结构以及它们之间的相互关系,并对这种结构定义相应的运算,且确保经过这些运算后所得到的新结构仍然是原来的结构...
  • (3)引入了数字交叉开关,改变了以往片内外设与外部 I / O 引脚的固定对应关系。 4. 低功耗 CMOS化,功耗小,配置有等待状态、睡眠状态、关闭状态等工作方式。消耗电流仅在 A 或 nA 量级,适于电池供电的便携式、...
  • QoS概述

    万次阅读 多人点赞 2018-05-27 08:10:30
    //创建基于Cellular出通道对报文进行分类的匹配规则。 if - match packet - length //创建基于IPv4报文长度进行分类的匹配规则。 if - match protocol { ip | ipv6 } //创建基于协议进行分类的匹配...
  • 线缆概述

    2020-05-08 14:08:14
    反转线:用于主机(com)登录控制台,连接到设备端console 线序:1---------------8 2---------------7 3---------------6 4---------------5 5---------------4 6---------------3 7---------------2 8-------...
  • 1 NetworkX概述

    2020-12-20 11:43:43
    利用图可以描述现实生活中的许多事物,如用点可以表示交叉口,点之间的连线表示路径,这样就可以轻而易举的描绘出一个交通运输网络,如图1所示。图的定义可表述为:图是用点和线来刻画离散事物集合中的每对事物间以...
  • Wwise音频解决方案概述

    千次阅读 2020-08-14 16:34:01
    Wwise SoundSpeed Air, Wwise SoundSpeed Impact Audiokinetic 一款专用声音生成器 SoundSpeed Air可生成无数种风声和呼啸声效果 SoundSpeed Impact可方便通过交叉合成创建现实中不存在的各种独特声音 Wwise ...
  • 嵌入式系统概述

    2020-06-29 22:19:23
    嵌入式系统概述
  •  C linkkit SDK 顾名思义,是为使用C语言 开发业务逻辑的设备 ,设备需要有联网功能,这分为2种情况,一种是设备本身能够联网,比如设备有以太网,支持TCP/IP 协议。另一种需要外挂通信模组,比如GPRS模组、wifi...
  • 医药工业洁净厂房自然通风少,一般都在净化区内的房间及走廊等场所设置送排风,通过净化空调进行机械送排风。风口数量及安装位置的增加限制了灯具的数量和灯具的安装位置,这就要求在同样照度条件下最大程度地减少...
  • 金融工程学(五):互换概述

    千次阅读 2021-04-07 15:45:04
    其他互换 交叉货币利率互换: 交叉货币利率互换(Cross-Currency Interest Rate Swaps)是利率互换和货币互换的结合,它以一种货币的固定利率交换另一种货币的浮动利率。 基点互换: 在基点互换(Basis Swaps)中,...
  • 本文主要对无人驾驶的整体情况做一个简要的概括介绍。 无人车的实现需要诸多硬件传感器的支持,这些传感器包括: GPS+IMU 全球定位+惯性测量 Camera 视觉传感器 ... Vehicle Control Unit Si...
  • 项目管理 Web 表单 该系统允许非常简单的数据输入和分析 该系统旨在允许使用基于 Web 的 GIS ... 左上角的列表包含资产项目(交叉口、桥梁等)的最新更新。 下面的列表显示了轨道项目的最新更新。 右上角的列表包含
  • lds链接脚本概述

    2020-08-15 14:53:16
    .text .global _start _start: LDR R0,=0x56000010 @GPBCON寄存器 MOV R1,# 0x00000400 STR R1,[R0] LDR R0,=0x56000014 MOV R1,#0x00000000 STR R1,[R0] MAIN_LOOP: B MAIN_LOOP 代码很简单,就是一个对io进行...
  • 第 296 章leetcode-in-python 概述 这是一个 repo,包含我在项目中...将交叉口大小设置为至少两个 难的 756 金字塔过渡矩阵 中等的 755 倒水 $ 中等的 754 达到一个数字 中等的 753 破解保险箱 难的 752 打开锁 中等的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,234
精华内容 893
热门标签
关键字:

交叉口概述