我在C中做了一些需要使用字符串的东西(就像大多数程序一样).
查看联机帮助页,我发现,在字符串(3)处:
概要
Run Code Online (Sandbox Code Playgroud)#include <strings.h> char * index(const char *s, int c) (...) #include <string.h> char * strchr(const char *s, int c)
所以我好奇地看着strchr(3)和index(3)......
我发现两者都做到了以下几点:
strchr()/ index()函数定位s指向的字符串中第一次出现的c.终止空字符被认为是字符串的一部分; 因此,如果c为'\ 0',则函数定位终止'\ 0'.
因此,该联机帮助页基本上是一个复制和粘贴.
此外,我认为,由于一些混淆的必要性,第二个参数有类型int,但实际上是一个char.我想我没有错,但任何人都可以向我解释为什么它是一个int,而不是一个char?
如果它们都是相同的,哪一个在版本之间更兼容,如果不兼容,哪个区别?
如果我运行程序,就像
#include <stdio.h>
int main(int argc, char *argv[], char *env[]) {
printf("My references are at %p, %p, %p\n", &argc, &argv, &env);
}
Run Code Online (Sandbox Code Playgroud)
我们可以看到这些区域实际上在堆栈中.但还有什么呢?如果我们在Linux 3.5.3中运行所有值的循环(例如,直到segfault),我们可以看到一些奇怪的数字,以及由一堆零分隔的两个区域,可能是为了防止覆盖环境变量偶然.
无论如何,在第一个区域中必须有很多数字,例如每个函数调用的所有帧.
我们如何区分每个帧的结尾,参数在哪里,如果编译器添加了一个金丝雀,返回地址,CPU状态等等?
递归类型是一种具有基础和自身递归情况的类型.
我希望这能够实现"类型列表",即其conses仅允许相同元素类型或nil的列表.
我尝试了以下定义:
(deftype list-of (a) `(or null
(cons ,a (list-of ,a))))
Run Code Online (Sandbox Code Playgroud)
然而,由于编译器试图无限期地在列表上进行递归,这标志着堆栈耗尽问题(至少在SBCL上).是否可以定义这样的数据类型?
我想映射列表,但要跟踪列表中的元素索引.
在Python中,我可以做一些事情:
map(lambda (idx, elt): "Elt {0}: {1}".format(idx, elt), enumerate(mylist))
Run Code Online (Sandbox Code Playgroud)
我试图将其翻译成以下内容:
(mapcar-something (lambda (elt idx) (format nil "Elt ~D: ~S" idx elt))
'(a b c d))
Run Code Online (Sandbox Code Playgroud)
预期结果:
("Elt 0: A" "Elt 1: B" "Elt 2: C" "Elt 3: D")
Run Code Online (Sandbox Code Playgroud)
但我找不到我应该使用的mapcar-something功能.我是否需要自己实现(通过循环,也许)?
是否可以通过抑制中间结果来获得Kafka Streams中的窗口最终结果.
我无法实现这一目标.我的代码出了什么问题?
val builder = StreamsBuilder()
builder.stream<String,Double>(inputTopic)
.groupByKey()
.windowedBy(TimeWindows.of(Duration.ofSeconds(15)))
.count()
.suppress(Suppressed.untilWindowCloses(unbounded())) // not working)
.toStream()
.print(Printed.toSysOut())
Run Code Online (Sandbox Code Playgroud)
它会导致此错误:
Failed to flush state store KSTREAM-AGGREGATE-STATE-STORE-0000000001:
java.lang.ClassCastException: org.apache.kafka.streams.kstream.Windowed cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)
代码/错误详情:https://gist.github.com/robie2011/1caa4772b60b5a6f993e6f98e792a380
我怎么能有一个通用的抽象类,比如说Animal,让它实现一个常量(或者一个变量;它不介意)哪个必须由所有子类重新定义?
例:
abstract class Animal {
private static int venerableAge;
}
Run Code Online (Sandbox Code Playgroud)
并强制Dog定义类似的东西
class Dog extends Animal {
private static int venerableAge = 10;
}
Run Code Online (Sandbox Code Playgroud)
我不希望不同的子类能够读取或写入彼此的值.只是他们自己的一个.
即,每个类必须有自己的变量的静态"实例".没有人会访问父母的.
这可能在Java中吗?
如果我有一个函数或宏(我将使用宏)采取一些关键字参数,例如:
(defmacro mwe (&whole args &key name description &allow-other-keys)
(pushnew (list-to-alist args) *some-var*))
Run Code Online (Sandbox Code Playgroud)
如果我想说mwe的所有用法都是以下形式:
(mwe :name name :prop1 value1 :prop2 value2)
Run Code Online (Sandbox Code Playgroud)
我怎样才能轻松地将其转换为alist(或者可能是一个哈希表,但我认为仅仅2-10个字段就会过度使用),以便更容易地检索关键字参数,使用assoc?
common-lisp ×3
c ×2
apache-kafka ×1
java ×1
kotlin ×1
low-level ×1
oop ×1
stack ×1
string ×1
type-theory ×1
types ×1
x86 ×1