Zhyannan's blogs
不忘初心
2018-12-03T07:25:44.177Z
https://zhyannan.gitee.io/zyannan.blog/
Zhyannan
Hexo
什么是OpenStack?
https://zhyannan.gitee.io/zyannan.blog/2018/12/03/2018-1-15-什么是OpenStack/
2018-12-03T07:03:20.000Z
2018-12-03T07:25:44.177Z
<h3 id="OverView"><a href="#OverView" class="headerlink" title="OverView"></a>OverView</h3><blockquote>
<p>OpenStack 包括 OpenStack计算(代号Nova),OpenStack对象存储(代号Swift),OpenStack镜像服务(代号Glance)等的集合。</p>
<p>OpenStack提供了一个操作平台,或工具包,用于编排云。</p>
</blockquote>
<h3 id="一-Openstack架构"><a href="#一-Openstack架构" class="headerlink" title="一. Openstack架构"></a>一. Openstack架构</h3><p><img src="https://i.loli.net/2018/12/03/5c04d8d644eb7.png" alt="openstack架构"></p>
<p> 整个OpenStack由 <strong>控制节点</strong>、<strong>网络节点</strong>、<strong>计算节点</strong>、<strong>存储节点</strong>四大部分组成。</p>
OpenStack Horizon解析
https://zhyannan.gitee.io/zyannan.blog/2018/01/20/2018-1-20-Horizon解析/
2018-01-20T02:19:04.000Z
2018-12-17T02:31:43.413Z
<h4 id="一、Horizon介绍"><a href="#一、Horizon介绍" class="headerlink" title="一、Horizon介绍"></a>一、Horizon介绍</h4><p> Horizon是OpenStack的一个子项目,用于提供一个Web前端控制台(称为Dashboard),以此来展示OpenStack的功能。实际上,Horizon并不会为OpenStack添加任何新的功能,它只是使用了OpenStack部分API功能,因此,我们可以扩展Dashboard。</p>
<p> Horizon是基于 python Django webframework开发的标准的python wsgi程序。</p>
DRF请求流程
https://zhyannan.gitee.io/zyannan.blog/2017/10/18/2017-10-18-DRF请求流程/
2017-10-18T02:02:57.000Z
2018-10-23T02:56:26.000Z
<h2 id="Django-Rest-Framework-请求流程"><a href="#Django-Rest-Framework-请求流程" class="headerlink" title="Django Rest Framework 请求流程"></a>Django Rest Framework 请求流程</h2><p> 用户请求到 django,首先经过 wsgi,中间件,然后到 url 路由系统,执行视图类中继承 APIView 执行 as_view 方 法,在源码中可以看到 APIView 继承了 django 的 View 类,通过 super 执行 View 中的 as_view 方法,最终返回执行self.dispatch(),按照 django 类中查找顺序现从自己的方法中找,如果自己没有 dispatch 方法再从继承的父类中找,从APIView 中找 dispatch 方法,在 dispatch 中首先将 request 执行 self.initialze_request 重新封装 request,之后执行self.initial 方法,这个方法一共执行4步操作: </p>
基于vue&flask前后端分离开发
https://zhyannan.gitee.io/zyannan.blog/2017/10/15/2017-10-15-vue-flask前后端分离/
2017-10-15T13:24:11.000Z
2018-10-23T02:57:14.000Z
<h3 id="教你快速利用vue和flask搭建一个简单前后端分离的web项目"><a href="#教你快速利用vue和flask搭建一个简单前后端分离的web项目" class="headerlink" title="教你快速利用vue和flask搭建一个简单前后端分离的w
FastDFS 分布式文件系统
https://zhyannan.gitee.io/zyannan.blog/2017/10/05/2017-10-5-FastDFS/
2017-10-05T06:22:29.000Z
2018-09-03T03:22:36.000Z
<h2 id="什么是FastDFS"><a href="#什么是FastDFS" class="headerlink" title="什么是FastDFS"></a>什么是FastDFS</h2><p>FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。</p>
<p><img src="https://i.loli.net/2018/09/03/5b8ca8d0f2577.png" alt="美女.png"></p>
<p>FastDFS 架构包括两个部分:</p>
<p><strong>Tracker server</strong>:作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为<strong>追踪服务器</strong>或<strong>调度服务器</strong>。</p>
<p><strong>Storage server</strong>:作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为<strong>存储服务器</strong>。</p>
itsdangerous的使用
https://zhyannan.gitee.io/zyannan.blog/2017/09/25/2017-9-25-itsdangerous/
2017-09-25T13:42:20.000Z
2018-08-30T14:38:34.000Z
<h1 id="itsdangerous"><a href="#itsdangerous" class="headerlink" title="itsdangerous"></a>itsdangerous</h1><p>如果你想向不可信的环境发送数据,但又担心数据被别人利用,就可以使用 <code>itsdangerous</code>来加密签名你的数据。</p>
<p>接收者可以破译内容,来看看你的包裹里有什么,但他们没办法修改你的内容,除非他们也有你的密钥。</p>
<blockquote>
<p>itsdangerous内部默认使用了HMAC和SHA1来签名,基于 <a href="https://docs.djangoproject.com/en/dev/topics/signing/" target="_blank" rel="noopener">Django 签名模块</a>。它也支持JSON Web 签名 (JWS)。这个库采用BSD协议,由Armin Ronacher编写,而大部分设计与实现的版权归Simon Willison和其他的把这个库变为现实的Django爱好者们。</p>
</blockquote>
Django-rest-framework 的JWT登录和认证
https://zhyannan.gitee.io/zyannan.blog/2017/09/08/2017-9-8-Django-rest-framework-JWT/
2017-09-08T06:17:32.000Z
2018-08-25T10:59:36.000Z
<h3 id="DRF-中-JSONWebTokenAuthentication-的分析"><a href="#DRF-中-JSONWebTokenAuthentication-的分析" class="headerlink" title="DRF 中 JSONWebTokenAuthentication 的分析"></a>DRF 中 JSONWebTokenAuthentication 的分析</h3><p>基于django-rest-framework的登陆认证方式常用的大体可分为四种:</p>
<blockquote>
<p>BasicAuthentication:账号密码登陆验证 </p>
<p>SessionAuthentication:基于session机制会话验证 </p>
<p>TokenAuthentication: 基于令牌的验证 </p>
<p>JSONWebTokenAuthentication:基于Json-Web-Token的验证</p>
</blockquote>
Falsk项目cookie中的 csrf_token 和表单中的 csrf_token实现
https://zhyannan.gitee.io/zyannan.blog/2017/08/09/2017-8-9-Flask-csrf-token/
2017-08-09T02:54:01.000Z
2018-09-03T12:33:16.000Z
<h3 id="在Flask项目中,如果报下面这种错,就是csrf-token的设置有问题,没有检验通过"><a href="#在Flask项目中,如果报下面这种错,就是csrf-token的设置有问题,没有检验通过" class="headerlink" title="在Flask项目中,如果报下面这种错,就是csrf_token的设置有问题,没有检验通过"></a>在Flask项目中,如果报下面这种错,就是csrf_token的设置有问题,没有检验通过</h3><blockquote>
<p>The CSRF token is missing.</p>
</blockquote>
<blockquote>
<p>The CSRF session token is missing.</p>
</blockquote>
<p>这两个都是源码中抛出的 ValidationError</p>
Flask小案例
https://zhyannan.gitee.io/zyannan.blog/2017/05/04/2017-5-4-flask-library/
2017-05-04T12:24:08.000Z
2018-08-30T14:41:06.000Z
<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><blockquote>
<p>Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。</p>
</blockquote>
<blockquote>
<p>Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。</p>
</blockquote>
<blockquote>
<p>其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。</p>
</blockquote>
<h6 id="本文将利用flask结合mysql数据库写一个前后端交互的简单的书籍管理系统的小案例"><a href="#本文将利用flask结合mysql数据库写一个前后端交互的简单的书籍管理系统的小案例" class="headerlink" title="本文将利用flask结合mysql数据库写一个前后端交互的简单的书籍管理系统的小案例"></a>本文将利用flask结合mysql数据库写一个前后端交互的简单的书籍管理系统的小案例</h6>
vue入门(三)
https://zhyannan.gitee.io/zyannan.blog/2017/02/10/2017-2-10-vue-03/
2017-02-10T13:01:09.000Z
2018-08-09T12:54:32.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p>ES6 是 JavaScript 语言的新版本,它也可以叫做 ES2015,JavaScript 属于 ES5,ES6 在它的基础上增加了一些语法,ES6 是未来 JavaScript 的趋势,而且 vue 组件开发中会使用很多的ES6 的语法,所以掌握这些常用的 ES6 语法是必须的。</p>
<p>组件(Component)是Vue.js最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象 (除了一些根级特有的选项) 并提供相同的生命周期钩子。</p>
<p>本章会带大家完成一次简单的单文件组件开发过程</p>
</blockquote>
vue入门(二)
https://zhyannan.gitee.io/zyannan.blog/2017/02/05/2017-2-5-vue-02/
2017-02-05T12:54:26.000Z
2018-08-09T12:55:34.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p>本章会介绍如何在vue中自定义过滤器,自定义指令,以及vue实例的整个生命周期,最后会说到vue中数据交互axios的用法</p>
</blockquote>
Jquery入门(三)
https://zhyannan.gitee.io/zyannan.blog/2016/08/10/2016-8-10-Jquery-03/
2016-08-10T13:59:34.000Z
2018-08-09T13:30:28.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p>本章会介绍:<br>1.事件冒泡的原理及用法<br>2.事件委托<br>3.什么是Dom?Dom的操作<br>4.Js对象的创建<br>5.Json的介绍<br>6.ajax&Jsonp技术的介绍及应用</p>
</blockquote>
Jquery入门(二)
https://zhyannan.gitee.io/zyannan.blog/2016/08/05/2016-8-5-Jquery-02/
2016-08-05T13:54:44.000Z
2018-08-09T13:29:56.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p> 本章会介绍jquery事件的用法,我们想要给当前元素添加事件, 只需要选中当前元素, 这里调用 click 即可, 和原生 js 不同>的是: 不用’on’开头;<br>animate的用法,以及一些动画效果;jquery三个属性操作方法,html(),val(),prop()的使用;<br>使用正则表达式完成表单的验证。</p>
</blockquote>
Jquery简明教程(一)
https://zhyannan.gitee.io/zyannan.blog/2016/08/02/2016-8-2-Jquery-01/
2016-08-02T12:30:00.000Z
2018-08-09T13:21:38.000Z
<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><blockquote>
<p> jQuery 是目前使用最广泛的 javascript 函数库。据统计,全世界排名前100万的网站,有46%使用 jQuery,远远超过其他库。微软公司甚至把 jQuery 作为他们的官方库。</p>
</blockquote>
<p>jQuery的版本分为1.x系列和2.x、3.x系列,1.x系列兼容低版本的浏览器,2.x、3.x系列放弃支持低版本浏览器,目前使用最多的是1.x系列的。</p>
JavaScript简明教程(二)
https://zhyannan.gitee.io/zyannan.blog/2016/07/26/2016-7-26-JavaScript-02/
2016-07-26T12:19:07.000Z
2018-07-15T16:06:28.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p> 介绍 javascript 数组和字符串的操作方法、循环语句、定时器的使用及实例、变量作用域、封闭函数的使用场景。</p>
</blockquote>
JavaScript简明教程(一)
https://zhyannan.gitee.io/zyannan.blog/2016/07/25/2016-7-25-JavaScript-01/
2016-07-25T04:19:22.000Z
2018-08-09T13:17:00.000Z
<h1 id="JavaScript-概述"><a href="#JavaScript-概述" class="headerlink" title="JavaScript 概述"></a>JavaScript 概述</h1><blockquote>
<p> JavaScript 是运行在浏览器端的脚步语言,JavaScript 主要解决的是前端与用户交互的问题,包括使用交互与数据交互。 JavaScript是浏览器解释执行的,前端脚本语言还有JScript(微软,IE独有),ActionScript( Adobe公司,需要插件)等。</p>
</blockquote>
<p><strong>前端三大块</strong><br>1、HTML:页面结构<br>2、CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果<br>3、JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能</p>
css定位
https://zhyannan.gitee.io/zyannan.blog/2016/07/23/2016-7-23-css定位/
2016-07-23T14:05:57.000Z
2018-08-09T13:09:06.000Z
<h2 id="文档流概念"><a href="#文档流概念" class="headerlink" title="文档流概念"></a>文档流概念</h2><blockquote>
<p> 文档流,是指盒子按照 HTML 标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。</p>
</blockquote>
css属性进阶
https://zhyannan.gitee.io/zyannan.blog/2016/07/22/2016-7-23-css属性进阶/
2016-07-22T08:01:04.000Z
2018-08-09T13:16:32.000Z
<h1 id="CSS属性进阶"><a href="#CSS属性进阶" class="headerlink" title="CSS属性进阶"></a>CSS属性进阶</h1><h2 id="1-文本常用样式属性进阶:"><a href="#1-文本常用样式属性进阶:" class="headerlink" title="1.文本常用样式属性进阶:"></a>1.文本常用样式属性进阶:</h2><ul>
<li><p>text-align 设置文字水平对齐方式,如text-align:center 设置文字水平居中</p>
</li>
<li><p>text-indent 设置文字首行缩进,如:text-indent:32px; 设置文字首行缩进32px</p>
HTML列表&表单&表格
https://zhyannan.gitee.io/zyannan.blog/2016/07/22/2016-7-22-HTML列表-表单-表格/
2016-07-22T07:54:35.000Z
2018-08-09T13:06:26.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p> 我们在写页面的时候经常会使用列表标签,用来布局文章的标题列表、菜单等,在前端页面中, 往往用表单来制作用户的注册, 登录等功能,本章会讲解列表标签和表单标签的简单如何,以及相关样式</p>
</blockquote>
CSS简明教程(三)
https://zhyannan.gitee.io/zyannan.blog/2016/07/21/2016-7-21-CSS盒子模型/
2016-07-21T07:43:52.000Z
2018-08-09T13:03:06.000Z
<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><blockquote>
<p>本章介绍css内外边距的定义,并引入盒子模型的概念</p>
</blockquote>
<h1 id="1-CSS–内外边距"><a href="#1-CSS–内外边距" class="headerlink" title="1.CSS–内外边距"></a>1.CSS–内外边距</h1><ul>
<li><p>margin: 用于控制元素与元素之间的距离, margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到互相隔开的目的</p>
</li>
<li><p>padding: 用于控制内容与边框之间的距离</p>
</li>
<li><p>border(边框): 围绕在内边距和内容外的边框</p>
</li>
<li><p>content(内容): 盒子的内容, 显示文本和图像.</p>