自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 问答 (1)
  • 收藏
  • 关注

原创 动态规划系列题型讲解

动态规划系列题型最长公共子序列完全背包问题本篇文章持续更新中最长公共子序列最长公共子序列讲解完全背包问题

2020-07-11 13:01:05 206

原创 Dijkstra算法详解(完美图解、趣学算法)

Dijkstra算法详解Dijkstra算法设计Dijkstra算法简介Dijkstra算法的基本思想Dijkstra贪心策略完美图解伪代码详解完整代码算法解析及优化拓展使用优先队列的完整代码相关题的题解写在最后的话Dijkstra算法设计Dijkstra算法简介Dijkstra算法是解决**单源最短路径**问题的**贪心算法**它先求出长度最短的一条路径,再参照该最短路径求出长度次短的一条路径 直到求出从源点到其他各个顶点的最短路径。Dijkstra算法的基本思想首先假定源点为u,顶点集合

2020-07-07 13:36:12 122500 28

原创 使用UML完成一个设计文档

软件设计模式,软件架构,uml

2021-12-18 10:55:06 650

原创 JS数据类型和变量

分类基本类型String: 任意字符串Number:任意数字boolean: true/falseundefined: undefinednull:null对象(引用)类型Object: 任意对象Function:一种特别的对象(可以执行)Array:一种特别的对象(数值下标,内部数据是有序的)判断typeof可以判断: undefined/ 数值/ 字符串/ boolean/ function不能判断: null 与 object, object与arrayi

2021-11-21 15:13:03 231

原创 创建型模式---【JAVA&JS】

创建型模式简单工厂模式概述结构模板创建型模式关注对象的创建过程将对象的创建和使用分离(组件封装)简单工厂模式概述通俗版一套图标库里有不同类型的图表,根据不同的参数获得不同的类型的图表标准版定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类类创建型模式,静态工厂方法结构Factory(工厂角色):工厂类,;提供了静态方法factoryMethod(),返回类型为抽象产品类型ProductProduct(产品角色): 父类,图表库Co

2021-11-20 17:27:33 840

原创 webpack基础学习

webpack一、Webpack的五个核心概念entry(入口)出口(output)loader插件(plugins)模式一、Webpack的五个核心概念entry(入口)**入口起点(entry point)**指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。出口(output)output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./

2021-10-12 19:40:15 129

原创 二分法和双指针

这篇文章里的代码主要用js和java实现,这篇文章主要记录双指针和二分法的一些比较奇特,经典的题,同时也会把做题中的一些技巧以及一些不常见但很有效的用法记录下来# 二分法## 概述> 常用术语> * 目标 Target -- 目标值> * 索引Index -- 查找的当前位置> * 左、右指示符 Left,Right —— 我们用来维持查找空间的指标> * 中间指示符 Mid —— 我们用来应用条件来确定我们应该向左查找还是向右查找的索引二分查找维护查找空间的左、右和中间指

2021-10-12 19:38:56 324

原创 组件间通信的几种方式

组件间通信, vue事件总线, tiny-emmity, mitt, props, refs, emit, provide, inject, attr , listener, vue组件, vue通信, vue 值传递

2021-10-12 11:41:22 3620

原创 HTTP请求头字段解释

HTTP请求的header头解析 request headersAcceptMIME类型独立类型Accept-EncodingCache-ControlConnectionHTTP请求的header头解析 )request headers这些类容可以点击问号处查看,最近看到有面试题问,就做个记录Accept请求头用来告知(服务器)客户端可以处理的内容类型,这种内容类型用MIME类型来表示MIME类型媒体类型(通常称为 Multipurpose Internet Mail Extensions

2021-10-05 18:28:30 515

原创 JS设计模式——结构设计

JS设计模式系列2结构型设计模式一、外观模式1.1. 引言:添加一个点击事件1.2 兼容方式二、适配器模式结构型设计模式结构型设计模式关注如何将类或对象组合成更大更复杂的结结构,以简化设计一、外观模式外观模式: 为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统的结果更容易访问emm,这里我第一个想到的就是前端对axios的封装,以及把某个角色或某个功能的api接口单独写在一个js文件里,调用时直接引用文件即可。1.1. 引言:添加一个点击事件代码示例documen

2021-09-20 16:38:21 233

原创 WEB前端优化--HTML/CSS优化

web, 前端优化, css优化, js优化, 性能调优, 代码耦合, 策略模式,书写优化,页面优化, HTTP, 前端进阶, 前端面试,高效编程, 提高用户体验, 前端提高用户体验, 编程功底, history 改善AJAX体验,

2021-09-19 18:55:30 197

原创 vue源码解析之mustache模板引擎——底层核心机理

mustache底层核心机理底层token思想手写mustache库1.遍历查找“{{ }}”(Scanner类)不能用简单的正则表达式思路实现底层token思想手写mustache库1.遍历查找“{{ }}”(Scanner类)scanner类:用于解析templateStr模板字符串主要由两个方法scan():跳过{{scanUtil(): 让指针进行扫描,知道遇见指定内容结束,并且能够返回之前路过的文字...

2021-09-19 12:29:02 182

原创 REACT 之 生命周期

react生命周期引言案例生命流程周期图(旧版本)组件挂载流程更新状态时生命周期流程图(新)引言案例<script type="text/babel"> //创建组件 //生命周期回调函数 <=> 生命周期钩子函数 <=> 生命周期函数 <=> 生命周期钩子 class Life extends React.Component{ state={opacity:1} death = () => { // 卸载组件

2021-09-18 18:56:00 52

原创 JS DOM2

节点操作节点操作基本语法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div class="box"> <ul> <li>a</li> <li>b</li>

2021-09-18 17:33:57 82

原创 JS DOM案例1

JSDOMJS DOM获取元素事件与操作元素表单案例,显示隐藏密码3. 操作元素样式案例:排它思想案例:表格隔行变色案例:表单全选、取消全选案例:tab切换JS DOM这系列文章里记录的多半是案例,基础语法很少获取元素1. document.getElementById(id)2. Document.getElementsByTagName()3. Document.getElementsByClassName()4. document.querySelector() //查找第一个匹配

2021-09-14 21:25:02 320

原创 React基础知识点1

React-prop基本使用批量传递prop限制prop简写函数式组件使用props基本使用<script type="text/babel"> class Person extends React.Component { render() { return( <ul> <li>姓名:{this.props.name}</li> <li>年龄:{this.props.age}<

2021-09-13 19:21:29 134

原创 VS源码解析之模板mustache引擎1-基础介绍

模板引擎介绍纯DOM法(最底层):非常复杂麻烦数组join法ES6反引号法mustache的基本使用介绍本篇博客是基于尚硅谷的源码解析课程的第一篇,仅做笔记用,github仓库地址纯DOM法(最底层):非常复杂麻烦<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>数据变为视图DOM</title></head>&lt

2021-09-13 17:07:22 88

原创 面试---JS1

js,es6,es5, symbol, map, filter, reduce, array, dom ,设计模式,js创建对象,javascript,js面试,javascript面试, 正则表达式, window属性和方法, js DOM, js BOM, js 进阶我的JS专栏里的文字是以此系列(面试系列)为中心的,我会将JS里所有的知识点,都会在面试系列中展示,有些比较重要,篇幅较大的会单独出来写篇文章。大家可以收藏

2021-09-11 18:21:44 118

原创 JS正则表达式语法介绍几实例

这篇文章是对JS中正则知识点的简单记录,以及其实际应用的案例整理修饰符修饰符描述i执行对大小写不敏感的匹配g执行全局匹配m执行多行匹配举例new RegExp(/regexp/i)new RegExp(/regexp/g)具体用法 var reg=new RegExp(/regexp/i); var str="regExpfas"; console.log(str.match(reg))// Array [ "regExp" ] var r

2021-09-11 18:20:46 120

原创 JS设计模式之工厂方法模式

工厂方法模式安全模式类安全的工厂方法通过对产品类的抽象使其创建爱你业务主要负责用于创建多类产品的实例安全模式类安全模式类式防止忽略new关键字时造成的错误var Demo = function (){ if (!(this instanceof Demo)){ return new Demo() } } Demo.prototype = { show:function (){ console.log('成功获取') } } var d =

2021-09-11 13:32:07 82

原创 JS设计模式之简单工厂模式

简单工厂模式介绍介绍把特征相同的类封装在一个函数中,这样只需要通过这个函数就可以创建需要的对象。例子如下// 篮球基类var BasketBall = function (){ this.intro='篮球'}BasketBall.prototype = { getMember:function (){ console.log('每个队伍需要5名队员') }, getBallSize:function () { console.log('篮球有特定大小') }}// 足球

2021-09-11 13:08:31 155

原创 JacaScript进阶之设计模式系列1

本系列文章主要是JavaScript设计模式一书的笔记,最初看到这本书是在几个月前,但由于当时对JS基础了解的不多,看的过程中只感觉很有用,但很多底层的语法都不清楚。最近在把vue源码学完后,再来看,里面的内容已经都了解了,现在主要就是把书里的思路等都记录下来,毕竟看书不去实践总是感觉很空。

2021-09-10 19:55:20 145

原创 Vue数据响应式

Vue数据响应式原理追踪变化递归侦测对象的全部属性数组的响应式处理收集依赖尚硅谷Vue数据响应式原理。这里只是根据视频和vue.js深入浅出做的笔记,大家要学的话建议去听尚硅谷的vue源码教程,多听几遍自然就懂了。追踪变化在javascript中有两种方法可以侦测到变化:Object.definePorperty 和 ES6 的proxy,这里介绍Object.defineProperty的方式。这个方法会直接在一个对象上定义一个新属性,并返回此对象。这里用函数封装,而不是直接用原函数,主要是在

2021-09-10 13:31:19 266 1

原创 vue源码-dom和diff【2】

diffdiff初理解diff处理新旧节点不是同一个节点diff初理解key很重要,key是这个节点的唯一标识,更改前后,表示这是同一个dom节点只有是同一个虚拟节点,才比较,即h里的sel参数必须相同如何定义一个虚拟节点?:选择器相同且key相同只进行同层比较,不会跨层diff处理新旧节点不是同一个节点...

2021-08-26 14:18:19 68

原创 vue源码系列-DOM和diff【1】

数据响应式Vue一大特点是数据响应式, 数据的变化会作用于UI而不用于DOM操作。原理上讲,是利用了js语言特性Object.defineProperty(),通过定义对象属性setter方法拦截对象属性变更, 从而将数值的变化转换为UI的变化。具体实现是在Vue初始化时,会调用initState,它会初始化ata,props等,这里着重关注data初始化整体流程src/core/instance/state.jsinitData, 获取data,设置代理,启动响应式Observesrc/c

2021-08-24 16:05:50 53

原创 vue源码系列-1初始化过程

vue源码系列-1起因年初接手的学校的物理实验中心的系统也基本上完工了,现在在测试,准备上线阶段。前后有7个人参加,有几个坚持了一两个月,一直坚持下来的有4个,写了大半年的代码,前端的11多行代码(git fame统计的提交情况)。从一个小白,现在已经emmm,还不能说大神,顶多就是随便一个页面都可以写出来吧,适配各种产品也ok。总之就是前端的基础都已经很熟了,后端也差不多。然后很熟过后,考虑问题时自然就比最开始提升了一个层次,刚开始接手时,才刚刚能把vue界面看懂,写一些简单的页面,当时只想着做出

2021-08-22 21:28:00 79

原创 Vue面试集合

VUE 面试题合集「1」1. v-if和v-for哪个优先级更高?如果同时出现,怎么优化得到更好的性能源码中找答案:complier/codegen/index.js测试文件结果分析结论Vue组件的data为什么必须是个函数而Vue的根实例没有限制?测试代码结论1. v-if和v-for哪个优先级更高?如果同时出现,怎么优化得到更好的性能源码中找答案:complier/codegen/index.js测试文件测试文件<!DOCTYPE html><htm>

2021-08-21 18:38:32 62

原创 样式类文件命名规范

样式类文件命名样式类文件命名BEM + 面向属性命名BEM面向属性命名总结样式类文件命名以前在写代码的时候,没有接触到比较大型的项目,在命名方面就很随意,在刚开始做项目的时候也没有太注意,但越往后,涉及到的代码量、文件多了后,才发现命名规范越来越重要,现在准备着把项目的文件结构以及代码都要重新整理下。这篇是样式类文件命名篇,来源是《了不起的javascript》一书中第二章。只限参考,并没有把全部的方式找出来,只是在看书时觉得还不错,然后再根据实际需求改一下。BEM + 面向属性命名BEMBEM

2021-05-08 15:17:07 331

原创 2019蓝桥省赛题解

219初赛年号字串数列求值数的分解迷宫完全二叉树的权值等差数列年号字串【问题描述】小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。请问 2019 对应的字符串是什么?【解题思路】2019 % 26 = 77 余 17 ,17 对应 Q77 % 26 = 2 余 25,25 对应 Y2 % 26 = 0 余 2, 2 对应 B若

2020-09-13 13:55:32 199

原创 岛屿数量——搜索复习

dfs解法class Solution {private: void dfs(vector<vector<char>>& grid, int r, int c) { int nr = grid.size(); int nc = grid[0].size(); grid[r][c] = '0'; if (r - 1 >= 0 && grid[r-1][c] == '1') df.

2020-08-17 19:35:41 110

原创 N叉树的最大深度

class Solution {public: int maxDepth(Node* root) { if (root == nullptr)return 0; int depth = 0; queue<Node*>q; q.push(root); while (!q.empty()) { int size = q.size(); for (int i = .

2020-08-11 20:10:08 185

原创 力扣——对称二叉树

对称二叉树题目方法一:递归方法二:迭代题目方法一:递归思路:我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,pp 指针和 qq 指针一开始都指向这棵树的根,随后 pp 右移时,qq 左移,pp 左移时,qq 右移。每次检查当前 pp 和 qq 节点的值是否相等,如果相等再判断左右子树是否对称。class Solution {public: bool check(TreeNode *p, TreeNode *q) { if (!p &&am

2020-08-02 09:27:16 147

原创 力扣——4的幂

先判断是不是只有一位是1,然后看模3的结果。如果模3为1,则true,如果模3为2则false;class Solution {public: bool isPowerOfFour(int num) { if(num < 0) return false; int t = num & (-num); if(num - t != 0) return false; return num % 3 == 1; }};

2020-07-29 19:47:40 156

原创 力扣——区域和检索(数组不可变)

这题比较简单,其中numarray的函数时把传进来的Nums转换为类内部的数组,在用sumrange计算i-j的前缀和。这里一种是利用dp,直接计算并存储nums数组的前缀和,调用intrange时直接计算即可另一种就是暴力解法了。两者运行时间差别如下//此方法是用前缀和//_sum数组存储nums的前缀和class NumArray {private: vector<int> _sum;public: NumArray(vector<int>&am

2020-07-24 09:01:19 104

原创 力扣——多数元素

这题我就只写哈希表的方法,其他解题方法可看这里class Solution {public: int majorityElement(vector<int>& nums) { unordered_map<int, int>counts; int majority = 0, cnt = 0; for (int num : nums) { ++counts[num]; if (counts[num] > cnt) { majority

2020-07-20 13:55:53 142

原创 力扣——验证回文字符串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注

2020-07-18 10:50:57 310

原创 多重背包——庆功会

题目链接#include<iostream>#include<vector>#include<algorithm>using namespace std;int n, m;int v[505], w[505], s[505], f[6005];int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> v[i] >> w[i]

2020-07-15 15:56:34 153

原创 分组背包

//首先判断一个分组当中的一件物品,同样有取和不取两种状态//这样就可以转换为0-1背包问题,其伪代码如下://for 所有的组k// for v = V..0// for 所有的i属于组k// f[v] = max{ f[v],f[v - c[i]] + w[i] }#include<bits\stdc++.h>using namespace std;int dp[205];int we[35], c[35];//重量,价值vector<int>ve[

2020-07-15 14:40:36 114

原创 动态规划经典题——石子合并

石子合并题目信息路边玩法操场玩法问题分析路边玩法操场玩法算法设计路边玩法操场玩法完美图解(以路边玩法为例)伪代码详解路边玩法操场玩法实战演练优化后代码1274:【例9.18】合并石子题目信息路边玩法有n堆石子放在路边一列,现在要将石子有序地合并成一堆,规定每次只能移动相邻的两堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成一堆的总花费(最小或最大)操场玩法一个圆形操场周围摆放着n堆石子圆圈,现在要将石子有序地合并成一堆,规定每次只能移动相邻的两堆石子合并,合并花费为新合成的一堆石

2020-07-12 02:35:33 3056 2

原创 完全背包问题——最好理解

完全背包问题题目描述解法归纳普通做法(照着公式来)优化后的做法相关题解题目描述【题目描述】设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。【输入】第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。【输出】仅一行,一个数,表示最大总价值。【输入样例】10

2020-07-11 14:40:50 215

空空如也

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

TA关注的人

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