首页 > 最新文献

Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity最新文献

英文 中文
Layer Activation Mechanism for Asynchronous Executions in JavaScript JavaScript中异步执行的层激活机制
Hiroaki Fukuda, Paul Leger, Nicolás Cardozo
In modern software development with JavaScript, an asynchronous execution model is often adopted to prevent freezing execution triggered by the blocking operations. JavaScript is now used in various types of applications for the Web, smartphones, and server-side due to its rich ecosystem. In such applications, programmers implement several concerns that should perform different behavior according to the current identified context. Context-Oriented Programming (COP) posits layers as an abstraction to manage such concerns. With COP, programmers can implement context dependent application behavior in a layer, then (de)activate such layers when the context changes, leading to a change in the system behavior. Additionally, COP offers different scoping strategies which define when and how layers should be (de)activated. The dynamic extent of layers is one of such scoping strategies, which encapsulates the duration of a layer within a block, then deactivates the layer when the block execution ends. However, applying an asynchronous execution model breaks the semantics of dynamic extent because the result of an asynchronous execution generally returns when the caller of the asynchronous execution goes through the block. Existing work proposes a variant of the dynamic extent that activates a layer for a block and its logically-connected asynchronous operations by keeping information across them. However, that proposal only supports one of three kinds of asynchronous operations used in JavaScript (MacroTask, EventTask, and MicroTask). This paper extends on the existing work to support a layer activation mechanism with a scoping strategy that fulfills all three kinds of asynchronous operations in JavaScript. We show the benefit of our proposal through the implementation of a real world application for smartphones.
在现代JavaScript软件开发中,通常采用异步执行模型来防止阻塞操作触发的冻结执行。由于其丰富的生态系统,JavaScript现在被用于各种类型的Web、智能手机和服务器端应用程序。在这样的应用程序中,程序员实现几个关注点,这些关注点应该根据当前确定的上下文执行不同的行为。面向上下文的编程(COP)将层作为管理这些关注点的抽象。使用COP,程序员可以在一个层中实现依赖于上下文的应用程序行为,然后在上下文发生变化时(取消)激活这些层,从而导致系统行为发生变化。此外,COP提供了不同的作用域策略,这些策略定义了何时以及如何激活(取消)层。层的动态范围就是这种作用域策略之一,它将层的持续时间封装在一个块中,然后在块执行结束时停用该层。然而,应用异步执行模型会破坏动态范围的语义,因为异步执行的结果通常在异步执行的调用者通过块时返回。现有的工作提出了一种动态范围的变体,它通过在块及其逻辑连接的异步操作之间保持信息来激活一个层。然而,该提案只支持JavaScript中使用的三种异步操作中的一种(MacroTask、EventTask和MicroTask)。本文在现有工作的基础上进行了扩展,以支持一种层激活机制,该机制的作用域策略可以在JavaScript中实现所有三种异步操作。我们通过智能手机的实际应用程序的实现来展示我们的建议的好处。
{"title":"Layer Activation Mechanism for Asynchronous Executions in JavaScript","authors":"Hiroaki Fukuda, Paul Leger, Nicolás Cardozo","doi":"10.1145/3570353.3570354","DOIUrl":"https://doi.org/10.1145/3570353.3570354","url":null,"abstract":"In modern software development with JavaScript, an asynchronous execution model is often adopted to prevent freezing execution triggered by the blocking operations. JavaScript is now used in various types of applications for the Web, smartphones, and server-side due to its rich ecosystem. In such applications, programmers implement several concerns that should perform different behavior according to the current identified context. Context-Oriented Programming (COP) posits layers as an abstraction to manage such concerns. With COP, programmers can implement context dependent application behavior in a layer, then (de)activate such layers when the context changes, leading to a change in the system behavior. Additionally, COP offers different scoping strategies which define when and how layers should be (de)activated. The dynamic extent of layers is one of such scoping strategies, which encapsulates the duration of a layer within a block, then deactivates the layer when the block execution ends. However, applying an asynchronous execution model breaks the semantics of dynamic extent because the result of an asynchronous execution generally returns when the caller of the asynchronous execution goes through the block. Existing work proposes a variant of the dynamic extent that activates a layer for a block and its logically-connected asynchronous operations by keeping information across them. However, that proposal only supports one of three kinds of asynchronous operations used in JavaScript (MacroTask, EventTask, and MicroTask). This paper extends on the existing work to support a layer activation mechanism with a scoping strategy that fulfills all three kinds of asynchronous operations in JavaScript. We show the benefit of our proposal through the implementation of a real world application for smartphones.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128322855","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Modeling flexible Monitoring Systems with a Role-Based Control Loop 基于角色控制回路的柔性监控系统建模
Ilja Shmelkin, L. Schütze, Tim Kluge
Monitoring information technology systems during operation is one of the few methods available to help administrators keep track of the monitored system’s state, predict and identify errors, and assist in system repair and error avoidance. Monitoring solutions to date, however, still suffer from various trade-offs as current implementations impose architectural restrictions on monitored systems, which lead to reduced flexibility in deployment and operation. Most monitoring software is specialized to function with fixed specific data formats, protocols, and data acquisition mechanisms, further reducing their flexibility. The role-based approach for modeling and implementing software promises an intuitive way of increasing the flexibility of information technology systems’ modeling and implementation. Paired with technology on control loops from the domain of self-adaptive systems, we can create a reusable framework made from static role-playing building blocks that allow overcoming those limitations. In this paper, a novel concept and model for a flexible monitoring solution on this basis is presented, which provides functioning in most application domains while minimizing architectural and functional constraints on the monitored system. We compare the flexibility of our concept with a collection of 15 monitoring systems based on 11 criteria. We further illustrate the concept by presenting and discussing a uniform role-based model and, finally, discussing one possible implementation method.
在运行过程中监视信息技术系统是帮助管理员跟踪被监视系统状态、预测和识别错误以及协助系统修复和避免错误的为数不多的方法之一。然而,到目前为止,监视解决方案仍然受到各种权衡的影响,因为当前的实现对被监视系统施加了体系结构限制,这导致部署和操作的灵活性降低。大多数监控软件都专门用于固定的特定数据格式、协议和数据采集机制,这进一步降低了它们的灵活性。基于角色的建模和实现软件的方法保证了一种直观的方式来增加信息技术系统建模和实现的灵活性。与来自自适应系统领域的控制回路技术相结合,我们可以创建一个由静态角色扮演构建块组成的可重用框架,从而克服这些限制。本文在此基础上提出了一种灵活监控解决方案的新概念和模型,该解决方案在提供大多数应用领域的功能的同时,最大限度地减少了对被监控系统的架构和功能约束。我们将我们概念的灵活性与基于11个标准的15个监测系统的集合进行比较。我们通过提出和讨论统一的基于角色的模型,最后讨论一种可能的实现方法,进一步说明这个概念。
{"title":"Modeling flexible Monitoring Systems with a Role-Based Control Loop","authors":"Ilja Shmelkin, L. Schütze, Tim Kluge","doi":"10.1145/3570353.3570356","DOIUrl":"https://doi.org/10.1145/3570353.3570356","url":null,"abstract":"Monitoring information technology systems during operation is one of the few methods available to help administrators keep track of the monitored system’s state, predict and identify errors, and assist in system repair and error avoidance. Monitoring solutions to date, however, still suffer from various trade-offs as current implementations impose architectural restrictions on monitored systems, which lead to reduced flexibility in deployment and operation. Most monitoring software is specialized to function with fixed specific data formats, protocols, and data acquisition mechanisms, further reducing their flexibility. The role-based approach for modeling and implementing software promises an intuitive way of increasing the flexibility of information technology systems’ modeling and implementation. Paired with technology on control loops from the domain of self-adaptive systems, we can create a reusable framework made from static role-playing building blocks that allow overcoming those limitations. In this paper, a novel concept and model for a flexible monitoring solution on this basis is presented, which provides functioning in most application domains while minimizing architectural and functional constraints on the monitored system. We compare the flexibility of our concept with a collection of 15 monitoring systems based on 11 criteria. We further illustrate the concept by presenting and discussing a uniform role-based model and, finally, discussing one possible implementation method.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"107 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123204040","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Explicit Tool Support for Implicit Layer Activation 显式工具支持隐式图层激活
M. Brand, Stefan Ramson, Jens Lincke, R. Hirschfeld
Implicit Layer Activation (ILA) is a declarative mechanism to scope behavior adaptations in Context-oriented Programming (COP). ILA binds the activation status of a layer to a Boolean condition. The layer is active as long as the given condition evaluates to true. This mechanism to scope layer activations is very powerful, but without dedicated tool support, it may be hard to debug due to its implicitness. A solution that can mitigate this is proper tool support, which is expensive to build and can be highly domain-specific. We have previously shown that by building the language extension not from scratch but by relying on a common more powerful shared concept, Active Expressions, the implementation becomes simpler and more elegant since it does not require deep integration into the ContextJS implementation. In this paper we show how providing tool support for ILA makes implicit dependencies to state changes more explicit. We show how such tool support can be implemented by leveraging the existing Active Expression tool suite. We illustrate the usage based on a catalog of COP questions from literature.
隐式层激活(ILA)是面向上下文编程(COP)中定义行为适应范围的声明性机制。ILA将层的激活状态绑定到布尔条件。只要给定的条件为真,层就处于活动状态。这种作用域层激活的机制非常强大,但如果没有专用工具的支持,由于其隐式性,可能很难调试。可以缓解这种情况的解决方案是适当的工具支持,它的构建成本很高,并且可以高度特定于领域。我们之前已经展示过,通过不是从头开始构建语言扩展,而是依靠一个更强大的共享概念——活动表达式(Active Expressions),实现变得更简单、更优雅,因为它不需要深度集成到ContextJS实现中。在本文中,我们展示了为ILA提供工具支持如何使对状态更改的隐式依赖更加显式。我们将展示如何利用现有的Active Expression工具套件来实现这种工具支持。我们基于文献中的COP问题目录来说明这种用法。
{"title":"Explicit Tool Support for Implicit Layer Activation","authors":"M. Brand, Stefan Ramson, Jens Lincke, R. Hirschfeld","doi":"10.1145/3570353.3570355","DOIUrl":"https://doi.org/10.1145/3570353.3570355","url":null,"abstract":"Implicit Layer Activation (ILA) is a declarative mechanism to scope behavior adaptations in Context-oriented Programming (COP). ILA binds the activation status of a layer to a Boolean condition. The layer is active as long as the given condition evaluates to true. This mechanism to scope layer activations is very powerful, but without dedicated tool support, it may be hard to debug due to its implicitness. A solution that can mitigate this is proper tool support, which is expensive to build and can be highly domain-specific. We have previously shown that by building the language extension not from scratch but by relying on a common more powerful shared concept, Active Expressions, the implementation becomes simpler and more elegant since it does not require deep integration into the ContextJS implementation. In this paper we show how providing tool support for ILA makes implicit dependencies to state changes more explicit. We show how such tool support can be implemented by leveraging the existing Active Expression tool suite. We illustrate the usage based on a catalog of COP questions from literature.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123875820","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Guard the Cache: Dispatch Optimization in a Contextual Role-oriented Language 保护缓存:面向上下文角色语言中的调度优化
L. Schütze, Cornelius Kummer, J. Castrillón
Adaptive programming models are increasingly important as context-dependent software conquers more domains. One such a model is role-oriented programming where behavioral changes are implemented by objects playing and renouncing roles. As with other adaptive models, the overhead introduced by source code adaptations is a major showstopper for role-oriented programs. This is in part because the optimizations of object-oriented virtual machines (VMs) do not provide the same performance gains when applied to role-oriented programs. Recently, dispatch plans have been shown to enable optimizations beyond those in VMs, thereby improving the performance of role programs with low variability. This paper introduces guarded dispatch plans, an extension of dispatch plans with a context-aware guarding mechanism that allows reuse in high-variability scenarios. Fine-grained guards use run-time feedback to partially reuse dispatch plans across call sites when contexts are changing. We present an algorithm to construct and compose guarded dispatch plans and provide a reference implementation of the approach. We show that our approach is able to gracefully degrade into a default dispatch approach when variability increases. The implementation is evaluated with synthetic benchmarks capturing different characteristics. Compared to the state-of-the-art implementation in ObjectTeams we achieved a mean speedup of 3.3 × in static cases, 3.0 × at low variability and the same performance in highly dynamic cases.
随着上下文相关软件征服更多领域,自适应编程模型变得越来越重要。其中一种模型是面向角色的编程,其中通过对象扮演和放弃角色来实现行为更改。与其他自适应模型一样,源代码自适应带来的开销是面向角色程序的主要障碍。这在一定程度上是因为面向对象虚拟机(vm)的优化在应用于面向角色的程序时不能提供相同的性能增益。最近,调度计划已经被证明可以实现虚拟机之外的优化,从而提高具有低可变性的角色程序的性能。本文介绍了受保护的调度计划,这是调度计划的扩展,具有上下文感知的保护机制,允许在高可变性场景中重用。细粒度保护使用运行时反馈,以便在上下文发生变化时跨调用站点部分重用分派计划。我们提出了一种构建和编写守护调度计划的算法,并提供了该方法的参考实现。我们展示了当可变性增加时,我们的方法能够优雅地降级为默认分派方法。使用捕获不同特征的合成基准对实现进行评估。与ObjectTeams中最先进的实现相比,我们在静态情况下实现了3.3倍的平均加速,在低可变性情况下实现了3.0倍的平均加速,在高动态情况下实现了相同的性能。
{"title":"Guard the Cache: Dispatch Optimization in a Contextual Role-oriented Language","authors":"L. Schütze, Cornelius Kummer, J. Castrillón","doi":"10.1145/3570353.3570357","DOIUrl":"https://doi.org/10.1145/3570353.3570357","url":null,"abstract":"Adaptive programming models are increasingly important as context-dependent software conquers more domains. One such a model is role-oriented programming where behavioral changes are implemented by objects playing and renouncing roles. As with other adaptive models, the overhead introduced by source code adaptations is a major showstopper for role-oriented programs. This is in part because the optimizations of object-oriented virtual machines (VMs) do not provide the same performance gains when applied to role-oriented programs. Recently, dispatch plans have been shown to enable optimizations beyond those in VMs, thereby improving the performance of role programs with low variability. This paper introduces guarded dispatch plans, an extension of dispatch plans with a context-aware guarding mechanism that allows reuse in high-variability scenarios. Fine-grained guards use run-time feedback to partially reuse dispatch plans across call sites when contexts are changing. We present an algorithm to construct and compose guarded dispatch plans and provide a reference implementation of the approach. We show that our approach is able to gracefully degrade into a default dispatch approach when variability increases. The implementation is evaluated with synthetic benchmarks capturing different characteristics. Compared to the state-of-the-art implementation in ObjectTeams we achieved a mean speedup of 3.3 × in static cases, 3.0 × at low variability and the same performance in highly dynamic cases.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129250715","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
A Step toward Programming with Versions in Real-World Functional Languages 在现实世界的函数式语言中使用版本编程的一步
Yudai Tanabe, Luthfun Anshar Lubis, Tomoyuki Aotani, H. Masuhara
λVL is a core calculus based on the concept of programming with versions that supports multiple versions of program definitions and values inherently in the semantics of a language. However, since λVL was not designed as a surface language, its complex syntax and semantics only provide primitive constructs to manipulate versioned values. In order to realize the programming with versions concept in a real-world language, we propose a compilation method for functional languages through λVL and discuss how real-world programs can be written in a Haskell-like functional language with versions.
λVL是一种核心演算,基于支持多种版本的程序定义和语言语义中固有值的版本编程概念。然而,由于λVL不是作为表面语言设计的,其复杂的语法和语义只提供基本结构来操作版本值。为了在现实语言中实现版本化编程的概念,我们提出了一种通过λVL对函数式语言进行编译的方法,并讨论了如何用类haskell的带版本的函数式语言编写现实世界的程序。
{"title":"A Step toward Programming with Versions in Real-World Functional Languages","authors":"Yudai Tanabe, Luthfun Anshar Lubis, Tomoyuki Aotani, H. Masuhara","doi":"10.1145/3570353.3570359","DOIUrl":"https://doi.org/10.1145/3570353.3570359","url":null,"abstract":"λVL is a core calculus based on the concept of programming with versions that supports multiple versions of program definitions and values inherently in the semantics of a language. However, since λVL was not designed as a surface language, its complex syntax and semantics only provide primitive constructs to manipulate versioned values. In order to realize the programming with versions concept in a real-world language, we propose a compilation method for functional languages through λVL and discuss how real-world programs can be written in a Haskell-like functional language with versions.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"108 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127971260","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Generating Virtual Scenarios for Cyber Ranges from Feature-Based Context-Oriented Models: A Case Study 从基于特征的上下文导向模型生成网络范围的虚拟场景:一个案例研究
P. Martou, K. Mens, Benoît Duhoux, Axel Legay
A cyber range is a virtual training ground for security experts. Trainees are separated into attacking and defending teams, whose roles are either to compromise or to protect some critical infrastructure. As reuse of a same scenario may significantly reduce training efficiency, recent research proposed to automate the process of defining and deploying arbitrarily complex cyber range scenarios through the use of a virtual scenario description language (VSDL). However, it remains a challenge to generate VSDL scenarios dynamically, i.e. in an adaptive manner, to avoid having to redefine new VSDL scenarios for each new situation. Moreover, existing VSDLs often consider limited contextual information (e.g., only the virtualization budget) and do not link explicitly the vulnerabilities of their scenarios together, which prevents from proposing scenarios with more advanced cyber security exploits. In this vision paper, we rely on feature-based context-oriented modelling to generate relevant cyber range scenarios from an explicit user profile and exploits described in attack-defence trees. This result has high industrial potential, as it could enable a kind of on-demand cyber range scenario generation service.
网络靶场是安全专家的虚拟训练场。受训人员被分成进攻和防御两组,他们的任务是破坏或保护一些关键的基础设施。由于相同场景的重用可能会显著降低训练效率,最近的研究提出通过使用虚拟场景描述语言(VSDL)来自动化定义和部署任意复杂网络场景的过程。然而,动态生成VSDL场景仍然是一个挑战,即以一种自适应的方式,以避免必须为每个新情况重新定义新的VSDL场景。此外,现有的vsdl通常考虑有限的上下文信息(例如,只有虚拟化预算),并且没有明确地将其场景的漏洞链接在一起,这阻止了提出具有更高级网络安全漏洞的场景。在这篇愿景论文中,我们依靠基于特征的面向上下文的建模,从明确的用户配置文件和攻击防御树中描述的漏洞中生成相关的网络范围场景。这一成果具有很高的产业潜力,因为它可以实现一种按需网络范围场景生成服务。
{"title":"Generating Virtual Scenarios for Cyber Ranges from Feature-Based Context-Oriented Models: A Case Study","authors":"P. Martou, K. Mens, Benoît Duhoux, Axel Legay","doi":"10.1145/3570353.3570358","DOIUrl":"https://doi.org/10.1145/3570353.3570358","url":null,"abstract":"A cyber range is a virtual training ground for security experts. Trainees are separated into attacking and defending teams, whose roles are either to compromise or to protect some critical infrastructure. As reuse of a same scenario may significantly reduce training efficiency, recent research proposed to automate the process of defining and deploying arbitrarily complex cyber range scenarios through the use of a virtual scenario description language (VSDL). However, it remains a challenge to generate VSDL scenarios dynamically, i.e. in an adaptive manner, to avoid having to redefine new VSDL scenarios for each new situation. Moreover, existing VSDLs often consider limited contextual information (e.g., only the virtualization budget) and do not link explicitly the vulnerabilities of their scenarios together, which prevents from proposing scenarios with more advanced cyber security exploits. In this vision paper, we rely on feature-based context-oriented modelling to generate relevant cyber range scenarios from an explicit user profile and exploits described in attack-defence trees. This result has high industrial potential, as it could enable a kind of on-demand cyber range scenario generation service.","PeriodicalId":340514,"journal":{"name":"Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132060407","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Proceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1