- 博客(86)
- 收藏
- 关注
原创 Maven项目打包时报错Cannot invoke “org.apache.maven.surefire.shade.org.apache.commons.lang3.JavaVersion.atLe
pom文件中添加如下plugin maven-surefire-plugin。打包项目时遇到一个报错,每次都会出现,查了很多方法后来找到了解决办法。
2023-04-06 21:57:13 1767 1
原创 el-table分页数据+回显+勾选状态+记录数据(map实战)
原以为js中即便是学到了map可实际上也不会用到map,可我今天就遇到一个el-table分页查询,然后需要勾选表格内容,切换页码后回显勾选项的需求。一开始想的是,把所有已勾选的数据用list来维护,可稍微一思索就发现这样实际执行起来还是有缺陷的,比如用于来回切换页码等场景稍微一复杂就容易乱套。还是应该记录每一条数据的信息,用户点击勾选的时候,用当前的勾选情况去跟已勾选的数据做一个比对。如果已记录的数据里存在当前列表中的勾选项,同时本次属于勾选状态,则不做处理。如果处于未勾选状态,则从用于记录的总数据中删
2022-04-13 22:18:32 2413 1
原创 Leetcode18四数之和(双指针法)
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。答题:/** * @param {numbe
2022-04-11 21:48:24 352
原创 Leetcode306累加数(递归解决)
累加数 是一个字符串,组成它的数字可以形成累加序列。一个有效的 累加序列 必须 至少 包含 3 个数。除了最开始的两个数以外,序列中的每个后续数字必须是它之前两个数字之和。给你一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是 累加数 。如果是,返回 true ;否则,返回 false 。说明:累加序列里的数,除数字 0 之外,不会 以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。答题:/** * @param {string} num *
2022-04-10 18:58:28 583
原创 Leetcode47全排列II(回溯+剪枝)
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。/** * @param {number[]} nums * @return {number[][]} */var permuteUnique = function(nums) { let res = [] function dfs(arr,rest){ console.log(arr,rest) if(arr.length === nums.length){
2022-04-09 22:09:58 595
原创 剑指offer29顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。答题:/** * @param {number[][]} matrix * @return {number[]} */ var spiralOrder = function(matrix) { let res = [] let tem = '' try{ while(matrix.length){ let top = matrix.shift() for(let
2022-04-07 20:17:33 394
原创 Leetcode2两数相加(链表应用)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。答题/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.n
2022-04-04 23:44:53 392
原创 Leetcode79单词搜索(深度遍历解法)
Leetcode79单词搜索(深度遍历解法)给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。/** * @param {character[][]} board * @param {string} word * @return {boolean} */
2022-03-30 23:41:08 299
原创 Leetcode5最长回文子串(中心拓展法和动态规划法)
Leetcode5最长回文子串(中心拓展法和动态规划法)给你一个字符串s,找到s中最长的回文子串。答题/** \* @param {string} s \* @return {string} */var longestPalindrome = function longestPalindrome(s){ let n = s.length; let res = ''; let dp = Array.from(new Array(n),() => new Array(n).fil
2022-03-28 23:01:18 586
原创 Leetcode76最小覆盖子串(滑动窗口解法)
Leetcode76最小覆盖子串(滑动窗口解法)给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。答题:/** * @param {string} s * @param {string} t * @return {string} */var minW
2022-03-27 22:38:09 500
原创 Leetcode344反转字符串(双指针解法)
Leetcode344反转字符串(双指针解法)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。答题:/** \* @param {character[]} s \* @return {void} Do not return anything, modify s in-place instead. */var reverseString = function(s)
2022-03-26 23:13:31 991
原创 Leetcode283移动零(双指针解法)
Leetcode283移动零(双指针解法)给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。答题:/** \* @param {number[]} nums \* @return {void} Do not return anything, modify nums in-place instead. */var moveZeroes = function(nums) { let l
2022-03-25 12:51:51 470
原创 Leetcode977有序数组的平方(双指针解法)
Leetcode977有序数组的平方题目给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。答题/** \* @param {number[]} nums \* @return {number[]} */var sortedSquares = function(nums) { let left = 0 let right = nums.length -1 let res = [] while(left <=
2022-03-23 22:04:50 268
原创 Dart中的内置数据类型简介
Dart中的内置数据类型简介最近也有在常使用flutter写一个简单的app,不为实现啥功能,就单纯走一个流程,把它部署到我的安卓和ios手机上。为此稍微看一下dart的内置数据类型。前言变量是一个引用,在Dart中一旦变量的类型被确定,就不能再被更改类型Dart中的一切变量皆是对象,所有的变量都指向一个对象。声明变量声明可以有以下两种方式,一种是不指定类型,使用var关键字。此外final和const都可以用于定义常量的, 定义之后值都不可以修改 var name = 'Bob'; fi
2022-03-20 15:01:53 2919
原创 Leetcode34在排序数组中查找元素的第一个和最后一个位置(二分法求解)
Leetcode34在排序数组中查找元素的第一个和最后一个位置(二分法求解)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。答题:/** \* @param {number[]} nums \* @param {number} target \* @return {number[]} */var searchRange = function(nums, targe
2022-03-19 20:54:20 449
原创 三分钟学习一下JavaScript中map对象的用法
三分钟学习一下JavaScript中map对象的用法上一篇文章花了几分钟时间看了看set对象的使用,今天来写一些map对象的使用。两者的属性和方法差不多,老规矩,整体过一下。1. 构造方法 let myMap1 = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], [1, 'four'] ]) let myMap2 = new Map() 2. size属性 获取元素个数 由
2022-03-19 12:26:09 996
原创 三分钟学习一下JavaScript中set对象的用法
三分钟学习一下JavaScript中set对象的用法set对象Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。1.1 构造方法 const set1 = new Set([1, 2, 3, 4, 5]);const set2 = new Set();const set3 = new Set([1, 2, 3, 4, 5, 1]);1.2 size属性 :个数console.log(set1.size) // 5console.log(set2.size) // 0c
2022-03-18 23:47:13 1330
原创 JavaScript中一些不常见的运算符号(三分钟看完)
JavaScript中一些不常见的运算符号(三分钟看完)最近在做一些算法题,有些优雅的表述中总有那么一两个不熟悉的运算符,今晚趁着还有点时间抓紧扫一下。一、求幂 ()**求幂运算符(**)返回将第一个操作数加到第二个操作数的幂的结果。它等效于Math.pow,不同之处在于它也接受BigInts作为操作数。示例:console.log(3 ** 4);// expected output: 81二、左移左移操作符 (<<) 将第一个操作数向左移动指定位数,左边超出的位数将会被清除
2022-03-17 23:07:55 480
原创 Leetcode20有效的括号(栈的经典使用示例)
Leetcode20有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。答题/** \* @param {string} s \* @return {boolean} */var isValid = function(s) { let queue = [] let left = ['(','{','['] let map = {
2022-03-16 23:20:41 165
原创 Leetcode剑指offer16不含有重复字符的最长子字符串
Leetcode16不含有重复字符的最长子字符串给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。答题:/** \* @param {string} s \* @return {number} */var lengthOfLongestSubstring = function(s) { let queue = [] let maxLen = 0 for(let i=0;i<s.length;i++){ if(queue.includes
2022-03-15 23:36:09 236
原创 JavaScript中数组的splice方法和slice方法详解
JavaScript中数组的splice方法和slice方法详解最近在做一些算法题,不能说不知道splice方法和slice方法怎么用,但是总是写出来有点点小问题,干脆就整理一下,再试两个小例子写一篇文章,彻底弄明白。splice方法splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。一般使用的格式是这样的array.splice(start)array.splice(start, deleteCount)array.splice(start, deleteCount,
2022-03-14 22:43:39 1476
原创 Leetcode3无重复字符的最长子串(滑动窗口解法)
Leetcode3无重复字符的最长子串(滑动窗口解法)给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。答题:/** \* @param {string} s \* @return {number} */var lengthOfLongestSubstring = function (s) { let arr = [], max = 0 for(let i = 0; i < s.length; i++) { let index = arr.indexO
2022-03-13 22:50:34 293
原创 Leetcode120三角形最小路径和
Leetcode120三角形最小路径和给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。答题:/** \* @param {number[][]} triangle \* @return {number} */var minimumTotal =
2022-03-13 07:39:38 199
原创 Leetcode77组合(回溯求解)
Leetcode77组合(回溯求解)给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。答题 * @param {number} n * @param {number} k * @return {number[][]} */ var combine = function(n, k) { const res = []; const stack = []; function backtrack(start)
2022-03-11 23:39:47 150
原创 Leetcode994腐烂的橘子(广度搜索法)
Leetcode994腐烂的橘子在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。答题:/** \* @param {number[][]} grid \* @return {number} */var orangesRotting = function(grid) { let m = grid.length let n =
2022-03-10 22:38:19 230
原创 Leetcode542:矩阵(广度遍历解法)
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。答题/** * @param {number[][]} mat * @return {number[][]} */ var updateMatrix = function(mat) { let map = new Array(mat.length); // 用于输出的数组 let quque = [];
2022-03-09 22:07:43 276
原创 Leetcode733:图像渲染(广度遍历解法)
Leetcode733:图像渲染(广度遍历解法)题目:有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。…上一篇文章用深度遍历的方法解了一下这道题,后来觉得应该再用深度遍历的方法解决一下,避免自己只学到套路没懂得思想。今天给一个广度遍历的解法答题:var floodFill = function(image, sr, sc, newColor) { let lineLen=image.length, rowLine=im
2022-03-08 22:30:15 6103
原创 Leetcode733:图像渲染(深度遍历解法)
题目:有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。…解法:var floodFill = function(image, sr, sc, newColor) { const initialColor = image[sr][sc] function flood(image,sr,sc){ if(sr<0 || sc<0 ||sr>= image.length||sc>= i
2022-03-07 22:26:41 134
原创 块级元素与行内元素的区别以及BFC模型的简单解释
块级元素与行内元素的区别以及BFC布局的简单解释工作中其实经常用到一些span标签和div标签来进行内容的显示,但涉及到文本标签的换行,总得多花那么一两分钟多写一下,今天就专门来瞅一瞅。按照标签的分类可以分为块级元素和行内元素什么是块级元素?独占其父元素的整个水平空间,垂直空间等于其内容高度的元素称之为块级元素。我们常用的div、h、p等标签都属于块级元素可以看到,对于一个普通的div标签而言,其内部元素是可以超出其限定高度进行显示,有与外界内容重叠的情况<head> &l
2022-03-06 20:58:45 244
原创 CSS选择器以及权重顺序
CSS选择器以及权重的设置一个页面的搭建离不开css样式,而想要使用css对页面元素进行控制就需要用到css选择器。按照引入方式可以说有内部样式(样式写到标签中的style里)、外部样式(样式通过引入外部的css文件)、内联样式(样式写在html文件中的style标签里)按照选择器分类的话,常见的选择器有id选择器、类选择器、标签选择器、通配符选择器、派生选择器<!DOCTYPE html><html lang="en"><head> <meta
2022-03-05 12:02:41 254
原创 CSS伪元素的基本使用
CSS伪元素的基本使用上一篇文章介绍了很多个伪类的使用,这篇来说一下伪元素。伪元素之所以称为“伪”,主要是因为它不是真正网页里的元素,但是标线行为又跟真正网页元素一样,也可以对其使用css操作。伪元素比较少,今天就一个个的用法,不分门别类了。一、::after和::beoreafter和before用的比较多一些。都是配合content来给元素添加一些装饰.item::before {content: ‘*’;color: red}.item::after {content: ‘*’;
2022-03-04 23:09:38 853
原创 CSS伪类的基本使用
前端基础:CSS中伪类的作用和基本使用作为一名优秀的前端开发,不会使用伪类和伪元素有点说不过去。但是很多小白可能伪类和伪元素都分不清楚,我先同通俗的话解释下:伪类是用来给指定选择器添加状态效果,伪元素是给指定元素添加内容修饰。今天先带大家看一下伪类是如何使用的,明天给大家演示下伪元素的使用。常见的伪类诸如:active/:focus/:hover/:visited/:first-child等大家可能比较熟悉,用的比较频繁,实际上伪类有几十个,下面分门别类的展示一下一、用于链接,按钮等元素的常见伪类
2022-03-03 22:49:16 815
原创 二分法的左右边界
二分法的左右边界二分法用起来还是挺好用的,就是每次我总是纠结边界条件到底如何确定,用小于号还是小于等于号,满足条件后left是mid还是mid+1,为此专门做了两道简单题,整理了下思路。题目一给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法var searchInsert = function(nums, target) { let left = 0 let right
2022-03-02 22:19:42 342
原创 Vue2和Vue3进行开发的区别
使用Vue3和Vue2进行开发的区别笔者虽然老早就是用vue3进行开发了,但是上次有人问道使用vue3进行开发跟使用vue2进行开发的区别有哪些这个问题的时候,回答的还是有些琐碎,干脆今天专门整理一下,做个记录。一、再也不用set了众所周知,vue3使用的是Proxy对象进行代理,对数据进行监控,而vue2是使用object.defineProperty()来实现的,针对数组或者对象的新增属性的变化是需要专门用vue.set方法去做处理,通过命令的方式添加一个监控。大家有兴趣可以看看Proxy如何使用
2022-03-01 22:06:48 610
原创 DNS域名解析过程简述
DNS域名解析过程简述我们知道,域名是为了方便用户记忆而专门建立的一套地址转换系统。虽然用户在web端输入了url可电脑想要找到资源还是需要对应资源所在服务器的准确ip。于是乎,在获取、请求资源之前,需要有这么一点点时间用在dns解析上(根据域名找ip的过程就是域名解析)域名跟ip的映射包括我们的浏览器、操作系统、路由器、dns服务器都有做处理。首先是浏览器,如果用户访问到了一个资源,浏览器会记录该资源对应的ip并以一定频率进行刷新。其次是我们的电脑,当浏览器中没有记录我们的ip时它就会去电脑中找,
2022-02-28 22:24:28 784
原创 2022金三银四前端面试题预告
2022金三银四前端面试题预告马上就到了面试季了,今天整理了一下前端常见的一些面试题。虽说面试的时候造火箭,需要你背好八股文,不过很多基础还是应该掌握的,就算不面试,也应该多看一些基础,内功深厚了,将来说不定还开始写框架了,嘿嘿嘿项目介绍你觉得前端包括什么自我介绍为啥离职聊项目(项目的背景、你的角色、团队情况、技术难点、怎么解决、项目收益、个人收获)聊项目(聊的很深)职业思考你是怎么学习前端的你想要实现一个功能时,你不知道vue怎么实现,你是怎
2022-02-28 21:30:36 521
原创 HTML文件怎么写?简述构成HTML文件的几大元素
HTML文件怎么写?简述构成HTML文件的几大元素如何编写一个html文件,可能是一个前端小白最应该了解的问题。今天就针对html文件构成的几大元素做一个讲解并简述一下它对应的属性<!DOCTYPE html><html><head><meta charset="utf-8"><title>文档的标题</title><link href="./test.css"></head><bod
2022-02-27 22:37:07 832
原创 JavaScript中==和===的区别
JavaScript中和=的区别js中我们经常会判断两个值相等不相等,用到的就是相等运算符和严格相等运算符。一般情况下,只要变量的数据类型可以确定,我们都使用===来进行判断下面对两个元素符的使用或者说是判断规则进行一下讲解一、==相等运算符相等运算符在进行类型判断时可能会进行一些类型转换1、如果有一个操作数是布尔值,那么在进行比较时还会将其转换为数值1 == true // true2、如果一个操作数是字符串,另一个是数值,在比较的时候会将字符串改成数值1 == '1' // true
2022-02-26 12:50:35 2909 1
原创 学习VUE3总得知道Proxy怎么使用吧
学习VUE3总得知道Proxy怎么使用吧我们都知道vue2是使用object.defineProxy实现数据监控的,但在vue3中改成了使用JS新增的Proxy对象。今天就来看一下Proxy 是如何使用的Proxy对象用于创建一个对象的代理,进而实现基本操作的拦截和定义。它的基本语法是const p = new Proxy(target, handler)target是使用Proxy包裹的目标对象handler是一个通常以函数作为属性的对象,其中各属性定义了执行各种操作时的代理行为,它可以有一
2022-02-25 23:32:31 973
原创 304状态码详解(协商缓存)
304状态码详解(协商缓存)上一篇文章针对不同的状态码做了一个整理,还说到要专门针对304做一个详解,于是与,今晚又来学习了。首先说一下背景:我们知道前端代码打包后需要部署到静态服务器上。客户端通过输入url就能看到对应的页面。从客户端到服务器发送请求到接收资源需要建立连接、消耗宽带。但是静态资源的更改频率往往没有那么高,于是就有一些专门的response header设置。通过这些设置让浏览器在获取资源文件时直接从本地硬盘或者内存获取,而不必再发送请求。这样也减轻了服务器的负担,同时还加快了客户端
2022-02-24 22:43:58 7464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人