如何用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提供这些数据,并且会经常调用它.像这样的信息显示在应用主页面中.
我想知道其他更好的方法来实现同样的目标.考虑到成本和响应时间,人们如何实现像这样的动态简单查询选择dynamodb作为主数据存储.
我想编写一个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行为有原因吗?
我怎样才能解决这个问题?
我已经为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) 我正在尝试为使用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) 我想在我的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) 假设我在Python项目中有一个数字,我想找出一个特定类定义的包/模块(我知道类名).有没有一种有效的方法呢?
我需要以这样的方式启动外部可执行文件,即用户可以与刚刚启动的程序进行交互.
例如在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)
但无论我写什么,我的输入都不会影响已启动的程序.我该怎么办?
我无法连接到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) 我是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) 使用 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) java ×4
aws-cli ×1
aws-lambda ×1
clojure ×1
enums ×1
javabeans ×1
javascript ×1
jmx ×1
json ×1
linux ×1
networking ×1
nosql ×1
openssl ×1
outputstream ×1
python ×1
reactjs ×1
spring ×1
spring-mvc ×1
stream ×1
tomcat ×1