笔记
zhangqiang180
这个作者很懒,什么都没留下…
展开
-
集合总结
Java 集合类简介1.1 集合概览Java 集合类主要都是从 Collection 和 Map 两个接口派生而成,其中 Collection 又包含 List、Set 和 Queue,如下图。Java 集合就像容器,能够将多个同类型的对象装进该容器中,所以又叫容器。其中各集合含义如下:Map:代表具有映射关系的集合,通过 key-value 存储,其中 key 是不可重复的,用于标识集合中的每项数据,每个 key 最多只能映射一个 value;List:代表有序、可重复的集合;Set:代表无.原创 2020-11-04 22:29:43 · 201 阅读 · 0 评论 -
mysql 事务相关总结
事务隔离级别(图文详解)什么是事务?事务的特性(ACID)并发事务带来的问题事务隔离级别实际情况演示脏读(读未提交)避免脏读(读已提交)不可重复读10.可重复读防止幻读(可重复读)什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余.原创 2020-08-22 00:37:20 · 224 阅读 · 0 评论 -
字符串的最长公共子序列
审题最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离。而且,这个算法稍加改造就可以用于解决其他问题,所以说LCS算法是值得掌握的。所谓子序列,就是要保留原始顺序,但可以是不连续的。审题之后你可能会有疑问,这个问题为啥就是动态规划来解决呢?因为子序列类型的问题,穷举出所有可能的结果都不容易,而动态规划算法做的就是穷举 + 剪枝,它俩天生一对儿。所以可原创 2020-08-21 10:06:52 · 1178 阅读 · 0 评论 -
选择排序代码
/ 找到元素中最大的数 记录下标,与元素最后一个数交换;//找到剩下的元素中最大的数,记录下标,与倒数第二个元素交换 end -- (倒数第二)//依次按照上面的方法//最好最坏 时间复杂度o(n^2)public class xuanze { public static void main(String[] args) { int[] array = {56, 9, 0, 7, 23, 94, 28, 990, 56}; for (int end = a原创 2020-08-14 14:34:26 · 320 阅读 · 0 评论 -
插入排序代码
public class charu { //从第一值向前插入,后面的数字在向前面插入的时候, // 前面的数字一定已经排序好了,找一个位置将这个放入正确的位置 public static void main(String[] args) { int [] ar ={19,3,6,8,219,57,2,6,3,8}; for (int i = 0; i <ar.length ; i++) {//将a【i] 向前移动,移动到前面一个值比它小,或.原创 2020-08-14 14:33:28 · 353 阅读 · 0 评论 -
冒泡排序代码
public class Mapao { //优化 如果提前有序 可以终止 public static void main(String[] args) { int [] array ={56,9,0,7,23,94,28}; for(int end=array.length-1;end>0;end--){ // boolean sorted =true;// 每趟扫描都假定有序 for(int begin原创 2020-08-14 09:32:35 · 207 阅读 · 0 评论 -
如何实现三个窗口并发卖票安全
public class MyRunnable implements Runnable { private int tickets=100; private Object obj=new Object (); @Override public void run() { while (true){ synchronized (obj){ if(tickets>0){ tr原创 2020-08-10 22:50:59 · 163 阅读 · 0 评论 -
Hashmap map的遍历方式
map的遍历第一种:KeySet()将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key 。取到的结果会乱序,是因为取得数据行主键的时候,使用了HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的。public class Test1 { public static void main(String[] args) {原创 2020-08-10 20:39:05 · 138 阅读 · 0 评论 -
String StringBuffer StringBuilder 的区别及应用场景
面试中经常会问到他们三个的区别,我也被面到过,只讲出了其中的一些,今天做个笔记再次温故一下他们一般都是从区别说起,首先呢 String 是一个不可变量:字符串常量。StringBuffer 和StingBuilder 都是字符串变量对于三者使用的总结: 1.如果要操作少量的数据用 String 2.单线程操作字符串缓冲区 下操作大量数据用StringBuilder 3.多线程操作字符串缓冲区 下操作大量数据 用StringBufferStringBuffers 是线程安全的,只是Stri原创 2020-08-06 23:33:58 · 323 阅读 · 0 评论 -
hashma的put 方法总结
Hashmap put 方法流程图HashMap的put方法流程总结1、put(key, value)中直接调用了内部的putVal方法,并且先对key进行了hash操作;2、putVal方法中,先检查HashMap数据结构中的索引数组表是否位空,如果是的话则进行一次resize操作;3、以HashMap索引数组表的长度减一与key的hash值进行与运算,得出在数组中的索引,如果索引指定的位置值为空,则新建一个k-v的新节点;4、如果不满足的3的条件,则说明索引指定的数组位置的已经存在内容,这个原创 2020-07-25 21:01:16 · 1928 阅读 · 0 评论 -
双遍循环法实现快速排序
1)选定基准元素pivot,并且设置两个指针left和right,指向数列的最左和最右边两个元素。(2)接下来进行第一次循环,从right指针开始,让指针所指向元素和基准元素做比较。如果大于或者等于pivot,则指针向左移动;如果小于pivot,则right指针停止移动,切换到left指针。(3)left指针移动时,让指针所指向的元素和基准元素作比较。如果小于或等于pivot,则指针向右移动;如果大于pivot,则left指针停止移动。(4)直到left指针和right指针重合,将基准元素pivot与原创 2020-07-23 00:47:47 · 513 阅读 · 0 评论 -
Leetcode 最长回文子串第5题 用动态规划的解法
最长回文子串题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。第 1 步:定义状态dp[i][j] 表示子串 s[i…j] 是否为回文子串,这里子串 s[i…j] 定义为左闭右闭区间,可以取到 s[i] 和 s[j]。第 2 步:思考状态转移方程在这一步分类讨论(根据头尾字符是否相等),根据上面的分析得到:dp[i][j] = (s[i] == s[j])原创 2020-07-20 01:00:51 · 170 阅读 · 0 评论