mybatis-西部开源
1 Mybatis 最好的学习方式:看官方文档。 简介: 什么是 Mybatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是 apache 的一个 开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 [google code](https://baike.baidu.com/item/google code/2346604),并且改名为 MyBatis 。 如何获得 Mybatis? Maven <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis...
mysql索引专项学习
MySQL索引使用的数据结构主要有BTree索引 和 哈希索引 。 对于哈希索引来说,底层的数据结构就是哈希表, 因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快; 其余大部分场景,建议选择BTree索引。 MySQL的BTree索引使用的是B树中的B+Tree,但对于主要的两种存储引擎的实现方式是不同的。 **MyISAM:**先找key,再找data,data放的是地址 B+Tree叶节点的data域存放的是数据记录的地址。在索引检索的时候,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为“非聚簇索引”。 **InnoDB:**自己就是索引,data放的是地址记录的主键的值 ...
刷题顺序与思路
(C++)labuladong的算法小抄(C++)labuladong刷题模板框架+套路(Go)LeetCode Cookbook 牛客题霸(C++)代码随想录
暴力递归到动态优化
常见的4种尝试模型 从左往右的尝试模型 范围上的尝试模型 多样本位置全对应的尝试模型 寻找业务限制的尝试模型 暴力递归到动态规划的总纲 尝试 ==>...
暴力递归
暴力递归 思维:暴力递归实质就是尝试 概念解释: 回溯-表示大问题被拆解为小问题,小问题返回给大问题信息,就是回溯 分治:大问题被拆解成小的子问题,就是分治 步骤 把问题转化为规模缩小了的同类问题的子问题 有明确的不需要继续进行递归的条件(base case) 有当得到了子问题的结果之后的决策过程 不记录每个子问题的解(如果记录每个子问题的解,就是我们熟悉的动态规划) 汉诺塔问题 题目解释: 打印n层汉诺塔从最左边移动到最右边的全部过程 汉诺塔圆盘移动,如果杆子上没有圆盘,可以移动到该杆,如果有圆盘则必须移动比该圆盘小的圆盘到该圆盘上 思路1: 先想办法把1到N-1层圆盘移动到中间杆 再把N层的圆盘移动到最右侧的杆上...
图相关的算法
...
并查集结构
并查集 并查集基本结构和操作 有若干个样本a、b、c、d…类型假设是V 在并查集中一开始认为每个样本都在单独的集合里 用户可以在任何时候调用如下两个方法: boolean isSameSet(V x, V y):查询样本x和样本y是否属于一个集合 void union(V x, V...
贪心算法套路解题实战
会议日程安排问题 题目解释 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目宣讲。给你每个项目的开始时间和结束时间,你来安排宣讲的日程,要求会议室进行宣讲的场数最多。 返回最多的宣讲场次。 思路:本题常见的几种贪心策略, 一种是按照谁先开始安排谁, 第二种按照持续时间短的先安排, 第三种按照谁先结束安排谁。 通过验证,无需证明得出第三种贪心策略是正确的 方法一:全排列,暴力解出 方法二:写比较器,根据谁的结束时间早,来排序 居民楼路灯问题 题目解释 给定一个字符串str,只由‘X’和‘.’两中国字符构成。 ‘X’表示墙,不能放灯,也不需要点亮,‘.’表示居民点,可以放灯,需要点亮。 如果灯放在i位置,可以让i-1,i和i+1三个位置被点亮,返回如果点亮str中所需要点亮的位置,至少需要几盏灯 例如: .X…X…X…X....
贪心算法
贪心算法 基本概念 最自然智慧的算法 用一种局部最功利的标准,总是能做出在当前看来是最好的选择 难点在于证明局部最优解最功利的标准可以得到全局最优解 对于贪心算法的学习主要是以增加阅历和经验为主 解释 正例:通过一个例子来解释,假设一个数组中N个正数,第一个挑选出来的数乘以1,第二个挑选出来的数乘以2,同理,第N次挑选出来的数乘以N,总的加起来是我们的分数。怎么挑选数字使我们达到最大分数? 数组按从小到大的顺序排序,我们按顺序依次挑选,最终结果就是最大的。 本质思想是因子随着挑选次数的增加会增大,我们尽量让大数去结合大的因子。 贪心算法有时是无效的,后面会贪心算法无效的例子 贪心算法的证明问题:如何证明贪心算法的有效性? 一般来说,贪心算法不推荐证明,很多时候证明是非常复杂的。 通过下面例子来说明贪心算法证明的复杂性,从头到尾讲一道利用贪心算法求解的题目。 例子:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。 题目解释:...
二叉树的递归套路
二叉树的递归套路 简述 可以解决面试中的绝大部分二叉树(95%以上)的问题,尤其是树形dp问题 其本质是利用递归遍历二叉树的便利性,每个节点在递归的过程中可以回到该节点3次 具体步骤为: 假设以X节点为头,假设可以向X左树和右树要任何信息 在上一步的假设下,讨论以X为头结点的树,得到答案的可能性(最重要) 常见分类 与X无关的答案 与X有关的答案 列出所有可能性后,确定到底需要向左树和右树要什么样的信息 把左树信息和右树信息求全集,就是任何一颗子树都需要返回的信息S 递归函数都返回S,每颗子树都这么要求 写代码,在代码中考虑如何把左树信息和右树信息整合出整棵树的信息 Base cases: The base case is also called a stopping condition for recursive calls. It is very important to have a base case for every recursive...