- 博客(219)
- 资源 (2)
- 收藏
- 关注
原创 数据结构与算法-哈夫曼编码【十三】
定义 哈夫曼树: 带权路径长度和最短的二叉树,也称之为最优二叉树。 哈夫曼编码:在网络传输过程中,对所有的信息进行编码,所有的信息都将转换为0101的二进制形式,根据信息出现的频率,将信息构造成长度最短的编码。原理 比如字符ABCDEBAADF 的字符集合。传输过程中,我们将每一个字符转换成二进制的形式,但是同时要保证这个二进制数据的长度最小。【保证传输的效率】 这就可以和哈夫曼树联系起来,出现概率最大的字符离根节点最近,出现概率最小的字符离根节点最远;
2020-07-13 21:31:12 324
原创 数据结构与算法-构造哈弗曼树【十二】
哈弗曼树的定义哈佛曼树的定义: 带权路径长度最短的树。每一个叶子节点有一个权重值,权重值 乘以 路径长度【路径长度指的是根节点到该节点的路径长度】 ,所有叶子节点的 带权路径长度 之和最小的树,称之为哈弗曼树,也称之为最优二叉树。n为所有叶子节点的个数,w为该叶子节点的权重,length©为该叶子节点的路径长度,改图来自于维基百科。...
2020-07-04 21:22:08 565
原创 数据结构与算法-树与二叉树的相互转换【十一】
一个普通的树可以转换成一个唯一的二叉树,原则就是:左孩子 右兄弟。一个节点的左子树的根节点,是这个节点的孩子节点的第一个,这个节点的右子树的根节点,是这个左子树的根节点的兄弟节点。普通的树转化为二叉树二叉树的节点定义: // 二叉树的节点定义function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) th
2020-06-27 15:00:25 1517
原创 数据结构与算法-根据后序遍历和中序遍历的结果构造一颗二叉树【十】
在这里已经确定了思路:1,根据后序遍历,确认根节点;2,确认了根节点之后,在中序遍历里面,确认左子树和右子树;3,根据后续遍历,确认下一个根节点;4,根据这个跟节点在中序遍历中的位置,确认这个根节点的左子树和右子树;……重复……树节点的定义: function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? n
2020-06-07 14:14:01 1607
原创 【javascript】ajax请求下载文件
使用javascript blob 下载文件模拟浏览器下载文件(不与server端交互) 纯前端的模拟一个下载文件动作 const downloadJsonFile = () => { var jStr = { hello: 'World' } var blob = new Blob([JSON.stringify(jStr, null, 2)], {type: 'application/json'}) const link = document.createElem
2020-05-26 22:26:25 1239
原创 【javascript】实现上传预览图片功能
浏览器在上传图片之后,我们能够获取到图片的file对象,现在的问题就是让这个图片在浏览器里面显示出来。思路: file对象转换成base64字符串,然后赋值给img的src即可。 Base64 是一组相似的二进制到文本(binary-to-text)的编码规则,使得二进制数据在解释成 radix-64 的表现形式后能够用 ASCII 字符串的格式表示出来。我们将file对象转换为base64字符串,需要通过FileReader对象的readAsDataURL来做。HTML代码 <inpu
2020-05-26 22:11:12 200
原创 数据结构与算法-求二叉树的最大深度,总节点个数,叶子节点个数【九】
标签(空格分隔): 二叉树深度 节点对应着leetcode的题目编号是: 104,222思路一这3个问题,最简单的办法就是定一个全局变量,然后遍历整棵树,最后对全局变量进行处理或者返回即可。【可以理解为自上而下,从根节点开始往下面走】求二叉树最大深度: var maxDepth = (root) => { if (!root) return 0 const arr = [] // 遍历所有,直到叶子节点 var helpFunc = (node, i
2020-05-24 12:49:18 4395
原创 数据结构与算法-复制二叉树【八】
Node节点的定义 /** * Definition for a binary tree node.*/ function TreeNode(val) { this.val = val; this.left = this.right = null; } 模拟先序遍历,一个一个复制, 从根节点开始错误版本: // 错误,js里面不存在传递地址引用 var copyBinaryTree = (node, newTree = null) => {
2020-05-23 15:24:01 597
原创 javascript复制基础文本功能
const handleCopy(content) { const input = document.createElement('input'); input.value = content; document.body.appendChild(input); input.select(); if (document.execCommand('Copy')) { document.execCommand('Copy'); } in..
2020-05-22 09:09:25 153
原创 数据结构与算法-递归与非递归方式实现 先序-中序-后序遍历二叉树【八】
标签(空格分隔): 先序遍历 后序遍历 中序遍历 深度优先遍历 递归 非递归上一篇文章已经说过了,遍历树(二叉树是树的一种特殊情况)有深度优先遍历和宽度优先遍历。###深度优先遍历深度优先遍历 根据访问每个根节点与 左子树/右子树的顺序 分为 先序,中序,后序。深度优先遍历有递归和非递归的形式。二叉树的节点定义长这样: /** * Definition for a binary tree node.*/ function TreeNode(val) { this.val
2020-05-17 15:11:41 500
原创 javascript时间戳 与 mysql 时间戳不一致
遇到一个问题,js获取特定日期的的时间戳,存数据库,但是在mysql里面通过FROM_UNIXTIME(timestamp,'%Y-%m-%d')格式化日期,是不一致的。。。查了一下,是时区问题,mysql时区不对,验证一下,执行sql语句: select now();如果与js执行结果:new Date()不一致,那么需要调整一下mysql的时区了。。修改容器内配置文件/etc/...
2020-05-05 17:04:10 1362
原创 数据结构与算法-遍历树,先序(或后序)与中序确认一颗二叉树【七】
标签(空格分隔): 树的遍历树的遍历访问每个节点,并且只能访问一次。遍历方式深度优先遍历深度优先遍历 (英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其...
2020-04-19 16:15:58 635
原创 数据结构与算法-树的定义【七】
标签(空格分隔): 数据结构与算法树的定义栈和队列的数据元素之间的关系从逻辑结构上来看是线性结构,就是一一对应关系。而树型结构的逻辑结构就不是一对一了,是一对多。这个链接里面介绍了,线性结构。现在讨论的树就是非线性结构中的一种【树形结构】。参考线性表的特性,线性表里面的元素,只能最多只能有一个前驱节点和一个后继节点。但是树形结构里面的元素,至多一个前驱节点,但是可以有多个后继节点。树是...
2020-04-19 14:09:50 265
原创 数据结构与算法-知道树的某几个叶子节点,将所有包含该叶子节点的路径组成一颗新的树
上一次记录博客是过年之前,太久了。。2月比较懒散,3月忙着加班,今天终于有时间重新开始记录点零碎的东西。前景提要,有一个特殊的需求:现在的情况是,知道叶子节点【唯一标识】以及树, 求一颗新的树。思路:递归给每一个节点一个标记。对于每一个叶子节点来说,如果已知的叶子节点包含这个叶子节点,那么给标记为true。对于非叶子节点来说,如果子节点中有一个标记为true,那么该节点标记为tr...
2020-04-04 16:46:13 981
原创 数据结构与算法-字符串匹配KMP算法【六】
[数据结构与算法] 字符串的匹配算法(KMP算法)标签: 实现strStr KMP算法上一篇文章概述了一下BF算法以及缺点,这篇文章来说明一下KMP算法,对BF算法的优化。如果你还不知道BF算法是什么: 点击我 先了解匹配字符串的暴力匹配法KMP算法这个算法,是对BF算法的一个优化,为什么说优化呢,KMP算法当两个字符不相等的时候,i不需要回溯,只需要j回溯,j回溯到什么位置呢?先不看...
2020-01-18 16:43:55 492
原创 数据结构与算法-字符串匹配BF算法【六】
标签:BF算法 简单穷举法 实现strStr字符串的匹配算法,题目是什么呢,给定一个字符串(str) 和一个模式串(pattern)找出模式串在给定的字符串里面的位置,若不存在则返回 -1。这个对应着leetcode第28题, 当然很多高级语言都实现了这个方法,比如javascript里面,使用str.indexOf(pattern)就直接求解了,但是这个题目的要求是实现这个方法,不是调用别...
2020-01-18 16:25:00 812
原创 数据结构与算法-栈与队列【五】
标签:栈 队列 递归 尾递归 尾调用栈和队列都是特殊的线性表 普通的线性表,无论是以顺序存储结构表示的顺序表、链式存储结构表示的链表 可以在任意的位置【1~N+1】执行插入和删除操作。 而栈和队列,规定只能在表头和表尾部进行操作。栈是先进后出、后进先出 只能在表尾(栈顶)进行插入(入栈)和删除(出栈)。通常用Stack来表示常见使用场景: 1,括号等匹配问题 2, 函...
2020-01-04 15:30:15 160
原创 react hooks 里 useMemo 和 useCallback的区别
react hooks提供的两个API,用于缓存数据,优化性能。useMemo用来缓存数据,当 组件内部某一个渲染的数据,需要通过计算而来,这个计算是依赖与特定的state、props数据,我们就用useMemo来缓存这个数据,以至于我们在修改她们没有依赖的数据源的情况下,多次调用这个计算函数,浪费计算资源。直接上代码import React, { useState, useMemo } ...
2019-12-31 09:26:01 10339
原创 react app cpu 占用率巨高的处理
前景提要系统: OSX 0.13.6 配置是i7 16g最近做一个react技术栈的项目,同事搭的架子,使用的ts+react全家桶,但是每次启动项目 cpu占用高达150%。这不是重点,因为一开始并没有注意,怎么发现的呢,启动项目之后,风扇狂转,那个声音让人有点抓狂,办公室本来挺安静的,只要一启动项目,咚咚咚咚-----那个声音太大了 ,我看monitor,cpu 占用150%。。。当...
2019-12-25 14:04:02 2383
原创 数据结构与算法-循环链表与双向链表【四】
我们下面讨论的前提是:1,链表有一个辅助头节点,这个辅助头结点的next才是真正的数据节点。2,单链表的定义: // Definition for singly-linked list. function ListNode(val) { this.val = val; this.next = null; }循环链表 单链表只有一个头结点 和一...
2019-12-21 18:05:10 405
原创 数据结构与算法-线性结构之单链表[三]
链表 线性表的存储方式除了前面讨论过的顺序存储结构【逻辑上相邻的元素在内存中存放的位置必然是相邻的】 还包括链式存储结构,逻辑上相邻的元素,映射在物理内存里面的地址并不是一定是连续的,是任意摆放的。比如 学号为 ABCDEF的6个学生: 按照 ***顺序表***来说,逻辑上他们是相邻的,我们安排他们的座位在教室里面,他们的座位一定是按照这个顺序来的,我们知道了A的位置,那么就一定知道...
2019-12-15 14:58:25 748
原创 dart 小记
dart 小册标签(空格分隔): program-language最近在看flutter和dart,记录一下dart和javascript/java等常见语言不同一点特性。dart 在面向对象和java类似,但是一些异步和动态性上和javascript类似。字符串使用三个引号表示多行字符串 String str2 = ''' kevin kang hello ...
2019-12-14 13:33:27 134
原创 数据结构与算法-线性结构之顺序表[二]
tag: 线性表数据结构:先明确一点,数据指的是什么,比如我们有一堆数字,1,2,3,4,5 这是5个数字,这一组数据5个数字是孤立的,它们是数据,但是我们给他赋予一种关系,这个关系可以是各种逻辑关系,然后就可以将这个整体【性质相同的数据集合 + 数据之间的联系】叫做数据结构。当然这个数据只要是同性质的即可,可以是整型,字符串,同一类型对象…。逻辑结构数据之间的关系可能是多种的,逻辑...
2019-12-08 16:08:24 311
原创 数据结构与算法-时间复杂度和空间复杂度[一]
最近在重新学习数据结构与算法。此文为笔记文。致敬: 青岛大学-王卓老师时间复杂度算法 在基础的正确性和健壮性原则上,需要考虑两个点: 1,时间效率 :算法所耗费的时间。【等待的时间是优先,肯定更要尽可能提高运算速度】 2,空间效率 :算法执行过程中所占的存储空间。【运行内存是有限的】有的情况需要结合两者一起考虑,可能需要牺牲时间节省空间,...
2019-11-30 16:42:53 522
原创 【javascript】给网页添加水印
需求:由于安全,防盗用等原因,需要给页面增加水印。方法一最容易想的是用绝对布局或者fixed布局,写一串文字放在整个body或者content容器里面,贴在最上层即可。但是遇到了问题:,就是因为z-index设置的比较高,无法交互。 下面的点击事件啥的,全部失效了。最后查到了css3有一个新属性:pointer-events 这个CSS 属性指定在什么情况下 (如果有) 某个特定的图形元...
2019-11-17 14:27:20 1097 1
原创 【css】多行多列流式布局
要达到这种效果,自动换行,并且左右等距离对齐:方法一,使用grid布局: .container-1 { padding: 20px; width: 800px; border: 1px solid black; margin: 0 auto; margin-bottom: 50px; ...
2019-11-09 15:41:41 4485
原创 合并两个有序数组
var mergetTwoArrays = (nums1, nums2) =>{ var i = 0 var m = 0, lenM = nums1.length var n = 0, lenN = nums2.length var arr = [] while(m < lenM && n <...
2019-10-21 18:21:26 395
原创 【javascript】mui header 在ios系统下 当软键盘弹出的时候错位
尝试了各种办法 ,无果。最后相对好点的解决办法:然后用了双webview 解决了问题,header 作为一个parent webview,在这个webview下面嵌套你的子webview【里面就是你实际的page content】。...
2019-09-20 15:26:52 468
原创 【数据结构与算法】二叉树的中序遍历
二叉树的先序/中序/后序遍历是针对根节点的遍历作为基准点,中序遍历的顺序就是Left Root Right的顺序来leetcode-94-Binary Tree Inorder Traversal方法一 递归const inorderTraversal = function(node) { const result = [] var helpFunc = (node) => {...
2019-09-01 15:31:31 1459
原创 【vue】组件之间通过provide/inject共享数据
组件之间共享数据的方式常用的有:1, props 属性传递数据2, emit 事件 a: 全局的eventHub机制 b: 父组件调用子组件使用v-on:eventName="handleFunc",子组件在需要的时候调用this.$emit(eventName, params)即可。3, vuex4, ref 父组件给子组件添加一个ref引用,<child-compo...
2019-07-24 21:42:57 3983 8
转载 【javascript】react router在配置嵌套路由下的404页面
转载记录:官网的嵌套路由在这里: https://reacttraining.com/react-router/web/example/route-config项目最近用到嵌套路由 ,需要添加全局的404页面,找到一个例子:https://codepen.io/pshrmn/pen/KWeVrQ但是到最后发现貌似 和 在每一处子路由的地方添加了404 <router>是一...
2019-07-11 22:50:07 1623
原创 Nginx基础验证-Nginx basic authentification
Nginx basic authentification标签(空格分隔): nginx资料:nginx的认证资料我们某一个web服务,特定ip/域名 + 端口 需要一定的权限才能浏览。我们需要验证,基础的nginx basic authentification验证就是其中一种方式。准备工作:1, nginx 镜像。2,nginx 配置文件,我们命名为nginx.conf,我们将容器...
2019-06-27 10:06:31 1873
原创 【go】golang判断是否属于某一个特定的类型
比如现在有一个对象b,比如我们判断b是否是一个User类型, 我们对User的定义和b的定义如下: type User struct { Name string Id string } o := &User{"Kevin", "k3v"} var b interface{} // 给b赋值的是一个指针 b =...
2019-05-25 17:04:26 13818
原创 【go】JWT 在beego中的运用
首先我们要知道jwt的概念, json web token 用户client 与server端的认证,包含三部分: head payload signature。详情看这个: https://jwt.io/ 或者 ruanyf的文章直接上go的代码, utils/token.go:package utilsimport ( "fmt" "github.com/dgrijalva/...
2019-05-18 16:55:51 5483 10
原创 【扫盲贴】JSON数据格式
json的数据格式不只是 键值对的形式{ "name": "kesha" //other....}还可以是下面其他的格式,最简单的验证方法是在postman里面定义body数据为json格式,然后直接输入下面的值,没有报错。 或者去json.cn或者其他验证json的工具站点验证即可。"Fun"[1, 2, 3, "Fun"]truenull维基百科地址: ...
2019-05-13 16:13:06 386
原创 一步一步手写promise[三]
上一篇文章我们已经走到差不多最后一步了,只需要处理如果then接受状态的返回值是一个promise,我们递归处理即可。最后的代码长这样:function Promise5(executor) { this.status = 'pending' this.value = void 0 this.error = void 0 this.fulFillTasks = [] th...
2019-04-27 14:09:55 155
原创 一步一步手写promise[二]
在上一步,我们已经实现了Promise的基本功能, 构造一个Promise对象,并且可以同步或者异步,将其status转变为 resolved 或者 rejected,并且then方法能正确处理同步的状态变化,但是异步的状态变化我们处理不了。。。回忆一下我们上一步的then方法:Promise3.prototype.then = function(onFulfilled, onRejected...
2019-04-24 13:06:48 153
原创 一步一步手写promise[一]
前些日子,同事分享了手写promise,它的思路清晰 一步一步的梳理。于是乎后来我自己尝试来写一写,于是乎有了此篇浅显的文章。我们看一个基础的原生promise var p1 = new Promise((resolve, reject) => {}) var p2 = new Promise((resolve , reject) => { resolve(1) })...
2019-04-20 17:37:53 261
原创 【javascript】webpack 加载svg
标签(空格分隔): webpack如何在我们的项目中加载svg矢量图?使用file-loader比如像sketch等工具能够导出svg文件,我们可以在css中的background-image属性引用一个svg矢量图为你教案,也可以在html标签img中使用src源引入。像这样: .path-svg { background-image: url('./svgs...
2019-04-13 17:55:56 3487
转载 【react】tsx文件中的Module 'xxxx' has no default export
项目使用create-react-app创建,然后引入antd-mobile里面的组件报错。报错:在tsx引入react的时候报错,是通过将import React from "react" 改为import * as React from "react"去掉错误。但是我们引入antd-mobile三方库这样就不行了。我们需要在tsconfig.json里面加上配置:"allowSyn...
2019-04-03 16:35:07 5226
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人