首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在AOP中,同步可以作为一个方面来处理吗?

在AOP中,同步可以作为一个方面来处理吗?
EN

Stack Overflow用户
提问于 2011-09-28 22:22:59
回答 3查看 1.2K关注 0票数 5

我知道在AOP中,任何横切关注点,如日志、事务等,都可以看作是一个方面,而且大多数AOP框架都很好地支持这种横切关注点。

我的问题是,

  • 同步是否可以被视为横切关注点?
  • 如果是,是否有任何现有库(包括AspectJ和Spring )支持此功能?

我搜索了一下,但找不到多少例子。不过,我遇到了一些限制性的研究论文(12)。

EN

回答 3

Stack Overflow用户

发布于 2011-09-28 22:57:27

只是一个理论上的“答案”。:)

正如我所理解的,您在一些“切入点”/“连接点”中添加了独立的行为/“建议”。但是,同步将用于与其管理的代码紧密相关。

我想使用同步的方法是,如果它将作为建议附加,并作为一个“连接点”提供,其他“方面”将定义一些“建议”。

或者,您可能在“建议”中得到某种同步,同时尝试调用一些“联合点”。

票数 1
EN

Stack Overflow用户

发布于 2011-09-29 03:56:54

理论上,可以有一个AOP框架,它将同步添加到一组方法/类中。它甚至不难实现。但这通常不是你想要的。太多的同步和太少的同步一样糟糕,因为您要么会遇到死锁,要么会过多地序列化线程,以至于无法有效地使用多个内核。

恐怕在多线程编程方面没有什么更好的捷径。

票数 1
EN

Stack Overflow用户

发布于 2012-11-13 07:13:25

是的,同步可以被看作是一个方面。AOP背后的想法不是用来处理横切关注点的吗?然后,将同步视为横切关注点可以通过AOP来处理,而无需定义和使用外部库。

请考虑以下有关读写锁定的示例。每当对象被读/写时,您就可以捕获该方法并为并发控制提供足够的功能。

代码语言:javascript
运行
AI代码解释
复制
public abstract aspect ReadWriteLockSynchronizationAspect 
    perthis(readOperations() || writeOperations()) {

    public abstract pointcut readOperations();

    public abstract pointcut writeOperations();

    private ReadWriteLock _lock = new SomeReadWriteLock();

    before() : readOperations() {
        _lock.readLock().acquire();
    }

    after() : readOperations() {
        _lock.readLock().release();
    }

    before() : writeOperations() {
        _lock.writeLock().acquire();
    }

    after() : writeOperations() {
        _lock.writeLock().release();
    }
}

perthis为每个读/写操作创建一个新的方面。否则,只会创建一个方面,并且它的工作方式类似于一个单例对象。有关更多信息,请查看AspectJ在行动中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7593281

复制
相关文章
AOP面向方面编程
软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块。于是出现了以系统模块化特性的面向对象程序设计技术。模块化的面向对象编程极度极地提高了软件系统的可读性、复用性和可扩展性。向对象方法的焦点在于选择对象作为模块的主要单元,并将对象与系统的所有行为联系起来。对象成为问题领域和计算过程的主要元素。但面向对象技术并没有从本质上解决软件系统的可复用性。创建软件系统时,现实问题中存在着许多横切关注点,比如安全性检查、日志记录、性能监控,异常处理等,它们的实现代码和其他业务逻辑代码混杂在一起,并散落在软件不同地方(直接把处理这些操作的代码加入到每个模块中),这无疑破坏了OOP的“单一职责”原则,模块的可重用性会大大降低,这使得软件系统的可维护性和复用性受到极大限制。这时候传统的OOP设计往往采取的策略是加入相应的代理(Proxy)层来完成系统的功能要求,但这样的处理明显使系统整体增加了一个层次的划分,复杂性也随之增加,从而给人过于厚重的感觉。由此产生了面向方面编程(AOP)技术。这种编程模式抽取出散落在软件系统各处的横切关注点代码,并模块化,归整到一起,这样进一步提高软件的可维护性、复用性和可扩展性。
黄规速
2022/04/14
4830
AOP面向方面编程
NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(中)
继续上文NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(上)
GPUS Lady
2020/09/25
5.1K1
NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(中)
MONGODB 可以在应用系统中作为核心数据库?
知道最近也会听到一个声音,MONGODB 不能在核心的系统使用, 哎, 2021年了,现在有些系统都没有传统数据库的身影,而代替的是通过ES,REDIS ,Aerospike 这样的数据库来成功上位到这个系统的核心数据库, 那么MONGODB 为什么不可以成为项目的核心数据库?
AustinDatabases
2021/06/10
1.4K0
MONGODB   可以在应用系统中作为核心数据库?
[答疑]业务用例的研究组织可以在同一个建设系统中可以变化吗
2013-02-08 9:44:15 上孙安俊(359***041) 请问大家一个问题,业务用例的研究组织可以在同一个建设系统中可以变化吗? 2013-02-08 9:44:51 潘加宇(3504847) 没有必要变化了 2013-02-08 9:46:55 潘加宇(3504847) 这个划定的范围,能把你要改进的场景被包在里头就可以。 2013-02-08 9:48:41 上孙安俊(359***041) 如果想做一个部门业务管理系统, 2013-02-08 9:48:54 上孙安俊(359***041) 有时间,从部门外面,接报问题,需求处理, 2013-02-08 9:49:32 上孙安俊(359***041) 但是一些部门的内部管理,比如员工请假,工作记录,也会涉及到,这个时间的范围好像已经变了,按科室去管理了 2013-02-08 9:50:59 潘加宇(3504847) 员工还要上厕所呢,是不是这时需要改变研究对象为厕所? 2013-02-08 9:51:42 潘加宇(3504847) 部门就可以了,把这些场景组织到部门的用例下面 2013-02-08 9:54:44 潘加宇(3504847) 既然改进的范围波及整个部门,就要用"部门"的眼光去思考"请假"等问题 2013-02-08 9:55:28 上李帅(958**7) 比如那些非常苛刻的工厂,员工上厕所都要记时,那么厕所应该也纳入研究对象么? 2013-02-08 9:56:31 潘加宇(3504847) 不能"因为请假所以请假",要想一想"员工请假"对部门的价值意味着什么? 2013-02-08 10:14:41 上李帅(958**7) 意味着缺少了资源 2013-02-08 10:25:47 上孙安俊(359***041) 请假与加班是相对的,可以进行调休 2013-02-08 11:04:09 潘加宇(3504847) 我上面讲的不知道是否理解了? 2013-02-08 11:11:15 潘加宇(3504847) 请假本身不是部门的用例,但会影响部门的某些用例的实现,把请假作为一个场景放在这些用例下面。 2013-02-08 11:15:53 刘佳(761**3) 利润=需求-设计,看来程序员仅仅会需求分析,会一些程序设计语言,不断制造东西却不维护,代码复用度太低,会影响利润 2013-02-08 12:02:38 上孙安俊(359***041) 好
用户6288414
2021/10/13
2.8K0
IEEE1588同步时钟在变电站时钟同步方面的应用
随着对IEC 61850标准研究的不断深入,数字化变电站与常规变电站的显著区别在于过程层传统的电流/电压互感器、断路器将被电子式电流/电压互感器、智能断路器取代。在数字化变电站中数据信息的共享程度和数据的实时性将得到大幅度提高。IEC61850标准对智能电子设备的时钟精度功能要求划分为5个等级(T1-T5),其中用于计量的T5等级精度达到1us。
时频专家
2022/04/02
9340
IEEE1588同步时钟在变电站时钟同步方面的应用
EDI系统可以作为中间件使用吗?
中间件是在操作系统提供的功能之外为应用程序提供通用服务和能力的软件。数据管理、应用服务、消息传递、认证和API管理都是由中间件普遍处理的。
知行软件EDI
2021/09/26
1.1K0
EDI系统可以作为中间件使用吗?
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
根据 Spring Batch 的设计,在一个 Step 中只能执行一个 Tasklet。
HoneyMoose
2022/10/15
1.5K0
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
在SpringBoot中实践AOP编程
Spring AOP是Spring框架中一个支持实现面向切面编程的模块,由于Spring Boot已经把Spring框架组合得非常好用,所以在基于Spring Boot框架的项目中实现AOP编程也是非常方便,具体来说可以分为如下几步: 第一步: 在项目中引入依赖配置。
编程随笔
2023/10/15
2970
可以建立一个机器学习模型来监控另一个模型吗
从表面上看,这听起来很合理。机器学习模型也会出错。让我们利用这些错误,训练另一个模型来预测第一个模型的错误!有点像“信任探测器”,基于我们的模型过去的表现。
deephub
2021/07/01
6430
oligo包可以处理agilent芯片吗
结果,不仅没有找到ID号,而且还看到了oligo包,很有趣,第一次看到oligo包可以处理agilent芯片的,不知道亲爱的读者你们觉得这个靠谱吗?
生信技能树
2019/12/31
9050
oligo包可以处理agilent芯片吗
本体技术视点 | 可以把工作邮箱作为公钥吗?
在正式介绍 Celo 的基于地址加密方法前,让我们回想一下从用户角度来看 BTC 或者 ONT 等如何进行转账。假设 Alice 向本体新用户 Bob 转移1 ONT。Bob 首先需要下载本体的官方钱包 ONTO 或者 OWallet,创建一个地址,保存和这个地址对应的私钥。
本体Ontology
2020/05/06
7710
本体技术视点 | 可以把工作邮箱作为公钥吗?
NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(上)
今天的教程来自: 文章链接: https://dream-soft.mydns.jp/blog/developper/smarthome/2020/09/2291/?fbclid=IwAR3OcNU
GPUS Lady
2020/09/25
2.9K0
NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(上)
浅谈Scala在大数据处理方面的优势
随着大数据应用得日益广泛,与大数据相关的话题也越来越被大家所热议。在IT界,大数据同样是热门。作为学生党的我,最近也在研究关于大数据的内容。作为一个技术迷,总是会想尝试一些新鲜的东西。前一段时间学习了Hadoop之后,又想开始体验Spark。那么现在就讨论一下关于Spark的话题。 Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台。它立足于内存计算,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和图计算等多种计算范式,是罕见的全能选手。就大数据集而言,对典型的迭代机器 学习、即席查询(ad
企鹅号小编
2018/01/19
2.4K0
深度学习在自然语言处理方面的应用
自然语言处理是一种将自然语言转换为计算机可处理的形式的技术。深度学习是一种非常强大的机器学习技术,它在自然语言处理方面也有广泛的应用。本文将详细介绍深度学习在自然语言处理方面的应用。
网络技术联盟站
2023/05/14
3410
深度学习在自然语言处理方面的应用
互联网公司可以只靠一个程序员来运转吗?
在互联网公司混过几年,倒是遇见过几个产品经理围绕着一个程序员做产品的事情,而且这位技术同事住的地方距离公司有单趟坐地铁需要将近两个小时,开始还能坚持着去做应付这些功能,后来就坚持不住了就辞职了,互联网公司很多产品技术开发人员相对不多,但并不代表着靠几个技术人员的就可以搞定一切了,更何况只是靠一个程序员就能搞定一切了,即使只是开发一个简单的应用,也不是一个人的事情,现在的app也不是只是做客户端一个方向,还需要有后端的支持,这也是不是一个人能做的事情。
程序员互动联盟
2019/03/07
6850
互联网公司可以只靠一个程序员来运转吗?
在推荐系统中,我还有隐私吗?联邦学习:你可以有
随着互联网覆盖范围的扩大,越来越多的用户习惯于在网上消费各种形式的内容,推荐系统应运而生。推荐系统在我们的日常生活中无处不在,它们非常有用,既可以节省时间,又可以帮助我们发现与我们的兴趣相关的东西。目前,推荐系统是消费领域最常见的机器学习算法之一[1]。以网络新闻为例,由于每天都有大量的新闻文章发布在网上,在线新闻服务的用户面临着严重的信息过载。不同的用户通常喜欢不同的新闻信息。因此,个性化新闻推荐技术被广泛应用于用户的个性化新闻展示和服务中。关于新闻的推荐算法 / 模型研究已经引起了学术界和产业界的广泛关注。
机器之心
2020/12/03
4.8K0
在推荐系统中,我还有隐私吗?联邦学习:你可以有
【完结】如何学习AutoML在模型优化中的应用,这12篇文章可以作为一个参考
自动化机器学习技术是非常重要的基础研究,也是如今深度学习模型优化中的热点方向,我们开辟了一个专栏,专门讲解AutoML在深度学习模型优化中的一些重要思路,本次来给大家进行总结。
用户1508658
2020/07/01
6690
【完结】如何学习AutoML在模型优化中的应用,这12篇文章可以作为一个参考
【DB笔试面试618】在Oracle中,“OR扩展”可以有查询转换吗?
♣ 题目部分 在Oracle中,“OR扩展”可以有查询转换吗? ♣ 答案部分 同一字段: LHR@orclasm > SELECT * FROM SCOTT.EMP A WHERE A.EMPNO =7369 OR A.EMPNO=1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ------
AiDBA宝典
2019/09/29
6.4K0
在Spring AOP切面中启用新事务
在工作中有一个在切面中需要记录一下操作日志的需求,而且要求这些操作日志要存入数据库,并且无论业务层有什么异常,日志照常记录,那就不能沿用业务层的事务,而是需要新启一个事务了。 sping的声明式事务就是靠AOP来实现的,一般事务都在业务层中启用,那如果要在AOP的逻辑中启用一个新的事务要怎么做呢?比如下面的例子:
全栈程序员站长
2022/09/18
7380
点击加载更多

相似问题

AspectJ、Spring AOP和JBoss AOP在异常处理方面的比较

11

我们可以将AOP方面应用于多个maven项目吗?

12

AOP +同步

12

Python中面向方面编程(AOP)

24

spring中的AOP方面警告

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文