小编dzi*_*ysk的帖子

使用ASM重写Java本机方法

我试图通过使用ASM 4.0重写类的字节码来替换所有nativenative存根方法.

到目前为止我有这个:

class ClassAdapter extends ClassVisitor {

    public ClassAdapter(ClassVisitor cv) {
        super(Opcodes.ASM4, cv);
    }

    @Override
    public MethodVisitor visitMethod(int access, String base, String desc, String signature, String[] exceptions) {
        return cv.visitMethod(access & ~Opcodes.ACC_NATIVE, base, desc, signature, exceptions);
    }

}
Run Code Online (Sandbox Code Playgroud)

由执行

private static byte[] instrument(byte[] originalBytes, ClassLoader loader) {
    ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
    ClassAdapter adapter = new ClassAdapter(cw);

    ClassReader cr = new ClassReader(originalBytes);
    cr.accept(adapter, ClassReader.SKIP_FRAMES);

    return cw.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

这似乎很简单:我删除ACC_NATIVE了方法visitMethod()并保留其他所有内容.然而,当我这样做时java.lang.Object …

java java-native-interface bytecode metaprogramming sandbox

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

Redux形式为defaultValue

如何设置defaultValue输入组件?

<Field name={`${prize}.rank`} defaultValue={index} component={Input} type='text'/>
Run Code Online (Sandbox Code Playgroud)

我试过上面但我的领域是空的.我正在尝试创建fieldArray(动态表单):

{fields.map((prize, index) =>
    <div key={index} className="fieldArray-container relative border-bottom" style={{paddingTop: 35}}>
        <small className="fieldArray-title marginBottom20">Prize {index + 1}
            <button
                type="button"
                title="Remove prize"
                className="btn btn-link absolute-link right"
                onClick={() => fields.remove(index)}>Delete</button>
        </small>
        <div className="row">
            <div className="col-xs-12 col-sm-6">
                <Field name={`${prize}.rank`}  defaultValue={index} component={Input} type='text'/>
                <Field name={`${prize}.prizeId`} defaultValue={index} component={Input} type='text'/>
                <Field
                    name={`${prize}.name`}
                    type="text"
                    component={Input}
                    label='Prize Name'/>
            </div>
            <div className="col-xs-12 col-sm-6">
                <Field
                    name={`${prize}.url`}
                    type="text"
                    component={Input}
                    label="Prize URL"/>
            </div>
            <div className="col-xs-12">
                <Field
                    name={`${prize}.description`}
                    type="text"
                    component={Input}
                    label="Prize Description" /> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs redux redux-form

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

JavaFX我想完全保存Chart-Image

这是我的代码:

public class SceneToImageAndWrite extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Primary Stage");

        final CategoryAxis xAxis = new CategoryAxis();
        xAxis.setLabel("Animals");
        final NumberAxis yAxis = new NumberAxis();
        yAxis.setLabel("Number");

        final LineChart<String, Number> lineChart = new LineChart<String, Number>(xAxis, yAxis);
        lineChart.setTitle("Line Chart");

        XYChart.Series<String, Number> series1 = new Series<String, Number>();
        series1.setName("Series");

        /** xAxis & yAxis Data */
        LinkedHashMap<String, Number> map = new LinkedHashMap<>();      
        map.put("dog", 12);
        map.put("cat", 3);
        map.put("bear", 8);
        map.put("tiger", 20);

        for (Entry<String, …
Run Code Online (Sandbox Code Playgroud)

charts javafx

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

Java - 错误:返回类型不兼容

我正在学习java.我试图运行代码,我得到了这个错误:return type is incompatible.代码中显示错误的部分代码.

class A {
    public void eat() { }
}

class B extends A {
    public boolean eat() { }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

java inheritance overriding return-type

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

使用Netty在UDP服务器中丢失了大量UDP请求

我用Netty编写了一个简单的UDP服务器,它只是在日志中打印出收到的消息(帧).为此,我创建了一个简单的帧解码器解码器和一个简单的消息处理程序.我还有一个客户端可以顺序和/或并行发送多个请求.

当我配置我的客户端测试程序按顺序发送几百个请求时,它们之间有一点延迟,我用Netty编写的服务器会正​​确接收它们.但是目前我增加了我的客户端中的同时请求数(例如100个),加上顺序请求和少量重复,我的服务器开始丢失许多请求.例如,当我发送50000个请求时,我的服务器仅在使用打印出收到的消息的简单ChannelHandler时才会收到大约49000个.

当我在这个处理程序前添加简单的帧解码器(打印出帧并将其复制到另一个缓冲区)时,服务器只处理一半的请求!!

我注意到,无论我为创建的NioDatagramChannelFactory指定的worker数量,总有一个且只有一个线程处理请求(我使用推荐的Executors.newCachedThreadPool()作为另一个参数).

我还创建了另一个类似的简单UDP服务器,它基于与JDK一起提供的DatagramSocket,它可以完美地处理每个请求,丢失0(零)!! 当我在我的客户端发送50000个请求(例如1000个线程)时,我在服务器中收到了50000个请求.

使用Netty配置UDP服务器时我做错了什么?或许Netty根本不是为了支持这种负载?为什么给定的缓存线程池只使用一个线程(我注意到只有一个线程,并且通过查看JMX jconsole并通过检查输出日志中的线程名称来使用它)?我认为如果更多线程按预期使用,服务器将能够轻松处理此类负载,因为我可以在不使用Netty时毫无问题地执行此操作!

请参阅下面的初始化代码:

...

lChannelfactory = new NioDatagramChannelFactory( Executors.newCachedThreadPool(), nbrWorkers );
lBootstrap = new ConnectionlessBootstrap( lChannelfactory );

lBootstrap.setPipelineFactory( new ChannelPipelineFactory() {
    @Override
    public ChannelPipeline getPipeline()
    {
        ChannelPipeline lChannelPipeline = Channels.pipeline();
        lChannelPipeline.addLast( "Simple UDP Frame Dump DECODER", new SimpleUDPPacketDumpDecoder( null ) );            
        lChannelPipeline.addLast( "Simple UDP Frame Dump HANDLER", new SimpleUDPPacketDumpChannelHandler( lOuterFrameStatsCollector ) );            
        return lChannelPipeline;
    }
} );

bindChannel = lBootstrap.bind( socketAddress );

...
Run Code Online (Sandbox Code Playgroud)

以及解码器中decode()方法的内容:

protected Object decode(ChannelHandlerContext iCtx, Channel iChannel, ChannelBuffer iBuffer) throws Exception …
Run Code Online (Sandbox Code Playgroud)

multithreading udp nio threadpool netty

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

如何防止Java 8/Tomcat 7对Response.sendRedirect上的URL路径进行URL编码

我有一个完全本地化的网站,在URL路径中有一些字符,通过该Response.sendTemporaryRedirect方法获得HTML编码:

String toReturn = /*StringEscapeUtils.unescapeHtml4(redirect)*/ redirect + "?" + URLEncoder.encode(json, "UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=UTF-8");

java.net.URI location = new java.net.URI(toReturn);
return Response.temporaryRedirect(location).build();
Run Code Online (Sandbox Code Playgroud)

重定向正在获得404,因为"%C3%B1%C3%AD"URL片段被误解了.解码,看起来像这样:ñí.

我已经尝试过URLDecoder.decode(url, 'UTF-8'),StringEscapeUtils.escapeHtml4在重定向之前没有运气.代码工作正常.

为什么javax.ws.rs.core.Response.sendTemporaryRedirectURLEncoding URL路径?

java redirect url-encoding tomcat7 java-8

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

libgdx无边框全屏

我尝试给用户提供他想玩游戏的选项.窗口和全屏模式没问题.我似乎无法工作的是无边框全屏/窗口全屏.我搜索了网络,发现只有一个网站帮助了我:

http://badlogicgames.com/forum/viewtopic.php?f=11&t=13863

我按照我的说法做了,我认为它有点工作,我的问题是,底部的Windows 10工具栏总是在窗口前面.这是它的外观图:

http://imgur.com/hdA3LAb

颜色很糟糕,但仅用于测试目的.代码如下所示:

if (screenManager.FULLSCREEN) {
    Gdx.graphics.setDisplayMode(Gdx.graphics.getDesktopDisplayMode().width, Gdx.graphics.getDesktopDisplayMode().height, true);
} else if (screenManager.WINDOWEDFULLSCREEN) {
    System.setProperty("org.lwjgl.opengl.Window.undecorated", "true");
    Gdx.graphics.setDisplayMode(Gdx.graphics.getDesktopDisplayMode().width,
    Gdx.graphics.getDesktopDisplayMode().height, false);
} else {
    Gdx.graphics.setDisplayMode(screenManager.WIDTH, screenManager.HEIGTH, false);
} 
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

编辑: 我更新到1.9.2,它没有setDisplayMode方法.代码现在看起来像这样:

DisplayMode mode = Gdx.graphics.getDisplayMode();
if (screenManager.FULLSCREEN) {
    Gdx.graphics.setWindowedMode(Gdx.graphics.getDisplayMode().width, Gdx.graphics.getDisplayMode().height);
    Gdx.graphics.setFullscreenMode(mode);
} else if (screenManager.WINDOWEDFULLSCREEN) {
    System.setProperty("org.lwjgl.opengl.Window.undecorated", "true");
    Gdx.graphics.setWindowedMode(Gdx.graphics.getDisplayMode().width, Gdx.graphics.getDisplayMode().height);
    //Gdx.graphics.setFullscreenMode(mode);
} else {
    Gdx.graphics.setWindowedMode(screenManager.WIDTH, screenManager.HEIGTH);
}
Run Code Online (Sandbox Code Playgroud)

一切都像以前一样工作,只有无边框的全屏幕上有窗口工具栏(botton上的东西),就像在图片中一样.普通全屏工作正常.

java screen libgdx

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

JavaFX webview 不保存cookie

我对 JavaFX 还很陌生,需要使用浏览器窗口编写应用程序。浏览器将用于登录微图库机构 fotolia,以解决登录时出现的验证码。显然,当关闭并稍后重新启动我的应用程序时,cookie 不会被保存。

有没有办法在 JavaFX/webview 中存储下一个会话的 cookie?或者谁能​​告诉我,为什么不存储cookie?

java javafx webview

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

ResourceHandler与控制器中的通配符冲突

我正在尝试保留所有/static/**以资源处理程序开头的路径.不幸的是,我有一些通配符来自/请求映射中的根路径.像这样的东西:

预习

我尝试了什么?

  • ResourceHandlerRegistry#setOrder:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/resources/static/");
    
        registry.setOrder(1);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 各种版本的拦截器(有或没有顺序):

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ResourcesInterceptor())
                .excludePathPatterns("/static/**")
                .order(2);
    }
    
    Run Code Online (Sandbox Code Playgroud)

这是一个半心半意的成功(如果我改变映射,它可能甚至不起作用/{profile}/{project}/**),因为:

/static/style/home.css      # works
/static/style/home.cssxxx   # 404, works
/static/style               # catched by controller, expected: 404
/static                     # catched by controller, expected: 404
Run Code Online (Sandbox Code Playgroud)

我发现了一些类似的问题,大多数都没有答案,或者有一些肮脏的解决方案,例如:

摘要:

  • 我不想使用正则表达式,因为它将来会很痛苦
  • 我也无法改变映射.我知道,这是最简单的方法,但我无法做到这一点.
  • 更改订单无效
  • 创建专用控制器仍然存在路径问题

我正在寻找一种简单的洗脱液,完全自动化,最好是配置.问题是:实现这一目标的正确方法什么?

java spring spring-mvc spring-boot

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

JavaFX - 未调用runLater Runnable

我正在使用JavaFX进行项目.在启动过程中,我有一个提示,要求提供数据,我的网络类与这些数据建立了与服务器的连接.我的网络类异步工作,我在回调中得到响应.根据响应,我想从回调中打开一个新窗口(阶段).

执行我mainStage.setScene()按预期触发异常 - 不是从JavaFX应用程序线程调用,我必须使用Platform.runLater()但是:

Platform.runLater(new Runnable() {          
    @Override
    public void run() {
        System.out.println("run");
    }
});
Run Code Online (Sandbox Code Playgroud)

它从不打印"run".为什么?该accountDataPrompt.login()函数位于我的JavaFX启动函数的末尾,正如我所说,网络连接是异步运行的.提示符是自定义JavaFX对话框(JavaFX UI Sandbox).

java javafx runnable

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