06 2023 档案
摘要:syscall函数 系统调用号 函数名 入口点 源码 0 read sys_read fs/read_write.c 1 write sys_write fs/read_write.c 2 open sys_open fs/open.c 3 close sys_close fs/open.c 4 s
阅读全文
摘要:tgt服务端流程分析 2. backing store tgt支持多种后端存储,比如rdwr,aio,sg,rbd,sheepdog等,默认的是rdwr,可以指定flag(O_SYNC|O_DIRECT)。了解清楚tgt的后端存储的处理模式,就可以添加新的后端存储用于支持自定义的功能。 其中主要的接
阅读全文
摘要:配置使用iscsi 图解: 请确保服务器A上已经关闭了防火墙或者允许了3260端口。下图描述了使用iSCSI的大致过程,后文内容虽然因为介绍各种用法而显得比较杂,但根据这张图的流程,阅读时很容易搞清楚相关内容。 gtadm是一个高度模式化的命令,他们的模式很相近。有三个模式:target、logic
阅读全文
摘要:函数fmemopen、函数open_memstream 1. open_memstream函数原型: #include <stdio.h> FILE *open_memstream(char **ptr, size_t *sizeloc); 2. fmemopen函数原型: #include <st
阅读全文
摘要:tgtadm命令 tgtadm -L iscsi -o show -m target tgt-admin --show 输出: Target 1: iqn.hxl.com.test System information: Driver: iscsi State: ready I_T nexus in
阅读全文
摘要:配置使用iscsi 1.为了能在tgt中使用librbd访问ceph的块设备,需要tgt有相应的模块,你可以通过以下命令来确认。 tgtadm --lld iscsi --mode system --op show|grep rbd rbd (bsoflags sync:direct) 如果有类似于
阅读全文
摘要:命令rbd 创造镜像: rbd create iscsi-size 4096 -p iscsi 查看创建的image: rbd -p iscsi ls #查看镜像详细信息: rbd info iscsi/iscsi-image 将镜像重命名: 将iscsi-image01重新命名为iscsi-ima
阅读全文
摘要:参考资料 1. CTDB使用radosobject作为lockfile
阅读全文
摘要:xz -z, --compress # 强制压缩 -d, --decompress, --uncompress # force decompression -t, --test # 测试压缩文件的完整性 -l, --list # 列出有关.xz文件的信息 -k, --keep # 保留(不要删除)输
阅读全文
摘要:关键字global Python 中的全局变量默认是可以在所有的函数内访问的,但是,如果在函数中定义了与全局变量同名的变量时,就会发生局部变量隐藏了全局变量的情形。如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了。当局部变量与全
阅读全文
摘要:linux命令crontab cron是一个在后台运行调度的守护进程,而crontab是一个设置cron的工具。cron调度的是/etc/crontab文件。 crontab安装: yum install crontabs crontab关闭以及启动等命令: service crond status
阅读全文
摘要:lambda lambda是匿名函数,也就是没有名字的函数。lambda的语法非常简单: 下面是一个lambda表达式的简单例子,我们可以把lambda表达式赋值给一个变量,然后通过这个变量来使用它: >>> my_sum = lambda x, y: x+y >>> my_sum(1, 2) 3
阅读全文
摘要:多文件编程 在Python中,可以将代码拆分成多个文件进行编程,这样有助于组织和维护大型程序。以下是一些常用的方法: 模块导入:将代码划分成几个逻辑上相似的文件,然后使用import语句导入需要使用的模块。 包:将相关的模块放到同一个文件夹内,并加上一个名为__init__.py的空文件,这个文件会
阅读全文
摘要:同步队列模块queue queue 模块实现了多生产者、多消费者队列。这特别适用于消息必须安全地在多线程间交换的线程编程。模块中的 Queue 类实现了所有所需的锁定语义。 函数 作用 Queue.qsize() 返回队列的大致大小。注意,qsize() > 0 不保证后续的 get() 不被阻塞,
阅读全文
摘要:collections模块之namedtuple 因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数,来构造一个带字段名的元组。具名元组的实例和普通元组消耗的内存一样多,因为字段名都
阅读全文
摘要:threading模块之Semaphore import threading import time import random # The optional argument gives the initial value for the internal counter; # it defaul
阅读全文
摘要:循环语句 yield from 是Python 3中的一个语法,用于在生成器中委托另一个生成器来产生值。当使用 yield from iterable 时,iterable 应该是一个可迭代对象(如列表、元组、字典、字符串等),其每个元素都是一个生成器。使用 yield from 可以将这些嵌套的生
阅读全文
摘要:函数 方法: def func_name(param1, param2){ # 执行语句... return val } # 调用函数 func_name(param1 = p1, param2 = p2) func_name(param2 = p2, param1 = p1) 参数: 参数 描述
阅读全文
摘要:threading模块之event python的 Event 对象用于线程间通信,即程序中的某一个线程需要通过判断另一个线程的状态来确定自己下一步的操作,这时就需要使用 event 对象。Event 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在初始情况下,Event 对象中
阅读全文
摘要:with语法 python从2.5版本开始引入了 with 语法。此语法非常实用,在有两个相关的操作需要在一部分代码块前后分别执行的时候,可以使用 with 语法自动完成。同事,使用 with 语法可以在特定的地方分配和释放资源,因此, with 语法也叫做“上下文管理器”。在threading模块
阅读全文
摘要:参数 / 与 参数 * 意思如下: / 符号之前的所有参数,都必须以位置方式传参,不可以关键字参数传参 * 符号之后的所有参数,都必须以关键字方式传参,不得以位置方式传参 如果你希望强迫调用者使用某些参数,且必须以关键字参数的形式传参,那么你只需要在所需位置的前一个位置放置一个*。 def f1(a
阅读全文
摘要:yield 生成器:生成器是一种特殊类型的函数,其可以使用yield语句来实现迭代器,从而逐个地返回一个序列中的值。相比于常规的函数,生成器函数在需要时才会生成下一个结果,避免了一次性产生所有结果的不便,并且可以节约内存空间。生成器可以通过循环或者列表解析式调用,也可以使用内置函数next()来得到
阅读全文
摘要:函数print name = "John" age = 30 print("My name is", name, "and I am", age, "years old.") 输出: My name is John and I am 30 years old. >>> name = "Eric" >
阅读全文
摘要:threading模块之Thread 使用线程最简单的一个方法是用一个目标函数实例化一个Thread然后调用 start() 方法启动它。Python的threading模块提供了 Thread() 方法在不同的线程中运行函数或处理过程等。 class threading.Thread(group=
阅读全文
摘要:类变量 在类里面定义,且不位于构造或者成员函数里面,同时没有" self. " 的前缀;或者在类外定义,用 类名.类变量名 来新增加类变量。两种使用方法: (1)类名.类变量名(如下的 Test.a) (2)类的实例对象.类变量名(如下的 T.a) class Test: a = 1 ### 类变量
阅读全文
摘要:继承的定义 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展 例如: class Person(object): def talk(self): print("person is talki
阅读全文
摘要:ThreadPoolExecutor 例子1: from concurrent.futures import ThreadPoolExecutor from time import sleep def task(message): sleep(2) return message def main()
阅读全文
摘要:函数参数 * 和 ** 在Python中,函数参数列表中的 * 和 ** 具有特殊的含义。 * 用于表示一个元组(tuple),它将不定数量的位置参数存储为一个元组。当我们无法确定传递给函数的位置参数的数量时,可以使用 * 参数。例如: def test_args(first, *args): pr
阅读全文
摘要:文件锁之fcntl模块 1. 例子 import sys import time import fcntl class FLOCK(object): def __init__(self, name): self.fobj = open(name, 'w') self.fd = self.fobj.f
阅读全文
摘要:函数repr 描述:repr() 函数将对象转化为供解释器读取的形式。 repr(object) repr() 方法可以将读取到的格式字符,比如换行符、制表符,转化为其相应的转义字符。 # coding=UTF-8 s="物品\t单价\t数量\n包子\t1\t2" print(s) print(re
阅读全文
摘要:概述 号 方法, 描述 & 简单的调用 1 __init__ ( self [,args...] )构造函数简单的调用方法: obj = className(args) 2 __del__( self )析构方法, 删除一个对象简单的调用方法 : del obj 3 __repr__( self )
阅读全文
摘要:git diff ^M的消除 这是由于换行符在不同的操作系统上定义的区别造成的。Windows用CR LF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。为什么Windows添加一个
阅读全文

浙公网安备 33010602011771号