08.排序算法之选择排序
排序算法之选择排序
80000长度的数据值在[0,800000)之间的数据本机使用冒泡排序,耗时2s;
1. 选择排序1.1 基本介绍
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。
1.2 选择排序思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]arr[n-1]中选取最小值,与 arr[0]交换,第二次从 arr[1]arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]arr[n-1]中选取最小值,与 arr[2]交换,…,第 i 次从 arr[i-1]arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值,与 arr[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。
1.3 选择排序详细过程
1.4 代码实现1234567891011121314151617181920212223242526272829 ...
08.数据库设计三大范式.md
和羞走,倚门回首,却把青梅嗅。
——李清照《点绛唇》
数据库设计
百度百科数据库设计定义:
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。
1. 数据库规范化
好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化数据的设计和存储,这些规则就称为范式。
1.1 范式
目前关系数据库有六种范式:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
巴斯-科德范式(BCNF)
第四范式(4NF)
第五范式(5NF,又称完美范式)。
1.2 三大范式
数据库设计满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范 ...
09.Docker部署FastDFS
1. Docker部署FastDFS1. 查看fastdfs的镜像1docker search fastdfs
2. 拉取镜像
该版本包含Nginx
1docker pull delron/fastdfs
3. 启动tracker服务1docker run -d --network=host --name tracker -v /home/docker/fastdfs/tracker:/var/fdfs delron/fastdfs tracker
4. 启动storage服务1docker run -d --network=host --name storage -e TRACKER_SERVER=106.15.72.229:22122 -v /home/docker/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
5. 查看启动状态
6. 修改Nginx端口
(nginx默认端口为8888,如无需更改可跳过)
1234567891011121314#1.进入storage ...
09.MyBatisPlus实现复杂查询
[toc]
MyBatisPlus实现复杂查询![13 mp实现复杂查询](/medias/mybatisplus/13 mp实现复杂查询.png)
1. wapper介绍
Wrapper : 条件构造抽象类,最顶端父类。
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件。
QueryWrapper :Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作。
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper
1234567@RunWith(SpringRunner.class)@SpringBootTestpublic class QueryWrapperTests { ...
09.数据结构之稀疏数组
排序算法之插入排序
80000长度的数据值在[0,800000)之间的数据本机使用冒泡排序,耗时2s;
1. 插入排序1.1 插入排序法介绍: 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。
1.2 插入排序法思想 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时 有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
1.3 插入排序代码实现12345678910111213141516171819202122232425262728/** * 插入排序 * @param arr */ public static void insertSort(int[] arr) { //使用for循环来简化代码 for (int i = 1; i < arr.length; i+ ...
09.数据库的备份与还原
休对故人思故国,且将新火试新茶。诗酒趁年华。
——苏轼《望江南》
数据库备份和还原1. 备份的应用场景
在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。
1.1 使用DOS窗口备份与还原
DOS窗口下执行,不需要登录MySQL数据库
1234mysqldump -u用户名 -p密码 数据库 > 文件的路径;mysqldump -uroot -proot miaomiao > E:/file/bbb/miaomiao.sql-- 导出结果:数据库中的所有表和数据都会导出成 SQL 语句
还原格式,MySQL中的命令,需要登录后才可以操作
1234use 数据库;source 导入文件的路径;use miaomiao;source E:/file/bbb/miaomiao.sql;
1.2 使用Navicat备份与还原
备份–当前Navicat12版本
选中要备份的数据库,右键“ 转储 SQL文件—- ...
1.Collection集合概述
驿寄梅花,鱼传尺素。砌成此恨无重数。
——秦观《踏莎行》
## Collection 集合
1. 集合概述
集合是java中提供的一种容器,可以用来存储多个多种数据。
集合和数组既然都是容器,它们有啥区别呢?
数组的长度是固定的。集合的长度是可变的。
数组中存储的是同一类型的元素,可以存储基本数据类型值,集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
2. 集合框架
集合按照其存储结构可以分为两大类,分别是
单列集合 java.util.Collection
双列集合 java.util.Map
Collection :单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List 和 java.util.Set 。其中:
List 的特点是元素有序、元素可重复。
List接口的主要实现类有 java.util.ArrayList 和 java.util.LinkedList
Set 的特点是元素无序,而且不可重复。
Set 接口的主要实现类有java ...
1.Java及JVM简介
天上星河转,人间帘幕垂。凉生枕簟泪痕滋。
——李清照《南歌子》
天下事有难易乎?
为之,则难者亦易矣;不为,则易者亦难矣
Java及JVM简介
如果我们把Java核心类库的 API 比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程。
计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言。
垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。
1. Java-跨平台的语言
2. JVM-跨语言的平台
随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。
Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言“终身绑定”,只要其他编程语言的编译结果 ...
1.Java基础之File类
黛蛾长敛,任是春风吹不展。困倚危楼,过尽飞鸿字字愁。
——秦观《木兰花》
Java的File类
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
一个file对象代表的是硬盘中实际存在的一个文件或者一个文件夹。
无论该路径是否在在文件或者文件夹,都不会影响file对象的创建。
路径分隔可以使用”/“ 也可以使用”\“但是在java语言中,”\“具有特殊的含义,所以需要使用转义字符”\“,使用”/“的时候不需要转义
windows操作系统可以识别”/“,也可以识别”\“
linux操作系统只认识”/“
mac操作系统只认识”/“
所以开发的时候一定使用”/“
1. File类的构造方法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, ...
1.MySql高级之索引
花城人去今萧索,春梦绕胡沙。
——赵佶《眼儿媚》
MySql高级之索引1. 索引概述
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据。
一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。索引是数据库中用来提高性能的最常用的工具。
2. 索引优势劣势优势
类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。
通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。
劣势
实际上索引也是一张表,该表中保存了主键与索引字段 ...