- 博客(51)
- 收藏
- 关注
原创 vue前端下载文件(后端接口返回byte[]数组)
需求解析此需求开始的时候最大的误区是,因为后端生成byte数组比较容易,因此总想在后端将其转为Blob发送,过程中遇到很多问题。后来发现,直接发送字节流即可,前端将其转化为Blob很容易。下载接口编写getFile(path) { let formData = new FormData(); formData.append('path', path); // 用于后端下载文件的路径 this.$axios .post('http://localho
2022-05-02 15:35:42
7458
原创 JS输入输出(ACM模式
JS输入输出(ACM模式输入一行输入一个int数字一行为一个一维数组输入为`1 2 3`的形式输入为`123`的形式输出(数组输出为输入类似的形式)数组输出为`1,2,3`数组输出为`1 2 3`数组输出为`123`使用V8模式,主要使用readline()读取每一行。本质上输入的都是字符串,需要转化为数字。同时也要注意不同的输入方式需要不同的处理。输入注意输入和split后每个元素都是string,所以如果输入的是数字或者Number数组,需要转化数字。一行输入一个int数字用readlin
2022-04-11 16:38:59
8544
4
原创 edge运行js文件,控制台查看结果
任意界面右键,选择检查。选择源代码下面的片段,英文的话选sources下面的最后一个。然后新片段新建脚本代码片段。CTRL+Enter运行代码,即可控制台查看运行结果。
2022-03-25 16:41:05
2303
原创 关闭对话框,el-upload清空file-list
如上,每次点开新对话框,上次上传的文件还在,需要关闭对话框时清空。清空file-listel-upload绑定ref,通过此ref调用el-upload提供的this.$refs.xxx.clearFiles()清空。关闭对话框调用事件el-dialog绑定关闭事件@close:@close='closeDialog',编写该方法实现。代码就看el-upload的ref和对话框的close事件。<el-upload class="upload-demo" .
2022-03-01 18:41:49
6161
2
原创 npm ERR——undefined (reading ‘isServer‘)错误和unable to resolve dependency tree错误
npm install的错误npm ERR! Cannot read properties of undefined (reading ‘isServer’)错误解决关闭VPNnpm ERR! ERESOLVE unable to resolve dependency tree错误npm install --legacy-peer-deps
2022-03-01 10:41:47
1804
原创 leetcode记录 —— 组合+排序问题 —— 回溯+DFS+剪枝
46.全排列flag数组记录元素是否用过,然后dfs中将没用过的挨个加进去,继续DFS,后面移除本步加的。一个len控制返回,如果len等于数组长度证明所有排序完,返回。77.组合每次DFS缩小区间到当前元素后面的所有的,这样避免加入同样的元素,也避免出现排列看起来不同,组合其实一样的情况。len控制list中满足需要的个数退出。47.全排列II —— 包含重复元素,不能出现相同序列不能出现相同序列,与46区别是,同一层出现相同元素时,这整个子树都要剪掉,因为第一棵树已经有了。剪掉的方法是:对数组
2022-02-24 12:51:56
225
原创 leetcode记录-排序-215、347、451、75
Leetcode排序相关问题215.数组中第K大元素思路代码347.前K个高频元素思路代码451.根据字符出现频率排序思路代码75.颜色分类思路代码技巧总结排序相关思路元素出现个数统计HashMapList相关(二维List,Integer的List转数组)map操作(键集合、按键排序、某键值+1)字符List转String(Character数组同理)215.数组中第K大元素思路【最终位置】求数组中第K大元素,与排序相关,快排每次都能找到一个元素在排序好的数组中的最终位置(且左边的都比该数小,右边
2022-02-15 22:53:14
213
原创 JAVA后端根据两个条件查询获得List,给前端分页展示,且两个条件均可能为空的处理
自己想的办法,比较麻烦。。DAO中:根据两个条件的四种情况(均不空、前空、后空、均空),写四组查List以及获取满足条件记录数的方法// 根据页数和每页展示数查 @Select("select * from damage_assess_result where warhead_id=#{warheadId} and target_id=#{targetId} limit #{start} , #{end}") public List<DamageAssessResult&g
2022-02-10 18:20:07
705
原创 leetcode记录-680-验证回文字符串Ⅱ-双指针
680.验证回文字符串Ⅱ思路因为最多删一个字符能否成为回文字符串,双指针从首尾开始朝中间步进,当l和r处的字符相同,同时步进;当不同时,如果字符串为满足题意的串,则其[l+1,r]或者[l,r-1]为回文串,这时判断要是满足这两个条件就返回true,否则不满足返回false。需要写一个判断回文串的函数。代码class Solution { public boolean validPalindrome(String s) { int l=0,r=s.length()-1;
2022-02-09 20:16:42
332
原创 vue进入界面后设置某组件自动定时刷新,退出时清除定时器
需求界面渲染数学公式会存在bug,时间较长等情况下渲染公式出错,需要自动定时刷新页面公式,同时为了不占用过多资源,退出该界面要清除定时器。实现需要使用created()和destroyed()方法,在created方法中设置定时器,并给让定时器等于Data中设置的变量,在destroyed离开界面时调用的方法体内,根据这个变量清除指定定时器。(下文只包含主要代码)<span :key="key" style="font-size:20px">{{ text }}</span>
2022-02-09 15:40:58
1234
原创 leetcode记录-34-在排序数组中查找元素出现的第一个和最后一个位置-二分经典
34-在排序数组中查找元素出现的第一个和最后一个位置思路如果直接用二分法寻找区间比较困难,当找到target时又要向左又要向右不知道该如何处理 —— 问题转化为寻找target出现的第一个位置(左边界)和寻找target出现的最后一个位置(右边界)两个二分,在每次二分中,注意l和r的初始条件,while的条件,l和r如何变化(自己习惯左闭右闭的写法),在寻找左边界时,mid大于和小于的情况正常r=mid-1和l=mid+1,但是当找到target的下标index,需要看左边是否还有,所以要让r=mid
2022-02-08 22:06:01
395
原创 leetcode记录-69-x的平方根-二分
69.x的平方根思路自己的(也正确):0和1直接输出,其他的按1到x进行二分查找,如果mid的平方大于x证明要在左侧找,让r=mid;而当mid的平方等于x,即找到了;当mid平方小于x,可能找到也可能没找到,结合mid+1判断,如果mid+1的平方也小于x,在右侧找,l=mid,否则退出;最后mid即为输出值。题解:二分查找0-x,如果当前mid平方大于x,在左侧找,r=mid-1;如果当前mid平方小于等于x,先让ans为mid,然后l=mid+1,最后输出ans。代码自己的:cl
2022-02-08 20:18:39
310
原创 Java中数组与List的区别
① 数组声明的时候要指定数组的大小,用基本类型。② List接口是一个有序的 Collection,没有固定大小的限制。其声明时用基本类型需要用其引用类型(List<E> list = new ArrayList<>(); 这里的E指的是引用类型)① 数组向某下标插入元素是修改当前下标的元素。② List向某下标插入元素是插入到指定下标,此下标原来的元素和后面的元素均后移。List删除元素,删除当前下标的元素,后面的前移。List的方法:Array..
2022-02-08 13:42:04
7622
原创 List与ArrayList、Map与HashMap的区别
List和Map是接口,ArrayList和HashMap是接口的实现类。不能单独使用接口来保存数据,但是可以创建其实现类的对象,然后使用接口引用来保存对象。如:Map<String, Integer> map = new HashMap<>(); 和 List list = new ArrayList();。接口引用拥有接口的所有属性和方法,不会拥有其实现类的独有的属性和方法。如果两者有相同的属性或方法,调用的是接口的属性和实现类的方法。用List list = new A.
2022-02-08 11:25:19
881
原创 leetcode记录-340-至多包含 K 个不同字符的最长子串-双指针
340.至多包含 K 个不同字符的最长子串思路寻找字符串满足某个条件的子串,考虑双指针+滑动窗口思想(右指针一直前进,当遇到某个条件成立/不成立,更新左指针,然后右指针接着前进)。首先左右指针从0开始,右指针步进,用hashmap存储俩指针区间内每个字符最新出现的下标,当hashmap中元素个数大于要求的k时,证明元素多了,上一个子串寻找结束,更新左指针开始下一个子串寻找(舍弃目前区间内最右下标最小的舍弃,以获取最大长度),直到到最后。代码public class T340 { publi
2022-02-07 23:54:20
8295
原创 leetcode记录-524-通过删除字母匹配到字典里最长单词-双指针
524.通过删除字母匹配到字典里最长单词思路理解题意是一大难点。。。对于list中的字符串,如果可以由s删除一些字符得到,那么这个字符串初步符合标准,把他和str(初始为空)的比较,如果其长度更长或者长度相等下字母序小,则更新str为当前字符串。代码class Solution { public String findLongestWord(String s, List<String> dictionary) { String str=""; f
2022-02-07 22:23:11
5736
原创 leetcode记录-633-平方数之和
633.平方数之和思路如果存在两个数平方和等于c,这两个数一定小于根号c取整(设为a),因此左指针l取0(0莫忘),右指针r取a,若平方和小于c,l++,大于c,r++,等于c,返回true。代码class Solution { public boolean judgeSquareSum(int c) { long left = 0; long right = (long) Math.sqrt(c); while (left <= ri
2022-02-05 23:14:13
6410
原创 leetcode记录-76-最小覆盖子串-双指针
76.最小覆盖子串思路错误思路记录:以t的长度作为初始区间长度,每个长度从头开始切子串,一直到末尾,因为从最小长度开始,如果找到满足条件的子串,即退出循环并return,找不到就区间长度加1,然后从头开始。对于“满足条件——统计子串中t中每个字符的个数”,写了统计String中某个字符出现个数的函数,对于子串中每个字符,如果其数目小于子串的数目,结束循环,区间步进。这种方法暴力搜索,时间复杂度太高,对于很长的字符串会报错——超出时间限制滑动窗口的本质是:在滑动窗口类型的问题中都会有两个指针,一个用
2022-02-05 22:12:58
352
原创 leetcode记录-142-环形链表Ⅱ-双指针
142.环形链表Ⅱ思路数学推导:①先看是否有环:采用快慢指针的方式,如果俩指针能相遇,证明有环。要是前面的指针为null或者前面指针的next为null,就证明无环。②找入口:按照数学推导,设环长为n,则在相遇点快指针比慢指针多走了an步,而其步数为慢指针的2倍,所以慢指针走了an步。假设从头节点到入口节点要走m步,则慢指针再走m步就能到入口(因为再走m步,慢指针一共走了m+a*n步,即走到了入口——因为正好是头节点走到入口,再绕环走a圈还是回到了入口),但是我们不知道这个m为多少,但是我们知道头节
2022-02-04 21:30:26
464
原创 leetcode记录-88-合并两个有序数组-双指针
88.合并两个有序数组思路本题可以用sort排序,以及构建新数组一个一个遍历添加的方法,都太过简单不赘述。双指针疑虑:从后往前遍历添加元素,如果添加到数组1本来不为0的部分不好比较(放了之后把原来的位置置0),长度问题产生了疑虑。当array1的都添加到后面,循环判断需要注意。代码class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { //两个下标。一个总体下标,步进,从后往
2022-02-04 00:16:02
408
原创 leetcode记录-167-两数之和-双指针
167.两数之和思路如果本题没说递增数列,解法就是普通的O(n^2)的遍历。但是本题说了!!!递增数列,所以就要充分利用递增数列的特性,两数求和等于target,从首尾开始,不同情况移动不同的下标,直到找到,因为第一个数加最后一个数和最后一个数加第一个数没区别,所以中间汇聚即可,肯定能找到。代码如果不是递增数列的解法:①while循环:class Solution { public int[] twoSum(int[] numbers, int target) {
2022-02-03 22:47:47
338
原创 leetcode记录-665-非递减数列-贪心
655.非递减数列思路因为最多修改一个元素,变成非递减数列,所以只要找到一个比前一个i-1小的元素i,对其进行判断完之后,后面遇到此种情况就false。在判断的时候,因为部分下降要变成总体递增,所以不止和这两个元素有关,变化可以是把前面的减小,也可以是把后面的增大,但是原则是不破坏总体递增,因此这两种方式:①下降前面的i-1,需要i-2和i满足递增 ②提高后面的i,需要满足i-1和i+1满足递增。对于两边界也要考虑。代码class Solution { public boolean che
2022-02-03 21:24:11
443
原创 leetcode记录-406-根据身高重建队列-贪心
406.根据身高重建队列思路因为此排序与两个元素有关,所以单纯的排序某个元素很难操作。而排序的规则,首先第一个元素同条件下,尽量大的在前面;第二个元素,同首元素下,需要小的在前面(因为前面是大于等于它的)。所以需要同时考虑两个元素的排序,而这种排序有特定的方法。排好序之后因为首元素大的在前面,所以从头开始,后面的元素其前面的都比自己大或者相等,这个个数就要对应尾元素的数字,此时存在有些首元素大的需要排到后面,当前数对直接放到所在下标即可,保证了前面都比自己大,也保证了个数。代码class Solu
2022-02-02 23:00:02
323
原创 leetcode记录-122-股票买卖时机-贪心
122.买卖股票的最佳时机思路因为要低价买,高价卖,实际就是每一个递增序列,起点到终点的差即一次交易,所有的递增序列加起来。用一个标志前进,遇到下一个当前大于标志的,证明还在递增序列,求差加,更新标志;否则不在递增序列,直接更新标志,开始下一轮。代码public class T122 { public int maxProfit(int[] prices) { int num=0;//记录每个递增序列的首尾差的和 int temp=prices[0];
2022-02-02 21:35:48
289
原创 leetcode记录-763-划分字母区间-贪心
763.划分字母区间差点掉进坑的思路本来想记录每个字母出现的首下标和尾下标,得到一个有24个区间的数组。然后求这个区间数组的独立并集(只有相交才求并集,下次看相交跟并集比)数目,然后在找每个字母出现的首下标和尾下标的时候,企图遍历。。。。。。太夸张了。。。。。还好突然灵光一闪百度了String中某个字符出现的首下标和尾下标的方法,以及String获取某下标的字符的方法。。。。但是遍历得到数组然后再求独立并集数好像和直接求没啥区别,多此一举,因此有了下面的思路。思路两个标志:一个begin记录当前
2022-01-30 22:14:42
473
原创 leetcode记录-452-用最少数量的箭引爆气球-贪心
452. 用最少数量的箭引爆气球思路自己的(左端升序):将区间按头从小到大排序,后面的头肯定>=所选头,但是后面的尾巴不一定>所选尾巴,所以这两个区间的“可射区间”为交集,再下一个区间要是与“可射区间”有交集,也可以一起射,此时进一步缩小交集,直到遍历完所选区间后面的所有的(可优化,当“可射区间”的尾巴小于下一个区间头时结束),记录内部循环有交集的区间个数index,最后外层循环i+=index+1。外层循环每次执行都是一个新的射箭,所以射箭数++。题解简单的(右端升序):将区间按尾
2022-01-30 20:03:29
390
原创 leetcode记录-605-种花问题-贪心
605-种花问题思路自己的:寻找所有为1的下标,组成一个数组a。对该数组遍历,每两个之间的差-1即为0的个数,因为均非首尾,所以(差-1)/2-1即为可插的花数。对于首尾,数组第一个元素为第一个1的下标,其前面可插花数为a[0]/2,最后可插花数为(原数组长度-最后一个1的下标-1)/2。将计算的数加起来,如果大于等于n,则证明可以插n朵。——注意,不要忘记全0的情况。别人的题解(双重更优:一次遍历+到n朵插进去就停止,不做无用功):跳格子:i从头开始跳,i遇到0时【如果后面i+1是1,则i+1
2022-01-30 16:27:15
327
原创 leetcode记录-435-无重叠区间-贪心
无重叠区间思路自己的:自己的思路是,遍历每个元素,对于i对应的元素,如果比j对应的首元素小,当i尾>j首且i尾<j尾,去掉区间j(标志数组对应为1);当i尾>=j尾,去掉区间i。每个区间与其他所有的比较。—— 思路上可行,但是要注意,应该要按照首元素排序,否则可能因为第一个元素起点过大导致结果不同。题解的:①元素按照首元素排序,然后从第一个元素开始,让end标志为其尾巴,如果后面的元素头>=end,证明没有相交,且因为按头排序的,所以一个一个比较遇到的正好是第一个满足这种情
2022-01-29 23:51:18
329
原创 leetcode记录-455-分发饼干-贪心
455-Assign Cookies思路:给孩子和饼干排序,一个数组记录饼干是否已经发放,一个flag计数,对每个孩子从前往后寻找最先满足这个孩子的饼干,找到了就flag++,并将该饼干标志改为已发放。问题:时间复杂度太高,但是没想到其他解法,第一次做题累了。代码:class Solution { public int findContentChildren(int[] g, int[] s) { int a = g.length;//小孩 int b = s
2022-01-28 23:14:55
881
原创 Vue使用MathJax数学公式无法刷新的问题解决
需求在弹窗中el-select选择不同公式,显示公式及参数用于简单公式计算器功能。问题使用<span>展示公式,只显示第一次渲染的公式,无法刷新,在<el-select>的@change方法中每次将对应值赋空也不行。参数显示会叠加,之前渲染的不消失。以上均为渲染刷新的问题。解决渲染特定的组件(跟问题没关系,顺手记录)在组件上绑定id属性,将id传给渲染的方法,如下。渲染的span和form均放在一个<div>标签中,给其赋id:<div id=
2022-01-21 16:22:05
1265
原创 VUE还原data()数据默认值
所有的都还原Object.assign(this.$data, this.$options.data())还原某个Object.assign(this.$data.form, this.$options.data().form)
2022-01-16 16:36:57
1443
原创 hdfs上传下载文件样例
hdfs上传文件前端样式<el-upload class="upload-demo" :action="serverUrl1" name="file" style="float: left;margin-left: 10px" :before-upload="beforeDo1" :on-success="uploadSuccess1"
2021-12-20 18:02:38
506
原创 带条件的分页查询(ssm后端+vue前端)
vue中根据页码、页数、查询条件查询数据并进行展示,JAVA后端利用dao+service+controller三层进行逻辑处理,返回满足查询条件的某页数据,并能返回所有满足条件数据条数。
2021-12-10 22:11:12
1476
原创 在IDEA中使用MCR调用运行matlab代码
安装MCR注意:MCR需要与打包matlab程序的matllab版本一致。(本次开发使用Matlab R2020b版本)在Matlab Runtime官网地址下载R2020b的安装包。解压安装包到某一目录。运行setup.exe安装MCR,运行过程按顺序点击下一步即可,没有什么需要注意的。IDEA配置导入MCR的javabuilderjar包(MCR安装路径/toolbox/javabuilder/jar/):File - Project Structure - Libraries -
2021-10-15 17:20:46
1194
原创 vue中table多选/单选行,获取其数据
多选使用官方文档提供的方式:手动添加一个el-table-column,设type属性为selection即可。<template> <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange"> <el-table-col
2021-10-09 15:36:50
9908
原创 Vue前端+Java后端:根据查询条件,分页查询列表展示
需求:根据查询条件以及页码,页大小向后端请求数据并展示。相关组件:el-formel-form标签中添加属性:inline=“true”,使el-form-item横向分布。el-form标签中添加属性:model=“listQuery”,绑定表单数据对象。查询输入框就可以绑定绑定表单数据对象的某个元素,实现输入赋给该元素。按钮,输入框等各放在一个el-form-item即可。代码:template<el-form :inline="true" :model="listQ
2021-10-09 15:24:37
2723
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人