比特币
展开阅读
展开阅读
将十六进制私钥转为WIF格式私钥并使用importprivkey导入bitcoin core
import hashlib
def str_cat(pk0):
pk1 = '80' + pk0
pk2 = hashlib.sha256(bytes.fromhex(pk1))
pk3 = hashlib.sha256(pk2.digest())
checksum = pk3.digest().hex()[0:8]
address_hex = pk1 + str(checksum)
return address_hex
def base58(address_hex):
alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
b58_string = ''
# Get the number of leading zeros
leading_zeros = len(address_hex) - len(address_hex.lstrip('0'))
# Convert hex to decimal
address_int = int(address_hex, 16)
# Append digits to the start of string
while address_int > 0:
digit = address_int % 58
digit_char = alphabet[digit]
b58_string = digit_char + b58_string
address_int //= 58
# Add ‘1’ for each 2 leading zeros
ones = leading_zeros // 2
for one in range(ones):
b58_string = '1' + b58_string
return b58_string
def hex2WIF(pk):
return base58(str_cat(pk))
bitcoin.conf示例
# reduce memory cost
dbcache=20
blocksonly=1
maxorphantx=10
maxmempool=100
maxsigcachesize=4
maxconnections=4
rpcthreads=1
# boost syncing
par=7
banscore=10
listen=0
展开阅读
启动
sudo phddns enable
展开阅读
M-x xterm-mouse-mode 在命令行中使用鼠标
C-x o 切换至其他窗口
C-x C-b list all buffers
然后
1 C-x o进入清单。2 可以上下移动。
3 在某清单的行上按k或d,清单前面显示D代表该行被标记删除,按u去掉该标记,也可以按s进行存盘标记,按下%立马变为只读标记.
4 按x执行。
C-x r k 剪切一个矩形
C-x r t 插入矩形相同内容
C-q C-j为换行符可替换
C-x C-f "find"文件, 即在缓冲区打开/新建一个文件
C-x C-s 保存文件
C-x C-w 使用其他文件名另存为文件
C-x C-v 关闭当前缓冲区文件并打开新文件
C-x i 在当前光标处插入文件
C-x b 新建/切换缓冲区
C-x C-b 显示缓冲区列表
C-x k 关闭当前缓冲区
C-z 挂起emacs
C-x C-c 关闭emacs
光标移动基本快捷键(Basic Movement)
C-f 后一个字符
C-b 前一个字符
C-p 上一行
C-n 下一行
M-f 后一个单词
M-b 前一个单词
C-a 行首
C-e 行尾
C-v 向下翻一页
M-v 向上翻一页
M-< 到文件开头
M-> 到文件末尾
编辑(Editint)
M-n 重复执行后一个命令n次
C-u 重复执行后一个命令4次
C-u n 重复执行后一个命令n次
C-d 删除(delete)后一个字符
M-d 删除后一个单词
Del 删除前一个字符
M-Del 删除前一个单词
C-k 移除(kill)一行
C-Space 设置开始标记 (例如标记区域)
C-@ 功能同上, 用于C-Space被操作系统拦截的情况
C-w 移除(kill)标记区域的内容
M-w 复制标记区域的内容
C-y 召回(yank)复制/移除的区域/行
M-y 召回更早的内容 (在kill缓冲区内循环)
C-x C-x 交换光标和标记
C-t 交换两个字符的位置
M-t 交换两个单词的位置
C-x C-t 交换两行的位置
M-u 使从光标位置到单词结尾处的字母变成大写
M-l 与M-u相反
M-c 使从光标位置开始的单词的首字母变为大写
重要快捷键(Important)
C-g 停止当前运行/输入的命令
C-x u 撤销前一个命令
M-x revert-buffer RETURN (照着这个输入)撤销上次存盘后所有改动
M-x recover-file RETURN 从自动存盘文件恢复
M-x recover-session RETURN 如果你编辑了几个文件, 用这个恢复
在线帮助(Online-Help)
C-h c 显示快捷键绑定的命令
C-h k 显示快捷键绑定的命令和它的作用
C-h l 显示最后100个键入的内容
C-h w 显示命令被绑定到哪些快捷键上
C-h f 显示函数的功能
C-h v 显示变量的含义和值
C-h b 显示当前缓冲区所有可用的快捷键
C-h t 打开emacs教程
C-h i 打开info阅读器
C-h C-f 显示emacs FAQ
C-h p 显示本机Elisp包的信息
搜索/替换(Seach/Replace)
C-s 向后搜索
C-r 向前搜索
C-g 回到搜索开始前的位置(如果你仍然在搜索模式中)
M-% 询问并替换(query replace)
Space或y 替换当前匹配
Del或n 不要替换当前匹配
. 仅仅替换当前匹配并退出(替换)
, 替换并暂停(按Space或y继续)
! 替换以下所有匹配
^ 回到上一个匹配位置
RETURN或q 退出替换
使用正则表达式(Regular expression)搜索/替换
可在正则表达式中使用的符号:
^ 行首
$ 行尾
. 单个字符
.* 任意多个(包括没有)字符
< 单词开头
> 单词结尾
[] 括号中的任意一个字符(例如[a-z]表示所有的小写字母)
M C-s RETURN 使用正则表达式向后搜索
M C-r RETURN 使用正则表达式向前搜索
C-s 增量搜索
C-s 重复增量搜索
C-r 向前增量搜索
C-r 重复向前增量搜索
M-x query-replace-regexp 使用正则表达式搜索并替换
窗口命令(Window Commands)
C-x 2 水平分割窗格
C-x 3 垂直分割窗格
C-x o 切换至其他窗格
C-x 0 关闭窗格
C-x 1 关闭除了光标所在窗格外所有窗格
C-x ^ 扩大窗格
M-x shrink-window 缩小窗格
M C-v 滚动其他窗格内容
C-x 4 f 在其他窗格中打开文件
C-x 4 0 关闭当前缓冲区和窗格
C-x 5 2 新建窗口(frame)
C-x 5 f 在新窗口中打开文件
C-x 5 o 切换至其他窗口
C-x 5 0 关闭当前窗口
书签命令(Bookmark commands)
C-x r m 在光标当前位置创建书签
C-x r b 转到书签
M-x bookmark-rename 重命名书签
M-x bookmark-delete 删除书签
M-x bookmark-save 保存书签
C-x r l 列出书签清单
d 标记等待删除
Del 取消删除标记
x 删除被标记的书签
r 重命名
s 保存列表内所有书签
f 转到当前书签指向的位置
m 标记在多窗口中打开
v 显示被标记的书签(或者光标当前位置的书签)
t 切换是否显示路径列表
w 显示当前文件路径
q 退出书签列表
M-x bookmark-write 将所有书签导出至指定文件
M-x bookmark-load 从指定文件导入书签
Shell
M-x shell 打开shell模式
C-c C-c 类似unix里的C-c(停止正在运行的程序)
C-d 删除光标后一个字符
C-c C-d 发送EOF
C-c C-z 挂起程序(unix下的C-z)
M-p 显示前一条命令
M-n 显示后一条命令
DIRectory EDitor (dired)
C-x d 打开dired
C(大写C) 复制
d 标记等待删除
D 立即删除
e或f 打开文件或目录
g 刷新当前目录
G 改变文件所属组(chgrp)
k 从屏幕上的列表里删除一行(不是真的删除)
m 用*标记
n 光标移动到下一行
o 在另一个窗格打开文件并移动光标
C-o 在另一个窗格打开文件但不移动光标
P 打印文件
q 退出dired
Q 在标记的文件中替换
R 重命名文件
u 移除标记
v 显示文件内容
x 删除有D标记的文件
Z 压缩/解压缩文件
M-Del 移除标记(默认为所有类型的标记)
~ 标记备份文件(文件名有~的文件)等待删除
# 标记自动保存文件(文件名形如# name# )等待删除
* / 用* 标记所有文件夹(用C-u * /n移除标记)
= 将当前文件和标记文件(使用C-@标记而不是dired的m标记)比较
M-= 将当前文件和它的备份比较
! 对当前文件应用shell命令
M-} 移动光标至下一个用*或D标记的文件
M-{ 移动光标至上一个用*或D标记的文件
% d 使用正则表达式标记文件等待删除
% m 使用正则表达式标记文件为*
+ 新建文件夹
> 移动光标至后一个文件夹
< 移动光标至前一个文件夹
s 切换排序模式(按文件名/日期)
或许把这个命令归入这一类也很合适:
M-x speedbar 打开一个独立的目录显示窗口
Telnet
M-x telnet 打开telnet模式
C-d 删除后一个字符或发送EOF
C-c C-c 停止正在运行的程序(和unix下的C-c类似)
C-c C-d 发送EOF
C-c C-o 清除最后一个命令的输出
C-c C-z 挂起正在运行的命令
C-c C-u 移除前一行
M-p 显示前一条命令
Text
只能在text模式里使用
M-s 使当前行居中
M-S 使当前段落居中
M-x center-region 使被选中的区域居中
宏命令(Macro-commands)
C-x ( 开始定义宏
C-x ) 结束定义宏
C-x e 运行最近定义的宏
M-n C-x e 运行最近定义的宏n次
M-x name-last-kbd-macro 给最近定义的宏命名(用来保存)
M-x insert-kbd-macro 将已命名的宏保存到文件
M-x load-file 载入宏
编程(Programming)
M C- 自动缩进光标和标记间的区域
M-m 移动光标到行首第一个(非空格)字符
M-^ 将当前行接到上一行末尾处
M-; 添加缩进并格式化的注释
C, C++和Java模式
M-a 移动光标到声明的开始处
M-e 移动光标到声明的结尾处
M C-a 移动光标到函数的开始处
M C-e 移动光标到函数的结尾处
C-c RETURN 将光标移动到函数的开始处并标记到结尾处
C-c C-q 根据缩进风格缩进整个函数
C-c C-a 切换自动换行功能
C-c C-d 一次性删除光标后的一串空格(greedy delete)
为了实现下面的一些技术, 你需要在保存源代码的目录里运行"etags
.c .h *.cpp"(或者源代码的其他的扩展名)
M-.(点) 搜索标签
M-x tags-search ENTER 在所有标签里搜索(使用正则表达式)
M-,(逗号) 在tags-search里跳至下一个匹配处
M-x tags-query-replace 在设置过标签的所有文件里替换文本
GDB(调试器)
M-x gdb 在另一个的窗格中打开gdb
版本控制(Version Control)
C-x v d 显示当前目录下所有注册过的文件(show all registered files in this dir)
C-x v = 比较不同版本间的差异(show diff between versions)
C-x v u 移除上次提交之后的更改(remove all changes since last checkin)
C-x v ~ 在不同窗格中显示某个版本(show certain version in different window)
C-x v l 打印日志(print log)
C-x v i 标记文件等待添加版本控制(mark file for version control add)
C-x v h 给文件添加版本控制文件头(insert version control header into file)
C-x v r 获取命名过的快照(check out named snapshot)
C-x v s 创建命名的快照(create named snapshot)
C-x v a 创建gnu风格的更改日志(create changelog file in gnu-style)
展开阅读
git clone https://github.com/igraph/igraph
cd igraph
./bootstrap.sh
./configure --prefix=$MY_LOCAL
make
make install
export CPATH="$MY_LOCAL/include:$CPATH"
export LD_LIBRARY_PATH="$MY_LOCAL/lib:$LD_LIBRARY_PATH"
以下代码创建了一个6个节点的空图,添加了8条边,又添加了2个节点和4条边
%:include <igraph/igraph.h>
int main(void)
{
igraph_t graph;
igraph_vector_t edges;
igraph_real_t data[] = {0,1,0,2,0,5,1,2,1,4,2,4,1,3,3,5};
igraph_vector_view(&edges, data, sizeof(data)/sizeof(double));
igraph_empty(&graph, 6, IGRAPH_UNDIRECTED);
igraph_add_edges(&graph, &edges, 0);
igraph_add_vertices(&graph, 2, 0);
igraph_add_edge(&graph, 6,4);
igraph_add_edge(&graph, 6,5);
igraph_add_edge(&graph, 7,5);
igraph_add_edge(&graph, 7,3);
printf("vertices: %d, edges: %d\n", (int)igraph_vcount(&graph), (int)igraph_ecount(&graph));
igraph_destroy(&graph);
return 0;
}
使用如下命令编译
gcc test.c -ligraph
展开阅读
batch_size
与learning_rate
成正比
展开阅读
; (cs) ~ code (ds) ~ data (ss) ~ stack
assume cs:code, ds:data, ss:stack
; 编译完后:
; ds:0 ~ ds+10h:0存放程序段前缀(PSP)
; cs:ip初始化为地址标号main
; data段从ds+10h:0开始,注意此时ds不指向data段
data segment ; data是一个地址标号
; db: define byte dw: define word dd: define double word
str db 'Hello World$' ; str是一个数据标号
; ((cs)<<4 + 0) ~ ((cs)<<4 + 11) = 'Hello World$'
arr dw 0123h, 0234h, 0345h, 0456h
; ((cs)<<4 + 12) = 0123h
; ((cs)<<4 + 14) = 0234h
; ((cs)<<4 + 16) = 0345h
; ((cs)<<4 + 18) = 0456h
; 数据的直接定址表
addr dd str, arr
; offset操作符取标号的偏移地址,seg操作符取标号的段地址
; 等价于addr dw offset str, seg a, offset b, seg b
table dw main, sub ; 子程序的直接定址表
data ends
stack segment
; 初始值为0的容量为256个字单元的栈段,初始栈顶(sp)=100h
dw 256 dup (0)
stack ends
code segment
main:
;;; 初始化栈段
mov ax, stack
mov ss, ax
mov sp, 100h
; 栈操作
push ax ; (sp)=(sp)-2 ((ss)<<4 + (sp)) = (ax)
pop bx ; (ax) = ((ss)<<4 + (sp)) (sp)=(sp)+2
pushf ; push flags
popf ; pop flags 可以用于修改标志寄存器
;;; 初始化数据段
mov ax, data
mov ds, ax
mov bx, 0
;;; 使用assume和以上初始化代码设置好数据段后可以使用数据标号访问数据,不能使用地址标号访问另一个段的数据
mov al, str[si] ; mov al, ds:[si]
add arr, ax ; add ds:[12], ax 代表单元arr可指示单元大小
;;; 常见运算
add ax, 1 ; (ax) += 1
add al, bl
adc ah, bh ; 带进位加法,这两条指令等价于add ax,bx
sub ax, 1 ; (ax) -= 1
sub al, bl
sbb ah, bh ; 带借位减法,这两条指令等价于sub ax,bx
and ax, 011b ; (ax) &= 011b
or ax, 011b ; (ax) |= 011b
inc ax ; (ax) = (ax) + 1
dec ax ; (ax) = (ax) - 1
div byte ptr [bx] ; (al) = (ax)//((ds)<<4 + (bx)) (ah) = (ax)%((ds)<<4 + (bx))
div word ptr [bx] ; (ax) = ((dx)*10000h + (ax))//((ds)<<4 + (bx)) (ax) = ((dx)*10000h + (ax))%((ds)<<4 + (bx))
mul byte ptr [bx] ; (ax) *= ((ds)<<4 + (bx))
mul word ptr [bx] ; (dx)*10000h + (ax) = (ax) * ((ds)<<4 + (bx))
; 逻辑移位
mov al,01010001b
mov cl,3 ; 必须用cl设置移位位数
shr al,cl ; 右移,左移是shl
;;; 内存访问使用ds和bx
mov ax, [0ffffh] ; 警告:含义不明(ax) = ffffh 首位为f时必须加0
mov al, ds:[0] ; (al) = ((ds)<<4 + 0) 直接寻址
mov al, [bx] ; 同上
mov al, ds:[bx] ; 同上
mov al, [bp] ; (al) = ((ss)<<4 + (bp)) 栈段寻址用bp
mov [bx], al ; ((ds)<<4 + (bx)) = (al) 寄存器间接寻址
mov [bx], ax ; ((ds)<<4 + (bx)) = (al) ((ds)<<4 + (bx) + 1) = (ah) 小心高位覆盖
mov ax, [2+bx] ; (ax) = ((ds)<<4 + (bx) + 2) 寄存器相对寻址(结构体[bx].idata,数组idata[si])
mov ax, 2[bx] ; 同上
mov ax, [bx].2 ; 同上
mov ax, [bx+si] ; (ax) = ((ds)<<4 + (bx) + (si)) 基址变址寻址(二维数组[bx][si])
mov ax, [bx][si] ; 同上
mov ax, [bx+si+2] ; (ax) = ((ds)<<4 + (bx) + (si) + 2) 相对基址变址寻址(表格中的数组[bx].idata[si],二维数组idata[bx][si]
mov ax, 2[bx][si] ; 同上
mov ax, [bx].2[si] ; 同上
mov ax, [bx][si].2 ; 同上
;;; 标号偏移地址可进行立即数运算
mov ax, offset main - offset data ; main, data都是地址标号
;;; 串传送指令
cld ; (df) = 0 向右传送, clear direction
std ; (df) = 1 向左传送, set direction
mov cx, 8 ; 根据(df)从(ds)段复制8个字节到(es)段,(df)=0时(si),(di)++,(df)=1时--
rep movsb ; s:movsb, loop s
mov cx, 8 ; 根据(df)从(ds)段复制8个字到(es)段,(df)=0时(si),(di)++,(df)=1时--
rep movsw ; s:movsw, loop s
;;; 循环
mov cx, 10 ; 使用cx设定循环次数
s: ; 循环体
inc ax
loop s ; (cx) -= 1 if (cx) == 0: then (cs) = seg s (ip) = offset s
;;; 无条件跳转jmp, 有条件跳转jcxz(jmp if cx is zero)
jmp short main ; 8位转移 (ip) += main - (ip_next)
jmp near main ; 16位段内转移
jmp far main ; 段间转移,指令机器码包含段地址和偏移地址 (cs)=seg main (ip)=offset main
jmp ax ; (ip) = (ax)
jmp word ptr [bx] ; (ip) = ((ds)<<4 + (bx))
jmp dword ptr [bx] ; (ip) = ((ds)<<4 + (bx)) (cs) = ((ds)<<4 + (bx) + 2)
jcxz main ; if (cx)==0: then jmp short main
cmp ax, bx ; 计算(ax)-(bx),比较结果用(zf)和(cf)表示
; 以下跳转指令检测无符号数cmp指令比较结果
je main ; (ax)==(bx)
jne main ; (ax)!=(bx)
jb main ; (ax)<(bx)
jnb main ; (ax)>=(bx)
ja main ; (ax)>(bx)
jna main ; (ax)<=(bx)
;;; 调用子程序call
call sub ; push IP, jmp near ptr sub
; call far ptr sub ; push CS, push IP, jmp far ptr sub
call ax ; push IP, jmp ax
call word ptr [bx] ; push IP, jmp word ptr [bx]
call dword ptr [bx] ; push CS, push IP, jmp dword [bx]
;;; 设置中断向量
mov ax, 0 ; 中断向量表的段为0
mov es, ax
; 字单元 0:n*4 保存n号中断向量偏移地址
mov word ptr es:[0*4], offset sub
; 字单元 0:n*4 + 2 保存n号中断向量段地址
mov word ptr es:[0*4+2], seg sub
;;; 可屏蔽外中断
sti ; (if)=1
cli ; (if)=0
;;; 从CMOS RAM时钟信息中读取当前分钟
mov al, 2 ; 选中2号CMOS RAM
out 70h, al ; 在CMOS端口写入2
in al, 71h ; 从CMOS端口读出数据(BCD码),0号对应秒,2号对应分,4号对应时,7号对应日,8号对应月,9号对应年
;;; 打印字符串
mov ax,data
mov ds,ax ; 设置数据段
mov dx,0 ; 设置打印起始位置偏移地址
mov ah,9 ; 参数9对应打印的中断子程序
int 21h ; 触发中断,打印到'$'为止
mov ah, 4ch ; 参数4ch对应程序返回的中断子程序
mov al, 0 ; 返回值
int 21h ; 引发21h号中断,返回dos
; 子程序保存恢复现场, 返回ret ref
sub:
push cx ; 保存寄存器,入栈
nop ; 1B的指令,什么也不干
pop cx ; 恢复寄存器,出栈
ret ; pop IP
; retf ; pop IP, pop CS
; iret ; 中断程序返回pop IP, pop CS, popf
code ends ; end segment
end main ; end main表示程序入口为main段
打开dosbox,输入以下命令
mount c E:\learn_asm
c:
masm filename;
link filename;
debug filename.exe
? ; 显示帮助信息
r ; 显示寄存器内容
r ax ; 修改寄存器ax内容
d ds:0 8 ; 从((ds)<<4+0)开始打印内存内容,打印到8
e ds:0 12 23 ; 从((ds)<<4+0)开始修改内存内容,输入12 23(16进制)
t ; 运行一步
p ; 运行一步(不进入)
g cs:0 8 ; 从代码段((cs)<<4+0)开始运行,运行到8
h ax bx ; 输出16进制加减((ax)+(bx))和((ax)-(bx))
u cs:0 8 ; 反编译,从((cs)<<4+0)到8
a cs:0 ; 从((cs)<<4 + 0) 开始输入汇编指令,并写入内存
q ; 退出
; 标志寄存器表示
of(OV, NV)
sf(NG, PL)
zf(ZR, NZ)
pf(PE, PO)
cf(CY, NC)
df(DN, UP)
寄存器(reg):ax,bx,cx,dx,ah,al,bh,hl,ch,cl,dh,dl,sp,bp,si,di
段寄存器(sreg):ds,ss,cs,es
标志寄存器(flags):zf(zero flag), pf(parity flag), sf(sign flag), cf(carry flag无符号数), of(overflow flag有符号数), df(direction flag), 单步中断(类型码为1)标志tf(trap flag), 可屏蔽外中断使能标志if(interrupt enable flag)
ds:数据段寄存器; ss:栈段寄存器;es,ds和ss只能用通用寄存器赋值; cs:代码段寄存器,只能用jmp修改; ip:代码偏移地址寄存器,不能赋值,只能用loop修改; sp:栈顶偏移地址寄存器,可以用立即数赋值; cx:loop指令的计数器; bx,si,di:数据段偏移地址; bp:栈段偏移地址; si,di:偏移地址增量
新建文件upper_lower.asm
,内容如下
include \masm32\include\masm32rt.inc
assume cs:codesg,ds:datasg
datasg segment
a db 'BaSiC',10,0
b db 'iNfOrMaTiOn',10,0
datasg ends
codesg segment
start:
mov ebx, offset a ; first string
mov ecx,5
s:
mov al,[ebx]
and al,11011111b ; lower to upper
mov [ebx],al
inc ebx
loop s
mov ebx, offset b ; second string
mov ecx,11
s0:
mov al,[ebx]
or al,00100000b ; upper to lower
mov [ebx],al
inc ebx
loop s0
call main
exit
main proc
cls
print offset a
print offset b
ret
main endp
codesg ends
end start
在www.masm32.com上下载编译器并安装,新建文件makeit.bat
,内容如下:
@echo off
if exist "upper_lower.obj" del "upper_lower.obj"
if exist "upper_lower.exe" del "upper_lower.exe"
\masm32\bin\ml /c /coff "upper_lower.asm"
if errorlevel 1 goto errasm
\masm32\bin\PoLink /SUBSYSTEM:CONSOLE "upper_lower.obj"
if errorlevel 1 goto errlink
dir "upper_lower.*"
goto TheEnd
:errlink
echo _
echo Link error
goto TheEnd
:errasm
echo _
echo Assembly Error
goto TheEnd
:TheEnd
pause
双击文件即可编译,在工作目录下Ctrl+L,输入cmd,输入upper_lower回车即可看到运行结果
gcc -Wa,-adhln -g source_code.c > assembly_list.lst
参数说明:
-g: 生成debug信息
-Wa,option: 把`option`作为参数传给汇编器
-adhln:
a: 生成列表
d: 忽略debug指令
n: 忽略列表处理
h: 包含高级语言代码include high-level source
l: 包含汇编代码
展开阅读
申请gpu分区的5G内存资源并打开bash
srun --partition=gpu --mem=5G --pty bash
编写任务脚本submit.sh
#!/bin/bash
#
#SBATCH --job-name=eit
#SBATCH --output=log.txt
#
#SBATCH --ntasks=1
#SBATCH --time=30:00
#SBATCH --partition=gpu
#SBATCH --mem=15G
#SBATCH --mem-per-gpu=10G
#SBATCH --gres=gpu:1
module load gcc/8.1.0
module load cmake/3.13.4
module load python/3.7.1
export C_INCLUDE_PATH=/usr/local/cuda-10.0/include
export CPLUS_INCLUDE_PATH=/usr/local/cuda-10.0/include
export LIBRARY_PATH=/usr/local/cuda-10.0/lib64
cd EIT/EIT_train/
srun python train.py
提交任务
sbatch submit.sh
查看我的任务
squeue --user=$MY_NAME
取消我的任务
scancel -v $JOB_ID
查看任务详细信息
scontrol show job $JOB_ID
为了防止任务的标准输出流长期不刷新,可以使用以下命令
stdbuf -o0 -e0 command
print("hello",flush=True)
展开阅读
设置A4纸,字体大小为12pt,report格式(分章节,换页留白)
\documentclass[a4paper, 12pt]{report}
使用DeclareMathOperator, newtheorem, proof
\usepackage{amsmath, amsthm}
\newtheorem{theorem}{Theorem}[chapter]
\newtheorem{corollary}{Corollary}[theorem]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{definition}{Definition}[chapter]
常用字体:花体mathscr, 加粗字体bm, 空心字体mathbb, 半空心字体mathbbm, 向量正粗字体mathbf,纽约时报体mathfrak,计科函数体mathtt,正圆体mathsf
\usepackage{mathrsfs, bm, amsfonts, amssymb, bbm}
常用package
\usepackage{color, xcolor} % 使用颜色
\usepackage[utf8]{inputenc} % 使用utf8编码
\usepackage{hyperref} % 使用\href, \url
\usepackage{enumitem} % 使用\enumerate
\usepackage{float} % 使用[H]标签,让图片和文字一起浮动
\usepackage{caption} % 使用\caption*
\usepackage[createtips]{fancytooltips} %在hyperref上悬浮显示预览内容
使用beamer
\documentclass[10pt,aspectratio=43,mathserif,handout]{beamer} % handout会去掉所有动态展示
\usepackage{multimedia, animate, algpseudocode} % beamer内置定理块
\usetheme{Berlin}
\title{Title}
\subtitle{\fontsize{9pt}{14pt}\textbf{subtitle}}
\author{Shitong CHAI}
\institute{ISIMA}
\date{\today}
\AtBeginSection[]
{
\begin{frame}<beamer>
\frametitle{\textbf{table of contents}}
\tableofcontents[currentsection]
\end{frame}
}
\beamerdefaultoverlayspecification{<+->}
\begin{document}
\frame{\titlepage}
%\section{Table of contents}
%\begin{frame}{table of contents}
%\tableofcontents
%\end{frame}
\section{a section}
\begin{frame}[fragile,allowframebreaks]{incGM+} % 如果有lstlisting则必须添加fragile
\begin{algorithmic}[1]
\end{algorithmic}
\begin{lstlisting}[language=python, frame=single]
\end{lstlisting}
\end{frame}
\bibliography{bibtex}{}
\bibliographystyle{plain}
\end{document}
使用tikz
\usepackage{tikz}
\begin{document}
\begin{equation}
\begin{tikzpicture}
\node[shape=circle,draw=black] (A) at (0,0) {};
\node[shape=circle,draw=black] (B) at (0,1) {};
\node[shape=circle,draw=black] (C) at (1,0) {};
\node[shape=circle,draw=black] (D) at (1,1) {};
\path [-] (A) edge node {} (B);
\path [-] (B) edge node {} (C);
\path [-] (A) edge node {} (C);
\path [-] (B) edge node {} (D);
\end{tikzpicture}
\tag{$G$}
\end{equation}
\end{document}
使用lstlisting, lstset
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
columns=fullflexible,
breaklines=true,
}
% SPARQL:
% \lstset{language=SQL,morekeywords={PREFIX,java,rdf,rdfs,url}}
\begin{docuement}
\begin{lstlisting}[language=python, frame=single]
\end{lstlisting}
\end{document}
使用newtcblisting
\usepackage[most]{tcolorbox}
\newtcblisting{commandshell}{colback=white,colupper=black,colframe=black!75!black,
listing only,listing options={language=sh, breaklines=true,aboveskip=0pt, belowskip=0pt},
every listing line={\small\ttfamily\bfseries{[root@shchai]\$} }}
\newtcblisting{sqlshell}{colback=white,colupper=black,colframe=black!75!black,
listing only,listing options={language=SQL, breaklines=true, aboveskip=0pt, belowskip=0pt},
every listing line={\small\ttfamily\bfseries{SQL> }}}
\newtcblisting{messageshell}{colback=white,colupper=black,colframe=black!75!black,
listing only,listing options={language={}, basicstyle=\small\ttfamily, breaklines=true,aboveskip=0pt, belowskip=0pt},
every listing line={}}
\begin{docuement}
\begin{commandshell}
\end{commandshell}
\end{document}
使用algorithm, algorithmic
\usepackage[chapter]{algorithm}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\begin{document}
\begin{algorithm}
\caption{DBSCAN}\label{euclid}
\begin{algorithmic}[1]
\Require Given parameter $\varepsilon,\mathcal{M}$ and $N_\varepsilon(i),i=1,2,\cdots,N$.
\Ensure $M=\{m_i\}_{i=1}^N$
\State $k=1;m_i=0,i=1,2,\cdots,N;$
\State $I=\{1,2,\cdots,N\}$;
\While{$I\neq \emptyset$}
\State Get an element $i$ from $I$, and let $I:=I\setminus\{i\}$;
\If{$m_i=0$}\Comment{If point i has not been visited.}
\State Initialize $T:=N_\varepsilon(i)$;
\If{$|T|<\mathcal{M}$}
\State $m_i=-1$;\Comment{Label point i as noise point}
\Else\Comment{If point i is a core point}
\State $m_i=k$;\Comment{Indicate point i belonging to $C_k$}
\While{$T\neq \emptyset$}
\State Get any element $j$ from $T$, let $T:=T\setminus\{j\}$;
\If{$m_j=0$ or $m_j=-1$}
\State $m_j=k$;
\EndIf
\If{$|N_\varepsilon(j)|\geq\mathcal{M}$}
\State{$T:=T\cup N_\varepsilon(j)$;}
\EndIf
\EndWhile
\State $k=k+1$;
\EndIf
\EndIf
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}
添加页眉和页脚
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{姓名}
\fancyhead[R]{\leftmark}
\fancyfoot[R]{\thepage}
\renewcommand{\footrulewidth}{0.4pt}
调节页边距
\usepackage{geometry}
\geometry{left=3cm, right=2.5cm, top=2.5cm, bottom=2.5cm}
添加图片
\usepackage{graphicx}
\graphicspath{{img/}}
\begin{document}
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth,height=50mm]{}
\caption{Test Test Test}
\end{figure}
\end{document}
文档框架
\title{Report}
\date{}
\author{Shitong CHAI}
\begin{document}
\maketitle
\tableofcontents
\chapter {Something about report\cite{cortes1995support}}
\bibliography{bibtex}{}
\bibliographystyle{plain}
\end{document}
使用ifthen宏(whiledo, ifthenelse, value, setcounter, stepcounter),在宏中使用intcalcMod
\usepackage{ifthen}
\usepackage{intcalc, calc}
\newcounter{i}
\begin{document}
\begin{figure}[H]
% 以下代码把图片目录下的0.png-36.png以每行四张的格式平铺成一张图
\centering
\begin{tabular}{c p{3cm}p{3cm}clc}
\setcounter{i}{0}
\whiledo{\value{i} < 37} {
\includegraphics[width=0.13\textwidth]{\thei}
\ifthenelse{\intcalcMod{\value{i}}{4} = 3}{\\}{&}
\stepcounter{i}
}
\end{tabular}
\caption{Frequent patterns generated ($\tau=7$)}
\end{figure}
\end{document}
更改页码样式
% 正文中
\setcounter{page}{2}
\renewcommand{\thepage}{第\arabic{page}页(共6页)}
bibtex.bib
@article{cortes1995support,
title={Support-vector networks},
author={Cortes, Corinna and Vapnik, Vladimir},
journal={Machine learning},
volume={20},
number={3},
pages={273--297},
year={1995},
publisher={Springer}
}
编译
xelatex report
bibtex report
xelatex report
xelatex report
展开阅读
当你发现一个你喜欢的乐队,一首你喜欢的歌时,你可能会很想找到同类型的乐队和音乐家。
但是如何知道一首歌或一个乐队是哪个风格的呢?疯狂谷歌维基?这样太费时间了
基于语义网SPARQL语言可以帮助你完成自动在维基上搜索的过程
以下代码寻找所有风格为爵士的乐队的音乐家:
PREFIX dbo:<http://dbpedia.org/ontology/>
PREFIX dbp:<http://dbpedia.org/resource/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dct: <http://purl.org/dc/terms/>
select distinct ?memberName {
?member foaf:name ?memberName .
?band dbo:bandMember ?member .
?band dbo:genre ?genre .
?genre dct:subject dbp:Category:Jazz_genres .
}
使用在线dbpedia工具,在Query Text栏输入以上代码,点击Run Query即可得到你要找的音乐家,是不是比手动深度优先遍历维基快多了?(狗头
展开阅读
共享内存模型
锁,信号量(semaphore)
线程模型
分布式内存的信息传输模型
数据并行模型
分区全局地址空间(PGAS)
并行文件系统
存储协议