相关疑难解决方法(0)

require()和library()有什么区别?

require()和之间有什么区别library()

packages r

524
推荐指数
8
解决办法
13万
查看次数

Java:如何有效地检查空指针

有一些模式用于检查方法的参数是否已null赋值.

首先是经典之作.它在自制代码中很常见,并且很明显可以理解.

public void method1(String arg) {
  if (arg == null) {
    throw new NullPointerException("arg");
  }
}
Run Code Online (Sandbox Code Playgroud)

其次,您可以使用现有框架.该代码看起来更好一点,因为它只占用一行.缺点是它可能会调用另一个方法,这可能会使代码运行得慢一些,具体取决于编译器.

public void method2(String arg) {
  Assert.notNull(arg, "arg");
}
Run Code Online (Sandbox Code Playgroud)

第三,你可以尝试调用一个没有副作用的方法.这可能看起来很奇怪,但它比上述版本的令牌更少.

public void method3(String arg) {
  arg.getClass();
}
Run Code Online (Sandbox Code Playgroud)

我没有看到广泛使用的第三种模式,感觉就像我自己发明了它一样.我喜欢它的简洁性,因为编译器很有可能完全优化它或将其转换为单个机器指令.我还用行号信息编译我的代码,所以如果NullPointerException抛出一个,我可以追溯到确切的变量,因为我每行只有一个这样的检查.

您更喜欢哪种支票,为什么?

java optimization coding-style nullpointerexception

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

使用Java中的max-heap对数组进行排序

我正在研究一个程序,它通过将数组分成较小的最大堆并从每个数据库中提取最大整数来对数组进行排序,然后将其从堆中删除并再次运行直到每个堆都为空,但我不能似乎弄清楚了.

从我的立场代码看起来不错,但我没有得到我正在寻找的结果.我的输入是随机创建的,并生成512个整数的数组.这是一个例子运行的打印 -

Original Array  -391 176 -380 -262 -474 327 -496 214 475 -255 50 -351 179 -385 -442 -227 465 127 -293 288
Sorted Array 475 465 327 327 327 327 327 327 327 327 327 327 327 327 327 327 327 327 327 327 
n = 20 k = 2
The number of comparisons is 243
Run Code Online (Sandbox Code Playgroud)

谁能发现我的代码有什么问题?我会很高兴的.

(1)主程序

 import java.io.File;
 import java.util.*;
 import java.io.FileNotFoundException;
 import java.util.Scanner;
 import java.io.IOException;

 public class Project {
    static final int n = …
Run Code Online (Sandbox Code Playgroud)

java arrays sorting heapsort

7
推荐指数
1
解决办法
1128
查看次数

在抽象类中保存数据的最佳实践

所以,举一个例子,假设我们有一个abstract class被调用的Question,该问题包含很多字符串,一个用于问题本身,一个用于答案,两个响应发布给用户,如果他的问题是对/错.

public abstract class Question {

    private final String question;
    private final String answer;
    private final String answerCorrect;
    private final String answerWrong;

}
Run Code Online (Sandbox Code Playgroud)

我的问题基本上是,初始化所有字符串的常用方法是什么?到目前为止,我已经编写了2个关于如何做的版本,它们有它们的上下限,我想知道,如果有这种"最佳编码实践".


版本A
初始化构造函数中的所有内容.

public abstract class Question {

    //...

    public Question(String question, String answer, String answerCorrect, String answerWrong) {

        this.question = question;
        this.answer = answer;
        this.answerCorrect = answerCorrect;
        this.answerWrong = answerWrong;

    }
}
Run Code Online (Sandbox Code Playgroud)

这看起来非常方便,我遇到的唯一问题是用户不确定字符串必须按顺序排列.

public class ExampleClass extends Question {

    public ExampleClass() {
        super("I think, that's the answer", "and that's the question", …
Run Code Online (Sandbox Code Playgroud)

java abstract-class initialization

6
推荐指数
1
解决办法
1041
查看次数

通过合同和断言声明进行设计

我对这种Design by Contract方法很感兴趣.似乎preconditions必须使用已检查的异常来强制执行它们.
但是post-conditions,class-invariants我认为这assertions是首选.
我对吗?如果我是正确的,为什么允许post-conditionsclass-invariants禁用可能被禁用的断言?不应该强制执行后置条件和不变量吗?

java assert design-by-contract post-conditions

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

如何在'MultiValueDictKeyError`中使用Django中的400响应?

从瓶的到来,request.args[key]request.form[key] 与400回应如果该键不存在.这具有快速失败的良好特性.

在Django中,request.GET[key]request.FORM[key]提出HttpResponseBadRequest如果该键不存在,这会导致你的API与未处理的,如果一个500个响应状态.我已经看到其他答案推荐request.GET.get(key),但是无意中放松了API合同,这可能允许客户端漏洞漏掉(例如查询参数拼写错误,忘记包含参数等).

我可以手动检查所需的查询参数:

arg1 = request.POST.get('arg1')
if not arg1:
    raise HttpBadRequest('"arg1" was not provided.')

arg2 = request.POST.get('arg2')
if not arg2:
    raise HttpBadRequest('"arg1" was not provided.')

arg3 = request.POST.get('arg3')
if not arg3:
    raise HttpBadRequest('"arg3" was not provided.')
Run Code Online (Sandbox Code Playgroud)

但这留下了很多错误的余地.(你注意到错字吗?)

我可以手动处理HttpResponseBadRequest:

def my_view(request):
    try:
        arg1 = request.POST['arg1']
        arg2 = request.POST['arg2']
        arg3 = request.POST['arg3']
    except MultiValueDictKeyError as ex:
        raise HttpBadRequest('"{}" was not provided.'.format(ex))
Run Code Online (Sandbox Code Playgroud)

但是现在你在写视图时还有一件事需要记住.

将上面的例子与Flask的等价物进行比较: …

python forms django http-status-codes

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

SHA256 计算的哈希值似乎有问题

我有以下类,它计算我想要发送到服务器的文件的哈希值。

public class GetHashCode 
    {
        public static string CalculateHash()
        {
            try
            {
                var filePath = "\\\\abc\\abc-fs\\_My-Data\\user\\Documents\\test.jpg";
                var fileStream = File.Open(filePath, FileMode.Open,
                FileAccess.Read, FileShare.ReadWrite);
                var hashProvider = SHA256.Create();
                var buffer = hashProvider.ComputeHash(fileStream);
                return Convert.ToBase64String(buffer);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
                return null;
            }        
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我通过另一个应用程序将文件发送到服务器时,我可以看到此操作的哈希与我使用上面的代码创建的哈希有点不同:

来自其他应用程序的哈希值(正确的):

R7av4w6Ow3M3z%252bpKPBBpojzvLvyl6aM0Q7q%252bJ%252fDvLPQ%253d
Run Code Online (Sandbox Code Playgroud)

用我的代码生成的哈希:

R7av4w6Ow3M3z+pKPBBpojzvLvyl6aM0Q7q+J/DvLPQ=
Run Code Online (Sandbox Code Playgroud)

所以似乎特殊字符的编码有问题,但我还不知道如何解决这个问题。有人可以帮忙吗?提前致谢!

c# hash sha256

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

options.fetch.我不明白

看看这个帖子的讨论.我无法理解如何使用块来获取是一个更好的解决方案.

ruby ruby-on-rails

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