以下是我的问题的一些简要背景; 也许真正的答案就是改变我的方法.
我有一个可以自行运行的应用程序,但可以使用应用程序外部的意图调用某些活动.最近,我一直在使用我构建的一个小测试应用程序来尝试这个,每当我更改主应用程序中的代码时,我必须运行它,关闭它,然后运行测试应用程序.
真的,没什么大不了的.不过,我很想知道是否有办法安装新代码,而无需在手机上启动应用程序.
我有一个需要调用JAXP的applet,特别是SAXParserFactory.现在,正如您在Javadoc中看到的,这内部使用了此处记录的服务提供程序机制:
具体来说,如果它在我的任何应用程序JAR中找不到文件,META-INF/services/javax.xml.parsers.SAXParserFactory它将尝试从我的应用程序代码库中获取它.如果我的applet部署如下:
<applet code="com.example.applets.MyApplet"
codebase="http://www.example.com/myapp/" archive="myapp.jar, dom4j.jar">
Run Code Online (Sandbox Code Playgroud)
然后它会尝试向http://www.example.com/myapp/META-INF/services/javax.xml.parsers.SAXParserFactory发出HTTP请求
我宁愿它不这样做,特别是因为我的applet被签名,这个额外的HTTP调用会触发有关未签名代码的警告.
现在,显而易见的解决方案是将META-INF/services文件放在我的应用程序JAR中,就像它说的那样,但是我该怎么做却仍然使用用户的JRE默认JAXP实现?或者,有没有办法说服applet运行时只查看我的JAR文件而不是codebase那个文件?
注意:我知道我也可以部署自己的JAXP-RI副本,但这对于applet来说非常重要.
我目前正面临使用Spring WS的错误代码和消息的问题.
我们使用带有JAXB2绑定的Spring WS 2.0以及@Endpoint和@PayloadRoot注释以方便使用.
我们的端点如下所示:
@Endpoint
public class MyEndpoint() {
private static final String MY_NAMESPACE=...;
@PayloadRoot(namespace=MY_NAMESPACE, localPart="myPart")
public MyPartResponse handleMyPart(MyPart myPart) {
....
}
}
Run Code Online (Sandbox Code Playgroud)
我们仅将soap用作围绕由XSD定义的POX消息的薄包装器.这也意味着我们使用返回码和消息而不是故障.
每个响应都继承自
<xs:complexType name="ResultBase">
<xs:sequence>
<xs:element name="errorCode" type="tns:ErrorCode" />
<xs:element name="errorMessage" type="xs:string" />
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
并在成功的情况下添加一些细节,如下所示:
<xs:element name="MySpecificResponse">
<xs:complexType>
<xs:complexContent>
<xs:extension base="tns:ResultBase">
<xs:sequence>
<xs:element name="mySpecificElement" type="tns:MySpecificType" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
可以干净地映射handleMyPart方法中抛出的所有异常.
但是,有两种类型的错误仍然未被捕获并生成错误而不是明确的错误消息:
在一天结束时,这些是与使用Spring WS的每个POX Web服务相关的问题.如何拦截这些异常并将其映射到响应对象?
但请记住:所有响应对象都略有不同,因为它们都是从公共响应对象继承的,但是为它添加了一些唯一的可选内容.
我的mysql db中有两列,end_date(例如9999-12-31)和start_date(例如2010-11-17),类型为"DATE".
我想在表上做一个更新语句,如果end_date = 9999-12-31,它会将end_date更改为start_date + 365天.但是如果end_date是9999-12-31(这实际上意味着没有设置结束日期),我只希望它更新
假设我有一个返回用户列表的控制器.如果缓存键存在,则从memcache返回用户,否则命中mysql db.此逻辑将在Web服务层或其他内容中重复使用.
行动:
def list
if in cache
@userlist = ...
else
@userlist = User.all()
end
end
Run Code Online (Sandbox Code Playgroud)
在Java世界中,您将创建一个UserService层,它将包装其他逻辑(如首先检查缓存层等).
在rails中,人们倾向于将所有这些逻辑放在控制器中.
这里的Rails'最佳实践'是什么?
function getElementsByClassName(className)
{
// get all elements in the document
if (document.all)
{
var allElements = document.all;
}
else
{
var allElements = document.getElementsByTagName("*");
}
var foundElements = [];
for (var i = 0, ii = allElements.length; i < ii; i++)
{
if (allElements[i].className == className)
{
foundElements[foundElements.length] = allElements[i];
}
}
return foundElements;
}
var listItems = document.getElementsByClassName("quirky");
for (var i = 0, ii = listItems.length; i < ii; i++)
{
alert(listItems[i].nodeName);
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序来解析WAV文件头并将信息打印到屏幕上.在编写程序之前,我正在做一些研究
hexdump -n 48 sound_file_8000hz.wav
00000000 52 49 46 46 bc af 01 00 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt |
00000010 10 00 00 00 01 00 01 00 >40 1f 00 00< 40 1f 00 00 |........@...@...|
00000020 01 00 08 00 64 61 74 61 98 af 01 00 81 80 81 80 |....data........|
Run Code Online (Sandbox Code Playgroud)
hexdump -n 48 sound_file_44100hz.wav
00000000 52 49 46 46 c4 ea 1a 00 57 41 56 45 66 6d 74 …Run Code Online (Sandbox Code Playgroud) 我希望能够看到启动给定进程的命令行(通过PID)及其环境变量.
最好是从命令行,但脚本是可以接受的失败.
这将在Centos 5.3上,但它的工作范围越广越好.
需要知道如何遍历stl地图.我不想用它的钥匙.我不关心排序,只是一种访问它包含的所有元素的方法.有没有办法做到这一点?