万一有人想知道,我正在回收一个我自己回答的不同问题,因为我意识到我的问题的根本原因与我想象的不同:
我的问题实际上看起来很简单,但我找不到方法。
如果数组的任何元素在两个值之间,如何查询 postgres?
文档说明a BETWEEN b and c相当于a > b and a < c
然而,这不适用于数组,因为
ANY({1, 101}) BETWEEN 10 and 20必须是假的
尽管
ANY({1,101}) > 10 AND ANY({1,101}) < 20必须是真的。
{1,101} 表示包含两个元素 1 和 101 的数组。
我该如何解决这个问题,而不诉诸解决方法?
问候,
比尔门
编辑:为清楚起见:
我的情况是,我正在通过 xpath() 查询一个 xml 文档,但是对于这个问题,一个包含 int[] 类型数组的列可以完成这项工作。
id::int | numbers::int[] | name::text
1 | {1,3,200} | Alice
2 | {21,100} | Bob
Run Code Online (Sandbox Code Playgroud)
我想要所有的名字,其中有一个number介于20和之间30- 所以我想要Bob
查询 …
我对此进行了研究,并在 SO 上找到了这个答案。
不过,我确实有一个补充问题:
我有一组过滤器,我希望将其应用于所有请求,特殊情况除外(例如:除 /mgmt/** 和 /error/** 之外的所有路径)。
这不能使用链接答案中提供的相同方法来完成,因为我会将过滤器添加到默认的 http-security 对象,然后该对象也适用于特殊情况。
是否有“负匹配器”之类的东西,允许我做类似的事情:
http.negativeAntMatchers("/mgmt/**).addFilter(...)
Run Code Online (Sandbox Code Playgroud)
为除 /mgmt/** 之外的所有内容添加过滤器?
我的代码:
这是“/mgmt”的配置,将 ManagementBasicAuthFilter 放置在链中 - 这有效,因为除了“/mgmt/**”之外没有端点要求基本身份验证。
@Order(1)
@Configuration
@RequiredArgsConstructor
public static class ManagementSecurityConfig extends WebSecurityConfigurerAdapter {
private final AuthenticationManager authenticationManager;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("mgmt/**")
.csrf().disable()
.headers().frameOptions().sameOrigin()
.cacheControl().disable()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilterBefore(new ManagementBasicAuthenticationFilter(authenticationManager,
getAuthenticationEntryPoint(), "/mgmt"), BasicAuthenticationFilter.class)
.authorizeRequests()
.anyRequest()
.permitAll();
}
private BasicAuthenticationEntryPoint getAuthenticationEntryPoint() {
BasicAuthenticationEntryPoint entryPoint = new BasicAuthenticationEntryPoint();
entryPoint.setRealmName("myApp");
return entryPoint;
}
}
Run Code Online (Sandbox Code Playgroud)
这是所有入口点的配置,除了 mgmt - …
我对这个问题感到非常绝望:我想导出/运行我的Android应用程序,.jar并在构建路径中添加了一个.我确定我正确添加了它,还有其他5个.jars,它们都运行正常.
有了这个特殊的,我得到了上面提到的错误.我已经尝试过在这个问题中找到的所有内容: "在外部JAR上转换为Dalvik格式失败,错误1"
和其他几个链接谷歌吐出来.主要的问题是,我实际上不明白我追加的消息是什么想告诉我,因为如果我将所有的罐子添加到"普通"的javaproject中,它运行得非常好......
在Android 4.0.3上开发,
proguard 4.8,
adt 16.0.1.v201112150204-238534,
eclipse 3.7.1.r37
请帮我
[2012-07-18 10:45:48 - myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 1)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.推荐的解决方案是从源重新编译类,使用了最新的编译器和不指定任何"-target"类型的选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.
......
[2012-07-18 10:45:48 - myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 2)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.推荐的解决方案是从源重新编译类,使用了最新的编译器和不指定任何"-target"类型的选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.
在不构建核心库时,不明智或错误地使用核心类(java.*或javax.*).
这通常是由于在使用IDE(例如Eclipse)时无意中在应用程序的项目中包含了核心库文件.如果你确定你不是故意定义一个核心类,那么这就是最可能的解释.
但是,您实际上可能正在尝试在核心命名空间中定义一个类,例如,您可能已从非Android虚拟机项目中获取该类.这肯定是行不通的.它至少会危害您的应用与该平台的未来版本的兼容性.它的合法性通常也是有问题的.
如果您真的打算构建一个核心库 - 它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序 - 那么使用"--core-library"选项来抑制此错误消息.
如果你继续使用"--core-library"但实际上正在构建一个应用程序,那么预先警告你的应用程序仍然无法构建或运行,在某些时候.请为愤怒的客户做好准备,例如,一旦升级操作系统,您的应用程序就会停止运行.你应该为这个问题负责.
如果您合法地使用恰好位于核心软件包中的某些代码,那么最简单的安全替代方法是重新打包该代码.也就是说,将有问题的类移动到您自己的包命名空间中.这意味着它们永远不会与核心系统类冲突.JarJar是一个可以帮助您完成这项工作的工具.如果你发现你不能做到这一点,那就表明你所走的道路最终会导致痛苦,痛苦,悲伤和悲伤.
[2012-07-18 10:45:48 - myapp] Dx 1错误; 中止
[2012-07-18 10:45:48 - myapp]转换为Dalvik格式失败,错误1
这就是我的项目在探险家中的表现:

编辑:这是项目设置:
IDE:Eclipse:
Project1:"服务器"
src:
com/mainpackage/main.java
libs:
commons-x-0.jar
PluginInterface.jar
Run Code Online (Sandbox Code Playgroud)
libs-folder中的所有jar都在buildpath上.
Project2:"PluginInterface"
src:
com/interfaces/plugininterface
Run Code Online (Sandbox Code Playgroud)
Project3:"插件"
src:
com/package/class1.java - (this implements plugininterface)
libs:
library1.jar
PluginInterface.jar
Run Code Online (Sandbox Code Playgroud)
libs-folder中的所有jar都在buildpath上
所以当我导出插件(Project3)时,我得到一个这样的jar(从导出中排除PluginInterface.jar)
com/
com/package/
com/package/class1.class
com/package/class1.java
libs/
libs/library1.jar
Run Code Online (Sandbox Code Playgroud)
library1.jar看起来如下 - 它不是由我写的:
com/
com/stuff/
com/stuff/libclass.java
com/stuff/libclass.class
Run Code Online (Sandbox Code Playgroud)
现在我想在接口上的"服务器"中使用class1:
ClassLoader loader=URLClassLoader.newInstance(
new URL[]{new URL("file:path/to/plugin.jar")},
ClassLoader.getSystemClassLoader()
);
Class<?> pluginclass = Class.forName("com.package.class1", true, loader);
plugininterface ref = (plugininterface)pluginclass.newInstance();
Run Code Online (Sandbox Code Playgroud)
我现在可以使用项目知道的接口调用class1中的方法,因为它们都在buildpath中包含"PluginInterface.jar".
问题:
"服务器"不识别"libclass",因为它既不在其路径中,也不是从嵌套了library1的plugin.jar中加载类.
如果在服务器上无法导入库,我该如何访问此类?
谢谢你的帮助!
编辑:只是为了有人再次遇到这个问题,我将添加ANT文件的构建目标,使其工作:
<target name="build">
<javac destdir="bin" includeantruntime="false" source="1.7" target="1.7">
<src path="src"/>
<classpath refid="Plugin.classpath"/>
</javac>
<unzip src="${libs}/library1.jar" dest="bin/">
<patternset>
<include name="**/*.class"/>
</patternset> …Run Code Online (Sandbox Code Playgroud) 我的Probelm是,当运行mvn tomcat时:[重新]部署我得到HTTP返回码403 http://localhost:8080/manager,不管我为tomcat插件指定了什么url
我在其他问题中发现了这一点
<url>http://localhost:8080/manager/text</url>
Run Code Online (Sandbox Code Playgroud)
应该是我的目标,
但maven completley忽略了这个xml-tag,它总是用于/ manager/deploy,即使我把完全垃圾一样,
<url>http://localhost:8080/nana/</url>
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
<version>从.pom中的tomcat7-plugin中删除了标签,试图确保它不是我使用的版本与我的tomcat版本一起搞笑我正在使用maven 3.0.5,tomcat7,Maven为插件提供的任何版本
我的tomcat用户:
<user username="mavendeployer"
password="maven"
roles = "manager-script,admin-script" />
Run Code Online (Sandbox Code Playgroud)
我的maven服务器设置:
<server>
<id>localtomcat</id>
<username>mavendeployer</username>
<password>maven</password>
</server>
Run Code Online (Sandbox Code Playgroud)
我的pom :(删除了很多依赖项以保持简短,构建工作正常,只需mvn tomcat:[re] deploy失败:
<?xml version="1.0" encoding="utf-8"?>
<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>net.test</groupId>
<artifactId>testApp</artifactId>
<packaging>war</packaging>
<!-- <server SW version>-<REST interface version> -->
<version>1.6.4-1.0.3</version>
<name>Test</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
</dependency>
...javax.servlet
...javax.servlet.jsp
...
</dependencies>
<build>
<finalName>test</finalName>
<plugins>
<!-- …Run Code Online (Sandbox Code Playgroud) 我正在查看一个 Spring Boot 服务,它从 apache kafka 读取消息,通过 http 从另一个服务请求消息指示的记录,处理它们,将一些数据保存到数据库中,并将结果发布到另一个主题。
这是通过
@StreamListener(Some.INPUT)
@SendTo(Some.OUTPUT)
Run Code Online (Sandbox Code Playgroud)
这是在几个服务中完成的,通常工作得很好。唯一的属性集是
spring.cloud.stream.binder.consumer.concurrency=20
Run Code Online (Sandbox Code Playgroud)
主题本身有 20 个分区,应该适合。
在监控 kafka 的读取时,我们发现吞吐量非常低和奇怪的行为:
该应用程序一次最多读取 500 条消息,然后是 1-2 分钟的无内容。在此期间,消费者反复记录“缺少心跳,因为分区被重新平衡”,“重新分配分区”,有时甚至抛出异常说“提交失败,因为轮询间隔已过”
我们得出的结论是,这意味着消费者获取 500 条消息,需要很长时间来处理所有消息,错过了它的时间窗口,因此无法将 500 条消息中的任何一条提交给代理——代理重新分配分区并重新发送相同的消息再次。
在查看线程和文档后,我发现了“max.poll.records”属性,但在设置此属性的位置的建议中存在冲突。
有人说把它放在下面
spring.cloud.stream.bindings.consumer.<input>.configuration
Run Code Online (Sandbox Code Playgroud)
有人说
spring.cloud.stream.kafka.binders.consumer-properties
Run Code Online (Sandbox Code Playgroud)
我尝试将两者都设置为 1,但服务行为没有改变。
我如何正确处理这种情况,即消费者无法跟上默认设置所需的轮询间隔?
常见的yaml:
spring.cloud.stream.default.group=${spring.application.name}
Run Code Online (Sandbox Code Playgroud)
服务-yaml
spring:
clould:
stream:
default:
consumer.headerMode: embeddedHeaders
producer.headerMode: embeddedHeaders
bindings:
someOutput:
destination: outTopic
someInput:
destination: inTopic
consumer:
concurrency: 30
kafka:
bindings:
consumer:
someInput:
configuarion:
max.poll.records: 20 # ConsumerConfig ignores this
consumer:
enableDlq: true
configuarion:
max.poll.records: 30 # ConsumerConfig ignores this …Run Code Online (Sandbox Code Playgroud) 我试图通过Hand实现HMACSHA1,以检查我们的serviceprovider或我们为Support-Ticket计算错误的HMAC(SOAP调用,因此是xml内容).
问题是,我坚持使用NIST规范进行HMAC,并在使用openssl HMAC功能时获得不同的结果.
以下代码打印:
B92674DCBA96F2DA93F7043071B931F5F2583FBD
4303E965D88D288C9AC594CE6C5E6AFF27D40B2D
Run Code Online (Sandbox Code Playgroud)
虽然openssl的结果与我们的应用程序相同 - 所以我假设,基于openssl是如此常用,我的结果是错误的 - 但我的错误在哪里?
这是我参考的规范:http: //nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <string.h>
#define byte unsigned char
#define IPAD 0x36
#define OPAD 0x5c
#define DIGESTSIZE 20
int main () {
byte *derivedKey = (byte[DIGESTSIZE]) {0x42,0xA9,0x78,0x90,0xFC,0xE5,0x16,0x8E,0x58,0x12,0x2F,0xF1,0xBA,0x32,0x5F,0x09,0x88,0x94,0x02,0x91};
byte *content = "<ds:SignedInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"soap\"></ec:InclusiveNamespaces></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#hmac-sha1\"></ds:SignatureMethod><ds:Reference URI=\"#TS-B183A13FEB0189143115136776276601\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"wsse soap\"></ec:InclusiveNamespaces></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"></ds:DigestMethod><ds:DigestValue>rXJdGuDqoRrUJxuGiA1eyAozifk=</ds:DigestValue></ds:Reference></ds:SignedInfo>";
byte *oPadKey = malloc(DIGESTSIZE);
byte *iPadKey = malloc(DIGESTSIZE);
int i;
for(i=0;i<DIGESTSIZE;i++){
iPadKey[i]=derivedKey[i]^IPAD;
oPadKey[i]=derivedKey[i]^OPAD;
}
byte *rOpInput= …Run Code Online (Sandbox Code Playgroud) java ×3
android ×1
apache ×1
apache-kafka ×1
c ×1
dalvik ×1
hmac ×1
maven ×1
openssl ×1
postgresql ×1
reflection ×1
spring ×1
spring-boot ×1
spring-cloud ×1
tomcat ×1