小编Viv*_*ath的帖子

将EBNF转换为BNF

我的计算机语言课已经过了几年,所以我忘记了BNF和EBNF的细节,而且我旁边没有教科书.具体来说,我忘记了如何将EBNF转换为BNF.

从我记忆中的一点点,我知道其中一个要点就是转换{ term }<term> | <many-terms>.但我不记得其他规则.我试着在网上看一下,但是我只能找到关于家庭作业问题的链接,或者关于用花括号转换术语的小评论.我找不到定义翻译的详尽规则列表.

language-agnostic computer-science recursive-descent bnf ebnf

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

在Javascript中理解try..catch

我有这个尝试并抓住问题.我正在尝试重定向到另一个页面.但有时它会这样做,有时却不行.我认为问题在于尝试和捕捉.有人可以帮助我理解这一点.谢谢

var pg = new Object();
var da = document.all;
var wo = window.opener;

pg.changeHideReasonID = function(){
 if(pg.hideReasonID.value == 0 && pg.hideReasonID.selectedIndex > 0){
  pg.otherReason.style.backgroundColor = "ffffff";
  pg.otherReason.disabled = 0;
  pg.otherReason.focus();
 } else {
  pg.otherReason.style.backgroundColor = "f5f5f5";
  pg.otherReason.disabled = 1;
 }
}

pg.exit = function(pid){

 try {
  if(window.opener.hideRecordReload){
   window.opener.hideRecordReload(pg.recordID, pg.recordTypeID);

  } else {
   window.opener.pg.hideRecord(pg.recordID, pg.recordTypeID);

  }
 } catch(e) {}
 try {
  window.opener.pg.hideEncounter(pg.recordID);

 } catch(e) {}
 try {
  window.opener.pg.hideRecordResponse(pg.hideReasonID.value == 0 ? pg.otherReason.value : pg.hideReasonID.options[pg.hideReasonID.selectedIndex].text);

 } catch(e) {}
 try {
  window.opener.pg.hideRecord_Response(pg.recordID, …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling exception-handling try-catch

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

jQuery AJAX调用混乱了字符编码

我有一个输出JSON的servlet.servlet的输出编码是ISO-8859-1.我们的webapp中的页面也设置为ISO-8859-1.我会使用UTF-8,但这不在我的控制之内; 我们必须使用ISO-8859-1.

当我单独点击servlet时,我可以看到已经输出的JSON数据.字符编码是正确的,没有一个字符看起来很奇怪.

但是,当我通过AJAX调用servlet并使用检索到的数据来填充选择框时,我得到了(似乎)所有具有重音符号的字符(例如我带有重音符号或重音符号,音乐符号或抑扬音符号) ).当我在Firebug下的Net选项卡中查看响应时,我可以看到文本看起来很好.但是,当我使用该数据填充选择框时,我会得到带有问号的钻石.

这些字符都是有效的ISO-8859-1字符,所以我不明白为什么它们没有正确显示.

编辑

更多信息.我用GET,jQuery.ajax我已经开始scriptCharsetISO-8859-1.在服务器端,我已经明确地将编码设置为ISO-8859-1request.setCharacterEncoding("ISO-8859-1");

编辑

代码示例:

这就是我目前所拥有的.我scriptCharset: "ISO-8859-1"没有添加任何效果.

        jQuery.ajax({
            url: "/countryAndProvinceCodeServlet",
            data: data,
            dataType: "json",
            type: "GET",
            success: function(data) {
               ...
            },
        });
Run Code Online (Sandbox Code Playgroud)

我的servlet使用org.json.JSONObject并通过执行简单输出字符串response.getWriter().print(jsonObject.toString());

UPDATE

约每JSON,以及如何它应该是UTF-8的评论,我想看看我是否能获取数据为文本(所以设置dataTypetextjQuery.ajax),然后评估它作为自己的JSON(在Javascript).这似乎也不起作用!当我这样做时console.log,我仍然可以获得时髦的钻石.但是,当我在Firebug的Net选项卡下查看它时,一切都显示正常:

网络标签:

{"error":false,
 "provinces":{"DZ-01":"Adrar",
              "DZ-16":"Alger",
              "DZ-23":"Annaba",
              "DZ-44":"Aïn Defla",
              "DZ-46":"Aïn Témouchent",
              "DZ-05":"Batna",
              "DZ-07":"Biskra",
              "DZ-09":"Blida",
              "DZ-34":"Bordj Bou Arréridj",
              "DZ-10":"Bouira",
              "DZ-35":"Boumerdès",
              "DZ-08":"Béchar",
              "DZ-06":"Béjaïa",
              "DZ-02":"Chlef",
              "DZ-25":"Constantine",
              "DZ-17":"Djelfa",
              "DZ-32":"El Bayadh",
              "DZ-39":"El Oued",
              "DZ-36":"El Tarf", …
Run Code Online (Sandbox Code Playgroud)

java ajax jquery json iso-8859-1

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

如何从 Hibernate Validator 检索默认验证消息?

我正在尝试使用 检索默认验证错误消息MessageSource。我正在使用的代码使用反射来检索message参数的值。对于不覆盖message参数的约束,我想检索默认错误消息。当我调用message验证注释上的方法时,我得到{org.hibernate.validator.constraints.NotBlank.message}(例如,对于@NotBlank注释)。然后我尝试使用MessageSource来获取错误消息,如下所示:

String message = messageSource.getMessage(key, null, Locale.US);
Run Code Online (Sandbox Code Playgroud)

我尝试设置key{org.hibernate.validator.constraints.NotBlank.message}, org.hibernate.validator.constraints.NotBlank.message(去掉大括号),甚至org.hibernate.validator.constraints.NotBlank但我不断得到null. 我在这里做错了什么?

更新

一个澄清。我的印象是 Springmessage.properties为其约束提供了一个默认文件。我的这个假设正确吗?

更新

更改问题的名称以更好地反映我想要做的事情。

java validation spring

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

HAL + JSON的适当媒体类型是什么?

我正在使用Spring创建RESTful服务,我对媒体类型的语法感到好奇.

根据我的理解,HAL + JSON的一般媒体类型是application/hal+json.此外,根据我的理解,支持HAL + JSON的特定于供应商的自定义媒体类型将是类似的application/vnd.api.entity.hal+json.但是,我也看到了application/vnd.api.entity+hal+json.哪一个是正确的?

另外,对于HAL + JSON,正确的通配符类型是什么?它会是application/*.hal+jsonapplication/*+hal+json.任何相关RFC的链接将不胜感激.谢谢!

java rest spring http media-type

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

当两个引用都指向同一个对象时,===在Nashorn中返回false

这是一个演示我面临的问题的示例:

ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine(
    new String[] { "-strict" }
);

try {
    engine.eval("function Foo(src) { this.src = src }; var e = { x: new Foo(\"what\") };");

    ScriptContext c = new SimpleScriptContext();
    c.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    c.getBindings(ScriptContext.ENGINE_SCOPE).putAll(engine.getBindings(ScriptContext.ENGINE_SCOPE));

    System.out.println(engine.eval("var z = e.x; z === e.x;", c));
} catch(Exception e) {
    throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)

我知道在另一个上下文中实例化的对象被认为是"外来的"并最终被ScriptObjectMirror实例包装.我假设这就是为什么我在这里遇到问题.我相信每当x被解除引用时,ScriptObjectMirror就会创建一个新实例; 这是唯一可以解释以下代码也返回的代码false:

System.out.println(engine.eval("e.x === e.x;", c));
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?我正在寻找一些我可以用Java做的事情,或者以某种方式设置上下文/绑定,而不是用JavaScript编写代码来解决这个问题.

javascript java nashorn

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

访问在应用的外部脚本中的 buildscript 块中定义的类路径依赖项

我最初的目标是能够使用定义的路径依赖buildscriptbuild.gradle,已导入的脚本中build.gradle使用apply from:。但是,由于无法解析类,因此无法编译外部脚本。在研究这个问题后,我发现需要复制逻辑,所以我想我会提取buildscript到一个单独的文件中。然后我就可以在内部build.gradle和外部脚本中应用它。

我什至没有成功应用来自 的外部构建脚本文件build.gradle,更不用说从外部脚本应用它了。我尝试了多种方法,但无论我尝试什么,似乎总是以两个问题之一结束:gradle.properties无法使用来自的属性,或者找不到插件(即使已定义类路径依赖项)。

目前我的gradle/buildscript.gradle文件是这样的:

buildscript {
    repositories {
        maven { url "http://some.url.com" }
    }

    dependencies {
        classpath "my.gradle.plugin:gradle-plugin:1.0.0"
        classpath "my.library:my-library:$libraryVersion"
    }
}
Run Code Online (Sandbox Code Playgroud)

libraryVersion中已定义gradle.properties。我build.gradle的如下:

buildscript {
    apply from: "gradle/buildscript.gradle"
}

apply plugin: 'my.gradle.plugin.PluginClass'
Run Code Online (Sandbox Code Playgroud)

当我这样做时,gradle 抱怨它找不到带有 id 的插件my.gradle.plugin.PluginClass。我尝试删除引号,并且还尝试project.plugin.apply(...)使用带引号和不带引号的插件的 FQN;这两种情况都会导致 gradle 出错,并显示一条消息,指出它无法my在根项目中找到该属性。

我也试过:

buildscript {
    apply from: "gradle/buildscript.gradle", to: buildscript
}

apply plugin: …
Run Code Online (Sandbox Code Playgroud)

java build-process build gradle

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

测试多线程代码或确保代码是线程安全的准则

是否有任何测试多线程代码的指导原则(除了在问题上抛出一堆线程并交叉手指).

我基本上正在寻找测试数据损坏,死锁和其他并发问题的好方法.基本上我希望能够通过测试证明代码是线程安全的.

Java中是否有任何框架可以让您轻松编写多线程场景的测试?

java testing concurrency multithreading unit-testing

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

为什么反向传播神经网络识别XOR算子所需的偏置神经元?

我昨天发布了一个问题,关于我对XOR运算符的反向传播神经网络所遇到的问题.我做了一些工作,并意识到这可能与没有偏见神经元有关.

我的问题是,偏置神经元的作用一般是什么,它在识别XOR算子的反向传播神经网络中的作用是什么?是否可以创建一个没有偏置神经元?

artificial-intelligence xor backpropagation neural-network bias-neuron

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

表单元素的name属性与form-property相同,shadow /覆盖本机form-property.有解决方法吗?

如果input表单中的元素与表单的本机属性具有相同的名称,则该元素将隐藏本机属性.

例如,请考虑以下形式:

<form id = "test">
    <input name="tagName" type="text" />
    <input name="nodeName" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)

form元素的tagNamenodeName都正常返回FORM.但在这种情况下,以下代码:

var f = document.getElementById("test");

console.log(f.tagName);
console.log(f.nodeName);
console.log(f["tagName"]);
console.log(f["nodeName"]);
Run Code Online (Sandbox Code Playgroud)

显示:

<input name=?"tagName" type=?"text">? 
<input name=?"nodeName" type=?"text">?
<input name=?"tagName" type=?"text">?
<input name=?"nodeName" type=?"text">?
Run Code Online (Sandbox Code Playgroud)

是否有解决方法(除了重命名字段)?getAttribute适用于像name,action或者method,但不适用于像nodeName或等属性tagName.

小提琴这里.

更有趣的是:在这个小提琴中,我只是简单地记录表单本身.通常会显示HTML,但现在Chrome只会记录TypeError.

html javascript forms

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