小编Bob*_*bby的帖子

使用Android的Spring Security调用REST Web服务

我正在使用Spring Security在Grails应用程序中托管REST Web服务,即:

@Secured(['IS_AUTHENTICATED_REMEMBERED'])
def save = {
    println "Save Ride REST WebMethod called"
}
Run Code Online (Sandbox Code Playgroud)

我是从Android应用程序调用它.(调用不安全的服务工作正常.)

要调用该服务,我手动构建一个request(HttpUriRequest)并使用一个执行它HttpClient.

我想知道最佳实践是什么,以及如何实现它们......具体来说,我应该:

  1. 执行一次登录,检索JSESSION_ID,然后为每个后续请求将包含它的标题添加到HttpUriRequest中?
  2. 或者(不确定我甚至会这样做)直接在每个请求中包含登录名和密码,在cookie /服务器端会话之前

我想我可以选择1工作,但我不确定Spring Security是否允许(2),如果这是要走的路......谢谢!

- 而且,没有任何我想念的图书馆会为我做这一切吗?:)

java rest spring web-services spring-security

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

如何在Groovy中"切片"一个集合

我有一组对象,我想分成一组集合,其中每个连续的3个元素组在一个集合中.例如,如果我有

def l = [1,4,2,4,5,9]
Run Code Online (Sandbox Code Playgroud)

我想把它变成:

def r = [[1,4,2], [4,5,9]]
Run Code Online (Sandbox Code Playgroud)

我现在通过遍历集合并将其分解来实现它.但是我需要将这些"组"传递给处理它们的并行化函数.消除这种O(n)预处理会很好工作,只是说些什么

l.slice(3).collectParallel { subC -> process(subC) }
Run Code Online (Sandbox Code Playgroud)

我在Range类上找到了step方法,但看起来它只对索引起作用.任何聪明的想法?

更新:我不认为这是引用链接的重复,虽然它非常接近.如下所示,它更像是我正在寻找的迭代器类型的东西..子集合将被传递到GPars collectParallel.理想情况下,我不需要分配整个新集合.

groovy

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

调整JVM以获得高分配率

我正在尝试调整我的应用程序主要是为了减少响应时间的"传播".平均值很好,但范围太宽.

Dynatrace显示较高的响应时间与较长的悬浮时间相关.这指向GC.

我尝试过根据在线阅读更改一些JVM GC值,但收效甚微.

基于GC日志,我认为分配率约为324 MB/s,促销率仅为0.85 MB/s.对我而言,它似乎具有非常高的分配率,所以我试图增加年轻一代的规模.

第一个屏幕截图是默认的Java 8设置,1024MB Xmx.

第二个屏幕截图是设置NewRatio = 1.

关于下一步尝试的任何建议都会非常感激.

我已经尝试过的事情:更改为G1GC,设置NewRatio = 1,设置NewRatio = 1并将Xmx增加到2048,设置NewSize = 1600m和Xmx = 2048,设置MetaspaceSize = 100

编辑:添加GC日志:http://pastebin.com/VhJwSuxv

注意:这些日志来自10分钟的测试,其中包含更改:NewRatio = 1

在此输入图像描述 在此输入图像描述

java performance garbage-collection jvm dynatrace

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

节点 lambda 未写入 DynamoDB 且没有错误

var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'})
AWS.config.update({region: 'eu-west-1'})
var docClient = new AWS.DynamoDB.DocumentClient()
  const params = {
    TableName: 'TC_QUESTIONS',
    Item: {
      'questionId' : {S: '001'},
      'questionText' : {S: 'Richard Roe'}
    }
  }

  var putItemPromise = docClient.put(params).promise()
  putItemPromise.then(function(data) {
    console.log("Added item:", JSON.stringify(data, null, 2));
  }).catch(function(err) {
    console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
  });

  await putItemPromise
Run Code Online (Sandbox Code Playgroud)

不返回错误。没有成功回调。当我使用错误的列名时,我会从 Dynamo 收到错误消息。我试过在本地和 lambda 上运行它。它执行并退出。没有行被添加到表中。我究竟做错了什么?

编辑: 这是我的 DynamoDB 表的 CF:

QuestionsTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: 'TC_QUESTIONS'
    AttributeDefinitions:
      - AttributeName: questionId
        AttributeType: S
      - …
Run Code Online (Sandbox Code Playgroud)

node.js amazon-dynamodb aws-lambda

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

如何在SurfaceView顶部使自定义叠加视图透明?

好的,我已经在SO和网络上经历过许多类似的问题,但无济于事.我只是试图在SurfaceView顶部覆盖透明视图..并最终在其上绘制一个矩形,使其看起来覆盖相机预览.

我不能让自定义视图透明,它会阻挡底层相机预览.有什么建议?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <FrameLayout 
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent"
        android:layout_height="400dip">
        <SurfaceView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:id="@+id/drawSurface"  />
        <com.bobby.facecapture.FaceOverlayView
            android:id="@+id/drawOverlay"
            android:background="@android:color/transparent" 
            android:layout_width="200dip"     
            android:layout_height="200dip"    
        />
    </FrameLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

200x200只是暂时的,以证明它确实覆盖了另一个视图.

FaceOverlayView只是一个自定义视图 - 直接从View派生,不会覆盖任何东西(现在).

我在相机预览的顶部有一个黑色矩形

android

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