前言
数据库是后台开发重中之重的一个环节,了解当前各种类型的数据库,并在了解各种数据库设计原理的基础上,深入学习相关优化策略,加之以实战经验,才是长久的发展之计。之后对先对关系型数据库–mysql为例进行深入学习笔记记录,毕竟开源,而且也是世界顶级的数据库,然后对非关系型数据库NoSql进行学习,以Redis为例,这些都已经接触过了,之后将做一个总结的笔记。
起今知行
数据库是后台开发重中之重的一个环节,了解当前各种类型的数据库,并在了解各种数据库设计原理的基础上,深入学习相关优化策略,加之以实战经验,才是长久的发展之计。之后对先对关系型数据库–mysql为例进行深入学习笔记记录,毕竟开源,而且也是世界顶级的数据库,然后对非关系型数据库NoSql进行学习,以Redis为例,这些都已经接触过了,之后将做一个总结的笔记。
后面准备整理一下Java基础、JVM和并发编程的知识,后面再是ssm框架。这些都是基础部分,也是最重要的部分之一。本篇从Java语言的面向对象特性开始讲诉,Java的这个特点和C#很像。Java主要有封装、继承、多态这三个特性,抽象不是特性,但是也很重要。
树也是一种重要的数据结构,它的逻辑是:除了根节点之外每个节点都只有一个父节点,根节点没有父节点,除了叶节点之外所有的节点都有一个或多个字节点。我们经常用到的是二叉树(还包括一些特殊的二叉树:二叉搜索树、大小根堆、红黑树等使用也广泛),它的遍历方式有前序遍历、中序遍历、后序遍历、宽度优先遍历。知道中序遍历和前后遍历任意其他一个,我们就能重建二叉树,这题就是已经前中序要求重建二叉树。
这道题找数组中的最小数字,类似的题目之前蘑菇街视频面试都考过,找数组中的最大的两个值或者三个值。直观解题方法就是循环一遍数组,这样的复杂度是O(n),但是由题目可知,数组已部分排序,我们利用二分查找的方法是可以减少我们的复杂度的,达到O(log n)。
剑指offer是非常经典的算法面试题,之前在牛客网上做过一遍,现在做第二遍并且分析记录。博客中还会出现数据结构和经典算法的篇幅,但是剑指offer单独拿出来,总共60多个题,分析一下,到时候也可以给师弟网友学习过程中作为参考。我自己也能熟悉面试题,巩固算法知识,保持编程状态。
链表是常见的数据结构,上面篇已经讲了字符串和数组,这题就有关链表,从数据结构中我们知道了链表的基本性质:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。