GitBook

1.1排序算法的稳定性

眉间皱痕 提交于 2020-08-10 21:37:28
1.算法 1.1排序算法的稳定性 1.2二分法 1.3归并排序法 1.4归并排序法 1.5冒泡排序法 1.6选择排序算法 1.7插入排序法 2.树和树算法 2.1树的概念 2.2二叉树 2.3树的遍历 Published with GitBook 1.1排序算法的稳定性 排序算法的稳定性 稳定性: 稳定排序算法会让原本有相等键值的记录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的记录R和S,且在原本的列表中R出现在S之前,在排序过的列表R也将时在S前面。 当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数对将要以他们的第一个数值来排序。 (4,1) (3,1) (3,7) (5,6) 在这个情况下,有可能产生两种不同的结果,一个是让相等键值的记录维持相对的次序,而另外一个则没有: (3,1) (3,7) (4,1) (5,6) (维持次序) (3,7) (3,1) (4,1) (5,6) (次序改变) 上述的次序改变情况就是属于不稳定情况 来源: oschina 链接: https://my.oschina.net/u/4411146/blog/4333980

1.2二分法

末鹿安然 提交于 2020-08-10 19:43:28
1.算法 1.1排序算法的稳定性 1.2二分法 1.3归并排序法 1.4归并排序法 1.5冒泡排序法 1.6选择排序算法 1.7插入排序法 2.树和树算法 2.1树的概念 2.2二叉树 2.3树的遍历 Published with GitBook 1.2二分法 二分法查找 适用场景:在已经排序好的数据里,如顺序表里查找 操作思路 通过列表的首尾位置索引后相加,除以二,向下取整(“//”)。判断出二分法后的索引位置是否是查找的目标,若不是就根据目标大小与当前索引位置比较,判断使向前还是向后索引,如此循环。 注意:循环退出的条件 1.递归法实现的代码: 2.非递归法实现的代码: 时间复杂度 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 来源: oschina 链接: https://my.oschina.net/u/4370783/blog/4333981

运维之etcd经验

我是研究僧i 提交于 2020-08-09 16:04:15
前言 etcd 是一个不错的注册中心。作为团里里面第一个试水的小组,我们是遇到不少问题。 etcd中文文档 etcd中文文档 etcd官方英文文档 安装细节 没有使用官网的方式,而是使用读取配置文件的方式,这种方便管理,配置等。 创建目录,下载,解压 设置API版本号 vim /etc/profile export ETCDCTL_API=3 source /etc/profile 创建数据,配置,日志文件目录 创建配置文件 单节点配置文件 集群配置文件 把配置写入到配置文件里面 把etcd 与etcd-cli变成命令 启动etcd 前端启动,注意启动后 ./etcd --config-file etcd.conf 后台启动并且开启远程访问 nohup ./etcd --config-file ./conf/etcd.conf > ./logs/etcd.log 2>&1 & 集群前端启动,注意启动后 ./etcd --config-file etcd.cluster.conf 集群后台启动并且开启远程访问 nohup ./etcd --config-file ./conf/etcd.cluster.conf > ./logs/etcd.log 2>&1 & 注意:启动后关闭不了,直接杀进程。开启远程访问需要带命令。 8,. 租约 9. 网络 问题 etcd API版本问题

龙小树|Markdown语法

断了今生、忘了曾经 提交于 2020-08-06 06:31:13
本来我是打算先写一篇有关于R的,然后再写markdown相关语法,进而去衔接一些应用包,但是由于后续进展不太顺利,导致我自己打算改变一下发布的顺序;但是markdown又是用的频率非常高的一种语言,相比于WDL,WDL是真搞。。。。 所以就先发布markdown的东西,后续的我在考虑考虑该怎么写,请原谅我这个菜鸟新手的知识库较浅的事实。 ------------------------------------------------------------------------------------------------------------------ 以下是实际内容 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gruber)创建。 Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。 Markdown 编写的文档后缀为 .md, .markdown。 Markdown 应用 Markdown 能被使用来撰写电子书,如:Gitbook。 当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、简书、reddit、Diaspora、Stack Exchange

java并发编程基础

[亡魂溺海] 提交于 2020-08-04 23:21:00
内容简介 本文比较长,主要介绍 线程的基本概念和意义、多线程程序开发需要注意的问题、创建线程的方式、线程同步、线程通信、线程的生命周期、原子类等内容。 这些内容基本都是来自《java并发编程艺术》一书,在此感谢,我是在微信读书免费看的,所以算是白嫖了。部分源码的解读是笔者自己从jdk源码扒下来的。 线程的定义与意义 线程的定义 是轻量级的进程,线程的创建和切换成本比进程低 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等 是操作系统能够进行运算调度的最小单位 java程序至少有一个线程main,main线程由JVM创建 为什么要有多线程 可以充分利用多处理器核心 更快的响应时间,可以将数据一致性要求不强的工作交给别的线程做 更好的编程模型,例如可以使用生产者消费者模型进行解耦 并发编程需要注意的问题 上下文切换 cpu通过时间分片来执行任务,多个线程在cpu上争抢时间片执行,线程切换需要保存一些状态,再次切换回去需要恢复状态,此为上下文切换成本。 因此 并不是线程越多越快 ,频繁的切换会损失性能 减少上下文切换的方法: 无锁并发编程:例如把一堆数据分为几块,交给不同线程执行,避免用锁 使用CAS:用自旋不用锁可以减少线程竞争切换,但是可能会更加耗cpu 使用最少的线程 使用协程:在一个线程里执行多个任务 死锁 死锁就是线程之间因争夺资源,

GitBook + Typora 部署我的markdown文档

梦想与她 提交于 2020-07-29 05:59:14
Typora: 跨平台的markdown编辑器 GitBook: 基于 Node.js,所以我们首先需要安装 Node.js,然后安装gitbook-cli 部署环境 nodeenv envnode # 创建环境 . envnode/bin/activate # 切换到当前虚拟环境 npm config set registry=http://registry.npm.taobao.org -g npm install -g gitbook-cli # 更换国内源,并安装gitbook gitbook serve # 查看 http://localhost:4000 创建文档工作区 mkdir ~/Desktop/mybook gitbook init # 初始化 gitbook serve --port 12345 # 指定端口运行服务 gitbook serve 命令,然后在浏览器地址栏中输入 http://localhost:4000 便可预览书籍。 Typora编辑文档 安装插件 book.json { "title": "Mybook", "author": "LJ", "description": "markdown笔记", "language": "zh-hans", "plugins": [ "-lunr", "-search", "search-pro", "

java线程池原理解析

青春壹個敷衍的年華 提交于 2020-05-09 10:40:43
五一假期大雄看了一本《java并发编程艺术》,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似。 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一个比喻来描述一下线程池,中间有一些名词你可能不是太清楚,后边源码解析的部分会讲到。 你可以把 线程池 看作是一个 研发部门 ,研发部门有很多 程序员(Worker) , 他们在一个 大办公室里(HashSet workers) 。程序员干不完的 需求 (Runnable/Callable)放在 需求池(workQueue) 里排队。每个研发部都配置有 骨干程序员数量(corePoolSize) 和 最大能容纳的程序员数量(maximumPoolSize) 。具体要做的任务就是 产品的需求 。 new 一个线程池相当于 创建 了一个研发部,创建研发部时需要指定骨干程序员数量,最大能容纳的程序员数量,需求池用哪种(BlockingQueue),如果忙不过来的需求怎么给产品回复(拒绝策略)等等内容。刚开始这个研发部一个程序员也没有。 当产品给这个研发部提一个需求时(当然肯定不会只提一个,他们会不断的提需求。这里以提一个需求为例) 首先会看骨干程序员招聘满了没。 如果没满,会招聘一个 骨干程序员 ,招聘进来就让他不停的工作(很残酷啊),干完刚派过来的任务他会 主动在需求池找 下一个需求来做(好员工)

Wiki系列(一):Wiki系统选择

南笙酒味 提交于 2020-05-08 18:54:00
> 随着工作和项目经验的积累,有很多知识点需要整理,其中有关开发或者技术方面的,我想搭建一个 Wiki 系统,既可以方便自己查询,也给有需要的人参考,工欲善其事必先利其器,所以这篇就来写下 Wiki 系统的选择。 待选 首先,我结合已知的第三方 Wiki 系统,以及网上搜索的比较火的开源项目,整理出以下的待选列表。 语雀 看云 Notion GitBook VuePress docsify 筛选 接下来从不同方面对上面的待选列表进行逐一筛选。 自定义程度 第三方 Wiki 系统,如「 语雀 」和「 看云 」,我在使用过程中发现以下几点不足: 数据存于第三方服务器,文件归属上感觉不是自己的。 自定义域名等功能是有限制或者收费。 页面自定义程度不高。 基于以上问题,我选择放弃第三方的 Wiki 系统,转而使用开源项目搭建自己的 Wiki。 产品定位 「 Notion 」从去年开始在国内逐渐变得很火,虽然可以用来做 Wiki,但是比 Wiki 更全,更强大,但仅仅作为 Wiki 又显得不够简洁,不太像一个 Wiki,这是我放弃 Notion 的一个原因。 可以看下少数派的这篇文章「 想要玩转 Notion?你需要这份快速上手指南 」,就能理解我说的不简洁的意思了,当然并不是说 Notion 不好,只是在我看来做 Wiki 可能过于「重」了。 访问速度 「 Notion

【开发工具】最强Git使用总结

允我心安 提交于 2020-05-05 01:03:40
<span style='color:red;font-size:25px;'>最全的Java后端知识体系</span><span style='color:red;font-size:25px;'> https://www.pdai.tech </span>, <span style='color:red;font-size:25px;'>每天更新中...</span>。 Git是分布式代码托管的标杆,这里将提供如何学习Git,以及Git工作流的总结,和常用的操作命令。 -----2018年1月 @pdai [TOC] 必读材料 如果要问一本就可以学习Git的书或者文章,毫无疑问我会推荐Git Pro2,绝对是良心之作啊 Git Pro2英文Github仓库 https://github.com/progit/progit2 Git Pro2中文Gitbook https://bingohuang.gitbooks.io/progit2/content/01-introduction/sections/about-version-control.html Git Pro2对应的中文Markdown版本的仓库地址 https://github.com/bingohuang/progit2-gitbook Git Pro中文阅读 http://git.oschina.net