拷贝

如何判断TCP包是否发送成功

浪子不回头ぞ 提交于 2020-03-12 17:13:05
1. TCP发送接口:send()   TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...); 错误的认为sn的值是表示有sn个字节的数据已经发送到了接收端。其实真相并非如此。 我们知道,TCP的发送和接收在在内核(linux)中是有对应的缓冲的: struct sock{ ... struct sk_buff_head receive_queue; //接收的数据报队列 struct sk_buff_head write_queue; //即将发送的数据报队列 ... }   对于发送端而言,用户空间调用send(data)等发送接口将数据发送, 内核会将data拷贝到内核空间的socket对应的缓冲中,即sock.write_queue。而send()函数的返回值仅仅是表示本次send()调用中成功拷贝的字节数(用户空间->内核空间对应的sock缓冲队列) 。 具体发送和接收端的接收就由TCP协议完成 ,虽然TCP是可靠传输,但是这个前提是发送端和接收端的网络是连接的,否则你懂得。这样,对于调用send()发送的用户而言,如果想要确定接收方是否成功接受数据,就得需要靠其他的办法查询。 2. send(

文件处理-拷贝文件

雨燕双飞 提交于 2020-03-12 12:20:37
#!/usr/bin/python3 # -*- coding: UTF-8 -*- import sys if len(sys.argv)<3: print("wrong parameter") print("./copyfile.py file1 file2") sys.exit(1) f1 = open(sys.argv[1]) s = f1.read()#读取file1的内容 f1.close() f2 = open(sys.argv[2],'w') f2.write(s)#将file1内容写入file2 f2.close() sys.argv[o]:copyfile.py sys.argv[1]:file1 sys.argv[2]:file2 sys.argv从外部获取参数,是一个列表 来源: https://www.cnblogs.com/soberkkk/p/12467851.html

Python基础(第六节)

霸气de小男生 提交于 2020-03-11 02:26:00
函数也是对象 定义函数时建立对象,调用函数时可以反复调用对象 变量的作用域(全局变量和局部变量) 全局变量 1、在函数和类定义之外声明的变量 2、作用域为定义的模块,从定义位置开始知道模块结束 3、全局变量降低了函数的通用性和可读性,应尽量避免全局变量的使用 4、全局变量一般作常量使用 5、函数内要改变全局变量的值,使用global声明一下 局部变量 1、在函数体中(包括形式参数)声明的变量 2、局部变量的引用比全局变量快,优先考虑使用 3、如果局部变量和全局变量同名,则在函数内部隐藏全局变量,只使用同名的局部变量 a = 100 def f1(): global a a = 300 print(a) print(a) f1() 运行结果为: 100 300 a = 100 def f1(): global a a = 300 print(a) f1() print(a) 运行结果为: 300 300 参数的传递 1、函数的参数传递本质上是从实参到形参的赋值操作 2、Python中参数的传递都是引用传递(传递地址),不是值传递 3、具体操作分为两类: ①对“可变对象”进行“写操作”,直接作用于原对象本身 ②对“不可变对象”进行“写操作”,会产生一个新的“对象空间”,并用新的值填充这块空间 传递可变对象的引用 a = [1,2] print(id(a)) def test01(m):

C++拷贝控制成员

大城市里の小女人 提交于 2020-03-11 02:24:18
拷贝控制成员 C++中的拷贝控制成员包括: 构造函数 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 构造函数 构造函数,又分为默认构造函数和自定义构造函数,其中默认构造函数包括: 系统自动合成(没有构造函数时) 无参构造函数 全部带有默认实参的构造函数 关于构造函数,这里重点介绍一下隐式类类型转换和显示的类类型转换 如果一个构造函数只含有一个参数例如int a,则该函数可以通过隐式转换将int类型的遍历转换为对象A。、 eg: class A { public: A(int a):a_(a){} //构造函数1 int a_; int b_; } int a; A t = a;//将调用构造函数1 void func(A t); func(a);//将调用构造函数1 int b; t=b;//将先调用构造函数1将b隐式转换为A的对象,然后调用A的拷贝赋值运算符 隐式类型转换发生的地方包括: 通过a初始化A对象时 通过a作为实参传入A的形参时 为A对象赋值为a时(此时先将a隐式转换为A对象,然后调用拷贝赋值运算符) 注意:隐式类型转换只允许一步到位,不允许a先转换为b,然后b再转换为A的对象 禁止隐式类型转换的方法,是在构造函数1的声明( 只需要在类的声明后加explicit,类外定义不加 )后加explicit关键字即可 但是这样还是可以通过static

Maven资源拷贝插件

那年仲夏 提交于 2020-03-10 22:08:14
资源拷贝插件 目录 资源拷贝插件 1 验证测试会不会打包aaa.xml 2 创建其他位置的xml看看会不会打包‘ 3 配置资源拷贝插件 4 pom配置 总结: Maven 在打包时默认只将 src/main/resources 里的配置文件拷贝到项目中并做打包处理, 而非 resource 目录下的配置文件在打包时不会添加到项目中 1 验证测试会不会打包aaa.xml 可以看到打包成功 2 创建其他位置的xml看看会不会打包‘ 之后我们再加一个其他目录的xml看是否打包成功 这时可以看到并没有打包上,意味这如果war包打包想服务器发送肯定是少xml配置文件一定会报错! 3 配置资源拷贝插件 这时我们就导入了xml配置文件 4 pom配置 <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <

Python笔记-集合,拷贝

家住魔仙堡 提交于 2020-03-09 21:58:19
对于列表,元组,集合的异同,有如下解释 #list ----> 允许重复的集合,修改# tuple ----> 允许重复的集合,不修改# set ----> 不允许重复的集合下面是示例代码: 1 s1 = set() 2 s2 = {1,2,3,4} 3 s3 = set([11,22,33,44]) 4 s4 = {3,4,5,6,89} 5 print type(s2) #<type 'set'> 6 s1.add(44) 7 print s1 #set([44]) 8 s1.clear() 9 print s1 #set([]) 10 print s2.difference(s4) #set([1, 2]) (s1中存在,s2中不存在的) 11 12 print s2 #set([1, 2, 3, 4]) 13 diff = s2.difference_update(s4) 14 print s2 # s1中存在,s2中不存在的,更新s1, set([1, 2]) 15 print diff 16 17 s3.discard(44) 18 print s3 19 s3.discard(55) #要移除的元素不存在时,不报错 20 print s3 21 s3.remove(66) #要移除的元素不存在时,报错 22 23 s5 = {77,88,99} 24 s6 = {88

Aborting commit: &apos;XXXXXXXX&apos;remains in conflict错误

岁酱吖の 提交于 2020-03-09 21:00:15
今天在提交项目文件到本地SVN时提示错误如下: 过期:”global.php“在事务”21-1“, You have to update your working copy first. 运行update更新后再次提交又出现如下错误: svn: Commit failed (details follow):svn: Aborting commit: 'global.php' remains in conflict查了一下SVN的手册才知道原来是多个版本之间遇到冲突。此时你需要解决冲突(合并别人的修改)。 -------------------------------------------------------------------------------- 举一个例子,Sally修改了sandwich.txt,Harry刚刚改变了他的本地拷贝中的这个文件并且提交到服务器,Sally在提交之前更新它的工作拷贝得到了冲突: $ svn update C sandwich.txt Updated to revision 2. $ ls -1 sandwich.txt sandwich.txt.mine sandwich.txt.r1 sandwich.txt.r2 在这种情况下,Subversion不会允许你提交sandwich.txt,直到你的三个临时文件被删掉。 $ svn

day07-深浅拷贝

ぐ巨炮叔叔 提交于 2020-03-09 20:50:26
3.1浅拷贝 list1=[ 'egon', 'lxx', [1,2] ] 1、二者分隔不开,list改list2也跟着该,因为指向的就是同一个地址 list2=list1 # 这不叫copy list1[0]='EGON' print(list2) 2、需求: 1、拷贝一下原列表产生一个新的列表 2、想让两个列表完全独立开,并且针对的是改操作的独立而不是读操作 3、如何copy列表 3.1 浅copy:是把原列表第一层的内存地址不加区分完全copy一份给新列表 list1=['egon','lxx',[1,2]] list3=list1.copy() print(list3) print(id(list1)) print(id(list3)) print(id(list1[0]),id(list1[1]),id(list1[2])) print(id(list3[0]),id(list3[1]),id(list3[2])) 实验1:对于不可变类型的赋值,都是产生了新值,让原列表的索引指向新的 内存地址,并不会影响新列表 list1[0]='EGON' list1[1]='LXX' # list1[2]=123 实验2:但对于可变类型,我们可以改变可变类型中包含的值,但内存地址不变 即原列表的索引指向仍然指向原来的内存地址,于是新列表也跟着一起受 影响,如下 list1[2][0]

深浅拷贝

瘦欲@ 提交于 2020-03-09 18:45:35
需求:想拷贝原列表,产生一个新的列表,而且想让两个列表完全区分开,互不影响,针对改操作,而不是读操作。 浅copy: list1=['jake','rose',[1,2]] list2=list1.copy() list1和list2的内存地址不同 但是list1[0]与list2[0]的内存地址是相同的 总结:浅copy时,不可变类型的重新赋值,会改变原本的id,所以不会影响到新的列表, 但是可变类型的特性(值改变,id不变),所以旧列表种的可变类型发生改变,会影响到新的列表。 深copy: import copy list1=['jake','rose',[1,2]] list3=copy.deepcopy(list1) 深copy时候,原列表的不可变类型的id都会被copy,但是可变类型会被赋予新的id地址。 总结:由于不可变类型的特性(值变,id变),所以不会影响到新的列表。 但是新列表的可变类型都被赋予了新的id,所以旧列表的可变类型发生变化时,也不会影响到新的列表。 ps:若列表中只存在不可变类型可使用浅copy,若有不可变类型存在建议使用深copy. 可变不可变类型: https://www.cnblogs.com/bailongcaptain/p/12430126.html 来源: https://www.cnblogs.com/bailongcaptain/p

python学习07——深浅拷贝

≡放荡痞女 提交于 2020-03-09 16:17:43
深浅拷贝 拷贝就是复制一份,深浅copy其实就是完全复制一份,和部分复制一份的意思 一.浅拷贝copy 对浅拷贝来说没知识在内存中重新创建了一个空间存放一个新列表,但是新列表中的元素与原列表的元素是公用的 #同一代码块下: l1 = [ 1, 'jason', True, ( 1, 2, 3), [ 22, 33]] l2 = l1.copy() print(id(l1), id(l2)) # 2713214468360 2713214524680 print(id(l1[ -2]), id(l2[ -2])) # 2547618888008 2547618888008 print(id(l1[ -1]),id(l2[ -1])) # 2547620322952 2547620322952 # 不同代码块下: >>> l1 = [ 1, 'jason', True, ( 1, 2, 3), [ 22, 33]] >>> l2 = l1.copy() >>> print(id(l1), id(l2)) 1477183162696 >>> print(id(l1[ -2]), id(l2[ -2])) 1477181814032 >>> print(id(l1[ -1]), id(l2[ -1])) 1477183162504 二.深拷贝copy.deepcopy 对于深copy来说