自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java后端开发面经

有赞(一面)2021年5月26日时长:53分钟1.自我介绍2.springboot用过吗?和spring有什么区别?3.spring创建对象的过程,顺带着引申了一下ioc4.AOP是啥,然后讲讲它的原理,再讲讲什么是动态代理(这个问题回答的不好,动态代理没有讲清楚,解耦忘了说了)5.Hashmap的原理,如何存放元素,什么时候扩容,什么时候链表变成红黑树,再讲一下红黑树的实现原理(红黑树讲的不清楚)6.Hashmap和Hashtable的区别?7.Hashmap线程安全吗?不安全,怎么解决

2021-05-26 21:33:18 346

原创 第2章 Java基本语法

1、关键字与保留字Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字,如:goto 、cons2、变量的分类–按数据类型3、基本数据类型转换4、字符串类型:StringString不是基本数据类型,属于引用数据类型 使用方式与基本数据类型一致。例如:String str = “abcd”; 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如:str = str + “xyz” ; int n = 1

2021-05-17 14:45:43 195

原创 第1章 Java语言概述

1、Java是跨平台的纯面向对象的语言2、3、Java语言的特点4、Java两种核心机制Java虚拟机 (Java Virtal Machine)垃圾收集机制 (Garbage Collection)5、什么是JDK,JRE

2021-05-17 10:41:37 183

原创 狂神JVM笔记补充----JMM

狂神讲的JVM课中,最后的JMM笔记没有,我截图放在下面以备复习。

2021-05-15 22:59:32 171

原创 SSM整合项目的改进

狂神讲的ssm整合案例中,太简单了,功能不够,我做一点改进吧一、增加一个分页功能采用MyBatis 分页插件 PageHelper来实现,我是先看了官方文档,然后再结合网上的博客(有些博客真的很坑,算是错)终于调试好了,具体步骤如下:在pom.xml文件中导入依赖在mybatis-config.xml中加入插件配置(如上两步就可以使用 PageHelper.startPage(int pageNum, int pageSize)方法了)修改controller层,对查询全部书籍的方法进行修改

2021-05-14 17:01:44 317 1

原创 Spring复习

复习一下狂神的Spring课程,加深一下理解,笔记参考博客:笔记链接1.dao层、service和Controller的运用和区别2.spring中也有单例模式(Spring默认机制)、原型模式(每次从容器中get的时候,都会产生一个新对象!),在bean中设置其作用域scope="singleton"或scope="prototype"。3.使用spring注释形式注入bean,通过@Component、@Repository、 @Service和@Controller注释类,文档中说“注解如果没有

2021-05-13 10:20:47 132

原创 MySQL中utf-8和utf8到底有啥区别

MySQL中utf-8和utf8到底有啥区别MySQL中,编码格式一直是写"utf8",而不是"utf-8"。我最近在学Mybatis的时候,会遇到这样的错误:### Error building SqlSession.### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.Ma

2021-04-29 20:05:51 632

原创 JavaWeb笔记(狂神说)

JavaWeb1、基本概念1.1、前言web开发:web,网页的意思, www.baidu.com静态webhtml,css提供给所有人看的数据始终不会发生变化!动态web淘宝,几乎是所有的网站;提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!技术栈:Servlet/JSP,ASP,PHP在Java中,动态web资源开发的技术统称为JavaWeb;1.2、web应用程序web应用程序:可以提供浏览器访问的程序;a.html

2021-04-26 21:02:46 778

原创 MySQL数据库笔记(狂神说)

前面的见博客:https://blog.csdn.net/weixin_45483328/article/details/1137592866、事务6.1、什么是事务要么都成功,要么都失败参考博客:https://blog.csdn.net/dengjili/article/details/82468576ACID原子性(Atomicity):要么都成功,要么都失败一致性(Consistency):事务前后数据完整性要保证一致隔离性(Isolation):隔离性是多个用户并发访问数据库

2021-04-21 23:36:44 264

原创 【剑指Offer】19、顺时针打印矩阵

【剑指Offer】19、顺时针打印矩阵       难度:中等题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]我的思路:可以将矩阵看成若干层,首先打印最外层的元素,其次打印次

2021-04-15 11:05:12 105

原创 【剑指Offer】6、旋转数组的最小数字

【剑指Offer】6、旋转数组的最小数字      难度:简单题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。我的思路:这题感觉二分法也不一定省时间吧,我直接暴力求解。我的Java代码:import java.util.ArrayList;public class Solution { public int minNumberInRota

2021-04-09 21:20:06 78

原创 【剑指Offer】1、二维数组中的查找

【剑指Offer】1、二维数组中的查找       难度:中等题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。我的思路:1.先确定如何遍历?为防止漏解,肯

2021-04-09 20:48:48 81 1

原创 34.在排序数组中查找元素的第一个和最后一个位置(二分查找)

34.在排序数组中查找元素的第一个和最后一个位置(二分查找)                      难度:简单题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-firs

2021-03-24 10:31:30 135

原创 69.x的平方根(二分查找)

69.x的平方根(二分查找)           难度:简单题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。考察的是二分查找:二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。我的思路:一开始我没绕过来,这题花了很长时间,我都不敢相信这

2021-03-23 11:01:50 192

原创 哔哩哔哩视频任意倍加速播放方法

哔哩哔哩视频任意倍加速播放方法适用于网页版播放,可以调节任意倍速!!第一步,在浏览器全屏的界面,按F12键,会弹出以下窗口:第二步先点击最上面的console选项,再输入代码document.querySelector(“video”).playbackRate=“1.8”,然后按Enter键。其中,1.8指的是加速倍率,可以任意改!...

2021-03-22 22:02:26 3461 2

原创 680. 验证回文字符串 Ⅱ(双指针)

680. 验证回文字符串 Ⅱ(双指针)       难度:简单题目描述:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。我的思路:第一次见这个题的时候,真的感觉很难,做出来后,就感觉很简单。①设置两个指针:左指针i=0,右指针j=s.length()-1②while(i<j)循环:i=j时(即s有奇数个),是默认满足的,不用判断。  判断s.charAt(i)==s.charAt(j)是否相等,对所有的都相等时就返回true,有一组  不相等时就调用下面的方法进行判

2021-03-15 12:56:13 128 2

原创 633.平方数之和(双指针)

633.平方数之和(双指针)          难度:简单题目描述:给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a²+ b² = c 。我的思路:一开始我用的是两层for循环,结果超出师姐限制,把范围改到0-sqrt(c)也不行。所以用双指针来解题,简单的多。总结:解题时,我总是习惯于用自己的逻辑思维来解题,而不是优先考虑算法去解题,这就导致我经常用一些很蠢的方法,容易超出时间限制。技能补充:开方代码:Math.sqrt(a)我的Java代码:int l = 0;

2021-03-15 11:02:20 137

原创 88.合并两个有序数组(双指针)

88.合并两个有序数组(双指针)        难度:简单题目描述:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-arra

2021-03-12 17:08:13 334

原创 167.两数之和(双指针)

167.两数之和(双指针)           难度:简单题目描述:给定一个已按照升序排列的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。来源:力扣(Le

2021-03-11 10:51:30 300

原创 135.分发糖果(贪心算法)

135.分发糖果(贪心算法)           难度:困难题目描述:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?考察的是贪心算法。我的思路:这里的贪心策略是,如果小孩评分不比两边的高,则只给一个糖果。解题分为两步:1.从左向右判断循环一次,得出糖果分配方案2

2021-03-10 14:40:57 779

原创 455.分发饼干(贪心算法)

455.分发饼干(贪心算法)         难度:简单题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。来源:力扣(LeetCode)链接:https://leetcode-

2021-03-10 10:39:54 446

原创 【LeetCode】1. 两数之和

【LeetCode】1. 两数之和(难度:简单)题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。解题思路:因为是在数组中找出两个数来,所以是两层循环,然后判断nums[i]+nums[j] == target是否正确,正确则输出数组下标。本题Java代码:class Solution { pub

2021-03-02 10:12:18 66

原创 【总结】一维数组、二维数组的声明和初始化

【总结】一维数组、二维数组的声明和初始化1.一维数组的声明和初始化: 1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行 1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行           数组一旦初始化完成,其长度就确定了。示范代码:int num;//声明num = 10;//初始化int id = 1001;//声明 +初始化 int[] ids;//声明//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行ids = new int[]{100

2021-03-01 16:05:10 1008

原创 使用二维数组打印一个 10 行杨辉三角

使用二维数组打印一个 10 行杨辉三角题目描述:使用二维数组打印一个10行杨辉三角。【提示】第一行有 1个元素, 第 n行有 n个元素每一行的第一个元素和最后一个元素都是 1从第三行开始, 对于非第一个元素和最后一个元素的元素。即:yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];解题思路:1.声明并初始化二维数组 2.给数组的元素赋值 2.1给首末元素赋值 2.2给每行的非首末元素赋值3.遍历二维数组总结:声明并初始

2021-03-01 14:23:14 1097 4

原创 冒泡排序

冒泡排序介绍:冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。排序思想:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。总结:比较了 (arr.length-1) 趟;每一趟比了 (arr.leng

2021-02-28 21:04:05 91

原创 【总结】区分数组的赋值与复制

区分数组的赋值与复制先上结论:赋值与复制完全不同!!总结:1.赋值:只是把array1的地址给了array2,修改array2的话array1也会变!array2 = array1; //只是把array1的地址给了array2 //修改array2的话array1也会变!2.复制:String[] arr = new String[] {"hyj", "hxc", "hdh", "wt", "wtl", "yhp"}; //数组的复制(区别于数组变量的赋值:arr1 = arr

2021-02-28 15:57:07 351

原创 算法的考查:数组的复制、反转、查找(线性查找)

算法的考查:数组的复制、反转、查找(线性查找)题目描述:算法的考查:数组的复制、反转、查找(线性查找)解题思路:1.复制(与数组变量的赋值区分开): 需要新建一个数组(长度与原数组相同),然后遍历并对新数组中的元素挨个赋值;2.数组的反转 (注意:是将原数组反转,而不是新建一个数组) 引入临时变量temp即可,这是基本操作,不过for循环里i的范围要注意对应,索引是从0开始的3.查找(线性查找):查找的方法很多,这里讲最笨的线性查找 对数组进行遍历,然后判断是否相等,有两种方法,见程序本

2021-02-28 15:03:28 119 1

原创 求数值型数组中元素的最大值、最小值、平均数、总和等

求数值型数组中元素的最大值、最小值、平均数、总和等题目描述:算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。要求:所有随机数都是两位数。解题思路:[10,99]: 运用公式的时候,要保证是闭区间公式:(int)(Math.random() * (99 - 10 + 1) + 10)总结:遍历的时候,是0到arr.length-1,即 for(int i =

2021-02-27 15:08:29 759

原创 操作数组的基本方法(java.util.Arrays)

操作数组的基本方法题目描述:对数组进行一些常见的基本操作: 1.判断两个数组是否相等 2.输出数组信息 3.将指定值填充到数组之中 4.对数组进行排序 5.查找数组中的元素解题思路:java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法:1.boolean equals(int[] a,int[] b):判断两个数组是否相等2.String toString(int[] a):输出数组信息 System.out.println(arry):输出的是数组地址

2021-02-27 14:34:01 141

原创 100以内的所有质数的输出

100以内的所有质数的输出题目描述:100以内的所有质数的输出。质数:素数,只能被1和它本身整除的自然数。–>最小的质数是:2解题思路:1.遍历2-1002. 从2开始,到这个数-1结束为止,都不能被这个数本身整除。—>是质数3. 其实计算2到Math.sqrt(i)就可以了4. 关键是做个标识 boolean isFlag = true;总结:标识符的使用要记牢!本题Java代码:public class PrimeNumberTest { public stati

2021-02-26 22:28:00 1181 2

原创 用Java语言编写九九乘法表(嵌套循环的使用)

用程序编写九九乘法表题目描述:嵌套循环的应用:九九乘法表1 * 1 = 12 * 1 = 2 2 * 2 = 4…9 * 1 = 9 … 9 * 9 = 81解题思路:根据狗的年龄进行分段计算,用if语句进行判断即可。总结:for循环格式:for(int i=1;i<=150;i++)本题Java代码:public class DogAge { public static void main(String[] args) { int dogAge =

2021-02-26 19:32:30 749

原创 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。题目描述:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。解题思路:因为读入的个数不确定,所以需要一个无限循环。当输入为0时,break跳出循环就行。总结:① 最简单“无限” 循环格式:while(true) , for( ; ; ),无限循环存在的原因是并不知道循环多少次,需要根据循环体内部某些条件,来控制循环的结束。② 结束循环有几种方式? 方式一:循环条件部分返回false 方

2021-02-26 18:17:54 6820 2

原创 输入两个正整数m和n,求其最大公约数和最小公倍数。

输入两个正整数m和n,求其最大公约数和最小公倍数。题目描述:题目:输入两个正整数m和n,求其最大公约数和最小公倍数。比如:12和20的最大公约数是4,最小公倍数是60。说明:break关键字的使用解题思路:①最大公约数的求法:令i从min值循环到1(i- -),如果m和n都能整除i,那i就是最大公约数;②最小公倍数的求法:令i从max值循环到m*n(i++),如果i能同时整除m和n,那i就是最小公倍数。总结:①break语句的使用:默认跳出包裹此关键词最近的一层循环。在本题中是for循环,

2021-02-26 15:22:36 2497 3

原创 编写程序从1循环到150,并在每行打印一个值

编写程序从1循环到150,并在每行打印一个值题目描述:编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。格式如下:解题思路:用for循环,然后在依次判断是否是3,5,7的倍数,即使用取余运算%看结果是否为0,写好后注意调整格式保持和图片一致。总结:for循环格式:for(int i=1;i<=150;i++)本题Java代码:public class ForTest1 {

2021-02-26 14:37:36 1454

原创 从键盘分别输入年、月、日,判断这一天是当年的第几天

从键盘分别输入年、月、日,判断这一天是当年的第几天题目描述:从键盘分别输入年、月、日,判断这一天是当年的第几天注:判断一年是否是闰年的标准:1)可以被4整除,但不可被100整除或2)可以被400整除解题思路:用switch-case结构就可以,不过注意要是否是闰年。总结:一、如何从键盘获取不同类型的变量:需要使用Scanner类具体实现步骤:1.导包:import java.util.Scanner;2.Scanner的实例化:Scanner scan = new Scanner(

2021-02-26 14:15:04 4667 1

原创 如何获取一个随机数:10-99

如何获取一个随机数:10-99题目描述:如何获取一个随机数:10-99,考察了强制类型转换。解题思路:random生成的是double型 [0.0,1.0)公式:[a,b]:(int)(Math.random() * (b - a + 1) + a)记住这个公式就没有问题强制类型转换:自动类型提升运算的逆运算。1.需要使用强转符:()2.注意点:强制类型转换,可能导致精度损失。代码举例如下://day02 --> VariableTest3double d1 = 12.3;/

2021-02-26 12:56:00 2497 1

原创 测算狗的年龄

测算狗的年龄题目描述我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。解题思路:根据狗的年龄进行分段计算,用if语句进行判断即可。Java代码:public class DogAge { public static vo

2021-02-25 22:48:15 927 1

原创 随意给出一个三位数的整数,打印显示它的个位数,十位数,百位数的值。

随意给出一个三位数的整数,打印显示它的个位数,十位数,百位数的值。题目描述:随意给出一个三位数的整数,打印显示它的个位数,十位数,百位数的值。格式如下:数字xxx的情况如下:个位数:十位数:百位数:例如:数字153的情况如下:个位数:3十位数:5百位数:1解题思路:这题很简单,就用除法符号和取余符号就可以了运算符 / :除法运算符,并且运算结果遵从向下取整。运算符 % :取余Java代码:public class AriExer { public static voi

2021-02-25 22:27:15 1559

原创 二叉树的顺序存储结构

二叉树的顺序存储结构

2020-11-04 19:25:18 278

空空如也

空空如也

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

TA关注的人

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