- 博客(140)
- 资源 (32)
- 收藏
- 关注
原创 闭包的产生和问题
在闭包就是在函数里面声明函数,实际开发中主要应用于封装变量,保护变量不受外界污染,也相当于是在函数作用域里面再声明一个内部作用域,这样执行结果拿到的变量都是不同的,拿的就不是全局变量函数和对其周围状态的引用捆绑在一起构成闭包,就是一个函数可以访问另一个函数里的变量,闭包是一种现象,发生过程:某函数执行时,里面有函数被定义,并被返回作为参数被传入 作为返回值被返回,总之被定义和执行的地方不一样应用隐藏数据通常,函数的作用域及其所有变量都会在函数执行结束后被销毁。
2022-09-29 14:43:10
1427
1
原创 原型和原型链
当试图访问一个实例的属性/方法时,它首先搜索这个实例本身;当发现实例没有定义对应的属性/方法时,它会转而去搜索实例的原型对象;如果原型对象中也搜索不到,它就去搜索原型对象的原型对象,这个搜索的轨迹,就叫做原型链。:在访问一个实例的时候,如果实例本身没找到此方法或属性,就往原型上找。如果还是找不到,继续往上一级的原型上找。就是利用原型让一个引用类型继承另一个引用类型的属性和方法;,该原型对象中的方法和属性,可以被所有的原型实例共享。Object是原型链的顶端。,通过原型链,找到它上面的。
2022-09-29 14:41:34
1340
原创 前端笔试记录
obj已经指向新的内存地址{num2:935},但是因为先从左往右解析了变量,所以前面的obj还是之前obj指向的那个内存地址,也就是res指向的内存地址,所以前面的obj.child实际上是给res.child赋值。先从左往右解析变量,{num1:117}.child={num1:117}={num2:935},所以我们主要看obj.child = obj = {num2: 935}这一句。从右往左赋值,{num1:117}.child={num2:935}
2022-09-21 11:41:23
1242
原创 面经02-深信服面试
都是手撕代码的读代码的题,有些难度。5.实现盒子居中,叉叉按钮在右上角。3.闭包读 let var。2.手写代码数字去重。2).for循环优化。考关于this的指向。
2022-09-13 21:55:28
353
原创 面经01-CET中电技术
7.position介绍relative和absolute等。偏向聊天,主要是询问职业规划,问了一点技术问题。7.有没有当过团队的leader,怎么分配任务。2.自己的能力与岗位是否匹配?(两轮,下一轮就是hr面了。15.v-if和v-show 区别。10.const var和let。9.python语言和JS的区别。5.普通函数和箭头函数的区别。4.选择器和优先级 优先级。19.get和post区别。10.C++和JS的区别。9.普通函数和箭头函数。14.vue 生命周期。22.为什么要学习前端。
2022-09-13 21:50:53
1155
原创 JS基础知识
Day1:获取元素方式document.getXX事件三要素事件源 按钮事件类型 点击事件处理程序 函数<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="widt
2022-09-13 21:39:51
904
原创 计算机基础知识
1.基础知识网络结构四层,五层,七层的对比以及作用TCP/IP:应用层,传输层(TCP,UDP),网络层(IP),网络接口层(数据链路层,物理层(去除信号和媒介的影响,不让其对数据链路层有影响))转发方式(三种,优缺点)指标:计算发送时延和传播时延2.物理层信息交互:单工通信(广播),双向通信(半(对讲机,不能同时接受和发送)双(普通电话)工通信)信号在信道上传输就要调制信道复用传输媒体:导引型传输媒体(有线),非导引型(无线)宽带接入:ADSL,FTTx计算:香农格式,信噪比..
2022-09-13 21:31:34
581
原创 CSS基础
是让盒子居中,不是让盒子里的文本居中。文本的居中,要使用text-align:center;两个盒子区别在于width和height的包不包括padding和border,所以外间距margin不包括在盒子内。BFC就是一个独立的容器,不应该受到外部的影响,比如margin塌陷什么的,只计算一个margin-top。区分 line-height,vertical-height,align-items。转换:display:inline 转成行内 block。margin-left:负的宽度的一半。
2022-09-13 21:13:33
197
原创 Git操作
1.git的状态git status 2.本地暂存git add .git commit -m "add files" 3.同步至仓库,在gitee的上复制就会存到giteegit remote add origin https://gitee.com/xuliu1/vue2_shop.gitgit push -u origin "master"4.建立分支
2022-09-13 21:08:43
213
原创 二刷算法记录
s=s.join(’ ‘)连接会加上空格,因此就直接把所有空格去掉然后再用s=s.join(’ ')加上单词会出现的字符。有两步比较关键:i
2022-09-13 21:05:23
190
原创 回溯算法模板
leetcode77从前n个数中挑两个数var combine = function(n, k) { const combineHepler = (n,k,startIndex)=>{ for (let i = startIndex; i <= n-(k-path.length)+1; ++i) { //startIndex开始序列 path.push(i); combineHepler(n, k, i + 1);
2022-05-23 10:21:43
924
1
原创 leetcode701:二叉搜索树的插入操作
思路递归的思路去解决,按二叉搜索树的顺序 遍历遇到空节点插入1.终止条件遍历的节点为空2.单层递归逻辑搜索树是有方向了,可以根据插入元素的数值,决定递归方向JS语言var insertIntoBST = function(root, val) { const SetInorder = function(root, val){ if(!root){ let node = new TreeNode(val); return .
2022-05-13 19:25:09
203
原创 leetcode235:二叉搜索树的最近公共祖先
思路因为二叉搜索树是有序的,所以和上一题还是不一样1.确定终止条件遇到空返回2.确定单层递归的逻辑在遍历二叉搜索树的时候就是寻找区间[p->val, q->val](注意这里是左闭又闭)那么如果 cur->val 大于 p->val,同时 cur->val 大于q->val,那么就应该向左遍历(说明目标区间在左子树上)。JS语言var lowestCommonAncestor = function(root, p, q) { const travle
2022-05-13 14:10:56
124
原创 leetcode501:二叉搜索树的众数
思路1先存成有序数组然后算众数,这里的小技巧就是遍历的时候加count,能极大缩减时间。计算数组中最多的数,可以用map也尝试一下JS语言var findMode = function(root) { let arr=[] const buildtree = function(root){ if(root){ buildtree(root.left); arr.push(root.val); b.
2022-05-11 10:47:08
203
原创 leetcode530:二叉树搜索树的最小绝对值
思路和验证二叉搜索树一样思路先转换为有序数组,然后再算相邻数组值的最小差值JS语言var getMinimumDifference = function(root) { let arr=[] const buildtree = function(root){ if(root){ buildtree(root.left); arr.push(root.val); buildtree(root.right); .
2022-05-09 10:38:38
236
原创 Leetcode98:验证二叉搜索树
思路将二叉树变成一个有序数组比较JS语言var isValidBST = function(root) { let arr=[]; const buildtree= function(root){ if(root){ buildtree(root.left); arr.push(root.val);//有序数组 buildtree(root.right); } } buildtre.
2022-05-09 10:11:11
912
原创 leetcode700:二叉搜索树的搜索
思路首先介绍一下二叉搜索树二叉搜索树是一个有序树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树采用递归思路1.终止条件如果root为空,或者找到这个数值了,就返回root节点2.单层递归如果root.val>val,说明val在root左边,于是在左边节点查找反之,如果root.val<val,说明val在root右边,于是在右边节点查找JS语言var .
2022-05-08 10:13:39
301
原创 leetcode654:最大二叉树
思路采用递归1.终止条件:遍历到了叶子节点递归停止,此时数组下标left>right2.单层递归:1)要找到数组中最大的值和对应的下标, 最大的值构造根节点,下标用来下一步分割数组。2)左右节点递归。JS语言var constructMaximumBinaryTree = function(nums) { var buildtree= function (arr,left,right){ if(left>right){ return
2022-05-07 10:35:56
1357
原创 leetcode106:从中序与后序遍历序列构造二叉树
思路中序:左中右后序:左右中JS语言var buildTree = function(inorder, postorder) { if(!inorder.length) return null; const rootval = postorder.pop();//取后序的最后一个 let rootIndex = inorder.indexOf(rootval);//在中序中排列 const root = new TreeNode(rootval);//中间节点
2022-05-06 10:29:37
309
原创 leetcode113:路径总和2
思路和112不同的点在于返回值的变化,仍然用递归的思想终止条件:叶子节点且cnt为0,说明它是路径总和,将path路径存到res,如果cnt不为0,则说明该路径不是JS语言var pathSum = function(root, targetSum) { let res=[]; const travels=function(root,cnt,path){ if(!root.left&& !root.right&&cnt==0){
2022-05-05 10:15:13
141
原创 leetcode112:路径总和
思路采用递归1.判断终止条件到达叶子节点且targetSum=0即有一条路径符合,因为最后都减到0了,返回true,否则到达叶子节点但targetSum不为0则返回false)2.确定单层递归如果左节点不为空,就从左边遍历,反之则从右边,有回溯的思想在里面,将左边用回溯的思想写就是这样if (root.left) { // 左targetSum -= root.left.val; // 递归,处理节点;if (traversal(root.left, targetSum)) return t
2022-05-04 21:38:15
287
原创 Leetcode513:找树左下角的值
思路这里利用套用层序遍历的模板去做,然后取最后一层的第一个元素JS语言var findBottomLeftValue = function(root) { let res=[],queue=[] queue.push(root) if(root===null){ return res; } let resNode; while(queue.length){ // let curlevel=[]; let l
2022-05-04 09:48:53
214
原创 102:二叉树的层序遍历
模板JS语言var levelOrder = function(root) { //用队列解决 let res = [], queue = [] queue.push(root) if (root==null) return res while(queue.length!==0){ let length=queue.length//当前的节点长度 let curlevel=[] for(let i=0;i<lengt
2022-05-03 21:24:58
1014
原创 leetcode404:左叶子之和
思路左叶子的定义就是左节点不为空且没有左右孩子可以采用递归来解终止条件就是节点为空单层递归条件是左节点不为空而且左右孩子的值为空python语言class Solution(object): def sumOfLeftLeaves(self, root): """ :type root: TreeNode :rtype: int """ if not root: #终止条件 retur
2022-05-03 10:23:00
1067
原创 二叉树知识
1.前中后序遍历主要是根据父节点的位置来定的前序:中左右中序:左中右后序:左右中终止条件:root=null以前序为例var preorderTraversal = function(root) { let res=[] const dfs = function(root){ if(root==null) return; //递归左节点 res.push(root.val)//中 dfs(root.left)//左
2022-04-30 19:17:09
679
原创 Leetcode题目总结(JavaScript)
最近跟着代码随想录刷算法题有点入迷,不知道大学在干嘛,都没怎么刷过题。。。接下来对近段时间刷的数组题做一个总结,全部都是Javascript写的。704.二分查找关键词:有序数组/** * @param {number[]} nums * @param {number} target * @return {number} */var search = function(nums, target) { let left =0, right= nums.length-1; w
2022-04-08 22:26:03
2026
原创 正则表达式字符数字匹配
基础知识数字:[0-9]或者[\d],不止一个就用+字母:[a-z]或者[A-Z]区分大小写|:或的意思工具在线测试网站拿不准的先可以测试一下,输入输出如下:实战改名字,其中注意正则式的小括号括起来的才可以被得到数据,然后通过m.group得到 if ( int(dir) == 2018): os.chdir(path1) names = os.listdir(dir) # 2018_c20IMG20220404185814_0
2022-04-08 21:40:27
1620
原创 RuntimeError: Error(s) in loading state_dict for ResNet50:size mismatch for classifier.weight
问题思路加载的模型的分类器和现在训练的分类不一致解决问题把分类器那里改成一样的就好了# model = models.init_model(name=args.arch, num_classes=dataset.num_train_pids, loss={'xent', 'htri'}) model = models.init_model(name=args.arch, num_classes=767, loss={'xent', 'htri'})这种改法就比较简单粗暴了,可能会有更巧妙
2022-03-29 09:37:12
2243
原创 TypeError: only integer scalar arrays can be converted to a scalar index
解决思路类型错误:只有整数标量数组才能转换为标量索引。这应该是最新版本的python、numpy的问题。版本升级,有些方法已经发生改变,使将单个元素数组作为标量进行索引成为一个错误。解决步骤原来q_pid = np.array(q_pids)[q_idx] q_camid = q_camids[q_idx] # remove gallery samples that have the same pid and camid with query or
2022-03-29 09:27:50
3457
原创 Python脚本25:将两张图片拼在一起
import PIL.Image as Imageimport os# from IPython import embed# embed()# 定义图像拼接函数def image_compose(imag, imag_1): src = os.path.join(os.path.abspath(IMAGE_SAVE_PATH), img) to_image = Image.new('RGB', (2 * h, 1 * w)) # 创建一个新图 # 把两张图片按顺序粘贴到
2022-03-27 09:24:43
2361
原创 matlab脚本001:将图片利用伽马矫正调暗
close all;% filepath='/home/xl/workstation/Datasets/DukeMTMC-reID/bounding_box_train/';filepath='/home/xl/workstation/Datasets/cuhk03/images_detected/';file =dir(strcat(filepath,'*.png'));[k ~]=s
2022-03-27 09:22:03
3024
原创 Leetcode011:加一
题解思想直接加一后,但是有特殊情况,比如尾部是9,需要进位。所以这里比较难的是从尾部读取,range(len(digits)-1,-1,-1)表示从len(digits)-1开始,注意递减,递减至-1代码class Solution(object): def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int] """ #一种倒.
2022-03-23 16:53:07
332
原创 Leetcode010:最后一个单词的长度
题解思想很自然的就想到了通过空格切割句子,把它切成单词存到数组中,然后求数组的最后一个元素的长度,但是要注意需要把空格过滤掉代码class Solution(object): def lengthOfLastWord(self, s): """ :type s: str :rtype: int """ str_list = filter(None,s.split(" ")) return len.
2022-03-23 15:03:34
276
原创 Leetcode009:最大子数组和
题解思想遍历,如果它的和小于0,那就对后面的数和是副作用,肯定没戏,所以进行重置。然后再求最大值代码class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ temp=0 max=nums[0] for num in nums: ..
2022-03-23 14:05:02
97
原创 前端001:登录页面静态
在views/login的index.vue下的文件1.添加元素(表单,图标,按钮)<template> <div class="login-container"> <el-form ref="formRef" :model="form" class='login-form' > #class <div class="title-container"> <h3 class="title">用户登录&
2022-03-22 21:53:11
1117
原创 Leetcode008:搜索插入位置
题解思想因为是已经排好序的,利用二分法来搜索,把一些排序算法和搜索算法可以复习一下代码class Solution(object): def searchInsert(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ # 初始化 low,high=0,len(nums).
2022-03-22 15:27:49
99
原创 Leetcode007:实现strStr()
题解思想两种特殊情况 :1)needle not in haystack 2) needle ==’’排除掉之后寻找needle是否在haystack中思路非常简单,但是耗时也耗内存,之后可以继续优化利用Python的find方法,return haystack.find(needle)还有一个KPM模式化匹配字符串的算法,有点难有时间可以看看代码class Solution(object): def strStr(self, haystack, needle): .
2022-03-21 20:56:12
427
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人