自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基础知识java

浅克隆:对象的引用变量只会拷贝地址,不会新建一个对象深克隆:对象的引用变量也会新建一个对象实现方式:浅克隆:实现cloneable接口的clone方法深克隆:实现Serializable接口,序列化之后反序列化即可==比较的是地址是否相同,对于基本变量比较的少值是否相同equals如果不重写和 == 相同,一般会重写equals比较内容1)自动装箱:Java自动将基本数据类型转换为包装类型,也就是int→Integer,实际上是调用了方法Integer.valueOf(int)。2)自动拆箱:J

2022-11-29 23:44:04 290 1

原创 mysql的执行过程

一条sql语句的执行流程

2022-11-07 18:55:38 170

原创 count(*)、count(1)、count(id)、count(字段)比较

执行效率:count(*) =count(1) > count(id) > count(字段)

2022-11-07 18:24:55 213

原创 JAVA基础学习

一.java基础1.为什么java可以一次编码到处运行答:.java文件进过编译器编译生成.class文件,JVM在不同平台会将.class文件翻译成相应的机器码。从而实现一次编码到处运行2.一个java文件可以含有多个类吗答:可以,但是只能含有一个public类,同时这个类名必须与java文件名一致3.说一说你对Java访问权限的了解四种访问权限:private,defalut,protected,public修饰类时:public:任意包下的任意类访问defalut:本包下的类访问修

2021-07-25 12:58:20 104

原创 Java垃圾回收学习

一.垃圾识别1.引用计数法引用计数法给对象添加一个引用计数器,每当有一个地方引用该对象,对象的计数器就加 1,当引用失效,计数器就减 1,任何时候计数器为 0 的对象就是不可能再被使用的。这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来进行垃圾识别,其最主要的原因是它很难解决对象之间相互循环引用的问题。2.可达性分析法可达性分析算法通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引

2021-07-25 01:31:00 90

原创 Java对象实例化学习笔记

一.对象实例化的过程1.类加载检查主要做两件事情:1.指令涉及的参数是否可在常量池中定位到相关符号引用2.该符号引用对应的类是否完成类加载2.分配内存地点:大部分在堆中分配内存(少数在栈中分配,JIT逃逸分析中有说明为什么),大小:对象的内存大小在类加载完成之后就确定了,不会因为属性不同而导致大小不同。策略:指针碰撞和空闲列表采用指针碰撞时,利用一个指针作为已划分内存和未划分内存的分界点,通过不断移动指针记录未划分内存的起始地址。如下图,虚线填充部分表示该部分内存已分配:空闲列表则应用

2021-07-25 01:03:01 112

原创 类加载过程学习笔记

1.类加载步骤1.加载2.连接(验证,准备,解析)3.初始化1.1 加载加载过程主要有三步:1.通过类的全限定名来获取这个类的二进制流(来源可以是压缩包,网络,动态代理等)2.将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构(这里理解为将外部字节流格式转换成虚拟机内部规定的格式存储在方法区中)3.在堆中生成class对象,作为访问方法区中该类的数据结构的入口1.2 链接1.2.1 验证由于二进制流的来源不受虚拟机的控制,所以需要对其进行安全验证。包括:文件格式验证,元数据

2021-07-24 23:24:32 107 1

原创 多线程异常处理

多线程异常处理子线程异常不能抛给主线程处理public static void main(String[] args) { try { Thread thread = new Thread(() -> { int a = 1 / 0; }); thread.start(); } catch (Exception t) { System.out.println("thread exception is caughted here!"); }}运行结果:可以看出

2021-02-08 21:03:53 1361

原创 创建线程的四种方式

创建线程的四种方式一.通过重写Thread类中的run方法public class greatThread { public static void main(String[] args) throws InterruptedException { //1.通过继承Thread创建 threadTest threadTest1 = new threadTest(); threadTest1.start(); } static cl

2021-02-05 23:02:02 200 1

原创 [转]JAVA中try、catch、finally带return的执行顺序总结

博客出处:https://www.cnblogs.com/pcheng/p/10968841.html

2020-10-19 10:53:31 95

原创 leetcode83 删除排序链表中的重复元素

题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。题目链接:删除排序链表中的重复元素思路:只需要一个指针cur,如果检测当后一个节点等于当前节点则删除class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null){ ...

2019-08-30 20:32:39 94

原创 leetcode82 删除排序链表中的重复元素 II

题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。题目链接: 删除排序链表中的重复元素 II思路:用两个指针,pre总是指向可能要保留的节点,如果pre.next = cur说明当前节点cur不存在重复的节点,没有向后移动就可以把当前节点保留,否则pre.next = cur.next;class Solution { public ...

2019-08-30 20:27:06 87

原创 剑指offer15 二进制中 1 的个数

题目描述:输入一个整数,输出该数二进制表示中 1 的个数。题目链接:剑指offer15思路:n&(n-1) 该位运算去除 n 的位级表示中最低的那一位。public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ ...

2019-08-30 19:35:39 80

原创 剑指offer14 整数拆分

题目描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。例子:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。题目链接:剑指offer14思路1:暴力递归class Solution { public int integerBreak(int n) { return proces...

2019-08-30 19:01:25 163

原创 剑指offer56 数组中只出现一次的数字

题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题目链接:剑指offer56思路:先对每个数字异或运算,得到的结果是那两个不同数的异或bitResult,在找到这个数右侧第一次出现1是第几位,用index记录下来,接下来就按照这一位是否为1来分类异或,两个不同的数肯定在两个组public class Solution { pu...

2019-08-28 22:30:25 97

原创 剑指offer55.2 平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。题目链接:剑指offer55.2public class Solution { boolean isBalanced = true; public boolean IsBalanced_Solution(TreeNode root) { getDepth(root); return is...

2019-08-28 22:12:50 74

原创 剑指offer55.1 二叉树的深度

题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题目链接:剑指offer55.1public class Solution { public int TreeDepth(TreeNode root) { return getHigh(root); } int getHi...

2019-08-28 22:11:30 65

原创 剑指offer54 二叉查找树的第 K 个结点

题目描述:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。题目链接:剑指offer54思路:二叉查找树的中序遍历是有序的,中序遍历即可找出答案public class Solution { TreeNode KthNode(TreeNode pRoot, int k) { ...

2019-08-28 22:10:09 117

原创 剑指offer53 数字在排序数组中出现的次数

题目描述:统计一个数字在排序数组中出现的次数。题目链接:剑指offer53思路:使用二分法模版(先看我的二分法模版那篇文章再来做着题就很简单),先找到这个数字第一次出现的位置,在找到这个数字最后一次出现的位置public class Solution { public int GetNumberOfK(int [] array , int k) { if(array =...

2019-08-28 22:07:46 72

原创 剑指offer51 两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。题目链接:剑指offer51思路:两个链表从头遍历,遍历到尾的时候,在从另外一个链表的头开始遍历,最后相等的地方就是第一个公共节点public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode l1 = pHead1, l2 = pHead2...

2019-08-28 22:04:40 78

原创 剑指offer50 第一次只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)题目链接 : 剑指offer50思路:第一次遍历使用一个数组map记录每个字符出现的次数,第二次遍历找到第一个只出现一次的字符public class Solution { public int FirstNotRe...

2019-08-28 22:01:29 70

原创 二分法模版

模版一.此模版可以找到第一个target出现的位置 public int binarySearch(int[] nums, int target) { if (nums == null || nums.length == 0) { return -1; } int start = 0, end = nu...

2019-08-28 20:28:50 112

原创 剑指offer49 丑数

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。链接:剑指offer49 丑数/*思路:1.每次找出一个最小丑数res[i],都会产生三个新的丑数,2*res[i],3*res[i],5*res[i];2.如果我们每次都把新的丑数和旧的丑数放在一起找出最小...

2019-08-28 18:39:14 104

原创 剑指offer48 无重复字符的最长子串

题目描述输入一个字符串(只包含 a~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。思路:滑动数组链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chua...

2019-08-28 18:32:43 124

原创 剑指offer47 礼物的最大价值

题目描述在一个 m*n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定价值(大于 0)。从左上角开始拿礼物,每次向右或向下移动一格,直到右下角结束。给定一个棋盘,求拿到礼物的最大价值。例如,对于如下棋盘1 10 3 812 2 9 65 7 4 113 7 16 5思路:动态规划状态dp[i][j]:走到当前位置时...

2019-08-28 17:28:15 171

原创 剑指offer46 把数字翻译成字符串

题目:一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。例子:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。思路:动态规划状态dp[i] : 前i个字符可以解码的方法总数状态转移方程: 当前字符在1-9之...

2019-08-28 17:21:09 126

原创 剑指offer42 连续子数组的最大和

题目描述{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。思路:从前往后遍历,如果当前的sum大于0则不舍弃,继续加,如果当前的sum小于0,则舍弃重新开始加。每次都记录当前的最大sum public int FindGreatestSumOfSubArray(int[] array) { int ...

2019-08-28 16:49:24 65

原创 剑指offer41.2 字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:用一个大小为256的数组记录每个字符出现的次数,同时用一个队列记录最先出现一次的的字符public cl...

2019-08-27 19:25:47 125

原创 剑指offer41.1 数据流中的中位数

题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路:维护两个堆,左边维护一个最大堆,右边维护一个最小堆,右边的元素都大于左半边,保证两个堆处于平衡状态...

2019-08-27 17:32:55 212

原创 剑指offer40 最小的 K 个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:方法一:维护一个大小为k的大顶堆,复杂度:O(NlogK) + O(K),特别适合处理海量数据public class Solution { public ArrayList<Integer> GetLeastNumbers_Solut...

2019-08-27 17:07:25 61

原创 最长公共子序列

题目:给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度例子:输入: “ABCD” and “EDCA”输出: 1解释:LCS 是 ‘A’ 或 ‘D’ 或 ‘C’思路:动态规划状态:dp[i][j] 表示 S1 的前 i 个字符与 S2 的前 j 个字符最长公共子序列的长度状态转移方程: dp[i][j] = dp[i - 1][j - 1] + 1;(当s1的...

2019-08-27 11:12:40 136

原创 leetcode300 最长上升子序列

题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。例子:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路:动态规划状态: dp[i]表示以i结尾的子串最长上升序列的长度初始化:Arrays.fill(dp , 1);状态转移方程:dp[i] = Math.max(dp[i] , dp[j...

2019-08-27 10:35:32 76

原创 leetcode516 最长回文子序列

题目:给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。例子:输入: “bbbab”输出: 4思路:此题使用动态规划可以解决动态规划四要素状态:dp[i][j]表示从第i个位置到第j个位置的子串的最长回文子序列状态转移方程:如果s.charAt(i) == s.charAt(j) dp[i][j] = dp[i + 1][j - 1] ...

2019-08-26 22:11:11 93

原创 leetcode5 最长回文子串

题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。例如:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。思路:中心扩展法,对每一个字符都像两边扩展,统计最长回文子串,将起始下标和终止下标记录下来class Solution { public String longestPalindrome(Strin...

2019-08-26 21:26:33 75

原创 leetcode647 回文子串个数

题目描述:Input: “aaa”Output: 6Explanation: Six palindromic strings: “a”, “a”, “a”, “aa”, “aa”, “aaa”.思路:中心扩展法,对字符串的每一位尝试向左和向又扩展统计有多少个回文子串class Solution { int count = 0; public int countSubstr...

2019-08-26 19:20:29 144

原创 理解KMP算法及其复杂度估计

问题:判断一个字符串(str2 长度为m)是否是另一个字符串(str1 长度为n)的子序列。方法一:暴力方法从str1的第一个字符开始检测,若没有匹配成分,则向后移一位继续检测,直到str1的末尾。时间复杂度为O(nm)。方法二:KMP法1.记录str2中每个字符的前缀序列和后缀序列相同的最大值,将其放在next数组里例如next[0]=-1(规定首字符为-1),next[1]=0,...

2018-12-31 18:59:00 3523

原创 剑指Offer45:把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:1.先将其转换成String类型数组2.定义一个比较器对其进行重新排序,排序规则:若s1+s2&gt;s2+s1则s1排在前面3.定义一个StringBuilder类型对象,将数组内的元素全append上去,组...

2018-12-07 16:06:14 170

空空如也

空空如也

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

TA关注的人

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