小编koz*_*zmo的帖子

如何对特定模块使用“go get”或“go modvendor”,而不尝试更新其他模块?

我正在尝试从 github 获取项目的特定包。

但是,当我使用go get [url]or时go mod vendor,由于缺乏对我公司的存储库之一的权限,我收到 git fetch 错误。这个存储库是供应的,这就是我们如何绕过它进行 go test、go build 等。

这是错误消息:

go: private.work.repo.com/project/repo@v0.0.0-20190703160253-9c6eb80851f1: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in C:\Users\NICHOLAS.TAN\go\pkg\mod\cache\vcs\37594aeb10b98234e04b4780cf59f32c4ad7bb9da460f552103ae748cea73aa1: exit status 128:
        fatal: remote error: Repository not found
        The requested repository does not exist, or you do not have permission to
        access it.
Run Code Online (Sandbox Code Playgroud)

有没有办法让我使用go get和/或go mod vendor不使用这些命令来尝试查看其他模块依赖项?

go govendor go-modules go-get

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

“bind”类型的挂载配置无效:绑定挂载源路径不存在:/home/jenkins/.docker (Istio)

我尝试构建istio1.6.0+)并收到错误:

\n
docker: Error response from daemon: invalid mount config for type "bind":\nbind mount source path does not exist: /home/jenkins/.docker\n
Run Code Online (Sandbox Code Playgroud)\n

其中slave包含.docker目录

\n
13:34:42 + ls -a /home/jenkins\n13:34:42 .\n13:34:42 ..\n13:34:42 agent\n13:34:42 .bash_logout\n13:34:42 .bash_profile\n13:34:42 .bashrc\n13:34:42 .cache\n13:34:42 .docker\n13:34:42 .gitconfig\n13:34:42 .jenkins\n13:34:42 .m2\n13:34:42 .npmrc\n13:34:42 .oracle_jre_usage\n13:34:42 postgresql-9.4.1212.jar\n13:34:42 .ssh\n13:34:42 workspace \n
Run Code Online (Sandbox Code Playgroud)\n

部分Istio脚本

\n
export CONDITIONAL_HOST_MOUNTS=${CONDITIONAL_HOST_MOUNTS:-}\nif [[ -d "${HOME}/.docker" ]]; then\n  CONDITIONAL_HOST_MOUNTS+="--mount type=bind,source=${HOME}/.docker,destination=/config/.docker,readonly "\nfi\n\n\n"${CONTAINER_CLI}" run  --rm \\\n    -u "${UID}:${DOCKER_GID}" \\\n    --sig-proxy=true \\\n    ${DOCKER_SOCKET_MOUNT:--v /var/run/docker.sock:/var/run/docker.sock} \\\n    -v …
Run Code Online (Sandbox Code Playgroud)

jenkins docker jenkins-pipeline istio

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

为什么在工厂方法和方法引用(单例/原型)中使用 lambda 时函数接口初始化不同?

我有两种生产“消费者”的工厂方法使用不同的方法 lambda 和方法引用:

@SuppressWarnings("Convert2MethodRef")
public Consumer<String> lambdaPrintStringConsumer(){
    return x -> System.out.println(x);
}

public Consumer<String> methodRefPrintStringConsumer(){
    return System.out::println;
}
Run Code Online (Sandbox Code Playgroud)

我发现在第一种情况 ( lambdaPrintStringConsumer()) 中,方法返回对同一对象的引用

@Test
public void shouldSameFromFactoryMethod_lambda() {
    Consumer<String> consumerA = lambdaPrintStringConsumer();
    Consumer<String> consumerB = lambdaPrintStringConsumer();
    
    Assert.assertSame(consumerA, consumerB);//consumerA == consumerB --> true
}
Run Code Online (Sandbox Code Playgroud)

但是在第二个 ( methodRefPrintStringConsumer()) 中,对象是不同的

@Test
public void shouldNotSameFromFactoryMethod_methodRef() {
    Consumer<String> consumerA = methodRefPrintStringConsumer();
    Consumer<String> consumerB = methodRefPrintStringConsumer();

    Assert.assertNotSame(consumerA, consumerB);//consumerA == consumerB --> false
}
Run Code Online (Sandbox Code Playgroud)

直接方法返回与以下相同的结果shouldNotSameFromFactoryMethod_methodRef()

@SuppressWarnings("Convert2MethodRef")
@Test
public void shouldNotSameFromLambda() {
    Consumer<String> …
Run Code Online (Sandbox Code Playgroud)

java lambda equals functional-interface method-reference

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

无法使用 GORM 将记录批量插入 MSSQL DB:reflect:在零值上调用reflect.Value.Interface

使用 GORM for MSSQL获取下面的error批量插入操作系统记录

reflect: call of reflect.Value.Interface on zero Value
Run Code Online (Sandbox Code Playgroud)
var users = []User{{Name: "jinzhu1"}, {Name: "jinzhu2"}, {Name: "jinzhu3"}}
DB.Create(&users)

for _, user := range users {
  user.ID // 1,2,3
}
Run Code Online (Sandbox Code Playgroud)
Obtaining db table not found error: mssql: Invalid object name 'dbo.at_' for below
Run Code Online (Sandbox Code Playgroud)
DB.Model(&User{}).Create(map[string]interface{}{
  "Name": "jinzhu", "Age": 18,
})

// batch insert from `[]map[string]interface{}{}`
DB.Model(&User{}).Create([]map[string]interface{}{
  {"Name": "jinzhu_1", "Age": 18},
  {"Name": "jinzhu_2", "Age": 20},
})
Run Code Online (Sandbox Code Playgroud)

sql-server go go-gorm

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

在没有 Spring Boot 应用程序的情况下使用 Spring Data JPA


我想知道是否可以在没有 Spring 框架其余部分的情况下使用 Spring Data JPA?我在另一个项目的 Spring Boot Web 应用程序中使用了 Spring Data JPA,并且非常喜欢它的易用性。

现在我和一些朋友有一个没有服务器的桌面应用程序的小项目,并且真的很想使用 Spring Data JPA,但是我没有在任何地方找到关于是否可以在没有 Bean 或 Spring 框架的其余部分的情况下使用它的信息。

这是可能的还是我应该尝试使用另一个 JPA?

java jpa spring-data spring-data-jpa spring-boot

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

如何使用 pkg/errors 在 golang 中注释错误并漂亮地打印堆栈跟踪?

考虑以下代码(https://go.dev/play/p/hDOyP3W_lqW

package main

import (
    "log"

    "github.com/pkg/errors"
)

func myError() error {
    return errors.New("failing unconditionally")
}

func myError1() error {
    return errors.Errorf("annotate with additional debug info: %+v", myError())
}

func myError2() error {
    return errors.Errorf("extra debug info: %+v", myError1())
}

func main() {
    if err := myError2(); err != nil {
        log.Printf("%+v", err)
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用 引发错误errors.New并使用附加信息对其进行注释errors.Errorf

它做了我想要的事情——记录并打印堆栈跟踪和行号。然而,问题是 的输出log.Printf("%+v", err)是冗长且重复的:

2009/11/10 23:00:00 extra debug info: annotate with additional debug info: failing unconditionally …
Run Code Online (Sandbox Code Playgroud)

error-handling stack-trace go

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

IdentitySet / IdentityHashSet(使用IdentityHashMap)

我知道IdentityHashMap,但是我需要使用“ identitySet ”之类的东西(它使用等于-> o1 == o2)。当我用“ extractor”(JavaFX)收听Observable列表时,我将使用一个:

 List<Person> deleteList = new ArrayList<>();
 List<Person> addList = new ArrayList<>();

 ObservableList<Person> list = FXCollections.observableArrayList(Person.extractor());
    list.add(new Person("a",1));
    list.add(new Person("b",2));
    list.add(new Person("c",3));

    list.addListener((ListChangeListener<Person>) observable -> {
        if(observable.next()) {
            if (observable.wasAdded()) {
                addList.addAll(observable.getAddedSubList());
            }
            if (observable.wasUpdated()) {
                deleteList.add(list.get(observable.getFrom()));
            }
            if (observable.wasRemoved()) {
                deleteList.addAll(observable.getRemoved());
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

人类:

public class Person {
private final StringProperty s;
private final DoubleProperty d;

//Getters and Setters
// ...

@Override
public int hashCode() {
    int result = …
Run Code Online (Sandbox Code Playgroud)

java set identity-map observable javafx-8

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

docker 多阶段构建 Go 映像 - x509:由未知权威签名的证书

我尝试使用私有公司网络中构建图像:

FROM golang:latest as builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN  GO111MODULE="on" CGO_ENABLED=0 GOOS=linux go build -o main ${MAIN_PATH}

FROM alpine:latest
LABEL maintainer="Kozmo"
RUN apk add --no-cache bash
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
Run Code Online (Sandbox Code Playgroud)

并得到x509: certificate signed by unknown authority错误

Step 1/13 : FROM golang:latest as builder
 ---> 2421885b04da
Step 2/13 : WORKDIR /app
 ---> Using cache
 ---> 6555644dbd16
Step …
Run Code Online (Sandbox Code Playgroud)

go docker go-git docker-multi-stage-build go-build

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

如何计算测试的总代码覆盖率

我需要计算 golang 项目的代码覆盖率,其中测试源将是用 Java 语言编写的集成测试。这需要首先对 go build 进行检测,然后在服务器上运行,以便测试可以运行,并且在测试结束后我们才能知道代码覆盖率是多少?我在互联网上没有找到这方面的单一参考,所有存在的都是单元测试,可以轻松运行并用于计算覆盖率

integration-testing code-coverage go go-testing

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

go2go.playground - 预期类型,找到“类型”(还有 1 个错误)

我尝试从设计草案泛型的下一步)中 运行示例go2go.playground

type Pair(type T) struct { f1, f2 T }
Run Code Online (Sandbox Code Playgroud)

,但得到一个错误

prog.go2:14:11: expected type, found 'type' (and 1 more errors)
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到实际的go generics design draft

generics go go-playground go-2

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

替换 .docx 中的文本模板(Apache POI、Docx4j 或其他)

我想使用正则表达式 (java RegEx)在MS Word ( .docx ) 文档中进行替换:

\n\n
Example: \n \xe2\x80\xa6, \xd1\x81 \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \xd0\xb8 %SOME_TEXT% \xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83\xd0\xb5\xd0\xbc\xd0\xbe\xd0\xb5 \xd0\xb2 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc \xc2\xab\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7\xd1\x87\xd0\xb8\xd0\xba\xc2\xbb, \xd0\xb2 \n \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5  %SOME_TEXT%   \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd1\x8e\xd1\x89\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x81\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb8 %SOME_TEXT% \xd1\x81 \xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \n \xd0\xb7\xd0\xb0\xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xb0\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x89\xd0\xb8\xd0\xb9 \xd0\x94\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x80 \xd0\xbe \xd0\xbd\xd0\xb8\xd0\xb6\xd0\xb5\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd1\x83\xd1\x8e\xd1\x89\xd0\xb5\xd0\xbc: \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试使用Apache POI - XWPF获取文本模板(如%SOME_TEXT%) 并替换文本,但不能保证替换,因为 POI 分隔运行 => 我得到类似这样的内容():System.out.println(run.getText(0))

\n\n
\xe2\x80\xa6\n, \xd1\x81 \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \xd0\xb8 \n%\nSOME_TEXT\n%\n\n\xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83\xd0\xb5\xd0\xbc\xd0\xbe\xd0\xb5 \n\xd0\xb2 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc \xc2\xab\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7\xd1\x87\xd0\xb8\xd0\xba\xc2\xbb, \xd0\xb2 \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5\n\n%\nSOME\n_\nTEXT\n%\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码示例:

\n\n
FileInputStream fis = new FileInputStream(new File("document.docx"));\nXWPFDocument document = new XWPFDocument(fis);\nList<XWPFParagraph> …
Run Code Online (Sandbox Code Playgroud)

java docx apache-poi docx4j xwpf

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

没有远程存储库的模块?

我试图让 Go 模块在不涉及远程存储库的情况下工作。

src是一个本地目录,其中包含我所有的项目,以及用 Go 以外的其他语言编写的项目。为简单起见,我只显示了与我的问题相关的两个目录:

src
 ??? client
 ?   ??? go.mod
 ?   ??? main.go
 ??? lib
     ??? go.mod
     ??? lib.go
Run Code Online (Sandbox Code Playgroud)

这些go.mod文件是通过go mod init clientsrc/clientgo mod init libin 中运行命令来创建的src/lib

源代码/客户端/main.go:

package main

import "lib"

func main() {
    lib.Hello()
}
Run Code Online (Sandbox Code Playgroud)

src/lib/lib.go:

package lib

import "fmt"

func Hello() {
    fmt.Println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在我的 main.go 中使用库 lib.go,但无论我在导入路径中放什么,都会显示此错误:

main.go:3:8: package lib is not in GOROOT (/usr/lib/go/src/lib)
Run Code Online (Sandbox Code Playgroud)

转到版本是 go1.14.3

如何从本地文件夹正确导入 Go 代码?

go multi-module go-modules

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

如何检查从函数返回的错误类型(strconv.Atoi)

我有以下测试基本代码strconv.Atoi()

package main

import (
        "fmt"
        "strconv"
)

func main() {

        var a int
        var b string
        var err Error

        b = "32"

        a,err = strconv.Atoi(b)

        fmt.Println(a)
        fmt.Println(err)

}
Run Code Online (Sandbox Code Playgroud)

我想处理 中是否有错误strconv.Atoi(),特别是如果错误是由于语法或范围,strconv.Atoi()可以提供的条件。为此,我尝试了以下方法:

package main

import (
        "os"
        "fmt"
        "strconv"
)

func main() {

        var a int
        var b string
        var err error

        b = "32"

        a,err = strconv.Atoi(b)

        if(err.Err == ErrSyntax) {
                fmt.Println("ERROR")
                os.Exit(1)
        }

        fmt.Println(a)
        fmt.Println(err)

}
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

% go build test.go
# command-line-arguments …
Run Code Online (Sandbox Code Playgroud)

go strconv

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