小编Vat*_*ine的帖子

Redis 如何使用 golang 监听 1000 到 10,000 个列表的变化?

我有 1000 到 10,000 个键存储在 Redis 中,它们的值类型是列表。当一个新项目添加到任何一个现有列表时,我需要通知我的 golang 程序。收到通知后,我需要生成一个新的 goroutine 并执行一个小操作。

我正在将 redigo 用于 redis 连接池。

在不重载 Redis 实例的情况下,解决此问题的最佳方法是什么?

go redis redigo

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

Python:减少列表但保留详细信息

说我有一个项目列表,其中一些项目类似于一个点,但后来一个点后的数字不同

['abc.1',
 'abc.2',
 'abc.3',
 'abc.7',
 'xyz.1',
 'xyz.3',
 'xyz.11',
 'ghj.1',
 'thj.1']
Run Code Online (Sandbox Code Playgroud)

我想从这个列表中产生一个新的列表,它会折叠倍数但保留一些数据,即数字后缀,所以上面的列表应该产生一个新的列表

[('abc',('1','2','3','7'))
 ('xyz',('1','3','11'))
 ('ghj',('1'))
 ('thj',('1'))]
Run Code Online (Sandbox Code Playgroud)

我所想的是,第一个列表可以通过点分成对,但后来如何将第一部分分组而不丢失第二部分

如果这个问题是noobish,我很抱歉,并提前感谢

...哇,我没想到这么多很棒的答案,谢谢

python reduce list

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

每次通过时都会重置循环吗?

#include <iostream>
using namespace std;

int main (void) {
 cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
 for (int c = 1; c < 10; c++) {
   cout << c << "| ";
   for (int i = 1; i < 10; i++) {
     cout << i * c << '\t';
   }
   cout << endl;
 }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

嘿所以这段代码产生了一个时间表...我在Google Code的C++类上发现了它...我很困惑为什么每次你经历那个循环时第二个for循环中的"i"重置为1 ...还是在第一个参数中再次声明?

提前致谢!

c++

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

简单的LISP问题

我刚刚学习LISP而且我在执行以下操作时遇到了麻烦:

; return ":h :i"
(defun get-char() 
  (loop for char across "ab" 
        collect (concatenate 'string ":" (string char))))

; plist
(defun get-list() (list :a "1" :b "2"))

; I cannot get this to work 
; <-- returns all null, cannot get plist values :-(
(loop for x in (get-char) 
      collect (getf (get-list) x))

; this works fine...
(loop for x in '(:a :b) 
      collect (getf (get-list) x))
Run Code Online (Sandbox Code Playgroud)

我知道我很接近,但我只是遗漏了一些东西.

非常感谢 :-)

lisp common-lisp

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

在LISP中作为未定义函数变量

作为一个项目,我需要使用递归在lisp中创建一个罗马数字转换器.在处理罗马数字到英语部分时,我遇到了一个问题,编译器告诉我,我的一个变量是一个未定义的函数.我是lisp的新手,可以使用此程序可能的任何提示或技巧.我想知道我必须做出的改变,以避免得到该错误,如果有人有我的递归的提示,将不胜感激.

我知道我的代码很乱,但我打算学习所有正确的格式化方法,当我有一些有用的东西时.该函数应该采用罗马数字列表,然后将列表的第一个和第二个元素转换为相应的整数并添加它们.它递归调用,直到它返回NIL时它将返回0并添加所有剩余的整数并将其显示为原子.希望这是有道理的.先感谢您.

(defun toNatural (numerals)
  "take a list of roman numerals and process them into a natural number"
  (cond ((eql numerals NIL) 0)
    ((< (romans (first (numerals)))
        (romans (second (numerals))))
     (+ (- (romans (first (numerals))))
        (toNatural (cdr (numerals)))))
    (t
     (+ (romans (first (numerals)))
        (toNatural (cdr (numerals)))))))


(defun romans (numer)
  "take a numeral and translate it to its integer value and return it"
  (cond((eql numer '(M)) 1000)
       ((eql numer '(D)) 500)
       ((eql numer '(C)) 100)
       ((eql numer '(L)) 50)
       ((eql numer …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

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

为什么make-counter过程包含两个lambda定义?

我正在试图理解制造计数器程序的方案代码.这是一个更高阶的程序(程序输出另一个程序),我坚持下去.

(define make-counter
  (lambda (n)
    (lambda () 
      (set! n (+ n 1))
      n)))

(define ca (make-counter 0))
(ca)
(ca)
Run Code Online (Sandbox Code Playgroud)

它按预期分别输出1和2.为什么我们需要2个嵌套程序?它们的功能分别是什么?

如果有人详细解释,我将不胜感激.谢谢你们.

lisp scheme counter closures

0
推荐指数
1
解决办法
79
查看次数

我的lisp编译器中未定义"Define"(Steel Bank Common Lisp)

我正在研究关于SICP(计算机程序的结构和解释)的书,这本书要求我学习lisp,所以我为windows安装了一个名为SBCL(Steel Bank Common Lisp)的lisp编译器.问题是我从书中看到了这个代码:

(define pi 3.14159)
(define radius 10)
(* pi (* radius radius))
Run Code Online (Sandbox Code Playgroud)

将其保存在notepad ++上作为filename.lisp并运行它.

发生错误,说:"函数COMMON-LISP-USER :: DEFINE未定义." 为什么会这样?我如何使这项工作?

lisp scheme common-lisp

-2
推荐指数
1
解决办法
284
查看次数

标签 统计

lisp ×4

common-lisp ×3

scheme ×2

c++ ×1

closures ×1

counter ×1

go ×1

list ×1

python ×1

redigo ×1

redis ×1

reduce ×1