小编Ash*_*Ash的帖子

可能的Java泛型(模板)专业化(覆盖具有特定类型的模板类型)

我想知道在Java中专门化泛型类型的选项是什么,即在模板化的类中对某些类型进行特定的覆盖.

在我的例子中,我是一个泛型类(类型为T)通常返回null,但返回""(空字符串),当T是String类型时,或者当它是Integer类型时返回0(零)等.

仅提供方法的类型特定重载会产生"方法不明确"错误:

例如:

public class Hacking {

  public static void main(String[] args) {
    Bar<Integer> barInt = new Bar<Integer>();
    Bar<String> barString = new Bar<String>();

    // OK, returns null
    System.out.println(barInt.get(new Integer(4)));

    // ERROR: The method get(String) is ambiguous for the type Bar<String>
    System.out.println(barString.get(new String("foo")));
  }

  public static class Bar<T> {

    public T get(T x) {
      return null;
    }

    public String get(String x) {
      return "";
    }  
  }
}
Run Code Online (Sandbox Code Playgroud)

是使用特定类型子类化泛型类的唯一选项(请参阅以下示例中的StringBar?

  public static void main(String[] args) {
    Bar<Integer> barInt = new Bar<Integer>();
    StringBar …
Run Code Online (Sandbox Code Playgroud)

java generics

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

编译时间(预处理器)字符串散列

有没有办法在编译时使用C/C++预处理器(甚至模板元编程)创建字符串的哈希?

例如 UNIQUE_SALT("HelloWord", 3DES);

想法是HelloWorld不会出现在已编译的二进制文件中,只是一个哈希.

编辑:这些声明中有许多分布在大型代码库中.

hash c-preprocessor

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

在nginx上使用一次性cookie的非常简单的身份验证

我有一个网站,仅供3名程序员私下使用.它是由nginx直接提供的简单HTML,但旨在用于办公室内外.

我想要一个简单的密码或身份验证方案.我可以使用HTTP身份验证,但这些往往会经常过期,这使人们很难使用.我也很紧张,有人嗅到比饼干更容易.

所以我想知道我是否可以在JavaScript中使用唯一的长ID在浏览器上设置cookie,并以某种方式告诉nginx只接受具有此cookie的请求(对于特定的子域).

这很简单吗?我如何能

  1. 告诉nginx按cookie过滤
  2. 在浏览器中,设置一个永不过期的cookie?

authentication cookies nginx http-authentication password-protection

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

使用openid作为静态内容身份验证的最简单方法

我有一个私人网站,用作来自世界各地的工作人员的内部网站点,他们拥有我的Google Apps域帐户(example.com).他们目前使用OpenId登录各种协作工具,所以我也希望将它用于我的网站.

  1. 我想使用Google Apps提供的OpenID登录(而不是基本的HTTP身份验证)保护我的私人会员专用网站上的静态内容.

  2. 我知道任何人都可以成为OpenID提供商,所以我想将其限制为一个域名 - 特别是我的Google Apps域名.

目前,我的静态内容是通过nginx提供的.我更喜欢一个简单的nginx模块,它只需要一些设置即可处理.

如果我不得不弄脏,我不介意设置一个基本的Python(比如Django)或Java服务器来处理这个,但我不想使用PHP或Ruby.

openid nginx basic-authentication google-apps static-content

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

在Git中提交之前临时清除未跟踪的文件

每当我提交时,我担心我可能会错过依赖关系,并且我正在寻找最简单的方法来隔离测试git树,以确保git索引(“暂存”)中的内容实际上可以编译/运行他们自己的。

我的代码依赖关系存在于我执行“ git add”的文件系统中,因此简单的编译和运行测试无法保证如果将树(或暂存区)检出到干净的文件系统上,则我签入的内容不会编译/运行。

我可以有一个连续的构建,可以在提交后进行检查,但是我不希望在以后不得不修补的历史记录中没有任何错误的提交。因此,我想要一种创建隔离环境的方法,该环境包括树的检出以及索引/临时区域。

我考虑过的一件事是两次使用git stash,即:

  1. 调用“ git stash”将文件保存在索引中
  2. 以某种方式获取未跟踪文件的列表,“ git add”所有这些文件,保存新的存储
  3. 删除所有以前未跟踪的文件
  4. 恢复原始存储
  5. 现在,我应该拥有一个干净的环境,该环境只有已签入的代码以及可以编译和测试的登台区域中的代码。
  6. 完成后,我将还原未跟踪文件的存储,然后对其进行取消跟踪,以使我保持原先的位置。

(这些未跟踪的文件可能有用,但不一定要我检查到存储库中的内容-例如eclipse项目)。

不过,我有一种过度设计一个简单问题的感觉。

git testing commit pre-commit

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

电子表格公式将所有匹配收集到一个单元格中

我有一个看起来像这样的电子表格:

A             B              C          D                
FirstName     SurnameName    Address    UniqueFamilyId      
---------------------------------------------------------
Abe           Black          1 Elm Ave  :Black:1 Elm Ave:
Joe           Doe            7 Park Ln  :Doe:7 Park Lane:
Jack          Black          1 Elm Ave  :Black:1 Elm Ave:
Bill          Doe            2 5th Ave  :Doe:2 5th Ave:
Harry         Doe            7 Park Ln  :Doe:7 Park Lane:
Sam           Doe            7 Park Ln  :Doe:7 Park Lane:
Run Code Online (Sandbox Code Playgroud)

我创建了UniqueFamilyId列,以便基本上唯一地标识每个系列.

我正在尝试制定一个公式,将所有居住在同一地址的人的名字收集到一个单元格中 - 即一个将填写E列(AllFirstNames)的公式.

A             B              C          D                    E
FirstName     SurnameName    Address    UniqueFamilyId       AllFirstNames
-------------------------------------------------------------------------------
Abe           Black          1 Elm Ave  :Black:1 Elm …
Run Code Online (Sandbox Code Playgroud)

google-sheets array-formulas google-sheets-formula

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

只有匹配第一个匹配的全局标志的正则表达式

为什么:

/(\[#([0-9]{8})\])/g.exec("[#12345678] [#87654321] [#56233001] [#36381069] [#23416459] [#56435355]")
Run Code Online (Sandbox Code Playgroud)

返回

["[#12345678]","[#12345678]","12345678"]

我希望它能匹配所有这些数字,但它看起来太贪心了.

[#12345678] [#87654321] [#56233001] [#23438459] [#56435355] 12345678 87654321 56233001 36381069 23416459 56435355

javascript regex regex-greedy

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