小编xeh*_*puk的帖子

多个重载方法:null是否等于NullPointerException?

public class TestMain {

    public static void methodTest(Exception e) {
        System.out.println("Exception method called");
    }

    public static void methodTest(Object e) {
        System.out.println("Object method called");
    }

    public static void methodTest(NullPointerException e) {
        System.out.println("NullPointerException method called");
    }

    public static void main(String args[]) {
        methodTest(null);
    }   
}
Run Code Online (Sandbox Code Playgroud)

输出:调用NullPointerException方法

java null overloading reference nullpointerexception

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

a.style.display:分配给基元的值将丢失

考虑这个JavaScript代码段:

var a = document.createElement("a");
a.style.display = "none";
Run Code Online (Sandbox Code Playgroud)

IntelliJ IDEA 2016.2突出显示a.style.display并提供此提示:

分配给基元的值将丢失

检查JavaScript原语类型的包装器是否使用不当.此外,当修改基本类型的属性时将产生警告,因为指定的值将丢失

IntelliJ IDEA提示

CSSStyleDeclaration不是原始类型,因此赋值display不会丢失.

String是一个包装类型.我如何使用它(不正确)?

代码似乎在Chrome和Edge中运行良好.这是怎么回事?

javascript intellij-idea

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

再现"关闭一个foreach的变量"得到了

使用Visual Studio 2013,我正在尝试重现Eric Lippert的博客文章"关闭循环变量被认为有害"中提到的问题.

在项目属性中,我选择"C#3.0"作为语言版本(Build> Advanced ...).此外,我选择".NET Framework 3.5"作为目标框架,好像我认为这不应该是必要的,因为这只涉及语言.

运行他的代码:

using System;
using System.Collections.Generic;

namespace Project1
{
    class Class1
    {
        public static void Main(string[] args)
        {
            var values = new List<int>() { 100, 110, 120 };
            var funcs = new List<Func<int>>();
            foreach (var v in values)
            {
                funcs.Add(() => v);
            }
            foreach (var f in funcs)
                Console.WriteLine(f());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

120
120
120

实际产量:

100
110
120

正如埃里克·利珀特(Eric Lippert)自己所说的那样"C#在foreach中重用变量是否有原因?" :

for …

c# visual-studio visual-studio-2013

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

如果选项是 Some 则返回 Err 的惯用方法

如果遇到以下情况,我们可以使用or_else和提前?返回:ErrNone

let o = None;
let x = o.ok_or(666)?;
Run Code Online (Sandbox Code Playgroud)

但如果我们的预期相反呢?如果出现以下情况,请尽早返回Some

let o = Some(42);
if o.is_some() {
    return Err(666);
}
Run Code Online (Sandbox Code Playgroud)

我们也能以某种方式做到这一点?吗?

error-handling rust option-type

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

Git Bash 无法解析 %userprofile%

我使用的是 Windows 8.1 Pro 和 Git 2.7.1.windows.2。

我的问题是不言自明的:

xehpuk@XEHPUK MINGW64 /d/the-next-big-thing (develop)
$ git pull
Could not create directory '/%userprofile%/.ssh'.
percent_expand: unknown key %/
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

xehpuk@XEHPUK MINGW64 /d/the-next-big-thing (develop)
$ cd ~
bash: cd: /%userprofile%: No such file or directory

xehpuk@XEHPUK MINGW64 /d/the-next-big-thing (develop)
$ echo $USERPROFILE
C:\Users\xehpuk
Run Code Online (Sandbox Code Playgroud)

这几天前就起作用了,我不记得对系统进行了任何更改。

显然,我是一个 Git 初学者,也是一个主要的 Windows 用户(如果这很重要的话)。


我通过将用户环境变量设置为 解决了这个GIT_SSH_COMMAND问题"/c/Program Files/Git/usr/bin/ssh.exe" -i …

windows git git-bash

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

是否可以按计算列排序而不将其包含在结果集中?

我有这个查询:

SELECT Column1, Column2, Column3, /* computed column */ AS SortColumn
FROM Table1
ORDER BY SortColumn
Run Code Online (Sandbox Code Playgroud)

SortColumn除了定义对结果集进行排序的顺序之外,没有其他用途。因此我想在结果集中省略它以减少发送到客户端的数据的大小。以下失败...

SELECT Column1, Column2, Column3
FROM (
    SELECT Column1, Column2, Column3, /* computed column */ AS SortColumn
    FROM Table1
    ORDER BY SortColumn
) AS SortedTable1
Run Code Online (Sandbox Code Playgroud)

… 因为:

消息 1033,级别 15,状态 1

ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP 或 FOR XML。

所以有这个hacky解决方案:

SELECT Column1, Column2, Column3
FROM (
    SELECT TOP /* very high number */ Column1, Column2, Column3, /* computed column */ AS SortColumn
    FROM Table1 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

将键列和多个值列聚合为 JSON 对象

我有这张表:

CREATE TABLE my_table (
    id uuid PRIMARY KEY,
    name text NOT NULL,
    key text NOT NULL,
    x int NOT NULL,
    y int NOT NULL,
    UNIQUE (name, key)
);
Run Code Online (Sandbox Code Playgroud)

有了这个数据:

id 名称 键 xy
12345678-abcd-1234-abcd-123456789000 富一 1 2
12345678-abcd-1234-abcd-123456789001 富 b 3 4
12345678-abcd-1234-abcd-123456789002 富c 5 6
12345678-abcd-1234-abcd-123456789003 富德 7 8
12345678-abcd-1234-abcd-123456789004 条 v 0 0
12345678-abcd-1234-abcd-123456789005 酒吧 w 1 1
12345678-abcd-1234-abcd-123456789006 巴 z 2 2
12345678-abcd-1234-abcd-123456789007 巴兹 8 7
12345678-abcd-1234-abcd-123456789008 巴兹 b 6 5
12345678-abcd-1234-abcd-123456789009 巴兹 c 4 3 …

postgresql json aggregate-functions

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

如何验证结构创建?

我正在通过示例研究Rust。我目前在TryFromTryInto。这是他们的代码:

struct EvenNumber(i32);

impl TryFrom<i32> for EvenNumber {
    type Error = ();

    fn try_from(value: i32) -> Result<Self, Self::Error> {
        if value % 2 == 0 {
            Ok(EvenNumber(value))
        } else {
            Err(())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该实现防止创建EvenNumber具有奇数的实例,但前提是我调用try_from(或try_into)。我仍然可以EvenNumber(1337)直接创建一个。

在 Java(和相关语言)中,可以验证构造函数内的实例创建,例如:

struct EvenNumber(i32);

impl TryFrom<i32> for EvenNumber {
    type Error = ();

    fn try_from(value: i32) -> Result<Self, Self::Error> {
        if value % 2 == 0 {
            Ok(EvenNumber(value))
        } …
Run Code Online (Sandbox Code Playgroud)

validation struct rust

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

JSTL c:forEach在JSF h:dataTable中不起作用

我有一个JSF项目的问题.

  • GlassFish Server 3.1.2
  • Mojarra 2.1.6

我正在尝试显示包含请求标头字段的表.因此我写了这个托管bean:

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

@ManagedBean
@RequestScoped
public class RequestHeader extends LinkedHashMap<String, List<String>> {
    private List<String> keys;

    @PostConstruct
    public void init() {
        final HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        keys = Collections.list(request.getHeaderNames());
        for (final String key : keys) {
            final List<String> value = Collections.list(request.getHeaders(key));
            final List<String> oldValue = get(key);
            if (oldValue == null) {
                put(key, value);
            } else {
                oldValue.addAll(value);
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

datatable foreach jsf jstl

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

有效地计算文件中的行数

我正在尝试计算一个不太小的文本文件(多个 MB)中的行数。我在这里找到的答案表明:

(Get-Content foo.txt | Measure-Object -Line).Lines
Run Code Online (Sandbox Code Playgroud)

这有效,但性能很差。我猜整个文件被加载到内存中,而不是逐行流式传输。

我用 Java 创建了一个测试程序来比较性能:

(Get-Content foo.txt | Measure-Object -Line).Lines
Run Code Online (Sandbox Code Playgroud)

纯 Java 解决方案的速度提高了约 80 倍。

是否有一种内置的方法可以以可比的性能完成这项任务?如果这很重要,我使用的是 PowerShell 4.0。

powershell

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

不能隐式将类型SqlBoolean转换为bool,或者可以吗?

请考虑以下代码行:

System.Data.SqlTypes.SqlBoolean sb = true; // (1)

bool b = sb; // (2)

bool b = sb ? true : false; // (3)

if (sb) // (4)
{

}
Run Code Online (Sandbox Code Playgroud)

(1)工作正常,我猜是因为public static implicit operator SqlBoolean(bool x).

(2)给我以下错误(CS0266):

无法将类型'System.Data.SqlTypes.SqlBoolean'隐式转换为'bool'.存在显式转换(您是否错过了演员?)

据我所知,从转换boolSqlBoolean是明确的(public static explicit operator bool(SqlBoolean x)),可能是因为SqlBoolean.IsNull可能是真实的.

但那为什么(3)(4)有效呢?这些看起来像隐式转换.

c# .net-4.0 implicit-conversion

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