排序(四)堆排序
排序(四)堆排序一、什么是堆堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲 堆其实就是利用完全二叉树的结构来维护的一维数组 按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆:每个结点的值都大于或等于其左右孩子结点的值 小顶堆:每个结点的值都小于或等于其左右孩子结点的值 (堆的这种特性非常的有用,堆常常被当做优先队列使用,因为可以快速的访问到“最重要”的元素) 二、堆的特点(数组实现)我们用简单的公式来描述一下堆的定义就是: 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] 小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]...
排序(一)冒泡排序,选择排序
排序(一)冒泡排序,选择排序一、冒泡排序1.1 原理比较两个相邻的元素,将值大或值小的一方交换到右侧,这样一轮下去最右边的值就会是最大或最小的值。第二次的时候就不需要比较到最后一位置。多次之后即完成排序 1.2 优点每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。 1.3...
排序(二)桶排序,基数排序
排序(二)桶排序,基数排序一、桶排序1.1 描述如果我们有N个整数,范围从min到max(min 必须为正数),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M (max - min +1),并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当Ai被读入时,Count[Ai - len]增1。在所有的输入被读进以后,按顺序扫描数组Count,打印count[i] 次 的 i + len。输出的i+len 值就是排序完成的数据。该算法花费O(M+N) 1.2代码1234567891011121314151617181920/** * 桶式排序 * @param data * @param min 最小值 * @param max 最大值 */public void bucketSort(int[] data, int min, int max) { //桶数组 int[] bucket = new int[max - min + 1 ]; // 读取源数据...
时间、空间复杂度
...
Redis安装
Redis 安装一、下载官网下载 Redis https://redis.io/download 解压至你想要放置的目录 1tar -zxvf redis-6.2.2.tar.gz 二、编译和安装需要安装的一些依赖 1sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel clang wget 1、在redis根目录,运行 make 编译项目 1234make# 如果开启传输中加密使用下面命令make BUILD_TLS=yes# make MALLOC=libc 可能你的 liunx 没有make 命令,需要安装。 安装make 后 发现如下错误 于是安装cc 命令 运行如下命令 1yum install gcc-c++ -y 再次运行 make 命令依然报错如下 。 redis编译报致命错误:jemalloc/jemalloc.h:没有那个文件或目录 于是百度了下,发现如下命令。 再次尝试如下命令。成功。 make...
springboot如何在启动时执行指定方法
springboot如何在启动时执行指定方法一、需求有时候我们希望在springboot启动的时候执行一段代码完成一个特定任务,比如打印个springboot启动成功,又或者给其他项目发个通知说我启动完成啦。这个时候可以使用以下方法 实现CommandLineRunner接口 实现ApplicationRunner接口 实现ApplicationListener接口 @PostConstruct 实现InitializingBean接口 下面我们在讲讲具体怎么使用上述方法! 二、实现CommandLineRunner接口先上代码,如下即可。 123456789@Component public class CommandRun implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("CommandRun2222"); ...
springboot配置跨域
springboot配置跨域一、使用注解 待补充 二、在WebMvcConfigurationSupport中统一配置这里说下我这里将配置的跨域放在了 applcation配置文件中 2.1 springboot 2.4之前1234567891011121314151617181920212223/** * 配置跨域请求 * @return CorsFilter */ @Bean public CorsFilter corsFilter() { // 解析yml 配置文件中的数据 String[] cors; if (globalProperties.getCors() == null || "".equals(globalProperties.getCors())){ // 如果没有配置那么允许所有跨域 cors = new String[]{"*"}; ...
Centos7.6使用yum安装mysql
Centos7.6使用yum安装mysql1、先检查是否安装了mysql123yum list installed mysql*rpm –qa|grep mysql* 2、去mysql官网下载yum源文件.rpm并安装mysql官网下载地址:https://dev.mysql.com/downloads/repo/yum/ 下载的文件为:mysql80-community-release-el7-6.noarch.rpm 下载可以通过 wget 方式,或者直接window下载后在通过其他方式上传到服务器上。 使用 yum 安装下载的源文件 1yum -y install ./mysql80-community-release-el7-6.noarch.rpm 使用如下语句查看效果 1yum repolist enabled | grep mysql.* 3、安装mysql-server1yum -y install mysql-community-server 我安装的时候出现这个问题:获取 GPG 密钥失败:[Errno 14] curl#37 -...
docker安装mysql
Mysql 新建远程用户1、查看现有用户1select host,user,authentication_string from mysql.user; 2、新建用户123格式 :create user “用户名”@”host” identified by “密码” 示例:create user "xia17"@"%" identified by "QxamoySQL666"; /* host ="localhost"为本地登录用户,host="ip"为ip地址登录,host="%",为外网ip登录*/ 3、授权123456格式: grant 权限 on 数据库名.表名 to “用户名”@”host” 示例:grant all privileges on *.* to 'xia17'@'%' ; 示例:GRANT SELECT ON card_hub_test.* TO...
Zookeeper安装
Zookeeper 安装一、下载并上传至服务器前往地址 http://archive.apache.org/dist/zookeeper 选择需要下载的版本 lg: http://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz 上传至服务器后解压 1tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz 二、配置1、进入zookeeper 的目录下 1cd /opt/zookeeper-3.7.0 2、在zookeeper 目录下新建 data 文件夹作为zookeeper的数据存储文件夹 1mkdir data 3、进入 conf 目录下,复制 zoo_sample.cfg 为 zoo.cfg 为配置文件 12cd confcp zoo_sample.cfg zoo.cfg 4、修改 zoo.cfg 中的 dataDir 属性为新的 data 入径 12vim...