小编Maj*_*imi的帖子

psycopg2.ProgrammingError:无法适应类型“DictRow”

我想在以下位置使用 dict 游标psycopg2

self.__db_conn = psycopg2.extras.DictConnection("host=... dbname=...")
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

cur.execute('INSERT INTO scm_main.tbl_ack(ack_summary_id, ack_local_timestamp, ack_user_id) '
    'SELECT summary_id AS ack_summary_id, now() AS ack_local_timestamp, us.user_id AS ack_user_id '
    'FROM scm_main.tbl_summary AS s '
    'INNER JOIN scm_main.vu_usr_stn AS us ON (s.summary_station_id = us.station_axis_id) '
    'WHERE ((s.summary_id > (SELECT COALESCE(max(a.ack_summary_id),0) FROM scm_main.tbl_ack AS a WHERE a.ack_user_id = %(user_id)s)) '
    'AND (s.summary_company_specific_id <> 0) '
    'AND (us.user_name = %(user_name)s) AND (s.summary_timestamp < (now() - \'00:25:00\'::interval))) '
    'ORDER BY s.summary_id ASC', { 'user_id': self.__user_id, 'user_name': …
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2

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

如何从两个进程同步 - 在一个文件上进行原子写入?

我有两个进程,每个进程写大数据缓冲区,我想控制同步这些进程的写入到一个文件.

处理1写入缓冲器A包括(A1,A2,A3)和处理2写入缓冲器B,包括(B1,B2,B3).当我们使用write()系统调用将这些缓冲区写入磁盘到同一个文件(整个缓冲区一次:)时write(fd, A, sizeof(A)),文件架构如何?

  • 它是这样的:A,B或B,A可能吗?
  • 或者它可能是这样的:A1,A2,B1,A3,......

我问这个是因为系统调用是原子的.如果我们写的数据缓冲区太大会发生什么.它是否像常规磁盘文件的管道?

c atomic

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

以受控方式拆分SequenceFile - Hadoop

hadoop SequenceFile以键值对(记录)格式写入.考虑一下我们有一个大的无界日志文件.Hadoop将根据块大小拆分文件并将其保存在多个数据节点上.是否保证每个键值对都驻留在一个块上?或者我们可能有一个案例,以便密钥在节点1的一个块中,并在节点2的第二个块上的值(或部分)?如果我们可能有无意义的完全拆分,那么解决方案是什么?同步标记?

另一个问题是:hadoop是否会自动写入同步标记,或者我们应该手动编写它?

hadoop

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

我们可以在发布/订阅消息中使用请求/回复模型吗?

O'Reilly Media撰写的"Java消息服务"一书中说:

在点对点消息传递中使用请求/回复模型.

我们可以在pub/sub消息中使用消息选择器,因此编写请求/回复模型就像在回复主题上编写一个简单的选择器一样简单:

  1. 发布者发布带有一些独特属性的消息(例如UUIDas correlationID)
  2. 订户具有相同的消息进行响应UUIDcorrelationID
  3. 发布者(也是回复主题的订阅者)选择已发送的消息UUID.

这是错误的模式吗?

jms publish-subscribe

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

JAXB将@XmlElementRefs和@XmlElements转换为xs:choice

我有4节课.Person类和抽象ContactInformationPhoneAddress类扩展它.

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Person {
    @XmlElement(required = true, nillable = false)
    private String first;
    @XmlElement(required = true, nillable = false)
    private String last;
    @XmlElementWrapper(name = "contacts")
    @XmlElementRefs({
        @XmlElementRef(name = "phone", type = Phone.class, required = true),
        @XmlElementRef(name = "address", type = Address.class, required = true)
    })
    private final List<ContactInfomation> contacts = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

ContactInformation 仅用作容器:

public abstract class ContactInfomation { /* empty class */ }
Run Code Online (Sandbox Code Playgroud)

Phone 类:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE) …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

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

如何使用bean验证进行JAX-RS部分更新

这似乎很疯狂,但是我在处理JAX-RS部分JSON请求时遇到了麻烦。例如,假设我们有一个实体:

public class Data {
    private String a;
    private String b;
    private Integer c;
    /* this is flat and large object with many fields */
}

@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Path("/data")
public Response updateData(Data d) {
    /* update database */
}
Run Code Online (Sandbox Code Playgroud)

现在,我想让用户更新一些字段。因此,用户发送这样的请求:

{ "a": "data of field a" }
Run Code Online (Sandbox Code Playgroud)

这意味着仅更新字段“ a”。当用户要将字段“ a”设置为null时,他将发送{ "a": null }。问题是在服务器端,我无法确定客户端是否要将字段“ a”设置为null或请求中没有字段“ a”,因此我不应该触摸字段“ a”(在两种情况下,“ a”都会为空)。一种解决方案是读取Map<String, Object>而不是Data。通过这种方式,我可以区分这两种情况,但是我将松散bean验证框架,并且我应该做很多类型转换(Objectto String/Integer/List<Integer>)。是否有任何简洁的方式来处理此类部分更新请求?我在Jetty上使用Jersey 2.9和Jackson 2.3。

java json jax-rs jersey jackson

6
推荐指数
0
解决办法
1249
查看次数

使用交错寻址方法并行减少库冲突

我正在阅读 Mark Harris 的关于优化 CUDA 中的并行缩减的演示文稿。这是一张我有问题的幻灯片:

在此处输入图片说明

它说这种方法存在银行冲突问题。但为什么?所有线程都在访问位于不同库中的两个连续内存单元。它们都不会同时访问特定的存储单元。

parallel-processing cuda gpu reduction

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

AWS XRay 服务地图组件已断开连接

我正在使用开放遥测导出以下应用程序的跟踪信息:

  1. Nodejs kafka 生产者将消息发送到input-topic. 它使用kafkajs带有库的仪器opentelemetry-instrumentation-kafkajs我正在使用 AWS OTEL for NodeJS example中的示例。这是我的tracer.js
module.exports = () => {
  diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ERROR);

  // create a provider for activating and tracking with AWS IdGenerator
  const attributes = {
      'service.name': 'nodejs-producer',
      'service.namespace': 'axel'
  }

  let resource = new Resource(attributes)

  const tracerConfig = {
    idGenerator: new AWSXRayIdGenerator(),
    plugins: {
        kafkajs: { enabled: false, path: 'opentelemetry-plugin-kafkajs' }
    },
    resource: resource
  };
  const tracerProvider = new NodeTracerProvider(tracerConfig);

  // add …
Run Code Online (Sandbox Code Playgroud)

java node.js aws-xray distributed-tracing open-telemetry

6
推荐指数
0
解决办法
617
查看次数

单选菜单项生成SelectionListener两次 - SWT

我有一个名为"radio"的顶级菜单,包含两个收音机MenuItem.我SelectionListener为两者都添加了.

    MenuItem radio = new MenuItem(bar, SWT.CASCADE); /* bar is the menu bar */
    radio.setText("Radio");

    Menu menu = new Menu(radio);
    radio.setMenu(menu);

    MenuItem mntmOption_1 = new MenuItem(menu, SWT.RADIO);
    mntmOption_1.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Option 1 selected");
        }
    });
    mntmOption_1.setText("Option1");

    MenuItem mntmOption_2 = new MenuItem(menu, SWT.RADIO);
    mntmOption_2.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Option 2 selected");
        }
    });
    mntmOption_2.setText("Option2");
Run Code Online (Sandbox Code Playgroud)

首先我选择mntmOption_1它显示:

Option1 selected
Run Code Online (Sandbox Code Playgroud)

然后我选择mntmOption_2它显示:

Option1 selected
Option2 selected
Run Code Online (Sandbox Code Playgroud)

它似乎正在解雇两个听众.这是一个问题:为什么?我正在运行WinXP.

java swt menuitem

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

如何修改log4j JsonLayout字段名称

我已经使用此配置文件配置了log4j 2以将其写入MapMessage控制台:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR">
    <Properties>
        <Property name="disableThreadContext">true</Property>
        <Property name="disableThreadContextStack">true</Property>
        <Property name="disableThreadContextMap">true</Property>
        <Property name="log4j2.disable.jmx">true</Property>
    </Properties>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <JsonLayout locationInfo="true" complete="false" />
        </Console>
    </Appenders>
    <Loggers>
        <logger name="ir.cvas.logger" level="info" />
        <Root level="warn">
            <AppenderRef ref="CONSOLE"/>
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

此配置的输出如下:

{
  "timeMillis" : 1404902036494,
  "thread" : "main",
  "level" : "ERROR",
  "loggerName" : "ir.cvas.log4j.json.Main",
  "message" : "description=\"I'm so fucked...\" id=\"12312312312312321\"",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.log4j.spi.AbstractLogger",
  "source" : {
    "class" : "ir.cvas.log4j.json.Main",
    "method" : "main",
    "file" : "Main.java",
    "line" …
Run Code Online (Sandbox Code Playgroud)

java json log4j

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