自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学海无涯乐作舟

知之为知之,不知为不知

  • 博客(263)
  • 资源 (2)
  • 收藏
  • 关注

原创 LeetCode—每日一题:根据数字二进制下1的数目排序(暴力+巧妙)

根据数字二进制下1的数目排序(简单)2020年11月6日题目来源:力扣解题暴力通过重写Collections.sort方法进行条件排序,关键是进行1数目的计算,这里我使用了按位计算,效果差。class Solution { public int[] sortByBits(int[] arr) { List<Integer> list=new ArrayList<>(); for(int i:arr)

2020-11-06 11:23:30 13

原创 LeetCode—每日一题:单词接龙(BFS)

单词接龙2020年11月5日题目来源:力扣解题一开始使用DFS进行深度遍历,发现进进出出的太花时间,且做出来之后超时了。改用BFS进行遍历,逐层进行搜索,这里是一个图的结构了,且是双向图思路来自这class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordList) { //广度遍历 //先把列表转成集合

2020-11-05 15:36:16 36 2

原创 LeetCode—每日一题:求根到叶子节点数字之和(递归)

求根到叶子节点数字之和(中等)2020年10月29日题目来源:力扣解题通过递归,记录获得根到当前节点的取值,当某个节点的左右子节点为空则代表为叶子节点,那么加入到结果值中。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;

2020-10-29 13:40:48 43 1

原创 LeetCode—每日一题:独一无二的出现次数(map+set)

独一无二的出现次数(简单)2020年10月28日题目来源:力扣解题自然的,会想统计数组中每个数字出现的次数,这里我使用了HashMap,HashMap中的getOrDefault方法真香。拿出数字出现次数后,可以用一个HashSet来存,如果没有重复的,那么set和map的大小相同,如果重复,那么set会比map小。class Solution { public boolean uniqueOccurrences(int[] arr) { //计算每个数的出现次数

2020-10-28 11:42:11 18

原创 LeetCode—每日一题:数组中的最长山脉(遍历)

数组中的最长山脉(中等)2020年10月25日题目来源:力扣解题找到最近的第一个左山脚,上山下山后找到右山脚,不断更新最长山脉值class Solution { public int longestMountain(int[] A) { int len=A.length; int res=0; int left=0; while(left+2<len){ //右山脚初始化

2020-10-25 22:36:36 12

原创 2020秋招自我总结

诗悦网络岗位:服务端开发工程师hr一面1.自我介绍2.在校成绩3.学习方法4.对客户端的有了解吗(这里说多了客户端的东西,没搞清楚自己的定位)5.有什么要提问的?

2020-10-24 22:44:31 71

原创 LeetCode—每日一题:视频拼接(动态规划)

视频拼接(中等)题目来源:力扣2020年10月24日解题class Solution { public int videoStitching(int[][] clips, int T) { //开辟一个跟T一样大的dp数组 int[] dp=new int[T+1]; //填充dp数组 Arrays.fill(dp,Integer.MAX_VALUE-1); dp[0]=0; //从i等于1开

2020-10-24 17:25:47 762 1

原创 Java线程池

什么是线程?线程是指进程中的一个执行流程,一个进程可以运行多个线程。比如java.exe进程可以运行很多线程。线程总是输入某个进程,进程中的多个线程共享进程的内存。线程的创建/获取方式1.继承Thread类2.实现Runnable接口3.实现Callable接口4.线程池获取实现Callable接口和实现Runnable接口有什么不同?相同点:两者都是接口;两者都可用来编写多线程程序;两者都需要调用Thread.start()启动线程;不同点:两者最大的不同点是:实现Callabl

2020-10-16 11:24:57 67 1

原创 LeetCode—面试题:栈排序(辅助栈)

栈排序(中等)2020年10月14日题目来源:力扣解题辅助栈来存放主栈比push的值大的元素class SortedStack { private Stack<Integer> st1; private Stack<Integer> st2; public SortedStack() { st1=new Stack<>(); st2=new Stack<>(); }

2020-10-15 00:04:12 27

原创 LeetCode—面试题:三合一(数组)

三合一(简单)2020年10月14日题目来源:力扣解题题目意思是这样的,用一个数组来存放三个栈的内容,以stackNum来代表是哪个栈,stackSize就是每个栈的大小,这也决定了我们这个数组的大小为stackSize*3class TripleInOne { private int[] arr; //装栈数据的数组 private int stackSize; //栈的容量 private int[] stackTop; //三个栈的栈顶指针 pu

2020-10-14 15:57:16 80 1

原创 LeetCode—面试题:环路检测(快慢指针)

环路检测(中等)2020年10月14日题目来源:力扣解题链表判断有环容易想到用快慢指针,但这道题需要判断环的入口首先用快慢指针判断是否有环,如果有环,那么把慢指针指向头节点,与快指针同时移动,找第一个相同的节点,那就是环入口节点数学推导如下:来自题解/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x)

2020-10-14 15:53:00 46 1

原创 LeetCode—面试题:回文链表(反转链表+比较)

回文链表(简单)2020年10月8日题目来源:力扣解题如果是回文,那么前半部分链表反转后的链表应该与后半部分的链表完全一致反转链表+比较反转链表方法可看这里,首先算出链表长度,然后取一半进行反转,反转后需要判断长度的奇偶,奇数则省略中间一个数,偶数照常计算,前后两链表遍历对比,不同则返回false/** * Definition for singly-linked list. * public class ListNode { * int val; * ListN

2020-10-08 23:38:02 20

原创 LeetCode—面试题:分割链表(头插法)

分割链表(中等)2020年10月1日题目来源:力扣解题头插法遍历找到比x小的节点,然后用后面的节点覆盖此节点,把该节点插到最前面/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public Lis

2020-10-01 10:44:47 39

原创 浅谈CAS底层原理和ABA问题

文章目录概述CAS底层原理CAS缺点ABA问题解决ABA问题AtomicStampedReference总结概述CAS的全称是Compare-And-Swap,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语

2020-09-30 23:12:25 170

原创 浅谈Volatile三大特性

文章目录JMMJMM是什么特性Volatile可见性原子性禁止指令重排Volatile针对指令重排做了什么?JMMJMM是什么JMM是Java内存模型,也就是Java Memory Model,简称JMM,本身是一种抽象的概念,实际上并不存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式JMM关于同步的规定:线程解锁前,必须把共享变量的值刷新回主内存线程解锁前,必须读取主内存的最新值,到自己的工作内存加锁和解锁是同一把锁

2020-09-30 22:29:31 55

原创 JVM之垃圾回收(1-概述+算法)

文章目录1.概述什么是垃圾大厂面试题为什么需要GC早期垃圾回收Java垃圾回收机制2. 垃圾回收相关算法2.1 标记阶段:法1_引用计数法 (java没有采用)2.2 标记阶段:法2_可达性分析算法2.3 对象的finalization机制2.4 清除阶段:法1_标记-清除算法2.5 清除阶段:法2_复制算法2.6 清除阶段:法3_标记-压缩(整理,Mark-Compact)算法2.7 小结2.8 分代收集算法2.9 增量收集算法、分区算法1.概述什么是垃圾Java = (C++)–什么是垃圾(

2020-09-29 23:57:16 1414

原创 LeetCode—面试题:移除重复节点(哈希集合)

移除重复节点(简单)2020年9月29日题目来源:力扣解题哈希集合记录非重复节点/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeDuplicateNod

2020-09-29 09:24:48 125

原创 JVM之字符串常量池StringTable

文章目录1.String的基本特性2.String的内存分配3.String的基本操作4.字符串拼接操作5.intern()的使用new String("ab")会创建几个对象,new String("a")+new String("b")呢关于String.intern()的面试题总结String的intern()的使用6.StrtingTable的垃圾回收7.G1中的String去重操作1.String的基本特性String:字符串,使用一对""引起来表示。String sl = “hell

2020-09-27 17:30:04 139

原创 JVM之执行引擎

文章目录执行引擎概述Java代码编译和执行过程什么是解释器( Interpreter),什么是JIT编译器?为什么说Java是半编译半解释型语言?机器码、指令、汇编语言机器码指令指令集汇编语言高级语言字节码C、C++源程序执行过程解释器JIT编译器HotSpot VM 为何解释器与JIT编译器共存热点代码及探测方式方法调用计数器热度衰减回边计数器HotSpot VM 可以设置程序执行方式HotSpot VM 中的JIT分类C1和C2编译器不同的优化策略执行引擎概述执行引擎是Java虚拟机的核心组成部

2020-09-27 17:12:14 137

原创 JVM之运行时数据区(对象的实例化内存布局与访问定位+直接内存)

1.对象的实例化1.1 创建对象的方式new最常见的方式变形1 : Xxx的静态方法变形2 : XxBuilder/XxoxFactory的静态方法Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求使用clone() :不调用任何构造器,当前类需要实现Cloneable接口,实现clone()使用反序列化:从文

2020-09-26 23:44:35 19

原创 JVM之运行时数据区(方法区)

文章目录1. 堆、栈、方法区的交互关系2. 方法区的理解3.设置方法区大小与OOM方法区OOM4.方法区的内部结构类型信息域信息(成员变量)方法信息non-final的类变量运行时常量池5.方法区的使用举例6.方法区的演进细节永久代为什么要被元空间替换StringTable 为什么要调整如何证明静态变量存在哪7.方法区的垃圾回收8. 总结面试题:1. 堆、栈、方法区的交互关系运行时数据区结构图堆、栈、方法区的交互关系2. 方法区的理解《Java虚拟机规范》中明确说明:‘尽管所有的方法区在逻辑上

2020-09-26 22:49:43 50

原创 LeetCode—面试题:字符串轮转(暴力+拼接)

字符串轮转(简单)2020年9月26日题目来源:力扣解题暴力模拟轮转,对了就返回true,速度太慢了class Solution { public boolean isFlipedString(String s1, String s2) { if(s1.length()!=s2.length()) return false; if(s1.length()==0 && s2.length()==0) return true;

2020-09-26 11:24:03 32

原创 LeetCode—面试题:零矩阵(暴力)

零矩阵(中等)2020年9月26日题目来源:力扣解题用布尔数组记录一开始的0,遍历的更改0值class Solution { public void setZeroes(int[][] matrix) { int x=matrix.length; int y=matrix[0].length; boolean[][] flag=new boolean[x][y]; for(int i=0;i<x;i++){

2020-09-26 10:53:49 18

原创 LeetCode—面试题:旋转矩阵(暴力)

旋转矩阵(中等)2020年9月25日题目来源:力扣解题使用另外的数组违背题目意思class Solution { public void rotate(int[][] matrix) { //使用额外内存空间 int x=matrix.length; int y=matrix[0].length; int[][] result=new int[x][y]; for(int i=0;i<x;i++)

2020-09-25 10:47:27 42

原创 LeetCode—面试题:一次编辑(暴力)

一次编辑(中等)2020年9月25日题目来源:力扣解题直接分三种情况进行讨论class Solution { public boolean oneEditAway(String first, String second) { if(Math.abs(first.length()-second.length())>1) return false; if(first.length()>second.length()){ if

2020-09-25 10:21:45 19

原创 LeetCode—面试题:回文排列(哈希集合)

回文排列(简单)2020年9月23日题目来源:力扣解题哈希集合出现重复元素就消除set中的元素,最后查看set大小是否小于2就可以。若为0,说明字符成对出现,是偶数,若为1,说明是奇数,有个落单的字符在中间。class Solution { public boolean canPermutePalindrome(String s) { Set<Character> set=new HashSet<>(); char[] ch=

2020-09-23 10:02:37 27

原创 LeetCode—面试题:URL化(暴力)

URL化(简单)2020年9月23日题目来源:力扣解题暴力遍历字符数组,每次判断是不是空格,用StringBuilder接收最后转成新字符串class Solution { public String replaceSpaces(String S, int length) { char[] ch=S.toCharArray(); StringBuilder sb=new StringBuilder(); for(int i=0;i&

2020-09-23 09:43:14 20

原创 LeetCode—面试题:判断是否互为字符重排(位运算)

判断是否互为字符重排(简单)2020年9月22日题目来源:力扣解题单纯使用异或可能会出现像“aa”和“bb”这样的字符串,异或结果为0。考虑加上ascall值计数,使得结果一定唯一。class Solution { public boolean CheckPermutation(String s1, String s2) { int res1=0,res2=0,count1=0,count2=0; char[] ch1 = s1.toCharArray(

2020-09-22 09:29:58 38

原创 LeetCode—面试题:判定字符是否唯一(哈希集合+排序)

判定字符是否唯一(简单)2020年9月22日题目来源:力扣解题哈希集合当有重复值出现时,即为falseclass Solution { public boolean isUnique(String astr) { Set<Character> set=new HashSet<>(); char[] ch=astr.toCharArray(); for(int i=0;i<astr.length();i++

2020-09-22 09:13:05 46

原创 LeetCode—剑指Offer:二叉树的最近公共祖先Ⅱ

二叉树的最近公共祖先Ⅱ(简单)2020年9月18日题目来源:力扣解题/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode lowes

2020-09-18 09:08:46 25

原创 Java锁机制的粗略总结

对【多线程】月薪20K必须知道的Java锁机制的笔记文章目录1. 什么是锁?1.1 Java锁机制是怎么设计的?2. 对象、对象头、结构2.1 Mark Word3. Synchronized3.1 Synchronized同步机制3.2 Synchronized同步机制为什么会存在性能问题?4. 无锁、偏向锁、轻量级锁、重量级锁4.1 无锁4.2 偏向锁4.3 轻量级锁4.3.1 轻量级锁和线程的绑定过程4.3.2 轻量级锁锁定后,其他线程想获取该怎么办?4.4 重量级锁1. 什么是锁?在并发环.

2020-09-16 16:04:51 33

原创 LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)

扑克牌中的顺子(简单)2020年9月14日题目来源:力扣解题暴力if-else语句可破class Solution { public boolean isStraight(int[] nums) { int king=0; Arrays.sort(nums); if(nums[0]==0) king++; for(int i=1;i<5;i++){ if(nums[i]==0) king+

2020-09-14 10:09:31 38

原创 JVM之运行时数据区(堆)

文章目录1.核心概述1.1 配置jvm及查看jvm进程1.2 分析SimpleHeap的jvm情况1.3 堆的细分内存结构2.设置堆内存大小与OOM2.1 查看堆内存大小2.2 堆大小分析2.3 OOM3.年轻代与老年代4.图解对象分配过程4.1 概述4.2 对象分配的特殊情况4.3 代码举例4.4 常用调优工具5.Minor GC、Major GC、Full GC6.堆空间分代思想7.内存分配策略8.为对象分配内存:TLAB(线程私有缓存区域)9.小结堆空间的参数设置10.堆是分配对象的唯一选择么(不是)

2020-09-13 13:46:07 68

原创 LeetCode—剑指Offer:n个骰子的点数(动态规划)

n个骰子的点数(简单)2020年9月13日题目来源:力扣解题参考自题解class Solution { public double[] twoSum(int n) { //初始化原数组,用来存放上个骰子概率数组 double[] pre={1/6d,1/6d,1/6d,1/6d,1/6d,1/6d}; for(int i=2;i<=n;i++){ //存放当前骰子概率数组,5*i+1由骰子点数[n,6n],确定

2020-09-13 10:07:22 1620

原创 JVM之运行时数据区(PC寄存器、虚拟机栈、本地方法栈)

文章目录1.程序计数器(PC寄存器)1.1 作用1.2 代码示例1.3 面试常问2.虚拟机栈2.1概述2.1.1 背景2.1.2 内存中的堆与栈2.1.3 虚拟机栈是什么2.1.4 栈的特点2.1.5 栈中可能出现的异常2.1.6设置栈的内存大小2.2 栈的存储结构和运行原理2.2.1 原理2.2.2 栈帧的内部结构2.3 局部变量表(Local Variables)2.3.1 概述2.3.2 变量槽slot的理解与演示2.3.3 slot的重复利用2.3.4 静态变量与局部变量的对比及小结2.4 操作数栈

2020-09-12 22:34:32 96

原创 JVM之内存与线程

文章目录内存与线程1. 内存2. 分区介绍3. 线程4. JVM系统线程内存与线程1. 内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)2. 分区介绍java虚拟机定了了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁

2020-09-12 22:32:56 32

原创 LeetCode—剑指Offer:队列的最大值(辅助队列)

队列的最大值(中等)2020年9月12日题目来源:力扣解题辅助队列class MaxQueue { Queue<Integer> queue; LinkedList<Integer> max; public MaxQueue() { queue = new LinkedList<>(); max = new LinkedList<>(); } public int

2020-09-12 10:51:22 13

原创 LeetCode—剑指Offer:滑动窗口的最大值(暴力)

滑动窗口的最大值(简单)2020年9月11日题目来源:力扣解题class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length==0||k==0) return new int[0]; int l=0,r=k-1,j=0; int[] res=new int[nums.length-k+1]; while(r<nums.l

2020-09-11 09:54:50 23

原创 LeetCode—剑指Offer:左旋转字符串(暴力)

左旋转字符串(简单)2020年9月11日题目来源:力扣解题class Solution { public String reverseLeftWords(String s, int n) { String a=s.substring(0,n); String b=s.substring(n,s.length()); return b+a; }}如果不能用切片函数class Solution { public Stri

2020-09-11 08:53:12 21

原创 LeetCode—剑指Offer:翻转单词顺序(暴力)

翻转单词顺序(简单)2020年9月11日题目来源:力扣解题class Solution { public String reverseWords(String s) { String[] str=s.trim().split(" "); StringBuilder sb=new StringBuilder(); for(int i=str.length-1;i>=0;i--){ if(str[i].equals(

2020-09-11 08:43:42 25

MySQL5.5.zip

MySQL5.5的安装包,包括32位和64位。

2020-06-05

蓝桥杯往届真题.zip

蓝桥杯往届真题总结

2020-05-01

空空如也

空空如也

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

TA关注的人 TA的粉丝

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