自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 redis雪崩、穿透、击穿和解决方案

1. redis雪崩大量的缓存数据同时时间失效,导致用户直接发起大量请求到数据库生成随机失效的缓存时间数据,使缓存不会在同一时间失效集群部署,热点的key分别在不同的节点上不设置缓存失效的时间定时任务更新缓存的数据2. redis穿透用户请求数据,例如ID为负数,不存在缓存里,也不存在数据库里,就会造成缓存击穿无意义的数据放入缓存,下一次相同的请求就会命中缓存IP过滤参数校验布隆过滤器3. 击穿由于缓存的热点键到时失效导致用户的请求直接访问数据库使用永久缓存用分布式.

2020-11-11 10:11:39 348

原创 Mybatis配置文件、生命周期、关联、动态SQL和缓存

1. Mybatis核心的配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="db.p

2020-10-26 21:56:06 248

原创 快捷键及Java基础知识(持续更新中...)

1. 电脑快捷键alt + f4 关闭浏览器;window + e 打开我的电脑ctrl + shift + esc 任务管器理2. dos命令盘符切换 盘符名称 + :dir:查看盘符下所有的文件cd 切换目录cls 清屏exit 推出终端ipconfig 查看当前电脑ipmd 创建一个文件夹创建一个文件 cd>+文件名+后缀del 删除文件rd 删除文件夹3. idea常用的快捷键ctrl + h 查看类的继承关系4. Java的数据类型1

2020-10-26 19:14:29 245

转载 Mybatis流程

2020-10-20 18:34:21 146

原创 删除链表中的节点和删除链表中的重复元素

1. 删除链表的节点思路:当我们要删除节点i,先把i的下一个结点j的内容复制到i,然后把i的指针指向节点j的下一个节点。此时再删除节点j,其效果刚好把节点i删除了;当删除的节点位于链表的尾部,从投头顺序遍历得到该节点的前序节点,并完成删除;当链表只有一个节点的时候,把链表的头结点设置null。//代码来自 https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/solution/cong-on-dao-o1-by-ml-z

2020-10-11 12:18:33 212

原创 打印1到最大的n位数

1. 字符串模拟数字加法第一步:字符串表达的数字上模拟加法第二步:字符串表达的数字打印出来public static void printToMaxOfDigits(int n) { if (n <= 0) return; char number[] = new char[n]; //使用数组来存储大数 for (int i = 0; i < number.length; i++) { number[i] = 0;

2020-10-08 19:55:50 130

原创 数值的整数次方非递归和递归的实现方式

1. 非递归全面但不够高效的解法 static double powerWithExponent1(double base, int exponent) { double result = 1.0; for (int i = 1; i <= exponent; i++) { result *= base; } return result; } static boolean gInvalidInput

2020-10-07 19:52:03 172

原创 位运算、二进制中的1的个数和位运算的相关题目

1. 与、或、异或的运算规律与(&)或(丨)异或(^)0 & 0 = 00 丨 0 = 00 ^ 0 = 01 & 0 = 01 丨 0 = 11 ^ 0 = 10 & 1 = 00 丨1 = 10 ^ 1 = 11 & 1 = 11 丨 1 = 11 ^ 1 = 02. 二进制中的1的个数2.1 可能引起死循环的解法思路:先判断整数二进制表示中最右边一位是不是1;接着把输入的整数右移一位,此时原来处

2020-10-06 20:13:50 380

原创 动态规划、贪婪算法、剪绳子

1.动态规划使用条件:问题能够分解成若干个子问题,并且子问题之间还有重叠的更小的子问题,就可以考虑使用动态规划来解决这个问题。特点:求一个问题的最优解;整体问题的最优解是依赖各个子问题的最优解;大问题分解成若干个小问题,这些小问题之间还有相互重叠的更小的子问题;从上往下分析问题,从下往上求解问题。1.1 剪绳子需要O(n2)的时间复杂度和O(n)空间复杂度public class CuttingSolution { public static int maxProductCut

2020-10-05 19:26:46 262 1

原创 回溯法之矩阵中的路径和机器人的运动范围

1. 回溯法回溯法解决非常适合有多个步骤组成的问题,并且每个步骤都有多个选项。用回溯法解决的问题的所有选项可以形象地用树状结构表示。如果再叶节点的状态不满足约束条件。那么只好回溯它的上一个节点再尝试其他的选项。1.1 矩阵中的路径public class Solution1 { public boolean hasPath(char[] matrix, int rows, int cols, char[] str) { //标志位,初始化为false boole

2020-10-05 18:04:20 213 1

转载 JUC、生产者消费者问题和集合不安全问题等等等

1. 什么是JUCJUC就是java.util.concurrent下面的类包,专门用于多线程的开发。2. 并发和并行并发(Concurrent):多个线程同时操作一个资源。并行(Parallel):多个线程可以同时执行。//获取cpu的核数Runtime.getRuntime().availableProcessors()3. 线程有五个状态public enum State(){ NEW, // 新生 RUNNABLE //

2020-10-03 21:23:42 228

原创 插入、冒泡、归并、快排时间复杂度和空间复杂度

排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性复杂性插入排序O(n2)O(n2)O(n)O(1)稳定简单冒泡排序O(n2)O(n2)O(n)O(1)不稳定较复杂归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定较复杂快速排序O(nlog2n)O(n2)O(nlog2n)O(nlog2n)不稳定较复杂1. 插入排序/** * 插入排序的 ...

2020-09-25 10:51:49 5506

原创 斐波那契数列数列的三种实现方法

1. 效率很低的解法:public static long fibonacci1(int n) { if (n <= 0) return 0; if (n == 1) return 1; return fibonacci1(n-1) + fibonacci1(n-2); }缺点:递归求解的过程中,有很多的节点是重复的,而且重复的节点数会随着n的增大而急剧增加,这就意味着计算量会随着n的增大而急剧增大。2. 避免重复节点的方法从下往上计算

2020-09-22 21:36:35 703 1

原创 二分查找、归并排序和快速排序

package com.mingde.offer;/** * @author bro * @date 2020/9/22 9:23 * @desc */public class Sort { /** * 二分查找 * * @param array * @param a * @return */ public static int biSearch(int[] array, int a) { int lo

2020-09-22 20:43:41 427

原创 重建二叉树和二叉树的下一个节点

1. 重建二叉树1.1 知道前序和中序的情况下/** * @author bro * @date 2020/9/21 19:30 * @desc */public class Rebuild { public static TreeNode rebuildBinaryTree(int[] preOrder, int[] inOrder) { if (preOrder == null || inOrder == null) return null; Tr

2020-09-22 20:40:28 150

原创 链表中找到第一个含有某值的节点并删除该节点、从头到尾打印链表

1. 链表中找到第一个含有某值的节点并删除该节点方法一:分析:这道题有普通的做法,就是依次遍历节点,发现了节点的值等于给定的值,就将节点删除。但是删除节点,对于普通的链表来说,如果是头节点,还好,直接head=head.next,再依次往后遍历。这里有个极端的情况,如果头节点一直就是需要删除的节点,那么这个删除还需要做一个while循环。另外,对于普通节点的删除,我们通常只需要将当前节点的上一个节点的next指向当前节点的next即可,所以,我们在遍历的过程中,需要两个指针,一个指向当前节点,一个

2020-09-21 20:43:18 570

原创 二叉树三种遍历的6中实现方式

import java.util.LinkedList;import java.util.Stack;/** * @author bro * @date 2020/9/21 9:59 * @desc */public class Construct { /** * 先序递归 * * @param biTree */ public static void preOrderRe(TreeNode biTree) { Syst

2020-09-21 20:40:53 176

原创 数组中重复的数字、二维数组中的查找和替换空格以及两个有序数组A1A2的合并

1. 数组中的重复数字解法一:将数组排序,快排,排序一个长度为n的数组需要O(nlogn)的时间。解法二:利用HashMap,记录每个数字出现次数,第一个大于2的即可返回。时间复制度为O(n),需要大小为O(n)的哈希表为代价。其实也是一种通用思想,题目条件中有“一个长度为n的数组里,所有数字都在[0,n-1]”。那么我们可以不开辟新的存储空间,就可以在O(n)时间复杂度里完成本题。即从头遍历,目的是让每个位置都存其对应的数值,比如a[0]存0,a[3]存3。/** * @author br

2020-09-20 19:56:31 378 1

原创 List、Stack、Queue、Set和Map定义和常用方法

集合Java容器类库中的两种主要类型每个槽只保存一个元素Collection:描述所有序列容器的共性的根接口;List:以特定的顺序保存一组元素;Set:元素不能重复;Queue:只允许在容器的一端插入对象,并从另一端移除对象。每个槽内保存了两个对象Map:键与之相关联的值。List方法摘要:add(E e):将指定的元素追加到此列表的末尾(可选操作);contains(Object o):如果此列表包含指定的元素,则返回 true;remove(int i.

2020-09-12 20:08:39 4235

原创 多线程使用方式,多线程的通信及多线程常用方法

多线程1.进程(Process)和线程(Thread)进程:是执行程序的一次执行过程,他是一个动态的概念。是系统资源分配的单位。通常一个进程中可以包含若干个线程,当然一个进程中至少有一个线程。线程是CPU调度和执行的单位。默认线程:用户线程,守护线程。创建线程的方式:方法一:自定义线程类继承Thread类重写run(),编写线程执行体创建线程对象,调用start方法启动线程。注意:线程开启不一定立即执行,由CPU调度执行。方法二:定义一个类实现Runnable接口实

2020-09-08 20:42:20 360

原创 JVM知识点学习

JVM知识学习1. JVM的位置(jre中)运行在操作系统之上(window,Linux,Mac…),操作系统运行在硬件体系之上。2. JVM体系结构 注意:栈,程序计数器不可能存在垃圾回收JVM调优大部分是在调堆3.类加载器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVEfvfj4-1598964975996)(./类加载器.png)]作用: 加载class文件虚拟机自带的加载器启动类(根)加载器 BootstrapClassLoad

2020-09-01 21:01:45 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除