小编ram*_*ram的帖子

@NamedNativeQuery - 如何将其绑定到存储库方法?

我正在使用Spring+ Hibernate并且我有一个特殊情况,我需要获取(一个列表)非Entity对象作为查询的结果.

我决定使用@ConstructorResultin @SqlResultSetMapping并参考此映射@NamedNativeQuery,如此此处所述.

然而,在使用命名原生查询所有案例中,他们获得EntityManager通过实例@PersistenceContext并调用createNativeQuery就可以了,提供name@NamedNativeQuery作为参数传递给该呼叫,如在回答.

如何将存储库中声明的方法映射interface到特定的@NamedNativeQuery?我的尝试是使用EntityName.MethodNameInRepositoryMethodNameInRepository作为name@NamedNativeQuery,但没有运气.

这是我的简化代码:

@Entity(name = "AdDailyData")
@SqlResultSetMapping(
        name="RevenueByAppAndDayMapping",
        classes=@ConstructorResult(
                targetClass=RevenueByAppAndDay.class,
                columns={@ColumnResult(name="country_code"),
                        @ColumnResult(name="revenue", type=Double.class),
                        @ColumnResult(name="currency")}))
@NamedNativeQuery(
        name="AdDailyData.aggregateRevenue",
        query="SELECT country_code, sum(earnings) as revenue, currency "
                + "FROM ad_daily_data, pseudo_app, app "
                + "WHERE ad_daily_data.pseudo_app_id=pseudo_app.id AND pseudo_app.app_id=app.id AND app.id=:appId and ad_daily_data.day …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-data-jpa

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

使用 RabbitMQ 源的 Spark 结构化流

我正在尝试编写一个自定义接收器Structured Streaming,它将使用来自RabbitMQ. Spark 最近发布了DataSource V2 API,看起来很有前途。因为它抽象了许多细节,所以为了简单和性能,我想使用这个 API。但是,由于它很新,因此可用的资源并不多。我需要有经验的人澄清一下Spark人,因为他们会更容易掌握关键点。开始了:

我的起点是博客文章系列,第一部分在这里。它展示了如何在没有流功能的情况下实现数据源。为了制作流媒体源,我稍微改变了它们,因为我需要实现MicroBatchReadSupport而不是(或除了)DataSourceV2

为了提高效率,明智的做法是让多个 spark executorRabbitMQ同时消费,即来自同一个队列。如果我没有感到困惑,输入的每个分区 -inSpark的术语 - 对应于队列中的一个消费者 -inRabbitMQ术语。因此,我们需要为输入流设置多个分区,对吗?

本系列的第 4 部分类似,我实现了MicroBatchReader,如下所示:

@Override
public List<DataReaderFactory<Row>> createDataReaderFactories() {
    int partition = options.getInt(RMQ.PARTITICN, 5);
    List<DataReaderFactory<Row>> factories = new LinkedList<>();
    for (int i = 0; i < partition; i++) {
        factories.add(new RMQDataReaderFactory(options));
    }
    return factories;
}
Run Code Online (Sandbox Code Playgroud)

我正在返回一个工厂列表,并希望列表中的每个实例都将用于创建一个阅读器,它也将是一个消费者。这种方法正确吗?

我希望我的接收者是可靠的,即在每条处理过的消息(或至少写入 chekpoint 目录以供进一步处理)之后,我需要将其确认为RabbitMQ. 问题从这里开始:这些工厂是在驱动程序中创建的,实际的读取过程通过DataReader …

java rabbitmq apache-spark spark-structured-streaming

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

为从Play商店安装的应用绘制叠加权限

是有关绘图覆盖权限问题的众所周知的问答。我在以前的应用程序中也观察到了相同的行为,即,从Play商店安装该应用程序时会自动授予该行为。

但是,在我最近的应用程序中,我发现即使从Play商店安装了该权限,也未授予该权限。起初,我认为这可能是我们测试设备的一个特定问题。但是,我想通过我最喜欢的分析工具跟踪这种缺乏权限的情况的数量来确定这一点。

我们昨天发布了通知此事件的版本,分析表明,我们必须在1天之内手动请求80位用户的许可。哎哟!!!

分析表明,此问题在从6.0到9的几乎所有Android版本中均会发生。因此,仅少数版本并非如此。

最近对此许可有任何更改吗?或者,Play Store是否有某种白名单(例如Facebook自动将其授予)以授予此权限?

android android-permissions

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

如何伪装窃听接口流量

我目前正在使用 Java 开发 VPN 服务器,至少尽可能使用 Java,并且我计划通过tap设备执行客户端数据包的路由。

目前,我能够将ethernet帧写入tap设备,并且可以通过观察这些数据包tcpdump。然而eth0,尽管我启用了 ip 转发MASQUERADE并向iptables. (这个问题似乎与那个相同,只是网关接口是一个真实的接口,而在我的情况下是一个虚拟接口。)

的输出ifconfig tap0如下:

tap0      Link encap:Ethernet  HWaddr 82:7d:95:39:71:a1  
          inet addr:10.1.0.1  Bcast:10.1.255.255  Mask:255.255.0.0
          inet6 addr: fe80::807d:95ff:fe39:71a1/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:767 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:56838 (56.8 KB)  TX bytes:0 (0.0 B)
Run Code Online (Sandbox Code Playgroud)

的输出ip link show tap0如下:

12: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu …
Run Code Online (Sandbox Code Playgroud)

c java linux vpn iptables

4
推荐指数
1
解决办法
2192
查看次数