小编Tak*_*umi的帖子

为什么IPv6使用冒号作为分隔符而不是点?

我找不到IPv6使用冒号作为分隔符而不是点的原因.
当地址用端口号描述时,对我来说似乎很笨拙.

[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443
Run Code Online (Sandbox Code Playgroud)

使用结肠的理由是什么?

ipv6

28
推荐指数
1
解决办法
4826
查看次数

更改Clojure ref的线程越多,每个线程的重试率就越高?

我有点担心.
想象一下,最简单的版本控制方式是程序员只是从主存储库复制所有目录,如果主存储库仍然相同,则在更改文件后会反向执行.如果它被另一个人改变了,他们必须再试一次.

当程序员的数量增加时,重试也会增加,但它可能与程序员的数量不成比例.
如果十名程序员工作并且每人工作需要一个小时,那么至少需要完成所有工作十小时.
如果他们认真,大概9 + 8 + 7 + ...... 1 = 45工时无济于事.
在程序员看来,大约99 + 98 + ... 1 = 4950工时无济于事.

我试着计算重试次数并得到结果.

资源

(defn fib [n] 
   (if  (or (zero? n) (= n 1)) 
       1 
      (+  (fib (dec n) )  (fib (- n 2))))) 

(defn calc! [r counter-A counter-B counter-C n]
  (dosync
   (swap! counter-A inc)
   ;;(Thread/sleep n)
   (fib n)
   (swap! counter-B inc)
   (alter r inc)
   (swap! counter-C inc)))

(defn main [thread-num n] …
Run Code Online (Sandbox Code Playgroud)

multithreading clojure refs

4
推荐指数
1
解决办法
297
查看次数

在Clojure中使序列副作用

我想做的就像跟随.

(def mystream (stream (range 100)))

(take 3 mystream)
;=> (0 1 2)

(take 3 mystream)
;=> (3 4 5)

(first (drop 1 mystream))
;=> 7
Run Code Online (Sandbox Code Playgroud)

流函数使序列像io流一样有效.
我认为这几乎是不可能的.这是我的尝试.

(defprotocol Stream (first! [this]))

(defn stream [lst]
  (let [alst (atom lst)]
    (reify Stream
       (first! [this]
         (let [[fs] @alst]
           (swap! alst rest)
           fs)))))

(let [mystream (stream (iterate inc 1))]
  (map #(if (string? %) (first! mystream) %)
       [:a "e" "b" :c "i" :f]))
;=> (:a 1 2 :c 3 :f)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方法需要实现我将使用的所有功能.

clojure

3
推荐指数
1
解决办法
169
查看次数

标签 统计

clojure ×2

ipv6 ×1

multithreading ×1

refs ×1