cchroot's blog


  • 首页

  • 文章树

  • 分类

  • 标签

  • 关于

  • javascript

  • vue.js

  • react.js

  • node.js

  • java

  • linux

  • arithmetic

  • tool

堆排序

发表于 2020-01-20 | 分类于 arithmetic
堆是一种特殊的完全二叉树(除了最后一层节点之外,其它层的节点必须是最大值),然后最后一层的节点必须集中在最左侧。 创建堆把 n 个元素建立成一个堆,首先我可以将这 n 个节点以自顶向下,从左到右的方式从 1 到 n 编码。这样就可以把这 n 个节点转换成为一棵完全二叉树,紧接着从最后一个非叶节点(节点编号为 n/2)开始到根节点(节点编号为1)逐个扫描所有节点,根据需要将当前节点向下调整,直到以当前节点为根节点的子树符合堆的特性: 1234// 从最后一个非叶结点到第1个结点依次进行向下调整for(i=n/2;i>=1;i--){ siftdown(i);} 最大堆所有父节点都比子节点要大: 12345678910111213141516171819202122232425262728 ...
阅读全文 »

快速排序

发表于 2020-01-18 | 分类于 arithmetic
快速排序为 O(nlogn) 时间复杂度的算法,是一种不稳定的算法,最坏的情况下会退化成 O(n^2) 的时间复杂度。快速排序其实类似于二叉树的前序遍历。 方法一算法思路,假设需要排序的数组为: “6 1 2 7 9 3 4 5 10 8”: 分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测” 先从右往左找一个小于 6 的数,再从左往右找一个大于 6 的数,然后交换它们 这里可以用两个变量 i 和 j,分别指向序列最左边和最右边。当 i 与 j 相遇的时候,将准基数 6 和 相遇点索引交换(这里是3),交换之后序列如下:“3 1 2 5 4 6 9 7 10 8”,6 左边的数都小于等于 6,6右边的数都大于等于 6 之后再以 6 为分界点,拆成 2 个序列,继续重复上面的操作,直到不 ...
阅读全文 »

归并排序

发表于 2020-01-06 | 分类于 arithmetic
算法思路归并排序为 nlogn 时间复杂度的算法,是一种稳定的算法,大部分框架源码里面的排序算法都是采用归并排序。归并排序其实类似于二叉树的后序遍历。 归并排序的思路: 首先把数组分成 2 半,然后想办法把左边的数组排序,再想办法把右边的数组排序,之后再将它们归并起来 我们对左边和右边的数组进行排序的时候,再分别把左边和右边的数组分别分成一半,然后对每一个部分先排序再归并 对于 2 中的每一个部分,依然是先分半,再排序,后归并。 重复 3,当我们分到一定细度(每一部分只有 1 个数)的时候,没一个部分都是有序的。 逐步向上归并,当归并都最后一层的时候,就是有序数组了。 归并过程 先创建一个当前需要归并后结果数组一样长度的数组,并赋值 利用新创建数组中的 [0…mid] 与 [mid+1…r] 部分进行对比 ...
阅读全文 »

前后端接口规范

发表于 2019-12-31 | 分类于 其他
前言面对项目的各种需求,使用口头约定与联调校对的前后端联调对接方式,前后端已经很难快速应对各种需求与需求变更,协作效率相对低下。为此,决定制定对接规范来提升前后端的协作效率,提高项目开发速度。 目标 尽可能的缩小沟通成本,用最少的交流来确定大部分的工作 花最少的时间写文档,尽可能的让协作人员看懂所有文档内容 熟练后不用看文档,也能知道各种接口大概的逻辑与对应的操作 提高代码可读性 前后端协作流程规范前后端团队一定时间的合作,一般可以大致规划出对于双方开发效率较优的协作流程. 将这个流程再进行优化便可落实为规范流程。 一个典型的前后端协作流程如下: 需求分析。参与者一般有前后端、测试、以及产品. 由产品主持,对需求进行宣贯,接受开发和测试的反馈,确保大家对需求有一致的认知 系统设计。讨论应用的开发设计和功能 ...
阅读全文 »

vue.extend 实现一个通用的 confirm

发表于 2019-12-17 | 分类于 vueJs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687<template> <el-dialog :modal="false" :visible.sync="visible" :width="$utils.toRem(320)" class="confirm-dialog" > <div slot="title">{{title || '提示' ...
阅读全文 »

React 小笔记

发表于 2019-12-10 | 分类于 reactJs
React 小笔记 react 组件一定需要一个根元素,Fragment 占位符可以代替 html 标签而不渲染出标签 Constructor 里面的 state 负责存储组件里面的数据 jsx 里面使用如果需要使用 js 的表达式,需要使用花括号’{}’括起来 事件绑定的时候,需要使用 bind(this) 对函数的作用域进行变更 如果需要改变 state 数据项的内容,不能直接修改,需要通过 setState 向里面传入一个对象的方式进行修改 react 中有个概念叫 immutable, state 不允许我们做任何改变,所以一般我们都是修改引用类型的副本,再进行赋值操作 jsx 中注释的写法: {/ 注释内容 /} 和 { // 注释内容 },第二种写法是单行注释,需要把注释和 {} 换行, ...
阅读全文 »

Let’s Encrypt 证书申请使用

发表于 2019-12-01 | 分类于 linux
certbot 是免费证书,但申请一次有效期只有3个月: 先安装 certbot12wget https://dl.eff.org/certbot-autochmod a+x certbot-auto ###申请证书(注意:需要把要申请证书的域名先解析到这台服务器上,才能申请): 1sudo ./certbot-auto certonly --standalone --email admin@abc.com -d test.com -d www.test.com 执行上面指令,按提示操作。 Certbot 会启动一个临时服务器来完成验证(会占用 80 端口或 443 端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。 文件保存在 /etc/ ...
阅读全文 »

git 冲突解决办法

发表于 2019-11-19 | 分类于 其他
git 冲突解决方式(方式一,目标分支有push权限) 先切换到需要合并到的目标分支 git checkout xxx(xxx为目标分支名) 拉去该分支的最新代码 git pull 将需要合并到该分支的代码(你需要提交合并的代码分支),合并到该目标分支:git merge –no-ff XXX(XXX为你的开发分支名) 查看当前合并状态 git status 用编辑器打开冲突文件进行修改 用 git diff 命令查看是否还有冲突文件 如果有冲突文件则返回第5步骤继续修改,如果没有冲突则直接在当前的目标分支提交代码 git 冲突解决方式(方式二,目标分支无push权限) 先切换到需要合并到的目标分支 git checkout xxx(xxx为目标分支名) 拉去该分支的最新代码 git pu ...
阅读全文 »

用putty连接Linux和实现windows与linux文件互传

发表于 2019-10-31 | 分类于 linux
日常常用的远程连接服务器的工具有: xhell,git bash,PuTTY,securecrt 等等,本人用的最多的是 xshell,可以直接使用命令sudo yum install -y lrzsz然后通过 rz 和 sz 命令来实现上传下载。 今天尝试 putty 的原因是家里的电脑突然无法访问阿里云,一直报 10053 的错误,但是连接别的阿里云服务器没问题,公司连接该服务器也不会报错。所以就想尝试其他 ssh 工具来连接服务器,所以便有了这篇文章。 安装使用 putty官方下载链接为: putty下载 本人是 win10 64位系统,所以直接点如下下载链接: 上面这种是下载了 putty 以及所带的其它工具,也可以往下滑单独下载所需要的工具。 所有工具一起下下来也不大,所以本人就一起下载安装了。 下 ...
阅读全文 »

Linux(centos7)下搭建SVN服务器

发表于 2019-10-25 | 分类于 linux
通过yum命令安装svnserve,命令如下:yum -y install subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行 若需查看svn安装位置,可以用以下命令: rpm -ql subversion 查看版本号: svnserve --version 创建svn版本库创建一个文件目录: mkdir /home/svn/xxx 创建svn版本库: svnadmin create /home/svn/xxx(xxxx为你预期的版本库名称,可自定义) 配置修改创建svn版本库成功后,进入 xxx 目录的 conf 目录下: cd /home/svn/xxx/conf 在 conf 目录下,一共存放三份重要的配置文件,svn 服务器配置文件(svnserve.conf ...
阅读全文 »
1…456…17
cchroot

cchroot

Your bloom is the reason of the breeze

163 日志
16 分类
21 标签
GitHub Juejin LeetCode
© 2023 cchroot
个人专属
|
主题 — NexT.Pisces v5.1.4