mongodb数据
123MySQL: 关系型数据库Redis: 非关系型数据库MongoDB: 非关系型数据库, NoSQL(Not only SQL)
2.主线来啦: 增删改查
12345678910111213141516// 1.查看数据库show dbs// 2.创建并使用数据库use tst// 3.查看当前工作的数据库db// 4.创建表并插入一条数据db.score.insert({"name":"glf", "score":89})// 5.查看所有表show tables// 6.查询表中所有数据db.score.find()// 7.删除表操作db.score.drop()// 8.删除数据库db.dropDatabase()
123456// 数据的增加: db.tablename.insert({.....})// 创建一个货物的表db.goods.insert({'name': '辣条', "price" ...
Docker常用命令大全
基础操作:1 docker images 查看镜像信息列表 镜像是静态的
2 docker ps -a 查看运行中的所有容器
3 **docker pull [images]:[version]**从dockerhub拉取指定镜像
4 docker run -p 8000:80 -tdi –privileged [imageID][command] 后台启动docker,并指定宿主机端口和docker映射端口。
**-i:**以交互模式运行容器,通常与 -t 同时使用;
**-d:**后台运行容器,并返回容器ID;
**-t:**为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–privileged 容器将拥有访问主机所有设备的权限
通常情况下 [command] 填下 /bin/bash 即可。
特殊情况下,如需要在centos镜像中使用systemctl . 则应添加**–privileged** 并设置[command ]为 init。
5 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互 ...
带你弄懂Jwt
1.JWT介绍2.1 jwt原则
最简单理解:jwt本质就是, 把用户信息通过加密后生成的一个字符串
123456789JWT的原则是在服务器身份验证之后,将生成一个JSON对象并将其发送回用户 { "UserName": "Chongchong", "Role": "Admin", "Expire": "2018-08-08 20:15:56" } 之后,当用户与服务器通信时,客户在请求中发回JSON对象,服务器仅依赖于这个JSON对象来标识用户。 为了防止用户篡改数据,服务器将在生成对象时添加签名(有关详细信息,请参阅下文)。 服务器不保存任何会话数据,即服务器变为无状态,使其更容易扩展
2.2 JWT的数据结构
1)jwt头:JWT头部分是一个描述JWT元数据的JSON对象
2)有效载荷:七个默认字段+自定义私有字段
3)签名=HMACSHA256( base64UrlEncode(header) +”.”+base ...
注册以及邮箱发送邮件
今天要完成注册逻辑流程图,注册接口以及前端页面,手机号和邮箱用正则校验,密码使用md5加密。
建表首先我们在Navicat for mysql建一张用户表user,字段有用户名、密码、邮箱、手机号,另外我们需要给username添加一个索引un,这个的索引类型是Unique,意思就是唯一的,因为我们要做的项目是一个工作流平台,所以用户必须给它设成唯一。Unique它的作用是在后端可以自动对用户进行唯一性验证,同时也减少了访问数据库次数,节省了类视图的资源空间。
在以往的注册登陆中,大多使用django自带的make_password()来对用户密码进行加密,而md5,它是不能解密的,所以在登陆的时候就遇到一个难题,怎么将密码进行比对然后判断登录呢,这个问题先放一放,后面用户登录中,我们会详细介绍。
注册流程图注册逻辑很简单,就是说你是用户,然后在表单中输入信息,在注册按钮上面写一个点击事件,在methods里定义这个方法,向后端发送一个post请求,将表单内容发给django端,在后端进行用户和密码的复杂度验证、手机号和邮箱正则匹配等等,如果成功,就写入数据库,并提示信息;如果失败, ...
Docker的安装和简单使用
介绍一下docker2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。
Docker核心概念
镜像(image) Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
仓库(repository) 仓库(Repository)是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 D ...
发布订阅模式与观察者模式
背景设计模式并非是软件开发的专业术语,实际上,“模式”最早诞生于建筑学。
设计模式的定义是:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。通俗一点说,设计模式是在某种场合下对某个问题的一种解决方案。如果再通俗一点说,设计模式就是给面向对象软件开发中的一些好的设计取个名字。
这些“好的设计”并不是谁发明的,而是早已存在于软件开发中。一个稍有经验的程序员也许在不知不觉中数次使用过这些设计模式。GoF(Gang of Four–四人组,《设计模式》几位作者)最大的功绩是把这些“好的设计”从浩瀚的面向对象世界中挑选出来,并且给予它们一个好听又好记的名字。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案,他不是一个死的机制,他是一种思想,一种写代码的形式。每种语言对于各种设计模式都有他们自己的实现方式,对于某些设计模式来说,可能在某些语言下并不适用,比如工厂方法模式对于javascript。模式应该用在正确的地方。而哪些才算正确的地方,只有在我们深刻理解了模式的意图之后,再结合项目的实际场景才会知道。。
模式的社区一直在发展。GoF在19 ...
websocket实时推送通知
前言在解释 WebSocket 之前,先来看个生活中的小例子。
比如外汇股票,由多人组成的公司,上市就有股份,每人一个股份10块钱,随着公司盈利,股票升值,如果亏损,股票贬值, 股市中只能买张不能买跌,在股票交易时间内,股票的价格变化十分迅速,股票网站需要向正在浏览页面的用户实时更新股价 ,所以k线图每分钟都要绘制,用户可以根据k线图预测是涨还是跌,如果张就买入,跌就不买,我们要把每分钟的点连起来。
还有心电图,心电图每秒都要绘制,把每个点连起来,就形成了曲线图。
websocket的特点是持久化链接,实时化,一次强链接,实时,主动推送数据,websocket前后端可以同时推送,而http是一次请求。websocket长连接不是一对一的。
在我们发送请求时,要监控newtwork,网页newtwork中websocket304 200 意味着这次链接结束 500在这里表示成功,也意味着结束。websocket 101 表示链接成功。
下面我们来完成一个websocket测试。
写一个websocket接口123456789101112131415161718192021222324 ...
sql语句对数据库表进行加锁和解锁
如何处理大量数据并发操作文件缓存,数据库缓存,优化sql,数据分流,数据库表的横向和纵向划分,使用协程处理并发,优化代码结构,使用协程处理并发!
锁的概概
一. 为什么要引入锁多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致不可重复读A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致
二. Mysql中的锁1.锁分类
按操作划分:DML锁,DDL锁
按锁的粒度划分:表级锁、行级锁、页级锁
按锁级别划分:共享锁、排他锁
按加锁方式划分:自动锁、显示锁
按使用方式划分:乐观锁、悲观锁
2. 乐观锁实现方法
每次获取商品时,不对该商品加锁。
在更新数据的时候需要比较程序中的库存量与数据库中的库存量是否相等,如果相等则 ...
Python学习路线分享实现快速排序算法
Python学习路线分享实现快速排序算法 好程序员Python学习路线分享实现快速排序算法快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide and conquer algorithm)。
分治法的基本思想
将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
快速排序的基本思想
先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。
左右分别用一个空数组去存储比较后的数据。
最后递归执行上述操作,直到数组长度 <= 1;
代码实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869def quick_sort(lis ...
python的进程、线程与多进程
python大佬养成计划—-进程、线程与多进程
进程与线程很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。
1什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。
现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢?
1答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。
真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。
123 ...