自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Python 学习之生成图形验证码

新建一个captcha 的python 文件包,在__init__.py 文件中写入生成图形验证码的代码,将字体文件也放入这个文件包中。

2024-09-25 14:42:08 963

原创 Redis 键值对数据库学习

redis 是一种 nosql 数据库,他的数据是保存在内存中,同时 redis 可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比 memcached 支持更多的数据结构( string,list表[队列和栈],set[集合],sorted set[有序集合],hash(hash表)。登录会话存储,存储在 redis 中,与 memcached 相比,数据不会丢失。排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。

2024-09-24 20:52:58 999

原创 使用celery+Redis+flask-mail发送邮箱验证码

注意:这里没有将celery放在app.py 文件中绑定,是为了防止出现循环引用的问题。task.py : 创建celery.py 对象,并且添加任务,和app绑定,views.py: 调用celery 中的任务。监听celery:在终端输入。

2024-09-24 19:36:26 660 1

原创 Flask学习之项目搭建

存在的目的:在Python中,如果两个或更多模块(文件)相互导入对方,就会形成导入循环。例如,模块A导入了模块B,同时模块B又导入了模块A,这就会导致导入循环。比如在这个项目中如果在app.py 中定义db,在models.py中使用app.py 中的db,又在app.py 中使用models.py 中的ORM模型,这样就导致app.py 和models.py 互相引用。

2024-09-24 16:33:43 892

原创 Python 学习之虚拟环境

到目前位置我们所有的第三方包安装都是直接通过 pip install xx 的方式进行安装的,这样安装会将那个包安装到你的系统级的 python 环境中。但是这样有一个问题,就是如果你现在 Diango 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9 开发的,让你来维护,但是 Django 1.10 不再兼容 Django 0.9 的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有 Django 1.10 和 Django 0.9 两套环境呢?

2024-09-24 13:35:16 802

原创 前端在vue2框架中导出PDF

【代码】前端使用jsPDF、html2canvas导出pdf。

2023-06-02 15:05:06 2422

原创 vue踩坑之H5页面在ios的webview里面,长时间放到后台按钮失灵

在ios上应用切到后台后,再次进入会因为加载打包后的某些文件加载失败导致页面中的跳转按钮失灵

2023-03-03 15:37:44 1451

原创 vuex的基本使用

1.vuex是vue里面的状态机 有5大属性state:{} 是仓库里面的数据mutations:{} 修改数据的唯一方式getters:{} 是仓库中的计算属性actions:{} 异步修改仓库的数据 但是最终还是mutations来修改modules:{} 合并状态机2.定义仓库数据state:{key:value}在组件中的计算属性中调用get fn(){return this.$router.state.key;}3.修改仓库中的数据...

2021-11-24 22:48:58 352

原创 vue+typescript的基本语法

1. 首先要在script标签中添加lang属性并且设置为ts// 1.从vue的扩充包中引入核心文件 Vue,Componentimport {Vue,Component} from "vue-property-decorator"//引入组件import Two from "@/components/Two.vue"// 2.使用@Component装饰器@Component({//注册组件 components:{Two}})// 3.暴露组件并继承vue基类expo.

2021-11-19 15:55:53 608

原创 动态面包屑

步骤1:首先是在router文件夹下面的index.js下如果有二级菜单的路由,给一级菜单和二级菜单都要加meta如果没有二级菜单路由,把一级菜单的path交给儿子,只给二级菜单添加meta有二级菜单的路由,一级菜单需要重定向一下。需要的数组 [{path,title},{path,title},{path,title}]如果是一个一级菜单 { path: '', component: Layout, children: [{

2021-11-13 20:31:03 735

原创 前置路由守卫

路由守卫,他是一个方法。拦截路由。路由守卫写在路由暴露之前,在这个方法中会传递一个回调函数,回调函数中传递3个参数router.beforeEach(()=>{}) 也叫做前置路由守卫。里面有3个参数:to 到哪里去from 从哪里来next 放行函数作用 防止别人猜到网址的哈希值后直接跳过登录就可以查看数据router.beforeEach((to, from, next) => { let tk = local.get('tk')...

2021-11-11 16:42:30 2611

原创 axios的三层封装

第一层:最底层封装axios 需要设置默认地址 请求拦截器 响应拦截器新建一个request.js的工具文件,封装和改造axios// 这是个工具js 专门用来封装axios的工具import axios from 'axios'import local from '@/utils/local'// 引入elementui库import { Message } from 'element-ui'import router from '../router'// 1.设置默认地址...

2021-11-11 16:37:22 2866

原创 vue-路由配置-管理系统

页面逻辑:首先要进入登录页面,登录成功后进入首页,首页部分有功能菜单,功能菜单有一级菜单或者二级菜单功能菜单部分的截图:路由设置://layout是布局组件,左侧是导航菜单,右顶部是面包屑,右底部是路由出口,所以每进入一个页面首先加载布局组件;const routes = [{ path: "/login", component: Login }, // 重定向到login { path: '/',

2021-11-11 16:24:27 879

原创 js-解决回调地域和控制异步顺序

Promise内置对象Promise的介绍Promise 是一门新的技术,是JS中进行异步编程的新解决方案从语法上说:Promises是一个构造函数;从功能上说:promise对象用来封装一个异步操作并可以获取其成功和失败的数据异步编程:fs文件操作,数据库操作,ajax,定时器优势:promise可以支持链式调用,可以解决回调地域问题Promise的方法Promise.all() 将多个promise实例包装成一个新的实例,只有所有的promise都成功了才会成功,只要有一个失.

2021-11-02 15:55:34 623

原创 js-ES5的继承和ES6的继承

ES5的继承四个步骤:1.子类继承父类的属性,改变this的指向2.子类要继承父类原型上的方法3.让子类原型上构造器的指向自身的构造函数4.子类在原型上添加自己方法function Person(name, age, sex) { this.name = name, this.age = age, this.sex = sex } Person.prototype.eat = function() ..

2021-11-02 15:23:22 164

原创 js-MVVC架构

什么是MVVC?MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版模型(Model) - 表示应用程序核心(数据)视图(View) - 用户界面视图模型(ViewModel)- 连接View和Model,当数据发生改变,自动更新View。MVVM框架最常见的特性之一就是数据的双向绑定简单案例对象的Object.defineProperty(obj,prop,descriptor)方法obj:要定义属性的对象。prop:要定义或修改的属.

2021-11-02 15:12:30 660

原创 js-MVC架构

什么是MVC?MVC是一种使用MVC设计创建WEB应用程序的模式,把WEB应用分为三个基本部分:模型(Model) - 表示应用程序核心(数据)视图(View) - 用户界面控制器(Controller)- 应用程序处理请求进行处理,改变Model数据简单的例子--购物车* { margin: 0; padding: 0; } table { ...

2021-11-02 14:50:42 536

原创 js-变量的检测

1.typeof()检测的对象是 number/string/boolean/undefined/funtion// typeof 检测类型 console.log(typeof "jiwd"); //string console.log(typeof 111); //number console.log(typeof false); //boolean console.log(typeof undefined); //undefined console..

2021-10-23 17:44:15 203

原创 js-浅拷贝和深拷贝

let obj = { name: "张三", age: 18 } let user = obj user.name = "李思" console.log(obj); console.log(user);user和obj的地址是同一个,所以user修改了name的值也会影响obj的name值浅拷贝由此出现了浅拷贝:其作用就是用于解决数据共享的问题方式1:合并对象,Object.assign({},对象),...

2021-10-23 15:01:49 116

原创 js-批量渲染数据

使用场景,淘宝京东的商品列表思路:1.从后端拿到所有数据的列表 2.遍历 3.字符串模板将数据放到节点中 4.将节点放到页面中

2021-10-15 19:15:55 363

原创 js-上传头像到后端数据库

思路:1.上传头像按钮,必须要一个file类型的input,将其隐藏,用一个假的图片或者样式替代它2.给input添加change事件,这里必须是change事件,如果有文件的变化才会触发3.获取添加进来的图片的信息用files属性,获取到的是一个数组,里面包含图片的最后的修改时间,文件大小,文件类型,文件名称4.查看后端给的数据类型,需要的是一个file类型,(如果是一个二进制类型的也是同样的方式)5.将图片的信息追加到formData内置对象中6.上传头像的...

2021-10-11 18:44:23 1278

原创 js-mouseover和mouseenter的区别---面试题

1.mouseenter鼠标事件当鼠标移到元素上时就会触发mouseenter事件2.区别mouseover鼠标经过自身盒子会触发,经过子盒子还会触发,mouseenter只会经过自身盒子触发。原因:因为mouseenter不会冒泡3.与mouseenter搭配使用的mouseleave鼠标离开事件,同样不会冒泡...

2021-09-28 23:02:12 162

原创 jq-实现手风琴效果

实现功能:1、点击一级类别显示对应二级类别。2、展开一个类别的同时,关闭其他类别。3.一级类别展开和关闭的时候,对应的图标也要跟着改变。 <ul id="first_menu"> <li>苹果<span>+</span> <ul> <li>苹果1</li> <li>苹果2</li&...

2021-09-24 21:40:03 327

原创 js-购物车的全选与反选

<table id="stuInfo"> <thead> <tr> <th><input type="checkbox" id="allcheck">全选</th> <th>学号</th> <th>姓名</th> &lt..

2021-09-24 16:00:26 325

原创 jq-购物车的全选与反选

全选: 实现思路:将全选选项框的状态值checked和其他的选项框状态值保持一致就可以实现全选的效果反选: 实现思路:只要有一个选项没有被选中,那么全选选项就不会被选中 方式1:给单个的input复选框绑定点击事件,找到所有的input复选框(除去全选复选框)的长度,再找到已经被选中的复选框的长度,如果这两个长度相等表示全选复选框可以被选中,不相等全选复选框不能被选中 方式2:利用标杆思想,首先给单个的复选框绑定点击事件,定义一个标...

2021-09-18 23:08:54 505

原创 js实现简单的视频播放

功能1:播放暂停切换 思路:准备一个播放的图片和一个暂停的图片; 利用标杆思想,设置一个flag变量,播放的时候将flag设置为false,暂停的时候设置为true,如果flag为true则播放同时改变为播放图片,为false则暂停同时改变为暂停图片功能2:进度条显示 思路:首先要获取视频播放的当前时间用currentTime()获取,还有视频的总时间,duration()来获取,用document.body.offsetWid...

2021-09-18 20:08:31 7866

原创 原生js实现搜索历史记录案例

<header> <input type="text" id="search"> <input type="button" id="btn" value="搜索"> </header> <main> <div> <h3>搜索记录</h3> <span id="clear">清空&l...

2021-09-18 12:21:09 3377

原创 js-实现轮播图效果,典型写法

<div id="bigbox"> <ul id="splidebox" style="left: 0;"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <ul id="p.

2021-08-29 00:42:00 157

原创 js-创建追加新节点来添加表格

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>D.

2021-08-27 23:58:19 808

原创 js-利用字符模板来动态添加表格

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>D.

2021-08-27 23:55:56 433

原创 js-实现在线客服功能

* { margin: 0; padding: 0;}ul li { list-style: none;}.online-service { position: fixed; bottom: 100px; right: 50px;}#online_list { width: 50px;}#online_list li { width: 50px; height: 50px; position: rela.

2021-08-26 19:18:55 2136

原创 js-实现选项卡功能

<style> * { margin: 0; padding: 0; } ul, li { list-style: none; } #tab_control { width: 300px; border: 1px solid #ccc; .

2021-08-26 19:14:04 317

原创 js-实现蒙层功能

<style> #mask { height: 100%; width: 100%; background-color: rgba(0, 0, 0, 0.1); position: fixed; top: 0; left: 0; display: none; } ..

2021-08-26 19:11:57 1107

原创 js-回到顶部功能

<style> body { height: 3000px; } #scrollTop { width: 100px; height: 100px; background-color: rgba(0, 0, 0, 0.3); text-align: center; line-height.

2021-08-26 19:09:39 107

原创 js-判断是否为数组,数组排序,翻转,去重

1.console.log(数组名 instanceofArray)//如果是数组返回true,否则返回false2.Array.isArray(obj)如果是对象是数组返回true,否则返回false3.翻转排序<script> let arr = [1, 2, 8, 4, 9, 10] arr.reverse() console.log(arr) // 数组冒泡排序 let arr1 = [1, 92, 38, 43, 91, .

2021-08-23 23:40:30 197

原创 js-作用域链

1.只要有代码,就至少有一个作用域2.写在函数内部的局部作用域3.如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域4.根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链,采取就近原则,站在目标位置出发,一层一层的往外查找<script> var num = 30 function fn() { //外部函数 var num = 40 function innerfn

2021-08-23 16:00:19 85

原创 js-Date对象

(1)定义:let date=new Date()(2)获取年份: let year = date.getFullYear() //获取当前年份(3)获取月份,.getMonth()的返回值是0-11console.log(date.getMonth() + 1) //date.getMonth()是7(4)获取某月中的第几天console.log(date.getDate())(5获取今天星期几,letxq=date.getDay() 返回值是0...

2021-08-23 14:30:42 327

原创 js中Array数组的常用方法

1.concat()数组的拼接var arr1 = ['red', 'yellow', 'blue'] var arr2 = ['green', 'white'] var arr3 = ['red_black'] var new_arr = arr1.concat(arr2, arr3) console.log(new_arr) //["red", "yellow", "blue", "green", "white", "red_blac

2021-08-23 11:50:46 276

原创 用js实现冒泡排序

冒泡排序的原理:例如要求排序结果是从小到大,那么就是前一个数字和后面一个数字相比较,如果前大于后则交换位置,如果后大于前则不交换如下例子:由以上分析可以发现,每一轮交换的次数等于数组长度-1-i所以可以写两层循环,第一层for循环控制交换数据到了第几轮,第二层循环用于交换数据以及交换的次数代码如下:<script> var arr = [5, 4, 3, 2, 1] for (let i = 0; i < arr.length.

2021-08-19 00:49:40 805

原创 js中的arguments数组求任意个数的最大值

1.arguments定义:当我们不确定有多少实际参数传递的时候,可以用arguments来获取,在js中,arguments实际上它是当前函数的一个内置对象,所有函数都内置了一个arguments对象,这个对象里面存储了传递的所有参数1)arguments是一个只能在函数体中使用的数组,2)arguments具有一些数组的方法,例如,数组的lenght,但是不具有数组的pop()和push()例子:求数组任意个数的最大值<script> funct.

2021-08-18 23:05:23 1152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除