拷贝

python - 深浅拷贝

北战南征 提交于 2020-01-06 03:57:54
一.set集合   set集合是python的一个基本数据类型. ⼀般不是很常用. set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示    注意: set集合中的元素必须是可hash的, 但是set本⾝是不可hash得. set是可变的 . 1.使用set来去掉重复,且结果无序 lst = ["莉莉",'丽丽','李莉',"莉莉"] lst = list(set(lst)) #把lst转换成set,在转换成list print(lst) #结果为:['李莉', '莉莉', '丽丽'] 2.使用set进行增删改查   1、增 s = {"jie", 'jie', 'lun'} s.add("zhou") # s.update(['liu']) #迭代添加 # s.update(["玛丽莲","马里兰","马利兰"]) print(s)   2、删 s = {"马尼拉","玛丽莲","马利兰"} item = s.pop() #随机删除一个 print(item) s.remove("玛丽莲") #指定删除 print(s) s.clear() #直接清空set()内容 print(s)   3、改

深浅拷贝

半腔热情 提交于 2020-01-06 03:56:49
一、浅拷贝   浅拷贝是拷贝对象中的非引用类型属性的值和引用类型属性的引用。 function shollowCopy(obj) { let constructor = obj.constructor; let tempObj = new constructor(); for(let prop in obj) { if(obj.hasOwnProperty(prop)) { tempObj[prop] = obj[prop] } } return tempObj; }    注意 :浅拷贝与赋值操作不同。 var obj = { name: 'mark', arr: [1,2,3] } // 赋值操作 var obj2 = obj; obj === obj2; // true, 这里obj指向的地址与obj2指向的地址相同 var obj3 = shollowCopy(obj); obj3 === obj; // false, 这里obj3是新建的一个对象,其属性为对原来对象中非引用类型属性的复制和引用类型属性的引用; 二、深拷贝   深拷贝就是对遍历对象的所有属性,复制原对象的非引用类型属性,并对引用类型属性进行递归的深拷贝。 function deepCopy(obj) { let constructor = obj.constructor, tempObj; // obj

关于JS堆栈与拷贝

一笑奈何 提交于 2020-01-06 03:55:45
1、 栈(stack) 和 堆(heap)    stack 为自动分配的内存空间,它由系统自动释放;而 heap 则是动态分配的内存,大小不定也不会自动释放。        2、基本类型和引用类型    基本类型: 存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。   5种基本数据类型有 Undefined、Null、Boolean、Number 和 String ,它们是直接按值存放的,所以可以直接访问。    引用类型: 存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。   当我们需要访问引用类型(如 对象,数组,函数 等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。 3、传值与传址   前面之所以要说明什么是内存中的堆、栈以及变量类型,实际上是为下文服务的,就是为了更好的理解什么是“浅拷贝”和“深拷贝”。   基本类型与引用类型最大的区别实际就是 传值与传址的区别 。测试用例: 1 var a = [1,2,3,4,5]; 2 var b = a; 3 var c = a[0]; 4 alert(b);//1,2,3,4,5 5 alert(c);//1 6 //改变数值 7 b[4] = 6; 8 c = 7; 9 alert(a[4]);//6 10

001-linux scp文件拷贝

拟墨画扇 提交于 2020-01-05 19:48:32
  scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。 1.命令格式:   scp [参数] [原路径] [目标路径] 2.命令功能:   scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。 3.命令参数:   -1 强制scp命令使用协议ssh1   -2 强制scp命令使用协议ssh2   -4 强制scp命令只使用IPv4寻址   -6 强制scp命令只使用IPv6寻址   -B 使用批处理模式(传输过程中不询问传输口令或短语)   -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)   -p 保留原文件的修改时间,访问时间和访问权限。   -q 不显示传输进度条。   -r 递归复制整个目录。   -v

C#中volatile的用法

拟墨画扇 提交于 2020-01-05 03:39:40
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/gjhjoy/p/3556709.html 恐怕比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变量修饰符,而synchronized则作用于一段代码或方法;看如下三句get代码: int i1 ; int geti1 () { return i1 ; } volatile int i2 ; int geti2 () { return i2 ; } int i3 ; synchronized int geti3 () { return i3 ; }   geti1()得到存储在当前线程中i1的数值。多个线程有多个i1变量拷贝,而且这些i1之间可以互不相同。换句话说,另一个线程可能已经改 变了它线程内的i1值,而这个值可以和当前线程中的i1值不相同。事实上,Java有个思想叫“主”内存区域,这里存放了变量目前的“准确值”。每个线程 可以有它自己的变量拷贝,而这个变量拷贝值可以和“主”内存区域里存放的不同。因此实际上存在一种可能:“主”内存区域里的i1值是1,线程1里的i1值 是2,线程2里的i1值是3——这在线程1和线程2都改变了它们各自的i1值,而且这个改变还没来得及传递给“主”内存区域或其他线程时就会发生。    而geti2()得到的是“主

关于PS 由于非法拷贝DR4而闪退无法使用的教程

让人想犯罪 __ 提交于 2020-01-04 22:39:42
现象:打开ps会跳出以下告示。点击确定或者x都会关闭ps。 解决方法: 1.下载这个工具,文末放连接如果挂掉可以在我的csdn资源里找。 2.打开这个页面,安装。 3.重启PS。 4.找到dr4的自动更新,关闭更新。防止下一次锁定。 最后感谢贴吧大佬。 https://www.52pojie.cn/thread-731631-1-1.html 资源:链接:/s/1QQfCeBQGFVRJ4iHlEEapOQ 密码:5yr2 来源: CSDN 作者: 猫鼬桑 链接: https://blog.csdn.net/weixin_41596347/article/details/103837886

同步/异步/阻塞/非阻塞/BIO/NIO/AIO

我怕爱的太早我们不能终老 提交于 2020-01-04 04:56:34
转摘自:https://www.cnblogs.com/lixinjie/p/a-post-about-io-clearly.html 常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据。 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTTP响应,然后继续往下执行。 这个时候你问别人,刚刚代码发起的这个请求是不是一个同步请求,对方一定回答是。这是对的,它确实是。 但你要问它为什么是呢?对方一定是这样回答的,“因为发起请求后,代码就卡住不动了,直到拿到响应后才可以继续往下执行”。 我相信很多人也都是这样认为的,其实这是不对的,是把因果关系搞反了: 不是因为代码卡住不动了才叫同步请求,而是因为它是同步请求所以代码才卡住不动了。 至于为什么能卡住不动,这是由操作系统和CPU决定的: 因为内核空间里的对应函数会卡住不动,造成用户空间发起的系统调用卡住不动,继而使程序里的用户代码卡住不动了。 因此卡住不动了只是同步请求的一个副作用,并不能用它来定义同步请求,那该如何定义呢? 同步和异步 所谓同步,指的是协同步调。既然叫协同,所以至少要有2个以上的事物存在。协同的结果就是: 多个事物不能同时进行,必须一个一个的来,上一个事物结束后,下一个事物才开始。 那当一个事物正在进行时,其它事物都在干嘛呢?

迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)

陌路散爱 提交于 2020-01-04 04:56:09
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据。 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTTP响应,然后继续往下执行。 这个时候你问别人,刚刚代码发起的这个请求是不是一个同步请求,对方一定回答是。这是对的,它确实是。 但你要问它为什么是呢?对方一定是这样回答的,“因为发起请求后,代码就卡住不动了,直到拿到响应后才可以继续往下执行”。 我相信很多人也都是这样认为的,其实这是不对的,是把因果关系搞反了: 不是因为代码卡住不动了才叫同步请求,而是因为它是同步请求所以代码才卡住不动了。 至于为什么能卡住不动,这是由操作系统和CPU决定的: 因为内核空间里的对应函数会卡住不动,造成用户空间发起的系统调用卡住不动,继而使程序里的用户代码卡住不动了。 因此卡住不动了只是同步请求的一个副作用,并不能用它来定义同步请求,那该如何定义呢? 同步和异步 所谓同步,指的是协同步调。既然叫协同,所以至少要有2个以上的事物存在。协同的结果就是: 多个事物不能同时进行,必须一个一个的来,上一个事物结束后,下一个事物才开始。 那当一个事物正在进行时,其它事物都在干嘛呢? 严格来讲这个并没有要求,但一般都是处于一种“等待”的状态,因为通常后面事物的正常进行都需要依赖前面事物的结果或前面事物正在使用的资源。

多进程拷贝

给你一囗甜甜゛ 提交于 2020-01-03 05:37:03
多进程拷贝:实现将文件内容拷贝给另一个文件 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/wait.h> #define BUF_SIZE 400 int main(int argc, char *argv[]) { int fd1, fd2, ret, len, i, n; char *src = NULL; char *dest = NULL; pid_t pid; printf("Current file path:%s\n", argv[0]); fd1 = open(argv[1], O_RDWR); if(fd1 == -1) { perror("open mmap.txt error:"); exit(1); } printf("mmap文件打开成功\n"); len = lseek(fd1, 0, SEEK_END); printf("len = %d\n", len); //将文件分为n个部分,创建n个子进程 if(len % BUF_SIZE == 0)/

Python列表操作大全(非常全)

对着背影说爱祢 提交于 2020-01-01 16:00:50
Python列表操作大全(非常全!!!) 对于 python列表的理解可以和C语言里面的数组 进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并 且python的列表是比较强大的,它包含了很多不同类型的数据:整型数字,浮点型,字符串以及对象等 。定义举例如下: List1=[1,2,3,”hello world”,”3.1415926”,[1,2,3]] 对于python列表里元素的操作主要分为以下几个方面: 1、 向列表里面加元素; 2、 删减列表中的一些元素; 3、 获取列表里面的特定元素; 4、 列表分片; 5、 常用的列表操作符; 6、 其他常见列表操作函数 7、 列表的拷贝 下面我们来具体讲解一下每一个部分: 1、 向列表里面加元素: 向python列表里面添加元素主要有三种方法: (1)append() append()对于列表的操作主要实现的是在特定的列表最后添加一个元素,并且只能一次添加一个元素,并且只能在列表最后; m.append(元素A) (2)extend() extend()对于列表的操作主要实现的是对于特定列表的扩展和增长,可以一次添加多个元素,不过也只能添加在列表的最后; m.extend([元素A,元素B,……]) (3)insert() insert(