用于状态的Java 1.4 docjavax.xml.parsers.DocumentBuilderFactory毫不含糊:
DocumentBuilderFactory类的实现不保证是线程安全的.用户应用程序要确保从多个线程中使用DocumentBuilderFactory.或者,应用程序可以为每个线程提供一个DocumentBuilderFactory实例.应用程序可以使用工厂的同一实例来获取DocumentBuilder的一个或多个实例,前提是工厂实例一次不在多个线程中使用.
在Java 5的和Java 6的文档,但是,说什么的那种.DocumentBuilderFactory现在是线程安全的,还是Sun刚刚决定警告是否过度,人们应该知道更好?
我有一个Python项目,包括一个Jupyter笔记本,一个bin目录中的几个脚本和一个目录中的模块src,依赖于Pipfile:
myproject
??? myproject.ipynb
??? Pipfile
??? Pipfile.lock
??? bin
? ??? bar.py
? ??? foo.py
??? src
??? baz.py
??? qux.py
Run Code Online (Sandbox Code Playgroud)
脚本foo.py和bar.py使用标准shebang
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
并可以运行pipenv shell:
mymachine:myproject myname$ pipenv shell
(myproject-U308romt) bash-3.2$ bin/foo.py
foo
Run Code Online (Sandbox Code Playgroud)
但是,我无法src从脚本中轻松访问模块.如果我加
import src.baz as baz
Run Code Online (Sandbox Code Playgroud)
到foo.py时,我得到:
ModuleNotFoundError: No module named 'src'
Run Code Online (Sandbox Code Playgroud)
我试过的一个解决方案是在下面添加一个.env文件myproject:
PYTHONPATH=${PYTHONPATH}:${PWD}
Run Code Online (Sandbox Code Playgroud)
此作品感谢pipenv的自动加载.env,但是检查的.env文件到项目的混帐分布将与传统使用的碰撞.env存储机密(如密码) -事实上,我的默认.gitignore …
我已经尝试过这里和这里描述的解决方案,即将QuickTime电影复制到~/Library/Application Support/iPhone Simulator/User/Media/DCIM/100APPLE/VID_0001.m4v,但这似乎没有做任何事情,而且我猜测自iOS 3.2以来发生了一些变化,使其无效.
请注意,我非常喜欢不涉及向我的应用程序添加代码的解决方案,除非这确实是唯一的方法.
ETA:我知道可以将视频文件作为资源包含在内; 我想要的是将视频文件添加到相机胶卷 - 可以通过(例如)保存Safari中的图像来完成照片 - 这样我就可以测试涉及挑选媒体文件的功能.
再次更新:如果有人可以明确地告诉我,通过参考,这也是不可能的,这也会有所帮助.
来自模块
模块#append_features(mod)→mod =>当这个模块包含在另一个模块中时,Ruby在这个模块中调用append_features,并在mod中传递接收模块.Ruby的默认实现是将此模块的常量,方法和模块变量添加到mod,如果此模块尚未添加到mod或其祖先之一.
模块#prepend_features(mod)→mod =>当这个模块被放在另一个模块中时,Ruby在这个模块中调用prepend_features,并在mod中传递接收模块.Ruby的默认实现是将此模块的常量,方法和模块变量覆盖到mod,如果此模块尚未添加到mod或其祖先之一.
任何人都可以帮助我理解以下问题:
更重要的是功能Module被定义为append与prepend除默认?
他们的功能如何不同?
何时使用append_features和何时prepend_features?
上面两条粗线之间有什么区别?
我习惯了ListenableFuture模式,有onSuccess()和onFailure()回调,例如
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
ListenableFuture<String> future = service.submit(...)
Futures.addCallback(future, new FutureCallback<String>() {
public void onSuccess(String result) {
handleResult(result);
}
public void onFailure(Throwable t) {
log.error("Unexpected error", t);
}
})
Run Code Online (Sandbox Code Playgroud)
看起来Java 8的CompletableFuture目的是处理或多或少相同的用例.天真的,我可以开始将上面的例子翻译为:
CompletableFuture<String> future = CompletableFuture<String>.supplyAsync(...)
.thenAccept(this::handleResult)
.exceptionally((t) -> log.error("Unexpected error", t));
Run Code Online (Sandbox Code Playgroud)
这肯定不如ListenableFuture版本那么冗长,看起来非常有前景.
但是,它没有编译,因为exceptionally()不需要a Consumer<Throwable>,它需要一个Function<Throwable, ? extends T>- 在这种情况下,a Function<Throwable, ? extends String>.
这意味着我不能只记录错误,我必须String在错误情况下提出一个返回值,并且在错误情况下没有有意义的String值返回.我可以返回null,只是为了获得编译代码:
.exceptionally((t) -> {
log.error("Unexpected …Run Code Online (Sandbox Code Playgroud) 每隔一段时间,我的iPhone应用程序就会进入网络请求总是超时的状态,即使其他应用程序正常工作(甚至可以访问相同的网站).这显然与网络可用性的变化无关,并且在3G和WiFi上都会发生.有关如何诊断问题的任何建议?
(FWIW,该应用程序使用MonoTouch和HttpWebRequest,但我怀疑出现问题的是低级别.)
注意:通过后台应用程序和更改网络配置,问题仍然存在; 唯一的解决方法似乎是杀死应用程序并重新启动它.
更新:我尝试过使用Reachability,但没有效果.Reachability.InternetConnectionStatus总是返回ReachableViaWiFiNetwork(或者ReachableViaCarrierDataNetwork,取决于;同样IsHostReachable()总是返回true.Runtime.StartWWAN()似乎没有任何区别.
我们的传统的应用程序被套牢,涉及的荒谬数量可怕的框架(好吧,我会指名道姓,它的挂毯4)EventListeners为最简单的操作(〜100,000).我猜这超出了javax.swing.event.EventListenerList有意处理的范围,在这个不幸的用例中,它引起了我们一些讨厌的性能问题.
我花了几个小时鞭打HashMap/ArrayList下面相当天真的替换品,它几乎在所有方面都快得多:
添加50,000个侦听器:
EventListenerList > 2秒EventListenerMap ~3.5毫秒向50,000名听众发起火灾事件:
EventListenerList 0.3-0.5毫秒EventListenerMap 0.4-0.5毫秒删除50,000个侦听器(一次一个):
EventListenerList > 2秒EventListenerMap ~280毫秒射击可能只是头发慢,但修改速度要快得多.不可否认,这个框架给我们带来的情况是病态的,但它似乎仍然EventListenerList可以在很久以前被取代.显然,公共API存在问题(例如,它暴露了其原始内部状态数组),但必须有更多内容.也许有多线程案例EventListenerList更安全或更高效?
public class EventListenerMap
{
private final ReadWriteLock lock = new ReentrantReadWriteLock();
private final Lock readLock = lock.readLock();
private final Lock writeLock = lock.writeLock();
private Map<Class, List> llMap = new HashMap<Class, List>();
public <L extends EventListener> void add ( Class<L> listenerClass, L listener )
{
try
{
writeLock.lock();
List<L> list = …Run Code Online (Sandbox Code Playgroud) 我是Python新手,主要来自Java编程.
我目前正在思考如何实例化Python中的类.
我理解__init__():就像Java中的构造函数.但是,有时python类没有一个__init__()方法,在这种情况下我假设有一个默认构造函数就像在Java中一样?
另一个使从Java转换到python有点困难的事情是,在Java中,您必须使用类型定义类的所有实例字段,有时还需要初始值.在python中,所有这些似乎都消失了,开发人员可以动态定义新的字段.
例如,我遇到过这样的程序:
class A(Command.UICommand):
FIELDS = [
Field( 'runTimeStepSummary', BOOL_TYPE)
]
def __init__(self, runTimeStepSummary=False):
self.runTimeStepSummary = runTimeStepSummary
"""Other methods"""
def execute(self, cont, result):
self.timeStepSummaries = {}
""" other code"""
Run Code Online (Sandbox Code Playgroud)
令人困惑的事情(并且稍微让我感到恼火)是这个A类没有名为timeStepSummaries的字段但是方法中间的开发人员如何定义新字段呢?或者我的理解不正确?
所以要清楚,我的问题是在Python中我们可以在运行时动态地为类定义新字段,就像在这个例子中一样,或者这个时间是否是一个类似私有变量的变量的一个实例?
编辑:我正在使用python 2.7
我有一个混合的Java/Scala项目,包括JUnit和ScalaTest测试.使用scalatest插件,Gradle运行ScalaTest测试src/test/scala,但忽略了JUnit测试src/test/java.没有插件,Gradle运行JUnit测试但忽略Scala.我错过了什么伎俩?
我的build.gradle:
plugins {
id 'java'
id 'maven'
id 'scala'
id "com.github.maiflai.scalatest" version "0.6-5-g9065d91"
}
sourceCompatibility = 1.8
group = 'org.chrononaut'
version = '1.0-SNAPSHOT'
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
ext {
scalaMajorVersion = '2.11'
scalaVersion = "${scalaMajorVersion}.5"
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile "org.scala-lang:scala-library:${scalaVersion}"
compile "org.scala-lang.modules:scala-xml_${scalaMajorVersion}:1.0.3"
compile 'com.google.guava:guava:18.0'
compile 'javax.xml.bind:jaxb-api:2.2.12'
compile 'jaxen:jaxen:1.1.6'
compile 'joda-time:joda-time:2.7'
compile 'org.joda:joda-convert:1.7'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'org.jdom:jdom2:2.0.5'
testCompile 'junit:junit:4.12'
testCompile 'org.easytesting:fest-assert:1.4'
testCompile 'org.mockito:mockito-core:1.10.19' …Run Code Online (Sandbox Code Playgroud) java ×3
iphone ×2
python ×2
enums ×1
go ×1
gradle ×1
ios-4.2 ×1
jaxp ×1
junit ×1
mixins ×1
networking ×1
pipenv ×1
prepend ×1
python-3.x ×1
pythonpath ×1
ruby ×1
ruby-2.0 ×1
scalatest ×1
swing ×1
xamarin.ios ×1