我在斯卡拉特别感兴趣(2.8)技术与格式字符串建设,以及有趣的方式来做出这样的能力,容易接近的地方是非常有用的(字节的列表,字符串,...?)..
public class Hex {
public static String valueOf (final byte buf[]) {
if (null == buf) {
return null;
}
final StringBuilder sb = new StringBuilder(buf.length * 2);
for (final byte b : buf) {
sb.append(String.format("%02X", b & 0xff));
}
return sb.toString();
}
public static String valueOf (final Byteable o) {
return valueOf(o.toByteArray());
}
}
Run Code Online (Sandbox Code Playgroud)
这只是一个学习练习(因此Java的实用程序和实现不是问题.)
谢谢
关于没有nameivar ,以下内容不会在编译或运行时抱怨.那么为什么看到ivar 和 @property/@synthesize.
@interface PropTest : NSObject
{
}
@property (retain) NSString *name;
@end
@implementation PropTest
@synthesize name;
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
PropTest *p = [[PropTest new] autorelease];
p.name = @"Hello, World!";
NSLog(@"%@",p.name);
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码打印
Hello, World!
Run Code Online (Sandbox Code Playgroud)
事实上,如果我访问p->name,我会收到警告:
warning: instance variable 'name' is @private; this will be a hard error in the future
Run Code Online (Sandbox Code Playgroud)
这表示如果不存在ivar就会为我创建.
如果这是真的,那么手动创建ivar有什么意义(忽略显而易见的,有时候有理由不使用g/setter访问器)?
或者换句话说,当我需要绕过访问者时,我是否应该只 …
假设我有这个:
go func() {
for range time.Tick(1 * time.Millisecond) {
a, b = b, a
}
}()
Run Code Online (Sandbox Code Playgroud)
其他地方:
i := a // <-- Is this safe?
Run Code Online (Sandbox Code Playgroud)
对于这个问题,i与原始a或者相关的价值是不重要的b.唯一的问题是阅读a是否安全.也就是说,是否有可能a被nil部分分配,无效,未定义,......除了有效值之外的任何东西?
我试图让它失败,但到目前为止它总是成功(在我的Mac上).
在Go Go Memory Model文档中,我无法找到超出此引用的任何特定内容:
大于单个机器字的值的读取和写入表现为以未指定的顺序进行的多个机器字大小的操作.
这是否意味着单个机器字写入实际上是原子的?并且,如果是这样,函数指针写入Go单个机器字操作?
更新:这是一个正确同步的解决方案
我有一个非常简单的jQuery来检索我最新的推文
$.getJSON("http://twitter.com/statuses/user_timeline/username.json?count=1",
function(data) {
$("#tweet_text").html(data[0].text);
});
Run Code Online (Sandbox Code Playgroud)
这适用于我桌面上的简单HTML文件.但是,一旦从我的localhost(apache)访问该文件,就不会返回任何数据.我想知道Apache的任何部分是否以某种方式阻止了这个请求?还是其他任何想法?
我想使用Enumerator(类似于ScalaStream示例)将数据库结果块化为响应为TSV.我可能有数千行,我不想分页结果,也不想将整个行累积ResultSet到一个单独的行中String.如果需要,块可以不在行分隔符处中断.换句话说,唯一的标准是对结果进行分块,而不是遵循TSV分隔符.
我想在我的行动中做这样的事情:
Ok.stream(new Iterator[ResultSet] {
val conn = DB.getConnection()
val stmt = conn.createStatement
val rs = stmt.executeQuery("""select * from atable""")
def hasNext = !rs.isLast() && !rs.isClosed()
def next() = {
if (!rs.next()) {
conn.close()
null
} else rs
}
}.toStream)
Run Code Online (Sandbox Code Playgroud)
不幸的是,Ok.stream期望java.io.InputStream并且将结果包装起来InputStream似乎过度了.Ok.stream也接受了,Enumerator但我不确定如何在这种情况下创建一个.
如果这是最好的(或好的)解决方案,有人可以准确地解释它在做什么吗?
(sort
(reduce (fn [x [y z]] (assoc x y z)) {} (System/getProperties)))
Run Code Online (Sandbox Code Playgroud)
在何处可以使用它,例如打印系统属性:
(def p
(sort
(reduce (fn [x [y z]] (assoc x y z)) {} (System/getProperties))))
(defn pnv [nv] (println (str (key nv) "=\"" (val nv) "\"")))
(doseq [nv p] (pnv nv))
Run Code Online (Sandbox Code Playgroud)
如果这不是一个好方法,请提供更好的方法.谢谢
我知道我能做到:
(doseq [nv (System/getProperties)] (pnv nv))
Run Code Online (Sandbox Code Playgroud)
但排序似乎不起作用:
(doseq [nv (sort (System/getProperties))] (pnv nv))
ClassCastException java.util.Hashtable$Entry cannot be cast to java.lang.Comparable clojure.lang.Util.compare (Util.java:104)
Run Code Online (Sandbox Code Playgroud)
解决方案,由合金提供:
(doseq [nv (into (sorted-map) (System/getProperties))] (pnv nv))
Run Code Online (Sandbox Code Playgroud) java ×2
scala ×2
ajax ×1
apache ×1
clojure ×1
concurrency ×1
go ×1
goroutine ×1
jquery ×1
json ×1
map ×1
objective-c ×1
properties ×1
sorting ×1