我在泽西岛有一个标准的上传端点:
@POST
@Secure
@Consumes("multipart/form-data")
public Response upload( @Context final HttpHeaders hh,
@FormDataParam("fileaaa") final FormDataContentDisposition disposition,
@FormDataParam("fileaaa") final InputStream input,
Run Code Online (Sandbox Code Playgroud)
如何获取上传文件的MIME类型?
如果我这样做,请disposition.getType
获取表单的MIME类型; 在这种情况下form-data
.
我知道信息在某处; HTTP消息应该是这样的:
-----------------------------7d01ecf406a6
Content-Disposition: form-data; name="input_text"
mytext
-----------------------------7d01ecf406a6
Content-Disposition: form-data; name="fileaaa";
filename="C:\Inetpub\wwwroot\Upload\pic.gif"
Content-Type: image/gif
(binary content)
-----------------------------7d01ecf406a6--
Run Code Online (Sandbox Code Playgroud) 在Android应用程序中,我想使用Scanner类从文本文件中读取浮动列表(它是OpenGL的顶点坐标列表).确切的代码是:
Scanner in = new Scanner(new BufferedInputStream(getAssets().open("vertexes.off")));
final float[] vertexes = new float[nrVertexes];
for(int i=0;i<nrVertexFloats;i++){
vertexes[i] = in.nextFloat();
}
Run Code Online (Sandbox Code Playgroud)
然而,似乎这是非常慢的(读取10,000个花车需要30分钟!) - 在2.1仿真器上进行测试.这是怎么回事?当我在PC上使用它时,我不记得Scanner是那么慢(事实上,我之前从未读过100多个值).或者是其他东西,比如从资产输入流中读取?
谢谢您的帮助!
这里的目的是为需要调用外部服务(或一些昂贵但高度可缓存的操作)的actor实现一个非常简单的缓存,而不使用可变状态.
class A extends Actor{
def receive = {
case GetCommand =>
val response = callExternalService()
context.become(receiveWithCache(response))
context.system.scheduler.schedule(1 day, 1 day, self, InvalidateCache)
sender ! response
}
def receiveWithCache(cachedResponse:R): PartialFunction[Any,Unit] = {
case GetCommand => sender ! cachedResponse
case InvalidateCache => context.unbecome
}
}
Run Code Online (Sandbox Code Playgroud)
我知道有更多高级方法可以实现这一点,其中包括可以在Akka模式页面中找到的完全成熟的CacheSystem,但在某些情况下确实不需要.
另外,如果使用变得像这样安全,知道答案是有趣的.
我试图以更加非常规的方式使用RabbitMq(尽管此时我可以选择任何其他消息队列实现,如果需要).消费者不是将Rabbit推送消息留给我的消费者,而是连接到队列并获取一批N个消息(在此期间消耗一些消息并且可能拒绝一些消息),然后它跳转到另一个队列,依此类推.这样做是为了冗余.如果某些消费者崩溃,则保证所有消息都被其他消费者消费.
问题是我有多个消费者,我不希望他们在同一个队列中竞争.有没有办法保证队列锁定?如果没有,我是否至少可以确保如果2个消费者连接到同一个队列,他们不会读取相同的消息?交易可能在某种程度上帮助了我,但我听说他们将从RabbitMQ中删除.
其他建筑建议也受到欢迎.
谢谢!
编辑: 正如评论中所指出的那样,我需要如何处理消息.它们只在组中有意义,并且相关消息很可能在队列中聚集在一起.例如,如果我拉了一批100条消息,那么很有可能我会对1-3,4-5,6-10等消息做一些事情.如果我找不到某些消息的组,我将他们重新提交到队列中.WorkQueue不起作用,因为它会将来自同一组的消息传播给不知道如何处理它们的多个工作人员.
使用AWS Node SDK的代码似乎无法获得ECS任务的角色权限.
如果我在EC2 ECS实例上运行代码,代码似乎继承了实例上的角色,而不是任务.
如果我在Fargate上运行代码,则代码不会获得任何权限.
相比之下,在实例中运行的任何bash脚本似乎都具有适当的权限.
实际上,文档没有提到这是节点sdk的一个选项,只是:
有没有办法让您的节点代码获得ECS任务的权限?
这似乎是将权限传递给代码的合理方式.它与在实例上运行的代码完美配合.
我能想到的唯一解决方法是为每个ECS服务创建一个IAM用户,并将API Key/Secret作为环境变量传递给任务定义.但是,这似乎不太安全,因为对于有权访问任务定义的任何人来说,它都可以以纯文本形式显示.
我刚刚开始使用Akka,我无法决定是否应该使用依赖注入(如蛋糕模式)或actor查找,以便将actor与其他人分离.什么是首选方法?
我们经常需要传递代码上下文信息,例如执行操作的用户.我们将此上下文用于授权检查等各种事务.在这些情况下,隐含值可以证明对减少锅炉板代码非常有用.
假设我们传递了一个简单的执行上下文: case class EC(initiatingUser:User)
我们可以有方便的守卫:
def onlyAdmins(f: => T)(implicit context:EC) = context match{
case EC(u) if(u.roles.contain(Role.ADMIN)) => f
case _ => throw new UnauthorizedException("Only admins can perform this action")
}
val result = onlyAdmins{
//do something adminy
}
Run Code Online (Sandbox Code Playgroud)
我最近发现自己需要在与Akka演员合作时这样做,但他们使用模式匹配,我还没有找到一个很好的方法来使implicits与提取器一起工作.
首先,您需要使用每个命令传递上下文,但这很简单:
case class DeleteCommand(entityId:Long)(implicit executionContext:EC)
//note that you need to overwrite unapply to extract that context
Run Code Online (Sandbox Code Playgroud)
但是接收函数看起来像这样:
class MyActor extends Actor{
def receive = {
case DeleteCommand(entityId, context) => {
implicit val c = context
sender ! onlyAdmins{
//do something …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Google地图叠加层:http://pastebin.com/Rg8miMSh,我根据缩放级别添加/删除项目.删除/添加后,我在覆盖上填充填充并在地图视图上无效.一切正常,除了1个小问题:删除项目后,如果我点击其位置onTap仍然被触发,因为OverlayItem不再存在,我在com.google.android.maps.ItemizedOverlay中得到java.lang.ArrayIndexOutOfBoundsException . maskHelper(ItemizedOverlay.java:562)(完整堆栈跟踪 - http://pastebin.com/KThn4ZLE)
谁知道为什么会这样?最初我打电话给clear并再次添加所有项目,这似乎不会导致这个问题.然而,有许多项目这成为一个性能问题.仅添加/删除差异的速度要快得多,我想保留这种方法.谢谢!
你可以在不使用ThreadLocal或HttpSession的情况下将一些数据从javax.servlet.Filter传递给Jersey端点吗?
而且因为第一个问题是"你为什么要这样做?":大多是好奇的.在实践中,我认为我可以使用它将身份验证期间生成的一些数据传递给端点.不使用ThreadLocal消除了在链中使用它的诱惑(希望没有必要解释为什么那是邪恶的)并且不使用HttpSession更像是一个怪癖:)
我正试图抓住"Scala方式"的工作,所以我想知道下面的代码是不是在这种情况下应该怎么做.
所以我有实体User和Company(用LiftWeb映射器映射).用户具有包含选项[用户]的currentUser,而公司具有当前公司,其是选项[公司].为了比较当前用户是否是当前公司的所有者,我正在做以下事情:
Company.currentCompany.map{_.owner.get == User.currentUser.map{_.id.get}.openOr(-1) }.openOr(false)
Run Code Online (Sandbox Code Playgroud)
它工作但不知何故感觉有点冗长.好吗?不是吗?有更好的想法吗?谢谢!
java ×4
akka ×3
scala ×3
actor ×2
android ×2
jersey ×2
amazon-ecs ×1
amazon-iam ×1
amqp ×1
aws-sdk-js ×1
file-upload ×1
google-maps ×1
implicit ×1
mime-types ×1
monads ×1
overlay ×1
rabbitmq ×1
requirejs ×1
sbt ×1
sbt-web ×1
servlets ×1
spring ×1
uglifyjs ×1
upload ×1