有没有办法禁用执行外部命令后出现的"按ENTER或键入命令继续"提示?
编辑:找到一个解决方法:<CR>在我的.lvimrc中添加一个额外的快捷方式.
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
Run Code Online (Sandbox Code Playgroud)
有更好的想法吗?
我正在尝试第一次实现长轮询,并且我正在使用XMLHttpRequest对象来执行它.到目前为止,我已经成功地在Firefox和Internet Explorer 11中获取了活动,但Chrome奇怪的是这次奇怪的是.
我可以加载一个页面,它运行得很好.它立即发出请求并开始处理和显示事件.如果我在第二个选项卡中打开页面,其中一个页面开始看到接收事件的延迟.在开发工具窗口中,我看到了这种时序的多个请求:

"停滞"将持续长达20秒.它不会发生在每个请求上,但通常会连续发生在多个请求中,并且会出现在一个选项卡中.
起初我认为这是我的服务器的问题,但后来我打开了两个IE选项卡和两个Firefox选项卡,它们都连接并接收相同的事件而不会停止.只有Chrome遇到这种麻烦.
我认为这可能是我正在制作或提供请求的方式的问题.作为参考,请求标头如下所示:
Connection: keep-alive
Last-Event-Id: 530
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Accept: */*
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)
响应如下:
HTTP/1.1 200 OK
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: text/event-stream
Expires: Tue, 16 Dec 2014 21:00:40 GMT
Server: Microsoft-HTTPAPI/2.0
Date: Tue, 16 Dec 2014 21:00:40 GMT
Connection: close
Run Code Online (Sandbox Code Playgroud)
尽管涉及到标题,但我没有使用浏览器的原生EventSource,而是使用polyfill来设置其他标题.polyfill正在使用XMLHttpRequest,但在我看来,无论请求是如何进行的,它都不应该停顿20秒.
什么可能导致Chrome像这样失速?
编辑: Chrome的chrome:// net-internals /#events页面显示涉及超时错误:
t=33627 [st= 5] HTTP_CACHE_ADD_TO_ENTRY [dt=20001]
--> net_error = -409 (ERR_CACHE_LOCK_TIMEOUT)
Run Code Online (Sandbox Code Playgroud)
错误消息是指六个月前添加到Chrome的补丁(https://codereview.chromium.org/345643003),当多次请求同一资源时,该补丁实现了20秒的超时.实际上,补丁尝试修复的 …
来自Java AtomicReferenceFieldUpdater文档:
请注意,
compareAndSet此类中方法的保证比其他原子类弱.因为此类不能确保该领域的所有应用都适合于原子访问目的,它可以保证原子性和可变语义只相对于其他调用compareAndSet和set.
这意味着我无法进行正常的易失性写入compareAndSet,但必须使用set.它没有提到任何关于get.
这是否意味着我仍然可以读取具有相同原子性保证的volatile字段 - 所有写入之前的所有写入set或者compareAndSet对读取volatile字段的所有人都可见?
还是我使用get上AtomicReferenceFieldUpdater,而不是在球场上挥发读?
如果您有参考,请发布参考.
谢谢.
编辑:
从Java Concurrency in Practice中,他们唯一说的是:
updater类的原子性保证比常规原子类弱,因为您无法保证不会直接修改基础字段 - compareAndSet和算法方法仅保证原子性与使用原子字段更新器方法的其他线程相关.
同样,没有提到其他线程应该如何读取这些volatile字段.
另外,我是否正确地假设"直接修改"是一个常规的易失写?
所有学生都对 C++ using-directives的行为感到惊讶。考虑这个片段(Godbolt):
namespace NA {
int foo(Zoo::Lion);
}
namespace NB {
int foo(Zoo::Lion);
namespace NC {
namespace N1 {
int foo(Zoo::Cat);
}
namespace N2 {
int test() {
using namespace N1;
using namespace NA;
return foo(Zoo::Lion());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可能认为test会叫NA的foo(Zoo::Lion); 但实际上它最终会调用N1's foo(Zoo::Cat)。
原因是这using namespace NA实际上并没有将名称NA带入当前范围;它带来他们到最小共同祖先的范围NA和N2,这是::。并且using namespace N1不会将名称N1带入当前 …
假设您想<random>在实际程序中使用 C++工具(对于“实用”的某些定义——这里的约束是这个问题的一部分)。你的代码大致如下:
int main(int argc, char **argv) {
int seed = get_user_provided_seed_value(argc, argv);
if (seed == 0) seed = std::random_device()();
ENGINE g(seed); // TODO: proper seeding?
go_on_and_use(g);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,你应该使用什么类型ENGINE?
我以前总是说std::mt19937因为它打字很快,而且有名字识别功能。但是现在似乎每个人都在说Mersenne Twister 非常重量级且对缓存不友好,甚至没有通过其他人所做的所有统计测试。
我想说,std::default_random_engine因为这是明显的“默认”。但我不知道,如果它从平台而异,而且我不知道这是否是统计学上任何好处。
由于现在每个人都在 64 位平台上,我们至少应该使用std::mt19937_64overstd::mt19937吗?
我想说pcg64或者xoroshiro128因为它们看起来很受人尊敬而且很轻巧,但它们根本不存在<random>。
我对minstd_rand, minstd_rand0, ranlux24,knuth_b等一无所知——它们肯定有什么用吗?
显然,这里有一些相互竞争的限制。
发动机的强度。(<random>没有加密强的 PRNG,但是,一些标准化的 PRNG 仍然比其他的“弱”,对吧?)
sizeof 引擎。
其速度operator() …
我是一名C和C++程序员,试图开始使用Objective-C.但是,我真的很困惑,因为语言和标准库的标准文档显然完全没有.我可以理解,没有ISO标准,但根本没有参考文件?怎么没有人似乎非常担心这种状况呢?(不可否认,谷歌很难做到这一点,因为"参考","文档"和"标准"都是超载的术语.所以我可能错过了一些关键的东西.)
这个问题接近于问同样的问题:我在哪里可以找到解释Objective-C如何实现的文档,并且提供的唯一答案是"阅读Apple发布的这个源代码,这与几年前的实现非常接近, 也许".
这个页面:http://clang.llvm.org/docs/ObjectiveCLiterals.html包含了Objective-C的正式语法片段,但具有讽刺意味的是,它描述了Clang刚刚关闭并添加的功能.并没有其他人支持.这里有另一种语法:http://www.omnigroup.com/mailman/archive/macosx-dev/2001-March/022979.html但它已经超过10年了.
将问题缩小到最低限度:我想知道"Object"保证提供哪些方法,以及每种方法的行为是什么.对于其他语言,此类信息通常由以下内容提供:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html
这是一个奇怪的,非Swift-thonic的问题,所以请耐心等待.
我想在Swift中做类似于我目前在Objective-C/C++中所做的事情,所以我将从描述它开始.
我有一些现有的C++代码定义了一个宏,当在代码中的任何地方使用表达式时,它会在编译时将一个条目插入到二进制文件的表中.换句话说,用户写这样的东西:
#include "magic.h"
void foo(bool b) {
if (b) {
printf("%d\n", MAGIC(xyzzy));
}
}
Run Code Online (Sandbox Code Playgroud)
并感谢定义
#define MAGIC(Name) \
[]{ static int __attribute__((used, section("DATA,magical"))) Name; return Name; }()
Run Code Online (Sandbox Code Playgroud)
在编译时实际发生的是创建一个名为(modulo name-mangling)的静态变量xyzzy并将其分配到magical我的Mach-O二进制文件的特殊部分中,因此运行nm -m foo.o转储符号会显示如下内容:
0000000000000098 (__TEXT,__eh_frame) non-external EH_frame0
0000000000000050 (__TEXT,__cstring) non-external L_.str
0000000000000000 (__TEXT,__text) external __Z3foob
00000000000000b0 (__TEXT,__eh_frame) external __Z3foob.eh
0000000000000040 (__TEXT,__text) non-external __ZZ3foobENK3$_0clEv
00000000000000d8 (__TEXT,__eh_frame) non-external __ZZ3foobENK3$_0clEv.eh
0000000000000054 (__DATA,magical) non-external [no dead strip] __ZZZ3foobENK3$_0clEvE5xyzzy
(undefined) external _printf
Run Code Online (Sandbox Code Playgroud)
通过魔术getsectbynamefromheader() …
我正在学习C++ 11并发性,其中我以前唯一的并发原语经验是六年前的操作系统类,所以如果可以,请保持温和.
在C++ 11中,我们可以编写
std::mutex m;
std::condition_variable cv;
std::queue<int> q;
void producer_thread() {
std::unique_lock<std::mutex> lock(m);
q.push(42);
cv.notify_one();
}
void consumer_thread() {
std::unique_lock<std::mutex> lock(m);
while (q.empty()) {
cv.wait(lock);
}
q.pop();
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但我觉得需要包裹cv.wait一个循环.我们需要循环的原因对我来说很清楚:
Consumer (inside wait()) Producer Vulture
release the lock
sleep until notified
acquire the lock
I MADE YOU A COOKIE
notify Consumer
release the lock
acquire the lock
NOM NOM NOM
release the lock
acquire the lock
return from wait()
HEY WHERE'S MY COOKIE I EATED IT
Run Code Online (Sandbox Code Playgroud)
现在,我相信其中一个很酷的事情 …
最近Herb Sutter就"现代C++:你需要知道什么"发表了精彩演讲.本次演讲的主题是效率以及数据位置和访问内存的重要性.他还解释了内存(数组/向量)的线性访问如何被CPU所喜爱.他从另一个经典参考"Bob Nystrom的游戏表演"中就此主题举了一个例子.
阅读这些文章后,我得知有两种类型的缓存会影响程序性能:
Cachegrind工具还测量我们程序的缓存类型检测信息.许多文章/博客已经解释了第一点,以及如何实现良好的数据缓存效率(数据位置).
但是我没有获得关于主题指令缓存的更多信息以及我们应该在我们的程序中采取什么样的方法来实现更好的性能?根据我的理解,我们(程序员)对哪条指令或执行的命令没有多少控制权.
如果小型c ++程序解释了这个计数器(.ie指令缓存)将如何随着我们的编写程序风格而变化,那将是非常好的.程序员应遵循哪些最佳实践来达到更好的性能?
我的意思是,如果我们的程序(矢量与列表)以类似的方式解释第二点,我们可以理解数据缓存主题.这个问题的主要目的是尽可能地理解这个主题.
我有一个包含两个分支的项目:master和gh-pages.它们本质上是两个不同的项目,其中gh-pages项目依赖于主项目(反之亦然).可以把它想象成"master包含源代码,gh-pages包含从这些源文件构建的二进制文件".我定期地接受在master中累积的更改,并使用提交消息"与主提交xxxxxxxx一致"对gh-pages分支进行新提交.

经过一段时间的这样做,我意识到,如果gh-pages提交"与主提交xxxxxxxx一致"实际上将xxxxxxxx作为其git存储库中的父项,那将会很好.像这样(糟糕的MSPaint艺术):

有没有办法让存储库看起来像上面的第二个图像?我知道如何使新的提交遵循这种模式:我可以做"git merge -s our master"(设置其他空提交的父项),然后是"git commit --amend adv550.z8"(其中adv550.z8)是实际正在改变的二进制文件).但git是否可以让您轻松回过头来为旧提交添加新父母?
一旦我让我的本地回购看起来正确,我完全愿意"git push -f"并且吹走我的Github存储库的当前历史.现在的问题是,可以让我的本地回购找吧?
编辑年后再添加:我最终放弃了尝试使git历史gh-pages看起来像这样的尝试; 我认为零收益太过分了.我的新做法是积极地压缩提交gh-pages,因为在我的情况下保存这些提交消息并不重要.(这只是"与主提交相符......"的长线,其中没有一个在历史上很有意思.)但是,如果我需要再次这样做,我会听到所说的答案
git merge $intended_parent_1 $intended_parent_2
git checkout $original_commit -- .
git commit --amend -a -C $original_commit
Run Code Online (Sandbox Code Playgroud) c++ ×4
c++11 ×3
concurrency ×2
c++14 ×1
c++98 ×1
cachegrind ×1
caching ×1
document ×1
git ×1
grammar ×1
java ×1
jsr166 ×1
long-polling ×1
mach-o ×1
name-lookup ×1
objective-c ×1
random ×1
rationale ×1
standards ×1
swift ×1
swift2 ×1
vim ×1
volatile ×1