自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Riptide

running down to the riptide

  • 博客(206)
  • 资源 (2)
  • 论坛 (10)
  • 收藏
  • 关注

原创 小程序-安卓机型wx.previewImage不能显示图片

各种方式尝试,什么http/https/防盗链/图片太大都尝试了,无果最后发现什么,静态资源链接,多了一个’/‘,正常的情况比如说是

2021-06-06 16:37:18 32

原创 148. sort list 排序链表

148题排序链表题目要求:O(n log n) 时间复杂度和常数级空间复杂度下方法    1, 暴力法,取出来放数组里面,排序,然后重新生成链表,但是不符合题目的要求    2,递归 【自上而下】    思路就是:         2-1,找到链表的中间点(参考找到链表中间点)         2-2,对 中间点分割成为的两个链表分别进行排序,到这里就是调用自己了,递归,对两个链表进行排序。        2-3, 然后合并这两个 有序链表(参考合并有序数组)    3,迭代 【自下而

2021-03-07 16:32:48 41

原创 876. Middle of the Linked List 利用快慢指针求链表的中间节点

比如链表结构为1->2->3->4->5 此时中间节点为 3如果链表结构为 1->2->3->4 此时中间节点为2或者3节点定义利用golang来描述这个实现过程,ListNode的节点实现type ListNode struct { Val int Next *ListNode}实现func middleNode(head *ListNode) *ListNode { slow := head fast := head // 循环遍历完

2021-02-19 21:47:47 30

原创 给定一个数组,正序遍历和逆序遍历构造一个链表

链表基础    单链表的数据定义为: function ListNode(val) { this.val = val; this.next = null; }    需求:给定一个数组 比如 [ 2, 5, 9, 10] 构造一个单链表,结果为2 -> 5 -> 9 -> 10, 但是需要以两种方式去做,    正序遍历构造: function constructLinkedList(arr) { let dummy = new List

2021-01-24 17:43:10 42

原创 centOS内网安装kubernetes集群

最近需要在公司内部网络安装一个k8s集群,内部机器是没法访问外网的,只能访问内部的镜像仓库,和yum库。    实际上还是参考的这两篇文章【文章一】和 【文章二】。只不过重要的几个步骤需要特殊处理下1,更新yum源     添加kubernetes YUM软件源,这个是内网的源。不是公网的,确保内部yum源有资源。    然后再执行安装命令 ,我遇到的问题是三个一起装,kubelet版本一直是最新的,所以分开安装。中途可能会遇到错误提示这里需要手动安装一下 kubernetes-cniyum

2021-01-19 20:30:18 108

原创 kubetcl join node节点加入集群 卡住,无响应

遇到这个问题卡住,找老久才找到原因,所以记录一下:在kubectl join xxxx 的最后加入一个参数--v=2,可以查看具体的详情日志,查了老半天比如 这是我的join命令,ip 和token等已经模糊处理kubeadm join 10.xxx.xxx.41:6443 --token h17xld.xxxxxxxxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxcadba77d56e66a429d695041c6e2c4560af

2021-01-15 09:43:48 290

原创 求最大公约数

迭代版本 function getCd(a, b) { if (a * b < 0) return 1 if (a ==0 || b == 0) return 0 while( a % b != 0 ){   var c = a % b;   a = b;   b = c; } return b }递归版本 function getCd(a, b) { if (a == 0 || b == 0) return 0

2021-01-09 17:36:44 109

原创 golang实现tcp客户端服务端程序

服务端代码:package mainimport ( "bufio" "errors" "flag" "fmt" "net" "os" "strconv")// 指定一个命令行参数的名字var port intfunc Init() { flag.IntVar(&port, "port", 8081, "set your server port")}func main() { // 初始化命令行变量 Init() flag.Parse() // 监

2020-12-27 14:49:40 182

原创 寻找有序数组中元素第一次出现的索引和最后一次出现的索引

    有序数组 比如 [1,2,3,4,4,4]    这个在js里面可以直接使用findIndex与lastIndexOf来求出,如果我们自己用代码实现该如何做呢?    看到有序数组的查找,没错,二分 二分,对于有序的数据,总能用二分去解决。findIndex的实现代码:var findFirstIndex = (arr, target) => { let l = 0 let r = arr.length - 1 while(l <= r) { let mid = Ma

2020-12-12 23:59:20 519

原创 计数排序

为什么记录这个在做 leetcode 561 题的时候,第三种解法,看了很久才明白,是做了一次计数排序。这个题,直接看第二种和第三种解法。    第二种的排序时间复杂度是O(nlogn)    第三种的排序时间复杂度是O(n)直接看计数排序代码:var countSort = (nums) => { // 这里arr的长度没有设定,利用了javascript的语言特性 // 其他语言,这里的长度应该要保证 arr[Math.max(...nums)]不会越界 let arr

2020-11-21 16:13:22 50

原创 找到一个数组的【所有奇数个数的】子数组

var getSubOddArrays = function(arr) { let res = [] for (let i = 0; i < arr.length; i++) { for (let oddLen = 1; (oddLen + i) <= arr.length; oddLen += 2) { res.push(arr.slice(i, i+oddLen)) } } return res };

2020-11-12 17:20:28 111

原创 vue3升级概览

都来自于官网的的升级文档,官网文档点击我异步组件1, overview2.x(before)// simpleconst asyncPage = () => import('./NextPage.vue')//advancedconst asyncPage = { component: () => import('./NextPage.vue'), delay: 200, timeout: 3000, error: ErrorComponent, load

2020-10-20 20:26:50 180

原创 git cherry-pick

     错误操作: 现在在dev分支,提交了一些代码。但是实际上我们应该在自己的feature分支做修改。 所以我们需要将dev这些commit合并到 feature分支上面。    注意: 是特定的commit,不是整个分支合并过去。现在我们有dev分支和feature-01分支。# 切到feature分支git checkout feature-01# 将某一次在dev分支的提交commitId合并到feature-01分支上,单次提交git cherry-pick commit_i

2020-10-17 15:53:25 41

原创 归并排序

归并排序     归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.     参考之前的,合并两个有序数组这里我们合并两个有序数组。可以做到排序操作,但是前提是两个有序序列。     对一个杂乱无序的序列,我们可以递归的将两个子序列排列成有序的序列, 子序列可以通过二分法再次划分为两个子序列,直到最后两个子序列只有一个数据。 分治法的应用。实现 /** * 归并排序 - 递归方式实现 */ var sort = (arr) => {

2020-10-11 15:39:22 76

原创 快速排序

快速排序    快速排序和冒泡排序都是是交换排序中的一种。基本思想    1,在数列中找准一个基准点pivot。    2,将比基准点小的所有值放在基准点的左边,将比基准点大的放在基准点的右边【相等的可以任意放置】。    3,对左边的子数列和右边的子数列,重复1到3的步骤。分而治之,是的递归来了。代码 var sort = (arr, low, high) => { if (!arr || arr.length === 1) return arr // 重要的边界条件

2020-10-10 14:37:29 39

原创 冒泡排序

冒泡排序(英语:Bubble Sort)又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。假定数组为arr,长度为n第1个元素开始,比较n-1次,第1次走完,最大(or最小)已经在最后一个位置上。第2个元素开始,比较n-2次,第2次走完,第二大(or第二小)在倒数第二个位置上。…第n-1个元素开始,比较1次。第n个元素,不需要比较。代码长这样:var

2020-10-10 13:07:15 68

原创 插入排序-简单插入排序和二分插入排序

插入排序:插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。基本思想每一步都是将 待排序的一个数据,插入到一个已经有序的数据序列里面。直到所有的数据全部插入为止。类似于打牌【斗地主】,每摸一张就按照顺序放到位置。每

2020-10-08 15:06:07 103

原创 数据结构与算法-平衡二叉树【二十】

前景提要因为线性表(假定长度为n)在动态的添加和删除的弊端,所以我们引入了二叉搜索树,但是二叉搜索树有多种形式最好的情况是 线性表的 判定树最坏的情况是这颗二叉搜索树的深度为n,每一层一个节点。最好的情况是这样:ASL = log2(n + 1) - 1 数量级为O(log2n) 5 第一层 / \

2020-09-24 21:40:05 49

原创 数据结构与算法-BST二叉搜索树(二叉排序树)【十九】

线性表在添加和删除的效率较低,所以我们考虑特殊的树,考虑这种存储结构,提高查找效率,以及动态添加和删除的效率。这时会引入 【二叉搜索树】二叉搜索树的定义定义【仍然是递归定义】:左子树为空,那么左子树上的所有值一定是小于根节点的值。右子树不为空,那么右子树上的所有值一定是大于等于根节点的值。左右子树也是一颗二叉搜索树。二叉搜索树 也称为二叉排序树例子: 5 第一层 /

2020-09-13 18:00:44 80

原创 数据结构与算法-线性表的查找【十八】

查找:在特定的数据集合中,找到复合要求的数据。查找的效率判断:结构里面有一个专门的词汇,平均查找长度。通过这个关键指标去判断。平均查找长度关键字的平均比较次数,也称为平均查找长度。查找到关键字的平均比较次数。【很明显这个值越小查找效率越高】n 为总记录的个数;pi 查找到第i个记录的概率(通常pi就是1/n);ci 找到第i个记录需要比较的次数;线性表的查找线性表的查找有三种方式:顺序查找折半查找(二分查找)分块查找下面分别介绍1,顺序查找    线.

2020-09-10 22:06:28 323

原创 数据结构与算法-最小生成树【十七】

生成树:所有的点由边连接在一起,但是【不存在回路】的图。生成树的特点:树是 图的 极小连通子图, 去掉一条边,则非连通。在生成树中再加一条边必然形成回路。生成树中任意两点之间的路径是唯一的。一个有n个顶点的连通图的生成树有n-1条边。...

2020-08-30 17:00:57 56

原创 数据结构与算法-图的广度优先遍历【十六】

图的广度优先遍历与树的广度优先遍历类似,用队列来实现。节点出队,节点的所有邻接点入队。如此循环,直到队列为空。还是以邻接矩阵表示图,咱们用下面这个图。用邻接矩阵去表示这个图,邻接表的广度优先遍历思路是一致的,只是去找邻接点的时候邻接表会更快。图的定义: function Graph(vexs = [], arcs = []) { this.vexs = vexs this.arcs = arcs }vexs 存储了4个顶点:const vexs= [

2020-08-16 15:38:11 214

原创 数据结构与算法-图的深度优先遍历【十六】

对于图的遍历,也分为深度优先遍历与广度优先遍历。深度优先遍历:一条路走到黑,直到没有遍历过过的节点,那么回退,不然一直往下面走。还是以之前的这个邻接矩阵为例:以这个邻接矩阵为例:图的定义: function Graph(vexs = [], arcs = []) { this.vexs = vexs this.arcs = arcs }vexs 存储了4个顶点:const vexs= [ 'A', 'B', 'C', 'D']arcs是一个二维数组

2020-08-16 15:24:25 368

原创 数据结构与算法-根据给定的的路径还原一棵树

这一组路径肯定是以rootNode为起点,但是不一定以叶子 节点结束,给的示例数据如下,a是b的父亲节点,a是e的父亲节点,以此类推arr[i+1]的元素是arr[i]的孩子: const arr = [ ["a", "b"], ["a", "e"], ["a", "f"], ["a", "i"], ["a", "i", "j"], ];代码: // 已知所有的路径求一颗完整的树function getTreeByPaths(arr) { //

2020-08-15 15:49:42 150

原创 数据结构与算法-图论 邻接表【十五】

链式存储 (链式表示)    上一话说的是邻接矩阵方式去存储图,这一话用链表去存储图链式表表示法----【邻接表/ 邻接多重表 / 十字链表】邻接表    将所有的顶点数据仍然存放在一维数组内。    这个一维数组比较特殊,顶点数组的每个元素都指向一个邻接点单链表。咱们以上一个邻接矩阵用到的一个有向图和无向图为例:无向图 的邻接表第一个无向图的邻接表可以这样表示:A邻接于B->C->NULLB邻接于A ->C ->

2020-08-02 17:23:42 540

原创 数据结构与算法-图论 邻接矩阵【十四】

图的定义数据之间的关系可能是多种的,逻辑结构上来讲,分几种:线性结构非线性结构 【包括三种: 集合结构,树形结构,图状结构】线性结构线性结构的几种表现方式,前面大部分都了解过了:线性表 (List)栈(特殊的线性表) 【先进后出】 (Stack)队列(特殊的线性表)【先进先出】 (Queue)字符串,数组,广义表【广义表是特殊的线性表,广义表的元素可以是子表,子表的元素也可以是子表;如果广义表的每个元素都是原子,它就变成了线性表】非线性结构非线性结构中的 树(clic

2020-08-01 14:53:41 331

原创 【CSS】不定高度的弹框水平垂直居中

why   对于特定的高度的弹框这个问题很好处理,计算好弹框离父元素的的高度,使用margin处理即可。   但是为了通用性,不必每一次都去计算,有没有通用一点的方法呢,是有的, 通过vertical-aign来做。   css 代码: .container { position: fixed; top: 0; right: 0; bottom: 0; left: 0; /* for IE8 */ background: url(data:image/

2020-07-25 10:54:13 554

原创 数据结构与算法-哈夫曼编码【十三】

定义   哈夫曼树: 带权路径长度和最短的二叉树,也称之为最优二叉树。   哈夫曼编码:在网络传输过程中,对所有的信息进行编码,所有的信息都将转换为0101的二进制形式,根据信息出现的频率,将信息构造成长度最短的编码。原理   比如字符ABCDEBAADF 的字符集合。传输过程中,我们将每一个字符转换成二进制的形式,但是同时要保证这个二进制数据的长度最小。【保证传输的效率】   这就可以和哈夫曼树联系起来,出现概率最大的字符离根节点最近,出现概率最小的字符离根节点最远;

2020-07-13 21:31:12 169

原创 数据结构与算法-构造哈弗曼树【十二】

哈弗曼树的定义哈佛曼树的定义: 带权路径长度最短的树。每一个叶子节点有一个权重值,权重值 乘以 路径长度【路径长度指的是根节点到该节点的路径长度】 ,所有叶子节点的 带权路径长度 之和最小的树,称之为哈弗曼树,也称之为最优二叉树。n为所有叶子节点的个数,w为该叶子节点的权重,length©为该叶子节点的路径长度,改图来自于维基百科。...

2020-07-04 21:22:08 143

原创 数据结构与算法-树与二叉树的相互转换【十一】

一个普通的树可以转换成一个唯一的二叉树,原则就是:左孩子 右兄弟。一个节点的左子树的根节点,是这个节点的孩子节点的第一个,这个节点的右子树的根节点,是这个左子树的根节点的兄弟节点。普通的树转化为二叉树二叉树的节点定义: // 二叉树的节点定义function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) th

2020-06-27 15:00:25 362

原创 数据结构与算法-根据后序遍历和中序遍历的结果构造一颗二叉树【十】

在这里已经确定了思路: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 929

原创 【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 339

原创 【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 109

原创 数据结构与算法-求二叉树的最大深度,总节点个数,叶子节点个数【九】

标签(空格分隔): 二叉树深度 节点对应着leetcode的题目编号是: 104,222思路一这3个问题,最简单的办法就是定一个全局变量,然后遍历整棵树,最后对全局变量进行处理或者返回即可。【可以理解为自上而下,从根节点开始往下面走】求二叉树最大深度: var maxDepth = (root) => { if (!root) return 0 const arr = [] // 遍历所有,直到叶子节点 var helpFunc = (node, i

2020-05-24 12:49:18 2476

原创 数据结构与算法-复制二叉树【八】

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 228

原创 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 82

原创 数据结构与算法-递归与非递归方式实现 先序-中序-后序遍历二叉树【八】

标签(空格分隔): 先序遍历 后序遍历 中序遍历 深度优先遍历 递归 非递归上一篇文章已经说过了,遍历树(二叉树是树的一种特殊情况)有深度优先遍历和宽度优先遍历。###深度优先遍历深度优先遍历 根据访问每个根节点与 左子树/右子树的顺序 分为 先序,中序,后序。深度优先遍历有递归和非递归的形式。二叉树的节点定义长这样: /** * Definition for a binary tree node.*/ function TreeNode(val) { this.val

2020-05-17 15:11:41 334

原创 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 673

原创 数据结构与算法-遍历树,先序(或后序)与中序确认一颗二叉树【七】

标签(空格分隔): 树的遍历树的遍历访问每个节点,并且只能访问一次。遍历方式深度优先遍历深度优先遍历 (英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其...

2020-04-19 16:15:58 282

原创 数据结构与算法-树的定义【七】

标签(空格分隔): 数据结构与算法树的定义栈和队列的数据元素之间的关系从逻辑结构上来看是线性结构,就是一一对应关系。而树型结构的逻辑结构就不是一对一了,是一对多。这个链接里面介绍了,线性结构。现在讨论的树就是非线性结构中的一种【树形结构】。参考线性表的特性,线性表里面的元素,只能最多只能有一个前驱节点和一个后继节点。但是树形结构里面的元素,至多一个前驱节点,但是可以有多个后继节点。树是...

2020-04-19 14:09:50 114

spring 3.2.0参考手册

这是spring 3.2.0 帮助文档,中文版本的,打开请去掉 打开总是询问这个选项 不然会打开失败

2014-01-07

servlet 处理上传文件所需的两个包

这两个包 在处理上传 文件的时候用的到 web 处理中

2014-05-14

博客-markdown文章的字体能小一点不?

发表于 2020-09-10 最后回复 2020-09-10

求救.如何用msbuild发布一个web application

发表于 2015-06-11 最后回复 2015-06-11

ie下获取不到textarea的焦点

发表于 2015-01-12 最后回复 2015-01-13

如何解析放在httpresponsemessage里面的content

发表于 2014-07-23 最后回复 2015-01-12

eclipse 中文乱码

发表于 2014-04-24 最后回复 2014-07-18

图片轮播在谷歌浏览器里面出现错误?求大神帮助

发表于 2013-11-26 最后回复 2014-04-24

各位大牛

发表于 2013-11-06 最后回复 2014-04-24

设置了setautocommit为false,最后直接关闭连接,会提交不

发表于 2013-10-17 最后回复 2013-10-20

各位大神 生成彩票的简单代码 一直错误 求帮助

发表于 2013-10-10 最后回复 2013-10-11

java线程的一个题(菜鸟求助)

发表于 2013-10-03 最后回复 2013-10-06

空空如也

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

TA关注的人 TA的粉丝

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