在上个世纪,有一个流行的"黑客"隐藏JavaScript从非启用JavaScript的浏览器:
<script type = "text/javascript">
<!--
alert("Hello, World!");
// --> Your browser doesn't support JavaScript
</script>
Run Code Online (Sandbox Code Playgroud)
尽管<!--在许多教程中解释为仅仅是单行JavaScript注释,但在ECMAScript标准中没有提及它(参见7.4注释).虽然是非标准的,但所有现代浏览器都支持这种类型的注释,因此您可以用它注释掉任何JavaScript代码:
<script type = "text/javascript">
<!-- alert("Hello, World!");
<!-- This is a comment
<!-- This is another comment
<!-- This is yet another comment
</script>
Run Code Online (Sandbox Code Playgroud)
但是,有一个例外:eval()功能.以下代码在Communicator 4.x/Mozilla/Opera(Presto)/ Safari/Chrome中正常工作,但在MSIE中导致语法错误:
<form action = "#">
<script type = "text/javascript">
function testEval() {
var s = "<!--\n";
s += "alert(\"eval() invoked\");\n";
s += "// -->"
eval(s);
}
</script>
<input type …Run Code Online (Sandbox Code Playgroud) 在我的Motif应用程序中(源代码在这里,需要Motif 2.1 +(-lXm -lXt -lX11)和C99兼容的编译器;在Cygwin上应另外链接-liconv),我正在尝试XFontSet从与编码无关的XLFD转换为实例(如-monotype-arial-medium-r-normal--*-90-*-*-p-0-*-*)被正确地扩展到多个单独的XFontStruct条目(...-iso8859-1,...-iso8859-5,...-iso10646-1等)相匹配的当前区域.
我发现在某些语言环境(en_US.UTF-8,ru_RU.ISO-8859-5)中,XFontSet扩展可以完美地工作,而在其他语言环境中(ru_RU.UTF-8,ru_RU)它不会(字体集中不适当的单个字体),导致除了Latin-1平面中的字符以外的字符呈现不正确.
问题:
libXt,libX11)作为主要嫌疑人?XFontSet)而不是常规字体(XFontStruct)显示文本标签而不依赖于Motif - 理想情况下使用Athena小部件集?libX11API,我的理解是否正确我应该尝试使用XmbDrawString()和XwcDrawString()系列函数?如果您有其他评论.代码,不直接回答上述问题,但可以帮助追踪问题 - 欢迎这些.
我特别感兴趣的是,无论当前的语言环境如何,都能正确显示Cyrillic,前提是:
这给我留下了以下语言环境列表:
ru_RU;ru_RU.ISO-8859-5 (应与ru_RU相同,但不是,见下文);ru_RU.KOI8-R;ru_RU.CP1251;ru_RU.UTF-8;en_US.UTF-8以及任何xx_YY.UTF-8 …假设我有两个相邻的synchronized块,Thread.holdsLock()它们之间有一个调用:
final Object lock = new Object();
// ...
synchronized (lock) {
// do stuff
}
if (Thread.holdsLock(lock)) {
throw new IllegalStateException();
}
synchronized (lock) {
// do more stuff
}
Run Code Online (Sandbox Code Playgroud)
现在,如果在某些时候JVM决定粗化锁并合并上面的synchronized块呢?将Thread.holdsLock()调用仍然返回false,或者代码是否会因异常而失败?
在Java 1.4+中,有3种方法可以中断在套接字I/O上阻塞的流:
java.net.Socket(InetAddress, int)构造函数创建的,我可以从单独的线程中关闭它.结果,SocketException在被阻塞的线程中抛出了a .SocketChannel.open(...).socket()(非阻塞I/O) - 再次,可以从单独的线程关闭它,但现在AsynchronousCloseException在被阻塞的线程中抛出了一个不同的异常(an ).ClosedByInterruptException抛出来中断被阻塞的线程.使用旧式Java I/O时中断被阻塞的线程对该线程没有影响.问题:
Socket.close()使用NIO而不是常规IO时,行为有什么不同吗?我有一个由大约60个项目组成的Eclipse(4.4.1)工作集(数字可能是相关的,因为刷新工作区需要更多时间).偶尔,我遇到构建失败,因为Eclipse在构建之前无法清理输出文件夹:

事实证明,锁定文件的过程是Eclipse本身:

事实证明,被锁定的文件始终是XML内容.特别是,如果我将具有*.foo扩展名的资源定义为XML文件(通过首选项 - >常规 - >内容类型),那么一旦将它们复制到输出路径,它们很可能也会被锁定.
我认为问题是由自动验证的所有XML资源引起的:

- 所以我添加了第一个排除过滤器,甚至完全禁用了XML/XSD验证.问题经常停止发生,但仍然不时出现.刷新或关闭 - 重新打开项目没有帮助.
唯一的补救措施是每半小时重新启动Eclipse或运行Unlocker,这不是很方便.
任何想法如何解决或至少进一步诊断这个?
假设我们有一个我们想要测试的代码:
class C {
int doSmth() {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我们在一个类中放置了2个单元测试.第一个"测试一切",而第二个"无所事事":
@RunWith(JUnit4.class)
public final class CTest {
@Test
@SuppressWarnings("static-method")
public void testDoSmth() {
assertEquals(1, new C().doSmth());
}
@Test
@SuppressWarnings("static-method")
public void testDoSmth2() throws Exception {
Thread.sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个IRL示例:我已经看到通过用一些无用的代码替换测试内容来"修复"了几十个测试,因为测试的代码合同随着时间的推移而变化.
现在,PIT"入口"单元是一个包含测试方法的类(不是单独的测试方法本身),因此在上述情况下,PIT不仅会显示100%的线覆盖率,还会显示100%的突变覆盖率.
好的,我很高兴知道我有100%的突变覆盖率,但是如何识别无用的测试 - testDoSmth2()在上述情况下(假设我的突变覆盖率很高)?
java.nio.file.Path如果我已经有一个指向同一文件系统上的父目录的实例,如何创建表示子路径的实例?
目前,我正在使用
final Path parent = Paths.get("usr", "local");
final Path child = Paths.get(parent.toString(), "bin");
Run Code Online (Sandbox Code Playgroud)
- 但这看起来并不优雅.
我正在寻找的是NIO的某种java.io.File(File parent, String child)构造函数.
在我的应用程序的一个用例中,我有两个并发的MySQL连接:
T(实际上,不断更新此表中的一行),和ALTER TABLE,添加8个新列和从延伸的一个列varchar(80)向varchar(2000)).预计DDL最终会完成.在列UPDATEDML都不会受到DDL.
该表只包含一行(一行是UPDATE'd).
分析
当运行涵盖此用例的集成测试时,我观察到的是测试超时(表正在如此主动地写入,以便DDL永远不会完成),但仅适用于MySQL 5.7.通常情况下,测试预计会在30秒内在我们的硬件上完成(对于MySQL 5.6和8.0 确实会发生),但对于MySQL 5.7甚至200秒是不够的.我已经尝试了不同的ALGORITHM和LOCK值(见13.1.8 ALTER TABLE语法),没有运气.
当我描述我的应用程序(MySQL 5.7案例)时,我发现99%的CPU时间用于从套接字读取(即等待MySQL响应表已被更改),但数据库实例是一种黑色盒子给我 - 当然我已经performance_schema启用并可以对它运行查询,但我不知道我正在寻找哪些确切的信息.
合成
与此同时,我没有将问题简化为最小的自包含单元测试 - 我发现,与其他MySQL版本相比,MySQL 5.7 测试所用时间增加了3倍到10倍,但DDL没有永远挂起:
所有MySQL版本都是Windows版的库存版或从www.mysql.com下载的Debian Linux版本,只有极少的更改或官方Docker镜像.my.cnf
问题:
ALTER TABLE …System.IO.File在.NET和.NET Core 中有一系列Read...Async()方法,所有这些方法都返回Task<byte[]>或Task<string>(Task<T>是.NET与Java 的 等价物Future<T>)。
这看起来在很大程度上等同于AsynchronousFileChannelAPI(它们要么消耗CompletionHandler或返回 a Future),但有一个主要区别。
AsynchronousFileChannel 使用托管后台线程执行异步 I/O(该线程可能由默认线程池提供(sun.nio.ch.ThreadPool ) 或ExecutorService在通道创建期间显式指定的)。FileStream另一方面,.NET 中的实现将FileOptions.Asynchronous标志传递给底层操作系统(另请参阅同步和异步 I/O),不产生任何托管后台线程并使用所谓的重叠 I/O。sun.nio.ch.WindowsAsynchronousFileChannelImpl,这正是重叠 I/O之上的抽象层。在查看光栅图像时,或多或少的所有最新Mozilla产品(例如Firefox和SeaMonkey)都将其转换为完整的HTML文档,例如:
<html>
<head>
<meta name="viewport" content="width=device-width; height=device-height;">
<link rel="stylesheet" href="resource://gre/res/ImageDocument.css">
<link rel="stylesheet" href="resource://gre/res/TopLevelImageDocument.css">
<link rel="stylesheet" href="chrome://global/skin/media/TopLevelImageDocument.css">
<title>googlelogo_color_272x92dp.png (PNG Image, 544 × 184 pixels)</title>
</head>
<body>
<img src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" alt="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png">
</body>
</html>Run Code Online (Sandbox Code Playgroud)
默认CSS样式的内容可以在此处查看:
resource://gre/res/ImageDocument.cssresource://gre/res/TopLevelImageDocument.csschrome://global/skin/media/TopLevelImageDocument.css问题在于,在HiDPI显示器上,低分辨率图像经常会放大(例如,在4k显示器上,它们放大了x1.5倍)。
为了使图像始终以其原始大小(即1:1)显示,我需要对生成的HTML应用哪些其他样式?
我正在寻找自定义userContent.css或的正确方法userChrome.css。
更多内容userChrome.css: