使用apache-log4j-2.0.2我的代码非常简单:
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
public class Log4jtest {
static Logger log =Logger.getLogger(Log4jtest.class);
public static void main(String[] args) {
BasicConfigurator.configure();
log.debug("This is debug message");
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到的例外是:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext``
at org.apache.log4j.Logger.getLogger(Logger.java:41)
at Log4jtest.<clinit>(Log4jtest.java:11)
Run Code Online (Sandbox Code Playgroud)
为什么异常来自一个简单的程序?
是否有可能始终将一个对象放在fabricjs画布上?
背景:我正在构建一个webtool,可以使用fabricjs轻松创建复杂的动画.我希望能够将画布大小设置为100%的宽度和高度.因此,我想将所有对象放在中心并为其添加X/Y偏移.当我稍后调整画布大小时,我可以使用x/y偏移从中心重新调整对象.
是否有这样的功能?或者我应该简单地向对象添加属性,如果正在调整画布大小 - 检查该属性的所有对象并从新画布中心重新调整对象的位置?
关心并感谢罗伯特
我不明白dart2js代码的这种行为.
我只在async函数中使用它,并且只在编译成JS之后.
e.keyCode is equal 13
KeyCode.ENTER is equal 13
Run Code Online (Sandbox Code Playgroud)
但
(e.keyCode == KeyCode.ENTER) is false
Run Code Online (Sandbox Code Playgroud)
这是调试我的问题的简单代码.
这是怎么回事?
import 'dart:html';
main() async
{
await for(KeyboardEvent e in window.onKeyDown)
{
print('e.keyCode : ${e.keyCode}');
print('e.keyCode.hashCode : ${e.keyCode.hashCode}');
print('KeyCode.ENTER : ${KeyCode.ENTER}');
print('KeyCode.ENTER.hashCode : ${KeyCode.ENTER.hashCode}');
print('e.keyCode.runtimeType : ${e.keyCode.runtimeType}');
print('KeyCode.ENTER.runtimeType : ${KeyCode.ENTER.runtimeType}');
print('e.keyCode == KeyCode.ENTER ${e.keyCode == KeyCode.ENTER}');
print('e.keyCode != KeyCode.ENTER ${e.keyCode != KeyCode.ENTER}');
int a = e.keyCode;
int b = KeyCode.ENTER;
print('a = $a');
print('b = $b');
print('a.hashCode = ${a.hashCode}');
print('b.hashCode = ${b.hashCode}');
print('a …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 webrtc 通过 getUserMedia() 获取音频并使用 socket.io 将其发送到服务器(socket.io 支持音频、视频、二进制数据),然后服务器将其广播到所有连接的客户端。问题是当流到达连接的客户端时,它被转换为 JSON 对象而不是媒体流对象。所以我无法发送音频我也尝试过 socket.io-stream 模块,但我没有成功。你能帮我正确捕获音频流并将其发送给所有连接的客户端吗?
这是发送数据的客户端代码
navigator.getUserMedia({audio: true, video: false}, function(stream) {
video.src = window.URL.createObjectURL(stream);
webcamstream = stream;
media = stream; /// here the datatype of media is mediaStream object
socket.emit("sendaudio", media);
}, function(e){
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
在接收客户端时,代码如下
socket.on('receiveaudio' , function(media)
{
console.log(media); //but here i am receiving it as a simple object
other.src= media;
});
Run Code Online (Sandbox Code Playgroud) 我有一个字节数组,我想分别在java和C#中计算MD5哈希.但是,它们产生了截然不同的结果.
下面是我的C#代码:
byte[] input = { 90, 12, 200, 139, 85, 104, 9, 202, 0, 0, 0, 0, 28, 251, 54, 201, 233, 153, 79, 1 };
MD5 md5 = MD5.Create();
byte[] result = md5.ComputeHash(input);
Run Code Online (Sandbox Code Playgroud)
它生成md5哈希:85,126,37,15,86,254,54,94,243,185,219,84,21,17,192,153,.
以下是java代码:
byte[] input = {90,12,-56,-117,85,104,9,-54,0,0,0,0,28,-5,54,-47,-23,-103,79,1};
byte[] md5 = MessageDigest.getInstance("MD5").digest(input);
Run Code Online (Sandbox Code Playgroud)
它导致:
-56,-74,-89,-76,9,35,-83,-89,-73,-39,17,83,24,18,-91,-62,
如您所见,结果完全不同.我知道c#使用无符号字节,java使用有符号字节.没有办法让我相信结果是相同的.
提前致谢.
java ×2
audio ×1
c# ×1
dart ×1
dart-async ×1
dart2js ×1
exception ×1
fabricjs ×1
getusermedia ×1
html5 ×1
html5-canvas ×1
javascript ×1
log4j ×1
md5 ×1
node.js ×1
socket.io ×1
webrtc ×1