小编Chr*_*rno的帖子

使用Google Guava Collections2.transform的怪异

我并不完全确定能够解决这个问题的标题是什么.这看起来像Java一样,但它只是使用Guava Collections2.transform.变换器在迭代"结果"期间提供完全不同的对象实例,然后在"结果"最终返回时包含的内容.因此,'setDateStamp()'实际上看起来并不起作用,因为它被设置在似乎刚出现并像鬼一样消失的实例上.

当我实现Collections2.transform()方法的逻辑等价物(注释掉代码)时,我得到了我期望的结果.我已经介绍了谷歌代码,断点和所有内容,并且没有通过除基础函数之外的任何方法创建新实例的位置.

我得到了他们的实现正在做的事情:根据需要进行转换.不复杂.那么为什么地狱不起作用呢?

这是有问题的代码以及一些调试

@Component
public class SurveyResultToQuestionResults implements Function<SurveyResult, Collection<QuestionResult>> {

@Autowired
private QuestionResultDtoToDomain dtoToDomain;

@Override
public Collection<QuestionResult> apply(@Nullable SurveyResult input) {
    Collection<QuestionResult> results = new HashSet<QuestionResult>();
    if (input != null) {
           // substitute this
//            for (QuestionResultDto dto : input.getResults()) {
//                QuestionResult result = dtoToDomain.apply(dto);
//                results.add(result);
//            }
        // for this
        results = Collections2.transform(input.getResults(), dtoToDomain);
        for (QuestionResult result : results) {
            long time = input.getSurveyTime().getTime();
            Timestamp dateStamp = new Timestamp(time);
            result.setDateStamp(dateStamp);
        }

    }
    return results; …
Run Code Online (Sandbox Code Playgroud)

java mockito guava

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

gradle 构建本地工程。在 docker 容器中,它没有。为什么?

情况很简单:

这是我的本地环境:

cbongiorno at wa-cbongiorno-mba in /Volumes/dev/sterling/java-user-login-service on master [!$]
$ gradle -v

------------------------------------------------------------
Gradle 4.0
------------------------------------------------------------

Build time:   2017-06-14 15:11:08 UTC
Revision:     316546a5fcb4e2dfe1d6aa0b73a4e09e8cecb5a5

Groovy:       2.4.11
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_131 (Oracle Corporation 25.131-b11)
OS:           Mac OS X 10.12.5 x86_64
Run Code Online (Sandbox Code Playgroud)

这是我运行的构建命令:

gradle compileJava check assemble && history | tail -3
Run Code Online (Sandbox Code Playgroud)

结果如下:

BUILD SUCCESSFUL in 3m 3s
38 actionable tasks: 38 executed
 1496  gradle clean
 1497  gradle compileJava check assemble && history | tail …
Run Code Online (Sandbox Code Playgroud)

java gradle redis docker

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

测试时在弹簧启动时禁用Redis AutoConfig

我正在尝试使用spring boot进行测试时禁用Redis.我已禁用我的配置,但自动配置创建了默认连接并失败,因为它无法连接到不存在的服务.为了测试,我满足于使用基本的内存缓存或无操作缓存.这也行不通.这是我尝试过的:

根据这个问题,我将配置添加到我的测试应用程序属性中

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
Run Code Online (Sandbox Code Playgroud)

但.这让我更进一步.但最终我得到了一个NoSuchBeanDefinitionException redisTemplate- 这是因为redisReferenceResolver试图看起来如此.

现在我看的调试器,它试图来滋润bean是: org.springframework.data.redis.core.convert.ReferenceResolverImpl这是哪里来的spring-data-redis:1.8.0.RELEASE是从这种相关性来:compile('org.springframework.boot:spring-boot-starter-data-redis').我承认,bean名称有点误导.它实际解析的类型不是

对redis的唯一其他引用是在我们的hibernate支持中.

有人可以解释如何关闭它进行测试吗?

java spring redis spring-data-redis spring-boot

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

在特定提交处获取 git repo,无需克隆

我正在尝试在不克隆的情况下获取特定提交哈希的 git 存储库!每个示例都想克隆整个存储库。这是有道理的,但我想要的存储库很大,我需要它留下一个小的足迹,因为它与 Docker 镜像一起使用。

提交哈希在 URL 中 - 或者wget可以curl/应该递归获取,但我有一种感觉 github 正在阻止它,因为我得到的只是robots.txt

回购和提交:

https://github.com/phalcon/cphalcon/tree/1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e

我最好的尝试错误:

git fetch https://github.com/phalcon/cphalcon/ 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
error: Server does not allow request for unadvertised object 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
Run Code Online (Sandbox Code Playgroud)

更新

使用克隆的答案建议并不能回答问题。我可以克隆/结帐没有问题。尝试在本地没有整个存储库的情况下执行此操作

git github git-fetch git-remote

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

含糊不清的groovy:如何解决

我试图在groovy中这样做

def results = new File(someDirectory).listFiles { it.name.startsWith 'foo'}
Run Code Online (Sandbox Code Playgroud)

但是,我得到了可以理解的错误:

groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.io.File#listFiles.
Cannot resolve which method to invoke for [class change$_getRollback_closure1] due to overlapping prototypes between:
    [interface java.io.FileFilter]
    [interface java.io.FilenameFilter]
Run Code Online (Sandbox Code Playgroud)

我如何告诉它使用FileFilter

我最后写了一些简单的java风格:

File[] files = someDir.listFiles( new FileFilter(){
    @Override
    boolean accept(File pathname) {
        return pathname.name.startsWith("foo")
    }
})
Run Code Online (Sandbox Code Playgroud)

groovy

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

JQ 将数组映射到带有索引的对象 - 如何

很简单:

我拥有的:'["a","b","c"]'

我想要的是:

{
  "1":"a",
  "2":"b",
  "3":"c"
}
Run Code Online (Sandbox Code Playgroud)

我正在做什么。

echo '["a","b","c"]' | jq '. | map({(index(.)) : (.)})'
Run Code Online (Sandbox Code Playgroud)

我得到的结果(它似乎在连续较小的数组上运行):

 echo '["a","b","c"]' | jq '. | map(index((.)))'
[
  0,
  0,
  0
]
Run Code Online (Sandbox Code Playgroud)

json object dynamically-generated jq

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

提取斜杠“/”后的第一个字母和最后一个完整单词

所以,我有这个字符串:

JobDefinition://apps/ess/scm/productHub/itemImport/ItemImportSchedulingJobDef

我想把它改造成:

/a/e/s/p/i/ItemImportSchedulingJobDef

当我使用时:sed -E 's|/([a-z]{1})|\1|g'

我刚刚得到

JobDefinition:/appsessscmproductHubitemImport/ItemImportSchedulingJobDef 我正在使用 sed,但我认为这是一个一般的正则表达式问题。

它基本上是一个命名空间,而且很长,所以我试图维护命名空间和最终唯一标识符的某些内容

它与完全限定类名的 spring 压缩日志记录非常相似(我的灵感)

regex sed

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

如何获得浓缩日志'春天风格'

与大多数日志一样,我们的日志有点冗长,大部分噪声包括执行日志记录的类的fqcn.

我想让它只记录每个包/子包的第一个字母,直到它进入类.

com.mycompany.client.magensa.MockMagensaClient
Run Code Online (Sandbox Code Playgroud)

在正常情况下,这将记录为:

c.v.c.m.MockMagensaClient
Run Code Online (Sandbox Code Playgroud)

我显然可以写一个自定义记录器,但我确信有一个我已经可以使用.因为我甚至不知道这种风格是什么,所以我不知所措.

任何人只想说:"哦,你在看......你可以找到它......"?

java logging

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

这是什么功能范式

我正在编写一些 python 代码,并且正在实现一种我已经用多种语言反复完成的模式。我一直认为这是某种功能范例,并且可以在功能上实现(不使用循环for),但我没有看到它。Map获取一个系列并返回一个新系列。Reduce获取一系列结果并将其简化为单个结果。这两者都不是。

下面这个函数的想法是对单个字符串重复应用转换。在这种情况下:

  1. 替换所有uuid
  2. 然后替换5-9位之间的所有数字组
  3. 将会有更多的转变
def to_template(message):
    mappers = [
        ('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}', '{.uuid}'),
        (' [0-9]{5,9}.', ' {.request_id}.')
    ]
    result = message
    for pattern, replacement in mappers:
        result = re.sub(pattern, replacement, result)

    return result
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 这个可以从功能上实现吗?
  2. 是否有一个已知的功能范例?

python functional-programming

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

Sed 对我给它的文件路径感到非常困惑

我试图将带有 sed 替换的文件传递给 sed,它忽略了我给它的部分路径:

首先,让我们从一个简单的断言开始:

 test -f workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed && echo "exists"
exists
Run Code Online (Sandbox Code Playgroud)

是的,文件存在。现在,问题是:

sed -E -n -f  /Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed /Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/data.psv  
sed: orkdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed: No such file or directory
Run Code Online (Sandbox Code Playgroud)

它会丢弃oin之前的所有内容workdir

我尝试过一个新的外壳,没有扩展

env -i /opt/brew/bin/bash
bash-5.2$ sed -n -E -f "/Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed"  "/Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/data.psv"                                                                                                                                                                                                                                                                
sed: orkdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试过旧版本的 bash:

 test -f workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed && echo "exists"
exists
Run Code Online (Sandbox Code Playgroud)

我已经尝试过zsh

sed -E -n -f  /Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed /Users/cbongior/dev/omc/workdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/data.psv  
sed: orkdir/2023-08-03/2023-07-21-01-30-19_2023-07-31-23-59-58/templates.sed: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我也尝试过gsed

env -i /opt/brew/bin/bash
bash-5.2$ sed …
Run Code Online (Sandbox Code Playgroud)

bash shell zsh sed

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