LVS工作模式:

传输层

会话保持:负载均衡

(1) session sticky:同一用户调度固定服务器

Source IP:LVS sh算法(对某一特定服务而言)

Cookie

(2) session replication:每台服务器拥有全部session

session multicast cluster

(3) session server:专门的session服务器

Memcached,Redis

路由表:

接口:本路由器出口

网关:

直接相连:0.0.0.0

间接相连:下一个路由器邻近本路由器的接口的IP

DHCP:

第一步:discover(发现)

第二步:offer

第三步:request

第四步:ack

锁:

with 上下文管理锁

__enter__,__exit__魔术方法

非阻塞锁:用if语句,获取锁则返回True

cond=threading.Condition()

with cond:

cond.notify_all()

with cond:

cond.wait()

基础知识补充:

__slots__属性

模块化:

import语句:

加载和初始化它,生成模块对象,在自己的作用域内关联模块对象名称加入名词空间并绑定其模块对象,让后引用它。

sys.modules----查看作用域中加载的模块

dir()----------查看当前作用域名词空间

字典----不重复导入

__name__设置为__main__-----顶层代码

异常与错误:

def foo2():

try:#捕获异常

foo1()

except Exception as e:#异常处理

print('foo2 deal')

open('abcde')

finally:#清理工作

print('foo2 fin')

class MyException(Exception):

pass

try:

raise MyException('My Error')

except MyException as e:#e =MyException('My Error')

print(e)

魔术方法:

描述器:

自己写一个@classmethod函数------partial函数

class ClassMethod:

def __init__(self,fn):

print(fn)

self.fn = fn

def __get__(self, instance, cls):

print(self,instance,cls)

# return self.fn(owner)

return partial(self.fn,cls)

__get__()、__set__()、__delete__()

一个类的类属性是一个描述器,并且是一个数据描述器,对它实例同名属性的操作,相当于类属性。

class A:

def __init__(self):

print('A.init')

self.a1 = 22

def __get__(self, instance, owner):

print('__get__',self.__class__,instance,owner)

return self

def __set__(self, instance, value):

print('__set__',self,instance,value)

class B:

x = A()

def __init__(self):

print('B.init')

self.x = 100

运行时动态添加属性----反射

编译期已固定-----装饰器,mixin继承

内建函数:getattr,setattr,hasattr

反射魔术方法:__getattr__()、__setattr__()、__delattr__()

def timeit(fn):

@wraps(fn) # a = wraps(fn)(wrapper)----拿到源函数属性

def wrapper(*args,**kwargs):

start = datetime.datetime.now()

ret = fn(*args,**kwargs)

delta = (datetime.datetime.now() - start).total_seconds()

print('{} took {}s'.format(fn.__name__,delta))

return ret

return wrapper

class TimeIt:

"""This is a class"""

def __init__(self,fn):

print('init')

self._fn = fn

# self.__doc__ = self._fn.__doc__

# self.__name__ = self._fn.__name__

wraps(self._fn)(self)----拿到源函数属性,_fn为源,self目标

class Point:

def __init__(self):

print('init')

def __enter__(self):

print("enter")

return self

with p as f:-----f为return返回值

set集合先调is 再调==

hash值相同和值是否相等---》去重

hash:

hash冲突

def hash(x):

return x % 3

hash(4)和hash(7)冲突。

python3实现方法链:

class Person:

def name(self, value):

self.name = value

returnself

def age(self, value):

self.age = value

returnself

def introduce(self):

print "Hello, my name is", self.name, "and I am", self.age, "years old."

person = Person()

person.name("EarlGrey").age(21).introduce()

# => Hello, my name is EarlGrey and I am 21 years old.

那么return self返回的结果是什么呢?

class Foo(object):

def __init__(self):

self.myattr = 0

def bar(self):

self.myattr += 1

return self

f = Foo()

print(type(f.bar()))

输出结果为:

链表用列表实现的原因:

借有序的列表存放无序的node,无序的node间关系用类的next连接一起实现

在栈上与内建关键字冲突,没关系,加载即消失。但是函数名称与内建函数冲突会产生递归调用。

class Shape:

@property

def area(self):

raise NotImplementedError('基类未实现')------------基类为模板,子类必须实现,不然抛异常。

实例的__dict__字典序列化。类属性不用序列化(每个实例属性不同,变量),类属性一般为常量,可以直接拿到。

书籍推荐:UML,算法导论

实例属性:个性化,多份,每个实例都不同,放在每个实例自己的__dict___中

类属性:抽象,一份,共用,通用(方法),

class Pair:

def __init__(self, x, y):

self.x = x

self.y = y

def__repr__(self):

return 'Pair({0.x!r}, {0.y!r})'.format(self)

def__str__(self):

return '({0.x!s}, {0.y!s})'.format(self)

import random

class RandomGenerator:

'''

1 解决随机数边界问题

2 随机数生成

3

'''

# @classmethod

def __init__(self,count=10,start=1,stop=100):

self.count = count

self.start = start

self.stop = stop

self.gen = self._generate()

def _generate(self):

while True:

yield [random.randint(self.start,self.stop) for _ in range(self.count)]

def generate(self,count):

self.count = count

return next(self.gen)

rg = RandomGenerator()

gen = rg.generate(3)

print(gen)

面向对象----猴子补丁

大数据领域采集日志(Flume,Scribe)

https://www.cnblogs.com/liujiacai/tag/-----RD文档

https://pythoncaff.com/docs/pymotw----Python 3 标准库实例教程,python开发者中文网

多使用内建函数:过滤:filter,排序:sort,映射:map,dic

names = os.listdir(src)

if ignore is not None:

ignored_names = ignore(src, names)

else:

ignored_names = set()

zip和lambda用法技巧思路:

def wordcount(file='sample.txt'):

chars='''~!@#$%^&*()_+{}[]|\\/""'=;:.-<>'''

with opoen(file,encoding='utf-8') as f:

word_count={}

for line in f:

words line.split()

for k,v in zip(words,(1,)*len(words)):

k=k.strip(chars)

k=k.lower()

word_count[k] = word_count.get(k,0)+1

lst= sorted(word_count.items(),key=lambda x:x )

4.SHELL脚本基础

格式要求:首行shebang机制

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

脚本调试

检测脚本中的语法错误

bash -n /path/to/some_script

调试执行

bash -x /path/to/some_script

bash中变量的种类

根据变量的生效范围等标准划分下面变量类型:

局部变量:生效范围为当前shell进程;对当前shell之外的

其它shell进程,包括当前shell的子shell进程均无效

环境(全局)变量:生效范围为当前shell进程及其子进程

本地变量:生效范围为当前shell进程中某代码片断,通常

指函数

位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调

用通过命令行传递给它的参数

特殊变量:$?, $0, $*, $@, $#,$$

$1, $2, ...:对应第1、第2等参数,shift [n]换位置

测试命令:

• test EXPRESSION

• [ EXPRESSION ]

• [[ EXPRESSION ]]

注意:EXPRESSION前后必须有空白字符

$(seq [start [step]] end)

引用数组中的元素:

数组切片:${ARRAY[@]:offset:number}

offset: 要跳过的元素个数

number: 要取出的元素个数

取偏移量之后的所有元素

${ARRAY[@]:offset}

3.包管理

rpm

yum

yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据

文件(放置于特定目录repodata下)

文件服务器:

http://

https://

ftp://

file://

repo文件格式

yum仓库

程序包编译:

2.Linux基础

判断内外部命令;tpye

查看内部命令:enable

PS1="\[\e[1;33m\][\u@\h \W]\\$\[\e[0m\]"

PATH环境变量设置,外部命令查找机制,搜索路径为PATH

which查看命令路径

whereis hostname:查看外部命令位置,帮助文档路径,相关文件

外部命令第一次在磁盘找,根据PATH变量,放到hash表。第二次执行时,从hash表调出

hash查看哈希表

alias别名:设置常用路径,存放.bashrc,

unalias取消别名,-a取消所有别名

tty显示终端类型命令

lsb_release -a

uname -r

clock -w与系统时间同步,clock -s系统时间与硬件时间同步

/etc/localtime时区文件二进制

修改网卡名称为eth0样式

http://blog.51cto.com/oldboy/1722101

gedit /boot/grub2/grub.cfg

修改行:linux16 后加 net.ifnames=0

reboot

ntpdate IP 同步时间

https://www.cnblogs.com/freeweb/p/5390552.html

vim /etc/ntp.conf

server IP iburst

systemctl restart ntpd.service

/etc/localtime ------时区文件

localectl list-locales---------列出所有语言

localectl  ---所有参数> list-keymaps  set-keymap   set-x11-keymap    list-locales set-locale status

cal -y  日历

timedatectl----时区命令参数>list-timezones  set-ntp set-timezone  set-local-rtc set-time status

shutdown---关机参数>A,B两台机连同一台电脑主机

w命令:显示用户主机,显示正在执行操作命令。

screen命令:远程协助,共享桌面给别人操作,同步桌面。

A:screen -S  help 开启回话,回话名称help

B:screen -ls 查看回话

B:screen -x help  加入回话help

A:Ctrl +a,d----->临时退出

screen -r  help 恢复回话

B:exit 退出回话

echo命令

echo -e '\033[43;31;5mmagedu\033[0m'

引号,括号的用法

https://www.cnblogs.com/liujiacai/p/7828620.html-----引号用法总结

https://www.cnblogs.com/liujiacai/p/7841246.html------括号用法总结

结论:

反引号`` 等于$(),反向单引号,命令调用另一个命令的执行结果时使用

echo {1..10..2}

echo {A..a}

history--命令>存放文件,家目录的.bash_history,这是重启机器后history还有记录的原因

!1026(序号)执行1026序号命令

!-3执行倒数第三条命令

!s执行以s开头最近的一条命令

!?it包含it结尾的最近一条命令

默认系统保留1000个命令,可以修改/etc/profile文件HISTSIZE=1000------这条参数

帮助命令:

whatis----显示命令的简短描述,man –f同样

内部命令:type command

help COMMAND

man bash

外部命令: (1) COMMAND --help

COMMAND -h

(2) 使用手册(manual)

man COMMAND

(3) 信息页

info COMMAND

(4) 程序自身的帮助文档

README

INSTALL

ChangeLog

(5) 程序官方文档

官方站点:Documentation

(6) 发行版的官方文档

(7) Google

umask

特殊权限:

passwd:普通用户能改密码的原理

suid权限:通过拥有suid权限的文件以主用户权限访问任务文件,二进制文件。

sgid权限:一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组

用途解决痛点:通常用于创建一个协作目录,同组人新建文件统一为父目录属组。

粘制位权限Sticky 位:

解决痛点:具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

sticky 设置在文件上无意义

chmod o+t DIR...

chmod 1644 /DIR

例如:/tmp目录

访问控制列表:

cat -A 查看特殊字符

-E: 显示行结束符$

-n: 对显示出的每一行进行编号

-A:显示所有控制符

-b:非空行编号

-s:压缩连续的空行成一行

tac命令:倒着显示结果

rev命令:倒着显示结果

more

less

cut

paste

head

tail

用上诉所学命令写取IP脚本

文本处理工具:

tr压缩:http://blog.csdn.net/sunnyyoona/article/details/52986893

pate粘贴,横向、纵向合并文件:http://www.xfcodes.com/linuxcmd/mulu/10211.htm

sort

wc

diff

uniq

last:每个用户登入过记录情况

seq

grep

/dev/null----->垃圾回收站

正则表达式

扩展正则表达式

vi

vim

处理文本的工具sed:

行编辑器原理,模式空间

用法:

sed [option]... 'script' inputfile...

常用选项:

-n:不输出模式空间内容到屏幕,即不自动打印

-e: 多点编辑

-f:/ PATH/SCRIPT_FILE : 从指定文件中读取编辑脚本

-r: 支持使用扩展正则表达式

-i.bak: 备份文件并原处编辑

script:

'地址命令'

sed 's/BASH/'''$USER'''/' /etc/passwd

awk介绍

awk:Aho, Weinberger, Kernighan,报告生成器,格式化文本输出

 有多种版本:New awk(nawk),GNU awk( gawk)

 gawk:模式扫描和处理语言

 基本用法:

awk [options] ‘program’ var=value file…

awk [options] -f programfile var=value file…

awk [options] 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' file ...

awk 程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块,共3部

分组成

program通常是被单引号或双引号中

 选项:

-F 指明输入时用到的字段分隔符

-v var=value: 自定义变量

awk语言

基本格式:awk [options] 'program' file…

program:pattern{action statements;..}

pattern和action:

• pattern部分决定动作语句何时触发及触发事件

BEGIN,END

• action statements对数据进行处理,放在{}内指明

print, printf

分割符、域和记录

• awk执行时,由分隔符分隔的字段(域)标记$1,$2..$n称为

域标识。$0为所有域,注意:和shell中变量$符含义不同

• 文件的每一行称为记录

• 省略action,则默认执行 print $0 的操作

awk工作原理

 第一步:执行BEGIN{action;… }语句块中的语句

 第二步:从文件或标准输入(stdin)读取一行,然后执行

pattern{ action;… }语句块,它逐行扫描文件,从第一行到最后一

行重复这个过程,直到文件全部被读取完毕。

 第三步:当读至输入流末尾时,执行END{action;…}语句块

 BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个

可选的语句块,比如变量初始化、打印输出表格的表头等语句通常

可以写在BEGIN语句块中

 END语句块在awk从输入流中读取完所有的行之后即被执行,比如

打印所有行的分析结果这类信息汇总都是在END语句块中完成,它

也是一个可选语句块

 pattern语句块中的通用命令是最重要的部分,也是可选的。如果没

有提供pattern语句块,则默认执行{ print } ,即打印每一个读取到的

行,awk读取的每一行都会执行该语句块

awk

 print格式: print item1, item2, ...

 要点:

• (1) 逗号分隔符

• (2) 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式

• (3) 如省略item,相当于print $0

 示例:

awk '{print "hello,awk"}'

awk –F: '{print}' /etc/passwd

awk –F: ‘{print “wang”}’ /etc/passwd

awk –F: ‘{print $1}’ /etc/passwd

awk –F: ‘{print $0}’ /etc/passwd

awk –F: ‘{print $1”\t”$3}’ /etc/passwd

tail –3 /etc/fstab |awk ‘{print $2,$4}’

begin----相当于表头,与文件没关系,在读取文件之前操作

pattern-----处理文件,一行一行

end-------汇总,

if,for,while语句

break:结束本次循环

continue:跳过这一循环进入下一循环

next:提前结束对本行处理而直接进入下一行处理(awk自身循环)

Linux基础一:

Python全能自动化开发环境软件之pyenv的安装说明

http://www.magedu.com/73921.html

1.分区

MBR分区

主分区:一块硬盘最多四个主分区,一个或多个,可以格式化ntfs,存数据

扩展分区:一块硬盘最多1个扩展分区,可以没有,划分为更小的单元,即逻辑分区

逻辑分区:可以格式化ntfs,存数据

lscpu

lsmem

lsblk

free -h

马哥python_马哥Python 开发9期相关推荐

  1. 马士兵python_马士兵:python学习(一)

    python学习 一. 输出函数print(P6) 1. 输出数字和字符串 print(520) print(52.01) print("hello world") print(h ...

  2. 马士兵python_马士兵老师的python入门教程

    01 Python编程语言历史及特性.mp4 02 Python编程语言初接触.mp4 03 Python程序文件结构.mp4 04 准备Python编程环境.mp4 05 Python编程语言基础技 ...

  3. 马士兵python_马士兵python大数据全栈工程师

    3. 进程与线程的关系 一个程序就是一个进程,而一个程序中的多个任务则被称为线程.进程是表示资源分配的基本单位,又是调度运行的基本单位.,亦即执行处理机调度的基本单位. 进程和线程的关系:一个线程只能 ...

  4. 学完java后学python_大火的python开发学好后能找到工作吗

    别再被忽悠了!想靠Python找工作,你在做梦! 今天的内容比较逆耳,主要是针对市场大环境有感而发,聊一聊当前存在的一些问题,并非让大家不要学Python,请大家辩证看待. 我在数据分析行业中浸淫了十 ...

  5. 菜鸟python_菜鸟爱Python第1期:Python发展史?对Python最深刻的解读

    这是胜天半子的第1篇原创. 前言 也许你不是一名程序员,也许你甚至都不是做IT行业的,但你的定位只要不是被时代所抛弃的老年人,你,多多少少应该听过"Python"一词,多多少少看到 ...

  6. 你的每个哈欠老板都知道!被AI摄像头全天盯紧,亚马逊快递小哥不干了

    来源:大数据文摘本文约1900字,建议阅读8分钟此举引起了政府关注,五位美国参议员写信给亚马逊寻求解释. 一名亚马逊快递小哥的辞职刚刚在reddit引发热议. 辞职原因很简单,这位已经在亚马逊送了三年 ...

  7. 如果你不了解 python 的学习体系?来看看这篇博客吧 ,特邀嘴强擦哥做点评|Python技能树测评

    这是一次联动写作~ 特邀擦哥为大家介绍 C 站一款新产品,<python 技能树>.内测地址为 https://bbs.csdn.net/skill/python. 内测版的技能树,是对 ...

  8. 【2020】明哥版-JetBrains旗下常用开发工具教程目录更新中-建议收藏

    前言 我为什么要写这个系列的教程?很早以前我们在写Java代码时用的较多开发工具可能就是MyEclipse或eclipse,当然了如果你在企业中还能遇见很古老的项目的话,你维护的时候还是需要使用MyE ...

  9. eclipse怎么弄python_如何使用eclipse做Python开发?

    话说语言大势,合久必分,分久必合.Python这愣头青,自从勾搭上云计算.大数据.人工智能后,力量倍增,势如破竹,无人可挡,硬生生的把C++拉下了马,并取而代之,成为探花郎(语言排行榜位列第三). 戏 ...

  10. 亚马逊是如何进行软件开发的

    亚马逊是如何进行软件开发的呢?如果你确实对这个话题感兴趣,不妨邀请三五好友,订上几个披萨,然后一起坐下来观看这个对Ken Exner的精彩访问,他是AWS开发者工具部的部门经理.这里着重强调Ken来自 ...

最新文章

  1. 中小学教师职称计算机考试软件,中小学教师职称计算机考试大纲--2012年
  2. mysql 安装问题一:由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。
  3. C++空类和string类
  4. 使用 rapidxml 做配置文件
  5. 衡量人体健康的“十大新标杆”
  6. html datatype自定义,$.ajax中dataType为html实现地区显示效果
  7. 装hadoop引发的一系列事件
  8. Asp.net MVC 移除视图引擎(WebFormViewEngine或者RazorViewEngine)
  9. SVM入门(四)线性分类器的求解——问题的描述Part1
  10. 简单的中文分词系统httpcws
  11. 公益/广告-bloggerads广告是为了钱?[非推广文章哈]
  12. win10使用administrator登录却仍然没权限
  13. AHRS、IMU和INS对比
  14. 微信小程序实现车牌号录入
  15. 分销商城是怎么运营?
  16. 2014阿里巴巴实习生招聘-研发工程师笔试题/网络编程小结
  17. 公众号识别用户进入发送信息
  18. 美不胜“售”的花花世界
  19. SqlServer-STUFF理解基础知识
  20. 求解n阶方阵的行列式

热门文章

  1. 程序员找女朋友都有哪些标准?
  2. C++ | Qt编译DLL
  3. python cms应用生成_Django:之ORM、CMS和二维码生成
  4. window10激活
  5. matlab潮流计算编程教学,潮流计算 程序_牛拉法潮流计算程序_matlab潮流计算教程...
  6. pdf转图片,汉字不显示No glyph for 23495(CID 0969) in font SimSun
  7. java adminlte 使用_AdminLTE实现动态菜单
  8. 白帽子讲web安全思维导图
  9. 水泥电阻,常用电阻 阻值表
  10. Android 根据手机自带GPS获取当前位置,经纬度