1、Linux系统中的scp是什么?
scp是远程拷贝文件命令。
上传目录:scp -r ./util 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/scp
上传文件:scp ./util 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/scp
a、将本机文件复制到远程服务器上
#scp /home/administrator/news.txt root@192.168.6.129:/etc/squid
#scp 本地文件的绝对路径/要复制到远程服务器上的文件名 root用户登录到远程服务器@远程服务器的ip地址:本地文件复制到远程服务器上的路径
b、将远程服务器上的文件复制到本机
#scp remote@www.abc.com:/usr/local/sin.sh /home/administrator
#scp remote用户登录到远程服务器@远程服务器的域名:要复制到本地的远程服务器上的文件名 将远程文件复制到本地的绝对路径
2、Linux中的死锁
死锁定义:一组进程中的每个进程都在无限期的等待一个资源,而这个资源被同进程中另外一个进程占用且永远不会释放。
产生死锁的原因:资源不足;进程推动顺利非法。
产生死锁的四个必要条件:
互斥:某种资源一次只能被一个进程所占用,其他进程不能在访问该资源。
不可抢夺:一旦某个资源被其他进程占有,其他进程不能抢夺。
占用并等待:某个进程占有了某种资源,但是还有其他资源的要求,但是其他资源被专用了,故而等待其他资源被释放。
循环等待:在发生死锁时必然存在一个进程等待队列{P1,P2,…,Pn}其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路,环路中每一个进程所占有的资源同时被另一个申请,也就是前一个进程占有后一个进程所申请的资源。
避免死锁的方法:设置加锁顺序;设置加锁时限;死锁检测。
3、数据结构中循环和递归哪个效率高
递归:运行需要调用函数本身,每次调用函数本身都需要保存局部变量、形参、调用函数地址、返回值,这势必会影响效率。但是递归代码少,程序容易理解,容易验证正确性。(斐波函数,阶乘)。所有递归都可以用循环代替。
循环:循环效率高,速度快、结构简单。但是有些问题用循环的话程序会特别复杂,不容易理解。
4、Python内存管理
变量与对象:
注意:Pyhton中变量名没有类型,对象才有类型(因为变量引用对象,所以类型随对象),变量引用什么类型的对象,变量就是什么类型的。Python的内置函数id()。它用于返回对象的身份(identity),就是该对象的内存地址。
1、变量:通过变量指针引用对象变量指针指向具体对象的内存空间,取对象的值。
2、对象:类型已知,每个对象都包含一个头部信息(头部信息:类型标识符和引用计数器)
3、Python缓存了整数和短字符串,因此每个对象在内存中只存有一份,引用所指对象就是相同的,即使使用赋值语句,也只是创造新的引用,而不是对象本身;
4、Python没有缓存长字符串、列表及其他对象,可以由多个相同的对象,可以使用赋值语句创建出新的对象。
5、通过is进行引用所指判断,is是用来判断两个引用所指的对象是否相同。
6、查看对象的引用计数:sys.getrefcount()。当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾。
注意:
a、垃圾回收时,Python不能进行其它的任务,频繁的垃圾回收将大大降低Python的工作效率;
b、Python只会在特定条件下,自动启动垃圾回收(垃圾对象少就没必要回收)
c、当Python运行时,会记录其中分配对象(object allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。
5、数据结构中常见搜索和排序法复杂度
搜索算法:
最小项搜索:
顺序搜索:
二叉搜索: (最坏的情况)
红黑树(R-B Tree):一种特殊的二叉查找树,红黑树的每个节点都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树的特点:
(1)每个节点或者是黑色或者是红色。
(2)根节点是黑色的
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,那它的子节点必须是黑色的
(5)从一个节点到该节点的子孙节点的所有路径上都包含相同数目的黑色节点
红黑树主要用来存储有序的数据(Linux虚拟内存管理),时间复杂度为,效率非常高。
排序算法:
选择排序、冒泡排序、插入排序(最坏情况)、快速排序:
合并排序: