堆
堆
使用数组构建的树形结构(完全二叉树)没有父子指针的逻辑最大值、最小值堆排序优先队列堆一般分两种:大顶堆、小顶堆,两者区别在于节点的排序方式不一样。
大顶堆/小顶堆
在大顶堆中,父节点的值比每一个子节点的值都要大在小顶堆中,父节点的值比每一个子节点的值都要小
如:堆数组为:【11,9,6,4,5,3,2】在堆中,每个父节点都比子节点大,则满足定义说每个子节点都大,也就是所谓的”堆属性”。11比[9 6]大,9比[4 5]大,6比[3 2]大,小顶堆则反之。
根据属性可知,大顶堆中根节点存放的是最大的节点,小顶堆中根节点存放的是最小的节点
若为大顶堆,则根节点为最大,也就是说数组中第一个数据最大的,但是不能确定哪个叶子节点是最小,叶子节点的排序是未知的,小顶堆亦如此。
调整(堆排序)
一棵无序的树,经过多次的调整[调整为符合大顶堆/小顶堆的属性],最终会变成有序每一次的调整都得符合原则原则:从上到下,从左到右,交换根节点和末尾节点末尾节点:数组的最后一个数值(已经调整过的节点不包括在内)
如上面例子:
第一次调整:根节点【11】和末尾节点【2】交换,并把到【11】连线 ...
docker全家桶
以下内容引用官方docker:
To install Docker Engine, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested.The centos-extras repository must be enabled. This repository is enabled by default, but if you have disabled it, you need to re-enable it.The overlay2 storage driver is recommended.
服务器环境
环境:CentOS Linux release 7.9.2009 (Core)
内核版本:3.10.0-1127.13.1.el7.x86_64备注
从官方的系统环境要求可见,需要CentOS 7以上版本之前安装过CentOS 8,安装也是正常CentOS 7以下版本没有实测,应该是不兼容了
安装Docker卸载旧版本(若安装过)docker- ...
binlog恢复
前言
数据是核心,没有数据,都是空谈。只要稍有不慎,就会造成数据损失。数据误删除,误更新等,会导致数据的不一致。使用MySQL的Binlog日志可以极大可能地恢复数据因此测试下更新 删除是否可以恢复
什么是binlog简介
binlog是一个二进制文件
记录了数据更新或者删除的所有操作
主从模式使用的就是binlog同步数据
工作模式
Row level :按行记录,记录每一行数据的更新操作,再同步到slave
优点:数据记录完整性,可从日志中找到该数据行的一系列操作缺点:数据量太大,1:n的数据量
Statement level:记录更新SQL,同步SQL到salve,slave再重放一遍SQL,达到同步的效果,但是由于部分函数不支持,主从同步不建议使用
优点:数据量小,减少IO,提高性能缺点:主从数据不一致问题
Mixed: 混合模式,两种模式结合
优点:结合两种模式的优点缺点:结构复杂,解析复杂
环境
MySQL 8.0.22
Docker version 19.03.13, build 4484c46d9d
Centos 8.0
MySQL安装在Do ...
hexo部署gitee pages
目前腾讯云已经部署了一套halo的环境,之前还部署了hexo+next的环境,但是管理起来的话halo似乎更胜一筹,另外halo还出了小程序端,后面就想着尝尝鲜,然后就用到了现在。服务器明年3月到期,穷孩子续费不起服务器,所以准备把上面的东西都迁出来。以前用过github page,但是无奈它的龟速,因此放弃了现在找到了gitee page,感觉找到了新大陆,因此想着把东西都迁移到gitee上面
gitee注册
在gitee上面注册账号,账号名有用,最好起得牛逼一点。
三件套Git
几乎很多人本来就已经安装,安装方式还是那样,点点点就完了。Window安装包链接:Git其他版本就没了解过。
NodeJs官方文档
中文文档:nodejs
配置环境变量
安装完后,若查看版本信息,发现命令不存在,则需要配置环境变量,执行nodejs安装目录
配置国内镜像源npm config set registry https://registry.npm.taobao.org
不配置的话,获取某些资源会比较慢,最好配置国内资源镜像源
修改默认全局安装目录
不修改的 ...
IDEA 安装 JRebel
科普JRebel
IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目前对于idea热部署最好的解决方案就是安装JRebel插件,这样不论是更新 class 类还是更新 Spring 配置文件都能做到立马生效,大大提高开发效率。进一步说,就是Jrebel让开发更实在,随时修改,随时查看修改结果。目前测试,配置文件和类文件都能实现热部署,强烈推荐。
下载并安装 插件安装跟Eclipse安装类似,提供了两种安装方法。
在线安装 打开IDEA,Files->Settings->搜索框填Plugins 选择Browser repositories ,然后搜索框输入Jrebel,界面显示有且只有一个,然后点安装即可。
离线安装 找到最新版本,一般来说,我都会使用最新版本。
https://plugins.jetbrains.com/plugin/4441-jrebel-for-intellij
下载下来是一个zip包,然后打开IDEA ,Files->Settin ...
Centos7安装Redis
安装环境:CentOS7 64位、Redis-4.0.8
下载安装包
切换到安装目录cd /usr/local/
添加安装目录mkdir redis
切换安装目录cd redis
下载安装包wget http://download.redis.io/releases/redis-4.0.8.tar.gz
解压tar xzf redis-4.0.8.tar.gz
安装gcc如果不安装gcc 编译redis会报错yum install gcc
编译安装cd redis/redis-4.0.8/make MALLOC=libcRedis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以需要配置内存分配。不执行以上命令编译会报下面的错编译rediscd src && make install
启动redis./redis-server如上图:redis启动成功,但是这种启动方式需要一直打开窗口,不能进行其他操作,不太方便。
以后台进程方式启动redis
修改redis.conf文件vim /usr/local/redis/redis-4.0.8 ...
Centos7安装JDK1.8
安装环境:CentOS7 64位、JDK1.8
下载安装包
切换到安装目录cd /usr/local/
添加安装目录mkdir java
切换安装目录cd java
下载安装包wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz"
解压tar xzf jdk-8u161-linux-x64.tar.gz
配置环境变量
修改配置文件vim /etc/profile 添加以下配置JAVA_HOME=/usr/local/java/jdk1.8.0_161JRE_HOME=/usr/local/ ...
Centos7安装MySQL5.7
安装环境:CentOS7 64位、MySQL5.7
配置安装环境配置yum源rpm安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装MySQL源yum localinstall mysql57-community-release-el7-8.noarch.rpm
检查mysql源是否安装成功yum repolist enabled | grep "mysql.*-community.*"看到上图表示安装成功
修改MySQL版本若默认安装5.7的话就不需要修改,修改源文件vim /etc/yum.repos.d/mysql-community.repo改变enabled属性改为1即可
安装MySQL yum install mysql-community-server一轮等待后 安装成功
启动MySQL systemctl start mysqld
查看MySQL状态 systemctl status mysqld
开机启动 systemctl ...
hexo部署到腾讯云
最近发现腾讯云搞活动,然后就心血来潮买了个服务器,感觉是挺便宜的(肯定是腾讯的套路),还续费了2年,希望自己能玩好这台服务器。昨天刚买完之后,一直在想不知道用来干嘛,想到现在还是不清楚要搞些撒东西出来,所以索性就先把博客迁移到这台服务器吧。
服务器配置安装Gityum -y updateyum install -y git nginx安装git是因为hexo部署静态资源的时候需要有个git仓库安装nginx用来部署hexo静态资源文件
git安装后需要配置公钥,打开以下文件,把需要部署的客户端的公钥复制到这个文件中就行,这个操作在部署hexo的时候可以跳过openssh的密码验证。(可以不操作,操作更好)
在服务器上操作vim ~/.ssh/authorized_keys
在hexo客户端中操作
打开GIT GUI 找到HELP找到SHOW SSH KEY
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyPyy6mKAQrVQXVWCJ/2SeIDxF6a5FA8exlTTBtuAJZawpgRrnTCma ...
在线预览office
各处搜寻最佳方案 项目中需要在线预览office文档的功能,因此在网络上搜寻大量资料。最终得到以下结论
使用开源openoffice 需要搭建openoffice服务 解析office文档转成pdf 然后通过控制器响应pdf的格式输出文档 再显示到页面 缺点是 :效果不好 不推荐使用(简单的office文档或许还行)
使用第三方在线预览API 这个需要付费 推荐qq邮箱使用的永中第三方官网地址:http://dcs.yozosoft.com/注册账号可使用免费试用次数 效果还是很满意的 并且似乎支持所有格式的文档 txt…
使用微软提供url来解析office文档预览地址:https://products.office.com/zh-CN/office-online/view-office-documents-online这种方式是最省钱 省时间 缺点是有大小限制 以及文档类型(只支持office文档word,excel,ppt)官网有写 还有 解析效果不能自定义 但是效果还是蛮不错的
总的来说,如果不缺钱就选用第二种,可联系第三方是否可自定义什么 ...