Linux驱动常用API整理
并发与竞争
原子操作
定义:
123typedef struct { int counter;} atomic_t;
整形操作:
12345678910111213ATOMIC_INIT(int i);//定义时初始化int atomic_read(atomic_t *v);void atomic_set(atomic_t *v, int i)void atomic_add(int i, atomic_t *v)void atomic_sub(int i, atomic_t *v)void atomic_dec(atomic_t *v)//自减void atomic_inc(atomic_t *v)//自增int atomic_dec_return(atomic_t *v)//自减并返回vint atomic_inc_return(atomic_t *v)//自增并返回vint atomic_sub_and_test(int i, atomic_t *v)//(v-i)==0?1:0(返回真、假)int atomic_dec_and_test(atomic_t ...
Linux上常见服务搭建
提前知识
常见文件压缩及解压
tar
1tar [-cxtzjvfpPN] 文件与目录 ....
参数:
压缩与解压(以下三个仅能存在一个,不能同时存在)
-c :建立一个压缩文件的参数指令(create)
-x :解开一个压缩文件的参数指令
-t :查看 tarfile 里面的文件
压缩与解压类型
-z :是否同时具有 gzip 的属性?即是否需要用 gzip 压缩?(.tar.gz、.tgz)
-j :是否同时具有 bzip2 的属性?即是否需要用 bzip2 压缩?(.tar.bz2、.tar.bz)
-v :压缩的过程中显示文件
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
–exclude FILE:在压缩的过程中,不要将 FILE 打包
范例:
1234567891011121314151617181920212223242526272829303132333435363 ...
Kubernetes
组件说明
kubernetes前身Borg系统架构:
BorgMaster:主要负责请求的分发,整个集群的大脑
多个,避免单节点故障,一般高可用集群的最好保持3个以上,一般为奇数,即3,5,7,9等
link shared:分发
Borglet:真正执行的节点
scheduler:调度器,会将数据写入Paxos(数据库)
borgcfg、command-line tools、web browsers:通过 一些配置文件、命令行、浏览器 对这个集群进行调度管理
kubernetes架构:
kubectl、web UI:命令行管理工具、网页
etcd:GO语言的开源项目,键值对数据库,起持久化作用,储存k8s集群中的所有重要信息
etcd的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储些关键数据,协助分布式集群的正常运转,有以下两个版本:
v2:会将所有数据写入内存中
v3:会引入本地化 卷的持久化操作,关机后数据不会丢失(k8s 1.11之前没有该版本)
Master(上边大框):领导者
scheduler:调度器,调度任务至不同的nod ...
Python数据分析与展示
Python数据分析与展示
基础知识
Ipython
Ipython是一个功能强大的交互式shell,适合进行交互式数据可视化和GUI相关应用
想要汉化可以参考这个github上的汉化链接
?:变量名后跟?如:a?来获取变量相关的类型、值以及相关的描述信息。对于函数增加?能够获得函数的源代码
%run+python文件命令:用于执行py文件,同时会生成一个新的空的命名空间(即,该程序内部需要包含足够的import变量)
其他相关的魔术命令:
常用命令
说明
%magic
显示所有魔术命令
%hist
IPython命令的输入历史
%pdb
异常发生后自动进入调试器
%reset
删除当前命名空间中的全部变量或名称
%who
显示lpython当前命名空间中已经定义的变量
%time statement
给出代码的执行时间,statement表示一段代码
%timeit statement
多次执行代码,计算综合平均执行时间
官方文档
NumPy库
NumPy是一个开源的 Python科学计算基础库。
一个强大的N维数组对象 ndarray
...
python爬虫
定向网络数据爬取和网页解析
request库:http://www.python-request.org
requests库官方文档中文版:http://cn.python-requests.org/zh_CN/latest/index.html
BeautifulSoup库官方文档中文版:http://beautifulsoup.readthedocs.io/zh_CN/latest/
PEP8——Python代码规范:https://www.python.org/dev/peps/pep-0008/
简单入门:
1234567>>> import request>>> r = requests.get("http://www.baidu.com")#访问百度>>> r.status_code#获取状态码200>>> r.encoding='utf-8'#更改编码>>> r.text#打印网页内容'<!DOCTYPE html>\r\ ...
Mininet
一、安装Mininet
1、直接下载官网提供的含有Mininet的虚拟机镜像,地址:http://mininet.org/download/
2、通过源代码直接安装
123456#在υbunt14.04或更高版本的环境下,获取源代码:git clone http://github.com/mininet/mininet.git#安装 Wininet,需要涉及安装 Wininet、user交换机及OVS软件,可根据wininet/util/install.sh -h命令选择参数进行安装mininet/util/install.sh -n3V 2.5.0#-n:安装核心文件及依赖,-3:安装openflow的1.3版本,-V:安装openvswitch,其后根版本号#安装完成后,使用命令测试Wininet是否安装成功sudo mn --test pingall
3、软件包管理器直接安装
1234567891011#如果有mininet、OvS以前版本,先进行删除sudo rm -rf /usr/local/bin/mn /usr/local/bin/mnexec \ /usr/loc ...
linux 网络虚拟化: network namespace 简介
本文转载自:https://cizixs.com/2017/02/10/network-virtualization-network-namespace/
network namespace 是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己就在独立的网络中。这篇文章介绍 network namespace 的基本概念和用法,network namespace 是 linux 内核提供的功能,这篇文章借助 ip 命令来完成各种操作。ip 命令来自于 iproute2 安装包,一般系统会默认安装,如果没有的话,请读者自行安装。
NOTE:ip 命令因为需要修改系统的网络配置,默认需要 sudo 权限。这篇文章使用 root 用户执行,请不要在生产环境或者重要的系统中用 root 直接执行,以防产生错误。
ip 命令管理的功能很多, 和 network namespace 有关的操作都是在子命令 ip netns 下进行的,可以通过 ip netns help 查看所有操作的帮助信息。
默认情况下,使用 ip netns ...
python实战
一、串口调试助手
1、环境搭建
工具列表:
工具
功能
下载地址
Python 3.7.4
Python官方包(解释器)
https://www.python.org/
pySerial 3.4
Serial Port访问的Python封装库
https://pypi.org/project/pyserial/ https://github.com/pyserial/pyserial https://pythonhosted.org/pyserial/
wxPython 4.0.4
跨平台开源GUI库 wxWidgets 的Python封装库
https://www.wxpython.org/ https://pypi.org/project/wxPython/
wxFormBuilder 3.8.0
wxPython GUI界面构建工具
https://github.com/wxFormBuilder/wxFormBuilder
PyCharm Community 2019.3.1
一款流行的Python集成开发环境
http://www.jetbrai ...
Docker
一、环境搭建(Ubuntu 18.04)
本文前期Docker环境为:Windows10 1809 企业版 + VMware Workstation 15 Pro + Ubuntu 18.04.2LTS
后期Kubernetes环境为:Windows10 1809 企业版 + Vagrant 2.2.7 + VirtualBox 6.1.4 + centos7/Ubuntu 18.04 LTS
Vagrant+VirtualBox
下载Vagrant安装包:官网链接
下载VirtualBox安装包:官网链接,不过VirtualBox下载需要梯子,可以通过清华镜像下载
vagrant的相关image可以通过该网址进行搜索
上述两个软件均傻瓜式安装即可,可以通过下面的方法利用Vagrant在VirtualBox中创建虚拟机:
12345678910111213141516171819202122232425#查看Vagrant版本vagrant -v#创建目录mkdir centos7####################创建centos 7的镜像#################### ...
Python
一、基础
0.前言
感谢廖雪峰老师提供这么好的教程,此文档为本人学习中所做笔记
以#开头的语句是注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
Python程序是大小写敏感的,如果写错了大小写,程序会报错。
按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。
1.数据类型和变量
1.1数据类型
整数
Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的
浮点数
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
字符串
字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。
为了简化,Python还允许用r''表示''内部的字符串默认不转义
1234>>> print('\\\t\\')\ \>>> print(r'\\\t\\')\\\t\\
为了简化,Python允许用'''...'''的格式表示多行内容
123456 ...