自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CCcoding

前端工程师

  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 一个CSS类解决外边距折叠和高度塌陷问题

为父元素添加该样式,可解决外边距折叠和高度塌陷问题。

2023-04-02 18:17:32 168

原创 拯救报错:Error: ER_HOST_NOT_PRIVILEGED: Host ‘x.x.x.x‘ is not allowed to connect to this MySQL server

问题描述:使用 Nodejs 连接云服务器 MySQL 数据库,执行 js 文件报错如下:Error: ER_HOST_NOT_PRIVILEGED: Host 'x.x.x.x' is not allowed to connect to this MySQL server{ code: 'ER_HOST_NOT_PRIVILEGED', errno: 1130, sqlMessage: "Host 'x.x.x.x' is not allowed to connect to this M

2021-10-05 19:57:18 3639 1

原创 拯救报错:Error: connect ETIMEDOUT

问题描述:使用 Nodejs 连接云服务器 MySQL 数据库,执行 js 文件报错如下:Error: connect ETIMEDOUT{ errorno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect', fatal: true}解决方法:由于服务器端口未开放导致( MySQL 默认端口为3306)前往服务器防火墙开放该端口即可...

2021-10-05 19:54:34 54913 1

原创 拯救报错:Error: getaddrinfo ENOTFOUND http://x.x.x.x/

问题描述:使用 Nodejs 连接云服务器 MySQL 数据库,执行 js 文件报错如下:Error: getaddrinfo ENOTFOUND http://x.x.x.x/{ errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'http://x.x.x.x/', fatal: true}解决方法:createConnection方法中 host 写域名或者服务器 ip 地址即可..

2021-10-05 19:51:51 6993

原创 解决问题:Vue项目刷新网页后保存在Vuex实例store.js里的数据state会丢失

1、前情提要:Vue、Vuex2、问题描述:使用state做全局的状态管理,但是在任意的一个状态的页面时刷新浏览器页面,就会导致状态丢失,原本属于这个状态的内容和样式全部失效。3、产生原因:Vuex实例store.js里的数据state是保存在运行内存中的,当页面刷新时,页面会重新加载Vue实例,store.js里面的数据state就会被重新赋值,故而导致状态丢失。4、解决思路:将数据state保存一份到本地存储(localStorage、sessionStorage、cookie)中,可以保证

2020-11-08 15:51:04 1102 1

原创 拯救报错:Cannot read property ‘disabled’ of null

1、前情提要:Vue、Element2、报错内容:3、报错原因:页面中使用了<el-dropdown>组件,但是没有设置它的子元素(注意:必须是子元素,如<el-dropdown-menu>,使用其他行内元素也不行)4、解决方案:删除<el-dropdown>组件,不使用它为该组件添加<el-dropdown-menu>标签,使其完整应用...

2020-11-07 23:09:09 551

原创 HTML和HTML5的那些语义化标签

一、<meta>的用法和结构<!--<meta>标记在<head>部分--><head> <meta charset="" http-equiv="" name="" content=""/><!-- 结构 --><head><meta charser="UTF-8"/><!--定义字符编码集--><meta name="keywords" content=" "/&g

2020-11-02 14:33:38 365

原创 关于HTML标签 id 或 class 的命名

一、网页内容标题: title摘要: summary箭头: arrow商标: label网站标志: logo转角/圆角: corner横幅广告: banner子菜单: subMenu搜索: search搜索框: searchBox登录: login登录条:loginbar工具条: toolbar下拉: drop标签页: tab当前的: current列表: list滚动: scroll服务: service提示信息: msg热点:hot新闻: news小技巧:

2020-11-01 22:57:53 1174

原创 整理一些面试高频 JavaScript 手写

文章目录(更新中)1、数组扁平化1.1、方法一:使用flat()方法1.2、方法二:使用正则表达式1.3、方法三:使用reduce()方法1.4、方法四:使用函数递归2、数组去重2.1、方法一:利用Set对象2.2、方法二:两层for循环+splice()方法2.3、方法三:利用indexOf()方法2.4、方法四:利用include()方法2.5、方法五:利用filter()方法2.6、方法六:利用Map()方法1、数组扁平化数组扁平化是指将一个多维数组变为一个一维数组,如下:const arr

2020-10-29 20:51:07 350

原创 使用 JavaScript 在给定数组中求出使得得到目标和的方法数量

1、题目描述给定一个非负整数数组,a1, a2, …, an, 和一个目标数 S 。对于数组中的任意一个整数,从 + 或 - 中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。2、解题思路1、使用递归算法2、同时考虑加法和减法3、直到得到目标和,将计数器加一4、返回计数器,即为所求使得得到目标和的方法数量3、解题代码/** * @param {number[]} nums * @param {number} S * @return {number}

2020-10-28 22:45:23 242

原创 使用 JavaScript 求给定数组中和为K的子数组的个数

1、题目描述给定一个整数数组和一个整数 k,找到该数组中和为 k 的连续的子数组的个数。2、解题思路1、维护一个哈希表,用来记录累加和出现的次数,一个计数器用来记录子数组个数2、遍历数组,开始累加3、最重要的条件赋值,决定了能否正确求解3.1、如果累加值刚刚好等于指定K则计数器自加3.2、如果累加值为sum-k曾经出现,则计数器加上那个值的出现次数(此处较难理解:其实是通过前缀出现次数反映累加值出现次数)3.3、如果累加值未曾在哈希表中出现,则赋值为1,否则令该值加1(此语句不可提

2020-10-27 09:43:07 676

原创 使用 JavaScript 解决LeetCode经典题:根据身高重建队列

1、题目描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。2、解题思路1、根据题意,k表示排在它前面且h大于等于它的数量,不难理解,把h小的放在某个整数对前面对他无影响2、先根据h降序排列,得到初步排列情况3、遍历整数对,根据k将其放在新数组索引为k的位置4、可以轻松验证这个做法的正确性4.1、遍历时大数先排,小数后排,所以小数后续插入在前面也不会有影响5、返回新数组,

2020-10-26 15:09:07 288

原创 使用 JavaScript 找出给定数组的所有子集

1、题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。2、解题思路1、采用二进制的思路,全0对应空集,全1对应全集2、根据数组长度决定二进制位数3、遍历二进制各值,使用按位与操作符,生成数组的子集3、解题代码/** * @param {number[]} nums * @return {number[][]} */var subsets = function(nums) { let res = [], len =

2020-10-26 14:37:58 4193

原创 使用 JavaScript 寻找重复数

1、题目描述给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。2、解题思路1、使用值域二分法2、定义低值为1,高值为n3、满足低值小于高值的情况下,遍历数组3.1、定义中位数mid3.2、遇到比mid小的值

2020-10-26 10:55:21 692

原创 使用 JavaScript 找出给定升序数组中目标值出现的始末位置

1、题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。2、解题思路1、使用二分法2、如果最终找到的中值前或后的值相同则扩展边界3、解题代码/** * @param {number[]} nums * @param {number} target * @return {number[]} */var searchRan

2020-10-25 21:30:53 245

原创 使用 JavaScript 解决用最少数量的完全平方数相加得到给定值的问题

1、题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。需要让组成和的完全平方数的个数最少,求使用完全平方数的个数。2、解题思路1、申请一个数组空间,长度为 n+12、默认设置最差情况,即所有给定值都是由1相加而成3、寻找可用的 j*j 作为完全平方数,需要满足条件 i - j * j >= 04、比较与全部使用1作为加数和较小的 j 时所用数量,取最小值4.1、将该值赋值给数值空间中对应的 i 表示组合成 i 的最优情况4.2、此后

2020-10-25 20:53:26 324

原创 用 JavaScript 求数组中除自身元素以外元素的乘积对应生成新数组

1、题目描述给定一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。不可使用除法,且在 O(n) 时间复杂度内完成。2、解题思路1、两次遍历, 一次正向,一次反向1.1、正向遍历生成未完善的数组,数组的第 i 项代表前 i 个元素(不包括i)的乘积2、反向遍历,维护一个临时变量 temp 设置初始值为1,用来记录第 i 项之后所有元素的乘积(不包括i)2.1、用临时变量

2020-10-25 16:35:00 642

原创 使用 JavaScript 对无重复元素的数组进行全排列

1、题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。2、解题思路1、回溯算法2、准备一个容器数组用来存放全排列的各种情况3、准备一个小数组容器用来放每一种排列的情况4、定义回溯函数用来判断数组是否符合情况4.1、遍历以原始数组元素为根节点的数,可以想象原始数组元素的根节点是空数组4.2、将小数组容器中未出现的元素push()进去4.3、进入回溯函数进行判断,如果满足开头的判断条件则添加进容器数组4.4、否则再次添加未出现的元素,进入回溯函数4.5、将末尾元素pop()出

2020-10-24 20:27:23 659

原创 使用 JavaScript 求出给定数组中的最大乘积子数组的乘积

1、题目描述给定一个整数数组 nums ,找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。2、解题思路1、首先定义最大值就是数组中第一个值2、定义临时最大值和临时最小值,用来存储每次新增因数后的结果3、遍历数组,原值与新因数相乘,比较相乘前后的值,存入临时最大、最小值4、比较预期最大值和前一次找出的最大值,更新最大值5、返回最大值,即为所求乘积最大的连续子数组的乘积值3、解题代码/** * @param {number[]} nums * @r

2020-10-24 17:08:17 570

原创 使用 JavaScript 解决经典的有效括号生成问题

1、题目描述数字 n 代表生成括号的对数,设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。2、解题思路1、分析题意,考虑递归中的回溯二叉树,有效的括号即左右括号要对应1.1、每放置一个左括号,便可以放置一个右括号,并且在左括号数量小于 n 时依然可以放置左括号(形成二叉树,在满足左括号数量小于 n 的情况下把新的节点当做根节点)2、定义一个数组容器用来存放符合条件的括号组合,定义一个空字符串用来写入括号3、定义函数(涉及递归不可用匿名函数)3.1、左括号数量不大于 n 时可以添加左

2020-10-24 16:09:20 521

原创 使用 JavaScript 找出给定字符串中的最长回文子串

1、题目描述给定一个字符串 s,找到 s 中最长的回文子串。2、解题思路1、定义一个函数用来计算回文子串的长度1.1、回文子串有两种情况:aba型、abba型1.2、使用中心扩展的方法找到回文直径2、遍历给定字符串,比较两种情况回文子串的长度3、使用位运算符求差值从而取得该最长回文子串的始末索引4、返回上述始末索引的子字符串,即为所求最长回文子串3、解题代码/** * @param {string} s * @return {string} */var longestPalind

2020-10-23 14:04:09 917

原创 用 JavaScript 解决经典题目:盛最多水的容器

1、题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:不能倾斜容器,且 n 的值至少为 2。2、解题思路1、根据题意可将问题转换为求面积的问题,本质在于找到合适的底和高使得矩形面积最大2、首先选取头尾距离做底(此时底最长),两者中较小数做高(类似木桶短板效应),求得面积3、寻找更优解,我们

2020-10-23 10:35:03 457

原创 使用 JavaScript 解决经典爬楼梯问题

1、题目描述爬楼梯需要 n (n为正整数)阶才能到达楼顶。每次可以爬 1 或 2 个台阶。求有多少种不同的方法可以爬到楼顶2、解题思路1、分析题意不难发现:爬第 n 阶楼梯的方法数量等于 2 部分之和即爬上 n-1 阶楼梯和爬上 n-2 阶楼梯的方法数量之和2、定义容器数组存放爬第 n 阶楼梯的方法数量数组(其实该数组元素为斐波那契数列)3、解题代码/** * @param {number} n * @return {number} */var climbStairs = fun

2020-10-22 23:50:26 1283

原创 使用 JavaScript 将给定区间集合的重叠区间合并

1、题目描述给出一个区间的集合,合并所有重叠的区间。2、解题思路1、准备一个容器数组用来存放合并后的区间集合2、将所有区间按区间左边界升序排序3、遍历给定区间数组,比较当前区间右边界和下一区间左边界3.1、将较大值设定为新右边界,并与原左边界构成新区间3.2、将新区间push()进容器数组4、返回容器数组,即为合并后的无重叠区间集合数组3、解题代码/** * @param {number[][]} intervals * @return {number[][]} */var me

2020-10-22 22:14:28 1125

原创 使用 JavaScript 在给定数组中找出符合 a+b+c=0 的三元组 [a,b,c]

1、题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。2、解题思路1、定义数组容器存放三元组2、首先给定数组不为空且应至少有三个元素3、将数组升序排列4、遍历数组,找第一个加数a4.1、若该数大于0则必然不满足条件,跳出循环4.2、若该数重复出现则跳过,做去重处理4.3、将加数a后的第一位数定义为第二个加数b,将最后一位数定义为第三个加数c4.3.1、保持b在c前面的条

2020-10-22 15:20:58 905

原创 使用 JavaScript 求出给定字符串中不含有重复字符的最长子串的长度

1、题目描述给定一个字符串,找出其中不含有重复字符的最长子串的长度。2、解题思路3、解题代码/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) { let arr = [], max = 0 for(let i = 0;i < s.length; i++) { let index = arr.indexOf(s[i])

2020-10-21 22:37:41 2042

原创 使用 JavaScript 根据给定“和”,在给定数组中寻找“加数”

1、问题描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。可以假设每种输入只会对应一个答案,但是数组中同一个元素不能使用两遍。2、解题思路1、数组中至少要有两个元素2、先找一个数作为参照,用最后一个数如何?3、判断一下目标值与参照值的差值是否存在于数组中3.1、差值不能是参照值,所以在取到最后一个值的时候直接pop()4、存在则返回这个差值和参照值的索引4.1、差值的索引使用indexOf()方法,参照值的索引则取p

2020-10-21 21:58:51 320

原创 JavaScript 获取指定字符串中出现次数最多的单词及其出现次数

还记得我之前有篇博客讲的如何用JavaScript 获取指定字符串中出现次数最多的字符及其出现次数吗?这次是找单词哦!上代码:let article = "Age has reached the end of the beginning of a word. May be guilty in his seems to passing a lot of different life became the appearance of the same day;";function findMostWord(

2020-10-19 23:28:10 1613 2

原创 JavaScript 中的 Currying(函数柯里化)

1、函数式编程的回顾众所周知,函数允许咱们通过函数的length属性来访问它们的参数数量。函数的 length属性永远不会改变,因为该属性总是匹配函数的声明参数的数量。但是,请看:function howMany(a,b,c) { console.log(howmany.length);} howMany(1,2); // 3 howMany(1,2,3,4); // 3 不可避免的,咱和咱们的函数要正确处理参数太少和太多的情况。JavaScript 允许我们

2020-10-18 11:17:23 159

原创 理解JavaScript中 call () 、apply () 和 bind () 的用法

今天遇到了关于this重定义的问题,这便不得不说说call () 、apply () 和 bind () 的用法,话不多说,直接上代码:/*定义变量*/var name = "张三", age = 13;/*定义函数*/function show(){ console.log(this.name,this.age);}/*定义对象*/var obj = { name : '李四', age : 14, show : function(){ console.log(this.name

2020-10-12 23:50:30 190 1

原创 JavaScript数组常用的增删改查等操作

数组的增删改查1、尾部插入:push()let array = [1,2,3]; array.push(4); array.push(5,6); console.log(array);//[1,2,3,4,5,6]2、头部插入:unshift()let array = [4,5,6]; array.unshift(3); array.unshift(1,2); console.log(array);//[1,2,3,4,5,6]3、任意位置插入或删除:splice()let ar

2020-10-12 13:36:25 427

原创 JavaScript 获取指定字符串中出现次数最多的字符及其出现次数

此前大多数方法在遇到多个字符出现次数最多的情况便只能找出一个字符,我的方法较好地解决了这个问题,话不多说,直接上代码:let str = 'abbcccdddddeeeeeeefffffff';//特意给定字符e和f都出现了7次function findCharMore(str){ let charNum = {}; /*遍历字符串,得到对象{字符:出现次数}*/ for(let i=0;i < str.length;i++){ let e = str.charAt(i); if(c

2020-10-11 16:39:42 1391 1

原创 MongoDB初体验:安装与基本操作

本文开启我的MongoDB学习之路,先简单介绍下我的初体验。零、简介MongoDB是一种非关系型数据库(NoSQL),与之相对应的是关系型数据库,顺便一提SQL:结构化查询语言、关系数据库全都同SQL来操作。MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象,其字段值可以包含其他文档、数组及文档数组。在Mongodb中,对于插入的格式并没有要求,字段类型可以随意变动。一、安装MongoDB1.软件下载2.安装3.配

2020-10-11 14:33:52 152

原创 Node.js中的基本操作

文章目录1、创建第一个http服务2、读取文件(同步操作)3、读取文件(异步操作)4、绑定、触发一个事件5、延时触发事件6、触发事件并传参7、Buffer与字符编码8、Buffer输出26个英文字母9、将Buffer转换为 JSON 对象10、读取文件内容11、写入文件内容12、将文件内容进行管道流操作复制13、压缩文件14、解压文件15、公开一个模块15、公开整个模块16、get请求服务17、post请求服务18、使用Express框架创建服务19、Express 简单的路由20、Express 中间件、

2020-10-11 12:35:38 529 2

原创 关于 ES6 新特性

本文谈谈关于ES6的新特性,主要从变量函数数组字符串面向对象PromisegeneratorJSON等几个方面叙述。1、变量定义方式特点var可以重复声明,无法限制修改,函数级作用域let不能重复声明,变量可以修改,块级作用域const不能重复声明,常量-不能修改,块级作用域2、函数/*原始函数*/function(){ //内容}/*箭头函数*/()=>{ //内容}/*注: 1.参数唯一可省略() 2.返

2020-10-11 11:16:58 113

原创 在Vue项目中使用vue-video-player实现视频流播放

一、背景介绍在项目开发的新一轮需求中增加了实时监控的功能,巧的是在GitHub上有一个开源项目vue-video-player,借此机会谈谈我在本次项目中的经验以及在配置过程中出现的一些问题的解决方案。二、查看源码<template> <video-player class="video-player-box" ref="videoPlayer" :options="playerOptions"

2020-10-11 10:39:51 4897 1

原创 在Vue项目开发过程中解决跨域问题

一、是什么问题描述:在本地开发过程中,调用后端程序员提供的接口获取数据,希望将获取的数据渲染到页面中,但是浏览器报错:// 控制台报错信息Access to XMLHttpRequest at 'http://x.x.x.x/data/getdata' from origin 'http://localhost:8080' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value

2020-10-11 10:34:30 10182 4

原创 分享一些JavaScript超简洁的方法

1、指定一数组,判断其中是否存在两个数之和等于指定值。/* 指定一数组,判断其中是否存在两个数之和等于指定值。 参数:arr 指定数组 aim 指定值。*/function twoNumAdd (arr, aim) { return arr.some( e => arr.indexOf(aim - e) !== -1 )}/* @JavaScript Array some() 方法 语法:array.some(function(currentValue,index,arr),

2020-10-11 08:35:10 366 3

CSS创意与视觉表现

张鑫旭在第五届CSS大会上谈“CSS创意与视觉表现”的演示文档,里面介绍了许多有趣的、高级的CSS样式,看完受益匪浅!

2020-10-23

空空如也

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

TA关注的人

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