- 博客(15)
- 收藏
- 关注
原创 redis详解
一、redis简介1、知识准备:数据存在磁盘里时,寻址速度为ms级,带宽为G/M。存在内存里时,寻址速度为ns级,带宽很大。磁盘有磁道和扇区,一扇区512字节,扇区小会导致索引成本变大。所以操作系统读取磁盘时,无论读多少都是最少4k从磁盘读取。随着文件变大,读取速度由于硬盘I/O的限制会导致读取速度变慢。因此,数据库出现了。数据库分为关系型数据库,以及内存级数据库。关系型数据库倾向于行级存储,表很大时会导致性能下降。如果有索引,增删改会变慢,如果查询1个或少量时会很快,但如果并
2021-05-08 10:44:47 270
原创 date与localDateTime之间的相互转换
有时想修改localDateTime的时间,但是calendar只能修改date的信息,需要把date转换成localDateTime或者把localDateTime修改为date。//date->localDateTimeInstant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime()//localDateTime->dateDate.from(localDateTime.atZo
2021-01-07 16:22:18 611
原创 java通过List.sort()进行排序
java通过list.sort()进行排序//按时间排序list = list.stream().sorted(Comparator.comparing(SiteSearch::getUpdatedTime)).collect(Collectors.toList());//先按类型,再按时间排序 list = list.stream().sorted((Comparator.comparing(SiteSearch::getModel).reversed().thenComparing(SiteSe
2021-01-06 09:33:54 349
原创 算法逻辑思维(3)排序
3.排序:经典排序算法原理解析与优劣对比二分查找要求原数组必须有序由无序到有序,是算法领域常见的一类问题,常用的排序算法有冒泡排序、插入排序、归并排序以及快速排序3.1什么是排序问题排序–让一组无序数据变成有序的过程,一般默认这里的有序都是从小到大的排列顺序衡量一个排序算法的优劣:1.时间复杂度–具体包括,最好时间复杂度、最坏时间复杂度以及平均时间复杂度2.空间复杂度–如果空间复杂度为1,也叫做原地排序3.稳定性–指相等的数据对象,在排序之后,顺序是否能保证不变3.2冒泡排序3.2.1冒
2020-11-03 11:23:55 607
原创 算法逻辑思维(2)分治
2.分治:如何利用分治法完成数据查找从定性的角度看,分治法的核心思想就是“分而治之”可以把一个大规模、高难度的问题,分解为若干个小规模、低难度的小问题很多高效率的算法都是以分治法作为其基础思想,例如排序算法中的快速排序和归并排序2.1分治法是什么?计算机求解问题所需的计算时间与其涉及的数据规模强相关。分治法的核心思想就是分而治之,可以采用同一种解法,递归地去解决这些子问题,再将每个子问题的解合并,得到的就是原问题的解。误区:当计算机性能还不错时,采用分治法与全部遍历一遍没有区别。2.2分治法
2020-11-03 09:22:30 190
原创 算法思维基础(1)递归
1.递归:如何利用递归求解汉诺塔问题?不管是数据结构还是算法思维,它们的目标都是降低时间复杂度数据结构是从数据组织形式的角度达成这个目标算法思维则是从数据处理的思路上去达成这个目标1.1什么是递归递归是指在函数的定义中使用函数自身的方法递归有两层含义:递归问题必须可以分解为若干个规模较小、与原问题形式相同的子问题并且这些子问题可以用完全相同的解题思路来解决递归问题的演化过程是一个对原问题从大到小进行拆解的过程,并且会有一个明确的终点(临界点)最后从这个临界点开始,把小问题的答案按照原路返
2020-11-02 09:02:13 289
原创 数据结构基础笔记(9)哈希表
哈希表:如何利用好高效率查找的利器1.什么是哈希表?哈希表名字源于Hash,也叫做散列表哈希表是一种特殊的数据结构它与数组、链表以及树等数据结构相比,有很明显的区别。2哈希表的核心思想数据的存储位置和数据的具体数值之间不存在任何关系在面对查找问题时,这些数据结构必须采用逐一比较的方法去实现哈希表的设计采用了函数映射的思想,将记录的存储位置与记录的关键字关联起来这样的设计方式,能够快速定位到想要查找的记录而且不需要与表中存在的记录的关键字比较后再来进行查找数组使用过数据的索引来取出数值的
2020-10-29 16:37:37 316 1
原创 数据结构基础笔记(8)树和二叉树
树和二叉树:分支关系与层次结构下,如何有效实现增删查?1.树是什么?1.1.二叉树是什么?在二叉树中,每个结点最多有两个分支,即每个结点最多有两个子结点,分别称作左子结点和右子结点。存储二叉树有两种办法:链式存储法也就是像链表一样,每个结点有三个字段,一个存储数据,另外两个分别存放指向左右子结点的指针。顺序存储法就是按照规律把结点存放在数组里,为了方便计算,会约定把根结点放在下标为1的位置。随后,B结点放在下标为2的位置。根据这种存储方式,我们发现如果结点X的下标为i,那么X的左子结点总是存放
2020-10-29 16:33:40 120
原创 数据结构基础笔记(7)字符串
字符串:如何正确回答面试中高频考察的字符串匹配算法?1。字符串是什么?一些特殊的字符串:空串,指含有零个字符的串。例如,s = “”,书面中也可以直接用表示空格穿,只包含空格的串。空格串中包含的是空格,且空格串中也可以包含多个空格例如,s =" “,就是包含了3个空格的字符串子串,串中任意连续字符组成的字符串叫做该串的子串原串通常也称为主串。例如:a = “BEI”,b = “BEIJING”,c = “BJINGEI”对于字符串a和b,由于b中含有字符串a,所以可以称a是b的子串,b是
2020-10-28 14:21:06 165
原创 数据结构基础笔记(6)数组
数组:如何实现基于索引的查找数组是数据结构中的最基本结构,几乎所有的程序设计语言都把数组类型设定为固定的基础变量类型,可以把数组理解为一种容器,它可以用来存放若干个相同类型的数据元素。例如:整型数组,字符数组,二维数组。1.数组是什么数组可以把这些具有下个同类型的元素,以一种不规则的顺序进行排列这些排列好的同类数据元素的集合就被称为数组,数组在内存中是连续存放的,数组内的数据,可以通过索引值直接取出得到。数组的索引就是对应数组空间在进行新增、删除、查询操作的时候,可以根据代表数组空间位置的索引
2020-10-28 09:27:52 125
原创 数据结构基础笔记(5)队列
队列:先进先出的线性表,如何实现增删查1.队列是什么队列是一种特殊的线性表,与线性表不同之处在于对数据的增和删操作上队列的特点是先进先出:先进:队列的数据新增操作只能在末端进行,不允许在队列的中间某个结点后新增数据先出:队列的数据删除操作只能在始端进行,不允许在队列的中间某个结点后删除数据队列存在两种存储方式,顺序队列和链式队列:顺序队列:依赖数组来实现,其中的数据在内存中也是顺序存储链式队列:依赖链表来实现,其中的数据依赖每个结点的指针互联,在内存中并不是顺序存储链式队列,实际上就是只能尾
2020-10-28 09:21:45 88
原创 数据结构基础笔记(3)栈
栈:后进先出的线性表,如何实现增删查1栈是什么栈是一种特殊的线性表栈与线性表的不同,体现在增和删的操作栈的数据节点必须后进先出后进–栈的数据新增操作只能在末端进行,不允许在栈的中间某个节点后新增数据先出–栈的数据删除操作也只能在末端进行,不允许在栈的中间某个节点后删除数据为什么要用这种受限的栈呢?从功能上讲,数组或链表可以替代栈但问题是:数组或者链表的操作过于灵活这些没有意义的接口过多,当数据量很大的时候就会出现一些隐藏的风险虽然栈限定降低了操作的灵活性,但这使得栈在处理只涉及一段新增
2020-10-27 10:27:31 190
原创 数据结构基础笔记(2)
1.1代码对数据的处理1.2数据处理的基本操作代码对数据的处理是代码对输入数据进行计算,得到结果并输出的过程数据处理的操作是找到需要处理的数据,计算结果,再把结果保存下来这个过程总结为以下操作:找到要处理的数据。按照某些条件进行查找把结果存到一个新的内存空间中。这就是在现有数据上进行新增把结果存到一个已使用的内存空间中。这需要先删除内存空间中的已有数据,再新增新的数据即,即便是很复杂的代码,对数据的处理也只有三个基本操作,增删查常用的分析方法可以参考下面的三个步骤:1.这段代码对数据进行
2020-10-26 16:36:02 125
原创 数据结构基础(1)
文章目录前言1.增删查:掌握数据处理的基本操作前言主要记录学习的第一部分:数据处理的基本操作,增删查1.增删查:掌握数据处理的基本操作 1.1代码对数据的处理 1.2数据处理的基本操作 代码对数据的处理是代码对输入数据进行计算,得到结果并输出的过程 数据处理的操作是找到需要处理的数据,计算结果,再把结果保存下来 这个过程总结为以下操作: 找到要处理的数据。按照某些条件进行查找 把结果存到一个新的内存空间中。这就是在现有数据上进行新增 把结果存到一个已使用
2020-10-26 14:05:12 73
原创 数据结构与算法学习笔记day1
代码效率优化方法论:1.复杂度1.1复杂度是一个关于输入数据量n的函数假设你的代码复杂度是f(n) ->O(f(n))O(n)表示的是,复杂度与计算实例的个数n线性相关O(logn)表示的是,复杂度与计算实例的个数n对数相关1.2复杂度计算方法遵循的原则复杂度与具体的常系数无关O(n)和O(2n)表示的是同样的复杂度多项式级的复杂度相加的时候,选择高者作为结果O(n^2)+O(n)表示的是同样的复杂度O(n^2)+O(n) = O(n^2+n)只需要通过更大变化率的二阶多项式来
2020-10-26 11:26:18 121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人