python常用方法总结,python常考概念题

这篇文章主要介绍了python常用方法总结,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

HTTP协议:
HTTP是超文本传输协议的简称,他是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器之间交互数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,须遵循一定的通讯格式,HTTP用于定义客户端与web服务器之间的通讯格式python中turtle怎么画
二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(SecureSockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  • 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • 4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

IP
ip作用:用于标识网络上某一台设备,网络上不同设备要进行通信,IP地址不同

端口
端口作用:是操作系统分配给网络应用程序的编号,当接收到数据后,操作系统会根据编号来讲数据转发到对应编号的应用程序的,用于系统区分网络程序

端口号:就是标识端口的一个编号
知名端口:80端口分配给 HTTP服务
22端口分配给SSH服务
21端口分配给FTP服务

UDP

定义:用户数据报协议,他是无连接、不可靠的网络传输协议
UDP优缺点
优点

1、传输速度快
2、不需要链接,资源开销小
3、由于通讯不需要链接,可以发送广播

缺点

1、传输数据不可靠,容易丢失数据包
2、没用流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所有接受方需要及时接受数据

socket
定义:socket(套接字)是进程间通讯的一个工具,能实现把数据从一方传输到另外一方,完成不同电脑上进程之间的通信,好比数据的搬运工。

数据编码

str ==> bytes : encode 编码
bytes ==> str : decode 解码
字符串转字节串编码
字节串转字符串解码

  • 其中decode()与encode()方法可以接受参数,其声明分别为:
bytes.decode(encoding="utf-8",errors="strict")
str.encode(encoding="utf-8",errors="strict")

其中encoding是解码编码过程中的使用的编码格式,errors是指错误的处理方式

TCP
tcp是传输控制协议,他是一种面向链接的可靠地、基于字节流的传输层通信协议,用于HTTP、HTTPS、FTP等传输文件协议,
TCP优缺点
优点

TCP在传输数据时,,有确认、窗口、重传阻塞等控制机制,能保证数据正确性、较为可靠

缺点

传输速度慢
占用系统资源高

TCP安全,因为他存在三次握手四次挥手(校验数据)

通过三次握手的模式,可以是客户端和服务器端有效的保持通畅,这样就可以进行数据传输了,数据传输完成以后,通过四次挥手的模式,通过客户端和服务器端两次验证,把数据传输结束,这样保证TCP的安全性

三次握手

(客户端先发送
链接请求,服务器端响应客户端,连接上后客户端返回链接上数据(listen是让多人请求时,能进行一个请求等待,最大128连接数)握手没有完成之前的队列)

四次挥手

(客户端发起断开链接请求,服务器端返回响应,不立马断开链接,等待一段时间后断开链接,服务器发送断开链接给客户端,客户端返回断开成功)

多任务

并发:指的是任务数多于CPU核数,通过操作系统的各种任务调度算法,实现多个任务一起执行(实际上总有一些任务不在执行,以为任务切换的速度 相当快,看上去一起执行而已)
并行:指的是任务数小于等于CPU核数,即任务真的是一起执行

线程(import threading)

def test():
		print("abc")
print(test)  # 这是函数的引用,打印的是内存地址
test() # 这是函数的调用,打印的是值abc

线程的理解
线程就是在程序运行过程中,执行程序代码的一个分支,每个运行的程序至少都有一个线程

线程就是执行多任务的,是函数的引用,多个函数需要同时执行时使用,一个线程就是一个任务,就是一个函数,引用函数时不要加括号,就等于开多个窗口,一个窗口卡住了,其他窗口还可以运行

程序一创建,系统会自动给我们创建一个主线程,我们用threading可以开启一个子线程,放入的函数的引用会在子线程中执行,在开一个子线程将另一个函数的引用放入执行,线程之间互不影响,一个线程阻塞,另一个线程不受影响

 #先导入threading模块
 # 线程中有一个线程类,线程类中有参数,类加括号调用init方法
 sing_thread = threading.Thread(target=sing)
 # 开启线程
 sing_thread.start()

线程操作全局变量
多个线程可以操作同一个全局变量

进程的概念

#导入线程模块
import multiprocessing

进程:通俗理解一个运行的程序或者软件,进程是操作系统资源分配的基本单位

注意:一个程序至少有一个进程,一个进程至少有一个线程,多线程可以完成多任务

程序一开启就有一个主进程,主进程内有一个主线程,代码执行都是线程在执行,线程是CPU调度的单位,进程是操作系统资源分配的单位

进程之间不共享数据,子进程会复制主进程资源,进程号加ID就是唯一的编号 队列就是进程用来存储数据的,存的数量超过限制的数量,会造成阻塞,取得时候超过数量也会造成阻塞

进程、线程、协程对比

目标
知道进程和线程关系及优缺点

1. 功能对比

进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ
线程,能够完成多任务,比如 一个QQ中的多个聊天窗口

2. 定义对比

  • 进程是系统进行资源分配基本单位,每启动一个进程操作系统都需要为其分配运行资源。
  • 线程是运行程序中的一个执行分支,是CPU调度基本单位。
  • 总结:进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位

3. 关系对比

  1. 线程是依附在进程里面的,没有进程就没有线程
  2. 一个进程默认提供一条线程,进程可以创建多个线程
  3. 多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发
  4. 一个线程里面可以有多个协程

4. 区别

  1. 进程之间不共享全局变量
  2. 线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 互斥锁或者线程同步
  3. 创建进程的资源开销要比创建线程的资源开销要大
  4. 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
  5. 线程不能够独立执行,必须依存在进程中
  6. 多进程开发比单进程多线程开发稳定性要强

进程、线程、协程都是可以完成多任务的,可以根据自己实际开发的需要选择使用
由于线程、协程需要的资源很少,所以使用线程和协程的几率最大
开辟协程需要的资源最少

优缺点

多进程:

优点:可以用多核
缺点:资源开销大

多线程:

优点:资源开销小
缺点:不能使用多核

迭代器

  • 迭代:

可以用for循环遍历取值的过程

  • 迭代对象:

使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串

  • 装饰器:

本质上是python函数,可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象

  • 闭包:

在函数内部在定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

迭代器必须是可迭代对象

for value in [2, 3, 4]:
    print(value)

可迭代对象

使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串

    def __iter__(self):
        # 可迭代对象的本质:遍历可迭代对象的时候其实获取的是可迭代对象的迭代器, 然后通过迭代器获取对象中的数据
from collections import Iterable
my_list = MyList()
result = isinstance(my_list, Iterable)
#  Iterable判断是否是可迭代对象

iter()函数与next()函数

iter函数: 获取可迭代对象的迭代器,会调用可迭代对象身上的__iter__方法
next函数: 获取迭代器中下一个值,会调用迭代器对象身上的__next__方法
自定义迭代器对象: 在类里面定义__iter__和__next__方法创建的对象就是迭代器对象

# 自定义一个类去判断当前的类是否可以被迭代

from  collections import Iterable  # 可迭代的对象


# 只要类实现iter,那么这个类就可以被迭代
# 只要类实现了iter 跟next这两个方法就是迭代器了
class MyIter(object):
	# 初始化值
	def __init__(self):
		self.value = 0  # 初始化的值

	# 这个返回迭代器对象
	def __iter__(self):
		return self  # 这个以后自定义迭代器固定写法就是返回self

	# 返回迭代的数据
	def __next__(self):
		# 手动抛出异常

		# 每一次数据都 增长
		self.value += 1
		# 到十停止
		if self.value > 10:
			# 停止 迭代
			raise StopIteration

		return self.value


# 得到一个对象
my_iter = MyIter()

# print(isinstance(my_iter, Iterable))
# 这个类是一个可迭代的对象,但是他还不能被迭代,因为他没有返回迭代的数据
# 如果你要使用for,那么你一定要是一个迭代器对象,迭代器前提是你是可迭代的对象,但是再加一个返回数据

for temp in my_iter:
	print(temp)

迭代器与列表的区别

迭代器是在里面写了一个公式,而不是将数据真正的存进来,在内存使用上比列表效率更高一点。列表是将所要数据循环遍历一遍,占用内存比较严重

for循环底层

是iter和next一步步拆分出来的

# for 循环的底层
# 生成一个一百万的数据遍历

class MyIter(object):
	# 实现两个方法iter,next

	# 初始化值
	def __init__(self):
		self.start = 0  # 初始化起始值

	def __iter__(self):
		return self  # 返回自身

	def __next__(self):
		# 判断是如果到了一百万那么手动抛出停止迭代的异常
		if self.start > 1000000:
			# 停止迭代
			raise StopIteration

		self.start += 1

		return self.start


my_iter = MyIter()

# for temp in my_iter:
# 	print(temp)

# 得到我们的迭代器对象
my_iter_object = iter(my_iter)
# iter next拆分得到for循环,是一个一个next遍历出来的

# 得到迭代的数据
print(next(my_iter_object))
print(next(my_iter_object))
print(next(my_iter_object))

生成器

生成器就是迭代器,迭代器必须是可迭代对象,生成器生成的方式不一样
生成器不需要定义类,
生成器第一种方式

# 生成器是一种特殊的迭代器,特殊在于他的生成的方式不能通过类实现iter跟next

# 列表推导式
a_list = [x for x in range(10)]

# print(a_list)


# 把列表推导式的[]改成()就是生成器了
# 了解一下
a_list = (x for x in range(10))

print(a_list)

for temp in a_list:
	print(temp)

生成器第二种方式
gevent的底层就是yield,可以使两个函数之间来回切换,因为next使函数执行了一次,然后在执行另一个函数,就实现了两个函数的来回切换,但是需要有耗时任务,没有耗时任务是无法来回切换

# 使用函数生成器,把return 换成yield就是生成器了
# 只要函数中有yield那么就是生成器了

def count():
	for temp in range(10):
		yield temp  # yield能让我们的函数暂停执行


print(count())

# 得到器对象
count_iter = iter(count())
# 迭代
print(next(count_iter))
print(next(count_iter))
print(next(count_iter))
print(next(count_iter))
print(next(count_iter))
print(next(count_iter))

闭包

# 格式
# 两个函数嵌套, 外部函数返回内部函数的引用,一般外部函数都有参数,外部参数的值会一直保留在内存中
def 外部函数(参数):
	def 内部函数():
		# 让函数做一些事情
		print(参数)

	return 内部函数


内部函数的引用 = 外部函数("传入参数")
# 执行内部的函数
内部函数的引用()

装饰器

def set_fun(func):
	def call_fun(*args, **kwargs):
		print("装饰一把")
		return func(*args, **kwargs)

	return call_fun
	
@set_fun
def test():
	print("test")


test()

多个装饰器装饰一个函数
执行顺序是先上后下,先外后内

def set_fun1(func1):
	print("set_fun1")

	def call_fun1():
		print("call_fun1")
		func1()

	return call_fun1


def set_fun2(func2):
	print("set_fun2")

	def call_fun2():
		print("call_fun2")
		func2()

	return call_fun2


@set_fun2
@set_fun1
def test():
	print("test")


test()

gil锁

gil全局解释器锁 ,是python解释器历史遗留问题,跟python语言没有什么关系,换一个jpython就没有这个问题了。不用线程用进程

对多线程的影响,在同一时刻只有一个线程执行,这些线程在一同个进程内

并阐明多线程抓取程序是否可比单线程性能有提升,多线程还是可以用到多核的资源,但是爬虫是一个阻塞的东西,网络的速度比CPU的速度慢很多,

任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行

Python虽然不能利用多线程实现多核任务,但可以通过多进程实现多核任务

拷贝与引用的区别

引用:是两个变量值,指向同一个内存地址
拷贝:是会生成一个新的内存地址
在这里插入图片描述

浅拷贝

拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝

外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

切片与深浅拷贝

1.切片可以应用于:列表、元组、字符串,但不能应用于字典。
2.深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典。

深浅拷贝的作用

1,减少内存的使用
2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

单例模式
使一个类只能创建一个对象,创建单例时只执行一次__init__方法

class Person(object):
    instance = None
    is_first_run = True

    def __new__(cls, *args, **kwargs):
        if cls.instance == None:
            cls.instance = object.__new__(cls)
        return cls.instance

    def __init__(self, name=''):
        if Person.is_first_run:
            self.name = name  # 只有第一次创建对象才应该赋值
            Person.is_first_run = False

    def set_name(self, new_name):
        self.name = new_name


zs = Person('张三')
print(zs.name)

li = Person()
print(li.name)
li.set_name('李思')
print(zs.name)

flask和Django路由映射的区别

索引:

是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息。如火车站的车次表、图书的目录等

数据库优化
1、使用索引(B+树、hash)

应 尽量避免全表扫描,首先应考虑在order,group by 涉及的列上建立索引

2、优化SQL语句

通过explain(查询优化神器)用来查看SQL语句的执行效果,可以帮助写出更 好的SQL语句: (1)避免使用select * from,用具体的字段代替 *,不要返回用不到的任何字段 (2)不在索引列做运算或者使用函数
(3)尽量使用limit减少返回的行数,减少数据传输时间和带宽浪费

3、优化数据库对象

(1)使用procedure
analyse()函数对表进行分析,该函数可以对表中列的数据类型提出优化建议,使用能正确的表示和存储数据的最短类型,这样可以减少对磁盘空间。内存。CPU缓存的使用

4、使用缓存

把经常访问的且不需要经常变化的数据放在缓存中能节约磁盘的IO

5、主从复制、读写分离、负载均衡

6、分布式

函数装饰器有什么作用(常考)

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

python高并发

  • 1.HTML页面静态化
  • 2.图片服务器分离(可以用fastdfs轻量级的分布式文件存储系统)
  • 3.使用缓存(用redis)
  • 4.数据库集群、库表散列
  • 5.使用负载均衡的方法(配置nigix服务器)

python2和python3的区别

python2python3
import导入标准库使用的是相对路径(同一目录下有file.py如何同时导入这个文件和标准库)如果需要导入同一目录的文件必须使用绝对路径,否则只能使用相关导入方式来进行导入
存在老式类和新式类的区别统一采用新式类,新式类申明要求继承object,必须用新式类应用多重继承
1个tab和8个space是等价的,所以在缩进中可以同时运许tab和space在代码中共存,这中种等价机制会导致部分IDE(开发工具pycharm)使用存在问题1个tab只能找另外一个tab代替,因此tab和space共存会导致报错:TabError:inconsistent use of tabs and spaces n indentation
print语句 print " "print函数()
long整数类型统一使用int类型
raw_input()函数废弃raw_input使用input()函数
任意两个对象都可以比较 11<'test'#Truepython3中只有同一数据类型的对象可以比较11 < 'test #TypeError:unorderable types:int() < str()'

PEP8规范

  • 常量:大写加下划线USER_CONSTANT
  • 私有变量:小写和一个前导下划线_private_value
  • 内置变量:小写,两个前导下划线和两个后置下划线__class__
  • :类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写.类名应该简明,精确,并足以从中理解类所完成的工作。常见的一个方法是使用表示其类型或者特性的后缀,例如:SQLEngine,MimeTypes对于基类而言,可以使用一个Base 或者 Abstract 前缀BaseCookie,AbstractGroup
  • 空格的使用
    总体原则,避免不必要的空格。
    1 各种右括号前不要加空格。
    2 逗号、冒号、分号前不要加空格。
    3 函数的左括号前不要加空格。如Func(1)。
    4 序列的左括号前不要加空格。如list[2]。
    5 操作符左右各加一个空格,不要为了对齐增加空格。
    6 函数默认参数使用的赋值符左右省略空格。
    7 不要将多句语句写在同一行,尽管使用‘;’允许。
    8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。
> linux命令总结
  • 启动终端: ctr+alt+t
  • 终端字体放大: ctr+shift+’+’,终端字体缩小: ctr+’-’
  • ls: 查看当前目录下的文件信息
  • pwd: 查看目录所在的路径
  • touch: 创建文件
  • mkdir: 创建文件夹
  • rmdir: 删除文件夹,提示:只能是空文件夹
  • rm: 默认删除的是文件,如果删除文件夹需要加上-r选项,-r:以递归的方式把文件夹下的所有文件信息删除掉
cd:切换目录
  • 1 cd 目录名 : 切换到指定目录
  • 2 cd .: 切换到当前目录
  • 3 cd …: 切换到上一级目录
  • 4 cd ~: 切换到当前用户的目录
  • 5 cd: 等价与cd ~ 切换到当前用户的目录
  • 6 cd -: 切换到上一次目录
绝对路径: 从根目录算起的路径叫做绝对路径,比如: /home/python
相对路径: 从当前目录算起的路径叫做相对路径, 比如: ./AAA …/BBB

路径的使用总结: 如果离当前目录近使用相对路径,如果离根目录近使用绝对路径,如果进入的是中间目录建议使用绝对路径
自动补全: 两次tab键

cp: 拷贝
  • 1、cp 文件名 路径: 把文件拷贝到指定路径
  • 2、cp 路径/文件名 路径: 把指定路径的文件拷贝到指定路径
  • 3、cp 文件名 路径/新的文件名 : 先把文件拷贝到指定目录然后再重命名
  • 4、cp 文件夹 路径 -r: 拷贝文件夹 -r:以递归的方式把文件夹下的所有文件拷贝过去
mv: 移动(剪切)
  • 1、mv 文件名 路径: 把文件移动到指定路径
  • 2、mv 路径/文件名 路径: 把指定路径的文件移动到指定路径
  • 3、mv 文件名 新的文件名: 重命名
  • 4、mv 文件夹 路径: 把文件夹移动到指定目录,不需要加上-r

tree: 以目录树方式显示当前文件夹信息

  • 1、tree / : 以目录树方式显示指定路径的文件信息
命令的格式

1、命令名 选项 参数, 提示:有些命令选项可以放到参数的后面,但是:scp 选项必须要放到命令名的后面

ls 选项
  • 1、-l: 以列表的方式取显示
  • 2、-a: 显示隐藏文件
  • 3、-h: 显示文件大小的单位
  • 4、ll: ls -al 显示隐藏文件并且以列表方式显示 , l->ls
mkdir 选项

22.1 -p: 把依赖文件夹提取创建好,比如: mkdir 123/456/789 -p

rm选项
  • 1、-r: 以递归的方式删除文件夹里面的所有内容
  • 2、-i: 显示删除的时候提醒信息
  • 3、-v: 显示删除后的描述信息
  • 4、-d: 删除空目录
  • 5、-f: 如果文件或者目录存在则删除,否则就不删除也不会报错
cp选项
  • 1、-i:拷贝文件的时候如果指定目录有该文件需要显示提醒信息
  • 2、-v:显示拷贝文件的路径描述
  • 3、-r:以递归的方式拷贝文件夹里面的所有内容
mv选项
  • 1、-i:移动文件显示提醒信息
  • 2、-v:显示移动后的路径描述

重定向(>,>>): 在终端显示的内容信息重写规定方向,保存到指定文件里面,以后查看数据是文件查看就可以了

  • 1、> :如果文件不存在,那么先创建,否则会先把原有文件的数据清空然后再写入
  • 2、>> : 在原有数据的基础上进行追加
  • 3、总结: ls, cat, tree都可以使用重定向
gedit:文本编辑工具,可读可编辑
cat: 内容在终端显示,不能进行编辑,提示:适合查看小型文件,大型文件使用分屏方式显示(more)
more:分屏显示
  • 1、f:表示下一页
  • 2、空格:表示下一页
  • 3、回车: 表示下一行
  • 4、b:表示上一页
  • 5、q:退出
文件合并

cat 1.txt 2.txt > 3.txt

管道: 可以理解成是一个容器,存放在终端显示的内容

28.1 总结: ls /bin | more , cat, tree, ls都是可以结合管道使用完成分屏显示的

链接
  • 1、软连接:可以理解成快捷方式,把原文件删除掉通过软链接无法打文件的数据, 提示:创建软连接不会对硬链接数加1
  • 2、硬连接: 同一个数据有多个文件名在使用,某个文件删除掉,还可以通过其它文件名访问这个文件的数据, 提示:创建硬链接硬链接数会加1
  • 3、提示:如果创建的软链接没有和原文件在同一个目录里面,那么需要使用绝对路径创建软连接
grep: 根据指定的内容在文件中进行查找
  • 1、grep “a” 8.txt : 根据指定内容在文件中进行查找
  • 2、-n:行号, -i:忽略大小写 -v: 取反
  • 3、总结: ^,$ [], . 支持的正则表达式
find:在指定目录查找对应的文件
  • 1、find . -name “.txt”: 在当前目录查找后缀是.txt的文件, -name根据文件名查找
  • 2、find . -perm 666: 在当前目录查找文件权限是可读可写的, -perm根据权限查找
  • 3、总结: ? [] 支持的通配符
ls:支持的通配符: _,? , [], []:表示匹配任意列举中的一个字符
通配符: ? _ [],起到了模糊查询的作用
tar: 打包、压缩、解包、解压缩
  • 1、打包 tar -cvf test.tar *.txt, -c: 表示要打包, -v:显示文件打到包里面 -f:表示文档名称,提示-f必须放到所有选项的后面
  • 2、解包 tar -xvf test.tar , -x:表示解包
  • 3、打包及压缩合并的命令:tar -zcvf test.tar.gz *.txt
  • 4、解压缩及解包合并的命令:tar -zxvf test.tar.gz ->得到对应的文件
  • 5、指定解压缩的路径 tar -zxvf test.tar.gz -C …/BBB, -C:指定解压缩后的路径
  • 6、tar -jcvf test.bz2 *.txt -> test.bz2
  • 7、tar -jxvf test.bz2 -> 得到对应的文件
  • 8、-C: 指定解压缩的路径: tar -jxvf test.bz2 -C …/BBB
zip的压缩及解压缩
  • 1、zip test *.txt -> test.zip ,提示:压缩包的后缀不需要指定默认是.zip
  • 2、unzip test.zip -> 得到是压缩包里面的文件
  • 3、unzip -d ./123 test.zip -> 解压到指定路径 , -d:表示解压的路径
chmod:修改权限
  • 1、-r(4):可读 -w(2):可写 -x(1):可执行
  • 2、u:当前用户 g: 同组用户 o: 其它用户 a:所有用户
  • 3、+:添加权限, -:撤销权限 , = : 赋值权限
  • 4、chmod 000 1.txt : 全部没有权限
  • 5、chmod a=- 1.txt chmod a= 1.txt : 全部没有权限
  • 6、chmod 777 1.txt chmod a=rwx 1.txt : 都权限,可读可读可执行
  • 7、chmod 664 1.txt chmod u=rw,g=rw,o=r 1.txt 设置不同用户不同权限
cp选项
  1. -a: 保留文件原有权限,-a包含-r,也就是使用-a也可以拷贝文件夹

which : 查看命令的路径

sudo -s: 切换到管理员账号
  1. passwd:修改密码
  2. who :当前那些用户登陆
  3. whoami:当前电脑登陆的用户是谁
  4. exit:退出
  5. ssh: 远程登陆 44.1 ssh : 可以远程登陆服务端可以通过vim修改文件
  6. scp: 远程拷贝

1.scp 1.txt python@192.168.107.132:/home/python/Desktop ,把本地文件拷贝到服务器端
2.scp -r test python@192.168.107.132:/home/python/Desktop,把本地文件夹拷贝到服务器端
3.scp python@192.168.107.132:/home/python/Desktop/1.txt . , 把服务端的文件拷贝的本地
4.scp -r python@192.168.107.132:/home/python/Desktop/test, 把服务端的文件夹拷贝的本地

apt list 支持的安装包

vim的使用

47.1 命令模式, 编辑模式, 末行模式, 命令模式是编辑模式和末行模式的中转站

vim常用命令
  1. esc:切换模式
  2. i: 进入编辑模式
  3. yy: 复制光标所在行 复制多行: 数字+yy
  4. p: 粘贴, 粘贴多次: 数字+p
  5. dd(删除、剪切), 剪切或者删除多行:数字+dd
  6. V: 选中多行
  7. 上下左右: k:上, j:下, l:右 ,h:左 等同于方向键
  8. x: 从前往后删除一个字母
  9. X: 从后往前删除一个字母
  10. u: 撤销
  11. shift + >: 往右缩进
  12. shift + <: 往左缩进
  13. .:重复上一次操作
  14. G: 回到最后一行
  15. gg: 回到第一行 1G
  16. 18G: 回到指定行
  17. shift + 4:回到行末
  18. shift + 6:回到行首
  19. 搜索: :/1 n:查看下一个搜索到的内容, N:查看上一个搜索到的内容
  20. 替换: :%s/1/2/g %: 整个文件, s:替换 g:全局
  21. ctr+f: 下一页
  22. ctr+b: 上一页
  23. :wq 48.23. :x 保存退出

你觉得你个性上最大的优点是什么?

沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。

你对加班的看法?

  • 回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公司奉献。
  • 回答样本:如果是工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。

你对薪资的要求?

  • 回答样本:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。

你还有什么问题要问吗?

  • 回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。

你为什么要从上家公司离职?

  • 回答提示:其实任何人跳槽都是由主观原因和客观原因造成的,我们在回答离职原因这个问题的时候就需要多提及到客观原因了。例如:搬家了,在以前公司上班不方便;家里需要照顾所以就想找离家近的公司;公司倒闭了等等的原因都是可以说的。如“我离职是因为这家公司倒闭。我在公司工作了三年多,有较深的感情。从去年始,由于市场形势突变,公司的局面急转直下。到眼下这一步我觉得很遗憾,但还要面对显示,重新寻找能发挥我能力的舞台。”

你为什么选择我们公司?

  • 回答提示: 1、 面试官试图从中了解你求职的动机、愿望以及对此项工作的态度。 2、 建议从行业、企业和岗位这三个角度来回答。 3、 参考答案——“我十分看好贵公司所在的行业,我认为贵公司十分重视人才,而且这项工作很适合我,相信自己一定能做好。”

如果我录用你,你将怎样开展工作?

  • 回答提示: 思路: 1、 如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法, 2、可以尝试采用迂回战术来回答,如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作。”

对这项工作,你有哪些可预见的困难?

  • 回答提示: 思路: 1、 不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。 2、可以尝试迂回战术,说出应聘者对困难所持有的态度——“工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服的。”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值