当使用 Java 8 和 Java 9 运行时,我注意到以下程序的输出有所不同。
import java.lang.reflect.Method;
public class OrderingTest {
public static void main(String[] args) {
ServiceImpl service = new ServiceImpl();
for (Method method : service.getClass().getMethods()) {
for (Class<?> anInterface : method.getDeclaringClass().getInterfaces()) {
try {
Method intfMethod = anInterface.getMethod(method.getName(), method.getParameterTypes());
System.out.println("intfMethod = " + intfMethod);
} catch (NoSuchMethodException e) { }
}
}
}
}
class ServiceImpl implements ServiceX {
@Override
public Foo getType() { return null; }
}
interface ServiceX extends ServiceA<Foo>, ServiceB { }
abstract …
Run Code Online (Sandbox Code Playgroud) 嗨,我有一个使用 Elliptic Curve ES256 签名的 JWT,我正在尝试验证它:
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQifQ.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTU3NTY1NjY3NCwiZXhwIjoxOTI0OTkxOTk5LCJpYXQiOjE1NzU2NTY2NzQsImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.kcj0QQrERKIfny1TfHY-Z9iDFazr84xCssTDuXtV1n1dvY7CYXuP5ZBvpi9ArOQjsS8YCd0bKsWaQ-17VnF_1A
Run Code Online (Sandbox Code Playgroud)
使用此公钥:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT
CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
这只是
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQifQ.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbXBsZS5jb20iLCJzdWIiOiJtYWlsdG86bWlrZUBleGFtcGxlLmNvbSIsIm5iZiI6MTU3NTY1NjY3NCwiZXhwIjoxOTI0OTkxOTk5LCJpYXQiOjE1NzU2NTY2NzQsImp0aSI6ImlkMTIzNDU2IiwidHlwIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWdpc3RlciJ9.kcj0QQrERKIfny1TfHY-Z9iDFazr84xCssTDuXtV1n1dvY7CYXuP5ZBvpi9ArOQjsS8YCd0bKsWaQ-17VnF_1A
Run Code Online (Sandbox Code Playgroud)
它在https://jwt.io/ 上正确验证但是当我尝试使用本机 Java 验证它时,它引发了一个错误:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT
CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
{
"kty": "EC",
"use": "sig",
"crv": "P-256",
"kid": "1234",
"x": "oBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxE=",
"y": "vvQyxZkUjJQUPU/0bCy3Pj5qQdfu8jwEfqEeYGZ95CU=",
"alg": "ES256"
}
Run Code Online (Sandbox Code Playgroud)
最后一行似乎引发了异常。
java.security.SignatureException: invalid encoding for signature: java.io.IOException: Sequence tag error
at com.ibm.crypto.provider.AbstractSHAwithECDSA.engineVerify(Unknown Source)
at java.security.Signature$Delegate.engineVerify(Signature.java:1219)
at java.security.Signature.verify(Signature.java:652)
at curam.platforminfrastructure.outbound.oauth2.impl.ValidateJWT.validateEllipticCurve(ValidateJWT.java:235)
at curam.platforminfrastructure.outbound.oauth2.impl.ValidateJWT.validateJWT(ValidateJWT.java:88)
at curam.platforminfrastructure.outbound.oauth2.impl.ValidateJWT.testJWT(ValidateJWT.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at …
Run Code Online (Sandbox Code Playgroud) 我已将gs-relational-data-access-complete的副本克隆到我的工作区,下载了Apache Derby的独立副本并将其启动“./bin/startNetworkServer”。
我想让我的 Spring Boot 项目使用 Apache Derby 的外部实例,而不是 Spring Boot 使用的默认嵌入式 H2 数据库。为了节省时间,我想使用 Spring Boot @Autowired 注释。
当我启动新的 Derby 副本时,没有问题:
./bin/startNetworkServer
格林威治标准时间 2015 年 11 月 21 日星期六 11:11:06:使用基本服务器安全策略安装的安全管理器。
2015 年 11 月 21 日星期六 11:11:06 GMT:Apache Derby 网络服务器 - 10.12.1.1 - (1704137) 已启动并准备好接受端口 1527 上的连接
当我启动 Spring Boot 应用程序时出现问题:
2015-11-21 11:55:07.312错误11361 --- [main] oatomcat.jdbc.pool.ConnectionPool:无法创建池的初始连接。
java.sql.SQLException:Driver:org.apache.derby.jdbc.EmbeddedDriver@db9d03fc 为 URL 返回 null:jdbc:derby://10.12.1.1:1527/example1;create=true;user=test1;password=pass1
在 org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:326) ~[tomcat-jdbc-8.0.28.jar:na]
任何有关如何在仍然利用 Spring Boot @Autowired 注释的同时解决此问题的帮助将不胜感激。
我的工作区如下:
pom.xml
src/main/java/hello
----Application.java
----Customer.java …
Run Code Online (Sandbox Code Playgroud) 您好我正在使用OpenCV库编写基本的C++应用程序,以从背景中分割图像的主题.应用程序读入图像文件并使用分水岭算法根据在边缘找到的数据和在图像中心找到的数据生成掩码.
(为了开始我创建了一个整体值为-1的图像对象.然后我在一个空图像周围创建了一个边界,其值为1.然后我创建了一个大致位于图像中心的矩形,其值为2.边框和矩形没有接触.)
我尝试使用生成的掩码从原始图像和自动生成的掩码之间使用按位AND删除图像中的数据.
我用C++编写了这个,如果有人可以快速查看我的代码,我将非常感激.我能找到的唯一类似示例是使用Python的原生OpenCV绑定.
样品面膜:http://i.imgur.com/a0SUwy3.png
示例图片:http://i.imgur.com/FQywu6P.png
// Usage: ./app input.jpg
#include "opencv2/opencv.hpp"
#include <string>
using namespace cv;
using namespace std;
class WatershedSegmenter{
private:
cv::Mat markers;
public:
void setMarkers(cv::Mat& markerImage)
{
markerImage.convertTo(markers, CV_32S);
}
cv::Mat process(cv::Mat &image)
{
cv::watershed(image, markers);
markers.convertTo(markers,CV_8U);
return markers;
}
};
int main(int argc, char* argv[])
{
cv::Mat image = cv::imread(argv[1]);
cv::Mat blank(image.size(),CV_8U,cv::Scalar(0xFF));
cv::Mat dest(image.size(),CV_8U,cv::Scalar(0xFF));
imshow("originalimage", image);
// Create markers image
cv::Mat markers(image.size(),CV_8U,cv::Scalar(-1));
//Rect(topleftcornerX, topleftcornerY, width, height);
//top rectangle
markers(Rect(0,0,image.cols, 5)) …
Run Code Online (Sandbox Code Playgroud) java ×3
annotations ×1
c++ ×1
cryptography ×1
derby ×1
java-11 ×1
java-8 ×1
jdbc ×1
jwt-auth ×1
mask ×1
opencv ×1
overriding ×1
reflection ×1
spring-boot ×1
watershed ×1