自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Express安全验证——密码加密与鉴权

目录bcrypt密码加密Cookie-Session鉴权Token鉴权bcrypt密码加密在实际应用中,直接将用户密码以明文信息进行存储是不安全的做法,这里讲解一下如何使用密码解析与解析安装bcrypt模块yarn add bcrypt加密与解析函数这里需要自己进行promise的封装,才能避免因为异步的原因导致出错exports.hash = (myPlaintextPassword) => { return new Promise((resolve, reject)

2021-05-16 18:36:17 1754 1

原创 MongoDB基础

MongoDB目录MongoDB简介三个概念基本操作插入数据查询数据更新数据删除数据查询操作符Sort排序MongoDB简介MongoDB是为快速开发互联网Web应用而设计的数据库系统极简、灵活,是web应用栈的一部分MongoDB的数据模型是面向文档的,所谓文档就是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各式各样的JSON,(还可以存BSON,就是二进制流,也就是说可以存储图片的二进制流)三个概念数据库(database)数据库是一个仓库,在仓库中可以存放集

2021-05-11 21:53:25 273 1

原创 关于package中version的符号

版本号一般我们在pagkage中看到包的版本号如下:"dependencies": { "axios": "^0.21.1", "jquery": "^2.0.0" },先暂时不看前面的符号。如0.21.1,它是由major(主版本号),minor(次版本号),patch组成的关于符号我们先查看一下当前的依赖,比如jquery一共有什么版本,执行命令npm view jquery versions我们通过查看package.json中,发现我们当前在配置文件里面写的

2021-05-04 19:57:16 1272

原创 HTTP协议

文章目录HTTP协议HTTP协议的特点URL和URI的区别HTTP协议与URL的关系HTTP之请求HTTP之响应在浏览器地址栏键入URL,按下回车之后会经历以下流程HTTP协议HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。浏览器作为HTTP客户端通过URL向HTT

2021-05-02 23:59:33 139

原创 Node.js模块里exports与module.exports的区别

exports 和 module.exports 二者的关系1.module.exports才是真正的接口,exports只不过是它的一个辅助工具,最终返回给调用的是module.exports而不是exports。module.exports 初始值为一个空对象 {},而exports为指向module.exports 的引用2. 在require() 的时候,返回的是 module.exports 而不是 exports用一句话来说明就是,require方能看到的只有module.exports这

2021-05-01 09:15:37 235 1

原创 关于js中的encodeURI和decodeURI

基本概念encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来。encodeURI方法不会对下列字符进行编码:":"、"/"、";" 和 “?”。示例代码<script type="text/javascript">var uriStr = "http://www.baidu.com?name=张三&num=001 zs";v

2021-04-14 23:18:28 443

原创 浅谈JS事件

什么是JS事件事件是文档和浏览器窗口中发生的特定的交互瞬间。如鼠标点击,鼠标滚动和输入框输入等。简单事件示例,点击按钮后alert let btn=document.getElementById("btn") //onclick一次只能绑定一个事件 btn.onclick=function(){ alert("click 1") } 什么是事件流事件流描述的是从页面中接受事件的顺序,一般事件流有两种,事件冒泡流和事件捕获流。我们先来看

2021-04-14 22:50:35 92

原创 cookie/localstorage/sessionstorage

cookie/localstorage/sessionstorage是什么以上三者都是一种浏览器的存储技术,各有其应用场景。cookie:cookie的限制为4kb。主要用途为保存登录信息、存储一些用户信息。localStorage:本地存储,是HTML5新增的技术,一般为5MB。sessionStorage:会话存储,存储在会话当中,关掉会话窗口数据会被清除掉,一般没有大小的限制,因为是存储在会话当中的。...

2021-04-14 16:53:52 84

原创 js之探究instanceof

在探究instanceof之前,先简单复习一下原型链的知识原型链图①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象(Object)③所有引用类型的__proto__属性指向它构造函数的prototype接下来我们来看一下几道题目function Aoo(){} function Foo(){} Foo.prototype = new Aoo(); var foo = new Foo(

2021-04-11 22:08:30 90

原创 关于post的请求体类型

文章目录Http请求一、body的类型二、使用步骤1.引入库2.读入数据总结Http请求HTTP请求中 header query 和 body的区别header显而易见是请求头query是指请求的参数,一般是指URL中?后面的参数如http://10.6.6.6:8080/api/v1/namespaces?pretty=true中 pretty=true就是querybody是指请求体中的数据前端发送请求最常用的是get请求还有post请求get请求只能传query参数,query参数

2021-04-06 22:30:06 11368 1

原创 回调函数

什么是回调函数1.你自己定义的2.你没有调用3.但它最后还是执行了常见的回调函数dom事件回调函数<button id="btn">按钮</button><script> document.getElementById("btn").onclick=function(){ alert("onclick")}</script>定时器回调函数setTimeout(() => { alert("timeout")

2021-03-28 14:47:52 86

原创 null和undefined的区别

null和undefined的区别undefined代表的是定义了,但未赋值如var a,然后输出,得到的就是undefined。null代表的是定义并赋值了,但是赋值的是null如var a=null,输出的就是null什么情况下赋值为null1.初始赋值的时候可以赋值为null,表明将要赋值为一个对象2.结束后,让对象再次赋值为null,让对象成为垃圾对象,可以被垃圾回收器回收...

2021-03-28 12:15:09 65

原创 js的数据类型

js的数据类型分类1.基本数据(值)类型* ·string* ·number* ·boolean* ·null* ·undefi2.对象数据(引用)类型* ·Object* ·Function* ·Array判断类型的方法typeof 用来判断基本数据类型,返回的是数据类型的字符串表达式,可以用来判断基本数据类型的undefined,number,string,boolean,也可以判断引用数据类型的function,但是无法判断是null和array,因为返回的都是objecti

2021-03-28 11:45:52 90 1

原创 选择器权重

权重和权值列表注意一点:继承的样式优先级为0看一下例题:由于h1是继承id为post的属性,所以权重为0第二个的权重为1+10=11第三个的权重为10+10=20第四个的权重为1+1=2所以样式应该是第三个生效,字体颜色为红色...

2021-03-24 19:29:32 79

原创 h5的新表单控件

电子邮件<input type="email">表单提交时,会验证数据是否符号email的规范(有@,并且@后面有内容)搜索类型<input type="search">提供了快速清除的功能url类型<input type="url">提交时,验证数据是否符合url的规范(http://****)电话号码类型<input type="tel">数字类型<input type="number">属性:value

2021-03-24 16:03:25 190 1

原创 call apply bind的异同和用处

改变函数this指向的方法callapplybindcall方法call方法可以进行函数的调用,同时也可以改变this的指向,传递参数的方法为直接传递。示例代码:函数调用function test(){ console.log("测试代码"); } test.call()改变this指向 var o={ name:"123" } function fn(){

2021-03-23 20:00:16 73

原创 面向对象和面向过程

面向过程面向过程编程(POP),就是分析出解决问题所需要的步骤,然后用函数将这些步骤一步一步实现,使用时再依次进行调用。例如:面向过程,就是按照分析好的步骤,按照步骤去依次解决问题面向对象面向对象(OOP),就是把事务分解成一个一个对象,然后由对象之间进行分工和合作。以上面的将大象装进冰箱为例子。先找出对象,并写出这些对象的功能。大象对象·进去冰箱对象·打开·关闭使用大象和冰箱的功能,将大象装进冰箱面向对象就是以对象功能来划分问题,而不是步骤面向对象的优势与劣

2021-03-23 15:14:42 92

原创 js的构造函数

创建对象的方法对象字面量new Object()自定义构造函数构造函数构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。在 JS 中,使用构造函数时要注意以下两点:构造函数用于创建某一类对象,其首字母要大写构造函数要和 new 一起使用才有意义new的执行new 在执行时会做四件事情:在内存中创建一个新的空对象。让 this 指向这个新的对象。执行构造函数里面

2021-03-23 09:43:19 472

原创 js的声明提前

什么是声明提前?它是指当我们声明一个变量或是一个函数的时候,我们可以在起前面访问带该变量或函数;即:声明统一提前,赋值原地不变变量声明提前先来看一下代码:function b(){ console.log(a); //undefined var a = '哈哈'; //声明变量a并且给a赋值哈哈 console.log(a) //哈哈}b()等同于function b(){ var a; console.log(a); //undefined a = '

2021-03-17 18:01:06 192

原创 关于js类型判断的几种方法

关于js类型判断的几种方法typeofinstanceofconstructorObject.prototype.toString.call()typeof示例代码如下 console.log(typeof null); console.log(typeof '10');输出结果 object string其实很容易能够看出这种方法的弊端,null 的结果也是 object,且数组的结果也是 object,那么说明这种方法无法分辨纯粹的objectinst

2021-03-16 23:27:18 152

原创 关于js的原型链

关于prototype和constructor首先先确定一个概念:任何对象必有__ proto __属性.(包括简单类型对象,var i=1;)特例:(Object.prototype属性对象)和(Object对象.proto属性对象)没有proto属性.任何函数必有prototype原型对象接下来我们看下面这串代码 function Person(){} var person=new Person(); var Father=function(){}我们定义了两个函数,Pers

2021-03-16 19:35:45 59

原创 关于CSS隐藏界面元素的几种方法

关于CSS隐藏界面元素的几种方法opacityvisibilitydisplayopacity这种方法是通过将页面上的元素设置为透明来进行一个隐藏,隐藏之后的元素仍然占据着原来的位置并且能够进行交互,示例代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content=

2021-03-16 14:40:44 241

原创 决策树

认识决策树决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法怎么理解这句话?通过一个对话例子决策树分类原理详解为了更好理解决策树具体怎么分类的,我们通过一个问题例子?如何对这些客户进行分类预测?你是如何去划分?有可能你的划分是这样的那么我们怎么知道这些特征哪个更好放在最上面,那么决策树的真实划分是这样的信息和消除不确定性是相联系的当我们得到的额外信息越多的话,那么我们猜测的代价越小(猜测的不确定性减小)

2021-02-19 15:06:45 90

原创 朴素贝叶斯

朴素贝叶斯sklearn.naive_bayes.MultinomialNB(alpha = 1.0)朴素贝叶斯分类alpha:拉普拉斯平滑系数案例:20类新闻分类分割数据集tfidf进行的特征抽取朴素贝叶斯预测#朴素贝叶斯对sklearn中的新闻集进行分类from sklearn.datasets import fetch_20newsgroupsfrom sklearn.model_selection import train_test_splitfrom sklearn.fea

2021-02-19 14:56:05 71

原创 K-近邻算法

定义如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别距离公式两个样本的距离可以通过如下公式计算,又叫欧式距离电影类型分析假设我们有现在几部电影其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想鸢尾花类型举例from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklea

2021-02-19 14:45:32 162

原创 机器学习之特征工程——特征预处理

什么是特征预处理通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程通俗来讲:统一标准,不让其中一个特征值在数值上占较大影响力特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征我们需要用到一些方法进行无量纲化,使不同规格的数据转换到同一规格归一化通过对原始数据进行变换把数据映射到(默认为[0,1])之间分析1、实例化MinMaxScalar2、通过fit_transform转换import

2021-02-19 14:32:46 152

原创 机器学习之特征工程——特征提取

什么是特征工程特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。意义:会直接影响机器学习的效果特征工程包含内容特征抽取特征预处理特征降维特征提取将任意数据(如文本或图像)转换为可用于机器学习的数字特征字典特征提取我们对以下数据进行特征提取[{'city': '北京','temperature':100}{'city': '上海','temperature':60}{'city': '深圳','temperature':30}]from

2021-02-19 14:23:13 433

原创 机器学习之数据集

sklearn数据集sklearn:Python语言的机器学习工具Scikit-learn包括许多知名的机器学习算法的实现Scikit-learn文档完善,容易上手,丰富的APIsklearn数据集使用:sklearn.datasets 加载获取流行数据集datasets.load_()获取小规模数据集,数据包含在datasets里datasets.fetch_(data_home=None) 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录

2021-02-19 14:10:29 3505

原创 机器学习概述

什么是机器学习机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测数据集的构成特征值+目标值机器学习的算法分类例子:特征值:猫/狗的图片;目标值:猫/狗-类别——分类问题特征值:房屋的各个属性信息;目标值:房屋价格-连续型数据——回归问题特征值:人物的各个属性信息;目标值:无——无监督学习总结:机器学习算法分类监督学习(supervised learning)(预测)定义:输入数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值(称为回归),或是输出是有限

2021-02-19 13:49:22 377

原创 pyhton词云

pyhton词云首先安装相关依赖pip install wordcloud简单的示例代码# 导入词云制作第三方库wordcloudimport wordcloud# 创建词云对象,赋值给w,现在w就表示了一个词云对象w = wordcloud.WordCloud()# 调用词云对象的generate方法,将文本传入w.generate('and that government of the people, by the people, for the people, shall not

2021-02-16 17:02:41 112

原创 scrapy爬取三国演义并存入数据库

scrapy爬取三国演义之前的博客中有一篇是用request模块进行三国演义的爬取,这次我们使用scrapy框架来爬取,同时涉及到scrapy的一个新知识点import scrapyfrom ..items import SanguoItemclass SpidersanguoSpider(scrapy.Spider): name = 'spidersanguo' # allowed_domains = ['www.xxxx.com'] start_urls = ['htt

2021-02-16 16:58:34 560

原创 scrapy持久化存储

scrapy基于管道的持久化存储编码流程:1.数据解析2.在item类中定义相关的属性3.将解析的数据封装存储到item类型的对象4.将item类型的对象提交给管道进行持久化存储的操作5.在管道类的process_item中要将其接受到的item对象中存储的数据进行持久化存储操作6.在配置文件中开启管道示例代码:在item类中定义相关属性(items.py):# Define here the models for your scraped items## See documen

2021-02-15 23:47:39 143

原创 scrapy框架

什么是scrapy框架 爬虫中封装好的一个框架。 功能: 1.高性能的持久化存储 2.异步的数据下载 3.高性能的数据解析 4.分布式环境安装环境安装:pip install scrapy注:pip版本要在21版本以上的才可以使用以上方法进行安装,可以使用pip -V查看自己的pip版本如何使用 创建工程: scrapy startproject 项目名创建完成后的目录如下: 创建成功后需要在spiders目录下创建一个爬虫文件 scrapy genspider 文件名

2021-02-15 23:30:58 107

原创 selenium处理iframe与模拟滑动

selenium处理iframe先看一下这个例子我们要处理右边的待滑动滑块,首先要先定位到滑块身上。通过查看源码发现,右边部分是嵌套在一个iframe中,所以我们无法直接定位到滑块身上。这个时候我们需要用switch_to.frame(id),来定位到右边部分。代码如下:from selenium import webdriverfrom lxml import etreefrom selenium.webdriver import ActionChainsif __name__ == '

2021-02-15 15:57:53 560

原创 selenium模块

selenium模块和爬虫之间具有怎样的关联?便捷的获取网站中动态加载的数据便捷实现模拟登录selenium使用流程1.环境安装:pip install selenium2.下载一个浏览器的驱动程序(谷歌浏览器)下载路径:http://chromedriver.storage.googleapis.com/index.html驱动程序和浏览器的映射关系:http://blog.csdn.net/huilan_same/article/details/518966723.实例化一个浏览

2021-02-15 00:24:42 135

原创 模拟登录后携带cookie继续发送请求

session会话对象作用:1.可以进行请求的发送2.如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中使用:创建一个session对象:session=requests.Session()使用session对象进行模拟登录请求的发送,登录成功后cookie就会被存储到session中再次进行请求发送,第二次请求会携带cookie代码示例# 模拟登录红薯网import requestsfrom lxml import etreefrom

2021-02-14 16:24:43 564

原创 爬虫之识别验证码

验证码识别验证码是网站反爬的一种策略,这里我们使用超级鹰提供的api进行验证码识别超级鹰链接这里需要用户自己进行注册与充值,然后下载示例代码,将Chaojiying_Client这个类拷贝到工作区间进行引入,接下来的代码示例Chaojiying_Client类#!/usr/bin/env python# coding:utf-8import requestsfrom hashlib import md5class Chaojiying_Client(object): def

2021-02-14 11:32:36 205

原创 爬虫之xpath解析

xpath解析xpath解析是最常用且最便捷高效的一种解析方式,比较通用xpath解析原理实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中。调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获环境安装pip install lxml如何实例化一个etree对象:from lxml import etree将本地的html文档中的源码数据加载到etree对象中:etree.parse(filePath)可以将互联网上获取到的源码数据加载到

2021-02-13 22:23:52 283 2

原创 爬取三国演义

import requestsfrom bs4 import BeautifulSoupif __name__ == '__main__': # 占位符代替页码 url="https://so.gushiwen.org/search.aspx?type=guwen&page=%d&value=三国演义" # 每一页的url url_list=[] headers = { "User-Agent": "Mozilla/5.0(Wind

2021-02-12 21:48:51 496 1

原创 爬虫之bs4解析

bs4解析bs4解析是python中独有的数据解析方式bs4数据解析的原理1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中2.通过调用BeautifulSoup对象中相关的属性或方法进行标签定位和数据提取环境安装:1.pip install bs42.pip install lxml这里顺带将pip如何设置成国内源的方法链接附上链接在这如何实例化BeautifulSoup对象:from bs4 import BeautifulSoup将爬取到

2021-02-12 20:30:14 967 1

空空如也

空空如也

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

TA关注的人

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