自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赵泽清的博客

一个追逐阳光的程序猿~

  • 博客(39)
  • 收藏
  • 关注

原创 全文搜索引擎 elasticsearch及docker部署

全文搜索引擎 elasticsearch.js最近在重新开发个人网站,在博文系统中涉及到全文搜索功能的实现,这里采用了 Elasticsearch 搜索引擎实现该功能。Elasticsearch,简称为es, 基于lucene(倒排索引:通过文档中的关键字来搜索文档)。是一个分布式、可扩展、近乎实时的存储、检索与数据分析引擎。可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。 es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful

2021-12-05 20:07:26 561

原创 淘宝授权登录 oauth2.0

淘宝授权登录 oauth2.0最近做自己的个人网站,涉及到了用户登录,为了省去用户注册步骤(不喜欢写简单的页面-_-),博主直接走了淘宝授权的模式,获取基本的用户昵称信息其实就可以了。简单的入库用于后续可能会有人对网站进行评论等互动操作。0. 不熟悉的同学可以先大致了解下 oauth 认证流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8sphIC5c-1632040223044)(G:\learn\markdown文档中心\日记\images\oss_16157

2021-09-19 16:31:27 3161

原创 1.1 docker安装for linux

1. 安装Docker????我这里用的系统是 Alibaba Cloud Linux 3.2104 64位操作系统,大家可以按版本自行找指导安装部署并使用Docker(Alibaba Cloud Linux 3)2.启动Docker????安装完成后启动 docker 官方文档3.配置镜像加速不知道为什么自带的三个链接都不太行阿里镜像加速中心 有提供一个ustc大学镜像:‘https://docker.mirror.ustc.edu.cn’$ vim /etc/containe

2021-09-16 01:31:33 264

原创 1.docker安装for windows

服务器太贵?没有linux环境?没关系,使用docker吧!利用docker的庞大镜像资源库搭建整个运行环境,体验开发测试部署一体化的快感!docker的优势 可以轻易地让几十个服务在docker中跑起来 docker可以让开发者更加贴近生产环境,便于测试,同一个镜像可以利用在正式和测试环境节约资源 docker可以将每个应用隔离起来,可以运行多个业务。 docker的安全性极具保障。 与 vm 相比 新建一个容器不需要加载操作系统内核,虚拟机加载GUest OS 分钟级别,dock.

2021-09-16 01:28:16 575

转载 mysql基础

数据库的好处1.持久化数据到本地2.可以实现结构化查询,方便管理MySQL服务的启动和停止通过管理员身份运行net start 服务名(启动服务)net stop 服务名(停止服务)MySQL服务的登录和退出登录:mysql 【-h主机名 -P端口号 】-u用户名 -p密码退出:exit或ctrl+C​MySQL的常见命令1.查看当前所有的数据库show databases;2.打开指定的库use 库名3.查看当前库的所有表show tables;4.查看其它

2021-08-22 17:29:15 76

原创 git message 代码提交规范

示例feat(任务计划模块): 新增倒计时新增倒计时功能,提供发布倒计时配置[keyword]:feat: 新增功能 feature: 新增功能 fix: 修复 bugbugfix: 修复 bugdocs: 文档相关的改动doc: 文档相关的改动log: 日志/文档改动style: 对代码的格式化改动,代码逻辑并未产生任何变化test: 新增或修改测试用例。refactor: 重构代码或其他优化举措tool: 工具相关revert: 回滚chore: 构建过程或依赖的变

2021-08-18 01:22:28 201

原创 常见垃圾回收的算法

常见垃圾回收的算法1. GC标记-清除1.1 描述简单来说,就是在标记阶段对活动对象打上标记,在清除阶段把没有被标记的对象(即非活动对象)进行回收。标记阶段:从根开始递归地对活动对象进行标记。(对循环引用等情况还需要做判断,避免标记方法重复触发)清除阶段:遍历整个堆已标记:取消标记,准备下一次GC。未标记:把当前分块放入一个单向链表$free_list首部 。( 为了下次空间分配时再利用)这里在放入链表前会检查区块是否连续,并把连续区块合并后堆入单向链表。> 分配阶段:查

2021-08-15 23:04:03 117

原创 地址栏参数获取及修改

/** * getValFromSearch 请求参数中获取获取值 * @export * @param {*} source * @param {*} key * @returns */export function getValFromSearch(source, key) { if (!source) return null; const reg = new RegExp(`(\\?|&)${key}=(.*?)(&|$)`); const match =

2021-08-11 14:39:38 252

转载 Linux 常用指令

ssh公钥查询$ cat ~/.ssh/id_rsa.pub查询端口占用查看端口占用: lsof -i :5003列出多个进程号对应的文件信息: lsof -p 123,456,789查看日志cat命令:1)显示整个文件。示例: $ cat fileName2)把文件串连接后传到基本输出,如将几个文件合并为一个文件或输出到屏幕。示例: $ cat file1 file2 > file说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)c

2021-08-11 14:35:23 60

原创 Git 常用操作

Git 常用操作将某次分支A提交内容合入当前分支回滚撤销相关命令查看提交记录切换版本又不想提交当前变动删除和修改分支远程仓库Node 版本管理将某次分支A提交内容合入当前分支git cherry-pick 'commitId'回滚撤销相关命令git reset --hard HEAD^ # 回退到上个版本git reset --soft HEAD^ # 撤销commit1、找到你误提交之前的版本号2、git revert -n 版本号3、git commit -m xxxx 提交4

2021-08-11 12:23:51 94

转载 JS 构建沙箱环境sandbox

市面上现在流行两种沙箱模式,一种是使用iframe,还有一种是直接在页面上使用new Function + eval进行执行。 殊途同归,主要还是防止一些Hacker们 吃饱了没事干,收别人钱来 Hack 你的网站。 一般情况, 我们的代码量有60%业务+40%安全. 剩下的就看天意了。接下来,我们来一步一步分析,如果做到在前端的沙箱.文末 看俺有没有心情放一个彩蛋吧。直接嵌套这种方式说起来并不是什么特别好的点子,因为需要花费比较多的精力在安全性上.eval执行最简单的方式,就是使用eval进行代码的执行

2021-03-22 15:13:13 2418

原创 文件上传之验证后缀与内容是否一致

在上传前验证,开发者们往往喜欢通过后缀或者File.type()去判断一个文件类型来决定是否符合上传要求。但这显然是不可靠的,当被别有用心的人利用后,就可能在服务器被执行。今天就来解决如何在前端验证文件内容跟后缀是否一致。1. Magic number既然要解析文件内容那这个 Magic Number 就很关键 => Magic number:即幻数,它可以用来标记文件或者协议的格式...

2020-01-04 17:31:10 1545 1

原创 AST--使用编译的方式修改代码

AST–使用编译的方式修改代码最近有一个面板搭建的需求,环境为react,而现有面板组件为vue。就有了现在这个转换需求~AST(抽象语法树):顾名思义,它把代码拆解成了树的形式。接下来我会以代码增删改查的形式带大家初步了解"代码编辑"!查:先看再用!(为什么加后缀,因为觉得内容不够丰满)增:无中生有!(为什么加后缀,因为觉得内容不够丰满)删:罢黜百家!(为什么加后缀,因为觉得...

2019-12-13 20:37:07 3130

原创 使用Proxy实现双向绑定

前言技术从来不会受限于语言,受限你的,永远只是思想。(博主发现了一个有意思的机器学习库,TensorFlow的js版本,有兴趣的同学可以看一下https://www.tensorflow.org/api_docs)=> 这里以Proxy为例来进行编码,当然,我们需要事先了解一下Proxy的使用方法.Proxy就像一个代理器,当有人对目标对象进行处理(set、has、get 等等操作...

2019-08-12 14:30:45 531

原创 滚动加载--优化滚动性能

亲爱的儿子,我还没有追到你娘,提前祝你新年快乐!爸爸明年会努力的~背景最近有用阿里云 sdk 中的日志服务,在它的 api 里发现它并不支持分页查询,倒是有个 offset 指定日志起点,所以需要配合鼠标滚动做一个懒加载。思路最容易想到的就是做一个底部检测,当用户滚动到底部时再请求下一部分内容,并将结果拼接到上一次结果之后。但很多情况下返回内容不只有字符,还有媒体文件,这个...

2019-01-22 19:35:56 1347 1

原创 解决 removeEventListener 无法清除监听

1. 原因许多入前端不久的人都会遇到 removeEventListener 无法清除监听的情况,这是由于要移除事件句柄,addEventListener() 的执行函数必须使用外部函数,如上实例所示 (myFunction)。匿名函数,类似 “document.removeEventListener(“event”, function(){ myScript });” 该事件是无法移除的...

2019-01-12 22:52:34 32244

原创 canvas 基础以及2048游戏实践

canvas(画布):顾名思义用来画画的容器1. 点context.moveTo(x,y)。这句代码的意思是 移动画笔至(x,y)这个点(单位是px)。这里是以 canvas 画布的左上角为笛卡尔坐标系的原点,且y轴的正方向向下,x轴的正方向向右。2. 线起点:context.moveTo(x,y):同点终点:context.lineTo(x,y)。这句的意思是从 上一笔的停止点...

2018-11-20 23:37:31 489

原创 node fs系统

node fs系统引入fs模块 const fs = require("fs")1. fs.access 检测 path 指定的文件或目录的用户权限//- path//- mode 默认fs.constants.F_OK / ~R_OK / ~W_OK// (文件存在?/可读?/可写?) fs.stat(path, function(err, stats) { if (err)...

2018-11-17 18:52:41 839

原创 使用transform-origin 实现loading效果

使用transform-origin 实现loading效果没啥意思 突然想到的~<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &l

2018-10-16 18:57:11 297

原创 ES6

ES6ES6一、 变量赋值与解构二、- 字符串拓展三、- 正则拓展四、- 数值的拓展五、- 函数的扩展五、- 数组的扩展六、- 对象的扩展七、- Symbol类型:表示独一无二的值八、 Set 和 Map 数据结构九、 Proxy十、 Reflect十、 Promise 对象十一、Iterator 和 for…of 循环①. Iterator②. for…o...

2018-09-04 17:03:39 3087

原创 HTML5用scrollIntoView()方法来规范滚动页面

HTML5用scrollIntoView()方法来规范滚动页面 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&am

2018-08-06 20:06:38 4448

原创 Redux实践——减少样板代码

Redux实践——减少样板代码在编写Redux代码时,可能最令人感到厌烦的是必须写一大堆样板代码。在编写同步action时还能忍受,但在编写异步action时,大量的样板代码不仅使代码量陡增,而且难以维护。接下来我们就来探究如何使用高阶函数(High-order Function)和中间件(middleware)减少样板代码。同步action以一个todo应用为例,具有新增、编辑、...

2018-07-09 14:52:25 1079

原创 Webpack配置由简至全(二)

4 . 为了开发-开发工具 官网https://webpack.js.org有介绍三种开发工具webpack’s Watch Modewebpack-dev-serverwebpack-dev-middleware这里选用一个较为常用的—webpack-dev-server 首先下载依赖$ npm install --save-dev webpack-dev-server...

2018-06-20 11:09:21 305

原创 Webpack配置由简至全(一)

Webpack4配置由简至全(一)标签(空格分隔): webpack4 react一、基本安装第一步$ mkdir project-name && cd project-name$ npm init -y //-y:跳过询问$ npm install webpack --save-dev第二步 在当前目录创建index.html 、 in...

2018-06-20 11:07:13 234

原创 《高级程序设计》整理(三)- - -JS对象(1)

JS对象一、属性类型数据属性[[Configurable]] 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性。直接在对象上定义的属性,默认值为true。[[Enumerable]] 表示能否通过for-in循环返回属性。直接在对象上定义的属性,默认值为true。[[Writable]] 表示能否修改属性的值。直接在对象上定义...

2018-03-28 09:29:03 161

原创 《高级程序设计》整理(二)- - -正则与函数篇

《高级程序设计》整理(二)- - -正则与函数篇一、正则(RegExp)    - - -| let pattern = / patern / ( i | g | m ) i:忽略大小写 g:全局匹配 m:多行匹配         (元字符需要转义—-> ’ ( { \ ^ $ | ) ? * + . ]...

2018-03-20 11:21:34 169

原创 日期对象之时间比较

日期对象之时间比较17:35:00 、 19:20:11当你拿到这两个字符串要去比大小的时候,你会怎么做? 反正我一拿到二话没说直接去写了一个转秒的函数,血亏…(感觉自己在说废话)其实时间的比较有现成方法的,只要将字符串转成日期对象是直接可以比较大小的t1 = new Date('2018-8-8 17:35:00')t2 = new Date('2018-8-8 19:2...

2018-03-19 14:58:00 1041

原创 《高级程序设计》整理(一)---数据类型和数组篇

《高级程序设计》整理(一)- - -数据类型和数组篇一、JavaScript六种数据类型Undefined == Boolean ==》等于trueNull:表示一个空指针对象 typeof(null)==="object"Boolean:true / falseNumber NAN==NAN ==》false - - -| isNAN(true)=1 - - ...

2018-03-16 16:58:43 191

原创 Date() 时间的一个 format 格式化函数

formatDate(date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); } let o = { 'M+': date.getMonth() + 1,

2017-11-07 22:31:13 1742

原创 Vue +Node +Mysql 从简至全(二)

从数据库取出数据并显示到前端 –这一部分是实现数据库连接以及前后端的交互。后端:vue-cli脚手架搭建 还需要 npm install axios用作ajax访问修改之前的那个路由文件:代码很简单,先建立一个数据库连接,然后在调用路由的时候对数据库进行操作,并把结果send()出去。编写前端 app.vue: 这里用vue 的mounted钩子函数中获取后台数据,并将数据存储至data

2017-10-11 13:10:40 2669 2

原创 Vue +Node +Mysql 从简至全(一)

简单的后端接口连接的实现 –这一部分是实现后端的接口,接下来会依次实现数据库操作和前后端数据交互过程。后端:npm install express mysql -S编写后端入口文件(app.js):编写路由文件: node app.js 这个时候最简单的后台接口就启动了,可以http://localhost:3000/test访问到该接口

2017-10-11 10:48:02 6862

原创 fullPage代码从基层往上爬(一)

fullPage代码从基层往上爬(一)自己打算通过fullPage.js来好好巩固滚轮事件、兼容性实现、jquery、函数封装等等…. 这一部分先完成fullPage的基础功能,接下来就会进行封装、优雅降级、添加功能等…html代码结构css布局jquery实现基础功能html代码结构最简单的结构,就不做详细说明了 <div class="section-group">

2017-09-12 12:53:05 504

原创 SVG路径描边动画效果的实现

SVG路径描边动画效果 理解SVG坐标系和变换:视窗,viewBox和preserveAspectRatio部分 参考自: http://www.w3cplus.com/html5/svg-coordinate-systems.html © w3cplus.com先来放一个自己写的效果: 是不是很酷!!!一、先看下svg几个属性:1.stroke:none | c

2017-09-09 14:04:38 1874

原创 px | em | rem =>字体单位的进化史

px | em | rem =>字体单位的进化史PX在刚刚接触前端的时候,我们都是使用“px”来设置我们的字体大小,因为它兼容性好而且精确。但是这种方法当用户在浏览器中浏览页面时,他人为的改变了浏览器的字体大小,这时会使用我们的页面布局被打破。因此,这时就提出了使用相对单位“em”来定义Web页面的字体。  em“em”作为一个相对单位就解决了上述问题。这种技术需要一个参考点,一般都是以的“fon

2017-09-09 13:06:09 334

原创 3.jQuery拓展方法extend();

1.当只写一个对象自变量的时候,JQ中扩展插件的形式$.extend({ //扩展工具方法 fun1 : function(){ ... }, fun2 : function(){ ... }});//调用: $.fun1()/*那么为什么可以这么调用呢? $.extend() 它的this是$,因此this.f

2017-09-07 20:51:13 235

原创 2.理解merge和pushStack可以更好的了解jQuery源码

&nbsp;&nbsp;&nbsp;&nbsp;我就想看看自己JS学到什么程度然后让自己对jquery方法有更深的印象就“作死着”去看了看jquery源码,毕竟都说其编码结构很NB… &nbsp;&nbsp;&nbsp;&nbsp;目前还只看到前面一部分,基本是在jQuery构造方法下 定义了一些变量和方法。 &nbsp;&nbsp;&nbsp;&nbsp;然后发现 merge() 和 pus...

2017-09-07 20:24:12 247

原创 原生Js完美运动框架(缓冲运动和弹性运动)

/** * 完美运动原生JS */function getStyle(obj, attr){ if(obj.currentStyle)//IE { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; }}function

2017-09-07 16:38:52 1107

原创 Vue:Avoid mutating a prop directly since the value will be overwritten ...警告解决方法

这个报错的原因就是props值不能被改变这个问题的本质还是组建通信的双向绑定问题在vue2.0文档中有这么一段话:    在一些情况下,我们可能会需要对一个 prop 进行『双向绑定』。事实上,这正是 Vue 1.x 中的 .sync修饰符所提供的功能。当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定的值。这很方便,但也会导致问题,因为它破坏了『单

2017-09-02 14:40:29 12938 1

原创 鼠标和滚轮方向判断

鼠标和滚轮方向判断1.鼠标进入方向判断:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href=""> </head> <body> <div id="a" style="width:200px;heig

2017-08-26 20:56:45 1178

空空如也

空空如也

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

TA关注的人

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