为什么cons在这个上下文中使用lazy-seq,但是conj没有?
这有效:
(defn compound-interest [p i]
(cons p (lazy-seq (compound-interest (* p (+ 1 i)) i))))
Run Code Online (Sandbox Code Playgroud)
这不会(它给出堆栈溢出[1]异常):
(defn compound-interest2 [p i]
(conj (lazy-seq (compound-interest2 (* p (+ 1 i)) i)) p))
Run Code Online (Sandbox Code Playgroud)
[1]哦,你好!在stackoverflow上询问涉及堆栈溢出的问题.
我正在编写一个API方法,它返回Web服务中的对象列表.此服务还会缓存结果并尝试在再次访问Web服务之前返回缓存的结果(如果有).所以我将此列表存储在Core Data实体中.但是Core Data只允许将to-may关系存储在NSSet中,而NSSet不会保留顺序.但我希望缓存的结果保留原始顺序(最初来自Web服务).我不一定知道该命令是如何建立的(因此我无法排序).
那我怎么能保留这个订单呢?我的计划是存储一个带有对象id的字符串,我稍后可以使用它来对它们进行排序:
NSString *objectIds = @"1 5 2 9 4";
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?
我得出的假设是,如果我用asyncio编写相互递归的协同程序,它们就不会达到最大递归深度异常,因为事件循环正在调用它们(并且像蹦床一样).但是,当我这样写它时,情况并非如此:
import asyncio
@asyncio.coroutine
def a(n):
print("A: {}".format(n))
if n > 1000: return n
else: yield from b(n+1)
@asyncio.coroutine
def b(n):
print("B: {}".format(n))
yield from a(n+1)
loop = asyncio.get_event_loop()
loop.run_until_complete(a(0))
Run Code Online (Sandbox Code Playgroud)
当这个运行时,我明白了RuntimeError: maximum recursion depth exceeded while calling a Python object
.
有没有办法防止堆栈在使用asyncio的递归协同程序中增长?
我的目标是允许 ssl 客户端从服务器的许多有效证书对中进行选择。客户端有一个 CA 证书,它将用来验证来自服务器的证书。
因此,为了尝试实现这一点,我ssl.SSLContext.set_servername_callback()
将服务器上的 与ssl.SSLSocket.wrap_socket's parameter:
server_hostname`结合使用,以尝试允许客户端指定要使用的密钥对。代码如下所示:
服务器代码:
import sys
import pickle
import ssl
import socket
import select
request = {'msgtype': 0, 'value': 'Ping', 'test': [chr(i) for i in range(256)]}
response = {'msgtype': 1, 'value': 'Pong'}
def handle_client(c, a):
print("Connection from {}:{}".format(*a))
req_raw = c.recv(10000)
req = pickle.loads(req_raw)
print("Received message: {}".format(req))
res = pickle.dumps(response)
print("Sending message: {}".format(response))
c.send(res)
def run_server(hostname, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((hostname, port))
s.listen(8)
print("Serving on {}:{}".format(hostname, port)) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试找出一种有效的方法来合并两个 PySpark DataFrame,如下所示:
from pyspark.sql import Row
data = [Row(id=index, value=val, calc=val*2) for index, val in enumerate(range(10))]
df = spark.createDataFrame(data=data, schema=["id", "value", "calc"])
data2 = [Row(id=index, value=val, calc=val**2) for index, val in [(9, 9), (10, 10)]]
df2 = spark.createDataFrame(data=data2, schema=["id", "value", "calc"])
df.head(10)
# Outputs: [Row(id=0, value=0, calc=0), Row(id=1, value=1, calc=2), Row(id=2, value=2, calc=4), Row(id=3, value=3, calc=6), Row(id=4, value=4, calc=8), Row(id=5, value=5, calc=10), Row(id=6, value=6, calc=12), Row(id=7, value=7, calc=14), Row(id=8, value=8, calc=16), Row(id=9, value=9, calc=18)]
df2.head(2)
# Outputs: [Row(id=9, value=9, …
Run Code Online (Sandbox Code Playgroud) 我一直在查看各种System.IdentityModel.Claims.ClaimTypes
属性(类引用),以查看我的每个用户模型属性是否都有预定义的类型.看来除了城市之外还有.例如,我看到除了城市之外我需要的每个地址字段:
ClaimTypes.StreetAddress
ClaimTypes.StateOrProvince
ClaimTypes.PostalCode
我注意到有一个ClaimTypes.Locality
; 这应该用于代表城市吗?(这听起来不像是它的目的).或者是否有一些其他ClaimTypes属性来表示我缺少的城市?