Long long feeling

本文回忆了一段关于友情与成长的故事。讲述了作者与朋友们从无忧无虑的童年时光到长大后各奔东西的过程,尽管联系渐少,但那份纯真的情谊仍然深刻。文中表达了即使时空改变,真挚的情感仍旧永恒不变的主题。

 

    沉默了好久,所有的思绪都不再前进,所有的灵感都一闪而过,所有的感觉都陷入了麻木的边缘。风不再吹,云不再飘,时光,也仿佛倒流了几个世纪。。。。。。

还记得吗?那时的我们,没有杂念,没有烦恼,只有一些天真的想法和一些看似崇高的理想

还记得吗?那时的我们,不懂悲伤,不懂哭泣,只懂得笑

你说,长大后我们要到同一个城市

你说,毕业后我们要一直联络

你说,我们是永远的朋友

 

于是,我们慢慢长大,带着这些诺言。。。。。。

在跌跌撞撞的岁月中,我们从来没有想到过分离,这个字眼,似乎离我们很远很远,直到我们真的到了分开的时候。。。。。。

那一天,大家都在沉默,我们依旧没有眼泪,依旧没有悲伤。我们需要做些什么吗?已经不需要了,沉默,已经将大家的感情弥漫在了空气中,不需要语言;小小的卡片已经承载着太多太多的祝福

终于,还是走到这一天,要分享各自的时间

没人能替代记忆中的你,和那段青春岁月。。。。。。。

这是一首歌,一首只有离别才能听的歌,于是,我们笑着面对,这样的分离,给了我们太多的期待,也给了我们太多的迷茫

 

长大了,我们并没有像曾经承诺过的那样

一直联络

只是常常能在不经意间听到你的消息,听到你过得好不好。。。。。。

朋友,这样的友谊会长久吗?

就算不常联络,我们依然会像从前那样吗?

 

有人说,真正的感情能地久天长,在我的世界里,曾经的感情都会地久天长。。。。。。

 

我们还会继续成长,不管到哪里,这种感觉都不会变吧,这是一种遥远却又亲切的感觉,是一种触摸不到却又伸手可及的感觉。。。。。。

I wish all of you can be happy whenever you are, whatever you to be……

 

内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
<think>我们正在讨论Spring AOP中不同通知类型的执行顺序。根据Spring AOP的规范,当多个通知应用于同一个连接点时,它们的执行顺序如下: 1. 环绕通知(@Around)的开始部分 2. 前置通知(@Before) 3. 目标方法执行 4. 后置通知(@After)——无论目标方法是否成功完成 5. 环绕通知(@Around)的结束部分(在proceed()调用之后) 6. 如果目标方法正常返回,则执行返回通知(@AfterReturning) 7. 如果目标方法抛出异常,则执行异常通知(@AfterThrowing) 但是,在给定的代码中,我们有: - 一个前置通知(@Before):enter() - 一个后置通知(@After):leave() - 一个环绕通知(@Around):watchTime() 具体执行顺序如下: 1. 环绕通知(watchTime)的开始部分,即调用`jp.proceed()`之前的代码(在示例中,是记录开始时间)。 2. 然后,环绕通知调用`jp.proceed()`,这将触发: a. 前置通知(enter())执行。 b. 目标方法(showTheMovie)执行。 c. 后置通知(leave())执行(注意:后置通知在目标方法执行后立即执行,无论成功与否)。 d. 如果目标方法正常返回,则执行返回通知(如果有);如果抛出异常,则执行异常通知(如果有)。 3. 最后,执行环绕通知中`jp.proceed()`之后的代码,即打印播放时间。 因此,完整的执行顺序是: 1. watchTime() 环绕通知的开始部分(记录开始时间t0) 2. 调用jp.proceed(),此时: a. 执行enter()前置通知 b. 执行目标方法showTheMovie c. 执行leave()后置通知 3. watchTime() 环绕通知的剩余部分(计算并打印时间) 注意:后置通知(@After)会在目标方法结束后立即执行,即使目标方法抛出异常也会执行。但在示例中,目标方法可能抛出异常(当电影类型为"broken"时),这时leave()后置通知仍然会执行,然后异常会抛到环绕通知中,如果环绕通知没有捕获异常,则异常会继续抛出。 另外,在环绕通知中,我们调用了`jp.proceed()`,它封装了前置通知、目标方法、后置通知以及返回通知或异常通知的执行。 所以,对于给定的代码,执行顺序是: 1. watchTime() 的前半部分(记录开始时间) 2. enter() 前置通知 3. showTheMovie() 目标方法 4. leave() 后置通知 5. watchTime() 的后半部分(打印耗时) 注意:如果在环绕通知中捕获了异常,那么异常通知(如果有)就不会执行,因为异常已经被处理。 现在,根据要求,在回答后提出相关问题。 </think>### Spring AOP通知执行顺序详解 在Spring AOP中,当多个通知同时应用于同一方法时,执行顺序遵循严格规则。给定代码中包含三种通知类型: 1. **@Around**:环绕通知(`watchTime`方法) 2. **@Before**:前置通知(`enter`方法) 3. **@After**:后置通知(`leave`方法) #### 完整执行顺序: ```mermaid sequenceDiagram participant Around as @Around participant Before as @Before participant Target as 目标方法 participant After as @After Around->>Around: 环绕前半部分(记录t0) Around->>Before: 触发前置通知 Before-->>Around: 返回控制权 Around->>Target: 调用jp.proceed() Target->>Target: 执行showTheMovie() Target-->>Around: 返回结果 Around->>After: 触发后置通知 After-->>Around: 返回控制权 Around->>Around: 环绕后半部分(计算耗时) ``` #### 具体执行步骤: 1. **环绕通知前半部分** `watchTime()`方法开始执行,记录起始时间`t0` 2. **执行前置通知** 调用`jp.proceed()`触发: - `enter()`方法执行(打印"Entering the Cinema") 3. **执行目标方法** `Cinema.showTheMovie()`方法执行 4. **执行后置通知** 目标方法结束后立即触发: - `leave()`方法执行(打印"Leaving the Cinema") 5. **环绕通知后半部分** 计算并打印时长: `System.out.printf("The movie played %dms\n", (System.currentTimeMillis() - t0))` #### 关键特性说明: - **异常处理顺序**:若目标方法抛出异常: 1. 后置通知(`@After`)仍会执行 2. 环绕通知可以捕获异常 3. 前置通知不受影响(已执行完毕) - **嵌套调用顺序**:当多层代理存在时,遵循"先进后出"的栈结构 - **通知类型优先级**: ```text 最高:@Around前半 → @Before → 目标方法 → @After → @Around后半 最低:@AfterReturning/@AfterThrowing ``` #### 验证代码示例: ```java public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class); Movie movie = new Movie("测试电影", "普通", 2000); context.getBean(Cinema.class).showTheMovie(movie); context.close(); } ``` #### 预期输出: ``` Entering the Cinema ← @Before The 测试电影 of 普通 is showing ← 目标方法 The 测试电影 of 普通 is ending ← 目标方法 Leaving the Cinema ← @After The movie played 2000ms ← @Around后半 ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值