- 博客(13)
- 收藏
- 关注
原创 Redis 过期策略和内存淘汰
过期策略定时删除redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定时遍历这个字典来删除到期的 key。惰性删除惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除。定时删除是集中处理,惰性删除是零散处理。定期删除Redis 默认会每 100ms 进行一次过期扫描,过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。从过期字典中随机 20 个 key删除这 20 个 key
2022-01-20 21:16:32 741
原创 InnoDB 和 MyISAM 的区别
InnoDB 和 MyISAM 的区别定义InnoDB:MySQL 默认的存储引擎,是一个平衡了可靠性和高性能的通用存储引擎。从 MySQL-5.5 开始做为默认存储引擎。MyISAM:在 MySQL-5.1 及之前的版本,MyISAM 是默认引擎。因为它不支持事务和行锁并且崩溃后无法恢复导致了它的没落,当然还是有很多优点的。区别事务InnoDB 支持事物,MyISAM 不支持索引InnoDB 使用 B+ 树聚簇索引,MyISAM 非聚簇索引全文索引InnoDB 5.6 以后开始
2022-01-19 21:29:16 457
原创 MySQL索引及常见面试题
一、索引是什么?索引(Index)是帮助 MySQL 高效获取数据的数据结构,是对表中一列或多列值进行排序的结构。就比如索引是一本书的目录,可以通过目录快速查找自己想要查询的东西。二、索引为什么使用B+树?先看一下常见的索引存储结构哈希表 是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后 value 放在数组的这个位置。哈希表
2022-01-19 09:35:34 6480 1
原创 常见算法之好数对的数目
题目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组好数对并返回好数对的数目。示例1:输入:nums = [1,2,3,1,1,3]输出:4解释:有4组好数对,对应下标分别是(0,3),(0,4),(3,4),(2,5),下标从0开始示例2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例3:输入:nums = ...
2021-01-03 21:31:09 779
原创 常见算法题 - 宝石与石头
题目给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0思路:方法一:可以直接使用暴力破解,套两层循环,外层循环 S...
2020-12-18 22:47:36 541 1
原创 常用算法之验证回文串
今天给大家分享一道面试中经常碰到的简单算法题目 - 检测回文串。题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。示例1:输入: "A man, a plan, a canal: Panama"输出: true示例2:输入: "race a car"输出: false思路:利用双指针。初始化两个指针 i、j,i从字符串左侧开始,j从字符串右侧开始,我们每次将 i + 1,将 j - 1 判断两个字符是否相等,...
2020-12-11 22:53:30 477 1
原创 PHP 8.0 发布啦!
PHP 8.0 的 released 版本正式发布啦,作为世界上最好的语言!曾经我与她相爱相杀四年有余,从2015年第一次安装 PHP 5.4 写 Hello,World! 开始,昔日的“美好”现在依旧历历在目。。。闲话少述,咱们开始今天的主题。简述PHP 8.0 是 PHP 语言的重大更新!它包含许多新功能和优化点,包括参数命名、联合类型、属性、构造函数属性优化、match表达式、nullsafe 运算符、JIT 以及类型系统、错误处理和一致性方面的改进。命名参数PHP 7...
2020-11-27 22:16:32 892
原创 Go语言基础数据类型转换
前面给大家分享过Go语言中的基本数据类型(没有关注的可以看下历史消息),分别是 布尔类型、整形、浮点型、复数类型、字符串和字符类型 ,Go语言是强类型语言,不能像PHP那样可以自动转换,需要显示的进行强制转换。这里是引用Go语言基础数据类型之万丈高楼平地起数值类型之间的转换在进行数值类型转化时只需要使用要转换的对应的函数即可:v1 := uint(16) // 初始化 v1 为 uintv2 := int8(v1) // 将 v1 转换
2020-11-16 21:08:51 288
原创 常用排序算法之快速排序
前天给大家分享了归并排序,但是它不是原地排序算法,需要消耗额外的内存空间,今天给大家分享的是江湖无人不知无人不晓的"快排"–快速排序。快排是小生接触开发学会的第一个排序算法????快速排序原理 快排也用到了分治思想。快排的核心思想是:如果要排序的数组中下标从 p 到 r 之间的一组数据,我们选择 p 到 r 之间的任意一个数据作为分区点 pivot。 我们遍
2020-11-15 16:15:17 228
原创 常用排序算法之归并排序
前面给大家分享了冒泡排序、插入排序和选择排序,他们的时间复杂度都是O(n2),比较高,适合小规模的数据排序。今天我们就分享一种时间复杂度为O(nlogn)的算法,它就是–归并排序。归并排序原理它的原理比较简单,就是将一个数组从中间分为两部分然后分别进行排序,最后将排好序的两部分合并到一起,这样数组就有序了。原理如下图: 归并排序用到了分治思想,字面就是分而治之,将一个大问题分成若干个小问题单独进行处理,后面我们再单独讲下。从上图也可以看出,归并用到了递归,归并一般都是通过递归来实现的。归并是
2020-11-14 19:43:19 171
原创 常用排序算法之选择排序
前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法–选择排序。选择排序选择排序和插入排序很相似,也区分已排序区间和未排序区间,选择排序是每次从未排序区间找到最小的元素放到已排序区间的末尾。如下图:代码示例go示例:func SelectionSort(nums []int, n int) { if n <= 1 { return } for i := 0; i < n; i++ { m
2020-11-14 11:19:37 151
原创 常用排序算法之插入排序
常用排序算法之插入排序今天给大家介绍另一种排序算法,插入排序(Insertion sort)。我们先来看一个问题,如何将一个数据插入到有序数组中?我们只需要遍历这个数组找到合适到位置插入即可。这是一个动态排序过程,即动态地往有序集合中插入数据。插入排序插入排序的原理就是:将数组中的元素分为已排序区间和未排序区间两部分。初始已排序区间只有第一个元素,插入排序算法的核心思想就是取未排序区间的元素,在已排序区间中找到合适的位置插入并保证已排序区间元素一直有序。重复这个过程,直到未排序区间数据为空。如下图
2020-11-10 10:55:44 198
原创 常用排序算法之冒泡排序
常用排序算法之冒泡排序周末无事,带娃之余看到娃娃在算数,想到了排序~尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang、PHP和JS三种语言来实现下。常见的基于选择的排序算法有冒泡排序、插入排序、选择排序、归并排序和快速排序。选择排序算法通常会根据以下几个纬度来考虑:时间复杂度空间复杂度算法的稳定性(待排序序列中有值相等的元素,经过排序之后相等元素之间原有的顺序不变)时间复杂度和空间复杂度时间复杂度表示代码执行时间随数据规模增长的变化趋势几种常见的复杂度量级如下:
2020-11-09 13:46:29 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人