1.在命令行:dd是删除光标所在的那一整行
yy是复制光标所在的那一整行
p是将已复制的数据在光标的下一行粘贴
P是将已复制的数据在光标的上一行粘贴
2.在命令行中查找的话
从上往下查找:/
从下往上:?
针对/,使用‘n’查找下一个,使用‘N’查找上一个
3.进程之间的通信方式:
消息队列
本地socket通信方式
管道通信
共享内存
信号量
命名管道虽然可以通讯,但是把变量的地址传递过去是没有用的,因为不同的进程的地址空间是独立的,谁也不能访问谁,只有传值才可以,传地址是不行的
子进程虽然是父进程fork()出来的,但是任然属于两个进程,不同进程之间也是独立的,子进程无权访问父进程的变量
B进程向消息队列写入一个包含变量内容的消息,A进程从队列中读出
通过本地环路通信
如果A、B 非亲属,那么A通过命名管道把这个变量的地址发给B进程
如果 B是A 进程的子进程,那么B直接读取变量内容即可
4.
read
pread
write
pwrite
fseek
lseek
lseek()函数,移动文件的读写位置
read() write()读写文件
pread() pwrite()带偏移量的读写文件,都属于系统调用
fseek()库函数
5.
将光标移到第1行,在vi命令模式下输入yy5,然后将光标移到制定位置,按p键
将光标移到第1行,在vi命令模式下输入5yy,然后将光标移到制定位置,按p键
使用末行命令1,5yy,然后将光标移到制定位置,按p键
使用末行命令1,5y,然后将光标移到制定位置,按p键
页式
段式
请求页式
请求段式
冒泡排序算法速度最快,每次排序记录下最后的一次交换的位置
class B(): _cls=0 def __new__(self, *args, **kwargs):##在init执行之前 if self._cls==None: self._cls=object.__new__(self) return self._cls sin1=B() sin2=B() print(id(sin1),id(sin2)) print(id(sin1)==id(sin2))
使用metaclass来实现:
##metaclass class A(type): _in=0 def __call__(cls, *args, **kwargs): if cls._in==None: cls._in=object.__new__(cls) return cls._in class B(metaclass=A): pass sin1=B() sin2=B() print(id(sin1),id(sin2)) print(id(sin1)==id(sin2))
原文:https://www.cnblogs.com/yunxintryyoubest/p/10800256.html