自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (1)
  • 收藏
  • 关注

原创 最新IDEA2019.3.3编译Spring5源码(Spring-framework5.1或5.0)

文章目录1. 配置JDK2. Gradle环境(根据源码确定)确定gradle版本配置gradle环境配置环境变量便签1 记住以下信息:这就是等会在源码里面要修改的信息,保持版本一致。还会再来看的3. 源码配置若你在此刻已经导入IDEA,没关系版本一致:去除源码无关内容(可以不做)修改根目录下的`gradle.properties`,修改如下:源码下配置远程仓库IDEA配置导入IDEA测试源码注意...

2020-02-24 11:29:58 9102 47

原创 GIT核心命令和底层原理。

文章目录一、GIT体系介绍1. 代码管理工具:SVN、CVS、GIT2. 存储方式3. 使用方式区别3. 版本管理模式区别底层原理一、GIT体系介绍1. 代码管理工具:SVN、CVS、GIT GIT和SVN有什么区别: 1. 存储方式不一样 2. 使用方式不一样 3. 管理模式不一样2. 存储方式GIT把内容按元数据方式存储类似k/v数据库,而SVN是按文件(新版svn已改...

2019-12-27 12:53:45 605

原创 深刻理解递归中的“递”与“归”

二叉树的特性天然就需要使用递归来解决。此问题可以拆解成:当前节点是否平衡 && 节点的左子树是否平衡 && 节点的右子树书否平衡。

2024-09-12 17:32:36 310

原创 滑动窗口总结

滑动窗口

2024-08-29 09:51:03 110

原创 动态规划DP题目总结

记忆化搜索背包问题网格DP经典线性DP状态机DP区间DP

2024-08-29 09:49:44 95

原创 二分查找算法总结

注意区间开闭,三种都可以循环结束条件:当前区间内没有元素下一次二分查找区间:不能再查找(区间不包含)mid,防止死循环返回值:大于等于target的第一个下标(注意循环不变量)有序数组中二分查找的四种类型(下面的转换仅适用于数组中都是整数)左边位置左边位置红色蓝色。

2024-08-27 17:40:30 1044

原创 树类型题目总结

剑指 Offer 55 - I. 二叉树的深度 - leetcode 剑指 offer 系列 104。剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 - leetcode 剑指 offer 系列。剑指 Offer 68 - II. 二叉树的最近公共祖先 - leetcode 剑指 offer 系列。剑指 Offer 32 - I. 从上到下打印二叉树 - leetcode 剑指 offer 系列。LCR 193. 二叉搜索树的最近公共祖先。235. 二叉搜索树的最近公共祖先。

2024-08-08 22:58:09 173

原创 设计模式总结

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。不常用的有:原型模式。

2024-08-04 23:23:17 324

原创 链表题型思路错误总结

算法

2024-08-04 17:05:29 518

原创 LeetCode 128. 最长连续序列

public int longestConsecutive(int[] nums) { if(nums == null || nums.length == 0) return 0; PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>(){ @Override public in.

2021-06-10 19:40:24 183

原创 递归、树

文章目录面试题 17.12. BiNode面试题 16.11. 跳水板面试题 04.12. 求和路径面试题 04.10. 检查子树祖先类的模板题目模板面试题 04.08. 首个共同祖先865. 具有所有最深节点的最小子树1123. 最深叶节点的最近公共祖先剑指 Offer 68 - II. 二叉树的最近公共祖先面试题 04.06. 后继者面试题 04.05. 合法二叉搜索树面试题 04.04. 检查平衡性面试题 04.03. 特定深度节点链表面试题 04.02. 最小高度树剑指 Offer 68 - I.

2021-05-21 17:28:41 333

原创 链表汇总

先刷题,在总结文章目录剑指 Offer 06. 从尾到头打印链表剑指 Offer 22. 链表中倒数第k个节点138. 复制带随机指针的链表剑指 Offer 24. 反转链表剑指 Offer 18. 删除链表的节点剑指 Offer 52. 两个链表的第一个公共节点1721. 交换链表中的节点24. 两两交换链表中的节点面试题 02.05. 链表求和725. 分隔链表剑指 Offer 06. 从尾到头打印链表方法一:链表从前遍历,数组从尾开始存储方法二:将链表节点中的值存入栈中,在存入数组中publ

2021-05-18 10:37:57 375

原创 1486. 数组异或操作------异或规律

public int xorOperation(int n, int start) { int s = start >> 1; int b0 = n & start & 1; int ans = sumXor(s - 1) ^ sumXor(s + n - 1); return ans << 1 | b0; } private int sumXor(int x...

2021-05-08 10:53:11 241

原创 机器学习——集成学习(Ensemble learn)

文章目录What is ensemble learn?Bagging有放回取样(bootstrap)Bagging流程图随机森林What is ensemble learn?Bagging有放回取样(bootstrap)随机森林Bagging流程图随机森林

2021-04-27 15:54:53 225

原创 机器学习实例-决策树和随机森林预测员工离职率

我们的任务是帮助人事部门理解员工为何离职, 预测一个员工离职的可能性. 数据来源: 数据提取码:3zonimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport matplotlib as matplotimport seaborn as sns%matplotlib inline数据读取f = pd.read_csv # 读入数据到Pandas Dataframe "df"df = pd.r

2021-04-23 16:45:14 5813 1

原创 LeetCode. 704 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。方法一:public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right){ int mid = left

2021-04-20 14:03:18 118

原创 机器学习环境安装

Anaconda所有版本https://repo.anaconda.com/自己随意安装,minianaconda-4.8.2 python37下载依赖VC++ 2015https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads查看显卡:命令行: nvidia-smi安装对应的cudatoolkit版本conda install cudatoolkit=11.0安装t

2021-04-08 14:27:39 269

原创 LeetCode5. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。 public String longestPalindrome(String s){ if(s == null || s.length() < 2) return s; char[] str = s.toCharArray(); boolean[][] dp = new boolean[s.length()][s.length()]; //当前i到j是不是回文字符串

2021-04-02 17:25:29 121

原创 剑指 Offer 10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 public int numWays(int n) { int a = 0; int b = 1; int sum = 1; for(int i = 0; i < n; i++){ sum = (a+b)%1

2021-04-02 15:18:19 115

原创 剑指 Offer 10- I. 斐波那契数列

递归public int fib(int n) { if(n==0) return 0; if(n == 1) return 1; if(n == 2) return 1; return fib(n - 1)%(1000000007) + fib(n - 2)%(1000000007); }动态规划:为什么返回a,自己可以用纸演算一下,就知道是a了 p.

2021-04-02 15:13:43 111

原创 剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )没啥解释,直接上代码 private Stack<Integer> s1; private Stack<Integer> s2 ; private int size; public CQueue() { s1 = ne

2021-04-02 14:54:08 110

原创 剑指 Offer 07. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。抓住重点,数组内不含重复数字,可以建立映射,从preorder中得出数字然后映射到inorder思路:根节点在preorder中生成,左右子树界限在中序遍历中确定。所以只需保留先序遍历,缓冲中序遍历进map集合//利用原理,先序遍历的第一个节点就是根。在中序遍历中通过根 区分哪些是左子树的,哪些是右子树的 class Solution { int[] preorder;

2021-04-02 14:34:06 105

原创 剑指 Offer 06. 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。方法一: 思路:递归 private ArrayList<Integer> ans = new ArrayList(); public int[] reversePrint(ListNode head) { if(head == null) return new int[0]; if(head.next!=null){ reversePrint(head.ne

2021-04-01 18:24:39 100

原创 剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。思路:先统计空格的个数,然后在将原字符从前往后复制上 public String replaceSpace(String s) { //从后往前复制 //第一步统计空格的个数 char[] chr = s.toCharArray(); int count = 0; for(char c: chr){ if(c==' ')

2021-04-01 14:05:22 87

原创 剑指 Offer 04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一:暴力法,逐一比较(不推荐)方法二:二叉搜索树:从右上角搜索 public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix.length == 0) return false; //右角开始

2021-04-01 13:55:10 100

原创 剑指 Offer 03. 数组中重复的数字

题目:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。解法一:暴力法(超时) public int findRepeatNumber(int[] nums) { //暴力法 for(int i = 0; i < nums.length; i++){ for(int j = i + 1; j <

2021-04-01 12:02:29 109

原创 SpringMVC(二)---高级应用

1. 监听器、过滤器和拦截器对⽐Servlet:处理Request请求和Response响应过滤器(Filter):对Request请求起到过滤的作⽤,作⽤在Servlet之前,如果配置为/*可以对所有的资源访问(servlet、js/css静态资源等)进⾏过滤处理监听器(Listener):实现了javax.servlet.ServletContextListener 接⼝的服务器端组件,它随Web应⽤的启动⽽启动,只初始化⼀次,然后会⼀直运⾏监视,随Web应⽤的停⽌⽽销毁作⽤⼀:做⼀些初始化⼯

2020-10-15 10:26:23 276

原创 SpringMVC(一)---应用

1. Spring简介1.1 MVC 体系结构三层架构我们的开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器;另⼀种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使⽤的⾮常多,所以我们课程中的案例也都是基于三层架构设计的。表现层 :也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http 协

2020-10-14 16:34:46 230

原创 Mybatis(一)——自定义持久层框架

使用端:项目: 引入自定义持久层框架的Jar包提供两部分配置信息数据库配置信息、sql配置信息:SQL语句、参数类型、返回值类型使用配置文件来提供这两份不配置信息:(1)sqlMapConfig.xml:存放数据库配置信息,存放mapper.xml的全路径(2)mapper.xml:存放sql配置信息自定义持久层框架本身:工程:本质就是对JDBC代码进行了封装(1)加载配置文件:根据文件的路径,加载配置文件成字节输入流,存储在内存中,创建Resource类 方法: InputStea..

2020-09-21 15:07:59 215 1

原创 Java基础面试

1. 重载和重写重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法2. 基本类型3. String StringBuffer 和 StringBuilder 的区别是什么?线程安全性String 中的对象是不可变的,也就可以理解为常量,线程安全AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操

2020-06-19 23:02:13 207

原创 在github找开源项目

in:name spring boot : 名字为spring bootstars:>3000: 活跃程度forks:>500: 克隆数目in-readme spring bootin:description 微服务language:javapushed:>2019-09-03

2020-06-12 15:35:36 247

转载 Java中如何判断两个对象是否相等

如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解。从以下几个点来理解equals和hashCode方法:1、equals的作用及与==的区别。2、hashcode的作用及与equals的关系。1、equals的作用及与==的区别。equals被用来判断两个对象是否相等。equals通常用来比较两个对象的内容是否相等,==用来比较两个对象的地址是否相等。equals方法默认等同于“==”Object类中的equals方法定义为判断两个对象的地.

2020-05-18 16:53:36 2377 1

原创 【深入Java虚拟机】之三:垃圾回收

说明:本文是根据周志明的《深入理解Java虚拟机整理而成》1. 如何判断对象是否回收1.1 引用计数算法(主流的Java虚拟机不选它来管理内存)在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。优点:引用计数算法(Reference Counting)虽然占用了一些额外的内存空间来进行计数,但它的原理简单,判定效率也很高缺点:有很多例外情况要考虑,必须要配合大量额外处理才能保证正确地工作,譬如单纯的

2020-05-17 14:52:11 239

原创 人手一套Linux服务器搭建

sudo dhclient:自动获取IP地址(当没有IP地址的时候)sudo vim /etc/network/interfaces:修改文件配置静态IP地址信息auto ens33iface ens33 inet staticaddress 192.168.31.220gateway 192.168.31.1netmask 255.255.255.0sudo vim /etc/resolv.conf:配置DNS服务器nameserver 119.29.29.29nameserver 8

2020-05-14 23:15:59 491

原创 Redis集群方案

哨兵模式高可用集群模式1. 架构模式特点redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨...

2020-05-09 23:23:00 181

原创 Java基础知识

改变

2020-05-06 10:52:07 1064 1

原创 Redis基础知识

一、 概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。二、数据结构数据结构可以存储的值操作String字符串、整数或者浮点...

2020-05-01 16:48:19 296

原创 【深入Java虚拟机】之二:对象创建

对象的创建当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务实际上便等同于把一块确定大小的内存块从Java堆中划分出来...

2020-04-29 09:35:46 222

原创 【深入Java虚拟机】之一:Java内存区域与内存溢出

内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。 下面详细阐述各数据区所存储的数据类型。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200428152640155.png?x-o...

2020-04-28 15:28:10 314

转载 JVM介绍

1. 什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节...

2020-04-28 15:19:54 294

空空如也

空空如也

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

TA关注的人

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