小编kay*_*ya3的帖子

耦合 - 除了更改方法签名或返回类型之外,更改一个模块如何影响另一个模块?

在高耦合环境中,更改一个模块会影响另一个模块。好的,但我看不出这怎么可能(除了更改方法签名或返回类型)?

好吧,如果我更改一个类,只有在以下情况下它才能破坏其他类中的代码:

  1. 如果我突然更改方法的返回类型 - 那么我将不得不转到另一个类并修复类型不匹配的问题。
  2. 如果我更改方法签名 - 那么我将不得不转到所有依赖类并在调用更改的方法的任何地方更改方法参数。

出于同样的原因,依赖抽象(接口)是很好的,这样我们就可以保证定义的方法将在那里。

除此之外,更改一个类还能如何影响另一个依赖类?

language-agnostic oop dependencies design-patterns interface

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

如何生成最大步长为 1 的所有非递减序列?

我正在尝试获取具有某些限制的数字 0-14 的每种可能组合的列表。我不完全确定如何表达这个,所以让我解释一下。

  • 每个列表的长度为 15。
  • 第一个列表将是[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  • 每个列表中每个索引处的值不能超过索引本身,并且可以与前一个数字相同也可以比前一个数字高一个
  • 最终名单将是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

我正在寻找一个列表列表,其中包含具有这些约束的所有可能序列(例如,一个可能的序列是[0, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 7, 8, 8])。

我该怎么做?

python combinatorics

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

如何在无限生成器中重置变量?

我有一个无限生成器对象,它产生一些数字,如下所示:

def index_generator():
    i = 0
    while True:
        yield i**2
        i += 1

my_gen = index_generator()

for i in range(100):
    print(next(my_gen))  # outputs 0,1,4,9, ...
Run Code Online (Sandbox Code Playgroud)

现在我需要i在一些迭代后将变量重置为零,以再次使用生成器;让我们在我的代码中再说 100 次。我不能my_gen = index_generator()每次都重复。那么,有什么解决办法吗?

python generator

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

如何让 TypeScript 忽略导入?

假设我有以下 TypeScript 文件:

import { X, Y, Z } from "./abc";

console.log("Done!");
Run Code Online (Sandbox Code Playgroud)

如何让 TypeScript 忽略导入语句(IE:删除它),以便编译结果如下所示:

console.log("Done!");
Run Code Online (Sandbox Code Playgroud)

import typescript

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

为什么我们可以在Optional.of()上调用.orElse()?

我很好奇为什么有可能这样做(至少在Java 8上如此):

Optional.of(null).orElse("something");
Run Code Online (Sandbox Code Playgroud)

Optional.of(null)基本上是保证的空指针。使得对其进行调用.orElse()成为可能,使笨拙的开发人员意外陷入困境。我一直在四处看看是否有任何理由。也许在某些情况下这应该解决?

java optional java-8

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

JVM 是否使用系统调用来寻找操作系统功能?

我们知道 JVM 调用底层系统来分配内存和 CPU 时间、访问文件等等。它如何在内部工作以实现其活动?

JVM 是否使用系统调用?

java jvm

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

Dijkstra 的算法是确定性的吗?

我认为 Dijkstra 的算法是确定的,因此如果您选择相同的起始顶点,您将获得相同的结果(到每个其他顶点的距离相同)。但我不认为它是确定性的(它为每个操作定义了以下操作),因为这意味着它首先不必搜索最短距离。

我对么?如果我错了,您能否解释一下为什么它是确定性的,并举个例子?

algorithm deterministic dijkstra

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

一次性局部变量是 final 是什么意思?

在现有代码库中工作时,我遇到了类似的事情。

public static int getDatePlusDaysInMillis(int days) {
    final int DAY = 24 * 60 * 60 * 1000;

    return System.currentTimeMillis() + DAY * days;
}
Run Code Online (Sandbox Code Playgroud)

逻辑本身并不重要,因为我稍微修改了代码,所以我没有复制和粘贴业务代码。

我想引起注意的是final int DAY。有什么理由声明DAYfinal?它的范围仅限于此方法,并且仅在其中使用一次。它没有伤害任何东西,但我觉得它看起来很奇怪,想问问这个变量被声明是否有任何意义final

java

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

无法从 .class 读取注释

我想使用核心 java 读取类级别的注释。我试过这个:

注解:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Fix {

    public String[] author() default "";
}
Run Code Online (Sandbox Code Playgroud)

班级:

@Fix(author="John Doe")
public class TestClass {

    public void test(){

    }
}
Run Code Online (Sandbox Code Playgroud)

读取类的测试方法:

ResourcePatternResolver resolversec = new PathMatchingResourcePatternResolver();
            Resource[] resour = resolversec.getResources("classpath*:/com/validation/*.class");
            Class<?> cl = resolversec.getClassLoader().loadClass("com.validation.ValidateCharacteristicsProcessor");

            if(cl != null){
                out.println("Class is not null " + cl.getSimpleName());
            }

            Fix fix = cl.getAnnotation(Fix.class);
            if (fix != null) {
                out.println("!!!! " + fix.author());
            }
Run Code Online (Sandbox Code Playgroud)

但是注释@Fix是空的。您知道阅读此注释的正确方法是什么吗?

填写示例:https : //pastebin.com/KbBAZVfB

java reflection spring

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

Python中块的概念

文档指出

Python 程序是由代码块构建的。块是作为一个单元执行的一段 Python 程序文本。以下是块:模块、函数体和类定义。

这似乎意味着,与我的想法相反,缩进的代码片段,例如 if 语句或 for 循环的主体不是block

我读得正确吗?作为一个单元执行意味着什么(例如为什么 for 循环不符合这个定义)?如果不是块,您将缩进的代码段称为什么?

python

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