小编cen*_*cen的帖子

从外部模块访问资源文件

到目前为止,直到非模块化的java,你只需要放入一个文件,src/main/java/resources确保它在classpath中,然后加载它

file = getClass().getClassLoader().getResourceAsStream("myfilename"); 
Run Code Online (Sandbox Code Playgroud)

来自类路径中的任何位置.

现在有了模块,情节变浓了.

我的项目设置如下:

module playground.api {
    requires java.base;
    requires java.logging;
    requires framework.core;
}
Run Code Online (Sandbox Code Playgroud)

配置文件放在里面src/main/resources/config.yml.

项目运行

java -p target/classes:target/dependency -m framework.core/com.framework.Main
Run Code Online (Sandbox Code Playgroud)

由于主类不在我自己的项目中,而是在外部框架模块中,因此无法看到config.yml.现在的问题是,有没有办法以某种方式将我的配置文件放入模块或打开它?我是否必须更改框架上游加载文件的方式?

我尝试在module-info中使用"exports"或"opens",但它想要一个包名,而不是文件夹名.

如何以最佳实用的方式实现这一点,以便它可以像Java 8一样工作,并尽可能少地进行更改?

java java-platform-module-system java-9

16
推荐指数
2
解决办法
5946
查看次数

有没有办法用静态OpenSSL构建静态Qt?

原始问题略有不同,但是一个更重要的问题的一部分.

我试图在Windows上使用静态OpenSSL将Qt 5.2构建为静态.

我的最终目标是发送一个二进制文件而无需提供libeay32.dll和ssleay32.dll.但是,在我看来,这是不可能的.我使用静态openssl库构建了静态Qt,但似乎Qt完全忽略了提供的lib并且总是搜索DLL.

这个答案还表明QtNetwork总是搜索DLL并忽略其他所有内容,但它也声明"两个选项是将OpenSSL编译成Qt ......"但似乎并非如此.

有人能提供明确的答案吗?

这是我的Qt配置(为了便于阅读而增加了换行符):

configure -static -qmake -opensource -nomake examples -opengl desktop
-platform win32-msvc2010 -openssl -I C:\git\openssl\build\include
-L C:\git\openssl\build\lib OPENSSL_LIBS="-llibeay32 -lssleay32 -lgdi32"
Run Code Online (Sandbox Code Playgroud)

c++ qt static openssl qtnetwork

15
推荐指数
1
解决办法
8246
查看次数

将屏蔽位移到lsb

当你and使用掩码的某些数据时,你会得到一些与数据/掩码大小相同的结果.我想要做的是取结果中的掩码位(掩码中有1)并将它们向右移动,使它们彼此相邻,我可以对它们执行CTZ(计数尾随零) .

我不知道如何命名这样的程序,所以谷歌让我失望.该操作最好不应该是循环解决方案,这必须尽可能快地操作.

这是一个用MS Paint制作的令人难以置信的图像. 在此输入图像描述

c c++ bitmask

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

c ++向量初始化

我一直在使用Code :: Blocks和MingW编译器中的值进行以下向量初始化:

vector<int> v0 {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)

之后,我不得不将代码移动到visual studio项目(c ++),并尝试构建.我收到以下错误:
本地函数定义是非法的

Visual Studio编译器不支持这种初始化?
如何更改代码以使其兼容?
我想初始化vector并同时用值填充它,就像数组一样.

c++ initialization vector visual-c++ c++11

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

当Body无法分配给类时,如何调试JMS?

我正在使用Java EE JMS队列.我正在将对象发送到队列中,然后使用MDB接收它们.当将消息体(使用getBody())读入对象时,我得到以下异常:

javax.jms.MessageFormatException: Body not assignable to class ...
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以从中获得更具描述性的错误,这将告诉为什么它不可分配?我也尝试进入调试模式,看看哪种消息对象到达MDB但是我已经看到它被序列化,所以它并没有真正有用.

在将对象类型发送到队列之前,可以在调试器中正确识别它.

附加信息:如果我手动创建一个空对象并发送它,则可以正确识别它.生产对象来自REST端点,包含许多属性,并在此过程中进行了多次转换.某些数据必须阻止分配,但逐步调试每个属性将是一种痛苦,并且只是作为最后的手段.

对于如何在Java中测试类正确实现Serializable(不仅仅是Serializable的实例)的每个答案,对象都被确认为可序列化的

对象发送方式为: jmsContext.createProducer().send(queue, object);

我设法通过将所有属性设置为null然后逐个评论它直到它工作来缩小范围.事实证明,持续时间类型属性不正确?初始化导致问题.在另一种情况下,导致它的是XMLGregorianCalendar属性.尽管如此,这是一种非常hacky的调试方式,我仍然不知道为什么分配失败,我只知道哪个属性导致它.

暂时我最终将实体ID传递到队列而不是完整对象,我通过ID从数据库中检索它们.

完整stacktrace的Pastebin:http://pastebin.com/vWvhDTcr

java debugging jms java-ee

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

如何在EclipseLink中级联@JoinFetch?

我有以下模型:订单有多个项目,项目有多个其他孩子.它是几层深的树.

我对所有急切装载@OneToMany连同@JoinFetch和所有迟缓装载@ManyToOne(以避免在N + 1个问题的其他查询).

根据我如何在JPQL中进行"深度"提取连接?我可以使用多个查询提示来推测加载整个树,但是,我更喜欢仅通过注释来执行此操作.

不幸的是,即使对整个树进行了注释@JoinFetch,似乎连接只执行1级深度,导致多个查询而不是整个树的单个查询.

这些是我可以看到执行的查询:

订单 - 所有孩子的左外连接.

OrderItem - 所有子项的左外连接.

所有级别的......等等.

我可以看到@JoinFetch它正在工作,但它只能在一个层次上工作.我想要实现的是一个加载整个树的单个查询.

虽然这个级别的深度加载确实帮助我加快了超过2倍的调用,但是当一次加载大量实体​​时它们仍然不是最理想的,因为每个权限意味着5个以上的额外查询.

有没有办法仅使用注释加载整个树,还是应该手动设置多个查询提示来实现此目的?

由詹姆斯·萨瑟兰答案在这里似乎并不为真(约递归工作).

java jpa eclipselink

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

CSRF令牌和XSS漏洞

假设我们在表单中使用CSRF令牌,但是碰巧我们的网站上存在一个未被注意的XSS漏洞。

据我了解,在这种情况下,CSRF令牌保护是完全无效的,因为攻击者可以通过XSS使用XMLHttpRequest收回它。

在这种情况下,是否有一种方法可以使CSRF保护有效,使其在攻击中幸存下来?或者我们的站点在完全采取CSRF之王之前应该首先具有安全的XSS保护吗?

在每个页面请求上设置一个新令牌,而不是在登录时设置令牌会解决吗?这带来了一次打开更多表单的问题,我不喜欢它。

php security xss csrf web

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

在 loadData CSV 中使用 liquibase 参数

我想抽象为每个 dbms 生成 uuid 的函数:

<property name="uuid_function" value="gen_random_uuid()" dbms="postgresql"/>
<property name="uuid_function" value="NEWID()" dbms="mssql"/>
<property name="uuid_function" value="sys_guid()" dbms="oracle"/>
Run Code Online (Sandbox Code Playgroud)

然后在我的 CSV 中使用此属性,该属性由 loadData 加载,如下所示:

"${uuid_function}"
Run Code Online (Sandbox Code Playgroud)

但它不起作用($ 上的解析错误)。另一种方法是在 loadData 内的列上使用默认值:

<column name="id" type="COMPUTED" defaultValueComputed="${uuid_function}"/>
Run Code Online (Sandbox Code Playgroud)

..也不起作用。Id 列被定义为 NOT NULL,如果我将该列保留在 CSV 之外,它会抱怨列不能为空,即使它应该使用默认值。

如何在 CSV 文件中使用参数和/或为什么默认值让我失败?

liquibase

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

在 Android 上的 Activity 中获取常规通知的正文和标题

  1. 发送常规通知(JSON 正文中有“通知”,而不是自定义数据通知)
  2. 让应用程序在后台运行,这样应用程序中的 onMessageReceived() 实现就不会被触发,系统会负责显示通知。
  3. 单击通知时,会触发 MainActivity。似乎无法notification在 Activity 中检索通知标题和正文(JSON 部分),只能data从 Extras 中的 Bundle 中检索该部分。

我的主要活动:

Intent intent = getIntent();
if (intent.getExtras() != null) {
    debug("Intent with extras");

    Bundle b = getIntent().getExtras();
    for (String key : b.keySet()) {
        Object value = b.get(key);
        Log.d(TAG, String.format("%s %s (%s)", key,
                value.toString(), value.getClass().getName()));
    }
}
Run Code Online (Sandbox Code Playgroud)

日志输出:

带有额外内容的意图 google.sent_time 1487153876625 (java.lang.Long) openUrl http://192.168.29.121:8083/v1/messages/87046D17-6470-427C-A046-2E1C92E21D23/open (java.lang.String) customProperties {" big_icon_url":"link"} (java.lang.String) 来自 814199820217 (java.lang.String) google.message_id 0:1487153876640504%a38586a6a38586a6 (java.lang.String) Collapse_key com.kumuluz.ccm.android.sample (java .lang.String)

如您所见,仅给出了数据部分(openUrl、customProperties...)。

如果我手动处理自定义通知,这不是问题,因为我可以将标题和正文推送到附加内容,然后它们会出现在捆绑包中。但是,当应用程序处于后台时,如何从系统处理的通知中获取标题和正文?

我没有看到任何合适的方法来Intent …

android push-notification firebase firebase-cloud-messaging

5
推荐指数
0
解决办法
1880
查看次数

vs2010上的Zlib链接器错误

我有一个zlib链接器错误.花了几个小时尝试解决问题,但到目前为止还没有.Zlib是使用vs2010,win32版本构建的.我的项目使用相同的.

错误提取:

error LNK2019: unresolved external symbol _deflateEnd@4 referenced in function
error LNK2019: unresolved external symbol _deflate@8 referenced in function
error LNK2019: unresolved external symbol _deflateInit_@16 referenced in function
Run Code Online (Sandbox Code Playgroud)

在文件中包含zlib.h,如下所示:

#ifdef WIN32
# define ZLIB_WINAPI
#endif
#include "zlib.h"
Run Code Online (Sandbox Code Playgroud)

项目设置:

链接器 - >常规 - >附加库依赖项:C:\ somepath\zlib

链接器 - >输入 - >附加依赖项:zlibstatic.lib

链接器详细输出(不完整,仅适用于zlib):

Searching C:\somepath\zlib\zlibstatic.lib:
Searching C:\somepath\zlib\zlibstatic.lib:
Run Code Online (Sandbox Code Playgroud)

两个直接命中但它没有做任何事情..

我看到了这个问题,但我不认为我有这个问题,因为:

  1. 我没有使用contrib解决方案,我用cmake生成了一个-G"Visual Studio 10"
  2. 我在定义之前定义了ZLIB_WINAPI作为对顶部答案建议的评论.

它实际上是一个开源项目,所以如果有人可以尝试重现问题:

  1. 克隆https://github.com/d1zzy/pvpgn.git
  2. 添加zlib库并将文件包含到pvpgn/pvpgn/zlib(或其他任何地方,只需使用自定义zlib路径编辑cmake/Modules/FindZLIB.cmake)
  3. 运行cmake -G"Visual Studio 10",打开解决方案并尝试构建项目"bnetd"

c++ linker zlib visual-studio-2010

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

基本DLL地址始终不同并且哈希不匹配

我创建了一个程序,它从一个进程的加载的dll(模块)中读取X字节并对它们进行哈希处理,以便将它们与硬编码的干净哈希进行比较.模块的基地址始终相同(在XP和7上由不同的人在几台不同的计算机上测试),并且哈希值也始终相同.

但是对于一个人来说,基地址总是不同的,并且哈希值也总是不同的(每次运行时都不同).他正在使用Windows 7旗舰版.

我的问题是:

  1. 为什么模块的基地址总是不同?我知道dll可以加载到不同的地址,但是什么触发了这种行为?(DLL总是具有相同的基址吗?)基址始终是0x02XXXXXX类型,而其他人得到的永不改变的地址是0x6F000000.

  2. 为什么哈希不匹配?即使模块加载到不同的地址,我仍然从base + someoffset读取相同数量的字节.散列不仅不同,每次运行程序时都不同.因此,我怀疑基地址实际上是错误的,并且有些可疑.我比较了我的dll和他的dll的md5,它们是相同的,所以加载的库是完全相同的.

代码中采取的步骤:

  1. 获取进程句柄(CreateToolhelp32Snapshot,Process32Next)
  2. 枚举加载的模块(EnumProcessModules)
  3. 按名称(GetModuleFileNameEx)查找特定模块并获取句柄
  4. 向模块基址添加额外的偏移量(模块内的偏移量)
  5. 阅读X字节从与模块ReadProcessMemory(hProcess, base_of_module+some_additional_offset, dllBuffer_to_read_into, 0x100000, &numRead),其中的0x100000并没有溢出模块尺寸

该程序正在做的是将内存中的dll内容与"干净"哈希进行比较,以发现对恶意软件/黑客/等的篡改.

c++ dll winapi

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

部署 WAR 时出现 AmbiguousResolutionException

我在部署到 WildFly 8.2.1 时遇到一个奇怪的错误,这与 Resteasy 和 maven 设置有关。我已经失去了无数个小时的谷歌搜索无济于事。
- 无法实例化 MessageBodyReader
-AmbiguousResolutionException: WELD-001318: 无法解决之间的不明确依赖关系

项目组织:

-root  
-project  
--project-ear
--project-main
--project-rest
--project-jms
Run Code Online (Sandbox Code Playgroud)

根 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>si.fri.liis.jmsprojekt</groupId>
    <artifactId>root</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.wildfly.bom</groupId>
                <artifactId>jboss-javaee-7.0-with-all</artifactId>
                <version>8.2.1.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-ejb-client-bom</artifactId>
                <version>8.2.0.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.resteasy</groupId>
                <artifactId>resteasy-jaxrs</artifactId>
                <version>3.0.10.Final</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <configuration> …
Run Code Online (Sandbox Code Playgroud)

jax-rs resteasy maven jakarta-ee

0
推荐指数
1
解决办法
1604
查看次数