- 博客(33)
- 收藏
- 关注
原创 Apache Mahout初体验
1、Mahout是什么?Mahout是一个算法库,集成了很多算法。Apache Mahout 是 Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。2、Mahout是用来干嘛的?2.1 推荐引擎服务商或网站会根据你过去的行为为你推荐书籍、电影或文章。2.2 聚类Google news使用聚类技术通过标题把新闻文章进行分组,从而按照逻辑线索来显示新闻,而并非给出所有新闻的原
2022-04-06 09:50:33 2061
原创 flex:1;
CSS属性 flex 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间。这是一个简写属性,用来设置 flex-grow, flex-shrink 与 flex-basis。所以,flex:1其实就是设置了三个属性:flex-grow: 1; flex-shrink: 1; flex-basis: 0%;这其中起到最关键作用的就是flex-grow属性了,它指定了flex容器中剩余空间的多少应该分配给项目(flex增长系数),而这个系数如果不设置时默认是0,代表的意义就是即使flex容器有
2022-03-25 16:15:21 167
原创 redux-thunk-基本使用
redux-thunk-基本使用作用redux-thunk 中间件可以处理函数形式的 action。因此,在函数形式的 action 中就可以执行异步操作代码,完成异步操作。拓展了功能,支持函数形式的 action之前const action1 = {type: 'todos/add', payload: '学习redux'}dispatch(action1)之后const action1 = async (dispatch) =>{ const res = await
2022-03-21 15:42:58 431
原创 函数柯里化
柯里化: 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。Currying概念其实很简单,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。以加法函数为例:function add(a, b) { return a + b;}function curry(fn, a) { return function(b) { ret
2021-11-01 20:20:10 153
转载 Vue项目进行webpack打包时出现css报错
在进行npm run build进行打包时出现报错: Unknow word解决方案暂时注释掉OptimizeCSSPlugin相关配置,等待问题解决后恢复。1.找到build/webpack.prod.conf文件,注释掉此plugin2.再次打包:npm run build此时打包成功3.在生成的dist中查找出现问题的css,定位到具体样式此时发现是em标签出现问题,根据上下样式查找出原样式表的相应位置及属性4.查找样式表问题的对应位置并进行修改5.更改后放开插件注释并重新b
2021-10-22 12:52:14 1355
原创 Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)例如: auguments是类数组,不是数组HTML DOM集合转化成数组对象const lis = this.$refs.foodsWarpperUl.getElementsByClassName('food-list') // Array.prototype.sli
2021-10-20 15:33:56 79
原创 session和cookie的应用场景和区别
cookie存于客户端,session存于服务器端。cookie的作用是与服务器进行交互,作为http规范的一部分存在,而web storage是为了在本地存储“数据”而生。cookie应用场景:①判断用户是否登录过网站; ②用来记录购物车或者记录用户使用偏好来制定推送;session应用场景:①登录验证信息cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器
2021-10-19 20:28:50 1807
转载 前端路由实现方式:hash和history
前端路由方式在单页面web网页中, 单纯的浏览器地址改变, 网页不会重载,如单纯的hash网址改变网页不会变化,因此我们的路由主要是通过监听事件,并利用js实现动态改变网页内容,有两种实现方式:hash模式:监听浏览器地址hash值变化,执行相应的js切换网页;history模式:利用history API实现url地址改变,网页内容改变;它们的区别最明显的就是hash会在浏览器地址后面增加#号,而history可以自定义地址。1.hash模式使用window.location.hash属性及窗
2021-10-19 15:04:26 469
原创 观察者模式和发布订阅模式
观察者模式和发布订阅模式的区别 从图中可以看出,观察者模式中观察者和目标直接进行交互,而发布订阅模式中统一由调度中心进行处理,订阅者和发布者互不干扰。这样一方面实现了解耦,还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息,但是不想所有的订阅者都接收到,就可以在调度中心做一些处理,类似于权限控制之类的。还可以做一些节流操作。代码实现观察者模式// 观察者class Observer { constructor() { } update(val) {
2021-10-18 20:44:24 94
原创 初识WebSocket
why WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。 这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务
2021-10-17 20:16:32 82
原创 浏览器数据库IndexedDB
随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引。所以,需要一种新的解决方案,这就是 IndexedDB 诞生的背景。 通俗地说,IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚
2021-10-17 20:09:52 197
原创 JS为什么是单线程?
什么是进程? 进程:是cpu分配资源的最小单位;(是能拥有资源和独立运行的最小单位)什么是线程? 线程:是cpu调度的最小单位;(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)浏览器是多进程的 放在浏览器中,每打开一个tab页面,其实就是新开了一个进程,在这个进程中,还有ui渲染线程,js引擎线程,http请求线程等。 所以,浏览器是一个多进程的。大家都在说js是单线程的,但是为什么要设计成单线程? 这主要和js的用途有关,js是作为浏览器的脚本语言,主要是实现
2021-10-17 20:06:45 5267
原创 Web Worker使用教程
JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。 Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给
2021-10-17 20:02:59 107
转载 Mock.js使用
Mock.js 是一款前端开发中拦截Ajax请求再生成随机数据响应的工具.可以用来模拟服务器响应. 优点是非常简单方便, 无侵入性, 基本覆盖常用的接口数据类型.大概记录下使用过程, 详细使用可以参见Mock文档 Mock Wiki安装使用npm安装: npm install mockjs;或直接<script src="http://mockjs.com/dist/mock.js"></script>;数据模板格式:'name|rule': value属性名|生成规
2021-10-11 17:20:55 325
原创 正向代理和反向代理
正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。 正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。 从上面的描述也能看得出来正向代理和反向代理最关键的两点区别:是否指定目标服务器客户端是否要做设置
2021-10-10 10:35:58 131
原创 JS动态属性
不必静态地知道属性名,可以使用动态属性名称来解构对象。function greet(obj, nameProp) { const { [nameProp]: name = 'Unknown' } = obj; return `Hello, ${name}!`;}greet({ name: 'Batman' }, 'name'); // => 'Hello, Batman!'greet({ }, 'name'); // => 'Hello, Unknown!'使用2个参
2021-10-08 10:01:01 392
原创 使用async/await重写异步编程
async关键字将 async 关键字加到函数申明中,可以告诉它们返回的是 promise,而不是直接返回值。示例let hello = async function() { return "Hello" };hello();要实际使用promise完成时返回的值,我们可以使用.then()块,因为它返回的是 promise:hello().then((value) => console.log(value))甚至只是简写如hello().then(console.log)await关
2021-10-07 20:24:49 297
原创 使用Promise封装axios请求
// ajax请求模块import axios from 'axios'// const axios = require('axios')export default function ajax(url,data={},type='GET'){ // 里面的Promise结果控制返回的Promise return new Promise(function(resolve,reject){ // 同步代码 let promise const
2021-10-07 16:08:10 605
原创 axios实例
为什么要创建axios实例,它与我们直接使用的axios.get这样的写法有什么区别?引入axios,然后在页面中进行请求axios.get(‘url’).then(res=>{}),这里默认会导出实例,通常使用这个axios就可以了而之所以要创建axios实例,是因为我们实际工作项目中,可能需要访问多个服务地址,而这些服务请求和响应的结构也可能都完全不同,那么你可以通过axios.create创建不同的实例来处理。比如axios1是用http状态码确定响应是否正常,而axios2是服务器自己
2021-10-07 15:11:29 837
原创 npm install常见安装命令
npm install moduleName # 安装模块到项目目录下 npm install -g moduleName # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。 npm install -save moduleName # -save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。 npm install -save-dev moduleName # -save-dev 的意
2021-10-06 20:06:07 1991
原创 git使用总结
底层命令git对象 git hash-object -w fileUrl : 生成一个key(hash值):val(压缩后的文件内容)键值对存到.git/objectstree对象 git update-index --add --cacheinfo 100644 hash test.txt : 往暂存区添加一条记录(让git对象 对应 上文件名)存到.git/index git write-tree : 生成树对象存到.git/objectscommit对象 echo
2021-10-06 18:59:44 69
原创 CSS元素类型
css元素分为三种:块级元素、行内元素和行内块元素1、 块级元素设置display:block就是将元素显示为块级元素常用的块状元素有:<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>特点:独占一行高度,行高、外边距以及内边距都可以控制宽度默认是容器的10
2021-09-27 09:58:31 559
原创 JS对象继承方式
原型链继承这种方式关键在于: 子类型的原型为父类型的一个实例对象// 父类型function Person(name, age) { this.name = name; this.age = age; this.play = [1, 2, 3]; this.setName = function() {};}Person.prototype.setAge = function() {}// 子类型function Student(price) { this.price =
2021-09-26 19:30:47 93
原创 CSS grid布局
<!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>Doc
2021-09-26 17:42:18 76
原创 CSS flex布局
<!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>Doc
2021-09-26 17:22:20 83
原创 webpack基本配置
开发环境配置/* 开发环境配置:能让代码运行 运行项目指令: webpack 会将打包结果输出出去 npx webpack-dev-server 只会在内存中编译打包,没有输出*/const { resolve } = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = { entry: './src/js/index.js',
2021-09-26 16:27:12 83
转载 Vue脚手架
笔记脚手架文件结构├── node_modules ├── public│ ├── favicon.ico: 页签图标│ └── index.html: 主页面├── src│ ├── assets: 存放静态资源│ │ └── logo.png│ │── component: 存放组件│ │ └── HelloWorld.vue│ │── App.vue: 汇总所有组件│ │── main.js: 入口文件├── .gitignore: g
2021-09-13 10:53:42 141
原创 python爬取豆瓣电影数据可视化
爬取网页内容第三方库:BeautifulSoup,sqlite3,urllib,xlwt,re#-*- codeing = utf-8 -*-from bs4 import BeautifulSoupimport sqlite3import xlwtimport urllib.request,urllib.errorimport redef main(): baseurl="https://movie.douban.com/top250?start=" #1.爬取网页
2021-07-30 18:51:12 5743
原创 JavaScript字符与acsii值互转
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-07-30 13:22:18 434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人