以前笔记
大学自学
BothSavage
写点代码
展开
-
工具-FastDFS分布式存储服务器-linux安装(99.8.2)
文章目录1.环境2.安装3.测试关于作者1.环境版本>>lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04 LTSRelease: 18.04Codename: bionic安装gcc等sudo apt install gccsud...原创 2019-09-20 11:36:34 · 217 阅读 · 0 评论 -
工具-FastDFS分布式存储服务器-介绍(99.8.1)
文章目录1.介绍2.服务端两个角色3.上传和下载上传下载4.特点关于作者1.介绍FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker ...原创 2019-09-20 11:09:26 · 176 阅读 · 0 评论 -
工具-celery-介绍-安装-使用(99.7.1)
文章目录1.问题2.机制3.使用4.常见使用关于作者1.问题我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长,那么客户端将会等待很久,造成不好的用户体验.Celery是一个功能完备即插即用的任务队列。它使得我们不需要考虑复杂的问题,使用非常简单。celery看起来似乎很庞大,本章...原创 2019-09-18 13:01:27 · 221 阅读 · 0 评论 -
工具-Redis-django存储session(99.6.4)
文章目录1.说明安装修改设置2.测试关于作者1.说明之前django的session默认是存在的数据库里面的,我们也可以把session存储在redis里面安装pip install django-redis-sessions==0.5.6修改设置修改settings文件,增加如下项SESSION_ENGINE = 'redis_sessions.session'SESSION_...原创 2019-08-31 15:57:11 · 116 阅读 · 0 评论 -
工具-Redis-与Python一起使用(99.6.3)
文章目录1.安装2.使用以下为对应的方法3.使用string为例子关于作者1.安装pip install redis2.使用pip install redisfrom redis import *sr = StrictRedis(host='localhost', port=6379, db=0)#简写都是默认sr=StrictRedis()以下为对应的方法string...原创 2019-08-31 15:52:08 · 93 阅读 · 0 评论 -
工具-Redis-使用(99.6.2)
文章目录1.启动2.数据结构3.String命令4.其他常用命令5.Hash命令6.List命令7.Set命令8.Zset命令关于作者1.启动redis-server交互redis-cli2.数据结构string类型字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等...原创 2019-08-31 15:20:26 · 250 阅读 · 0 评论 -
工具-Redis-介绍(99.6.1)
文章目录1.nosql介绍2.Redis特性3.redis应用场景关于作者1.nosql介绍not only sql,不支持SQL语法。存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式种类:MongodbRedisHbase hadoopCassandra hadoop2.Redis特性性能极高 – Redis能读的速度是110000次/...原创 2019-08-31 14:42:24 · 135 阅读 · 0 评论 -
工具-Git与GitHub-GitHub使用(99.5.3)
文章目录1.在github中添加公钥2.克隆项目3.在本地工作区新建分支,修改文件并提交4.推送到远程仓库5.从远程分支上拉取代码关于作者1.在github中添加公钥首次使用git必须配置邮箱(邮箱和github一致)git config --global user.name "xxx"git config --global user.email xxxxx@example.com在l...原创 2019-08-31 12:05:49 · 98 阅读 · 0 评论 -
工具-Git与GitHub-分支管理(99.5.2)
文章目录1.分支介绍2.基本使用分支1.查看分支2.创建一个分支dev并切换到其上进行工作3.在dev分支中变更已经追踪的文件,并进行提交4. dev分支的工作完成,可以切换回master分支5.把dev分支的工作成果合并到master分支上6.合并完成后删除dev分支了3.解决冲突1.查看冲突文件(就是两边都有修改的文件)2.手动修改冲突文件,再加入缓存区,提交3.查看状态,在命令行以图的方式...原创 2019-08-31 01:56:39 · 125 阅读 · 0 评论 -
工具-效率工具-XMIND8破解(99.1.3)
文章目录1.下载2.修改hosts文件3.修改配置文件4.填入序列号5.破解完成关于作者1.下载1.点击进入官方网站下载2.下载破解包网址:点击进入网盘地址密码:domd2.修改hosts文件1.进入C:\Windows\System32\drivers\etc目录使用文本工具打开HOSTS文件2.添加以下代码0.0.0.0 www.xmind.net3.修改配置文件1.将...原创 2019-08-31 00:20:28 · 276 阅读 · 1 评论 -
工具-Git与GitHub-安装以及基本操作(99.5.1)
文章目录1.安装2.使用3.工作区和版本库关于作者1.安装1.windows安装安装后添加环境变量2.linux安装sudo apt-get install git2.使用1.常见一个版本库,可以看到.git文件被创建cd ......git init2.在里面做更改,比如新加了一个文件,commit表示提交一个版本,-m表示的为说明信息,add可以跟多个文件,甚至目录。c...原创 2019-08-31 00:43:54 · 80 阅读 · 0 评论 -
工具-python包-虚拟环境管理(99.4.1)
文章目录1.为什么用虚拟环境2.如何使用关于作者1.为什么用虚拟环境方便的包管理2.如何使用pip install virtualenvpip install virtualenvwrapper #简化操作 linuxpip install virtualenvwrapper-win #Windows使用该命令关于作者个人博客网人GitHub地址个人公众号:...原创 2019-08-29 23:29:46 · 88 阅读 · 0 评论 -
工具-效率工具-内网穿透,将本地服务器放在公网(99.1.2)
内网穿透1.内网穿透是什么2.需求3.推荐软件以及使用1.内网穿透是什么内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。2.需求没钱买服务器,技术不成熟不能再linux下很好的写...原创 2019-08-15 04:02:12 · 210 阅读 · 0 评论 -
工具-chrome相关-安装crx包及错误解决(99.3.1)
安装crx包及错误解决1.安装教程2.程序包无效:"CRX_HEADER_INVALID"1.安装教程在浏览器上输入 chrome://extensions 并且选择开发者模式将.crx文件拖拽到Chrome的扩展程序列表完成安装若出错参考下面2.程序包无效:“CRX_HEADER_INVALID”将安装出错的crc文件后缀改为rar打开该文件夹,把里面的"_metadata"文件...原创 2019-08-09 00:12:50 · 177 阅读 · 0 评论 -
工具-绿色使用软件等-破解pycharm,idea等Jet brain出品软件(99.2.1)
破解pycharm,idea等Jet brain出品软件1.若有能力,请购买正版2.破解教程1.若有能力,请购买正版本教程只是作为学习使用2.破解教程1.下载此文件链接:https://pan.baidu.com/s/12nbtgeWiD1xKMtPIr-S1-g 密码:b66f并将 JetbrainsCrack-3.1-release-enc.jar 放置到 pycharm安装目录的\...原创 2019-08-08 23:55:16 · 269 阅读 · 0 评论 -
工具-效率工具-listary快速打开文件,win+R使用(99.1.1)
listary快速打开文件,win+R使用1.使用WIN+R打开软件2.使用listary软件1.使用WIN+R打开软件添加环境变量找到需要打开应用的目录如我的桌面(C:\Users\Public\Desktop)添加pyth环境变量如下即可完成2.使用listary软件安装这个软件安装完成后打开会自动在后台运行最后设为开机自启动双击Ctrl打开能快速找到本机的文件...原创 2019-08-08 23:49:16 · 252 阅读 · 0 评论 -
网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)
文章目录1.说明2.模型类的设计3.代码的具体实现4.详情地址关于作者1.说明models是django的很重要的部分,所以深入研究。本文章的所研究项目为黑马教育python课程中的项目实战-天天生鲜项目这里就简单的描述下,会把研究的代码放在github,多研究几个来形成自己的知识体系2.模型类的设计3.代码的具体实现文件夹中只有代码的models部分该项目中一共有4个大类:c...原创 2019-09-17 21:01:01 · 171 阅读 · 0 评论 -
网站开发学习Python实现-Django项目部署-同步之前写的博客(6.2.2)
文章目录1.说明2.思路3.代码关于作者1.说明之前写的博客都在csdn和博客园中要将博客同步到自己的博客网站中因为都是使用markdown格式书写的,所以直接爬取上传就完事2.思路分析了下博客园,发现可行。先登录进入自己的博客主页,可以看到有下一页的标志,每一页包含若干个博客详情,博客详情中包含edit页(编辑页面)和正常页面(其他用户访问的),要获取的就是eidt页面的博客名字,博...原创 2019-09-16 13:08:44 · 135 阅读 · 0 评论 -
网站开发学习Python实现-Django项目部署-介绍(6.2.1)
文章目录1.第一步:找源码2.第二步:在windows中更改代码2.第三步:同步到linux中3.第三步:部署4.第四步:运行关于作者1.第一步:找源码从github上找一个django编写的个人博客izone链接:https://github.com/Hopetree/izone2.第二步:在windows中更改代码直接使用git同步到pycharm中在django的setting中...原创 2019-09-16 12:52:34 · 300 阅读 · 0 评论 -
网站开发学习Python实现-Django学习-自学注意(6.1.3)
文章目录1.配置文件相关2.应用创建相关3.项目相关4.模板相关5.其他关于作者1.配置文件相关1.可以更改时间,地区相关(国际化)2.BASE_DIR很重要,一个工程要有很好的移植性,必须做到里面的所有路径都为相对路径,这里BASE_DIR可以帮忙3.DEBUG在发行的视乎记得关4.INSTALLED_APPS表示注册的应用,前面的都是自带的,如果新建一个app,记得注册5.MIDD...原创 2019-08-30 16:05:06 · 103 阅读 · 0 评论 -
网站开发学习Python实现-Django学习-总结(6.1.2)
文章目录1.MVT2.模型3.视图4.模板5.常用的命令6.pycharm创建django工程关于作者1.MVT项目结构如下,其中项目同名文件夹为配置文件每一个项目有多个应用(未考证),这里的-App为新建应用,目前接触的开源项目大多一个应用,templates为模板文件也就是T层2.模型Django 提供了一个抽象的模型 (“models”) 层,为了构建和操纵你的Web应用的数据...原创 2019-08-30 15:35:55 · 150 阅读 · 0 评论 -
网站开发学习Python实现-Django学习-介绍(6.1.1)
文章目录1.说明2.代码关于作者1.说明MVC是什么2.代码关于作者个人博客网站个人GitHub地址个人公众号:原创 2019-08-29 23:38:26 · 82 阅读 · 0 评论 -
Web服务器-并发服务器-Epoll(3.4.5)
文章目录1.介绍2.代码关于作者1.介绍epoll是一种解决方案,nginx就是用的这个中心思想:不要再使用多进程,多线程了,使用单进程,单线程去实现并发在上面博客实现的代码中使用过的轮询去查看套接字有没有数据,而epoll是主动通知当使用多进程的时候,是复制一份资源去查看,epoll不用复制,直接来优势:1.共享内存 2.事件通知2.代码import socketimport ...原创 2019-08-23 14:38:18 · 173 阅读 · 0 评论 -
Web服务器-并发服务器-长连接(3.4.4)
文章目录1.说明2.代码关于作者1.说明每次new_socket都被强制关闭,造成短连接所提不要关闭套接字但是不关闭的话,浏览器不知道发完没有啊此时用到header的属性Content-Lengthhttp_header += “Content-Length:%d\r\n\r\n” % len(http_body)将http_body的长度装到返回头,送出给浏览器当浏览器获取完数据...原创 2019-08-23 14:03:54 · 171 阅读 · 0 评论 -
Web服务器-并发服务器-单进程单线程非堵塞方式(3.4.3)
文章目录1.分析2.代码关于作者1.分析当socket去监听的时候,是堵塞的状态通过tcp_sever_socket.setblocking(False)去设置不堵塞当socket发现没有用户的时候会出错,执行异常当连接上用户的时候会马上把用户发到socket列表中再遍历socket列表时候也设置,new的socket为非阻塞状态通过和上面一样的方式2.代码import sock...原创 2019-08-23 13:51:17 · 155 阅读 · 0 评论 -
Web服务器-并发服务器-多进程(3.4.1)
文章目录1.优化分析2.代码3.关于作者1.优化分析在单进程的时候,相当于是来一个客户,派一个人去服务一下效率低,现在使用多进程来服务假设场景 100个人同时访问页面单进程:一次处理,后面的会等待时间长多进程:并发处理,一起处理当然进程不能越多越好,硬件不支持线程的开销比进程少,但最好使用协程注意用process来创建子进程的时候,子进程会复制主进程的资源全局变量和局部...原创 2019-08-23 13:16:10 · 146 阅读 · 0 评论 -
Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)
文章目录1.说明2.代码关于作者1.说明使用正则表达式,匹配客户端的请求头获取到请求的路径返回对应请求路径的文字可以使用打开对应文件的方式去返回对应的文件2.代码from socket import *import redef service_client(new_socket): '''为这个客户端返回数据''' # 1.接收浏览器发送过来的请求,即ht...原创 2019-08-23 12:29:31 · 258 阅读 · 0 评论 -
Web服务器-服务器开发-返回固定页面的HTTP服务器(3.3.1)
文章目录1.注意2.代码关于作者1.注意浏览器解析的时候偶\r\n才算一个换行符发送的str要编码,这里使用的是utf8其他的都和上一篇没有什么区别这里主要返回的是固定的网址2.代码from socket import *def service_client(new_socket): '''为这个客户端返回数据''' # 1.接收浏览器发送过来的请求,即ht...原创 2019-08-23 12:08:37 · 249 阅读 · 0 评论 -
Web服务器-HTTP相关-快速整一个服务器响应浏览器(3.2.1)
文章目录1.HTTP分析2.简单服务器关于作者1.HTTP分析当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器然后服务器根据信息,返回一定数据的格式最简单的就是下面的代码自己构造返回数据的时候,头信息一定放在前面当出现空格的时候,下一行就是返回的超文本HTMLHTTP/1.1 200 OK<!Doctype html>....2.简单服务器from s...原创 2019-08-23 11:49:52 · 143 阅读 · 0 评论 -
Web服务器-正则表达式-正则其他(3.1.3)
文章目录其他api说明关于作者其他api说明pattern = re.compile(r'\d+') m = pattern.match('6e812738712aaadad13') m.groups()#findall是常用的,0,10分别表示的是开始匹配和,countpattern = re.compile(r'\d+') # 查找数字result1 = pat...原创 2019-08-23 10:56:35 · 115 阅读 · 0 评论 -
Web服务器-正则表达式-小例子(3.1.2)
文章目录1.邮箱2.手机号码关于作者1.邮箱import redef main(): email = input("请输入一个邮件地址:") ret = re.match(r"^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$",email) print(ret) if ret: ...原创 2019-08-23 10:50:34 · 116 阅读 · 0 评论 -
Web服务器-正则表达式-整理+复习(3.1.1)
文章目录1.常用api2.例子3.正则表达式模式关于作者参考文章1.常用apire.match(pattern, string, flags=0)pattern 匹配的正则表达式string 要匹配的字符串。flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志re.group(index)re.groups(...原创 2019-08-23 10:35:29 · 236 阅读 · 0 评论 -
Python高级语法-贯彻回顾-元类(4.99.1)
文章目录1.为什么要掌握元类2.正文关于作者1.为什么要掌握元类在django中编写models的时候遇到了元类的相关操作并且在mini-web框架编写的时候也遇到了相关的问题意识到深入理解元类非常的重要所以补票重学学习且引用来自博客:https://www.cnblogs.com/intimacy/p/8119449.html2.正文python中一切都是对象,类也是对象那么意味...原创 2019-09-17 10:51:30 · 190 阅读 · 0 评论 -
Python高级语法-私有属性-with上下文管理器(4.7.3)
文章目录1.说明2.代码关于作者1.说明上下文管理器这里使用with open操作文件,让文件对象实现了自动释放资源。我们也能自定义上下文管理器,通过__enter__()和__exit__()这两个魔术方法来自定义的操作文件当有上下文使用的场景的时候,如打开一个东西要关闭,像等文件等资源,就可以使用这种方式去定义一个上下文管理器2.代码class File(): def __...原创 2019-08-26 14:12:47 · 82 阅读 · 0 评论 -
Python高级语法-私有属性-魔法属性(4.7.2)
文章目录1.说明2.代码关于作者1.说明常用的一些魔法方法如下所谓魔法方法,就是调用的时候不好好正常调用2.代码class Test: """ 我是___doc____ """ class_index = 0 def __init__(self,index): self.index = index print("...原创 2019-08-26 14:01:46 · 128 阅读 · 0 评论 -
Python高级语法-私有属性-名字重整(4.7.1)
文章目录1.说明2.代码关于作者1.说明使用__dict__魔法方法可以看到所有的属性,包括公有的,私有的,保护的等等不能调用的原因就是,解释器把名字属性给重组了其实是可以访问到的2.代码class hehe: def __init__(self): self.__name = 1#__代表私有a = hehe()print(a.__dict__)pr...原创 2019-08-26 13:45:52 · 149 阅读 · 0 评论 -
Python高级语法-对象实例对象属性-Property总结(4.6.2)
文章目录1.说明2.代码关于作者1.说明property属性,返回的是值不是callable的,也就是不能使用方法来调用只能传入self,不能传入其他用处,能返回局部数据,比如当分页的时候上面的为get方法,还有set方法和delete方法当del后,再次调用会抛异常property就相当于javabean里面的getter,setter一共有两种方法:装饰器,类属性第二种方法...原创 2019-08-26 13:37:49 · 105 阅读 · 0 评论 -
Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)
文章目录1.说明2.代码关于作者1.说明python中属性:类属性,实例属性方法:类方法,实例方法,静态方法想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面静态方法也就是个普通的方法,为了方便而已实例方法,不能通过类来直接调用,要调用也可以self = 对象名具体下面2.代码class Provice(object): #类属性 country...原创 2019-08-26 12:32:53 · 144 阅读 · 0 评论 -
Python高级语法-多继承MRO相关-args和kwargs(4.5.2)
文章目录1.说明2.代码关于作者1.说明args数据类型为元组kwargs数据类型为字典一般传入方法中使用遍历去得到值这个传入参数的顺序没有特殊的要求当你自定义的参数传完以后,写了名字的就给kwargs,没有名字的给args2.代码def test(*args,**kwargs): for i in args: print(i) for i i...原创 2019-08-26 12:10:41 · 225 阅读 · 0 评论 -
Python高级语法-多继承MRO相关-多继承顺序(4.5.1)
文章目录1.说明2.代码关于作者1.说明使用类的魔法方法__mro__可以查看他的父类调用顺序还有调用父类的构造方法的时候,使用super调用,里面有C3算法支持,不会重复调用相同的祖先类2.代码class Parent(object): def __init__(self,name,*args,**kwargs): print("Parent的init开始调...原创 2019-08-26 12:04:03 · 138 阅读 · 0 评论