我正在尝试(作为一种自学练习)创建一个Clojure宏,它将生成代码以将函数应用于整数序列并对结果求和,例如
f(0)+ f(1)+ f(2)+ f(3)
这是我的尝试:
(defmacro testsum [func n]
`(fn [x#] (+ ~@( map (fn [i] `(~func x#)) (range n)))))
Run Code Online (Sandbox Code Playgroud)
然而,x#gensym似乎出现了问题,我最终得到了两个不同版本的x,因此该函数不起作用:
(macroexpand '(testsum inc 3))
Run Code Online (Sandbox Code Playgroud)
得到:
(fn* ([x__809__auto__]
(clojure.core/+
(inc x__808__auto__)
(inc x__808__auto__)
(inc x__808__auto__))))
Run Code Online (Sandbox Code Playgroud)
除了不同的809和808版本的x之外,这几乎是我想要的......
我究竟做错了什么?我认为自动gensym旨在为这种目的创造一个独特的符号?有没有更好的方法呢?
我试图处理一个包含俄语符号的文件。在阅读和向文件写入一些文本后,我得到如下信息:
\160\192\231\229\240\225\224\233\228\230\224\237
我怎样才能得到正常的符号?
假设我有5000万个功能,每个功能都来自磁盘.
在我的程序开始时,我处理每个功能,并根据某些条件,我应用一些修改.
在我的程序中这一点,我正在从磁盘读取一个功能,处理它并将其写回来,因为我没有足够的内存来同时打开所有5000万个功能.
现在说我要对这5000万个功能进行排序,是否有任何最佳算法可以实现这一点,因为我无法同时加载每个人?
像部分排序算法或类似的东西?
我正在尝试设置图像的给定像素的颜色.这是代码片段
Bitmap myBitmap = new Bitmap(@"c:\file.bmp");
for (int Xcount = 0; Xcount < myBitmap.Width; Xcount++)
{
for (int Ycount = 0; Ycount < myBitmap.Height; Ycount++)
{
myBitmap.SetPixel(Xcount, Ycount, Color.Black);
}
}
Run Code Online (Sandbox Code Playgroud)
每次我收到以下异常:
未处理的异常:System.InvalidOperationException:具有索引像素格式的图像不支持SetPixel.
抛出异常bmp和jpg文件.
考虑这个(恕我直言)简单的例子:
public class DecompilerTest {
public static void main(String[] args) {
Object s1 = "The", s2 = "answer";
doPrint((Object) "You should know:");
for (int i = 0; i < 2; i++) {
doPrint(s1);
doPrint(s2);
s1 = "is";
s2 = new Integer(42);
}
System.out.println();
}
private static void doPrint(String s1) {
System.out.print("Wrong!");
}
private static void doPrint(Object s1) {
System.out.print(s1 + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
在没有调试信息的情况下用源/目标级别1.1编译它(即不应存在局部变量信息)并尝试对其进行反编译.我尝试过Jad,JD-GUI和Fernflower,他们都至少有一个错误的调用(即程序打印"错误!"至少一次)
真的没有java反编译器可以推断出正确的强制转换,以便它不会调用错误的重载吗?
编辑:目标级别1.1,以便不存在特定于Java6的快速验证信息.这可能会给反编译器一个线索,即s1已被声明为Object而不是String.即使没有这些信息,反编译器也应该能够反编译代码(不一定得到原始变量类型,但显示相同的行为),特别是因为许多混淆器也将它剥离.
反编译器出了什么问题:
(Object)在第一次通话中错过了演员.s1要String …我正在CLI上运行一个任务,它提示我输入是/否.
选择一个选项后,屏幕上会滚动大量信息 - 包括几个错误.我想将此输出传递给一个文件,以便我可以看到错误.由于命令需要键盘输入,因此简单的">"无效.
我在Ubuntu 9.1上运行.
我想知道这里记录的解决方案是否仍然是解决方案还是有其他方式从4个字节获取一个int?
谢谢.
编辑:我从套接字.read获取byte []
编辑:int recvMsgSize = in.read(Data, 0, BufferSize);如果recvMsgSize为-1我知道连接已被删除.
我在使用DataInputStream而不是InputStream时如何检测到这一点?
谢谢.
编辑:对于接受正确答案的yoyo道歉.但是在mihi更新了最终响应之后,看起来该方法是可靠的并且减少了扩展编码,并且在我看来是最佳实践.
我正在使用web2py,由于某些原因,web2py似乎没有注意到代码在某些情况下发生了变化.我不能真正缩小它,但不时反映代码的变化,web2py显然有旧版本缓存在某处.
唯一有帮助的是退出web2py并重新启动它(我正在使用内部服务器).
任何提示?谢谢 !
...
#include "test1.h"
int main(..)
{
count << aaa <<endl;
}
Run Code Online (Sandbox Code Playgroud)
aaa是在定义中test1.h,我没有使用extern关键字,但仍然可以参考aaa.
所以我怀疑是否extern真的有必要?
如果我的ChangePassword表单包含用户的隐藏ID字段,该怎么办?
BadPerson知道GoodPerson的ID.他用FireBug打开Change Password表单,将他的Id更改为GoodPerson的Id,因此GoodPerson的密码更改.
当然我可以创建一些防止这种情况的服务器逻辑,但我认为应该有一些开箱即用的解决方案,如果隐藏的字段被更改,我会不知道.
提前致谢.
编辑 确定,更改密码是一个糟糕的例子.我在隐藏字段中具有id的任何编辑表单都存在同样的问题.