我试图通过使用ASM 4.0重写类的字节码来替换所有native非native存根方法.
到目前为止我有这个:
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 …
如何设置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) 这是我的代码:
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) 我正在学习java.我试图运行代码,我得到了这个错误:return type is incompatible.代码中显示错误的部分代码.
class A {
public void eat() { }
}
class B extends A {
public boolean eat() { }
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我用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) 我有一个完全本地化的网站,在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路径?
我尝试给用户提供他想玩游戏的选项.窗口和全屏模式没问题.我似乎无法工作的是无边框全屏/窗口全屏.我搜索了网络,发现只有一个网站帮助了我:
http://badlogicgames.com/forum/viewtopic.php?f=11&t=13863
我按照我的说法做了,我认为它有点工作,我的问题是,底部的Windows 10工具栏总是在窗口前面.这是它的外观图:
颜色很糟糕,但仅用于测试目的.代码如下所示:
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上的东西),就像在图片中一样.普通全屏工作正常.
我对 JavaFX 还很陌生,需要使用浏览器窗口编写应用程序。浏览器将用于登录微图库机构 fotolia,以解决登录时出现的验证码。显然,当关闭并稍后重新启动我的应用程序时,cookie 不会被保存。
有没有办法在 JavaFX/webview 中存储下一个会话的 cookie?或者谁能告诉我,为什么不存储cookie?
我正在尝试保留所有/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)
我发现了一些类似的问题,大多数都没有答案,或者有一些肮脏的解决方案,例如:
static通过正则表达式使用通配符手动排除每个控制器中的路径/static/** 摘要:
我正在寻找一种简单的洗脱液,完全自动化,最好是配置.问题是:实现这一目标的正确方法是什么?
我正在使用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 ×7
javafx ×3
bytecode ×1
charts ×1
inheritance ×1
java-8 ×1
javascript ×1
libgdx ×1
netty ×1
nio ×1
overriding ×1
reactjs ×1
redirect ×1
redux ×1
redux-form ×1
return-type ×1
runnable ×1
sandbox ×1
screen ×1
spring ×1
spring-boot ×1
spring-mvc ×1
threadpool ×1
tomcat7 ×1
udp ×1
url-encoding ×1
webview ×1