小编Mic*_*ael的帖子

什么时候在golang中使用劫持?

我不明白为什么我们使用劫持,因为我可以直接在响应体中写一些东西,有人可以解释一下吗?

func writeSome(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "write some thing")
}
Run Code Online (Sandbox Code Playgroud)

它与此相同:

func hijack(w http.ResponseWriter, r *http.Request) {
    hj, _ := w.(http.Hijacker)
    _, buf, _ := hj.Hijack()
    buf.WriteString("write some thing")
    buf.Flush()
}
Run Code Online (Sandbox Code Playgroud)

我很迷惑

go go-http

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

什么时候应该使用instanceof,何时不使用instanceof

我已经阅读了各种文章,但我仍然不知道为什么不应该使用instanceof.kindlylet我知道你的想法.

java

14
推荐指数
3
解决办法
8446
查看次数

如何从String创建BufferedReader?

我正在尝试将String传递给我BufferedReader.我如何通过"测试" String而不是输入System.in

String test = "test";
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Run Code Online (Sandbox Code Playgroud)

java

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

PowerMockito(使用Mockito)因ExceptionInInitializerError而失败

我们使用Powermockito和Mockito来模拟一些静态类.似乎java.lang.ExceptionInInitializerError每次都会抛出.

你能帮我找出问题所在吗?

正在测试的Java类

package com.myproject.myproduct.search.domain;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;

public class MyQueryBuilder {

    public MultiMatchQueryBuilder getMultiMatchQueryBuilder() {
        MultiMatchQueryBuilder builder = QueryBuilders.multiMatchQuery("term", "field1");
        builder.field("field1",200.9f);
        return builder;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用Powermock跑步者进行Junit测试

package com.myproject.myproduct.search.domain;

import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(QueryBuilders.class)
public class MyQueryBuilderTest {

    private MyQueryBuilder myQueryBuilder;

    @Test
    public void test() {
        PowerMockito.mockStatic(QueryBuilders.class);
        MultiMatchQueryBuilder builder = PowerMockito.mock(MultiMatchQueryBuilder.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

而已.一旦我尝试模拟MultiMatchQueryBuilder,测试代码就无法运行.

这是例外:

位于org.elasticsearch.index.query.AbstractQueryBuilder的org.elasticsearch.common.ParseField.(ParseField.java:35)的org.elasticsearch.common.logging.DeprecationLogger.(DeprecationLogger.java:138)中的java.lang.ExceptionInInitializerError. (AbstractQueryBuilder.java:53)在sun.reflect.GeneratedSerializationConstructorAccessor7.newInstance(未知来源)在java.lang.reflect.Constructor.newInstance(Constructor.java:423)在org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator的.java:40)在org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59)在org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:128)在org.mockito.internal.creation. jmock.ClassImposterizer.imposterise(ClassImposterizer.java:63)atg.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:111)org.powermock.api.mockito.internal.mockcreation.MockCreator.模拟(MockCreator.java:6 0)在org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:143)的com.spartasystems.stratas.search.domain.MyQueryBuilderTest.testBoostSetProperly(MyQueryBuilderTest.java:22)at sun.reflect.NativeMethodAccessorImpl.invoke0 (本地方法)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498) )在org.junit的org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ …

java junit4 mockito powermock powermockito

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

如何从Java控制台应用程序中的扫描仪读取字符串?

import java.util.Scanner;
class MyClass
{
    public static void main(String args[])
    {
        Scanner scanner = new Scanner(System.in);
        int employeeId, supervisorId;
        String name;
        System.out.println("Enter employee ID:");
        employeeId = scanner.nextInt();
        System.out.println("Enter employee name:");
        name = scanner.next();
        System.out.println("Enter supervisor ID:");
        supervisorId = scanner.nextInt();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在尝试输入名字和姓氏时遇到了这个异常.

Enter employee ID:
101
Enter employee name:
firstname lastname
Enter supervisor ID:
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at com.controller.Menu.<init>(Menu.java:61)
    at com.tests.Employeetest.main(Employeetest.java:17)
Run Code Online (Sandbox Code Playgroud)

但如果我只输入名字,它的工作.

Enter employee ID:
105 …
Run Code Online (Sandbox Code Playgroud)

java

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

在URL查询参数中使用某些字符时出现Java 9 HttpClient异常

这是我的示例代码.查询编码为UTF-8:

HttpRequest request = HttpRequest.newBuilder()
    .header("content-type", "application/json;charset=UTF-8")
    .uri(URI.create("http://localhost:8080/test?param1=test%C5%84"))
    .GET()
    .build();

HttpClient.newBuilder()
    .version(HttpClient.Version.HTTP_2)
    .build()
    .send(request, HttpResponse.BodyHandler.asString(Charset.forName("UTF-8")));
Run Code Online (Sandbox Code Playgroud)

运行此示例后,我得到以下异常:

java.lang.IllegalArgumentException: char=324
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.Huffman.codeOf(Huffman.java:559)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.Huffman.lengthOf(Huffman.java:524)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.StringWriter.configure(StringWriter.java:79)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.StringWriter.configure(StringWriter.java:62)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.IndexNameValueWriter.value(IndexNameValueWriter.java:64)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.Encoder.literal(Encoder.java:422)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.Encoder.header(Encoder.java:245)
at jdk.incubator.httpclient/jdk.incubator.http.internal.hpack.Encoder.header(Encoder.java:198)
at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.encodeHeadersImpl(Http2Connection.java:927)
at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.encodeHeaders(Http2Connection.java:878)
at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.encodeHeaders(Http2Connection.java:951)
at jdk.incubator.httpclient/jdk.incubator.http.Http2Connection.sendFrame(Http2Connection.java:984)
at jdk.incubator.httpclient/jdk.incubator.http.Stream.sendHeadersAsync(Stream.java:547)
at jdk.incubator.httpclient/jdk.incubator.http.Exchange.lambda$responseAsyncImpl0$8(Exchange.java:322)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SSLFlowDelegate.setALPN(SSLFlowDelegate.java:164)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SSLFlowDelegate.access$200(SSLFlowDelegate.java:81)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:340)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:215)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$TryEndDeferredCompleter.complete(SequentialScheduler.java:315)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SSLFlowDelegate$Reader.incoming(SSLFlowDelegate.java:242)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SubscriberWrapper.incomingCaller(SubscriberWrapper.java:388)
at jdk.incubator.httpclient/jdk.incubator.http.internal.common.SubscriberWrapper.onNext(SubscriberWrapper.java:343) …
Run Code Online (Sandbox Code Playgroud)

java url-encoding http2 java-9 java-http-client

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

为什么尝试使用内部类中的方法引用来调用超类的受保护方法时出现BootstrapMethodError?

在Java 8,给出一个超类Super的包a和一个子类Sub的包b,谁拥有一个内部类SubInner

// Super.java
package a;

public abstract class Super {
   private long value;
   protected final void setValue(long value) {
      this.value = value;
   }
}

//Sub.java
package b;

public class Sub extends Super {
  public void foo() {
    new SubInner().foo();
  }
  private class SubInner {
    void foo() {
      Optional.of(1L).ifPresent(Sub.this::setValue); // Will throw IllegalAccessError at runtime.
      Optional.of(1L).ifPresent(t -> setValue(t)); // However, lambda works.
      setValue(1L); // also works.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么在正常方法调用可以访问超类方法的情况下,方法引用在这种情况下无法工作 …

java java-8

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

如何使用特定的脚本代码创建区域设置?

我正在尝试将此处找到的az_AZ_#LatnString转换为区域设置,但我无法解析该部分。#Latn

如果我这样做,new Locale("az_AZ_#Latn")我会丢失该#Latn部分(脚本代码)。

我也尝试过使用LocaleUtilsfrom commons-lang 但收到一条错误消息,指出它是无效格式。

java locale

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

Lombok.val如何实际工作?

Lombok.val允许你

使用val作为局部变量声明的类型,而不是实际写入类型.执行此操作时,将从初始化表达式推断出类型.局部变量也将成为最终变量.

而不是

final ArrayList<String> example = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

你可以写

val example = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我试图对这实际上是如何工作进行一些研究,但似乎没有大量的信息.看一下github页面,我可以看到它val是一个注释类型.然后使用注释类型,而不是实际注释.

我甚至不知道你甚至可以用这种方式使用注释类型,但在测试它时,下面的代码确实有效.但是,我仍然不确定为什么你会想要以这种方式使用该类型.

public class Main
{
    public @interface Foo { }

    public static void main(String... args)
    {       
        Foo bar;
        System.out.println("End");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果Lombok不是注释,而是注释类型,它们如何处理这些用法?对于我(显然不正确)的理解,语法看起来应该更像:

@Val foo = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

(我知道注释的约束意味着上面的语法不是有效的)

java annotations lombok

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

将List列表转换为java中的列表

List<List<String>> superlist = new ArrayList<List<String>>();

List<String> list1 = new ArrayList<String>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<String>();
list2.add("b1");
list2.add("b2");

List<String> list3= new ArrayList<String>();
list3.add("c1");
list3.add("c2");

superlist.add(list1);
superlist.add(list2);
superlist.add(list3);

List<String> result= new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个包含所有值的新列表superList.这里的结果应该包含a1,a2,b1,b2,c1,c2

java arraylist

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