自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 Vue Mastery - 响应式原理

Vue3 Reactivitylet price = 5let quantity = 2let total = 0let dep = new Set()let effect = () => { total = price * quantity}function track() { dep.add(effect)}function trigger() { dep.forEach(effect => effect())}track()effe

2021-12-01 09:25:18 1306 2

原创 刷题随记 - 11.二叉搜索树相关

参考:公众号:labuladongleetcode 230. 二叉搜索树中第K小的元素直接中序遍历,即可升序遍历二叉搜索树的所有节点。var kthSmallest = function(root, k) { let index = 0 let result = 0 function traverse(root, k){ if(root == null){ return null } traverse(ro

2021-06-18 12:39:48 218 2

原创 前端随记 - JS中函数参数传递 值传递、引用传递问题

参考:https://www.cnblogs.com/leezhxing/p/4105315.html值传递对于普通类型的值,比如StringNumberSymbolUndefinedBooleanNull函数传参就是值传递,不会改变值引用传递这里要明确一点,和c、c++ 不同,不能一直以指针的概念来理解JS。JS没有指针,那么,你在函数中引用参数的时候,直接修改引用对象本身(下面例子中 obj 所指的值)是无效的。只能修改引用对象中的属性,可以动态增加,动态删除。但只能是属

2021-06-17 17:18:34 407

原创 前端随记 - 依赖注入、刷新表格,生命周期小结

① 依赖注入参考:https://blog.csdn.net/qq_16772725/article/details/80467492provide / inject 组合:父组件:provide,提供一个方法或者属性等子组件:使用 inject 调用。② 刷新表格v-model 重新调用表格数据接口,刷新表格 <Button @click="modalAdd = true">添加</Button> <Modal v-model="mo

2021-06-16 19:08:28 201

原创 刷题随记 - 10. 寻找重复的子树(652)

LeetCode 652 mediumhttps://leetcode-cn.com/problems/find-duplicate-subtrees/参考:公众号 labuladong思路将二叉树序列化将左右子树序列化后的结果,和根节点相加,就知道自己长什么样子放到 Map 中比较,如果存在,则将根节点指针 保存一次var findDuplicateSubtrees = function(root) { let nodeArray = [] let nodeMap = n

2021-06-11 16:15:01 114 1

原创 刷题随记 - 9. 从遍历顺序构造二叉树(105,106)

LeetCode 105 106 mediumhttps://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/参考:公众号 labuladong记录的原因,是没有加 base case 导致报错。var buildTree = function(preorder, inorder) { // base case 很关键,不加会报错 if(preorder.lengt

2021-06-11 11:52:57 89 1

原创 刷题随记 - 8. 构造最大二叉树(654)

LeetCode 654 mediumhttps://leetcode-cn.com/problems/maximum-binary-tree/思路找最大值找最大值下标用最大值下标分别构建出子数组,递归调用根节点的操作就是构建节点解题var constructMaximumBinaryTree = function(nums) { if(nums.length === 0){ return null } let maxNumber = Math.

2021-06-11 11:20:39 106 1

原创 刷题随记 - 7. 填充二叉树节点的右侧指针(116)

leetcode 116 mediumhttps://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/参考:公众号 labuladong最主要是 5 和 6 没办法直接相连,因此,设置了辅助函数function connectTwoNode(node1, node2){ if(node1 == null || node2 == null){ return null }

2021-06-11 11:14:12 104 1

原创 刷题随记 -6. 将二叉树展开为链表(114)

LeetCode 114 mediumhttps://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/参考:公众号 labuladong思考:需要先将左右节点拉平然后根节点的操作就是将左右节点对换解题:var flatten = function(root) 函数声明因此,写出代码:var flatten = function(root) { if(root == null){ retur

2021-06-11 11:10:51 94 1

原创 刷题随记 -5. 二叉树的前序遍历

LeetCode 144. 二叉树的前序遍历 easy主要是记录JS 的作用域的问题JS 闭包的使用坑:由于 result 的作用域是全局作用域,因此,如果不限制作用域的话,就会导致 result 内容越来越多。解决:使用闭包,限制 result 的作用域var preorderTraversal = function(root) { let result = [] // 使用闭包来限制result的作用域,因为如果不用 // 多次调用的时候,result 初

2021-06-10 21:28:02 118

原创 刷题随记 - 4. 回文链表

LeetCode 234 难度 easy参考:公众号 labuladong 如何高效判断回文单链表?判断回文链表①隐式地调用系统的栈来实现双指针神奇的思路,利用 链表的后序遍历框架链表不像字符串一样,可以使用下标迭代,所以,无法使用双指针技巧,头尾一起迭代比较。因此,将链表全部反转,然后进行比较,是一种方法。但是,可以不用显式地反转链表。使用内存中的栈,来进行后序遍历。神奇!运用了内存中的栈,实现后序遍历,实现从尾部读取的效果!!对比二叉树的遍历框架:void traverse(T

2021-06-10 14:58:36 130

原创 刷题随记 - 3. K 个一组翻转链表

LeetCode 25 难度:hardhttps://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/参考:公众号:labuladong回去记

2021-06-10 12:55:38 113 1

原创 刷题随记 - 2. 二进制链表转整数

LeetCode 1290 :https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/自己的想法是,反转链表之后,挨个遍历,利用 Math.pow(x,y) 函数,来求值。但是空间复杂度太高,跑不通。先不纠结这个,记录的原因主要是由于自己的方法跑不通,其实他主要用的方法是数学上的,先训练递归思想方法1:paseInt()radix:基数power:幂代码:...

2021-06-09 19:20:05 120

原创 刷题随记 - 1.反转链表系列

一、 反转整个链表LeetCode 206 :https://leetcode-cn.com/problems/reverse-linked-list/① 递归实现参考:公众号labuladong箭头所指,即坑所在,报错信息,因为 空 链表没有 next 指针,所以,head == null 这个判断条件必须要在 head.next == null 前面。改为:var reverseList = function(head) { if(head == null || head.next

2021-06-09 17:47:53 127

原创 前端随记 - element-ui 实现table行合并 与 基础 table 合并

(一)基础 table 合并代码:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>test</title></head><body><div id="root"> <table border="1" width="400"> <tr&gt

2021-06-08 23:23:26 620 2

原创 epoll

首先是,创建一个epoll对象,并且用epfd指向这个对象int epfd = epoll_create1(0);之后,调用epoll_ctl,这个函数能够控制epfd指向的对象。在epfd中监听指定的fd文件描述符,并能把event和fd关联起来。struct epoll_event ev, eventArray[20]; //设置与要处理的事件相关的文件描述符ev.data.fd = this->listenFdTcp;ev.events = EPOLLIN | EPOLLET;

2021-05-16 16:19:26 108

原创 webpack学习

写在前头:对于B站上尚硅谷的webpack课程的学习笔记,推荐大家去看。vscode的使用注释 ctrl + /安装live-server代码格式化,使用alt+shift+f格式化。安装beautify设置中打开自动保存01 webpack简介通过link标签引入.less样式文件,但是无法识别,需要将.less转为.css使用npm init初始化环境安装jquery:npm install jquery --save-dev此时使用script标签引入.js文件报错,说不能从

2021-04-14 22:45:07 238

原创 Three.js为外部引入模型添加点击事件

写在前头首先是很感谢https://blog.csdn.net/ithanmang/article/details/80965712?spm=1001.2014.3001.5501这篇文章的作者,给予了指点。以下就是对于外部模型点击事件的添加过程。import错误:解决**** is not a constructor 问题处理https://blog.csdn.net/weixin_40532650/article/details/107537017计算错误:canvas的大小不是整个屏幕的

2021-04-13 19:44:25 7059 4

原创 Three.js点击事件

写在前头转载:https://blog.csdn.net/ithanmang/article/details/80897888关于点击事件的练习和书写。准备工作一、three.js运行最好搭一个服务器,不然很容易有跨域等问题。下面代码也是,如果没有服务器,你直接跑html文件,会发现很模糊。这里介绍npm搭建服务器的流程。参考:https://www.jianshu.com/p/a162131e22d0NPM全局安装npm install -g live-server使用方法:在项

2021-04-12 21:52:24 4407 1

转载 Ajax跨域问题

转载:详情请看https://zhuanlan.zhihu.com/p/57991633

2021-04-12 12:24:45 68

转载 three.js和vue.js学习 -- 创建一个3d模型demo

写在开头转载链接:https://zhuanlan.zhihu.com/p/333615381https://techbrood.com/threejs/docs属于对该项目的学习,对于其中基础部分的细分和笔记准备three的流程参考图Part1:创建项目,引入three同样使用vue-cli脚手架直接搭建vue项目cd 到当前项目目录下vue init webpack xxxxxxxx表示项目名称安装 threenpm install -D three引入threeim

2021-04-08 12:46:02 2278 3

转载 关于win10开热点手机无法连接

转载留着以后备用https://www.cnblogs.com/liangjiang/p/10414010.html

2021-04-05 17:47:35 444

原创 Leetcode刷题--654. 最大二叉树

题解参考链接:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-2这边用Python的话,可以取巧很多。给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:二叉树的根是数组 nums 中的最大元素。左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树

2021-02-05 16:09:33 203 1

原创 二叉树刷题第一部分总结

参考链接:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1首先是递归算法的核心:明确函数定义,相信这个定义,不要跳进递归细节其次关于递归框架的选择:首先要搞清楚,root节点它自己要做什么,或者说,在什么时候做,这点很关键,然后根据题目要求选择前,中,后序的递归框架还有什么心得以后补充..

2021-01-28 15:50:59 121

原创 Leetcode刷题--114. 二叉树展开为链表

题解参考:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1写树的递归,首先要想清楚使用二叉树的哪种遍历方式本题需要对最下面的子节点进行操作,而且我们操作的只能是父节点,注意,操作父节点,所以,符合要求的只能是后序遍历。树的递归操作,核心都是,在哪步操作根节点(就是合理选择前中后序遍历)给你二叉树

2021-01-28 15:45:01 174

原创 Leetcode刷题--116. 填充每个节点的下一个右侧节点指针

题解链接参考:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1难度中等,本题思想在于细分,以及树的递归模板使用写在前头递归算法的关键要明确函数的定义,相信这个定义,而不要跳进递归细节。写二叉树的算法题,都是基于递归框架的,我们先要搞清楚root节点它自己要做什么,然后根据题目要求选择使用前序,中

2021-01-26 18:07:20 115

原创 LeetCode刷题--翻转二叉树

树结构参考链接:https://blog.csdn.net/Tonywu2018/article/details/89480282题解参考:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ /

2021-01-25 16:21:21 154

原创 Leetcode刷题--101. 对称二叉树

小白一个,直接看评论区学习:附上链接题解链接:https://leetcode-cn.com/problems/symmetric-tree/solution/bfs-dui-lie-tong-shi-bao-cun-bao-cun-yao-pan-duan-/二叉树实现链接:https://blog.csdn.net/Tonywu2018/article/details/89480282import collectionsclass TreeNode(object): def __i

2021-01-25 15:04:53 150

原创 Leetcode刷题--前导篇

刷题:每天刷,可以规定一个时间,重点是每天都要刷,隔几天以后刷题的状态,对题目的敏感度就会显著下降(亲身经历!)。Leetcode不是每一题都刷,就刷LeetCode上的前几百道题。直接通过题目来学习数据结构,不要再从头到尾看一遍书以后再来刷题,没效率,没动力,太慢了。遇到不懂的,不要死磕,不要害怕看别人的题解,直接看,直接抄代码,然后理解以后,自己记忆再写一遍。不要觉得这样很差劲,想想学高数等课的时候,还不是看完例题答案,自己做一遍例题,才会写其他习题的吗?看别人的总结,做好笔记(关键)。

2021-01-25 14:56:30 131

转载 Git学习--时光机穿梭

我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容:这里修改可以用vim 文件名修改,也可以在外部使用IDE修改(linux基本命令,嫌麻烦可以先不学vim)Git is a distributed version control system.Git is free software.现在,运行git status命令看看结果:$ git statusOn branch masterChanges not

2021-01-16 19:41:14 82

转载 Git学习--创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:$ mkdir learngit$ cd learngit$ pwd/Users/michael/learngitpwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michae

2021-01-16 18:58:41 224

转载 Python学习--二叉树

先进入到git学习,然后开始Flask学习先。https://www.cnblogs.com/sfencs-hcy/p/10341449.html

2021-01-16 18:17:23 68

原创 Python学习--快排

def partition(arr, low, high): # 移动值设置 i = low - 1 # 参考值设置 pivot = arr[high] for j in range(low, high): # 这里的判断比基准值小就交换i和j if arr[j] <= pivot: i = i + 1 arr[i], arr[j] = arr[j], arr[i] # 最后还有基准值没有判断,i + 1对应的值一定比基准值大 arr[i + 1], arr[high]

2021-01-15 21:29:07 111

转载 Python学习--async/await

用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和await,可以让coroutine的代码更简洁易读。请注意,async和awit是针对coroutine的新语法,要使用新的语法,只需要做两步简单的替换:把@asyncio.coroutine替换为async;

2021-01-15 00:04:39 119

转载 Python学习--asyncio

asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。用asyncio实现Hello world代码如下:import asyncio@asyncio.coroutinedef hello(): print('Hello world!') # 异步调用asyncio.sleep(1): r

2021-01-15 00:04:34 121

转载 Python学习--协程

协程,又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回

2021-01-15 00:04:29 149 1

转载 Python学习--异步IO

在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘、网络等IO。在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时**,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO**。在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了。因为一个IO操作就阻塞了当前线程,导致其他代码无法执行,所以我们必须使用多线程或者多进程来并发执行代码,为多个用户服务。每个用户都会分配一个线程,如果遇到IO导致线程被挂起,其他用户

2021-01-15 00:04:24 205

转载 Python学习--使用模板

Web框架把我们从WSGI中拯救出来了。现在,我们只需要不断地编写函数,带上URL,就可以继续Web App的开发了。但是,Web App不仅仅是处理逻辑,展示给用户的页面也非常重要。在函数中返回一个包含HTML的字符串,简单的页面还可以,但是,想想新浪首页的6000多行的HTML,你确信能在Python的字符串中正确地写出来吗?反正我是做不到。(哈哈哈,引出了模板的必要性)俗话说得好,不懂前端的Python工程师不是好的产品经理。有Web开发的经验的同学都明白,Web App最复杂的部分就在HTML页

2021-01-15 00:04:17 256

转载 Python学习--aiohttp

asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。我们先安装aiohttp:pip install aiohttp然后编写一个HTTP服务器,分别处理以下URL:/ - 首页返回b'<h1>Index</h1

2021-01-15 00:04:02 121

转载 Python学习--使用Web框架

了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每一个HTTP请求进行响应。但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。每一个URL可以对应GET和POST请求,当然还有PUT、DELETE等请求,但是我们通常只考虑最常见的GET和POST请求。一个最简单的想法是从environ变量里提取出HTTP请求的信息,如何逐个判断:def application(environ, start_response): method = e

2021-01-14 21:17:24 108

空空如也

空空如也

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

TA关注的人

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