自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JavaBoy

一直努力~

  • 博客(19)
  • 收藏
  • 关注

原创 全面了解MySQL的执行原理

全面了解MySQL的执行原理我们每天都在访问各种网站、App,这些东西上面都存在这大量的数据,那么这些数据都是存储在哪里呢?数据库。当我们对网站或者App做出操作去访问数据时,其实归根到底是一条SQL语句的执行,那么一条SQL语句到底是怎么执行的呢?一、体系结构其中涉及到很多方面的知识,那么,下面就让我带着大家一起去了解SQL语句执行背后的原理~在开始将之前我们先来看几张图上面这张图是MySQL官方提供的MySQL架构图,我们可以清楚的看到一个连接是要经过很多个步骤最后才获得结果的。对于

2021-02-23 21:09:49 1498 1

原创 Java类加载机制,你真的理解了吗?

一文让你不再畏惧Java类加载机制我们都知道,编程语言从程序的执行过程区分,分为了编译型语言和解释性语言。那么Java是解释型语言还是编译型语言呢?Java是编译型语言还记得我们刚开始学Java时候的javac这个命令嘛,我们就是通过javac这个命令去编译Java代码从而生成.class字节码文件。这是一个必要的步骤,如果不经过编译,.java字节码文件是不能运行的。Java是解释型语言在上面我们通过javac命令将java文件编译成了.class文件,这个是Java自己的一个特殊类型的文

2021-02-22 22:06:15 278 2

原创 LeetCode 每日一题 1024.视频拼接

10.24LeetCode 每日一题 1024.视频拼接题目分析:​ 题目要求我们从几个视频片段中,找出能够组成0~T这段时间的完整视频!每一段视频也都支持裁剪,最后需要我们求出,用最少的片段组 成这一段完整的视频!方法一: 动态规划​ 此系列问题,基本都可以用动态规划求解,动态规划求解问题,最难的地方就是找出状态方程式。我们根据题目的意思思考,我们最后需要得到的片段就是[0~T]这个片段,那么这个片段我们可以怎么表示呢?我们可以用一个dp数组,令dp[i]表示从0~i这个片段所需要的最小片段数

2020-10-24 16:39:49 1293

原创 LeetCode每日一题 234.回文链表

10.23 打卡LeetCode每日一题 234.回文链表这道题目的做法,其实跟10.20打卡的重排链表很类似,如果你做过那道题目的话,我相信对于这道题目,AC简直手到擒来~方法一 数组+双指针**思路:**拿到题目,我一开始想到的就是双指针,直接一个指针从头,一个指针从后,依次遍历往中间靠,这样不是简简单单吗?但是有一个问题就是链表的话,想要让指针知道链表的最后一个元素,这需要从头开始遍历,每一次都需要重复这个步骤,这很明显时间浪费就非常多了!所以我们就又想到了数组,数组想访问任意一个元

2020-10-23 16:35:09 126

原创 LeetCode 每日一题 763.划分字母区间

10.23 打卡LeetCode 每日一题 763.划分字母区间题目分析:因为题目要求我们将字符串划分为N个字符串,且在划分这N个字符串的时候,同一个字母只能出现在其中的一个片段中。有了这一限定条件,就意味着当我们取得第一个片段的时候,此时这个片段中的任意一个字母都不可能出现在后面的片段中。思路:有了上面的分析,我们到底要怎么样才能保证前面片段中的字母不能出现在后面的片段呢?很好的办法就是作标记。因为题目提示字符串S只包含小写字母az,一共26个字母。我们可以创建一个数组,用来储存每一个字母

2020-10-22 15:19:05 200

原创 LeetCode 每日一题 925.长键输入

10.21 打卡LeetCode每日一题 925.长键输入解题思路:​ 利用双指针,指针i和j,指针i扫描name,指针j扫描typed。​ 当 name[i] == typed[j] 的时候,并且指针i小于name的长度,此时指针 i 和 j 都向右移动即 i++,j++​ 当 name[i] != type[j] 的时候,此时有三种情况:​ (1) 当 name[i-1] 存在(即 j > 0) 并且 typed[j] == typed[j-1] , 这种情况就是题目所说的按键被

2020-10-21 16:34:17 63

原创 LeetCode 每日一题 143.重排链表

10.20 打卡LeetCode 每日一题 143.重排链表题目的简单意思就是 给你一个链表,然后按照头尾头尾头尾的方式进行节点交换,最后组成新的链表解法一 线性表我们都知道链表的缺点是查询效率低,每一次都需要从头开始遍历。所以如果按照题目的要求组成新链表,要去得到最后一个节点,就得从头将链表遍历一次,这样反复操作,直到将原来的链表改变到题目要求的链表。这样很明显是非常耗时间的。、由于有了上面的分析,直到了这一缺点,我们就可以想到与链表齐名的线性表了。我们知道线性表想访问某一个元素的

2020-10-20 18:10:17 225 3

原创 数据库语法

SQL server语法汇总建表增删查改select语句格式,单表查询ORDER BY子句GROUP BY子句建表建表create table "xxx"( id int primary key, //设置主键)增删查改查询语句select *from [表名]select <属性名>,<属性名> from [表名]插入语句insert int...

2020-03-27 22:45:52 1092

原创 String类中的面试常考点

String类常用方法介绍String类是Java最常用的API,它包含了大量处理字符串的方法,比较常用的有:char charAt(int index):返回指定索引处的字符;String substring(int beginIndex, int endIndex):从此字符串中截取出一部分子字符串;String[] split(String regex):以指定的规则将此字符串分割成数组;String trim():删除字符串前导和后置的空格;int indexOf(

2021-03-04 11:18:37 561 1

原创 经典TopK问题解法,你掌握了吗?

最小的K个数众所周知,TopK一直是面试的热点,其实TopK本身问题并不难,但是要怎么效率最高的TopK则没有那么简单,下面我写出了四种方法,层层递进,其实用到的都是上一道题目排序的思想,所以刷题是一个循序渐进的过程~直接排序利用库函数直接将数组排序,然后输出最小的K个数即可。public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer&gt

2021-03-02 09:50:16 291 1

原创 常见的排序算法,你都掌握了吗?

排序冒泡排序(稳定排序)思想冒泡排序的思想就是比较当前数和后一个数的大小,将较大的数往后移动,这样可以确保一轮下来能将最大的数放在数组的最末端。然后重复此操作即可完成排序。上面第一轮比较完,我们可以看到最大的数5已经被放在了最端,此时我们只需要将去掉最大的数的那部分(2,3,1,4)进行重复的操作。public int[] MaopaoSort (int[] arr) { if (arr.length < 2) return arr;

2021-02-28 22:40:08 389

原创 Java并发编程知识大汇总

线程简介什么是线程现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里可以创建很多是线程,这些线程都有自己的计数器,堆栈和局部变量等属性,并且能够访问共享的内存变量。之所以我们感觉不到有很多个线程在切换,是因为处理器的高速切换,使得我们觉得就好像是全部线程在一起执行。我们平常写的一个Java程序,其实就是一个多线程的程序,执行main()方法的就是一个叫作main的线程。下面我们来看一个执行一个main方法,里面都有哪些线程。/** * 查看我们运行一个main方法中都涉及到哪些线

2021-01-27 18:53:11 211

原创 LeetCode 每日一题 1207.独一无二的出现次数

10.28LeetCode 每日一题 1207.独一无二的出现次数思路: 先统计出每个数出现的次数,然后储存进HashMap中,最后出去HashMap中的每一个value,此时需要判断value是否有相同的,有相同的则返回false,反之返回true。这一步可以利用Set集合元素的唯一性,如果重复往Set中添加重复的值,则会储存失败,返回false。下面直接给出代码class Solution { public boolean uniqueOccurrences(int[] arr) {

2020-10-28 20:05:02 129

原创 LeetCode 每日一题 144.二叉树的前序遍历

10.27LeetCode 每日一题 144.二叉树的前序遍历本题其实很简单,就是考察二叉树的前序遍历。什么是前序遍历: 前序遍历(VLR), 是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。方法一:递归class Solution { List<Integer> res = new ArrayList<Integer>(); public List<Integer&g

2020-10-27 21:47:39 128 1

原创 LeetCode 每日一题 1365.有多少小于当前数字的数字

10.26LeetCode 每日一题 1365.有多少小于当前数字的数字题目分析: 题目其实很简单,无非就是要找出与每一个数小的数的总个数,然后输出。返回的是一个数组,数组中对应下标计算的个数必须与题目的nums数组的下标保持一致!方法一:暴力法对于每一个数组中的元素,都遍历一次,依次和其他元素进行比较,然后结果存进一个数组中,最后将数组返回即可。public int[] smallerNumbersThanCurrent(int[] nums) { if(nums.length

2020-10-26 19:48:19 136

原创 LeetCode 每日一题 845.数组中的最长山脉

10.25LeetCode 每日一题 845.数组中的最长山脉方法一:从山顶进行枚举思路分析:题目所要求的山脉的形式就是相当于“金字塔型”,山顶的左边和右边都依次变低,但是这个金字塔并不是左右对称的,只需要保证山顶的左边和右边依次递减即可。所以我们可以从山顶出发,求出以每一个点为山顶,能够组成的最长山脉,最后返回这个最长山脉的长度即可。假设给出的数组长度为len,这个时候,因为山顶不能没有左边和右边,所以山顶从1开始枚举,枚举到len-1。这样子求出每一个山脉的长度。因为左边和右边都必须满足依次递

2020-10-25 22:14:20 313

原创 都知道面向对象了,那么面向切面呢!通俗易懂带你走进面向切面编程!

什么是AOP1、概念在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。说一下OOP有一天面试官问你什么是OOP?然后你可能会一脸懵逼的说OOP?

2020-08-12 20:28:25 1327

原创 面试都问烂的IOC,快来看看吧!

IOC文章会同时发布在同名公众号《码可思》,一个适合学生党的公众号!带你通俗易懂走进编程世界!1、什么是IOCIOC(Inversion of Control)就是控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依

2020-08-12 16:48:37 145

原创 框架设计的灵魂(反射)

框架设计的灵魂(反射)文章会同时发布在同名公众号《码可思》,一个适合学生党的公众号!带你通俗易懂走进编程世界!一、概述Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。简单来说,反射就是把java类中的各个成分 映射成一个个的Java对象在我们日常的开发中,我们可以利用反射技术对一

2020-08-12 16:39:01 149

空空如也

空空如也

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

TA关注的人

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