- 博客(15)
- 资源 (16)
- 收藏
- 关注
原创 分库分表学习
分库分表参考博客通过以下SQL能够获取到商品相关的店铺信息、地理区域信息:SELECT p.*,r.[地理区域名称],s.[店铺名称],s.[信誉]FROM [商品信息] p LEFT JOIN [地理区域] r ON p.[产地] = r.[地理区域编码]LEFT JOIN [店铺信息] s ON s.id = p.[所属店铺]WHERE p.id = ?分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组
2022-04-19 14:33:58
244
原创 前缀树和贪心算法
1.前缀树力扣地址Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie树也有它的缺点,Trie树的内存消耗非常大。基本结构如下图 :[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直
2021-09-14 01:30:04
300
原创 无规律总结的算法题
1.魔术操作给一个包含n个整数元素的集合a,一个包含m个整数元素的集合b。 定义magic操作为,从一个集合中取出一个元素,放到另一个集合里,且操作过后每个集合的平均值都大于操作前。 注意以下两点: 1)不可以把一个集合的元素取空,这样就没有平均值了 2)值为x的元素从集合b取出放入集合a,但集合a中已经有值为x的元素,则a的 平均值不变(因为集合元素不会重复),b的平均值可能会改变(因为x被取出了) 问最多可以进行多少次操作思想:要使取完一个数后 两个集合的平均值都变大 则只能取两个平均值之间的数字。
2021-08-29 23:44:44
416
原创 KMP、马拉车、滑动窗口、图、并查集
1.KMP算法参考博客问题描述:给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。java中的String的indexOf方法可以直接返回位置,但是它的方法基本是基于KMP算法的。如果用传统的暴力循环,时间效率肯定非常慢,所以我们可以使用KMP算法算法流程:(1)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0aBuPXp-1630226701641)(KMP、马拉车、滑动窗口、图、并查集.asset
2021-08-29 16:45:32
442
原创 链表算法题
1.反转链表(重点)反转链表: 输入一个链表的头节点,反转该链表并输出反转后链表的头节点。假设链表为 1→2→3→∅,反转后为 ∅←1←2←3。在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。public ListNode reverseList(ListNode head) { ListNode pre=null; Li
2021-08-26 01:17:14
176
原创 树的算法总结
写在前言(感谢代码随想录博主 博主是c++代码,此刷题总结是java代码,下文是我学习博主刷题记录的笔记)递归三部曲:找终止条件:什么时候递归到头了?思考返回值,每一级递归应该向上返回什么信息?单步操作应该怎么写?因为递归就是大量的调用自身的重复操作,因此从宏观上考虑,只用想想单步怎么写就行了,左树和右树应该看成一个整体,即此时树一共三个节点:root,root.left,root.right。1.二叉树的遍历1.递归版本1.前序遍历;先访问根结点,然后再访问左子树,最后访问右子树2.
2021-06-05 14:51:34
2900
4
原创 回溯算法总结
总结(感谢代码随想录博主 我回溯就在他那学的)回溯算法模板 看到没有 这个模板不特么就是一种尝试吗?国人还搞这么多名词三部曲:回溯函数模板返回值以及参数回溯函数终⽌条件回溯搜索的遍历过程回溯法其遍历过程就是:for循环横向遍历,递归纵向遍历,回溯不断调整结果集void backtracking(参数) { if (终⽌条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩⼦的数量就是集合的⼤⼩)) { 处理节点; backt
2021-06-01 20:35:58
371
原创 暴力递归&动态规划
暴力递归就是尝试1:把问题转化为规模缩小了的同类问题的子问题2:有明确的不需要继续进行递归的条件(base case)3:有当得到子问题的结果之后的决策过程4:返回每一个子问题的解给上级调用者暴力递归–>动态规划动态规划就是暴力尝试减少重复计算的技巧而已, 这种技巧就是一个大型套路,先写出用尝试的思路解决问题的递归函数,而不用操心时间复杂度 这个过程是无可替代的,没有套路的,只能依靠个人智慧,或者足够多的经验但是怎么把尝试的版本,优化成动态规划,是有固定套路的,大体步骤如下1)找到什么
2021-05-25 23:12:51
828
3
原创 Redis基本概念知识
一、概述参考作者( 架构师余胜军 ,写的非常好)Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。二、数据类型数据类型可以存储的值STRING字符串、整数或者浮点数LIST列表SET无序集合HASH包含键值对的无序散
2021-04-17 21:56:19
1672
2
原创 Java集合类知识
Java 容器(部分图片来源于cyc作者)一、概览容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection #### 1. SetTreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。HashSet:基于哈希表实现,支持快速查找,但不支持
2021-04-11 23:09:48
193
原创 链表基础算法题
1.反转链表(重点)反转链表: 输入一个链表的头节点,反转该链表并输出反转后链表的头节点。假设链表为 1→2→3→∅,反转后为 ∅←1←2←3。在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。public ListNode reverseList(ListNode head) { ListNode pre=null; Li
2021-04-02 14:05:09
442
原创 排序算法
1.异或异或运算的性质与扩展 用来处理奇偶数方便1)0^N == N N^N == 0 也就是说奇数次异或为最后剩下的那个数,偶数次异或为0 2)异或运算满足交换律和结合率 3)不用额外变量交换两个数 :a=a^b b=a^b a=a^b; 这样就完成了两个数的交换一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数?定义一个变量,由于偶数次异或为0,则异或数组中每个变量,剩下的那个就是奇数一个数组中有两种数出现了奇数次,其他数都出现了偶
2021-04-01 16:47:39
188
原创 Java 基础
Java 基础一、数据类型基本类型byte/8 bit 下面同char/16short/16int/32float/32long/64double/64boolean/~boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。包装类型基本类
2021-03-28 16:18:02
130
原创 NIO模型
NIO模型参考博文https://blog.youkuaiyun.com/weixin_46633487/article/details/114223239
2021-03-01 20:40:54
95
原创 jvm上篇笔记
JVM上篇学习笔记一.JVM概述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lu7ScuY1-1612097258552)(G:\typora\images\jvm_imgs\总图.png)]①. 什么是JVM?1.什么是JVM?①. JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机②. jvm是运行在操作系统之上的,与硬件没有任何关系②. Java的跨平台及原理2.Java的跨平台及原理①. 跨平台:由Java编写的
2021-01-31 20:51:37
207
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人