小编Iva*_*tyk的帖子

如何使用Dynamodb进行基本聚合?

如何用dynamodb实现聚合?Mongodb和couchbase都有map减少支持.

让我们说我们正在建立一个技术博客,用户可以发布文章.并且可以标记文章.

user
{
    id : 1235,
    name : "John",
    ...
}

article
{
    id : 789,
    title: "dynamodb use cases",
    author : 12345 //userid
    tags : ["dynamodb","aws","nosql","document database"]
}
Run Code Online (Sandbox Code Playgroud)

在用户界面中,我们要显示当前用户标签和相应的计数.

如何实现以下聚合?

{
    userid : 12,
    tag_stats:{
        "dynamodb" : 3,
        "nosql" : 8
    }
}
Run Code Online (Sandbox Code Playgroud)

我们将通过rest api提供这些数据,并且会经常调用它.像这样的信息显示在应用主页面中.

  • 我可以考虑在应用程序级别提取所有文档并进行聚合.但我觉得我的阅读能力单位将用尽
  • 可以使用EMR,redshift,bigquery,aws lambda等工具.但我认为这些都是出于数据仓库的目的.

我想知道其他更好的方法来实现同样的目标.考虑到成本和响应时间,人们如何实现像这样的动态简单查询选择dynamodb作为主数据存储.

nosql amazon-dynamodb

18
推荐指数
2
解决办法
6373
查看次数

在React子组件上调用方法

我想编写一个Form组件,可以导出一个方法来验证其子代.不幸的是,表格并没有"看到"其子女的任何方法.

以下是我如何定义Form的潜在子级:

var Input = React.createClass({
  validate: function() {
    ...
  },
});
Run Code Online (Sandbox Code Playgroud)

以下是我定义Form类的方法:

var Form = React.createClass({
  isValid: function() {
    var valid = true;
    this.props.children.forEach(function(component) {
      // --> This iterates over all children that I pass
      if (typeof component.validate === 'function') {
        // --> code never reaches this point
        component.validate();
        valid = valid && component.isValid();
      }
    });
    return valid;
  }
});
Run Code Online (Sandbox Code Playgroud)

我注意到我可以使用refs调用子组件上的方法,但我不能通过props.children调用方法.

这个React行为有原因吗?

我怎样才能解决这个问题?

javascript reactjs

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

使用Apache BeanUtils将String转换为Enum

我已经为Apache BeanUtils库实现了一个转换器,用于将String转换为枚举常量:

class EnumConverter implements Converter {    
    @Override
    public <T> T convert(Class<T> tClass, Object o) {
        String enumValName = (String) o;
        Enum[] enumConstants = (Enum[]) tClass.getEnumConstants();

        for (Enum enumConstant : enumConstants) {
            if (enumConstant.name().equals(enumValName)) {
                return (T) enumConstant;
            }
        }

        throw new ConversionException(String.format("Failed to convert %s value to %s class", enumValName, tClass.toString()));
    }
}
Run Code Online (Sandbox Code Playgroud)

我用以下方式使用它:

// Register my converter    
ConvertUtils.register(new EnumConverter(), Enum.class);
Map<String, String> propMap = new HashMap<String, String>();
// fill property map    
BeanUtils.populate(myBean, propMap);
Run Code Online (Sandbox Code Playgroud)

不幸的是myBean实例中的setter除了ConcreteEnumClass枚举,而不是java.lang.Enum,这就是我在BeanUtils.populate方法调用期间收到以下异常的原因:

org.apache.commons.beanutils.ConversionException: Default conversion to …
Run Code Online (Sandbox Code Playgroud)

java enums javabeans apache-commons

10
推荐指数
1
解决办法
6957
查看次数

Spring MVC测试结果为415错误

我正在尝试为使用Spring MVC实现的REST API编写集成测试.

这是我的REST实现:

import org.myproject.api.input.ProjectInput;
import org.myproject.dao.ProjectsDao;
import org.myproject.model.Project;
import org.myproject.model.Projects;
import org.myproject.util.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/projects")
public class ProjectsApi {

    @Autowired
    private ProjectsDao projectsDao;

    ...

    @RequestMapping(value = "/",
        method = RequestMethod.POST,
        produces = {"application/json"},
        consumes = {"application/json"})
    public @ResponseBody Project addProject(@RequestBody ProjectInput projectInput) throws IOException {
        logger.info("Add project");
        Project project = projectInput.createProject();
        projectsDao.add(project);

        return project;
     }
}
Run Code Online (Sandbox Code Playgroud)

这是ProjectInput类:

@XmlRootElement
public class ProjectInput {
    private String name;
    private String description;

    // …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

9
推荐指数
2
解决办法
8735
查看次数

(错误代码:ssl_error_rx_record_too_long)Tomcat + OpenSSL

我想在我的Tomcat中启用SSL.但是当我启动Tomcat并转到https:// localhost:8443时,我明白了

An error occurred during a connection to localhost:8443.

SSL received a record that exceeded the maximum permissible length.

(Error code: ssl_error_rx_record_too_long)
Run Code Online (Sandbox Code Playgroud)

为此,我使用CA.sh生成私钥和签名证书,如下所示:

progerlaptop:/usr/share/ssl/misc # ./CA.sh -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
................................++++++
.............................................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase: pass
Verifying - Enter PEM pass phrase: pass
-----
You are about to be asked to enter information that will …
Run Code Online (Sandbox Code Playgroud)

linux tomcat openssl

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

如何找到Python类的定义位置

假设我在Python项目中有一个数字,我想找出一个特定类定义的包/模块(我知道类名).有没有一种有效的方法呢?

python

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

使用流重定向从Java代码启动外部可执行文件

我需要以这样的方式启动外部可执行文件,即用户可以与刚刚启动的程序进行交互.

例如在OpenSuse Linux中有一个包管理器--Zypper.您可以在命令模式下启动zypper,并为其提供安装,更新,删除等命令.

我希望以用户可以与之交互的方式从Java代码运行它:输入命令并查看他启动的程序的输出和错误.

这是我尝试使用的Java代码:

public static void main(String[] args) throws IOException, InterruptedException {
    Process proc = java.lang.Runtime.getRuntime().exec("zypper shell");

    InputStream stderr = proc.getInputStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    char ch;

    while ( (ch = (char)br.read()) != -1)
        System.out.print(ch);

    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是我只能看到它的输出:

zypper>
Run Code Online (Sandbox Code Playgroud)

但无论我写什么,我的输入都不会影响已启动的程序.我该怎么办?

java outputstream stream

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

为什么我收到错误"连接被拒绝"与JMX

我无法连接到JMX对象.以下是我创建JMX对象的方法:

public static void main(String... args) {
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    try {
        ObjectName name = new ObjectName("org.javasimon.jmx.example:type=Simon");
        if (mbs.isRegistered(name)) {
            mbs.unregisterMBean(name);
        }
        SimonManagerMXBean simonManagerMXBean = new SimonManagerMXBeanImpl(SimonManager.manager());
        mbs.registerMBean(simonManagerMXBean, name);
        System.out.println("SimonManagerMXBean registerd under name: "+name);

    } catch (JMException e) {
        System.out.println("SimonManagerMXBean registration failed!\n"+e);
    }

    while (true) {
        // waiting for connections
    }
}
Run Code Online (Sandbox Code Playgroud)

这是用于连接远程JMX对象的代码:

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://127.0.0.1:9999/jndi/rmi://127.0.0.1:1099/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
SimonManagerMXBean simonManagerMXBean = JMX.newMXBeanProxy(mbsc, new ObjectName("org.javasimon.jmx.example:type=Simon"), SimonManagerMXBean.class);
return simonManagerMXBean;
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

java.io.IOException: Failed …
Run Code Online (Sandbox Code Playgroud)

java networking jmx

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

在Clojure中对向量实现双循环的惯用方法是什么?

我是Clojure的新手,我很难习惯性地使用数据结构实现基本操作.

在Clojure中实现以下代码的惯用方法是什么?

l = [...]
for i in range(len(l)):
  for j in range(i + 1, len(l)):
    print l[i], l[j]
Run Code Online (Sandbox Code Playgroud)

clojure

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

使用 AWS CLI 在 AWS DynamoDB 中使用 Json 文件放置项目

使用 AWS CLI 将以下 JSON 放入 dynamo DB 中,并使用以下命令:

aws dynamodb put-item --table-name ScreenList --item file://tableName.json
Run Code Online (Sandbox Code Playgroud)

我收到参数验证失败异常。我已经严格浏览了 AWS 文档,但未能找到插入复杂 json 的示例。欢迎提供任何小帮助。

更新的 Json :

{
  "itemName": {
    "S": "SCREEN_LIST"
  },
  "productName": {
    "S": "P2P_MOBITEL"
  },
  "screenList": {
    "L": [
      {
        "menu": {
          "L": [
            {
              "M": {
                "menuId": {
                  "N": "1"
                },
                "menuText": {
                  "S": "ENG_HEADING"
                },
                "menuType": {
                  "S": "Dynamic"
                }
              }
            }
          ]
        },
        "M": {
          "screenFooter": {
            "S": "F_LANGUAGE_CHANGE"
          },
          "screenHeader": {
            "S": "H_LANGUAGE_CHANGE"
          },
          "screenId": { …
Run Code Online (Sandbox Code Playgroud)

json amazon-web-services amazon-dynamodb aws-cli aws-lambda

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