我在每张图片下都有标题
<p>
<a href="large.jpg">
<img width="85" height="75" src="thumb.jpg/>
</a>Caption</p>
Run Code Online (Sandbox Code Playgroud)
我想在灯箱底部渲染相同的标题.
<span id="lightbox-image-details-caption">...Here.......</span>
Run Code Online (Sandbox Code Playgroud)
这该怎么做?

更新:微软尚未在Windows 8.1中修复它.
编辑:这被证明是WOW64中的一个错误 - 当线程在长模式ring-3(用户模式)中挂起时,GetThreadContext()可能会返回过时的内容.我建议微软使用ring-2来执行翻译.然后,SuspendThread只会挂起ring-3中的线程(就像现在一样 - 不需要进行任何更改),而ring-2中的崩溃/故障/漏洞不会影响内核 - 它只会影响ring-2和ring- 3.
这些更改将需要更改一些WinAPI函数,例如Wow64Get/SetThreadContext等.这会破坏依赖于未记录的功能的应用程序,但这是可以预期的.当然,转换速度会慢一些,因为需要几个CPU周期才能从ring-3转换到ring-2(取决于CPU系列),但我认为操作系统的作用首先是确保正确操作.翻译已经增加了在WOW64下运行的应用程序的开销,所以这也是预期的.
我确实希望微软能解决这个问题 - 否则依赖于WOW64下的GetThreadContext()的调试器/ Mono应用程序/ Boehm GC /应用程序将无法工作(对于初学者,我看到调试器显示过时的堆栈跟踪).
EDIT2:坏消息.从我与MSFT的Alexey谈话(这里)看起来似乎根本不会修复,因为担心修复会破坏依赖于无证功能的应用程序.
原始问题
GetThreadContext().来自MSDN:
Suspending a thread causes the thread to stop executing user-mode (application) code.
然而,我发现我的Windows 7中的32位应用程序在WOW64下运行,线程A调用线程B上的SuspendThread可以在运行64位代码时暂停它(我希望它不是用户模式代码).EIP显示停止的线程已停止
wow64cpu!X86SwitchTo64BitMode:
00000000`759c31b0 ea27369c753300 jmp 0033:759C3627
Run Code Online (Sandbox Code Playgroud)
ESP改变了(我知道这是因为,虽然ESP指向与该线程堆栈相同的页面,但它的地址比当前堆栈指针高得多).如果我在上面返回的指令处放置断点,然后让线程恢复,我发现ESP更改回X86SwitchTo64BitMode调用之前的值(这是正确的堆栈指针).我还发现,当单步进入同一个函数时,我无法在单步的任何一点获得更高的地址ESP值.实际上,当单步执行时,ESP值在X86SwitchTo64BitMode调用之前和之后都不会发生变化.
此外,我确实通过检查(DWORD)-1确保SuspendThread成功.
所有这些让我相信线程在内核模式代码中被挂起.
什么可能导致操作系统在运行非用户模式代码时挂起线程?我该如何预防呢?这基本上阻止我获取线程B的实际当前堆栈指针.请注意,当应用程序在WOW64之外运行时(在本机x86 OS上),不存在此类问题.
我想使用clojure使用REST API ,但我需要使用摘要式身份验证.我一直在谷歌搜索,但我找不到任何客户端库中的直接支持,Java方面的文档(以及一般的摘要auth实现)很差.
我基本上希望获得有关最简单路线的建议,以获取来自clojure的http请求的摘要身份验证.
正如标题所示,这个测试名称只是顶部的一点吗?
WhenChargeIsGreaterThanRestingChargeButLessThanChargeRestApproachStep_OnUpdate_ChargeIsSetToRestingCharge
Run Code Online (Sandbox Code Playgroud)
关于如何改进这个的任何建议?或者它是好的吗?
下面是整个测试夹具,因此您可以获得一些上下文:)
public class NeuronTests
{
[Fact]
public void OnUpdate_NeuronFiresWhenChargeIsEqualToThreshold()
{
Neuron neuron = new Neuron();
bool fired = false;
neuron.Fired += (s, e) => fired = true;
neuron.Charge = Neuron.ChargeThreshold;
neuron.Update();
Assert.True(fired, "Neuron didn't fire");
}
[Fact]
public void OnUpdate_NeuronDoesntFireWhenChargeIsLessThanThreshold()
{
Neuron neuron = new Neuron();
bool fired = false;
neuron.Fired += (s, e) => fired = true;
neuron.Charge = Neuron.ChargeThreshold - 1f;
neuron.Update();
Assert.False(fired, "Neuron fired!");
}
[Fact]
public void OnUpdate_NeuronFiresWhenChargeIsGreaterThanThreshold()
{
Neuron neuron = new …Run Code Online (Sandbox Code Playgroud) 我们有一个类似于这个的类层次结构:
public class TestDereference {
private static MainInterface mi = new MainInterfaceImpl();
public static void main(String[] args) {
System.out.println(mi.getSubInterface().getField());
}
}
interface MainInterface {
<T extends SubInterface> T getSubInterface();
}
interface SubInterface {
Field getField();
}
class Field {
@Override
public String toString() {
return "Hooray!";
}
}
class SubInterfaceImpl implements SubInterface {
Field f = new Field();
public Field getField() {
return f;
}
}
class MainInterfaceImpl implements MainInterface {
SubInterfaceImpl si = new SubInterfaceImpl();
public <T extends SubInterface> …Run Code Online (Sandbox Code Playgroud) 假设我有一个用svn版本化的项目的工作副本.出于特殊原因,我想将该项目的特定修订版x保留为我的工作副本.但有时我很笨拙,我不小心对最新版本y> x进行了svn更新.是否有一种简单的方法可以防止在工作副本上进行svn更新,比如禁用更新命令或其他什么?谢谢.
我正在尝试:
String sql = "SELECT email FROM users WHERE (type like 'B') AND (username like '?1')";
List results = em.createNativeQuery(sql).setParameter(1, username).getResultList();
Run Code Online (Sandbox Code Playgroud)
但我得到IllegalArgumentException,它告诉我参数超出范围.我究竟做错了什么?
我DirectoryCatalog在MEF中使用一个来满足我的应用程序中的导入.但是,目录中有时会出现模糊的程序集,导致ReflectionTypeLoadException我尝试编写目录时.
我知道我可以通过使用单独的目录或使用搜索过滤器DirectoryCatalog来解决它,但我想要一种更通用的方法来解决问题.有什么方法可以处理异常并允许组合继续吗?还是有另一个更通用的解决方案吗?
我正在尝试为Jasmine测试框架编写测试,该测试期望出现错误.目前我正在使用GitHub的Jasmine Node.js集成.
在我的Node模块中,我有以下代码:
throw new Error("Parsing is not possible");
Run Code Online (Sandbox Code Playgroud)
现在我尝试编写一个期望这个错误的测试:
describe('my suite...', function() {
[..]
it('should not parse foo', function() {
[..]
expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible"));
});
});
Run Code Online (Sandbox Code Playgroud)
我也试过了Error()一些其他的变种,只是无法弄清楚如何使它工作.