标签: external-dependencies

信息隐藏与隐藏依赖关系

过程(或函数,模块等)设计中有哪些常见的最佳实践,用于平衡信息隐藏的需求和过程接口中的适当抽象级别以及引入隐藏依赖项所固有的问题?

更具体地说,假设我编写了一个名为getEmployeePhoneNbr(employeeId)的过程.在内部,通过查询从employeeId键入的数据库表来实现该过程.我想隐藏这些实现细节,但现在该过程依赖于外部文件,如果环境发生变化则会阻碍其使用.

只要程序使用外部资源(文件,数据库等),就会发生同样的情况.以某种方式在程序中硬编码该资源的使用感觉是错误的,但我不确定替代方案是什么.

请注意,我不是使用面向对象的语言; 在可能的范围内,我最感兴趣的是那些广泛适用于任何类型语言的答案.

谢谢,马特

abstraction information-hiding external-dependencies

5
推荐指数
1
解决办法
924
查看次数

NoSuchBeanDefinitionException:没有可用类型的合格 bean:预计至少有 1 个符合自动装配候选资格的 bean

我正在尝试将 Spring 4.xx 迁移到 Spring boot,它依赖于外部 spring 2.5 jar 中的类。我已经进行了所有自动装配更改,下面是我的应用程序类

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.xyz" })
public class MainApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApiApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

外部 jar 中的依赖类存在于 com.xyz.abc 包下,因此我将主应用程序类放置在 com.xyz 包下,并在同一包下添加了组件扫描

这是我的组件类,其依赖项已自动装配

@Component
public class ComponentClassA {
    @Autowired
    private ComponentClassB currencyService;
}

@Component
public class ComponentClassB {

    @Autowired
    private DependentClass depClass;
}
Run Code Online (Sandbox Code Playgroud)

DependentClass 是我在本地附加和构建的外部依赖 jar 中存在的类

构建应用程序时,所有文件的编译都很好,并且构建成功生成。但是当我启动应用程序时,出现以下错误

 Field DependentClass in com.xyz.ComponentClassB required a bean of type 'com.xyz.common.util.DependentClass' that could not be found.
Run Code Online (Sandbox Code Playgroud)

我不明白找不到外部 …

java spring external-dependencies autowired spring-boot

5
推荐指数
1
解决办法
4万
查看次数

错误:任务执行失败':app:validateExternalOverrideSigning'

我正在使用caldroid库进行日历活动,它工作正常.

但我需要改变它的风格.

所以我在这样的应用程序下添加了caldroid库(目录).

在此输入图像描述

我改变了我的依赖关系

依赖{...编译'com.roomorama:caldroid:2.3.1'...}

至

依赖{...编译项目(':libraries:caldroid')...}

然后,它在调试模式下工作正常.

但由于此消息,我无法生成签名的APK.

错误:任务':app:validateExternalOverrideSigning'的执行失败.未找到用于签署配置'externalOverride'的密钥库文件/Users/xxxxxxx.android.keystore.

有关于此错误的解决方案吗?

android external-dependencies gradle caldroid android-studio-import

3
推荐指数
2
解决办法
2万
查看次数

CMake 的 FetchContent 与 Makefile 构建的依赖项

我当前的项目需要一个使用 Makefile 构建的库。我想在项目编译期间编译这个库;此功能是 FetchContent 的主要卖点,它与 CMake 依赖项配合得很好。尽管如此,我无法让它与 Makefile 一起使用,也找不到有关如何执行此操作的示例。

FetchContent_Declare(
    make_lib
    URL http://url/library_code.tar.gz 
    BUILD_COMMAND ${CMAKE_COMMAND} -E env make -j 8
    BUILD_IN_SOURCE true  
    BINARY_DIR ""
)

FetchContent_GetProperties(make_lib)
if (NOT make_lib_POPULATED)
    FetchContent_Populate(make_lib)

    # here I would like to declare imported libraries:
    add_library(make_lib::libA STATIC IMPORTED GLOBAL)
    target_include_directories(make_lib::libA INTERFACE ${make_lib_SOURCE_DIR}/include)
    set_property(TARGET make_lib::libA   PROPERTY IMPORTED_LOCATION <path to "to be built" lib>)

endif()
Run Code Online (Sandbox Code Playgroud)
  • “编译时”执行是否可能make?
  • 如果可以的话,可以并行吗?
  • 是否可以使用依赖编译库声明导入的目标?

cmake external-dependencies

3
推荐指数
1
解决办法
6601
查看次数

如何将外部DLL限制为一个CPU?

我有一个程序,我想只在一个CPU上运行,所以它不会占用太多的系统资源.问题是,它调用外部DLL,自动使用所有可用的CPU内核.我没有外部DLL的源代码.如何将DLL限制为仅使用一个CPU?

编辑:感谢您的帮助,这是我用来限制到一个CPU(Windows)的代码:

// Limit the process to only 1 thread so we don't chew up system resources
HANDLE ProcessHandle = GetCurrentProcess();
DWORD ProcessAffinityMask;
DWORD SystemAffinityMask;
if(GetProcessAffinityMask(ProcessHandle,&ProcessAffinityMask,&SystemAffinityMask)
    && SystemAffinityMask != 0)
{
    // Limit to 1 thread by masking all but 1 bit of the system affinity mask
    DWORD NewProcessAffinityMask = ((SystemAffinityMask-1) ^ SystemAffinityMask) & SystemAffinityMask;
    SetProcessAffinityMask(ProcessHandle,NewProcessAffinityMask);
}
Run Code Online (Sandbox Code Playgroud)

编辑:结果Brannon设置流程优先级的方法更适合我想要的,这是为了防止流程咀嚼资源.这是代码(Windows):

// Make the process low priority so we don't chew up system resources
HANDLE ProcessHandle = GetCurrentProcess();
SetPriorityClass(ProcessHandle,BELOW_NORMAL_PRIORITY_CLASS);
Run Code Online (Sandbox Code Playgroud)

c++ dll multithreading external-dependencies

2
推荐指数
2
解决办法
1414
查看次数