自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (11)
  • 收藏
  • 关注

原创 iframe下的qiankun微前端,通过window.top.postMessage无法通信问题

个人理解:当这个代理的微前端window是iframe时就会遇到window.top!如题:iframe下的qiankun微前端,通过window.top.postMessage无法通信问题。qiankun官方文档提到:qiankun 中的代码使用 Proxy 去代理父页面的 window。.parent 其实才等于 iframe.parent。因为一些必要原因需要通信,比如解决跨域window.open。

2023-09-13 22:23:19 391

原创 ReactRouterv5在BrowserRouter和HashRouter模式下对location.state的支持

ReactRouterv5的HashRouter不支持location.state

2023-07-28 15:18:58 395

原创 关于执行上下文的学习总结

执行上下文

2022-07-04 15:38:40 299 1

原创 实现简单的new函数

实现简单的new函数

2022-06-07 18:06:55 198

原创 取消请求、axios实现abort

缘由工作项目使用fetch,暂无法提供abort(取消请求)功能,虽然官方说可以使用:AbortSignal对象的实例,将允许通过AbortController与fetch请求通信或者终止fetch,稍微复杂了也不好封装。于是将目光转回axios(以前技术选型时不知道咋定了fetch)原生XHRxhr提供abort方法xhr = new XMLHttpRequest()xhr.open("get","xxx")xhr.send();xhr.onreadystatechange=funct

2022-05-26 21:04:15 2096

原创 Day.js生成时间戳在Safari报错

import dayjs from 'dayjs';const MILLION = 1000000;const formatTimeToNanosecond = (time: string) => dayjs(time).valueOf() * MILLION;Chrome下调试返回正常,Safari下返回NaN个人认为是dayjs的坑,替换为moment.js即可import moment from 'moment';const MILLION = 1000000;const for

2022-05-09 17:36:44 751

原创 使用node-forge pki进行RSA加密

先放npm官方文档:www.npmjs.com/package/node-forge在知道RSA加密的大致原理后,再往下看使用例子简单写个方法:// 引入依赖import forge from 'node-forge';// base64转换(一般公钥私钥生成都是经过base64转换处理)const encode64 = str => forge.util.encode64(str);// 加密的方法,入参是:待加密文本,公钥,是否需要转化为Pem格式const encrypted

2022-05-09 17:27:06 3528

原创 CSS子元素撑满父元素(height: 100%无效)

原因分析明确一点:子元素设置height: 100%需要父元素有确定的高度;如果父元素高度是被子元素②撑起来的,此时我们想让子元素①撑满高度,height: 100%无效。解决办法父元素:position: relative;子元素:position: absolute;top: 0;width: 100%;height: 100%;...

2022-03-09 20:38:36 13204 2

原创 React 子向父级组件通信时,state为旧的数据

问题描述当嵌套太深的子组件触发更新父组件时,父组件获取到的state(map传入子组件)是旧的

2022-02-16 18:34:30 715 1

原创 React事件处理中this使用解决办法:箭头函数+class fields语法

前言在React中,我们对事件命名采用小驼峰式(camelCase),而不是纯小写。传统HTML、React中JSX写法:// 传统html<button onclick="handleClickBtn()">按钮</button>// React JSX<button onClick={handleClickBtn}>按钮</button>在传统HTML写法里,onclick="handleClickBtn()",引号内部是js代码,当触发事

2021-09-15 12:14:06 1463

原创 js数组使用字符串作为下标

在跟其他语言一样,使用字符串作为数组下标时,一开始的预想是,将字符串转换成十进制ASCII编码,比如:let arr = []arr['a'] = 1 // 等价于arr[97] = 1 ???看结果:很显然,并不是这样。在JavaScript里,数组并不拥有真正的字符串下标,当我们为js数组添加字符串下标的时候,其实是为该数组对象添加了一个属性,注意,是数组对象的属性,而不是数组成员。而添加到数组对象上的属性,并不影响该数组对象的length属性,所以在上图中打印数组,看到length为0

2021-09-07 09:15:31 3221

原创 防抖debounce&节流throttle

// 防抖function debounce(fn, timeout) { let timer = null return function () { if (timer) { clearTimeout(timer) } timer = setTimeout(fn, timeout) }}// 节流function throttle(fn, timeout) { let loading = false return function () {

2021-09-06 15:33:29 64

原创 Vue-双向数据绑定的实现

前言一、概念Vue的双向绑定,指的是在MVVM模型中:1. 从model数据模型(包括初次数据的渲染) => view视图的更新;2. 从view视图(比如用户操作) => model数据模型的更新。二、思路1.以Object.defineProperty() 为核心,实现modal更新时的数据拦截;modal更新时采用订阅/发布者模式,实现一对多,从modal到多个view的数据更新。2.在编译函数中,对双向绑定的node节点(view)使用addEventListene

2021-09-06 14:16:24 259

原创 JavaScript-作用域下var/let的区别-学习验证

前言在官方文档处学习了JS作用域后,总觉得理解的不够全面,博客翻了一大堆但仍然存在一些漏洞,希望尽可能多验证完善。作用域的问题离不开变量提升,可参考另一篇文章记录了我学习→变量提升的过程。ES6之前只有全局作用域和函数作用域的概念,ES6新增块级作用域,推荐使用let & const局部变量。本文以区分var 和 let为目的出发,讲解两种声明关键字在作用域下的区别。当然,本文提到的概念还是比较浅的,更深层次的概念还是推荐去官方文档进行完整的学习。一、使用var关键字声明看示例1:v

2021-08-30 13:48:08 152 1

原创 JavaScript-变量提升-var-function-class-学习验证

一、var let变量提升二、function函数提升三、class提升持续更新中~

2021-08-30 11:06:24 92

原创 01背包问题

题目一共有N件物品,第i(i从1开始)件物品的重量为weights[i],价值为values[i]。在总重量不超过背包承载上限size的情况下,能够装入背包的最大价值是多少?思路dp[i][j]代表前i个物品在容量j背包下的最大价值1.第i个物品无法放下dp[i][j] = dp[i - 1][j] // 前i-1个物品在j容量下的dp2.可以放下a.放下了dp[i][j] = dp[i - 1][j - weights[i]] + values[i] // 前i-1个物品在j-weig

2021-08-20 17:33:32 60

原创 LeetCode416. 分割等和子集

题目:思路背包问题:有一个容量为 V 的背包,和一些物品。这些物品分别有两个属性,体积 w 和价值 v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。本题是简单的背包问题,只需要考虑将物品分成两个背包,使价值相等,无体积限制。具体每个步骤看代码注释,写的很清楚~提交 /** * @param {number[]} nums * @return {boolean} */ var canPartition = function(nu

2021-08-19 10:53:03 49

原创 HJ108 求最小公倍数

题目:思路:公共除数之积 * 各自余数之积提交:let linewhile ((line = readline())) { let arr = line.trim().split(' ') let a = Number(arr[0]) let b = Number(arr[1]) let t = 1 let length = a < b ? a + 1 : b + 1 for (let i = 2; i < length; i++) {

2021-08-17 16:34:00 137

原创 HJ103 Redraiment的走法(梅花桩走法DP)

题目:思路:不论从哪开始走,第一步值为1dp = [1]针对一根桩子,往前看,第i根桩子的步数必然是前面比它矮的最近一根的步数 + 1状态转移方程:当arr[i] > arr[i - 1]时,必然有dp[i] = dp[i - 1] + 1提交:let lengthwhile (length = Number(readline())) { let arr = readline().trim().split(' ').map(item => Number(item))

2021-08-17 16:33:43 573

原创 HJ102 字符统计(先按出现次数排序,再按ASCII码排序)

题目:思路:先生成字典以字典对应值的次数作为数组index将相同次数的值放一块并排序倒叙输出数组提交:let linewhile (line = readline()) { let length = line.length let obj = {} for (let i = 0; i < length; i++) { if (obj[line[i]]) { obj[line[i]]++ } else {

2021-08-17 16:33:18 157

原创 HJ99 自守数

题目:思路:讨论区看到的,变量base取余(i * i % base === i)就用的很巧妙,学习一下提交:let linewhile (line = Number(readline())) { let base = 10 let count = 0 for (let i = 0; i <= line; i++) { if (i === base) { base *= 10 } if (i

2021-08-17 16:32:55 145

原创 HJ94 记票统计

题目:思路:先按候选人生成字典并给初始值后输入的取字典里找,找不到就是不合格的票找到了字典+1提交:let linewhile(line = Number(readline())) { let persons = {} readline().trim().split(' ').forEach(item => { persons[item] = 0 }) let line2 = Number(readline()) let inva

2021-08-17 16:32:37 104

原创 HJ93 数组分组(递归,DFS)

题目:思路:现在需要让arr3和arr5两个数组中的和相等,就需要将other数组中的数分配到两个数组中,假设分配x到arr5中,分配y到arr3数组中,那么需要满足如下关系式。需要满足公式:1:sum5 + x = sum3 + y2:x + y = othersum转换得到:1:sum5 - sum3 = y - x2:other = x + y两个公式相加:sum5 - sum3 + other = 2*y进一步可以推出:y = (sum5 - sum3 + othe

2021-08-16 15:21:46 299

原创 HJ91 走方格的方案数

题目:思路:状态转移方程:f(x, y) = f(x-1, y) + f(x, y-1)let linewhile(line = readline()) { let arr = line.split(' ').map(item => Number(item)) let dp = [] for (let i = 0; i <= arr[0]; i++) { dp[i] = [] for (let j = 0; j <= arr

2021-08-16 15:21:29 369

原创 HJ71 字符串通配符

题目:思路:有意思的地方在于利用RegExp构造函数生成我们的新正则提交:let linewhile(line = readline()) { let str = readline() let exp = line.replace(/\./g, '\.') .replace(/\*/g, '[a-zA-Z0-9\.]*') .replace(/\?/g, '[a-zA-Z0-9\.]*')// console.log(1, exp) let r

2021-08-16 15:20:35 350

原创 HJ68 成绩排序

题目:思路:难点在于排序后相同分数要按输入顺序输出自己手写一个排序方法,每次找到第一个最小/大的,存起来,再将剩余的继续排序(递归)提交:while(line = Number(readline())) { let isFromLowToHeight = Number(readline()) let grades = [] for (let i = 0; i < line; i++) { grades.push(readline().trim().

2021-08-16 15:20:20 340

原创 HJ64 MP3光标位置

题目:let totalNumwhile(totalNum = Number(readline())) { let optArr = readline().trim().split('') let currentIndex = 1 let screenHeight = totalNum < 4 ? totalNum : 4 let screenStart = currentIndex let screenEnd = screenStart + scree

2021-08-16 15:20:05 118

原创 HJ63 DNA序列

题目:思路:遍历,每次取相应长度的字串并计算比值,如果为1立即退出提交:while(line = readline()) { let totalLength = line.length let subLength = Number(readline()) let subStrObj = {} let maxGCTimes = 0 let maxGCStr = '' for(let i = 0; i < totalLength; i ++) {

2021-08-16 15:19:50 189

原创 HJ61 放苹果

题目:思路:状态方程:m为苹果数量,n为盘子数量针对盘子,是否有一个为空可发现:dp(m,n)=dp(m, n -1) + dp(m - n, n) // 第n个盘子是否为空+各个盘子均放了一个提交:while(line = readline()) { let arr = line.split(' ').map(item => parseInt(item)) // m为苹果数量 n为盘子数量 function dp(m, n) { // 苹果不

2021-08-16 15:19:23 108

原创 HJ60 查找组成一个偶数最接近的两个素数

题目:思路:循环2-num/2,分别检验每个item及(num-item)是否是素数,再在循环中找最小差值提交:while(line = Number(readline())) { // 先求出素数列表 let list = [] function isPrime(value) { if (value <= 2.) return true let flag = true for (let i = 2; i <= M

2021-08-16 15:19:02 149

原创 HJ59 找出字符串中第一个只出现一次的字符

题目:思路:将输入字符串生成字典,再找次数最小的提交:while(line = readline()) { let obj = {} for (let i = 0; i < line.length; i++) { if(obj[line[i]]) { obj[line[i]].push(line[i]) } else { obj[line[i]] = [line[i]] }

2021-08-16 15:18:47 123

原创 HJ53 杨辉三角的变形

题目:提交:while(line = Number(readline())) { let arr = new Array(line) for (let i = 0; i < line; i ++) { arr[i] = [] if (i === 0) { arr[0][line - 1] = 1// console.log(arr[i]) continue }

2021-08-16 15:18:28 206

原创 HJ52 计算字符串的距离(编辑距离)

题目:思路:lev[i][j]用来表示字符串a的[1…i]和字符串b[1…j]的levenshtein距离;插入和删除操作互为逆过程:a删除指定字符变b等同于b插入指定字符变a;如果a[i] == b[j],则说明a[i]和b[j]分别加入a,b之后不会影响levenshtein距离,lev[i][j] = lev[i-1][j-1] + 0;如果a[i] != b[j],则需要考虑3种情况的可能:a中插入字符b[j],只需计算当前1步 + a的[1…i - 1]与b[1…j]的levensh

2021-08-15 10:31:37 415

原创 HJ43 迷宫问题

题目:分四个方向分别递归,递归结束的条件就是走到最后一个,存储min(当前路径,已存路径)提交:while ((line = readline())) { const arr = line.split(' ').map(item => Number(item)) const rowNum = arr[0] const columnNum = arr[1] const maze = [] for (let i = 0; i < rowNum; i+

2021-08-15 10:31:08 235

原创 HJ41 称砝码

题目:思路:简单的组合问题,循环遍历每一项,与现有的组合,遍历组合成新的数组,将结果加入现有组合提交:while(line = readline()) { const num = Number(line) const weights = readline().split(' ').map(item => Number(item)) const nums = readline().split(' ').map(item => Number(item)) let

2021-08-15 10:30:56 172

原创 HJ37 统计每个月兔子的总数

题目:思路:1 2 3 4 51 1 2 3 5斐波那契数列dp[i] = dp[i - 1] + dp[i - 2]提交:while(line = Number(readline())) {// 递归// function getCurrentMonthNum(month) {// if (month <= 2) {// return 1// } else {/

2021-08-15 10:30:44 96

原创 HJ35 蛇形矩阵

题目:思路:arr[i][j] = arr[i][j - 1] + j + 1 + i找到规律即可提交:while(line = readline()) { let arr = new Array(Number(line)).fill([]) for(let i = 0; i < Number(line); i++) { arr[i] = new Array(Number(line)).fill('') if (i === 0) {

2021-08-15 10:30:26 109

原创 HJ30 字符串合并处理

题目:思路:注意进制转换Number(‘0x’ + newStr[i]).toString(2)Number(‘0b’ + reverseValue).toString(16)提交:while(line = readline()) { let str = line.replace(/\s/g, '') let str1 = '', str2 = '' for(let i = 0; i < str.length; i++) { if(i % 2 ==

2021-08-15 10:29:43 108

原创 HJ27 查找兄弟单词

题目:思路:并不需要先列出所有的兄弟单词给了6个单词就把每个单词打散排序作为字典key,这样就筛选出来比如:{abc: 【xxx,xxx】ac:【xx, xx】}只需要将关键的单词作为key,在对象中找到并按要求输出即可,不需要他自己提交:while(line = readline()) { const [num, ...rest] = line.split(' ') const wordsLength = Number(num) const words = r

2021-08-15 10:29:30 200

原创 HJ26 字符串排序

题目:思路:将字母提出来生成排序后的字符串遍历原字符串找到所有字母并逐一替换提交:while(line = readline()) { let arr = new Array(26).fill('') line.split('').forEach(item => { if (/[a-zA-Z]/.test(item)) { arr[item.toLowerCase().charCodeAt(0) - 97] += item

2021-08-15 10:29:15 115

数字图像处理使用matlab进行噪声过滤

数字图像处理使用matlab进行噪声过滤,内含高斯噪声及椒盐噪声,运用各种算子进行过滤的效果对比,以及详细的实验报告

2019-01-26

数字图像处理使用matlab进行算子锐化

数字图像处理使用matlab进行算子锐化,各种算子Sobel,Robert,Prewitt,拉普拉斯.m源文件及详细实验报告

2019-01-26

数字图像处理使用matlab进行几何变换

数字图像处理使用matlab进行几何变换,内含.m源代码及详细实验报告

2019-01-26

监控IP数据包流量

用vc++编写的IP数据包流量的监控,使用方法:先自行安装wincap(网上很多),将工程文件exe拖入cmd,即可按照提示监控IP包流量。

2019-01-26

发送和接收TCP数据包的客户端和服务器

内含工程文件,客户端和服务器端exe文件,流程图。 注意,vs2017一下版本需要手动导入代码。

2019-01-26

线框球体,地理划分,xyz轴旋转,消隐纹理光照放大等等效果实现

线框球体,地理划分,xyz轴旋转,消隐纹理光照放大等等效果实现 注意,压缩包是工程文件,用vs2017编写,较低版本需要手动重新将代码导入

2019-01-26

数字逻辑电子门锁的课程设计

内含Verilog语言写的所有相关代码,及课程设计报告心得体会。

2019-01-26

通讯录的php网页及数据库 课程设计

课设题目:通讯录,使用MySQL建的数据库,php写的网页,内含网页所有php及图片等等,sql数据库文件,以及课设报告

2019-01-26

MFC框架下的通讯录 面向对象程序设计课程设计

用vs2010写的工程文件,2010以上版本都可以打开运行无误,面向对象程序设计的思想,内含工程文件及课程设计报告

2019-01-26

基于链表的列车站点信息系统数据结构课设

基于链表结构的列车站点信息管理信息系统,内含无误cpp源文件,列车信息文本文件,课程设计报告心得体会

2019-01-26

学生信息管理系统源代码及报告

C++编写的单文档简单的学生信息管理系统,完整无误的源代码cpp文件,及课程设计的报告新得体会等等

2019-01-26

空空如也

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

TA关注的人

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