拷贝

DOS命令操作

你。 提交于 2019-12-27 17:49:12
文件复制 命令 ——copy 类型:内部 命令 格式:COPY <源文件> [目标文件] 说明: 1.源文件指定想要复制的文件来自哪里——[盘符1:][路径1][文件名1] 2.目标文件指定文件拷贝到何方——[盘符2:][路径2][文件名2] 3.如缺省盘符则为当前盘符;路径若为当前目录可缺省路径. 4.源文件名不能缺省,目标文件名缺省时表示拷贝后不改变文件名. 举例: 1.将A盘的PC.EXE拷贝到C盘的DOS目录下,文件名不变. 键入 COPY C :\123.TX T WINDOWS ;省略目标盘符与文件名. 屏幕显示反馈信息:一个文件被拷贝. 2.将C:\ WINDOWS 目录中的文件A.TXT拷贝到D盘的,将改名为B.TXT. C:\>COPY \ WINDOWS \A.TXT D:\B.TXT 3.将C:\ WINDOWS 目录中的所有.SYS文件拷贝到D盘的123目录下. C:\ WINDOWS >COPY *.SYS D :\123 4.由键盘输入建立新文件, 命令 格式为:COPY CON <文件名> 例:用COPY CON 命令 在C盘的BE目录下建立一个名为ABC.TXT的文件,文件内容为: I am glad to meet you. I am glad to meet you,too. 操作步骤如下: 输入内容,每一行最后回车,最后一行输入Ctrl

auto_ptr

柔情痞子 提交于 2019-12-27 07:43:38
auto_ptr指针介绍(智能指针)   auto_ptr指针介绍   auto_ptr是这样一种指针:它是“它所指向的对象”的拥有者。这种拥有具有唯一性,即一个对象只能有一个拥有者,严禁一物二主。当auto_ptr指针被摧毁时,它所指向的对象也将被隐式销毁,即使程序中有异常发生,auto_ptr所指向的对象也将被销毁。   1、设计动机:   在函数中通常要获得一些资源,执行完动作后,然后释放所获得的资源,当程序员忘记释放所申请的到的资源,或者由于异常发生而没有正常释放资源时,这就将产生一系列的内存泄漏问题。   因此,你可能将函数写成如下形式:   void fun()   {   try   {   T *ptr = new T;   ......   }catch(...)   {   delete ptr;   throw;   }   delete ptr;   }   这样使程序变得太过复杂。使用auto_ptr可以使上述程序简化为:   void fun()   {   auto_ptr<T> ptr(new T);   ......   }   不再需要delete,也不再需要catch了。与上面的程序相比,这个非常简单。   auto_ptr是一个模板类,适合于任何类型,其接口行为与普通指针相似,opeator *用来提取其所指向对象的值。operator-

auto_ptr

会有一股神秘感。 提交于 2019-12-27 07:38:46
C++的auto_ptr auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。 1 构造函数与析构函数 auto_ptr在构造时获取对某个对象的所有权(ownership),在析构时释放该对象。我们可以这样使用auto_ptr来提高代码安全性: int* p = new int(0); auto_ptr<int> ap(p); 从此我们不必关心应该何时释放p, 也不用担心发生异常会有内存泄漏。 这里我们有几点要注意: 1) 因为auto_ptr析构的时候肯定会删除他所拥有的那个对象,所有我们就要注意了,一个萝卜一个坑,两个auto_ptr不能同时拥有同一个对象。像这样: int* p = new int(0); auto_ptr<int> ap1(p); auto_ptr<int> ap2(p); 因为ap1与ap2都认为指针p是归它管的,在析构时都试图删除p, 两次删除同一个对象的行为在C++标准中是未定义的。所以我们必须防止这样使用auto_ptr. 2) 考虑下面这种用法: int* pa = new int[10]; auto_ptr<int> ap(pa); 因为auto_ptr的析构函数中删除指针用的是delete,而不是delete [],所以我们不应该用auto_ptr来管理一个数组指针。 3)

Java面试准备之算法

a 夏天 提交于 2019-12-27 02:42:38
1、一致性哈希算法 参考文章: 一致性哈希算法 描述: 通过传统哈希算法寻找目标服务器的时候,通常是将哈希值根据目标服务实例的数量来进行取模。例如有3个服务实例,哈希值计算得14,14对3取模得2,则目标服务器的实例为2号服务实例。 传统哈希算法是有弊端的。如果服务的实例数量发生了更改,绝大多数缓存内容的模值会发生改变,此时会发生缓存雪崩。 一致性哈希算法和传统哈希算法的区别在于,一致性哈希算法并不对服务实例的数量取模,而是对一个固定的数字取模,这个数字就是2^32,即无符号整型的最大值。这样得到的哈希数值不会随着服务数量的改变而改变。 对于需要缓存的数据,计算其哈希值,并根据哈希值向下寻找第一个服务器,就是这个数据缓存的目标服务实例。如果寻找到了最大的数值2^32-1,则从0开始继续寻找。 当插入新的服务实例时,受到影响的缓存数据,只有哈希值在从 哈希值小于当前服务实例的第一个服务实例的哈希值,到当前服务实例哈希值之间数据,才会受到影响。 2、LRU算法 LRU(Least Recently Used)即最近最少使用算法。 LRU算法的原理比较简单,数据存储的数据结构为链表。当访问数据时,如缓存中有数据,则将该数据移动至链表的顶端;没有该数据则在顶端加入该数据,并移除链表中的低端的数据。 3、零拷贝 对于“文件拷贝+socket发送”操作,实现方式: 3.1 传统方式: File

Python之函数

孤街浪徒 提交于 2019-12-26 21:39:09
简介: 定义函数: def xx():     print("xxx") 执行函数 xx() 函数返回值: def emile(): print("发邮件") return '123' r = emile() print(r) 结果: 发邮件 123 上述中,return为返回值,返回给r。return想返回什么就返回什么,如果没有写返回值,就返回None,就是空。 def emile(): if True: return True else: return False ret = emile() if ret: print('好的') else: print('滚') 结果: 好的 函数的普通参数: def i1(p,q,r): #p,q,r为形参 print(p,q,r) #打印出p,q,r的值 return True #返回True ret = i1('11',[22,11],'33') #i1里面的为实参,是按照顺序给形参值 print(ret) 结果: 11 [22, 11] 33 True 如果实参不是按照顺序给形参值的情况:(在实参内指定就行了) def i1(p,q,r): print(p,q,r) return True ret = i1(q = '11',p = [22,11],r = '33') print(ret) 结果: [22, 11] 11 33

浅拷贝与深拷贝

独自空忆成欢 提交于 2019-12-26 20:54:12
浅拷贝与深拷贝 为了更好的理解js的深浅拷贝,我们先来理解一些js基本的概念 数据类型 javascript中的数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和复杂的数据类型(也称作引用数据类型-Object)。 当一个变量存放基本数据类型时与复杂的数据类型时分别存在以下的特点: 基本数据类型的特点:变量直接将基本数据类型的值存储在栈(stack)内存中 引用数据类型的特点:变量将引用数据类型的引用(可以看作是地址)存储在栈(stack)内存,而对象本身存放在堆内存里,在栈中引用指向堆中的对象。 其实当解释器寻找引用值时,会首先检索其在栈中的地址引用,取得地址后从堆中获得对象。 ​ 浅拷贝与深拷贝 首先我们来看一个例子: var num = 666 ; var numCopy = num ; var obj = { name : "张三" } ; var objCopy = obj ; 对于以上的代码,变量的内存分配是在栈中,所以变量不可以存放堆中的对象,所以赋值就会出现两种情况: 基本数据类型:将变量num的值拷贝一份存储在numCopy中 赋值数据类型:将变量obj中直接存储的引用拷贝一份存储在objCopy中 所以我们的Number类型的变量num通过简单的赋值得到了两份值(在栈内存不同的内存区域)

Nginx动静分离

狂风中的少年 提交于 2019-12-26 19:43:54
访问我的博客 前言 最新公司新开了一个项目,项目由我来配置基础环境,会写一系列的教程来展示,一个网站从零到上线的整个过程。首先本文介绍资源文件的隔离。 为什么要实现动静分离 为什么要将静态资源文件与动态请求进行分离? 为了降低 Tomcat 服务器的负载,可以通过本文设置并结合 CDN 来实现来更彻底地降低服务器的负载。 如图所示,所有的请求都压到了同一台服务器上, 无论静态还是动态的请求,这样流量大的话势必会造成服务器的负载过高,因为动静分离是必不可少的。 环境介绍 首先这是我们项目的目录结构, resource 目录和 **_res** 目录中都是静态资源文件,存放比如 js/css/img 等资源。这两个目录下的文件有所不同,**_res** 目录下面是压缩版本的,比如压缩的js/css。通过 Git 或者 SVN 将项目上传到服务器上后,配置 Nginx 来完成静态资源的分离。 首先看一张图(图的来源是: http://www.cnblogs.com/xiaoblog/p/4241086.html ) 当请求经过 Nginx 时,如果是静态资源的请求,就直接返回主机上静态资源即可, 如果是动态请求,则去请求 Tomcat 服务器后再返回。如果流量不是很大,静态资源可以和 Tomcat 服务器放在同一台主机上,否则需要将静态资源与 Tomcat 服务器分开。

Unix/C/C++--数据类型转换、格式化、cpy、精度

扶醉桌前 提交于 2019-12-26 19:30:37
Unix/C/C++--数据类型转换、格式化、cpy、精度 1 简介 2 等号赋值与memcpy 3 各类转换 3.1 unsigned char 2 float 3.2 unsigned char 2 string 3.3 float 2 char 3.4 float 2 unsigned char 4 指针传递 4.1 数组指针 4.1.1 示例一 4.1.2 示例二 5 格式化 5.1 格式化输出 5.2 设置小数点后面的位数 6 精度 6.1 float 参考 1 简介 各类场景下,需要各种数据转化。 2 等号赋值与memcpy strcpy等函数的逐字节拷贝,memcpy是按照机器字长逐字进行拷贝的,一个字等于4(32位机)或8(64位机)个字节。CPU存取一个字节和存取一个字一样,都是在一条指令、一个内存周期内完成的。显然,按字拷贝效率更高。 原来两者都是通过逐字拷贝来实现的。但是“等号赋值”被编译器翻译成一连串的MOV指令,而memcpy则是一个循环。“等号赋值”比memcpy快,并不是快在拷贝方式上,而是快在程序流程上。测试发现,“等号赋值”的长度必须小于等于128,并且是机器字长的倍数,才会被编译成连续MOV形式,否则会被编译成调用memcpy。而同样的,如果memcpy复制的长度小于等于128且是机器字长的整数倍,会被编译成MOV形式。所以,无论你的代码中如何写

vector 内存释放问题

╄→尐↘猪︶ㄣ 提交于 2019-12-26 19:26:12
关于容器的处理,只是拿来用,理解不深,但是今天跑程序出了问题。释放空间未得到真正的释放。于是网上找了一些文章,解决的问题。 解决方法:使用swap 加上clear,一起释放空间。 原理:即先创建一个临时拷贝与原先的vector一致,值得注意的是,此时的拷贝(申请空间时系统分配容量)其容量是尽可能小的符合所需数据的。紧接着将该拷贝与原先的vector 进行交换。好了此时,执行交换后,临时变量会被销毁,内存得到释放。此时的v即为原先 的临时拷贝,而交换后的临时拷贝则为容量非常大的vector(不过已经被销毁)。 用法:例子如下: 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 vector <string> v; 7 char ch; 8 9 int main () 10 { 11 12 for(int i=0; i<1000000; i++) 13 v.push_back("abcdefghijklmn"); 14 cin >> ch; 15 // 此时检查内存情况 占用54M 16 17 v.clear(); 18 cin >> ch; 19 // 此时再次检查, 仍然占用54M 20 21 cout << "Vector 的 容量为" << v.capacity() << endl;

Python核心技术与实战——十二|Python的比较与拷贝

浪尽此生 提交于 2019-12-26 16:38:09
  我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = 123 b = 123 a == b 或者是将一个对象进行拷贝 l1 = [1,2,3,4,5] l2 = l1 l3 = list(l1) 那么现在试一下下面的代码:先创建个列表l1,再把这个列表进行一份拷贝至l2,最后把l1添加一个元素,看l2会发生什么变化? >>> l1 = [1,2,3,4,5] >>> l2 = l1 >>> l1.append(6) >>> l2 [1, 2, 3, 4, 5, 6] 是不是l2也变了!这里就引申出来一个概念:浅拷贝(shallow copy)和深拷贝(deep copy) 在对拷贝的概念进行分析前,我们先看一看下面的知识: ‘is’VS‘==’ is和==是我们在进行对象比较的时候常用的方法,简单的来说: == 操作是用来比较两个对象的值是否相等,比如下面的例子,就表示了变量a和b所指向的值是否相等 >>> a = 123 >>> b = 123 >>> a == b True 而is操作是用来判定对象的身份标识是否是相等的,也就是说判定两个对象是否指向同一内存地址。 在python中,每个对象都有一个ID,我们可以通过函数id()来获得 >>>a = 123 >>>id(a) 2011987232 因此,is操作就是判定两个对象的id是否相等