暂时未有相关云产品技术能力~
暂无个人介绍
首先,我们创建一个虚拟机,当然,家里要是有那个条件,可以直接去阿里云或者腾讯云买一个虚拟云主机,我这里就直接使用虚拟机来测试了。 关于如何使用vmware创建一个虚拟主机请移步《VMware自定义安装ubuntu系统》这里边有详细的介绍,我这里不再赘述。 我这里安装的是ubuntu20.04LTS 那到目前为止,我手里边就相当于拥有了两台主机,一台是我本地的windows,一台是虚拟机ubuntu
Python是一门面向对象语言 面向对象的三大特征:封装、继承、多态 我们这里来看一下python 类的继承 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。 一:类的继承 1 :继承语法 arduino 复制代码 class 派生类名(基类名) ... 通常我们定义的类没有指定继承对象都是继承自object类,另外,python是支持多继承的。 下边我们使用代码来演示一下python的继承: 我们定义一个person类,其中有name、age两个属性,getInfo方法,为父类。 我们定义一个school类,其中getSchoolInfo方法,为父类。 定义一
Python可以使用raise手动抛出异常。 看到菜鸟教程里边对 raise 的这个定义的时候,我有点迷茫,我在极力的去避免异常出现,我为什么还要手动抛出异常呢? 1:raise 语句的基本语法格式: raise [exceptionName [(reason)]] 2:基本使用方法 (1):直接一个raise抛出异常 python 复制代码 try: i = 1 while(i < 10): raise print(i) i += 1 except: print('raise 手动抛出异常') 输出: bas
Pycharm在使用调试器模式时报错: Interrupted function call: accept failed
5:文件指针操作函数 tell() seek() (1):tell()判断文件指针当前所处的位置 lua 复制代码 f = open("log.txt", 'r', encoding="utf-8") print(f.tell()) print(f.read(10)) print(f.tell()) 输出: arduino 复制代码 0 https://gu 10 (2):seek()将文件指针移动至指定位置 语法: bash 复制代码 file.seek(offset[, whence]) 其中,各个参数的含义如下: file:表示文件对象; whence:作为可选参数,用于指定文
简单粗暴地说,字典是一种数据结构,而json是一种数据格式(纯字符串),可以被解析成Python的dict或者其他形式。 一. python的字典和json字符串的区别 python中,json和dict非常类似,都是key-value的形式,而且json和dict也可以非常方便的通过dumps和loads互转,但是它们之间还是有区别的: json:是一种数据格式,是纯字符串。可以被解析成python的dict或其他形式。 dict:是一个完整的数据结构,是对hash table这一数据结构的实现,是一套从存储到提取都封装好的方案。它使用内置的hash函数来规划key对应的value的存储位置
在实际的开发工作中,我们光知道异常类型是不够的,我们还需要看到更详细的报错信息。 那么,我们应该如何看到报错信息呢? Python中为我们提供了两个可以查看标错信息的库,sys 模块中的 exc_info,traceback 模块 这是我们第一次使用python的模块 在文件中使用python的模块,需要引入才可以使用。 一:使用 sys 模块中的 exc_info 方法: 1:exc_info() 方法会将当前的异常信息以元组的形式返回,该元组中包含 3 个元素,分别为 type、value 和 traceback,它们的含义分别是: type:异常类型的名称,python异常类型请参照
1 :模块的定义 模块:用来从逻辑上组织Python代码(变量,函数、类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,对应的模块名,test)。 2 :模块的引用 模块的引用大概有三种方式: python 复制代码 import module_test, module_test1 # 调用方法的时候,需要module_test. form moudule_test import * # * 表示所有的方法(不建议使用,这个就相当于导入了程序。) 容易造成覆盖,出现问题。 form module_test import module_ajun
5:文件指针操作函数 tell() seek() (1):tell()判断文件指针当前所处的位置 lua 复制代码 f = open("log.txt", 'r', encoding="utf-8") print(f.tell()) print(f.read(10)) print(f.tell()) 输出: arduino 复制代码 0 https://gu 10 (2):seek()将文件指针移动至指定位置 语法: bash 复制代码 file.seek(offset[, whence]) 其中,各个参数的含义如下: file:表示文件对象; whence:作为可选参数,用于指定文
接下来,我们来看一下linux的系统运行级别相关信息。 这部分相关的知识以前在看linux的时候,还真没有注意到过。 linux有7个运行级别,分别为 1:“0”,系统停机状态;2:“1”,单用户工作状态;3:“2”,多用户状态;4:“3”,完整的多用户模式;5:“4”,系统未使用;6:“5”,图形化模式;7:“6”,系统正常关闭并重启。
Linux的常用基本命令,大概先了解下他目录相关的命令,linux的目录其实就是windows下的文件夹,文件夹,是windows系统引入的一个概念。这个大概了解一下。
Python字符串比较本身是属于python字符串的一部分。 为什么把他拿出来单独说呢,我之前是做web开发,也接触过C#开发,在这两门语言中的字符串比较与python中的字符串比较稍有不同 Python可以使用相等(==)和比较(<,>,!=,<=,> =)运算符执行Python字符串比较。 没有比较两个字符串的特殊方法。 而我目前接触到的其他几门语言 字符串比较好像是只有 == 与 != 两种操作,当然,我也没有在除python的语言中用过 >= 与 <= 来比较字符串。 我们先大概了解下python字符串比较的规则与原理: 比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下
首先,要注意一件事,在python中,字符串,元组,列表的取值都可以使用下标来实现。 其实切片这个用法之前在看列表和元组的时候,提到过。 说白了其实就是根据索引获取元素。只是在python中,给他起了个名字叫切片。 一:切片操作语法 一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时,默认第三个参数step=1;当一个“:”也没有时,start_index=end_index,表示切取start_index指定的那个元素。 切片操作基本表达式: css 复制代码 object[start_index:end_in
上一篇记录了PHP,nginx,mysql及mariadb的安装过程。我的安装位置是/usr/local/目录下。那么linux的各个目录都是存放什么的呢?
前边看了ls,cd,pwd这三个纯用来操作目录的命令。 接下来,来看一下文件和目录都有的命令。
(2):服务命令 立即启动一个服务 sql 复制代码 sudo systemctl start nginx 立即停止一个服务 arduino 复制代码 sudo systemctl stop nginx 重启一个服务 复制代码 sudo systemctl restart nginx 设置开机自启动 bash 复制代码 systemctl enable nginx 停止开机自启动 bash 复制代码 systemctl disable nginx 杀死一个服务的所有子进程 bash 重新加载一个服务的配置文件
接下来,我们来看一下linux系统中的移动mv和复制cp命令。 复制粘贴命令的使用频率相对就高很多了。毕竟程序员的键盘磨损最严重的三个按键就是ctrl、c、v键了。开个玩笑。
4:手动添加systemctl 服务。 为什么要手动添加systemctl服务呢?正常来说,nginx是使用yum或者apt-get来安装的。这种安装方式会将服务自动波添加至systemctl。但是,我要是编译安装的nginx,我就需要手动将nginx添加到systemctl中才可以使用systemctl命令来启动nginx。
一:Python pathlib模块用法详解 pathlib 模块中包含的是一些类,它们的继承关系如图 1 所示。 pathlib 模块的操作对象是各种操作系统中使用的路径(例如指定文件位置的路径,包括绝对路径和相对路径)。这里简单介绍一下图 1 中包含的几个类的具体功能: 1) PurePath 类会将路径看做是一个普通的字符串,它可以实现将多个指定的字符串拼接成适用于当前操作系统的路径格式,同时还可以判断任意两个路径是否相等。注意,使用 PurePath 操作的路径,它并不会关心该路径是否真实有效。 2) PurePosixPath 和 PureWindowsPath
Python 中的 print函数很重要,相当于PHP中的var_dump和echo 对我们编写代码调试是很重要的。 1:他可以输出所有 python 复制代码 # 输出字符串 print("guanchao.site") # 输出数字 print(100) # 输出变量 str = 'guanchao.site' print(str) # 输出列表 L = [1,2,'a'] print(L) # 输出元组 t = (1,2,'a') print(t) # 输出字典 d = {'a':1, 'b':2}
Python是一门面向对象语言。 Class类是面向对象中非常重要的一个元素 什么是类呢? Class类是一个功能的合集。 一:类的创建 1 :类的构造函数 python 复制代码 # 定义类 class tests: '测试创建类' # 类文档字符串 projectName='' def __init__(self,name): print("初始化类调用了构造函数") self.projectName = name print("构造函数接收到了参数:",self.projectName) T = tests('时间里
我们在实际开发中,可能需要应用到多个模块,使用模块可以有效避免变量名或函数名重名引发的冲突,为了方便管理,python为我们提供了包的概念。 什么是包呢?简单理解,包就是目录,只不过在该目录下必须存在一个名为“init.py” 的文件。 注意,这是 Python 2.x 的规定,而在 Python 3.x 中,init.py 对包来说,并不是必须的。 一:创建包 如下图所示: 二:init.py文件 就如上边所说,python3包中__init__.py文件不是必须的。但是有也是没有问题的。 对于__init__.py文件来说,首先是一个python文件,所有还可以用来写pytho
(2):以字典的形式存储已命名的参数(字数可变的关键参数) 加了两个星号 ** 的参数会以字典的形式导入。存放已命名的变量参数。 python
一:Python pickle模块:实现Python对象的持久化存储 Pickle模块,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就是说,pickle 可以实现 Python 对象的存储及恢复。 pickle 是 python 语言的一个标准模块,安装 python 的同时就已经安装了 pickle 库,因此它不需要再单独安装,使用 import 将其导入到程序中,就可以直接使用。 1:dumps():将 Python 中的对象序列化成二进制对象,并返回; 语法: ini 复制代码 dumps(obj, protocol=None, *, fix_im
所谓作用域,就是变量的有效范围,就是变量可以在哪个范围以内使用。 有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。 一:局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量 要知道,当函数被执行时,Python 会为其分配一块临时的存储空间,所有在函数内部定义的变量,都会存储在这块空间中。 而在函数执行完毕后,这块临时存储空间随即会被释放并回收,该空间中存储的变量自然也就无法再被使用。 scss
Python中的字典和json对象类似,都是键值对存储数据。 但是,其二者是有区别的。只是类似,并不一样。 字典和json的区别,后边会单独提到。 Python字典: 1. 字典是列表之外另一种可变容器模型,且可存储任意类型对象。 2. 字典以键值对{key:value}形式存储。 3. 键必须是唯一的,不允许同一个键出现两次。但值则不必。 **4. ** 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。 **5. ** 定义字典使用一对大括号 {} 来定义。 **6. ** 字典是一个无序的数据集合,我们更关心key对应的值,而不是关心其存储的顺
流程控制语句就是按照一定的步骤来实现某些功能的语句 python 中主要的流程控制语句:选择语句、条件表达式、循环语句、跳转语句、pass 语句 Python中条件控制与只有if-elif-else 并没有其他语言中的switch-case 条件控制语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 1 :程序结构 (1)顺序结构:按照代码的顺序依次执行 (2)选择结构:根据条件表达式的结果选择执行不同的语句 通常使用 if 语句实现 (3)循环结构:在一定条件下反复执行某段程序的流程结构
Python每个版本都有不同的特性,最重要的是,每个库对python版本的支持是不同的,当我们需要研究不同的库的时候,可能需要不同的python环境,每次切换,可能相对比较麻烦。这里推荐一个python开源包管理器anaconda。 他其实就是给你虚拟出多个纯净的环境,你可以根据需要安装不同的python版本及你需要的python库。 一:安装 访问官方网址下载: www.anaconda.com/products/in… 如下图所示: 选择你需要的版本下载。 我这里使用的是windows系统,安装就是一路下一步了。这里就不做演示。 二:使用 安装成功之后,你可以使用图形化界面进行
Python中的元组中的元素不能修改,不能删除,其余的属性与list是一样的。 元组使用小括号定义,列表使用方括号定义。 一:定义一个元组 1:创建元组 bash 复制代码 tuple_one = ('1','2',11,22) print("我的类型是:",type(tuple_one)) 输出: 我的类型是: <class 'tuple'> 2:定义一个空元祖 空元祖这个玩意,在实际开发中没有实际意义。元素定义之后便不能修改。 bash 复制代码 # 定义一个空元祖 tuple_kong = () print("我的类型是:",type(tuple_kong)) 输出: 我的类型是: <c
开始VI编辑器的学习。 之前在linux服务器上边看代码的时候一般都是使用远程ftp工具(类似winscp)将文件下载到本地,在使用编辑器查看,但是这样相对比较麻烦。 Linux为我们提供了一个很棒的编辑器VI 下面我们来看下VI的三种工作模式以及模式之间的切换。 首先我们来看下VI编辑器的调用 Vi filename(文件名) 文件已存在,直接打开,文件不存在,新建后打开。 一:VI的三种工作模式 1:命令行模式 该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。 在命令模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输
Python为我们提供了两种循环,while和for循环。 Python中并没有PHP和C#中的foreach以及do-while循环,这个要注意。 除此之外,python还为我们提供了比较好玩的range函数和pass语句。
Python的number数字数据类型。事先说明,我学习的是Python3。 Python3 支持 int 、float、bool、complex(复数)。 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 像大多数语言一样,数值类型的赋值和计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。 一:整数型 INT 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 ini 复制代码 # 整数 int number_int = 123456789 number_
Python 的运算符 1:算数运算符 perl 复制代码 # 加法运算 print("计算 1 + 1 = ",1 + 1); # 除法运算 print("计算 1 - 1 = ",1 - 1); # 乘法运算 print("计算 1 * 1 = ",1 * 1); # 除法运算 print("计算 1 / 1 = ",1 / 1); # 整除运算 print("计算 11 // 2 = ",11 // 2); # 取余运算 print("计算 11%2 =",11 % 2); # 幂运算 print("计算 2的3次方", 2 ** 3);
在ubuntu上使用pycharm创建项目的时候报错: ModuleNotFoundError: No module named 'distutils.util'
Python的注释 1 :单行注释 Python的单行注释使用#
一:设置python解释器的版本 我们在开发不通话项目的时候可能会遇到使用不同python版本的情况。 有可能前一秒还在开发python3.8的项目,下一秒就去修改python2.6的项目了。当然,这种情况比较极端。 那么我们如何修改pycharm的python解释器的版本呢?
函数:一段代码的集合。 Linux系统shell编程中也是有函数这个概念的。这个东西我们也就很熟悉了。在我接触的其他编程语言中,都是有函数这个概念的,就是有些语言中的叫法不同,有的叫函数,有的叫方法。 一:系统函数: Shell编程中为我们定义了很多系统函数。所谓的系统为我们定义的系统函数,其实就是我们之前学到的系统命令。比如:date,basename,dirname 1:date 这里首先使用date命令做一下测试,也很简单,正常我们的服务器日志要求是一天生成一个文件。这就涉及到命名的问题,这里使用date就很合适。 编辑 she.sh文件
Python的列表,实际意义上等同于PHP里边的数组。 只是叫法不一样而已。Python列表底层实现的原理其实就是一个C语言的列表。 Python的列表可存储不同类型的数据,但是其一般都用来存储相同类型的数据方便处理。 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以进行的操作包括索引,切片,加,乘,检查成员。 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。 列表是最常用的Python数据类型,它可以作为一个方括
shell中的流程控制语句和其他语言中的差不多,大概就是if-else、case ... esac(与其他语言中的 switch ... case 语句类似) 一:if-else 测试这部分,就不在控制台里边输出了,这里代码要分行,在控制台中输出不方便。 1:单分支判断: 我们直接在shell文件she.sh中键入以下内容: bash 复制代码 #! /bin/bash if [ $1 = guanchao.site ] then echo 欢迎进入时间里的博客 fi 执行she.sh文件。
在使用laravel之前我一直在使用thinkphp还有yii框架,这两个框架也有路由这一说,但是都没有用过。 Laravel的路由功能其实还是挺全的,也很优雅~ 下面来说正题: 1:路由的基本介绍 Laravel框架默认为我们提供了两个路由文件,在根目录下的routes目录下有web.php以及api.php。这些文件通过框架自动加载,相应逻辑位于 app/Providers/RouteServiceProvider 类。routes/web.php 文件定义了 Web 界面的路由,这些路由被分配到了 web 中间件组,从而可以使用 Session 和 CSRF 保护等功能。routes/a
Python的字符串还是很有意思的。 之前在使用PHP的时候,拼接字符串是一件很简单的事。
条件判断语句在编程中使用是很频繁的,首先我们想到的就是if-else语句。但是这里要区分开,条件判断语句是指if括号里边的那个语句,不是指if-else,if-else是流程控制语句。
使用shell编程,我们首先来了解一下shell的变量。Shell的变量大概分为以下几个类型: 一:系统预定义变量 Shell预定义了很多很多全局变量,类似: USER、PATH、HOME、LOGNAME、PWD 我们在控制台使用这些变量的时候需要加上$ 实例如下: csharp 复制代码 [root@VM_0_4_centos ~]# echo $USER root 当然,还有其他的一些变量我这里没有展示,查看所有系统预定义的变量(全局变量)命令很简单: bash 复制代码 env 结果如下图所示: 这部分系统预设的全局变量是在所有bash进程里边都是好用的。作用于是所有的bash进程。
Python图像处理使用到的库是opencv-python。 安装库命令: 复制代码 pip install opencv-python 我是在windows上做测试,使用的是Anaconda来安装,这就比较简单了,图形化界面操作。具体使用请移步《Python(三)开源的Python包管理器 anaconda——window安装》 我这里也只是简单的使用opencv的一些功能。 具体更多详细的功能请参照opencv中文文档:woshicver.com/ 这部分文档是由英文翻译成中文的,可能有偏差,谨慎阅读。 也放一下opencv的官方文档吧,谷歌翻译的还不如上边的中文文档。
人脸检测部分我们已经搞定。 接下来我们来看一下人脸识别,那么人脸识别和人脸检测有何区别呢? 人脸检测就是使用opencv通过其自带的人脸特征数据,检测当前图片中是否含有人脸,而人脸识别是在人脸检测的基础上,检测图片中的人脸是不是我们目标的人脸。 听起来好像有点高大上。也确实如此。但是,过程并不是像我说的这么简单。首先,我们需要先开始训练数据。 一:训练数据 1:安装 opencv-contrib-python 模块 复制代码 pip install opencv-contrib-python 具体的安装方法,这个要看你自己的环境。
Laravel中的cache为我们提供了三种缓存机制。 Redis,memcache,以及框架的文件缓存。 这里主要看的是cache中的文件缓存。 一:访问多个缓存存储 使用 Cache 门面,你可以使用 store 方法访问不同的缓存存储器,传入 store 方法的键就是 cache 配置文件中 stores 配置数组里列出的相应的存储器: css 复制代码 $value = Cache::store('file')->get('foo'); Cache::store('redis')->put('bar', 'baz', 600); // 10分钟
在我们实际的编程中,一定会和用户有交互,那我们如何读取用户在控制台中输入的值呢? Shell为我们提供了一个命令:read 对,你没看错,就是这么语义化,就是read。
中间件,第一次听到这个名字感觉好陌生,这是个啥呀,第三方插件?好像不是。之前也没有遇到过这个玩意啊。 之前使用到的thinkphp5.0以及Yii2.0框架都是没有中间件这一说的。 去thinkphp官网查了一下,要到thinkphp5.1.6才开始支持中间件。实现的方式基本上就是仿照laravel。 一:那么什么时中间件呢: HTTP 中间件提供了为过滤进入应用的 HTTP 请求提供了一套便利的机制。 例如,Laravel 内置了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向到登录页面,否则如果用户经过授权,中间件就会允许请求继续往前进入下一步操作。
数据库相关的操作,大概看下laravel封装的增删改查的数据库操作方法以及laravel对原生sql的支持。 一:执行原生sql 1:查询select php 复制代码 $results = DB::select('select * from users where id = ‘{$id}’'); 2:写入 php 复制代码 $result = DB::insert('insert into users (id, name) values (‘{$id}’, ‘{$name}’)'); 3:修改,该方法返回受更新语句影响的行数:
数组可以存储多个数据,这个东西是很重要的,其他一些高级语言类似PHP、javascript等语言都是支持多维数组的。Shell编程只支持一维数组。 Shell编程的数组和PHP的数组类似,声明的时候不需要指定大小。也可以使用下标来访问数组中的元素。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: