from threading import Thread
class MyClass:
#...
def method2(self):
while True:
try:
hashes = self.target.bssid.replace(':','') + '.pixie'
text = open(hashes).read().splitlines()
except IOError:
time.sleep(5)
continue
# function goes on ...
def method1(self):
new_thread = Thread(target=self.method2())
new_thread.setDaemon(True)
new_thread.start() # Main thread will stop there, wait until method 2
print "Its continues!" # wont show =(
# function goes on ...
Run Code Online (Sandbox Code Playgroud)
有可能这样做吗?在new_thread.start()主线程等待它完成之后,为什么会发生这种情况?我没有在任何地方提供new_thread.join().
守护进程没有解决我的问题,因为我的问题是主线程在新线程启动后立即停止,而不是因为主线程执行结束.
我有代码从 2 个表中检索 2 个对象(由 JooQ 生成的 POJO)的一条记录。
Record record = dsl.select()
.from(ISSUE)
.leftJoin(CLIENT).on(CLIENT.ID.eq(ISSUE.CLIENT_ID))
.where(ISSUE.ID.eq(id))
.fetchOne();
JIssue jIssue = record.into(JIssue.class);
JClientRecord jClient = record.into(JClientRecord.class);
Run Code Online (Sandbox Code Playgroud)
表 ISSUE 和表 CLIENT 都有 PK 字段“ID”。
问题是当映射到(POJO.class)时,具有相同名称的表字段未正确映射到 POJO。在上面的示例中,jIssue 采用 jClient 的 id。
当使用 TableRecords 而不是 POJO 的所有映射正确完成时,但您不能在生成的 DAO 中使用 TableRecord,它需要生成的 POJO。
我该如何解决这个问题,以便 jooq 可以正确映射到生成的 pojo 字段?
从 Java 8 更新 191 或更高版本,或 Java 10、11、12、13 等开始。我们有一个XX:+UseContainerSupport默认激活的选项,因此 JVM 可以读取容器内 RAM 和 CPU 的限制。通过设置,-XX:MaxRAMPercentage=90.0我可以告诉 JVM 我想要给 HEAP 多少可用 RAM 的百分比,但是其他 JVM 资源呢?像 GC、CodeCache、ClassLoading、Metaspace、DirectBuffers 等等?
JVM 是否也会调整其大小(分配堆后的剩余空间)以不超过可用 RAM?或者我仍然需要在每种情况下自己计算它,如下所示:
-XX:MetaspaceSize=64m -XX:ReservedCodeCacheSize=32m -XX:CompressedClassSpaceSize=16m -Xss256k
Run Code Online (Sandbox Code Playgroud)
例如,如果创建一个具有 1G RAM 的容器并在其中运行 JVM -XX:MaxRAMPercentage=90.0,那么 HEAP 将占用 900m,而其他 JVM 内容将只有 100m,这 100m 是否会在所有需要的资源之间进行智能分配,例如设置XX:MaxMetaspaceSize(哪个默认情况下是无限的)?
我正在尝试解析.cds delphi数据库文件.简单的int值和字符串很容易解析.但唯一一个我无法理解的是DateTime格式.我找到了影响DateTime Value的6个字节
我正在使用python和以下代码:
data = '\x00\x00' + '\xBC\xCE\x6F\xEC\xE7\xCC'
data_long = struct.unpack('Q', data)[0]
Run Code Online (Sandbox Code Playgroud)
但是struct.unpack没有6个字节的类型值,所以我添加了\ x00\x00来生成8个字节的长值('Q'选项)
这是一个小样本.cds文件,有一行https://yadi.sk/d/PkZKy50YgCmqE
DateTimeIssl value ="16.04.2015 9:25:47"
我找到了6个十六进制值,但无法正确解压缩.任何人都可以告诉我如何阅读它,或者可能给我一些关于.cds文件结构的文档的链接?
更新: 好的!感谢Deltics指导我如何阅读TDateTime.我在互联网上找到了一些测试值,我编写了解码函数,将其转换为Python日期时间对象.
data = '\x2E\xD8\x82\x2D\xCE\x47\xE3\x40'
data_double = struct.unpack('d', data)[0]
double_split = str(data_double).split('.')
SECONDS_IN_DAY = 60*60*24
time_from_starting_date = timedelta(days=int(double_split[0]), seconds=int(SECONDS_IN_DAY * (float(double_split[1]) * pow(0.1, len(double_split[1])))))
starting_date = datetime(1899, 12, 30)
result_date = starting_date + time_from_starting_date
print time_from_starting_date
print result_date
Run Code Online (Sandbox Code Playgroud)
对于2E D8 82 2D CE 47 E3 40,它将是08.02.2008 10:38:00.工作良好.
但我仍然找不到上面链接的文件中的字段DateTimeIssl的有效8字节.也许有不同的日期时间格式?