What’sNext 副业。量化金融,落地快:1.每一次策略的修改都直接影响下一次能不能赚钱;性能优化也是。
Bigger 量化金融,负责资金统一管理。adapator,股票,证券,期货,外汇
- 自动交易工具:数据接口,交易接口
重要说明:
这里存放着未被整理、分类,和仔细对比讨论过的 ideas。
What’sNext 副业。量化金融,落地快:1.每一次策略的修改都直接影响下一次能不能赚钱;性能优化也是。
Bigger 量化金融,负责资金统一管理。adapator,股票,证券,期货,外汇
这里存放着未被整理、分类,和仔细对比讨论过的 ideas。
| 230910 | 230922 | |
|---|---|---|
| Neck | 39cm | |
| bust | 89cm | |
| the whole body | 110cm | |
| waist | 84cm | |
| hipline | 95cm | |
| Upper Arm Circumference | 27cm | |
| Forearm circumference | 23.4cm | |
| Thigh Girth | 57cm | 54.6cm |
| calf Grith | 38.4cm | 36.5cm |
| weight | 65.4kg | 65.9kg |
这个说得很在点子上,我是在19年末的时候通过改变走路发力方式瘦小腿的。与其说瘦腿,其实更是和大腿相比看起来更匀称,我之前的小腿肚站起来时候和大腿一样粗,站直的时候膝盖甚至是合不上的。经过反思,发现我日常走路的时候时间长了经常会感到小腿酸胀,这其实一直是在用小腿走路,我在这期间尝试过跑步,虽小有成效,但停下来就又会恢复原状。这种情况导致的小腿粗是一个比较复杂的原理,但我最后通过大半年的时间对走路方式进行了调整,现在虽然小腿不算细,但和大腿比起来看起来已经相当正常了,我的调整策略如下:
走路时注意重心靠后,也就是后背中间的位置,同时双肩放松,这样你会不自觉地挺胸抬头,同时为保持平衡感觉到腹部有牵引感。走路时大腿内侧和屁股发力,重点来了:保持脚后跟尽量贴住地面(踮脚走路是大忌),迈步时脚后跟先接触地面,在前脚后跟接触地面之前,后脚后跟不要离开地面。简单来说就是用脚后跟走路,你会发现这个过程中小腿是几乎不怎么发力的,时间久了只要不是肥胖型自然会瘦下来。
漫画或者PDF的jellyfin版本 , 类似的还有 基于docker的smanga
Rather than browse rouman online, high-resolution pivix pictures seems more worthy to be downloaded and maintained.
But first you need a much bigger NAS.
image run创建容器。data/1 and data/2。 and Please think carefully because restart container will triger the following bugs:
But docker on Windows remains many bugs:
In http://brainiac.acsalab.com:2333/
sudo mount.cifs //synology.acsalab.com/Entertainment /synology -o user=xxx vers=3.0采取第一种, 在 portainer.io的local的stack里使用docker compose部署
1 | --- |
komga image需要图书/漫画刮削
| dockers | komga | smanga | Kavita |
|---|---|---|---|
| 单一大PDF文件加载 | 缓慢 | 缓慢 | |
| 格式支持 | zip,cbz,pdf | 部分zip不支持bug,不支持cbz | zip,pdf ,cbz |
| 如何支持单文件夹多图片 | 每个文件夹单独压缩成zip反而支持 | :material-close: | |
| 自定义元数据 | :material-close: | :material-check: | :material-check: |
| 任意位置标签 | :material-close: | :material-check: | :material-check: |
| 已知bug | 容器会自动关机(有待进一步测试) | ||
| 总体评价 | 基础完善稳定,但是定制化不足 | 有用的定制化 | 全,但是不维持原目录有点恶心,导致必须按照类型整理。 |
1 | Library Root |
Series Name的新文件(e.g.,abc.cbz),当作新的作品单独列出在根目录。这十分傻逼,对内容的共振度的要求也太高了。出现一个命名不规范的文件就会乱套。可以看得出作者有特殊的设计。

但是美中不足的是对于子文件夹的支持不够,太深的文件读取不到。

理论如此,但是实际貌似会卡住。
Komga支持CBZ/CBR、EPUB、PDF格式。对于漫画而言,个人觉得cbz1是最简单、兼容性最高的格式。
建议的文件结构如下:
1 | . |
libraryManga表示库名,下一层结构区分不同的漫画,更下一层则存储漫画文件内容的组织考虑的是一个平衡,每个lib下应该只有40个左右的内容。
下载的内容的特点:
合集/A/PDF/*看多少,刮削多少。
见 Calibre and its Pugins for e-hentai Books 一文
cbl,配置好后在目录下运行python processMetadata.py,即可近乎完美的给漫画加上海报和信息了尝试后发现是,类似RSS的漫画网页集成浏览器(B站,腾讯漫画,18+漫画)。实现订阅,跟踪,一键下载。 由于生态很不错,不用担心订阅链接失效。
我猜测是内存不够
暂无
暂无
人的精力是有限的,投入到自己喜欢或者为生的事情上,其他的事情,专业的事情交给专业的人
| 命令 | 描述 |
|---|---|
next |
单步执行 |
step |
单步进入 |
finish or fin |
跳出当前函数 |
continue |
继续执行到下一个断点 |
until |
继续运行到指定位置 |
finish: Continue running until just after function in the selected stack frame returns. Print the returned value (if any).gdb --args 正常程序+参数set args 参数f 打印当前文件 ,便于打断点info breakpoints 查看已经的断点del 3 删除NUM=3的第三个断点给某个结构体内的函数全部上break
1 | rbreak file.cpp:.*TemplateClass.* |
show argsinfo localsp result=20btinfo threadsthread 2thread apply all bt1 | list # 代码,需要-g |
1 | gef➤ p -raw-values off -- this->TotalCycles |
p **matrix@3@3p *matrix@3p *(int *)matrix@3p *(int (*)[3])matrix1 | (gdb) p array[60]@10 |
可以看到打印了array数组第60~69个元素的值。如果要打印从数组开头连续元素的值,也可使用这个命令:“p *array@num”:
1 | (gdb) p *array@10 |
格式:x /nfu <addr>
说明:
x 是 examine 的缩写。n 表示要显示的内存单元的个数。f 表示显示方式,可取如下值:| 显示方式 | 描述 |
|---|---|
x |
按十六进制格式显示变量。 |
d |
按十进制格式显示变量。 |
u |
按无符号整型格式显示变量。 |
o |
按八进制格式显示变量。 |
t |
按二进制格式显示变量。 |
a |
按十六进制格式显示变量。 |
i |
指令地址格式。 |
c |
按字符格式显示变量。 |
f |
按浮点数格式显示变量。 |
u 表示一个地址单元的长度,长度类型如下:| 类型 | 描述 |
|---|---|
b |
单字节 |
h |
双字节 |
w |
四字节 |
g |
八字节 |
example:
1 | (gdb) x 0x8049948 |
1 | layout split |
段错误定位
1 | # ulimit -c 显示核心转储文件大小的最大值 |
1 | gdb SLIC core.199048 |
1 | (gdb) bt |
会打印详细的信息


需要GDB10以上
1 | bash -c "$(curl -fsSL http://gef.blah.cat/sh)" |
注意:gdbtui 与 gef 不太兼容
基本是基于Linux的时间片轮转机制。A process/thread is woken up by inserting it in the queue of processes/threads to be scheduled.
CFS(Completely Fair Scheduler)是一种用于 Linux 操作系统的调度算法,它旨在实现对 CPU 时间的公平分配。CFS 是 Linux 内核中默认的调度器,自 Linux 2.6.23 版本以来就成为了标准调度器。
CFS 调度算法的主要目标是确保各个任务在相同的时间片内能够获得公平的CPU时间,不会因为优先级等因素而造成资源争夺不均。以下是 CFS 调度算法的一些关键特点和原则:
虚拟化时钟: CFS 使用了一种称为虚拟化时钟(virtual runtime)的概念,而不是传统的时间片。每个任务都有一个虚拟运行时间,调度器根据虚拟运行时间来决定哪个任务应该被调度。
权重: CFS 引入了权重的概念,用于调整不同任务的相对优先级。较高权重的任务会在相同时间间隔内获得更多的虚拟运行时间,从而实现按比例分配CPU资源。
累积虚拟运行时间: 调度器会根据每个任务的权重和已累积的虚拟运行时间,计算出每个任务的应有的虚拟运行时间片。任务在使用完它的时间片后,会根据虚拟运行时间进行重新排队。
红黑树结构: CFS 使用红黑树来管理任务队列,这种数据结构使得在插入、删除和搜索任务时的时间复杂度保持在对数级别。
除了 CFS,Linux 内核还有其他调度算法,如:
实时调度器(Real-Time Scheduler): 用于实时任务,提供硬实时和软实时的调度策略,确保实时任务在指定的时间内执行完成。
O(1) 调度器(O(1) Scheduler): 是 Linux 2.4 内核中使用的调度器,它的时间复杂度为常数级别。然而,随着多核系统的出现,O(1) 调度器在多核环境下的性能表现受到限制,因此被 CFS 替代。
这些调度算法在不同的场景和需求下,对于多任务操作系统的调度提供了不同的方法和策略。选择适合的调度算法可以根据系统的应用和性能要求来进行。
在高强度竞争之后,有些进程陷入长期sleep,并且在核空闲的时候,也不再重新运行?为什么?
原因可能是程序逻辑阻塞了,或者在等待IO
首先 计算机对一个进程是如何判断sleep的,是某时间内的计算占比低于某个阈值吗?
htop s 可以查看kernel 是不是阻塞, l 可以查看是不是读写同一个文件导致阻塞了。
Sleep的瓶颈在哪里
sleep for what, waiting for what?
strace -p PID 可以显示一些信息
1 | $ strace -p 4005042 |
It seems this is a subprocess repeating sleep leading to all other process to wait in the synchronization.
Use gdb -p PID to attach the process to locate the infinite loop (need Debug Symbols).
futex 是 Linux 下的一个系统调用,用于实现用户空间线程间的同步和通信。让我们逐个解释这个系统调用中的每个参数的含义:
0x7fffe52de1b8: 这是一个指向内存地址的指针(或称为地址),通常是用于表示需要同步的资源或变量的地址。在这里,它表示需要等待的共享资源或变量的地址。FUTEX_WAIT: 这是一个指定 futex 要执行的操作的标志。FUTEX_WAIT 表示线程正在等待 futex 的值发生变化,即等待条件满足。当某个线程执行 FUTEX_WAIT 操作时,如果 futex 的值与预期不符,则该线程将被置于休眠状态,直到 futex 的值发生变化或超时。2: 这是一个表示期望的 futex 值的参数。当调用 FUTEX_WAIT 时,线程将检查 futex 的当前值是否等于此参数指定的值。如果不等于,则线程将休眠等待。NULL: 这是一个指向 timespec 结构的指针,用于设置超时。这里为 NULL 表示调用没有设置超时,即线程将一直等待,直到 futex 的值发生变化。总的来说,futex(0x7fffe52de1b8, FUTEX_WAIT, 2, NULL) 表示线程正在等待位于内存地址 0x7fffe52de1b8 的 futex 变量的值等于 2。如果 futex 的值不是 2,则线程将一直等待直到 futex 的值变为 2 或者超时。这样的同步机制在多线程编程中用于等待条件满足后再执行某些操作,从而避免资源竞争和提高程序的并发性能。
这是一个系统调用 nanosleep 的输出,通常用于让线程休眠一段时间。让我们逐个解释这个系统调用的含义:
1 | nanosleep({tv_sec=0, tv_nsec=2000000}, 0x7fffe5368bc0) = 0 |
nanosleep: 这是 Linux 下的一个系统调用,用于使线程休眠一段指定的时间。
{tv_sec=0, tv_nsec=2000000}: 这是传递给 nanosleep 的第一个参数,是一个指向 timespec 结构的指针。timespec 结构用于表示时间间隔,包括秒(tv_sec)和纳秒(tv_nsec)。
在这里,tv_sec=0 表示秒数为 0,tv_nsec=2000000 表示纳秒数为 2000000。因此,这个 nanosleep 调用将会使线程休眠 2 毫秒(1 秒 = 1000000000 纳秒,所以 2000000 纳秒就是 2 毫秒)。
0x7fffe5368bc0: 这是传递给 nanosleep 的第二个参数,表示一个 timespec 结构的指针。这个参数用于存放未休眠完成的剩余时间,如果 nanosleep 被中断(例如收到信号),它将在这个指针中返回剩余的时间。在这个输出中,剩余时间被存储在内存地址 0x7fffe5368bc0 处。
= 0: 这是 nanosleep 的返回值,表示成功完成。返回值为 0 表示 nanosleep 成功休眠了指定的时间。
综上所述,这个输出表示线程成功休眠了 2 毫秒。
程序直接执行正常,zsim模拟直接sleep?
1 | $ strace -p 303359 |
这是一个 Open MPI(Message Passing Interface)的启动命令,用于启动一个 MPI 程序,并配置一些运行时参数。让我们逐个解释这个命令中的每个选项和参数的含义:
1 | orted --hnp --set-sid --report-uri 11 --singleton-died-pipe 12 -mca state_novm_select 1 -mca ess hnp -mca pmix ^s1,s2,cray,isolated |
部分参数含义如下:
orted: 这是 Open MPI 的一个工具,用于启动和管理 MPI 进程。-mca state_novm_select 1: 这是一个 MCA(Modular Component Architecture)选项,用于指定某个模块或组件的参数设置。在这里,state_novm_select 设置为 1,可能是指定某个组件或模块在运行时的选项。-mca pmix ^s1,s2,cray,isolated: 这是另一个 MCA 选项,用于配置 PMIx(Process Management Interface for Exascale)的相关设置。^s1,s2,cray,isolated 表示排除 s1、s2、cray 和 isolated 这些模块,可能是禁用某些特定的组件或功能。| pid | strace output | explanation |
|---|---|---|
| 303451 | restart_syscall(<… resuming interrupted read …> | |
| 303452 | futex(0xabba001ec8, FUTEX_WAIT, 2, NULL | |
| 303642 | epoll_wait(18, … | epoll_wait 系统调用,用于等待文件描述符18上的事件 |
| 303643 | select(50, [48 49], NULL, NULL, {tv_sec=2, tv_usec=0} | 如下 |
| 303644 | select(53, [51 52], NULL, NULL, {tv_sec=2167, tv_usec=944465} |
restart_syscall表示系统调用被中断后重新启动的过程。它通常出现在系统调用的执行过程中,当某个信号(例如 SIGSTOP 或 SIGCONT)中断了系统调用的执行,然后系统调用在信号处理完成后被重新启动。The only way to “wake it up” is to arrange for the condition to be met. 用户是无法更改的状态的。
1 | # find pid , state S+ meaning sleep |
暂无
暂无
上面回答部分来自ChatGPT-3.5,没有进行正确性的交叉校验。
无