编程类
文章平均质量分 62
zhanle_huang
喜欢编程、对编程有着自己的热情,目前是前端开发为主,平时喜欢研究一些自己觉得好玩的代码
展开
-
闭包实现函数柯里化,js实现
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术即函数可以接收单个或多个参数,并按照单个参数进行处理,以下是调用例子。原创 2023-06-30 11:41:14 · 344 阅读 · 0 评论 -
重复子串问题,滑动窗口求解,js实现
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。PS:该文是对leetcode的知识笔记,欢迎交流。原创 2023-06-20 16:59:06 · 134 阅读 · 0 评论 -
力扣红蓝灯算法思路( 前缀一致)
记录下翻牌的最大值,如果还没到最大值的位置,就算 1-i全是1也不对,因为最大值位置是1所以当检查的下标i+1 = max的时候,就说明1-i的位置都是1,后续的位置是没有翻开的因为flips存储的是1开始,循环是0开始,因此需要i+1。原创 2023-06-19 16:41:51 · 602 阅读 · 0 评论 -
http强缓存和协商缓存的介绍和应用案例,简介明了
强缓存:强缓存使用Expires(老版本)和cache-control(新版本)来控制协商缓存:协商缓存使用if-Modified-Since 与 Last-Modified配对、If-None-Match与Etag配对来控制。原创 2023-05-15 11:43:43 · 501 阅读 · 1 评论 -
解决elementUI的el-input密码框自动填充禁用失败解决方案
在el-input中设置属性autocomplete=”off",普通文本可以生效,但是密码框点击后还是会提示用户信息,由于用户信息提示只跟input有关,因此,我们可以通过监听input的行为来,不然其显示,根据测试,在鼠标按下的时候,就会展示用户信息自动填充框供选择,因此,监听的事件要在按下鼠标的时候,即。事件,在input获得焦点时,先失去焦点,就不会提示用户信息,然后再通过js代码去获取焦点,此时不会触发用户信息框。禁用登录的时候提示用户信息,即不允许保存账号密码。原创 2022-09-14 15:30:45 · 4865 阅读 · 3 评论 -
element树形表格懒加载勾选问题解决方案
element树形表格懒加载勾选问题解决方案,整体实现思路如上面所描述,可以根据这个思路去实现,难度不大,需要一定的思绪,由于是项目代码就补贴出来全部了ps如果有疑问可以评论或者私信询问pselement树形表格数据问题文章可以看这边篇文章httpshttps。.........原创 2022-07-22 15:28:38 · 982 阅读 · 0 评论 -
elementUI 表格懒加载数据更新不及时,或者需要手动添加数据或者修改数据问题
elementUI 表格懒加载数据更新不及时,或者需要手动添加数据或者修改数据问题问题分析部分代码展示总结问题分析elementUI 表格懒加载数据更新不及时,或者需要手动添加数据或者修改数据问题,如图:使用树形表格时,由于elmenetUI官网没有提供表格的最新数据对象获取方法,因此我们无法拿到最新数据,也无法修改数据对象,但是elementUI有一个表格的state属性我们可以直接操作它来达到目的—》this.$refs.mulTable.store.states.lazyTreeNodeMa原创 2022-05-07 15:34:19 · 2111 阅读 · 1 评论 -
超容易理解的方式去解释动态规划之01背包问题,c++实现
动态规划之01背包问题,c++实现问题描述算法实现结果问题描述01背包问题问题分析动态规划法分析:1.划分子问题,2.得出子问题的递推公式,3.填表划分子问题用数组V[n][n]存储价值和重量关系,行表示物体,列表示重量第0行和第0列设置为0,没有物体的时候价值没0,重量为0的时候物体无论多少价值也为0如果第i个物体重量小于当前总重量j,则取前i-1和第i个物体组合的最优值,否则该物体不可以放进背包,取前i-1个物体的最优价值递推公式不装入背包时:V(i-1, j) j <原创 2022-04-08 18:24:00 · 1604 阅读 · 0 评论 -
动态规划求序列的最长递增子序列,c++实现
动态规划求序列的最长递增子序列,c++实现描述算法实现结果输出描述求序列的最长递增子序列问题剖析划分子问题只有一个序列的时候,就是序列本身,且长度为1序列长度大于2的时候,用L[n]数组存放每个子问题的最长长度,每i个序列位置的处理,都以其前i-1个已经找到的当前最长比较最后一位是否符合递增符合,并且其长度L[i-1]+1大于子问题目前的最大长度,则长度L[i-1]+1,L[i] = L[i-1]+1, 使用arr[i][n]存放每一个子问题的最长序列递推公式长度为1时,L(1原创 2022-04-08 10:24:52 · 1121 阅读 · 0 评论 -
采用动态规划思维求解数塔问题,c++实现
采用动态规划思维求解数塔问题,c++实现数塔问题算法实现结果数塔问题问题描述: 加粗样式从塔顶往下走,如何走过的步数最大问题分析:数塔游戏(5层)从塔顶到塔底,走过的值最大从第一层开始,往左走还是往右走,变化两个4层他的问题,因此改问题存在子问题重叠性质由于该问题要求走过的值最大,因此,该问题存在要求最优解,因此符合动态规划用法递归求解过程:塔数据用二维数组存储d[5][5],规划表格用maxD[5][5]存储(用来存储子问题的解),该结构是下三角结构划分子问题:第1层走左还原创 2022-03-30 16:53:40 · 4573 阅读 · 0 评论 -
一张base64图片格式的图片,将其转化成blob然后上传到服务器
一张base64图片格式的图片,将其转化成blob然后上传到服务器需求描述实现总结需求描述一张base64图片格式的图片,将其转化成blob然后上传到服务器,后台跟接收表单文件上传一样的方式去处理改图片实现// url 表示base64的字符串, name表示文件名,附加到blob上的那么、上uploadFile(url, name) { // 以逗号划分类型和内容 let arr = url.split(',') // 截取类型原创 2022-03-28 14:58:02 · 1489 阅读 · 0 评论 -
数组排序之堆排序,c++实现
数组排序之堆排序,c++实现问题描述算法实现结果如下问题描述采用堆排序的方法去排序一个数组{47, 35, 26, 20, 18, 7, 13, 10}数组对应堆的图例,根节点大于左右孩子节点分析:组建堆,第i个节点和其左右孩子分别对应第2i + 1和2i + 2下标的数据如何确定堆有几层?如下数组的最后一个值的下标为n其父节点为i,所以存在关系n = 2*i+1 => i = (n-1)/2即第0i个节点是有子节点,i+1n个节点是叶子节点首次建堆处理,把树处理层,根节点大于或原创 2022-03-22 17:41:31 · 1860 阅读 · 0 评论 -
减治法应用在插入排序算法
减治法应用在插入排序算法问题描述算法实现问题描述采用减治法进行插入排序减治法是将问题分割成子问题,子问题的解跟原问题存在某种关系,(划分为有序区和无序区)初始时,将第0个位置设置为哨兵(防止越界)划分有序区和无序区,第1个位置为有序区,其余为无序区从第二个位置开始,在有序区中查找位置插入算法实现// # 1. 减治法排序之插入排序// # 2. 初始时,将第0个位置设置为哨兵(防止越界)// # 3. 划分有序区和无序区,第1个位置为有序区,其余为无序区// # 4. 从第二个位原创 2022-03-21 17:50:50 · 1683 阅读 · 0 评论 -
典型递归求解之汉诺塔问题,c++实现
典型递归求解之汉诺塔问题,c++实现问题分析实现总结问题分析汉诺塔问题是典型的递归问题,假设有n个盘要移动,n>0;A、B、C分别为三个柱子,A是原始柱子(有盘),B是间接柱子,C是目标柱子将n个盘从A移动到C,最终结果一定是,将n-1个盘移动到B,然后第n个盘移动到C此时,A上没有盘,B上有n-1个盘,C上有一个盘n有3可知,此时要做的是将B上的n-1个盘移动到C上,A是间接柱子此时问题的状态回到第一步的,只是原始柱子从A变成了B,重复到n==0即没有盘在A、B柱子上,算法结束。原创 2022-03-17 19:24:50 · 708 阅读 · 0 评论 -
分治法之棋盘覆盖复牌问题,c++实现
分治法之棋盘覆盖复牌问题,c++实现问题描述实现问题描述一个棋盘,其中有一个特殊点,用L的骨牌去覆盖,骨牌不能重叠,如何做到全部覆盖,如图:实现采用分治法将一个棋盘划分为4个棋盘,有一个棋盘存在特殊点,其他三个棋盘没有特殊点将没有特殊点的棋盘连接,用L型骨牌连接三个棋盘,使每个棋盘变成有一个特殊点的子棋盘重复操作,直到大小为1,算法结束// 将一个棋盘划分为4个棋盘,则有三个棋盘是没有特殊点的,将这三个棋盘用一个L型骨牌连接,将会得到一个规模小的子棋盘 // # 假设特殊点的下标为d原创 2022-03-14 18:39:26 · 1070 阅读 · 0 评论 -
算法分析之快速排序算法,c++实现
算法分析之快速排序算法,c++实现快速排序算法分析第一次划分实现快速排序算法分析如图所示,数组开始是无序的,从两端开始比较,找到中间值,然后以中间值为中心点,进行分段第一次划分然后再从每一段中重复此操作,直到只剩下分段长度为1结束,即i>=j则结束实现// # 快速排序,将一个数组,找到一个中间值,然后以这个中间值为中心,分段// # 然后再从每一段中重复此操作,直到只剩下分段长度为1结束,即i>=j则结束 // 1. 定义一个分段函数,参数分别是arr(待排序数组),be原创 2022-03-14 11:52:12 · 1640 阅读 · 0 评论 -
利用cli脚手架创建了项目后,针对eslint配置配置.eslintignore
利用cli创建了项目后,针对eslint配置配置.eslintignore需求.eslintignore配置总结需求采用脚手架配置了eslint之后,该文件是针对根目录检查的,但是有时候我们有些目录不希望被检查,比如public中的文件,有可能是第三方打包好的,此时我们可以通过再.eslint.js文件下配置.eslintignore文件来忽略不需要检查的文件.eslintignore配置# .eslintigore文件src/assetspublic/distpackages/zlD原创 2022-03-10 15:32:05 · 630 阅读 · 0 评论 -
发布vue组件到npm上的详细过程和npm login失败的解决方案
发布vue组件到npm上的详细过程和npm login失败的解决方案需求实现总结需求为了方便组件的使用,将vue组件打包并发布到npm上,或者直接利用到项目中引入使用实现利用脚手架创建项目 vue create demo创建好之后在目录新建一个packages目录用于存放组件,当然也可以在src中创建一个目录存放由于创建了packages目录在src外部,脚手架不会对该目录编译,因此需要配置webpack进行编译,在vue.config.js文件中配置// vue.config.jsm原创 2022-01-21 10:43:29 · 1145 阅读 · 0 评论 -
css3的mask遮罩属性笔记
css3的mask遮罩属性笔记mask笔记mask笔记通过渐变来绘制显示的区域,透明的则代表不显示,不透明则表示显示-webkit-mask: radial-gradient(circle at 0, #0000 20px, red 0, #0000 30px), radial-gradient(circle at right, #0000 20px, red 0);遮罩大小size-webkit-mask-size: 51%;重复repeat-webkit-mask-repe原创 2022-01-20 17:53:50 · 922 阅读 · 0 评论 -
highchart的draggable-points.js依赖实现图表的动态拖拽操作
highchart的draggable-points.js依赖实现图表的动态拖拽操作需求实现总结需求实现一个曲线图,能够通过鼠标去拖拽点,来进行修改图表实现例子基于vue来实现,如果是jq的按照官网的例子即可,配置列表链接.,例子// 引入依赖import Highcharts from 'highcharts/highcharts.js';import draggable from 'highcharts/modules/draggable-points.js'// 注册拖拽事件原创 2022-01-17 14:36:32 · 1195 阅读 · 0 评论 -
vue的v-model实现双向绑定
vue的v-model实现双向绑定原创 2021-12-15 15:25:00 · 844 阅读 · 0 评论 -
拖拽上传文件功能前端和nodejs后端实现
拖拽上传文件功能前端和nodejs后端实现功能描述实现说明功能描述拖拽图片或文件并上传(本文限制只允许图片)实现前端e.ondrop = function(event) { event.preventDefault(); let file = event.dataTransfer.files[0]; // 用FileReader对象读取文件 let reader = new FileReader(); let fileType = file.type;原创 2021-12-02 17:48:55 · 992 阅读 · 0 评论 -
前端js获取剪切板中的文本或者图片文件数据
前端js获取剪切板中的文本或者图片文件数据功能描述实现说明功能描述获取剪切板中的文本或者图片实现// 1. 监听paste事件,在进行粘贴的时候会触发DOM节点.addEventListener('paste', function (event) { // 输出事件对象的clipboardData属性,如下图,数据存储在对象中,但是直接打开是看不到的,只有输出event.clipboardData对象的某个属性或方法才可以看到 console.log(event.clipboardData原创 2021-12-02 17:38:07 · 5055 阅读 · 0 评论 -
windows代码量计算开源工具cloc安装和使用教程
windows代码量计算开源工具cloc下载cloc使用cloc下载cloccloc下载地址: https://github.com/AlDanial/cloc/releases.选择exe版本的使用cloc下载好cloc-1.90.exe之后,重命名未cloc.exe(方便运行,名字长打的多)将cloc.exe复制到需要统计的文件夹中打开当前文件夹的cmd窗口,即计算src目录下的文件代码量执行cloc .(.前面有一个空格)计算完成.注:需要更多编程知识欢迎关注我...原创 2021-10-25 11:48:20 · 3922 阅读 · 0 评论 -
html使用canvas合并多张图片并下载
html使用canvas合并多张图片并下载html使用canvas合并多张图片并下载1. 创建canvas对象,并引入2d上下文实例2. 创建图片对象html使用canvas合并多张图片并下载1. 创建canvas对象,并引入2d上下文实例const canvas = document.createElement('canvas')let ctx = canvas.getContext('2d');canvas.width = 1920 // 设定canvas的宽度、高度canvas.heigh原创 2021-08-31 18:30:41 · 1189 阅读 · 0 评论 -
快速排算法js版本,实用好理解
快速排序算法思想算法的思路下面是js写的代码算法思想1.快速排序采用分治的思想,将大问题分成多个子问题逐渐去解决,从而所有的子问题,所有子问题的结果组合起来就是大问题的结果。算法的思路1.单次遍历过程中2.以左边第一个值作为计数值,采用变量存放,i,j分别为左右两边的端下标,首先从右往左找比基数大的数,找到则结束该次查找循环,将找到的元素替换到i下标的位置,否则j下标向前移动3.交换一次位置,方向调转,变成从左往右找比基数大的数,找到则结束该次循环,否则,i下标后移,找到则交换查找方向4.直到原创 2021-08-09 10:07:46 · 191 阅读 · 0 评论 -
webpack打包学习笔记
webpack打包学习笔记webpack4打包遇到的问题css文件处理,使用mini-css-extract-plugin插件提取css,html和css中的图片路径问题webpack4打包遇到的问题基于webpack4的基础上整理的一份打包笔记,记录了本人开发过程中遇到的一些问题和处理方法,css提取,css和html打包后使用相对路径css文件处理,使用mini-css-extract-plugin插件提取css,插件 mini-css-extract-plugin安装 npm i mini-原创 2021-07-14 19:43:17 · 84 阅读 · 0 评论 -
Map和WeakMap的方法和区别
Map和WeakMap使用new Map()语法进行声明,Map键的类型可以使用任意对象作为键(字符串,object类型),我们还可以直接以二维数组键值对的形传入到构建函数中,第一项为键,后一项为值let map = new Map();let o = { n: 1 };map.set(o, "A"); //addmap.set("2", 9);console.log(map.has("2")); //check if key existsconsole.log(map.get(o))原创 2020-12-04 20:31:11 · 1444 阅读 · 0 评论 -
rem适配移动端原理
rem适配移动端原理 //现代浏览器本身的html根是16px,我们可以采用100/16*100% = 625%;的比例去换算rem //这样1rem=100px,这样子好换算 // rem转换px 然后适应到其他设备原理 这里以320px宽度的设备为标准去划分,其他宽度划分类似 //然后再根据其他设备的宽度去设定其根值font-size大小 //方式一: //这是一个例子 @media screen and (min-width:360px) an原创 2020-12-04 11:36:20 · 1109 阅读 · 1 评论 -
关于HTTP请求的一些简单使用
浏览器缓存If-Modified-Since和Last-Modified1.If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT(如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码,在客户端设置)2.Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT(请求资源的最后修改时间,在服务端设置)3.发起请求的时候If-Modified-Since会去和请求资源的Last-Modified对比时间Exp原创 2020-11-26 20:26:03 · 184 阅读 · 0 评论 -
Promise+await+async异步转同步
异步转同步Promise+async+await异步转同步Promise+async+await异步转同步单线程的时候,异步是比较好的,它不需要等待执行而是继续执行后面的代码,但是在我们需要先根据异步的结果而执行的时候,又不想弄太多回调,就可以转成同步去操作实现方式如下:将异步包含在Promise对象重,然后返回promise对象,就可以实现了然后再用async和await组合调用function test() { var p = new Promise(function(resolve,原创 2020-09-05 13:02:25 · 2047 阅读 · 0 评论 -
nodejs+cheerio自动爬取小说内容并写入文件小demo
nodejs爬取小说爬取小说获取书籍链接代码段获取目录链接获取内容以下是完整的代码爬取小说这次分享一个爬取一个网站小说的demo,刚开始学习爬虫的朋友也可以参考思路去编写自己的程序,爬取思路——首先,找到你要爬取的网站的链接,然后获取书籍的链接;二、每本书都有一个自己的链接;三、然后该书的链接的内容会包含目录列表链接四、我们便可以借用书籍的链接去获取目录链接五、然后根据目录链接去获取目录内容,然后讲内容爬取出来并写入文件中就完成爬取了基本就是这五部就可以完成爬取任务了获取书籍链接代码段v原创 2020-09-03 19:56:07 · 1051 阅读 · 0 评论 -
nodejs利用string_decoder模块转换blob格式的数据为utf-8字符串
nodejs处理blob格式数据nodejs读取到blob数据转换成utf-8字符串关于string_decoder(字符串解码器)的知识nodejs读取到blob数据转换成utf-8字符串首先得到的数据形式要是一个Buffer对象(如果不是Buffer对象,就需要转换成Buffer对象 nodejs中文网.了解)2.引入模块string_decoder,创建StringDecoder对象const { StringDecoder } = require('string_decoder');c原创 2020-08-28 16:10:27 · 1779 阅读 · 0 评论 -
nodejs爬取小说内容
nodejs爬取小说内容数据紧接上一篇爬虫的文章注:这一篇文章只是单页面爬取,如果是向做到多爬取将会复杂一些,下一篇将会讲解,目前时间有点忙,还没写,如果有小伙伴着急想知道下一篇的方式,可以评论或者留言都行,我会告知,有不解或者说的不对的地方都可以评论说明紧接上一篇爬虫的文章经过上一篇文章的例子,我们都了解了爬虫得到的是什么数据了,就是我们请求的html文件数据,然后利用cherrio来转化成jq方式来操作。接下来就分析一下如何去分析,然后获取到我们想要的数据打开这个链接链接: 目标网站.然后打开原创 2020-08-23 10:49:11 · 1380 阅读 · 1 评论 -
nodejs爬虫之cheerio模块实现
nodejs爬虫使用cherrio模块来爬取使用cherrio模块来爬取安装cherrio模块 npm i cherrio --save爬取原理就是利用http请求来获取到整个请求页面的数据,然后再利用cherrio来包装成jQuery对象的形式,就是jq的就是jq的就是jq的对象,可以通过jq支持的选择器来选择自己想要的数据,整个爬取过程大概就是这样,(当然这是比较简单的,可以满足一些小要求)##代码展示const http = require('http');const https =原创 2020-08-21 19:55:24 · 1199 阅读 · 0 评论 -
回溯法之迷宫最短路径,c++实现
迷宫最短路径迷宫的算法很多,但是解释原理的却很少,在这里我利用自己的亲身经历来讲解一下求解迷宫的原理,迷宫求解可以利用栈结构,即深度优先,探索一个位置就标记,通则走,不同则后退寻找下一个位置,可以求出通路,简单但是不一定是最短路径,这里求最短路径利用的是广度优先的思想,什么是广度优先,利用队列实现,一个元素出对,然后访问这个元素相邻的所有元素,原理是,一个二维数组,0表示墙,1表示路,这里我利用......原创 2019-06-18 17:01:32 · 10808 阅读 · 12 评论 -
VS2017关于 OpenCV 配置好后出现头文件找不到得问题!
VS2017关于 OpenCV 配置好后出现头文件找不到得问题!出现这个问题的原因是由于我们配置的是64位的,编译器环境是32位的,所以需要在属性管理器窗口更改,属性管理器打开方法,视图->其他窗口->属性资源管理器,把平台信息改成X64,然后点击配置属性管理器,把平台信息改为64位即可。注:本人第一次发表文章,这是自己根据自己的实际操作解决的问题,希望对遇到相同问题的人又...原创 2018-11-20 11:51:20 · 5403 阅读 · 3 评论