鉴于数据库(一)的知识点,我们再补充一些关于数据库结构优化以及索引支持的相关知识点。
MySQL高级部分(一)
双十一的时候,交易量超千亿,那么这么多数据是怎么处理的呢?MySQL作为主流数据库,不仅要会简单的应用还要深入了解一些深层次的数据相关的知识,例如高可用高并发知识点。鉴于此我们就来看看其深层次的东西。
Maze_Algorithm_Demo
走迷宫是个很有趣的问题,包括了寻路的过程,路径的选择,还有最短路径问题的求解。其实就是离散数字中的动态规划问题。但是直接写代码的问题就是没有视图的冲击感和成就感,因此鉴于学习了相关的代码逻辑,来写一个基于视图的走迷宫问题。
What_about_the_DNS
你可曾想过信息传输的时候网络是如何确定目标主机的?那么来类比一下我们人类,当你想要联系某个人的时候,你是如何做的呢?也许你会打开手机联系人,搜索某人手机号,然后拨通,亦或者是点击WeChat找到某人微信号语音通话。凡此种种,类比于计算机上,我们来看看是如何做到的。
SMTP_in_ApplicationLayer
电子邮件大家再熟悉不过,业务分发或者是节日祝贺大家都使用过电子邮件的业务,那么电子邮件的分发是基于什么可能关注的人并没这么多,亦或者思考它和实时通信的QQ或者WeChat有什么区别呢?鉴于此来介绍一下计算机网络中基于应用层的SMTP协议。
MergeSort_Algorithm_Demo
首先呢我们要介绍一下什么是归并排序:
百度百科:
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
归并操作的工作原理如下:
第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置
第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针超出序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
环境介绍:
- 语言:Java
- 使用JDK:java 1.8
- 工具:eclipse或者IDEA都可。
- 主要技术:Swing awt
我们这里不介绍swing和awt的实现,而是直接借用模板来操作。模板中封装好了需要的一些简要实现。
需要的可以在这里下载模板源代码。
https://gitee.com/xiangzi1019/template_code/tree/master
首先介绍一下模板:
1.主要包含了一个框架AlgoFrame,其中内容主要用于绘制内部信息,和双缓存的实现。
2.AlgoVishelper看名称也可以知道,主要封装了一些帮助函数,例如绘制实体或者空心的圆、矩形、颜色等函数
3.AlgoVisualizer主要就是视图可见的操作,例如你想事先声明功能都可以写在这里,然后调用数据和帮助类就可以实现。
导入文档包之后呢,我们就先操作AlgoVisualizer类。我们根据我们的需求实现
QuickSort_Algorithm_Demo
快速排序因为实践操作的可行性被作为最好用的排序算法之一。比如Java的JDK中包含的排序算法就是基于快排的,只是有些不同。既然快速排序作用这么大,我们就实现其可视化的过程来更好的学习一下,如果想要观看过程请点击详情。