自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言 学习结构指针并解决合并K个升序链表

总结:结构体的存在,同时利用指针,给予了程序员很大的创造空间。在学习C语言过程中,会发现C语言选择相信程序员,特别是性能方面,需要程序员自己去考虑问题,程序也许能跑起来,结果错的离谱是常有的事,所以需要把基础打好。但是最大的不同就是C语言拥有强大指针,而js是没有的,所以操作结构体的方式是灵活多变的,当我们想要对结构体本身进行操作时可以选择传入结构指针,如果只是需要用到结构体,那直接传结构体(在学习了结构体之后,试着利用C语言来解决链表问题(这和平时使用的js访问方式也是类似的。

2022-12-26 18:24:57 189 1

原创 最长回文子串

最长回文子串(提供点想法,因为需要了解的点可能比较多)这道题其实与最长重复子数组那道题有点类似,之所以这么说是因为可以将原字符反转过来,然后找到两个字符串的最长公共子串其实就解决了一大半了(创建一个dp,然后dp[i][j]用于记录当前子串最长的长度,如果两个字符串当前的值不相等记录dp[i][j]=0),唯一棘手的是最长公共子串不一定是最长的回文子串,判断方法思路是在这里找到的,确实比较反人类。。。var longestPalindrome = function (s) { const rev

2021-10-23 18:20:29 155

原创 37. 解数独(js)

首先我们从题中规则可以看出它的限制条件,那么我们先把它的限制条件写出来: const isValid = (row, col, val) => { //首先我们可以计算出它在3x3宫格内的第一个数字的位置 const r = row - Math.floor(row % 3); const c = col - Math.floor(col % 3); for (let i = 0; i < 9; i++) {

2021-07-24 20:21:55 361

原创 54. 螺旋矩阵(js)

学习算法,锻炼自我!记录自己的成长过程!var spiralOrder = function (matrix) { const map = (matrix,res) => { for (let i = 0; i < matrix.length; i++) { if (i === 0) { //首先看图可以发现第一行可以直接要的 res = res.concat(matrix[i]);

2021-07-24 19:56:56 220

原创 150. 逆波兰表达式求值(js)

学习算法,锻炼自我!记录自己的成长过程!根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。这道题可以利用栈来做,碰到数值直接push进去,而当碰到运算符,我们就从栈中pop出数值进行计算,然后再将计算的值push进去。最后栈只剩下最后一个值,它就是最后的结果var evalRPN = function (tokens) { const stack = []; for (let i = 0; i < tok

2021-05-29 11:55:00 118

原创 71. 简化路径(js)

学习算法,锻炼自我!记录自己的成长过程!给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。这道题其实只要思路想通,其实代码挺好理解,利用栈就能实现var simplifyPath = function (path) { const stack = []; const arr = path.split("/"); for (let t of arr) { //当t为".."时

2021-05-29 11:33:15 200

原创 199. 二叉树的右视图(js)

学习算法,锻炼自我!给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。这道题使用广度优先遍历比较合适,同时需要注意的是应该先遍历右子节点然后再遍历左子节点var rightSideView = function (root) { if (!root) { return []; }; //队列存储当前节点,并且记录是第几层 const queue = [[root, 0]]; const res = []

2021-05-29 11:04:28 159 1

原创 450. 删除二叉搜索树中的节点(js)

学习算法,锻炼自我!记录自己的成长过程!给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用var deleteNode = function (root, key) { if (!root) { return root; }; //合并节点的方法 const mergeNode = (node) => { //首先

2021-05-29 10:47:27 107

原创 236. 二叉树的最近公共祖先

学习算法,锻炼自我!记录自己的成长过程!给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。这道题的解法有点不好想,先逐行解释一下var lowestCommonAncestor = function (root, p, q) { //2.找到p,q节点直接返回p,q节点 //或者当遍历到 null 节点,空树不存在 p 和 q if (!root || root === p || root === q) { return root; }; //1.

2021-05-22 20:51:13 49

原创 101. 对称二叉树

学习算法,锻炼自我!记录自己的成长过程!给定一个二叉树,检查它是否是镜像对称的。这道题的难度为简单,有些时候我很好奇为什么有些时候简单的题会比中等的题更不好想呢。言归正传,这道题还是使用广度优先遍历比较好解决,我们只需要比较当前一层就行了var isSymmetric = function (root) { if (!root) { return 0; }; const queue = [root.left, root.right]; while (

2021-05-22 20:17:14 45

原创 110. 平衡二叉树

学习算法,锻炼自我!记录自己的成长过程!给定一个二叉树,判断它是否是高度平衡的二叉树。这道题我个人觉得主要在于如何获取高度,递归遍历每个节点来获取当前节点,而在此使用广度优先遍历在每一层级遍历完之后高度+1的方式来计算当前节点的左右高度,var isBalanced = function (root) { if (!root) { return true; }; //使用广度优先遍历来计算高度 //当遍历完一层之后高度+1 const get

2021-05-22 19:37:59 93 3

原创 129. 求根节点到叶节点数字之和

学习算法,锻炼自我!记录自己的成长过程!给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。4->9->5 4954->9->1 4914->0 40结果:495+491+40=1026这道题需要用到广度优先遍历,因为它其实

2021-05-22 17:58:45 198

原创 437. 路径总和 III

学习算法,锻炼自我!记录自己的成长过程!给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。这道题与112,113相似,但是却无法直接使用迭代来解决,因为前两道题都是从头遍历到尾的,而这道可以从中间某个节点开始遍历,所以这里使用递归。从LeetCode截下一个图方便观察(找到结果为8的路径有多少个,3个)var pathSum = function (root, ta

2021-05-22 17:28:35 98

原创 113. 路径总和 II

学习算法,锻炼自我!记录自己的成长过程!给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。这道题为中等,然而却与112大同小异,我使用的方式比较简单跟112一样,只是在后面多存储了一个路径当中的数组var hasPathSum = function (root, targetSum) { if (!root) { return []; }; const res = [];

2021-05-22 16:24:14 50

原创 112. 路径总和(Javascript)

学习算法,锻炼自我!记录自己的成长过程!给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。这道题的难度为简单,不过这道确实简单,这只需要前序遍历,并将每次的值保存起来,在到达叶节点的时候,比较判断就可以了,遍历二叉树,我一般都喜欢使用迭代的方式,而不是递归。var hasPathSum = function (root, targetSum) { if (!ro

2021-05-22 16:04:40 103

原创 函数式编程(学习笔记)

为了方便自己学习以及理解,把自己的学习笔记放在网上,可以在上班或在家忘记的时候拿出来看看(仅供自己参考)函数式编程面向对象:就是将现实世界中的事物抽象成程序世界中的类和对象,通过封装,继承和多态演示事物事件的联系。函数式编程是一种思想,是一种编程规范。就是将现实世界中的事物和事物之间的联系抽象到程序世界。函数式编程说的是一种映射关系,而不是程序中的函数(方法)。函数是一等公民函数是变量函数作为参数函数作为返回值高阶函数只需要关注与我们的目标, 使代码更简洁纯函数相同的输入

2021-05-22 13:14:10 194 2

原创 reactive创建的响应式对象解构后为什么会失去响应式

自从专注于React之后,已经有段时间没有用过Vue了,因此最近在学习Vue3.0,Vue的更新机制与React的更新机制是不同的,React的更新机制说的简单点就是根据场景调用不同方法触发状态更新,从而再次进行渲染,而对于Vue的话,我认为是在发生的数据更新时,根据情况进行渲染的。说的专业点就是Vue拥有一个响应式系统,可以让它在数据更新的时候自动进行视图的更新。在Vue3.0中,可以使用reactive声明响应式状态 ,官方例子:import { reactive } from 'vue'// 响

2021-03-21 18:43:10 8900 4

原创 使用React与TS构建简陋的Antd

时隔多月,再次记录一下自己的学习总结,为什么是时隔多月,那是因为作为苦逼的大四学生面临着就业问题,忙于秋招去了,现在已拿到一份还算可以的offer了,以后有机会分享出来一下,本人是全靠自学的。直入主题:查看项目的方式:直接访问: https://chenjiawe.github.io/React-TS-Antd/本地运行:1.git clone https://github.com/ChenJiaWe/React-TS-Antd.git2.npm install当然很简陋(重在学习技术)使

2021-01-07 07:48:51 247

原创 简单地搭建后台管理来学习ThinkJS JWT 鉴权实践

话不多说上代码代码

2020-06-12 22:40:51 450

原创 简单实现一个bundler

首先创建好文件./src/word.jsexport const word = "hello";./src/message.jsimport { word } from "./word.js";const message = "say " + word;export default message;./src/index.jsimport message from "./message.js";console.log(message);首先需要读取文件内容,在bundler

2020-06-05 11:23:19 190

原创 菜鸟对于用ts构建axios的总结

我花了几天时间去学习ts,并学习用ts构建axios,先说说整体感受,前期与后期还是相对中期是比较好理解,前期是基础,后期补充,中期就是重中之重了。细的不多说,就说说自己学习过程中该如何分析先看看主要的文件目录:types目录在这个目录主要是存放定义的接口的,先拿一个接口出来说说:export type METHOD = "get" | "GET" | "post" | "POST" | "put" | "PUT" | "delete" | "Delete" | "

2020-05-26 20:36:20 1341 1

原创 JavaScript权威指南学习笔记(五)

类和原型在之前定义了inherit()函数,这个函数返回一个新创建的对象,后者继承自某个原型对象。如果定义一个原型对象,然后通过inherit()函数创建一个继承自它的对象,这样就定义了一个JavaScript类。//range.js:实现一个能表示值的范围的类//这个工厂方法返回一个新的"范围对象"function range(from, to) { //使用inherit()函数来创建对象,这个对象继承自在下面定义的原型对象 //原型对象作为函数的一个属性存储,并定义所有"范围

2020-05-18 09:59:16 120

原创 JavaScript权威指南学习笔记(四)

函数定义函数声明语句"被提前"到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被在它定义之前出现的代码所调用。不过,以表达式定义的函数就另当别论了,为了调用一个函数,必须能引用它,而要使用一个以表达式方式定义的函数之前,必须把它赋值给一个变量。变量的声明提前了,但给变量赋值是不会提前的,所以,以表达式方式定义的函数在定义之前无法调用。方法调用很多人误以为调用嵌套函数时this会指向调用外层函数的上下文。如果你想访问这个外部函数的this值,需要将this的值保存在一个变量里,这个变量和

2020-05-13 09:54:00 111

原创 自定义实现Promise

Promise是很重要的知识点,必须牢记于心,下面是自定义实现的Promiseclass MyPromise { //定义promise的3个状态 //初始状态,既不是完成,也不是失败 static PENDING = "pending"; //操作成功的状态 static FULFILLED = "fulfilled"; //操作失败的状态 static REJECTED = "rejected"; constructor(excutor)

2020-05-11 20:58:00 229

原创 简单的学习一下函数节流与函数防抖

<button id="throttle">测试函数节流</button><button id="debounce">测试函数防抖</button> //处理事件的回调函数 function handleClick(i) { console.log("处理点击事件"); cons...

2020-05-04 16:43:26 205

原创 JavaScript权威指南学习笔记(三)

数组元素的读和写在读和写数组时,可以使用负数或非整数来索引数组,这种情况下,数值转换为字符串,字符串作为属性名。既然名字不是非负整数,它就只能当作常规的对象属性,而非数组的索引。同样,如果凑巧使用的是非负整数的字符串,它就当作数组索引,而非对象属性。当使用的一个浮点数和一个整数相等时情况也是一样:a[-1.23] = true //创建一个名为"-1.23"的属性a["100...

2020-04-30 10:23:33 501

原创 Scrapy异步下载图片并放入不同的文件夹中

要想放入自定义的文件夹,需要对源码中的方法稍微重写一下,需要将得到的数据绑定到file_path(self, request, response=None, info=None)方法的request中,因为它本身并没有得到item(item里有返回的数据),而 get_media_requests(self, item, info)方法有item,所以我们需要在该方法中的将item绑定到reque...

2020-04-29 15:45:46 342

原创 object { lessOptions?, prependData?, appendData?, sourceMap? }

Markdown

2020-04-29 15:07:01 2460 1

原创 Scrapy异步插入数据库

from pymysql import cursorsfrom twisted.enterprise import adbapiclass JianshuTwistedPipeline(object): def __init(self): #定义参数 dbparams = { "host":"127.0.0.1", "port":3306, "user":"roo...

2020-04-28 10:18:42 207

原创 JavaScript权威指南学习笔记(二)

属性访问表达式在JavaScript中访问属性的方式有两种语法:expression.identifier: 在点后面标识符指定需要访问的属性expression[indetifier]:指定要访问的属性的名称或代表要访问数组元素的索引。在使用这个方式时会计算括号里的表达式然后转换为字符串不管使用哪种形式的属性访问表达式,在".“和”["之前的表达式总是会首先计算。如果计算结果是nul...

2020-04-25 10:38:37 122

原创 JavaScript权威指南学习笔记(一)

1.可选的分号JavaScript只有在缺少分号就无法正确解析代码的时候才会填补分号,如下代码 var a a = 3 console.log(a)JavaScript将其解析为: var a; a=3; console.log(a)因为JavaScript无法解析 var a a,所有在第一行换行处添加了分号。而第二个a可以...

2020-04-19 09:49:04 103

原创 学习Python爬虫分析如何实现自动登录学生个人中心

在学习简单的爬虫时,想试着登录管理系统练练手,首先分析了源码,发现了它所提交的数据是在下面这个函数中:它是将账号和密码放在了一个变量:encoded中的,如果不确信的话也可以先登录看看,如下需要注意的是账号与密码是加密的,而在源代码中引入的js文件中有个文件就是加密文件那么既然知道它提交的数据以及如何加密,就可以开始工作了,首先也需要安装可以在python中可以编译js的库 ,pip...

2020-04-18 17:58:31 252

原创 学习python 关于yield的知识点学习笔记

生成器函数当函数中有yield关键词时,该函数就会变成生成器函数,下面是斐波那契数列的例子def makeNum(n): a = 0 b = 1 counter = 0 while counter<=n: yield a a = b b = a+b counter+=1调用生成器的时候,并...

2020-04-17 19:31:41 105

原创 微信小程序获取数据库的数据返回空数组

在接触微信小程序的时候,请求数据库时返回了空数组,只要打开云开发控制台,在数据库里点击的你的集合,设置一下你的权限管理为—所有用户可读,仅创建者可读写,就行了...

2020-04-16 10:31:22 2182 2

原创 异步循环之后请求回来的数据获取不了

在做一个react小项目时,在异步循环这一步,请求回来的数据获取不了//tabs:包含了需要请求数据的名字//getplayList:为请求数据的异步方法//playList:放入的是请求回来的对象tabs.forEach(async (tab, index) => { playList[index] = await getplayList(tab.name)...

2020-04-08 19:27:53 615

原创 关于java配置环境变量不生效的原因

关于java配置环境变量不生效的原因在配置环境变量时,在系统变量配置了JAVA_HOME,在PATH变量中配置了紧接着配置了CLASSPATH却发现始终是 "java不是内部或外部命令,也不是可运行的程序或批处理文件。"但问题解决很简单,只要重新打开cmd就可以了...

2020-04-03 12:01:55 3122 1

原创 异步循环的数据无法渲染在页面

在一个数组中异步循环发现的小问题在做小项目时,我在created中用异步循环请求后台数据,然后将其渲染在页面时,发现第一次是能够在页面上渲染的,不过刷新页面之后就发现渲染的页面变成一边空白,思考了很久发现解决的问题很简单,如下// getLikebook是一个请求后台数据的方法//likeids是一个存放了id的数组//likebooks是将请求回来的数据存放的数组this.likeid...

2020-03-31 09:18:45 510

原创 写vue项目的一个小错误

Invalid prop: type check failed for prop "value". Expected Number,String,got Boolean with value true在用vue框架做个小项目时出现了下面这个情况![在这里插入图片描述](https://img-blog.csdnimg.cn/20200331084519711.png?x-oss-process...

2020-03-31 09:03:57 652

空空如也

空空如也

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

TA关注的人

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