我需要一些糟糕的C++代码示例来说明违反良好做法的行为.我想提出我自己的例子,但是我很难想出一些没有做作的例子,而且陷阱不是很明显(它比看起来更难).
例子如下:
std::auto_ptr成员的类定义复制构造函数,并使用std::auto_ptr具有前向声明的类的成员.boost::shared_ptr.size_t和的不匹配int).......或者你能想到的任何其他邪恶的东西.
我很欣赏对现有资源或一两个样本的一些指示.
我有一个我想要过滤的持久性地图.像这样的东西:
(filter #(-> % val (= 1)) {:a 1 :b 1 :c 2})
Run Code Online (Sandbox Code Playgroud)
以上是([:a 1] [:b 1])(一个懒惰的地图条目序列).但是我希望得到{:a 1 :b 1}.
如何过滤地图以使其保持地图而无需从一系列地图条目重建地图?
我有一个"a"绑定到函数的符号:
(defn a []
(println "Hello, World"))
user=> a
#<user$a__292 user$a__292@97eded>
user=> (a)
Hello, World
nil
Run Code Online (Sandbox Code Playgroud)
然后我使用语法引用,它"解析当前上下文中的符号,产生一个完全限定的符号",根据Clojure文档.但为什么我不能像不合格的符号一样使用它?
user=> `a
user/a
user=> (`a)
java.lang.IllegalArgumentException: Wrong number of args passed to: Symbol (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
第二个问题:如果我在列表中有符号,为什么我不能像直接评估符号一样评估它?
user=> (def l '(a 1 2))
#'user/l
user=> 'l
l
user=> (first l)
a
user=> ((first l))
java.lang.IllegalArgumentException: Wrong number of args passed to: Symbol (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
我怀疑在某些地方对于符号如何在这里工作有一个致命的缺陷.上面的代码有什么问题?
似乎支持Linux内核中的细粒度功能,它允许为进程授予权限,例如,在不授予进程root权限的情况下打开原始套接字或提高线程优先级.
但是,如果有办法授予每个用户的能力,我想知道的是什么.也就是说,允许非root和非suid进程获取这些功能.
ZeroMQ作为通用消息传递中间件的经验是什么?
sleep(1)退出前".我不能在Clojure(1.2)中对一系列布尔值使用逻辑函数.由于逻辑函数是宏,以下两种方法都不起作用:
(reduce and [... sequence of bools ...])
(apply or [... sequence of bools ...])
Run Code Online (Sandbox Code Playgroud)
错误消息说我"无法获取宏的值:#'clojure.core/and".如何在不编写样板代码的情况下应用这些逻辑函数(宏)?
一些(很多?全部?)64位1 Linux发行版允许通过提供32位和64位库(包括libc)的并行集合来运行32位应用程序.因此,32位应用程序可以链接到32位库,并由64位内核运行.
我想知道力学的32位应用程序如何让在64位内核的系统调用.我怀疑答案是在libc和/或内核源代码中的某个地方,但由于我不知道在哪里查看,因此潜入源代码会非常耗时.
还有一个更重要的问题,是否有任何性能开销?2从逻辑上讲,来自32位app系统调用的调用必须转换为64位内部内核环境.这完成的方式和地点?
1 "32位"= IA-32,"64位"= AMD64
2在你的回答中假设它很重要:)
我正在和Clojure一起开发一个宠物项目,但是我想知道我是否可以加快我的工作流程.
我目前的工作流程(使用Compojure)是:
lein swank.M-x slime-connect.C-c C-c)吧.它有很多烦恼:
C-c C-k重启Swank后逐个加载所有源文件().我怀疑我做错了.我正在寻找改善上述要点和整个工作流程的方法,所以如果你愿意分享你的话,我会很感激.
PS
我之前也使用过Vimclojure,因此也欢迎基于Vimclojure的工作流程.
我需要在脚本中等待,直到一定数量的条件成为现实?
我知道我可以使用条件变量和朋友滚动自己的事件,但我不想经历实现它的所有麻烦,因为一些对象属性更改来自包装C++库(Boost.Python)中的外部线程,所以我不能只是__setattr__在一个类中劫持并在那里放置一个条件变量,这让我尝试从C++创建并发出Python条件变量信号,或者包装一个本地变量并在Python中等待,这两个声音都是繁琐,不必要的复杂和无聊.
是否有更简单的方法,除非连续轮询病情?
理想情况下,它将沿着这条线
res = wait_until(lambda: some_predicate, timeout)
if (not res):
print 'timed out'
Run Code Online (Sandbox Code Playgroud) 我最近正在构建一个针对x86-64架构的特定共享库(ELF),如下所示:
g++ -o binary.so -shared --no-undefined ... -lfoo -lbar
Run Code Online (Sandbox Code Playgroud)
这失败,出现以下错误:
在制作共享对象时,不能使用对"本地符号"的重定位R_X86_64_32; 用-fPIC重新编译
当然,这意味着我需要将其重建为与位置无关的代码,因此它适合链接到共享库.
But this works perfectly well on x86 with exactly the same build arguments. So the question is, how is relocation on x86 different from x86-64 and why don't I need to compile with -fPIC on the former?
clojure ×4
linux ×3
c ×2
c++ ×1
elf ×1
messaging ×1
performance ×1
permissions ×1
python ×1
security ×1
system-calls ×1
x86 ×1
x86-64 ×1
zeromq ×1