小编and*_*ndy的帖子

将碎片从一个bigcouch服务器移动到另一个(用于平衡)

我目前正在测试bigcouch的大量数据(每天1500万条记录).

当我需要生成数据视图时,我遇到了一些平衡问题,因为我的两台机器中的一台比另一台机器弱得多.结果是,更好的机器完成并且没有任何关系,而较弱的机器还有很多工作要做.(单核与双核)

我的想法是将一些碎片从较弱的机器移动到另一台碎片,这样它们几乎可以在同一时间完成.

因此,我的问题是,如何将碎片从周末bigcouch服务器移动到更好的?

感谢您的帮助+最好的问候!

安迪

couchdb nosql bigcouch

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

如何使Spring Security OAuth2真正无状态/摆脱"状态"参数?

我目前正在开展一个项目,我们希望用户通过Facebook和其他OAuth2提供商登录.此外,REST api应该是无状态的.因此,不应创建/使用cookie/jsessionids.对于api的授权,在通过Facebook成功登录后,api会发布JWT.消耗其余api的webapp是使用AgularJS和satellizer构建的.我将代码缩减为github上最小示例.

工作流程理念:

  1. 用户进入该网站,选择"使用Facebook登录"
  2. Web应用程序打开一个弹出窗口,显示Facebook登录页面
  3. 用户登录,接受和Facebook重定向到webapp
  4. webapp从Facebook接收令牌并使用它登录到其余的api(GET/login/facebook?code = XXXXXXXXXXXXXXXXX)
  5. 其余的api返回JWT.
  6. webapp使用JWT来针对任何进一步的请求对其余api进行授权.

到目前为止工作

  • webapp可以处理步骤1到4
  • 如果您使用从执行GET的OAuth2ClientContextFilter获取的重定向到没有代码参数的"/ login/facebook",其余的api可以处理步骤5和6.(此重定向发送到Facebook,您登录后,您将再次重定向到api.)
  • 其余的api是无状态的,没有创建/需要jsessionid/cookies(禁​​用csrf并使用SessionCreationPolicy.STATELESS).除了 "登录/ facebook"调用,这个仍然创建一个jsessionid.

问题

webapp和其他api的"login/facebook?code = XXX"调用的组合不起作用.我发现当你进行GET"login/facebook"时,你将被重定向到facebook,并在网址上附加一个额外的状态参数.此外,当facebook重定向回api时,还会添加此状态参数.从我在网上找到的,这似乎是一种CSRF保护,对吧?我猜这个东西也创造了jsessionid cookie?

问题

  1. 以上工作流程是否合理?
  2. 我的用例中是否需要此CSRF保护?
  3. 我怎么能禁用这种行为?我的意思是,我使用了SessionCreationPolicy.STATELESS,但Spring仍然使用jsessionid创建了一个会话.那我怎样才能创建一个真正的无状态休息api呢?(至少关于饼干...)
  4. 这是正确的方法吗?或者我错过了什么?

示例代码

如前所述,我在GitHub上放了一个完整的最小例子.在这里,我将只发布WebSecurityConfigurerAdapter(希望)最重要的部分.该完整的文件在这里.

@EnableOAuth2Client
@Configuration
public class OAuth2ClientConfigurer extends WebSecurityConfigurerAdapter {

@Autowired
private OAuth2ClientContext oAuth2ClientContext;

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).enableSessionUrlRewriting(false).and()
            .antMatcher("/**").authorizeRequests()
            .antMatchers("/login/**").permitAll()
            .anyRequest().authenticated().and()
            .exceptionHandling().authenticationEntryPoint(new Http403ForbiddenEntryPoint()).and()
            .addFilterBefore(statelessJwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
            .addFilterBefore(createSsoFilter(facebook(), facebookSuccessHandler(), "/login/facebook"), BasicAuthenticationFilter.class);
}

private OAuth2ClientAuthenticationProcessingFilter createSsoFilter(ClientResourceDetails clientDetails, AuthenticationSuccessHandler successHandler, String path) { …
Run Code Online (Sandbox Code Playgroud)

spring stateless jsessionid jwt spring-security-oauth2

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

CouchDB可以每天处理1500万条记录吗?

我对NoSQL数据库比较陌生,我不得不为监控工具评估不同的NoSQL-Solutions.

情况如下:一个数据只有大约100字节,但实际上有很多.在一天中,我们获得了大约1500万条记录...所以我目前正在测试9亿条记录(大约15GB作为SQL插入脚本)

我的问题是:Couchdb是否符合我的需求?我需要做范围查询(在创建记录的日期)并根据存储在数据中的"二级索引"定义的组总结一些列.)我知道MapReduce可能是计算它的最佳解决方案,但是CouchDB的JavaScript能够在可接受的时间内完成吗?

我已经尝试过MongoDB,但是MapReduce真的很差,做得很糟糕......我还读到了HBase和Cassandra.但也许CouchDB也是一个很好的可能性

我希望我能给你所有需要的信息......谢谢你的帮助!

安迪

couchdb nosql

11
推荐指数
1
解决办法
2571
查看次数

如何在具有数据并行性的多个GPU上运行Tensorflow Estimator

我有一个标准的tensorflow Estimator和一些模型,并希望在多个GPU而不是一个GPU上运行它.如何使用数据并行来完成?

我搜索了Tensorflow文档,但没有找到示例; 只有句子说Estimator会很容易.

有没有人使用tf.learn.Estimator有一个很好的例子?或指向教程的链接?

multi-gpu tensorflow tensorflow-gpu

11
推荐指数
1
解决办法
5441
查看次数

如何在Java中获取mp4-Movie的单个图像

我想对以.mp4格式存储的视频进行一些图像分析.因此,我需要一种方法来用Java获取这部电影的图像.我骂了很多,发现了像jcodec和jaad这样的库.但我无法使用这些库运行.正如我发现的那样,有一些例子(至少我没有找到)显示我的用例.

你能帮助我吗?你知道任何库可以做我需要的,至少在Win7 64位上运行.或者你知道如何使用jcodec实现这一目标吗?

非常感谢+最好的问候,安迪

编辑:

正如我写的,我用jcodec尝试过.我发现了如何获取帧的数据,但不知道如何将它变成像BufferedImage这样的东西.我希望这些数据不是简单的RGB格式,而是任何压缩格式.(我是否正确?)我不知道要解码这些数据.

您可以使用jcodec获取帧的数据,如下所示(至少据我所知):

public static void main(String[] args) throws IOException, MP4DemuxerException {
    String path = "videos/video-2011-09-21-20-07-21.mp4";

    MP4Demuxer demuxer1 = new MP4Demuxer(new FileInput(new File(path)));
    DemuxerTrack videoTrack = demuxer1.getVideoTrack();

    Packet firstFrame = videoTrack.getFrames(1);
    byte[] data = firstFrame.getData();
}
Run Code Online (Sandbox Code Playgroud)

我还找到了以下内容:http://code.google.com/p/jcodec/source/browse/trunk/src/test/java/org/jcodec/containers/mp4/DitherTest.java? r = 70 但这不是使用可下载的jar-package工作(有编译错误).

谢谢你的帮助!

java mp4 decode

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

TensorFlow 2.0 Keras:如何为 TensorBoard 编写图像摘要

我正在尝试使用 TensorFlow 2.0 设置图像识别 CNN。为了能够分析我的图像增强,我想在张量板中查看我输入网络的图像。

不幸的是,我不知道如何使用 TensorFlow 2.0 和 Keras 来做到这一点。我也没有真正找到这方面的文档。

为简单起见,我展示了一个 MNIST 示例的代码。我将如何在此处添加图像摘要?

import tensorflow as tf
(x_train, y_train), _ = tf.keras.datasets.mnist.load_data()

def scale(image, label):
    return tf.cast(image, tf.float32) / 255.0, label

def augment(image, label):
    return image, label  # do nothing atm

dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.map(scale).map(augment).batch(32)

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(dataset, epochs=5, callbacks=[tf.keras.callbacks.TensorBoard(log_dir='D:\\tmp\\test')])
Run Code Online (Sandbox Code Playgroud)

python summary keras tensorflow tensorboard

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

OpenGL ES 2.0:在顶点着色器中是否存在缺少纹理访问的解决方法?

我目前正在尝试使用Android的OpenGL ES 2.0进行游戏.我的地图是一个二维网格地图,每个位置都有一个高度值.现在我想在纹理中存储每个坐标的高度,以在顶点着色器中进行高度查找.

这个想法的好处是我可以生成一个通用三角网并将其(带偏移)放在用户当前正在查看的地图位置上.由于偏移,我可以省略每次用户移动其视图位置和我将从纹理读取的高度轮廓时创建新三角网的需要.

现在存在的问题是许多当前的Android设备(甚至是Galaxy S3)不支持顶点着色器中的纹理查找.可悲的是,这完全破坏了我目前的做法.

我的问题:还有其他可能从顶点着色器中的图形卡内存中获取数据吗?如果不直接指定每个顶点的数据,每次用户更改视图位置时,会强制我(据我所知)重新创建高度贴图.(每次用户更改视图位置时创建高度图都会变慢...)

感谢您的帮助+最好的问候,

安德烈亚斯

android texture2d vertex-shader opengl-es-2.0

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

Java nio:如何使用正确的字符集从内存映射文件中读取字符

对于一个新项目,我必须读取文件的字符(具有可配置的编码)来处理输入.由于其中一些文件可能非常大(> 100MB),我想查看Java nio的内存映射文件的能力,以便更快地访问.

但是,我无法弄清楚,我是如何创建"Reader"的 - 就像使用正确的字符集解码从MappedByteBuffer中读取一样.

要创建MappedByteBuffer,我目前使用:

    RandomAccessFile raFile = new RandomAccessFile("myFile.bla", "r");
    FileChannel channel = raFile.getChannel();
    MappedByteBuffer mappedByteBuffer = channel.map(MapMode.READ_ONLY, 0, channel.size());
Run Code Online (Sandbox Code Playgroud)

我知道,我可以使用getChar()从MappedByteBuffer中获取一个字符,但是如何指定编码呢?在它所说的javadoc中,总是读取两个字节并将其组合成一个char,但是ASCII编码文件是什么?

我还找到了Channels.newReader(...)方法,但是它们只能处理通道,而不能处理内存映射文件.MappedByteBuffer有类似的东西吗?

只是为了确保:我知道内存映射是一个有点昂贵的操作,因此只对较大的文件有用.我还没有决定是否使用它,但是想要根据我的特殊用例来评估它.

非常感谢提前+最好的问候,安德烈亚斯

java nio character-encoding memory-mapped-files

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