我正在使用Scala Play!2.6框架,但这可能不是问题.我正在使用他们的Javascript路由 - 它似乎工作正常,但它有问题.我有一个表单,在渲染时产生这个,带有CSRF令牌:
<form method="post" id="myForm" action="someURL">
<input name="csrfToken" value="5965f0d244b7d32b334eff840...etc" type="hidden">
<input type="text" id="sometext">
<button type="submit"> Submit! </button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是粗略的,我的AJAX:
$(document).on('submit', '#myForm', function (event) {
event.preventDefault();
var data = {
textvalue: $('#sometext').val()
}
var route = jsRoutes.controllers.DashboardController.postNewProject()
$.ajax({
url: route.url,
type: route.type,
data : JSON.stringify(data),
contentType : 'application/json',
success: function (data) { ... },
error: function (data) { ... }
})
});
Run Code Online (Sandbox Code Playgroud)
但是当我发布这个时,我从我的服务器获得了一个UNAUTHORIZED响应,我在IntelliJ中的控制台告诉我CSRF检查失败了.我如何在请求中传递CSRF令牌?
当我尝试运行我的应用程序时,IntelliJ 刚刚开始告诉我
“命令行太长。缩短 my_app 或应用程序默认配置的命令行。”
这my_app是一个蓝色链接,它会导致一个“编辑配置”窗口,自动选择并突出显示类路径缩短器的下拉列表。我选择了建议的选项,但没有改变。
我不知道这意味着什么 - 我使用的是 Scala,所以我使用的是一个object MyObj extends App根本不带参数的简单。
我曾尝试<property name="dynamic.classpath" value="true" />按照其他类似问题的建议添加到 workspace.xml 中,但无济于事。
我以前可以在我的项目中很好地运行我的程序。但是什么会延长命令行呢?命令行上到底放了什么?
我在 Kafka 中有以 Avro 格式存储的主题。我想使用整个主题(在收到时不会更改任何消息)并将其转换为 Parquet,直接保存在 S3 上。
我目前正在这样做,但它需要我一次使用来自 Kafka 的消息并在本地计算机上处理,将它们转换为 parquet 文件,一旦整个主题被使用并且 parquet 文件完全写入,关闭写入进程,然后启动 S3 分段文件上传。或者| Avro in Kafka -> convert to parquet on local -> copy file to S3 |简称。
我想做的是| Avro in Kafka -> parquet in S3 |
需要注意的一点是,Kafka 主题名称不是静态的,需要在参数中输入,使用一次,然后不再使用。
我研究过 Alpakka,似乎有可能 - 但还不清楚,我还没有看到任何例子。有什么建议么?
尝试gulp serve在我的 AngularJS(1.6.10 版)应用程序上执行操作时收到以下错误消息:
Error: [$injector:modulerr] Failed to instantiate module myAppName due to:
$compileProvider.preAssignBindingsEnabled is not a function
@http://localhost:9805/app/scripts/app.js:43:9
invoke@http://localhost:9805/lib/angular/angular.js:5108:16
runInvokeQueue@http://localhost:9805/lib/angular/angular.js:4997:11
loadModules/<@http://localhost:9805/lib/angular/angular.js:5007:11
forEach@http://localhost:9805/lib/angular/angular.js:387:11
loadModules@http://localhost:9805/lib/angular/angular.js:4987:5
createInjector@http://localhost:9805/lib/angular/angular.js:4904:19
doBootstrap@http://localhost:9805/lib/angular/angular.js:1936:20
bootstrap@http://localhost:9805/lib/angular/angular.js:1957:12
angularInit@http://localhost:9805/lib/angular/angular.js:1842:5
@http://localhost:9805/lib/angular/angular.js:35431:5
mightThrow@http://localhost:9805/lib/jquery/dist/jquery.js:3534:21
Run Code Online (Sandbox Code Playgroud)
调用代码如下所示:
/*
* Main module of the application.
*/
angular
.module('dataPipelineApp', [
//various parameters
])
.config(['$compileProvider', '$httpProvider', '$breadcrumbProvider', function ($compileProvider, $httpProvider, $breadcrumbProvider) {
//initialize get if not there
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
$compileProvider.preAssignBindingsEnabled(true); //err here
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
// extra …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个Comparator写信给里面放一个min在stream上一集,让我们只说这是一个List<Node>.通常我只是将列表中的对象相互比较,但我的问题是我有一个<Node>在集合之外,我需要返回集合中节点的最小值,因为它们与父节点.
我有一个对象 Node
public class Node {
private int cost;
private int location;
public int getCost() { return cost }
}
Run Code Online (Sandbox Code Playgroud)
我使用外部函数将集合中的节点与父节点进行比较:
public int distanceBetween(Node parent, Node child) { ... }
现在我想基本上编写一个流操作,它返回具有最低值的节点,因为它与其父节点进行比较,Node但不会在集合中.就像是:
private Node returnOpenNodeWithLowestFCost(Node parent) {
return nodeList.stream()
.min( (n1 , n2) -> ???);
.getOrElse(parent);
}
Run Code Online (Sandbox Code Playgroud)
nodeList不包含parent,是一个List<Node>
在包含???的区域 是我将每个N发送给其父母进行评估的地方.所以,如果打电话
distanceBetween(parent, n1) > distanceBetween(parent, n2),它会导致返回n1.但我无法正确配置功能.有任何想法吗?谢谢!
我正在使用 Apache Http Client 4.5.3,目前正在重构一些代码。
目前我有一个单例 Util,它有几个方法,它们的职责是使用 get、posts、patch 等来访问 API。以前,我们一直使用 anHttpClientBuilder为CloseableHttpClient每个方法的每次调用构造一个对象。粗略地说,单例的架构是这样的:
import com.google.gson.Gson
import org.apache.http.client.methods.{HttpGet, HttpPost}
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.{CloseableHttpClient, HttpClientBuilder}
import org.apache.http.util.EntityUtils
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse
object ApiCallerUtil {
case class StoreableObj(name:String, id:Long)
case class ResponseKey(key:Long)
def getKeyCall(param:String): ResponseKey = {
implicit val formats = DefaultFormats
val get = new HttpGet("http://wwww.someUrl.com/api/?value=" + param)
val client:CloseableHttpClient = HttpClientBuilder.create().build()
val response = client.execute(get)
try {
val entity = response.getEntity
val entityStr = EntityUtils.toString(entity)
parse(entityStr).extract[ResponseKey]
} finally { …Run Code Online (Sandbox Code Playgroud) 我有一个 S3 存储桶,它不会删除过期的对象删除标记。
桶是:
我设置的生命周期规则(下图):
我浏览并删除了(使用 UI EDIT: 和生命周期规则)一堆对象,并且我能够验证生命周期规则在 1 天的间隔后确实永久删除了原始对象,但是它们的删除标记(现在技术上已过期的对象删除标记)仍然存在。已经 5 天了,删除标记仍然存在。为了永久删除删除标记,我还需要做些什么吗?
这可能是一个简单而愚蠢的问题,但到目前为止的搜索只显示了如何打开此功能并运行它.
我在IntelliJ 2017中使用了FindBugs-IDEA.我对我的代码进行了扫描,以检查事情是多么糟糕(它们很糟糕).很好,我稍后会讨论这些问题(我发誓!) - 但我想从代码编辑器中删除所有下划线和代码检查 - 但我不知道如何删除它们,或禁用findbugs扫描结果一旦完成.任何的想法?
我不介意它是永久的还是暂时的,当我能够修复错误时,我会重新运行扫描.
我正在尝试使用以下命令通过 CLI 启动 Zookeeper:
bin/zookeeper-server-start.sh ../config/zookeeper.properties
它嗡嗡作响了一秒钟,似乎一切都是正确的,直到它说:
INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)
Run Code Online (Sandbox Code Playgroud)
然后下面的代码无限循环直到我退出:
[2018-08-10 15:07:48,223] INFO Accepted socket connection from /172.31.39.32:46374 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2018-08-10 15:07:48,228] WARN Exception causing close of session 0x0 due to java.io.IOException: ZooKeeperServer not running (org.apache.zookeeper.server.NIOServerCnxn)
[2018-08-10 15:07:48,228] INFO Closed socket connection for client /172.31.39.32:46374 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn)
Run Code Online (Sandbox Code Playgroud)
这是一台服务器,我相信是一台单节点测试服务器,因此没有法定人数或其他部分正在运行。我的动物园管理员配置是基本的,它只包含以下内容:
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我的动物园管理员一直运行良好,而且我没有对配置进行任何更改。将其拉下来尝试修复其他问题以在动物园管理员上快速重新启动,但它不会让步。我检查过,端口 2181 上没有其他任何东西在运行。
我看到这个问题已经被问了好几次了,但没有答案,有什么想法吗?
说我有这门课
public class MovieCharacter {
private String name;
public String getName() { return name ; }
public String setName(String name) { this.name = name; }
}
Run Code Online (Sandbox Code Playgroud)
我正在运行测试并有一个Set,我想使用Lambda来梳理每个对象,看它是否包含Name所需的字符串.如果找到名称,则布尔值跳转到"true".找到它之后,我不希望布尔值再次改变.
Set<MovieCharacter> mySet // assume this Set has previously been created and
// contains 1,000's of MovieCharacter
boolean hasName = false;
mySet.forEach( i -> i.getName().equals("Darth Vader")) // add here?
assertTrue(hasName);
Run Code Online (Sandbox Code Playgroud)
我知道我很接近,但是如何完成lambda线的关闭,以便如果该组包含一个MovieCharacter,其中.getName()返回"Darth Vader",则布尔值将被设置为true?但是,如果我正在检查的项目没有,它只是继续前进?
谢谢!
我在一个方法中有一个并行流,当我以这种方式运行时,它工作正常:
Meeting是一个接口,其实现具有private int id成员字段和一个getter方法getId();
public class MyClass {
private List<Meeting> myMeetings = new ArrayList<>();
public PastMeeting getPastMeeting (int id){
Meeting meetingWithId;
meetingWithId = myMeetings.parallelStream()
.filter(meeting -> meeting.getId() == id )
.findFirst()
.get();
return meetingWithId;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我将不得不从myClass中的其他几个方法执行此操作,因此我需要将该操作设置为自己的方法,并且我已将下面的方法添加到myClass,因为我可能有不同的Meeting实现,因此不同列表的类型也是如此,因此我将参数设置为通用.但是,当我以这种方式运行时,过滤器无法访问Meeting的getId()方法,称它"无法解析m.getId();"
private <T, R> T returnMeeting(T meeting, List<R> meetingList, int id) {
meeting = meetingList.parallelStream()
.filter(m -> m.getId() == id )
.findFirst()
.get();
return meeting;
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么,因为代码完全一样.运行泛型参数字段是否会导致lambda可以假设的中断?谢谢.
对于设置,我有:
interface Parent
interface Child1 extends Parent
interface Child2 extends Parent
Run Code Online (Sandbox Code Playgroud)
我在其他地方:
public class MyClass {
private List<Child1> child1List = new ArrayList<>();
public List<Parent> getChild1List(Contact contact) {
return child1List.parallelStream()
.filter(m -> m.getContacts().contains(contact))
.sorted(Comparator.comparing(Parent::getParentField))
.collect(Collectors.toList());
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,getChild1List返回一个List<Parent>(不应该返回List<Child1>吗?)
后来,我发现该流对其他方法很有用,所以我提取它并用它构建了一个泛型方法.我有多个扩展Parent的接口,所以我做了如下:
private <T extends Parent> List<T> returnsListByContact(List<T> childList, Contact contact) {
return childList.parallelStream()
.filter(m -> m.getContacts().contains(contact))
.sorted(Comparator.comparing(Parent::getParentField))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
并getChild1List(Contact contact)成为:
public List<Parent> getChild1List(Contact contact) {
return returnsListByContact(child1List, contact);
}
Run Code Online (Sandbox Code Playgroud)
但是现在它不喜欢这个,引用getChild1List返回一个List<Child1>.我不明白为什么,因为流的实现根本没有改变 - 除了启动它的childList来自通用参数,而不是直接调用MyClass的私有成员字段.
那他们为什么要回归两件不同的东西呢?
我不敢相信我必须问这个,但我搜索的所有答案都是基于对其他值和聚合的分组。我有一个单列 Dataframe,它只是 Spark 日期类型的日期。我想要最近的日期并将其带回给驱动程序。
------------
| MyDate |
------------
|2020-10-01|
|2020-10-02|
|2020-10-02|
------------
Run Code Online (Sandbox Code Playgroud)
我试过了:
df.groupBy("MyDate").agg(max("MyDate") as "max_date")
但这只是将数据复制到第二列中。
我知道这很愚蠢,但我找不到答案。
java ×4
java-8 ×4
scala ×4
lambda ×3
amazon-s3 ×2
apache-kafka ×2
generics ×2
ajax ×1
angularjs ×1
apache-spark ×1
comparator ×1
csrf ×1
filter ×1
findbugs ×1
foreach ×1
generic-list ×1
java-stream ×1
jquery ×1
list ×1
min ×1
parquet ×1
sbt ×1