摘要: 为什么要有集群 上一篇随笔说了基本的主从概念以及搭建,一主可以有多从,如果同时访问的量过大(1000w)或者发生自然灾难,主服务肯定就会挂掉,数据服务就挂掉了 大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房) 集群的概念 集群是一组相互 阅读全文
posted @ 2018-07-13 21:45 汪凡 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构 master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1 通过主从配置可以实现读写分离 通过主从配置可以实现读写分离 master和slave都是 阅读全文
posted @ 2018-07-13 21:39 汪凡 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 安装包 安装Redis的有3种方式https://github.com/andymccurdy/redis-py 第一种:进⼊虚拟环境,联⽹安装包redis pip install redis 第二种:进⼊虚拟环境,联⽹安装包redis easy_install redis 第三种:到中⽂官⽹-客户 阅读全文
posted @ 2018-07-13 21:34 汪凡 阅读(578) 评论(0) 推荐(0) 编辑
摘要: redis是key-value的数据结构,每条数据都是⼀个键值对 键的类型是字符串 注意:键不能重复 值的类型分为五种: 字符串 string 哈希 hash 列表 list 集合 set 有序集合 zset 字符串 string 哈希 hash 列表 list 集合 set 有序集合 zset 点 阅读全文
posted @ 2018-07-13 20:54 汪凡 阅读(3850) 评论(0) 推荐(1) 编辑
摘要: 服务器端 服务器端的命令为redis-server 可以使⽤help查看帮助⽂档 redis-server --help 个人习惯 ps aux | grep redis 查看redis服务器进程sudo kill -9 pid 杀死redis服务器sudo redis-server /etc/re 阅读全文
posted @ 2018-07-13 20:28 汪凡 阅读(2645) 评论(0) 推荐(0) 编辑
摘要: Redis的配置信息在/etc/redis/redis.conf下。 查看 sudo vi /etc/redis/redis.conf 核心配置选项 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip bind 127.0.0.1 端⼝,默认为6379 port 6379 是否以守护进程运 阅读全文
posted @ 2018-07-13 20:17 汪凡 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 当前redis最新稳定版本是4.0.10 step1:下载 wget http://download.redis.io/releases/redis-4.0.10.tar.gz step1:下载 wget http://download.redis.io/releases/redis-4.0.10. 阅读全文
posted @ 2018-07-13 20:12 汪凡 阅读(320) 评论(0) 推荐(0) 编辑
摘要: NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 NoSQL中 阅读全文
posted @ 2018-07-13 19:54 汪凡 阅读(4995) 评论(1) 推荐(2) 编辑
摘要: 为什么要测试? Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。 测试的分类: 测试从软件开发过程可以分为: 单元测 阅读全文
posted @ 2018-07-13 19:41 汪凡 阅读(12518) 评论(0) 推荐(0) 编辑
摘要: Blueprint 模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,针对一个简单的flask程序进行模块化处理 举例来说: 我们有一个博客程序,前台界面需要的路由为:首页,列表,详情等页面 如果博主需要编辑博客,要进入后台进行处理:后台主页,编辑,创建,发布博客 这样就使得我们 阅读全文
posted @ 2018-07-13 19:27 汪凡 阅读(29218) 评论(3) 推荐(5) 编辑
摘要: 以下罗列了使用关系型数据库中常见关系定义模板代码 一对多 示例场景: 用户与其发布的帖子(用户表与帖子表) 角色与所属于该角色的用户(角色表与多用户表) 示例代码 class Role(db.Model): """角色表""" __tablename__ = 'roles' id = db.Colu 阅读全文
posted @ 2018-07-13 19:15 汪凡 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。 会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。 在 Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。 最基 阅读全文
posted @ 2018-07-13 17:55 汪凡 阅读(5798) 评论(0) 推荐(0) 编辑
摘要: Flask-SQLAlchemy安装及设置 SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升 SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层 阅读全文
posted @ 2018-07-13 17:39 汪凡 阅读(5450) 评论(0) 推荐(0) 编辑
摘要: CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账...... 造成的问题:个人隐私泄露以及财产安全。 包括:以你名义发 阅读全文
posted @ 2018-07-13 17:25 汪凡 阅读(1664) 评论(0) 推荐(3) 编辑
摘要: 一、项目分析 (一)新经资讯 1、新闻展示的Web项目 2、以抓取其他网站数据为新闻、用户发布数据为来源 3、基于Flask框架,前后端不分离 (二)技术实现 1、使用Flask框架实现 2、使用Redis + MySQL 进行数据存储 3、使用第三方扩展 (1)云通信 (2)七牛云 (三)功能模块 阅读全文
posted @ 2018-07-13 16:42 汪凡 阅读(1998) 评论(3) 推荐(1) 编辑
摘要: a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录 Http是无 阅读全文
posted @ 2018-07-13 16:36 汪凡 阅读(350) 评论(0) 推荐(0) 编辑
摘要: a)攻击原理: i.用户C访问正常网站A时进行登录,浏览器保存A的cookie ii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数 iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookie iv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以根据用户的权限做具体的操作逻辑,造成伪造成功 b)... 阅读全文
posted @ 2018-07-13 16:02 汪凡 阅读(5324) 评论(0) 推荐(0) 编辑
摘要: Flask有两大核心:Werkzeug和Jinja2 Werkzeug是一个遵循WSGI协议的python函数库 Werkzeug库的 routing 模块负责实现 URL 解析。不同的 URL 对应不同的视图函数,routing模块会对请求信息的URL进行解析,匹配到URL对应的视图函数,执行该函 阅读全文
posted @ 2018-07-13 15:54 汪凡 阅读(407) 评论(0) 推荐(0) 编辑
摘要: HTTP 异常主动抛出 abort 方法 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。 参数: code – HTTP的错误状态码 # abort(404) abort(500) 抛出一个给定状态代码的 阅读全文
posted @ 2018-07-13 15:50 汪凡 阅读(2060) 评论(0) 推荐(0) 编辑
摘要: 在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问 具体实现步骤为: 导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录 自定义转换器:自定义类继承于转换器基类 添加转换器到默认的转换器字典中 阅读全文
posted @ 2018-07-13 15:40 汪凡 阅读(2593) 评论(0) 推荐(0) 编辑