w3.org文档中提到的XML文档引用的规范性和非规范性意味着什么?它真的没有解释,只是假设我们知道它意味着什么.谢谢.
来自Pattern
javadocs:
Greedy quantifiers: X? X, once or not at all X* X, zero or more times X+ X, one or more times X{n} X, exactly n times X{n,} X, at least n times X{n,m} X, at least n but not more than m times Reluctant quantifiers: X?? X, once or not at all X*? X, zero or more times X+? X, one or more times X{n}? X, exactly n times X{n,}? X, at least n times X{n,m}? X, …
场景:
1)浏览器(用户)从服务提供商(SP)请求资源.
2)SP重定向(使用SAML请求)到身份提供商(IdP).
3)自首次登录以来,用户向(IdP)提供他/她的有效凭证.
4)然后IdP将浏览器(包含SAML令牌的SAML响应)重定向到SP页面.
我有两个问题:
A.在步骤4中,浏览器是否存储或缓存SAML响应和/或SAML令牌?
B.如果是,那么什么样的东西(属性?超时?协议?)阻止我获取存储的SAML令牌.然后将其复制到另一台计算机(使用新会话)并使用该令牌登录到同一个SP?
我尝试连接的蓝牙设备始终具有相同的密码.这样可以通过以编程方式设置引脚来配对器件.
在尝试搜索如何完成后,我最终得到了以下代码:
BluetoothDevice device = getDevice();
//To avoid the popup notification:
device.getClass().getMethod("setPairingConfirmation", boolean.class).invoke(device, true);
device.getClass().getMethod("cancelPairingUserInput", boolean.class).invoke(device, true);
byte[] pin = ByteBuffer.allocate(4).putInt(1234).array();
//int pinn = 1234;
//Entering pin programmatically:
Method ms = device.getClass().getMethod("setPin", byte[].class);
//Method ms = device.getClass().getMethod("setPasskey", int.class);
ms.invoke(device, pin);
//Bonding the device:
Method mm = device.getClass().getMethod("createBond", (Class[]) null);
mm.invoke(device, (Object[]) null);
Run Code Online (Sandbox Code Playgroud)
cancelPairingUserInput
给了我一个NoSuchMethodException
,这很奇怪,因为该方法确实存在于BluetoothDevice
课堂上.
是看起来Setpin
还是SetPasskey
不会做任何事情.该设备不会配对.它只在手动输入引脚后成对.
所以唯一有效的代码行是:
//Bonding the device:
Method mm = device.getClass().getMethod("createBond", (Class[]) null);
mm.invoke(device, (Object[]) null);
Run Code Online (Sandbox Code Playgroud)
Logcat输出:
09-27 12:34:46.408: ERROR/App(11671): …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用arraylist的foreach循环,但是当我使用它时,它会给我错误,但是当我使用普通for循环时,它完美地工作,可能是什么问题?
代码在这里:
for (Pair p2 : R) {
if ((p2.getFirstElm() == p.getSecondElm()) && (p2.getFirstElm() != p2.getSecondElm()))
R.add(new Pair (p.getFirstElm(), p2.getSecondElm()));
else if ((p2.getSecondElm() == p.getFirstElm()) && (p2.getFirstElm() != p2.getSecondElm()))
R.add(new Pair (p2.getFirstElm(), p.getSecondElm()));
// else
// There are no transitive pairs in R.
}
Run Code Online (Sandbox Code Playgroud)
这是不起作用的循环,这是一个有效的循环:
for (int i = 0; i < R.size(); i++) {
if ((R.get(i).getFirstElm() == p.getSecondElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm()))
R.add(new Pair (p.getFirstElm(), R.get(i).getSecondElm()));
else if ((R.get(i).getSecondElm() == p.getFirstElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm()))
R.add(new Pair (R.get(i).getFirstElm(), p.getSecondElm())); …
Run Code Online (Sandbox Code Playgroud) 在Java 8之前,SunPKCS11提供程序的加载方式如下:
Provider provider = new sun.security.pkcs11.SunPKCS11 (new ByteArrayInputStream (configFile.getBytes ()));
Security.addProvider (provider);
Run Code Online (Sandbox Code Playgroud)
configFile
是带有配置参数的String.因此,如果应用程序需要使用多个连接的智能卡,它可以创建多个提供程序.要访问每个提供程序,使用的名称是"SunPKCS11-",后跟我们在配置中指示的名称.
在Java 8中,sun.security.pkcs11.SunPKCS11
该类已在JDK中删除.所以,我不得不通过反思来编程前一个调用.
Java 9中PKCS#11提供程序的操作似乎非常不同:
该SunPKCS11
构造已更改为空单.配置由"configure"方法加载,因此必须将它放在磁盘上的文件中,我不能再通过流将其加载到字符串.
如果我们尝试使用反射,则会出现以下警告:
Run Code Online (Sandbox Code Playgroud)WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by PruebaTarjeta (file:/C:/temp/pkcs11java9/classes/) to constructor sun.security.pkcs11.SunPKCS11() WARNING: Please consider reporting this to the maintainers of PruebaTarjeta WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
我正在尝试使用AES加密和解密字符串,但收到错误我不知道如何解决.这是代码:
public class EncryptionTest{
public static void main(String[] args) {
String encrypt = new String(encrypt("1234567890123456"));
System.out.println("decrypted value:" + (decrypt("ThisIsASecretKey",encrypt)));
}
public static String encrypt(String value) {
try {
byte[] raw = new byte[]{'T', 'h', 'i', 's', 'I', 's', 'A', 'S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y'};
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(value.getBytes());
System.out.println("encrypted string:" + (new String(encrypted)));
return new String(skeySpec.getEncoded());
} catch (Exception ex) {
ex.printStackTrace();
}
return …
Run Code Online (Sandbox Code Playgroud) 我正在使用Java Spring创建REST Web服务.我已成功加载STS,示例详述如下:
"本指南将引导您完成使用Spring创建"hello world"RESTful Web服务的过程." http://spring.io/guides/gs/rest-service/
然而,该教程只是到目前为止..我想创建一个WAR文件,而不是一个包含servlet的自运行jar,并部署该WAR文件.然后我找到了本教程,并试图修改第一个教程build.gradle文件.
"将Spring Boot JAR应用程序转换为WAR" http://spring.io/guides/gs/convert-jar-to-war/
它似乎在.war文件中构建得很好..服务在我的TOMCAT实例的管理器中运行..但是一旦我尝试使用该服务,我就得到了404.
网址404'd
http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName
Run Code Online (Sandbox Code Playgroud)
我需要修改映射吗?
DataBaseController.java
@RequestMapping("/dbgreeting")
public @ResponseBody DataBaseGreeter dbgreeting(
@RequestParam(value="name", required=false, defaultValue="World") String name) {
return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name));
}
Run Code Online (Sandbox Code Playgroud)
现在我根据事物的混合创建了.war文件......并且担心我可能错过了一些东西.
我发现OSX上的XAMPP不包含webapp /文件夹,这迫使我改为加载Bitnami的Tomcat堆栈.人们通常会在此基础上在XAMPP和其他堆栈之间切换吗?或者我错过了在XAMPP中创建webapp文件夹的内容?
我想开发一个可以阻止连接到WiFi网络的应用程序,除非我批准它.我希望能够查询接入点的MAC地址,并将其与SSID对应的已知地址列表进行比较.该应用程序的目标是保护用户免于意外连接到恶意访问点,例如可以使用菠萝设备生成的类型.
我不清楚我的研究如何实现这一目标.诸如如何通知wifi网络状态变化等问题?解释如何检测连接已经发生,但对于我的用例已经太晚了.
无论是ConnectivityManager
也WifiManager
似乎提供方法补充说,可能会打断正在进行的连接监听器.
我有一些解决方案的想法:
安装自己作为代理,并决定是否允许数据通过.但是,这似乎不是基于Do Android代理设置适用于设备上的所有应用程序的选项吗?(提示:答案是"不").
用我自己创建的东西替换现有的WiFi管理器.但是,我真的很难在Android开发人员指南中找到有关更换系统组件的任何信息.因此,我不确定这在非根电话上是否可行.
将网络密码存储在我的应用程序中,并将WiFi管理器中的密码设置为无意义的值.然后捕获一个广播消息,警告连接失败(可能是类似的东西.我发现菠萝设备可能会接受任何密码,从而使这种方法无效.WifiManager.WPS_AUTH_FAILURE
)并有选择地决定重新连接回该网络.可能是一个可能的(如果丑陋的)解决方案,但我可以在网络仍然连接时将密码设置回无意义的值,以确保我们不会安静地连接到另一个同名的SSID吗?我不确定
找到一些方法来阻止Android自动连接到已知网络(即之前使用过的网络或者密码存储在其中).然后我可以管理我的应用程序中的所有连接/断开连接.但是,我无法在手机上看到如何手动执行此操作,因此我怀疑这是可行的.
任何人都可以建议一种可以在非根电话上运行的方法吗?
我一直都知道Java中有两种类型的相等,
.equals()
方法测试两个对象是否在非null对象引用上实现等价关系.==
运算符来测试两个基本类型或内存位置是否相等.以下几页更详细地描述了这些语言基础知识.
这两个链接没有明确指定的是,如果比较两个null
对象引用的值相等,应该会发生什么.隐含的假设是NullPointerException
应该抛出a,但这不是ObjectUtils.equals()方法所做的,这可能被认为是最佳实践效用方法.
令我担心的是,Apache Commons似乎已经在后门有效地引入了第三种平等的Java,并且已经令人困惑的事态可能会变得更加复杂.我称之为平等的第三个衡量标准,因为它试图测试值的相等性,当它失败时,它又回到测试参考相等性.Apache Commons相等测试与值相等和引用相等有许多相似之处,但也有明显的不同.
我是否有权利关注并希望避免使用ObjectUtils.equals()
尽可能的地方?
有没有争论要求ObjectUtils.equals()
提供其他两种平等衡量标准的有用联合?
似乎没有就这个问题达成共识意见,但我决定将Bozho标记为正确,因为他最好将我的注意力吸引到我现在认为是无效安全等于检查的最大问题.我们都应该编写快速失败的代码,解决为什么要比较两个空对象的价值平等的根本原因而不是试图在地毯下扫描问题.