自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 laya开发微信小游戏《奇异水族馆》之 观察者模式应用

初学laya开发的微信小游戏终于上线啦!!!过年耗费几个月开发出来的小游戏,游戏内容是模仿小时候玩过的一款pc端游戏叫怪怪水族馆~~微信搜《奇异水族馆》即可畅玩哦!!暂时采用本地缓存游戏数据,后面引入游戏数据自动上传保存,功能模块还在开发中~...

2021-03-24 17:05:08 400

原创 uni-app快速开发微信小程序、h5、和app

过年在家无聊,尝试使用uni-app开发微信小程序,发现这个框架的跨端功能非常强大,几乎能直接从微信小程序移植过来技术栈:后端 node +mysql 抓取各大视频网站的数据前端 uni-app服务器使用微信云开发 (先用node抓取数据到mysql,再分析处理数据成云数据库的格式导入到云数据库)可以说这个项目的开发是不需要任何费用,非常赞的!uniapp还出了类似于...

2020-02-29 22:39:06 5260 2

原创 https流程详解(含ca证书校验)

首先来说 一下,为什么需要https 加密由于http 传输是明文传输,信息在传输的过程中容易被篡改,不安全所以 就有了 加密传输对称加密 (aes等)对称加密很容易理解,就是 只有一个秘钥, 可以使用这个秘钥加密和解密,但是这样只要被别人截取到秘钥,信息传输就不安全了,相当于明文传输了。特点:1. 只有一个秘钥, 客户端和服务器传输秘钥过程中被截取就能被破解2. 加解密速度极快非对称加密(RSA等)特点:1. 有 公钥 和 私钥,公钥加密,就只能用 私钥 来..

2021-07-22 23:09:22 1879 1

原创 sql插入更新语句封装

背景: 当我们项目上需要写原生sql语句的时候,但是写插入更新语句都很麻烦,这里就封装了一个方便调用的函数//设置表的主键const tablePrimaryKey = { t_fund_trade_data: { fund_id: true, trade_time: true }, t_fund_value_discount: { fund_id: true, hist_dt: true }, t_fund_stock_list: { fund_id: true,

2021-07-15 14:54:52 396

原创 实现迷你版vue2的响应式核心原理代码

vue2 的响应式核心原理代码 其实就只有几个模块1. 代理Object.defineProperty2.依赖收集dep,收集所有监听页面数据的watcher实例3. 监听页面数据实例watcher4.观察者 Observer ,实现数据劫持5.编译模块 Compiler下面来简单实现一下各个模块代码,新建index.js文件1.首先简单实现Vue类,和基本代理功能export class Vue{ constructor(options = {}){ ...

2021-06-22 15:15:01 310 1

原创 手写mini版vuex响应式数据仓库

前言~~不喜欢手写原理的程序员不是好的程序员根据vuex官网的使用,下面来实现以下基础的vuex中心化数据响应式原理1.首先来看一下 store注册store注册使用了vue的插件机制,use方法会调用插件的install方法用过store的我们可以得知,在vue中每个实例的每个方法都可以通过this.$store 调用数据仓库,这样我们就可以得出,我们的vuex插件是有install方法,主要实现了store的全局混入,我们这里利用一些vue的mixin全局混入,beforeC

2021-06-17 14:47:41 253 1

原创 简单实现koa的洋葱模型

class myKoa{ middleware = [] ctx = {a:1} constructor(){ } use(fn){ this.middleware.push(fn) } listenCallback(){ let fn = this.compose(this.middleware) return fn(this.ctx).then(this.respond) } r.

2021-06-10 16:01:16 182

原创 js实现flat函数

function myFlat(arr,count){ if(count == 0){ return arr } return arr.reduce((res,value)=>{ if(Array.isArray(value)){ res = res.concat(myFlat(value,count-1)) }else{ res = res.concat(value) .

2021-06-07 22:42:36 1038

原创 聊一聊js的各种继承方式

1.原型链继承我们知道js对象的属性查找流程,是先查找本对象的属性,查找不到就会从 原型对象 上查找(每个实例对象都有会__proto__属性指向 原型对象 ),还是找不到那就__proto__.__proto__ ,原型对象上的原型对象,这样一路往上找,找到为止或者__proto__值为null。我们可以使用这种查找原理来实现js对象继承function Parent(){ this.name = 'my name is Parent' this.actions = ['si

2021-06-06 13:37:30 119

原创 手写 nodejs 打包工具,转译 CommonJs 规范的代码

使用过nodejs的小伙伴应该都知道, commonjs规范其实就是用在nodejs服务器端的commonjs 其实是同步加载机制我们先来看一下这段代码,这个其实就是webpack 将 commonjs 规范的模块代码 打包编译之后的代码const cache = {};(function(modules){ const require = (path)=>{ if(cache[path]) return cache[path] let...

2021-05-31 15:57:29 308 1

原创 手写CMD规范的异步加载机制(seaJs)

实现完上文的AMC规范 异步加载机制后,https://blog.csdn.net/weixin_38407447/article/details/117407660这里实现一下CMD 规范的 异步加载机制同样 需要 用到 这篇文章实现 的 模块加载器 __loadhttps://blog.csdn.net/weixin_38407447/article/details/117402939?spm=1001.2014.3001.5501新建cmd.jsgb.sj = {}.

2021-05-31 13:28:01 274

原创 手写AMD规范的异步加载机制(requireJs)

AMD异步加载机制,特点是:依赖前置, 先把模块需要用到的依赖全部加载本质是利用promise实现异步加载需要 用到 这篇文章实现 的 模块加载器 __loadhttps://blog.csdn.net/weixin_38407447/article/details/117402939?spm=1001.2014.3001.5501新建amd.js文件//默认配置const defaultOpts = { paths:{}}gb.rj = {}rj.config =

2021-05-30 23:22:42 388

原创 systemjs 通用模块加载器 源码分析原理 并 实现

这里在nodejs里面分析一下systemjs 通用模块加载器的实现原理这里 npm install systemjs 后,执行一下这段代码,发现then里面可以直接拿到 lodash 的对象let {System} = require('systemjs')var lodashCdn = 'https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js'System.import(lodashCdn).then(_=>{

2021-05-30 22:29:45 1901

原创 一道有意思的JavaScript面试题

原型对象方式实现function LazyMan(name){ return new LazyManClass(name)}function mySleep(ms){ return new Promise((resolve,reject)=>{ setTimeout(resolve,ms*1000) })}function LazyManClass(name){ this.name = name; this.task ...

2021-05-19 10:56:55 167

原创 vite2.0+vue3.0+vuex+vue-router4+typescript+less 从0搭建项目

环境准备 node版本12.0.0以上一:先使用vite搭建项目1.命令行输入 npm init@vitejs/app选择 vue 和 typescript键入这三个命令 安装基础包成功二.接下来修改成自己习惯的项目架构1.首先搭建vue-router 架构,先安装vue-router依赖less 依赖在src 目录下 新建views 文件夹 这里包含所有页面结构views目录下 新建 Index目录, 这里是首页,新建三个文件in..

2021-05-15 16:45:32 685 2

原创 nodejs京东接口分析 实现京东自动化功能整合(扫码登陆、商品信息监控、购物车修改、自动下单)

nodejs 实现京东自动化功能整合(扫码登陆、商品信息监控、购物车修改、自动下单)1.京东扫码登陆功能实现 原理 分析https://blog.csdn.net/weixin_38407447/article/details/1165906022.京东商品信息监控功能实现 原理 分析https://blog.csdn.net/weixin_38407447/article/details/1165926293.京东购物车修改功能实现 原理 分析https://blog.csd.

2021-05-10 15:27:12 1349

原创 nodejs京东接口分析系列-实现京东自动化功能 之 自动下单

本章节实现,京东自动下单功能需要用到京东的用户登陆后的信息,详情请查看https://mp.csdn.net/editor/html/116590602章节相对之前的功能,该功能会稍微复杂一点,需要通过阅读京东源码来分析,看看能不能先实现拦截提交订单请求,防止在测试的时候多次真实提交订单首先 打开https://cart.jd.com/cart_index/#none点击去结算,跳到下单页通过查看HTML结构代码,发现提交订单需要调用submit_Order(n...

2021-05-10 15:22:19 4715 1

原创 nodejs京东接口分析系列-实现京东自动化功能 之 购物车修改

本章节实现,清空购物车和添加购物车功能需要用到京东的用户登陆后的信息,详情请查看https://mp.csdn.net/editor/html/116590602章节后续感兴趣的小伙伴可自行实现 购物车的增删查改等全部功能首先,我们先分析一下京东的购物车接口打开https://item.jd.com/100009820314.html,ctrl+f12来一波~发现加入购物车功能是如此简单,以至于不敢相信http://cart.jd.com/gate.act...

2021-05-10 14:41:16 3418 4

原创 nodejs京东接口分析系列-实现京东自动化功能 之 商品信息监控

本章节无需登陆,接口是可以直接get请求调用的这里随便打开一个京东商品https://item.jd.com/100009820314.html随便看一下请求信息,就能发现很多接口能直接用1.获取商品库存状态接口(京东不能直接查看具体库存,只能查看是否有库存)http://c0.3.cn/stocks?type=getstocks&area=19_1601_36953_62867&skuIds=100009820314参数解析type:getstocksa

2021-05-10 13:33:38 3457 1

原创 nodejs京东接口分析系列-实现京东自动化功能 之 扫码登陆,需要puppeteer

最近想要实现一个京东扫码登陆和自动下单,自动抢购的功能(ps:实现京东自动化功能),!!!本项目纯属学习性质,禁止商业用途给大家分享一下我是如何一步步通过分析京东的网站请求,查看京东网站的源代码去找到对应的接口和参数爬虫必备,准备好接口的基础headers头部信息,下面所有接口请求需要在头部传入这些参数,以表示你是个正常用户~let header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap

2021-05-10 12:36:07 5112 3

原创 javascript实现毫秒级精准定时执行函数

由于javascript 的setTimeout 会因为事件队列问题导致不精准,有偏差,而且时间越长偏差越大这里实现了一个精准的倒计时执行函数原理:每隔时间的一半,重新设置定时器,时间继续切分一半,相当于重新校准偏差等时间达到1秒(根据业务服务器资源自行调控,时间越长越耗费性能)以内,死循环检测时间 function dealTimerTask(callback,time){ let dec = time - Da...

2021-04-30 15:02:09 1297 1

原创 vue 源码分析系列之数组监听

/** * vue 数组监听原理, 重写数组各个方法函数实现监听 */ //保存数组原型对象 var arrayProto = Array.prototype; //创建空对象,并将原型指向数组的原型对象 var arrayMethods = Object.create(arrayProto); //需要监听的方法 var methodsToPatch = [ 'push', 'pop', 'shi..

2021-04-27 14:25:07 207

原创 javascript深拷贝

function deepCopy(obj){ if(typeof obj != 'object'){ return obj; } let newObj = Array.isArray(obj) ? []:{}; for(let key in obj){ //过滤原型链上的属性 if(obj.hasOwnProperty(key)){ newObj[key] = obj[key] &&.

2021-04-25 22:30:39 100

原创 javascript手写apply函数(call同理)

Function.prototype.myApply=function(objThis){if(typeofthis!=='function'){throwError(`需要函数才能绑定`)}if(!objThis){objThis=window}letkey=Symbol()objThis[key]=thisletargs=Array.pr...

2021-04-25 17:04:18 93

原创 javascript手写bind函数

Function.prototype.bindq=function(objThis){if(typeofthis!=='function'){throwError(`需要函数才能绑定`)}letthat=thisletargs=Array.prototype.splice.call(arguments,1);letfun=function(){leta=args....

2021-04-25 15:56:51 104

原创 回溯算法之解数独

编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字1-9和字符'.'。你可以假设给定的数独只有唯一解。给定数独永远是9x9形式的。/* * @lc app=leetcode.cn id=37 ...

2020-08-04 14:04:26 308

原创 js基础锻炼题1~20题

第1题:const one = (false || {} || null );const two = (null || false || "");const three = ([] || 0 || true);console.log(one,two,three)//{} '' []第2题console.log([..."neng"])//[ 'n', 'e', 'n', 'g' ]第3题console.log( [[0,1],[3,5]].reduce( (a,

2020-07-07 11:14:07 580

原创 写过的史上最长mysql

每小时抓取淘宝商品数据, 统计淘宝 日,周,月的数据selectifNull(t1.count,0)ascount,ifNull(t1.tb_day30,0)astb_day30,ifNull(t1.tb_day7,0)astb_day7,ifNull(t1.tb_day1,0)astb_day1,ifNull(t1.tb_day0,0)astb_day0,...

2020-06-03 10:19:12 231

原创 mariadb启动失败解决办法

mariadb启动失败查看原因systemctl status mariadb.service打开mysql日志vi /var/log/mariadb/mariadb.log原因:mysql启动时,ib_logifle0文件大小 不正常,查看ib_logifle0文件大小为0,解决办法:将ib_logifle0文件删除,然后重新启动mariadb ,service mar...

2019-12-28 09:37:34 5725 1

原创 leetcode-第168场周赛题目-你能从盒子里获得的最大糖果数

给你 n 个盒子,每个盒子的格式为 [status, candies, keys, containedBoxes] ,其中:状态字 status[i]:整数,如果 box[i] 是开的,那么是 1 ,否则是 0 。糖果数 candies[i]: 整数,表示 box[i] 中糖果的数目。钥匙 keys[i]:数组,表示你打开 box[i] 后,可以得到一些盒子的钥匙,每个元素分别为该钥匙对应盒...

2019-12-28 09:35:11 284

原创 leetcode-第168场周赛题目-子串的最大出现次数

给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数:子串中不同字母的数目必须小于等于 maxLetters 。子串的长度必须大于等于 minSize 且小于等于 maxSize 。示例 1:输入:s = “aababcaab”, maxLetters = 2, minSize = 3, maxSize = 4输出:2解释:子串 “aab” 在原字符串中出现...

2019-12-28 09:33:25 213

原创 leetcode-第168场周赛题目-划分数组为连续数字的集合

给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。如果可以,请返回 True;否则,返回 False。示例 1:输入:nums = [1,2,3,3,4,4,5,6], k = 4输出:true解释:数组可以分成 [1,2,3,4] 和 [3,4,5,6]。示例 2:输入:nums = [3,2,1,2,3,4,3,4,5...

2019-12-28 09:31:11 190

原创 leetcode-第168场周赛题目-统计位数为偶数的数字

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)因此只有 12 和 7896 是位数为偶数的数字示例 2:...

2019-12-28 09:30:00 143

原创 Linux基础入门(详细版)

一、Linux入门概述1.1 概述Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linu...

2019-05-26 21:59:47 104212 14

原创 srs推流服务器部署

参考链接https://github.com/ossrs/srs/wiki/v1_CN_SampleRTMP1.获取srsgit clone https://github.com/ossrs/srs cd srs/trunk2.编译SRS./configure && make3. 启动应用./objs/srs -c conf/realtime.conf &4...

2019-03-05 16:50:13 3151

原创 js实现定时任务

/** * 定时任务 * 例子: dealTask(1000 * 60 * 60* 24,function(){ console.log(11) }) ; //每天固定0:00执行 */async function dealTask(time, task) { console.log(`设置了一个定时任务 time ${time}`); function getHMST...

2019-01-03 10:55:33 398

原创 采用DFA算法实现字库屏蔽规则

//需要过滤的字库let filterWordsArr = '广告|下载|邀请|邀请码';//切割字库成数组filterWordsArr = filterWordsArr .slice(1, filterWordsArr.length - 1).split('|');let filterWords = {};//处理字符串,将字符串切割使用对象递归嵌套存储function dealWo...

2019-01-02 10:48:35 1248

原创 leetcode-验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: fa...

2018-12-24 18:00:26 258

原创 leetcode-二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。代码/** * Definition for a binary tree node....

2018-12-22 10:07:24 254

原创 leetcode-环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true...

2018-12-21 16:32:29 501

空空如也

空空如也

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

TA关注的人

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