小编vek*_*tor的帖子

PostgreSQL中两个数组的联合,没有取消

我在PostgreSQL中有两个我需要联合的数组.例如:

{1,2,3}工会{1,4,5}会回来{1,2,3,4,5}

使用连接(||)运算符不会删除重复的条目,即它返回 {1,2,3,1,4,5}

我在网上找到了一个解决方案,但我不喜欢它需要如何取消两个数组: select ARRAY(select unnest(ARRAY[1,2,3]) as a UNION select unnest(ARRAY[2,3,4,5]) as a)

是否有一个运算符或内置函数可以干净地结合两个数组?

arrays postgresql union plpgsql

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

我应该如何创建自动部署脚本?

我需要创建一些方法来获取在Linux服务器上部署的本地WAR文件.到目前为止我一直在做的是以下过程:

  1. 使用WinSCP上传WAR.
  2. 使用PuTTY SSH到服务器.
  3. 移动/重命名/删除某些文件文件夹以准备WAR爆炸.
  4. 爆炸战争.
  5. 发送电子邮件通知用户重启.
  6. 停止Tomcat服务器.
  7. 用于tail确保服务器正确停止.
  8. 更改符号链接以指向爆炸的WAR.
  9. 启动Tomcat.
  10. 用于tail确保服务器正确启动.
  11. 发送电子邮件通知用户已完成重启.

这些东西都相对简单.而且我确信有一百万种不同的方法可以做到这一点.我想听听一些选择.我的第一个想法是Bash脚本.我对脚本编写的经验很少,但认为这是一种很好的学习方法.我也有兴趣用Ruby/Python或类似这样的东西来做这件事,因为我几乎没有这些语言的经验.我认为作为一个年轻的开发人员,我绝对应该得到某种脚本语言.我可能也对某些可以为我做这些事情的软件解决方案感兴趣,虽然我认为脚本编写是一种更好的方式,为了简单和可定制性(我可能刚刚提出这个词).

对于那些使其成为现实的人的一些实际问题.您建议使用哪种语言来自动执行上面列出的流程?这对我来说是一个学习Bash/Ruby/Python /其他东西的好机会,还是我应该花10分钟的时间每周手工操作2-3次?我认为答案显然不是.我可以从计算机中自动执行这些操作,还是需要设置脚本以在Linux服务器中运行?电子邮件是我可以自动化的,还是我最好自己做这个部分?

我会这样做几乎肯定会出现更多的问题,所以提前做好准备.

UPDATE

我应该提一下,我正在使用Maven来构建WAR.所以如果我能用Maven完成所有这些,请告诉我.

deployment automation

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

Intent.putExtra(String,Bundle)vs Intent.putExtra(Bundle)

这个问题可能听起来很愚蠢,但我知道什么时候把活动名称放进去Intent.putExtra()?在一种情况下,我们只使用bundle进行额外的操作,而在其他情况下,我们使用类名传递它.如果我们使用Intent.putExtra(String, Bundle)已经在Intent构造函数中传递了活动名称,我有点困惑吗?

谢谢你的帮助!

java eclipse android android-intent

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

多个LEFT JOIN - 什么是"左"表?

多年来我一直在使用它,所以现在是时候充分理解它了.假设一个这样的查询:

SELECT 
  *
FROM a
LEFT JOIN b ON foo...
LEFT JOIN c ON bar...
Run Code Online (Sandbox Code Playgroud)

文件告诉我们,

T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 ON boolean_expression

LEFT OUTER JOIN

首先,执行内连接.然后,对于T1中不满足与T2中的任何行的连接条件的每一行,在T2的列中添加具有空值的连接行.因此,对于T1中的每一行,连接表始终至少有一行.

问题很简单:T1在这种情况下是什么?是a吗?或者是a LEFT JOIN b ON foo吗?(或者,它是一样的吗?)

sql postgresql join outer-join

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

Java泛型与工厂

建立:

我有一些格式化程序的接口:

interface Formatter<T extends AbstractItem> {
  String format(T item);
}
Run Code Online (Sandbox Code Playgroud)

我有一个工厂创建这样的格式化程序:

public class Factory {
  public static Formatter<? extends AbstractItem> create() {
    switch (something) {
      case SOMETHING: return new Formatter<SomeItem>() { String format(SomeItem item) {...}};
      case SOMETHING_ELSE: return new Formatter<OtherItem>() { String format(OtherItem item){...}};
    }
Run Code Online (Sandbox Code Playgroud)

现在我使用这个工厂来获取格式化程序并使用它:

1: Formatter formatter = Factory.create();
2: for (AbstractItem item : items) {
3:   formatter.format(item);
4: }
Run Code Online (Sandbox Code Playgroud)

items列表仅包含能够处理的AbstractItem子类型formatter.

问题:

我收到两个警告:

Line 1: Formatter is a raw type. References …
Run Code Online (Sandbox Code Playgroud)

java generics factory

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

Log4j2:日志堆栈跟踪无一例外

我正在使用Log4j2,一些beta-10版本。

发生异常时,很容易记录堆栈跟踪:

} catch (Exception ex) {
  log.error("Doing stuff went wrong", ex);
}
Run Code Online (Sandbox Code Playgroud)

假设虽然没有Throwable可用的对象-我只是意识到有一个问题,想记录一个错误:

 if (stuffIsWrong()) {
   log.error("Stuff went wrong");
 }
Run Code Online (Sandbox Code Playgroud)

如何告诉Log4j2从当前方法开始记录堆栈跟踪?

java log4j2

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

如何使用变体记录代码?(ifs的JavaDoc)

tl; dr是否有JavaDoc for ifs?

介绍

我正在为多个客户编写企业应用程序.99%的代码库是共享的,但不时有这样的变体:

if (user.hasModule(REPORTS)) { 
  ...conditional code... 
}
Run Code Online (Sandbox Code Playgroud)

我现在想为用户记录所有这些变体.从文档中可以清楚地看到,如果我打开,会发生什么.模块REPORTS.我相信这个文档应该用JavaDoc方式编写 - 这意味着它应该尽可能接近条件代码.它可能看起来像这样:

/** Enables the cool report. */
if (user.hasModule(REPORTS)) { 
  ...conditional code... 
}
Run Code Online (Sandbox Code Playgroud)

或这个:

@Doc(text="Enables the cool report.")
if (user.hasModule(REPORTS)) { 
  ...conditional code... 
}
Run Code Online (Sandbox Code Playgroud)

或许这个:

if (user.hasModule(REPORTS, "Enables the cool report.")) { 
  ...conditional code... 
}
Run Code Online (Sandbox Code Playgroud)

结果基本上是每个模块的注释列表.

Module    | Comments
----------+--------------------
REPORTS   | Enables the cool report.
REPORTS   | Allows exporting the reports.
IMPORT    | Allows importing the data.
Run Code Online (Sandbox Code Playgroud)

如何从代码中收集所有文档注释?我正在考虑几种方法:

源代码提取 …

java javadoc

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

合并时从存储库中删除文件会使它们消失

这是一个测试代表,展示了这个问题:https://bitbucket.org/vektor330/bugtest

事件的顺序是这样的:

  1. 添加一些初始提交.
  2. 某甲增加Conflictsourcedevelop.
  3. 某乙补充Conflictmaster.
  4. 某乙合并developmaster,在解决冲突Conflict使用"地雷"策略,删除source从资源库中.现在这是一个空提交,但可以提交并推回到远程.

结果是:source已完全从存储库中消失.它出现在7dfa23e中,它有一个日志出现在回购中,它在5080a24中悄然消失,没有一条痕迹.

我希望提交5080a24显示" source已删除",Git或我的期望有什么问题?

git git-merge

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

如何测试ThreadLocal是否已初始化而没有实际执行此操作?

我想测试一个ThreadLocal是否已经初始化而没有实际初始化它.当然,代码需要是线程安全的.理想情况下我想要这样的东西:

class TestableThreadLocal<T> extends ThreadLocal<T> {
    public boolean isInitialized() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我该如何实现这种方法呢?

编辑:动机:我有一个子类ThreadLocal来覆盖initialValue().但是,我并不总是需要初始化,特别是因为它可能会导致多类加载器环境中的内存泄漏.一个简单的测试可以帮助我编写代码以避免意外初始化.

java multithreading thread-safety

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

为什么组合pdf2ps/ps2pdf会缩小PDF?

在研究如何压缩一堆带有图片的PDF时(理想情况是以无损方式,但我会满足于有损),我发现有很多人建议这样做:

$ pdf2ps file.pdf
$ ps2pdf file.ps
Run Code Online (Sandbox Code Playgroud)

这有效!生成的文件较小,看起来至少足够好.

  • 这是如何工作的?
  • 我可以在此过程中调整哪些设置?
  • 如果有一些有损转换,那是哪一个?
  • 捕获量在哪里?

compression pdf

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