自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaGuide复习1——常见面试题总结部分

重载:方法名必须相同,方法的返回值、修饰符、参数个数、参数类型可以不同(参数列表必须修改)。(重载是根据传入的参数不同,方法的处理也不同)重写:方法名、参数个数、参数类型(参数列表)必须相同,返回值、异常范围<=父类的该方法,修饰符>=父类。如果⽗类⽅法访问修饰符为 private/final/static 则⼦类就不能重写该⽅法。(因为方法体不同,所以处理不同)两同两小一大注意:重写时如果返回类型是 void 和基本数据类型,则返回值重写时不可修改。

2023-05-07 14:18:25 607 2

原创 hot100:数组——139、152

注意:substring方法每个字母都是小写。

2023-05-02 13:46:51 179

原创 hot100:数组——79、128

这道题要注意,前面的if……else if应该先写,然后再写visited[ i ][ j ]=true;不然在不符合if条件时,已经其位置的visited数组改成true,但是方法checkFlag直接结束,不会执行最后的visited[ i ][ j ]=false;后面执行会报错。

2023-05-01 18:10:41 200

原创 hot100:数组——75、78

两个思路:①用两个指针p0,p1分别指向0部分和1部分的开头;在遍历数组的过程中,如果元素是1,则让元素与p1所指位置的元素交换,p1后移;如果指向的元素是0,则将元素与p0所指的元素交换,然后再将元素和p1所指的元素交换,然后将p0和p1一起向后移(因为连续的 0 之后是连续的 1,因此如果我们将 0 与 nums[p0]进行交换,那么我们可能会把一个 1 交换出去,也就是很可能将位置i处的元素变为1);如果i所指位置的元素既不是1也不是0,则i后移。

2023-04-25 18:49:36 138

原创 hot100:数组——56、64

首先考虑只有两个区间的情况:但是这6种情况可以合并成3种情况,就是上面的3种。首先先判断第一个区间的起始位置是否小于等于第二个区间的起始位置。如果不成立,则交换两个区间。再考虑n个区间的情况,先将他们根据区间的起始位置排序,然后两两进行合并。【补充】1、copyOf(T[] original, int newLength)方法:original——需要拷贝的原始数组;newLength——拷贝元素长度,如果超出原始数组的长度则补充默认值,如int型则补充0。

2023-04-24 16:24:16 373

原创 hot100:数组——49、53、55

用hashmap存储,其中每个key,用这组异位词的排序后的字符串;value是这组异位词。比如“tea”和“ate”是一组异位词,他们的排序结果都是“aet”。在原来的Java课上,关于HashMap的插入元素的原理是:其实,在res.put(key,list);语句中,就是equals比较结果为true的情况——直接覆盖。

2023-04-22 16:31:52 362

原创 hot100:数组——39、48

由于矩阵中的行列从 0 开始计数,因此对于矩阵中的元素 matrix[row][col],在旋转后,它的新位置为 matrix[col][n−row−1]。但是这样需要一个辅助数组来存储新的matrix,不然交换一次位置,matrix就会改变一次,不是在原有的matrix上进行变化,会出错。根据前面得到的等式,推出,经过四次交换后,又回到了原来的位置。也就是可以一次性换四个位置的元素。规律:对于矩阵中第 i 行的第 j个元素,在旋转后,它出现在倒数第 i列的第 j 个位置。先上下反转,然后沿主对角线反转。

2023-04-20 17:58:39 49

原创 hot100:数组——34、46

思路:使用两次二分法,第一次查找target出现的结尾位置,第二次查找target出现的开头位置。这道题先看第一个二分法,是先通过二分查找target出现的第一个位置:如果mid元素大于等于target,就将范围缩小到mid左边;第二个二分法查找的是target出现的末尾位置,:如果mid元素小于等于target,就将范围缩小到mid右边;两个的区别就是mid的计算方式:到底用不用+1:因为如果左边界l更新为l=mid,此时mid的取值就应为mid=(l+r+1)/2。

2023-04-17 19:24:18 54

原创 hot100:数组——31、33

思路:其实这道题的意思就是,简单地说,就是找到一个比现有的给出的数组代表的值大的最小的数比如给出的数组是[1,2,3],它代表的数值是123,现有的元素组成的数值中,比123大的有很多,比如:213,231,312,321……,这些数中最小的一个是132,表示成数组就是[1,3,2]。此集合就是我们要输出的。

2023-04-14 15:12:41 460

原创 hot100刷题:数组——11、15

思路:首先根据实例1,能够判断出水的容积就是(两块板中的短板长度)*(两块板之间的距离),用数学公式表示就是:S(i,j) = min(h[ i ] , h[ j ]) × (j − i),这里用到的是双指针的思想来实现。首先两个指针都指向最两端的两块木板,然后不断让两块木板中较短的那块向内移动,移动过程中不断计算新的面积的大小,如果比前一次的大就进行记录。证明:如果使用枚举法,得到的面积的总数是(假如有n块木板):n+(n-1)+(n-2)+…+1种情况,然后在这么多种情况中选择最大值。

2023-04-12 20:23:05 65

原创 学成在线:第六天(p94-p102)

但其中C和A不能同时满足,因为如果想要满足C(一致性),就要等到数据更新后,比如在用户服务节点1上更新了数据,此时服务节点2还是旧数据,需要等待节点2将数据同步过来后,才能保证不论取哪个结点的数据,都是最新的;而A是要随时取随时都能取到数据,也就是即使在节点2同步数据的过程中也是能取到数据的,两者相矛盾。全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。

2023-04-05 20:07:44 321

原创 学成在线:第五天(p82-p93)

当线程 A 要更新数据值时,在读取数据的同时也会读取 version 值,在提交更新时,若刚才读取到的 version 值为当前数据库中的 version 值相等时才更新,否则重试更新操作,直到更新成功。乐观锁总是假设最好的情况,认为共享资源每次被访问的时候不会出现问题,线程可以不停地执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的资源(也就是数据)是否被其它线程修改了(具体方法可以使用版本号机制或 CAS 算法)当且仅当 V 的值等于 E 时,CAS 通过原子方式用新值 N 来更新 V 的值。

2023-04-04 20:58:36 450

原创 项目日记:学成在线(第三天P35~p46)

树型表的标记字段是parentid即父结点的id。查询一个树型表的方法:1)当层级固定时可以用表的自链接进行查询。2)如果想灵活查询每个层级可以使用mysql递归方法,使用with RECURSIVE 实现。

2023-03-23 15:47:12 295

原创 代码随想录第二十七天(669、108、538、回溯算法介绍)

举例:在遍历到0这个结点时,因为0满足递归的第一个条件,所以会直接将0的所有子树删除,但是0的右子树的节点满足[1,3]这个范围.其实就是要考虑0节点右子树。

2023-03-23 13:22:18 288

原创 项目日记:学成在线(第二天P24~p34)

这条语句的作用是,将courseCategoryTreeDtos中的元素从list转换为map,并经其中的key设置为id,value属性不做修改,如果一个map元素中出现两个key值,则用新的key2覆盖原有的key1(根据 id 和 对象自己 转成 Map 集合)数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,并且各个访问进程都是独立执行的,这样就有可能出现并发存取数据的现象,这里有点类似Java开发中的多线程安全问题(解决共享变量安全存取问题)

2023-03-22 10:29:09 263

原创 项目日记:学成在线(第一天P7~P23)

可以标记在类上也可以标记在方法上,支持http的post、put、get等方法。虚拟是用软件再模拟了一系列的“CPU,内存,硬盘”等“虚拟硬件”,Docker不用再模拟CPU,内存,它们共用物理主机上的硬件资源, 这样性能更强,更节省资源(减少从微指令到汇编语言之间模拟与仿真的过程),同时还保持各容器之间,容器与宿主机之间的文件,进程,网络的独立性。@ComponentScan(包扫描,我们自定义的扫描注解扫描的是我们用得上的模块,而这个注解——自带的,会扫描启动类所在的包下的所有子包中的所有类的注解)

2023-03-20 20:29:21 470

原创 代码随想录第二十六天(235、701、450)

一开始觉得,这道题和236是一样的,然后自己写了代码,虽然也过了,但是后来发现235是二叉搜索树,而236是普通的二叉树原因:因为是有序树,所有 如果 中间节点是 q 和 p 的公共祖先,那么 中节点的数组 一定是在 [p, q]区间的。即 中节点 > p && 中节点 < q 或者 中节点 > q && 中节点 < p。那么只要从上到下去遍历,遇到 cur节点是数值在[p, q]区间中则一定可以说明该节点cur就是q 和 p的公共祖先。而且是最近的(可以通过举例说明)

2023-03-20 13:54:51 59

原创 代码随想录第二十五天(106——有问题、105、617、654、700、98、530、501——有问题)

前序和中序可以唯一确定一棵二叉树,后序和中序可以唯一确定一棵二叉树,而前序和后序不能确定一棵二叉树。在代码中注释的那部分出现了错误,报错是:(没解决……)这道题的map这里,get方法得到的是key对应的value值,所以在前面是把结点的值作为key,把坐标作为value。

2023-03-18 14:17:43 399

原创 springMVC

的实现类带动 Spring的IOC配置和SpringMVC的IOC配置,进而消灭了Spring 和 SpringMVC 的核心配置文件WebInit 实现了。

2023-03-16 21:43:04 437

原创 Spring学习

IOC:Inversion of Control,翻译过来是反转控制这部分其实就是Spring相关的一些APIIOC 容器中管理的组件也叫做 bean。在创建bean 之前,首先需要创建 IOC 容器。Spring 提供了 IOC 容器的两种实现方式:①BeanFactory这是 IOC 容器的基本实现,是 Spring 内部使用的接口。面向 Spring 本身,不提供给开发人员使用。②ApplicationContextBeanFactory 的子接口,提供了更多高级特性。面向 Spring 的使用者

2023-03-13 21:00:48 405

原创 MyBatis学习

若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射(比如数据表中的字段名的命名是是用下划线,而Java中的属性名用的是驼峰的方式命名,两者不能对应上)处理方法:1、为表中的每个字段起别名2、当字段名符合mysql中的命名规则使用下划线,而属性名符合Java的命名规则使用驼峰时,可以在mybatis的配置文件中统一设置一个全局配置,将下划线映射为驼峰。-- resultMap:设置自定义映射属性:id:表示自定义映射的唯一标识type:处理映射关系的实体类的类型。

2023-03-10 10:29:51 536

原创 代码随想录第二十四天(112、113)

中间注释掉了一部分内容,因为如果这部分没有注释,一开始想的是,直接在每个if条件中return hasPathSum(root.left,targetSum)和hasPathSum(root.right,targetSum),但是运行的结果会出错,因为,如果我们想要得到的结果是,整个树中有一条这样的路径就行,而这种return的方式只是单独考虑了这个根节点的左右子树,也就是如果检查完这个跟节点的左子树没有这条路径的话,会直接返回false,而不是再去右子树中查找。

2023-03-08 19:35:44 72

原创 maven的学习

主要从三个层面看:java代码:执行之前必须通过编译器编译成class文件web工程:想通过浏览器访问Java程序,需要将其(Java程序)对应的web工程的编译结果放到服务器的相关路径下,这个过程叫部署,并启动服务器。项目:需要一些第三方框架和jar包等资源构建就是将编写的java代码,配置文件,图片等资源,作为原材料,形成一个能够运行的项目的过程Maven 生命周期定义了各个构建环节的执行顺序。

2023-03-07 18:30:29 433

原创 代码随想录第二十二天(257、100、572、404)

看的答案1、首先是StringBuilder的方法和List的方法之间的不同:①StringBuilder的常用方法有:append、delete、setCharAt、charAt、insert、遍历、toString、length②List常用方法有:add、remove、set、get、遍历、size2、为啥不用String而是StringBuilder,因为StringBuilder更快,效率高。

2023-03-06 19:28:53 47

原创 代码随想录第二十一天(222、110)

浅看了一下答案,然后自己写的,不过递归没想出来。

2023-03-04 20:23:37 72

原创 代码随想录第二十天(101、559)

看的答案。

2023-03-02 19:48:29 64

原创 代码随想录第十九天(226)

心情不太好,直接看的答案。

2023-03-01 19:24:26 109

原创 代码随想录第十八天(429、515、116、104、111)

看了答案,对于每次len的循环结束之后进行变量的操作,在本题中是depth,不用死板地认为,必须要写在while(len>0)这个循环之后才能进行,像本题中,在最外层while循环中进行操作,一样能够达到目的。看的答案,注意前面出队列的节点是cur,后面出队列的节点是nex,而且for循环中的i的初始值是1。对于2的-31次方,可以使用Math.pow(a,b),不过返回值是double类型。对于max的赋值,记得这种写法:max=Integer.MIN_VALUE;

2023-02-28 20:15:49 145

原创 代码随想录第十七天(107、199、637)

就是在层序遍历的基础上,反转了一下【补充】另外一种不用反转的写法注意:addFirst方法是LinkedList中的,在声明返回数组时,声明的必须是:LinkedList< List< Integer>>,如果声明的是List< List< Integer>>会编译出错。

2023-02-25 19:49:14 52

原创 代码随想录第十六天(347、144、145、94)

如题

2023-02-23 20:03:22 210

原创 代码随想录第十五天(150、239)

因为在i=0,1情况时,R虽然在增长,但此时并不用让L也增长,因为L就算是0,也能使整个窗口的大小满足k=3,但是后面 i=2~7的过程中,因为R一直不断右移,如果此时还不再移动L,就不能满足窗口大小是k的要求了,要一直让窗口为k。队首3对应的下标为1,L=1,R=3,有效。result=[3,3,5,5,6,7]result=[3,3,5,5,6]result=[3,3,5,5]输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3。输出: [3,3,5,5,6,7]

2023-02-22 19:18:10 195

原创 XML学习

xml是可扩展标记语言xml 可扩展的标记语言。不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。

2023-02-20 11:04:54 246

原创 代码随想录第十四天(1047)

2、str和stack.pop()之间的顺序,顺序不对,得到的结果是反着的。1、在LinkedList和String的转换。欸嘿嘿,有个小错误,不过一把过了。

2023-02-18 20:11:07 90

原创 jQuery

jQuery,顾名思义,也就是 JavaScript 和查询(Query),它就是辅助 JavaScript 开发的 js 类库。它的核心思想是 write less,do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题需求:使用 jQuery 给一个按钮绑定单击事件?常见问题?1、使用 jQuery 一定要引入 jQuery 库吗? 答案: 是,必须2、jQuery 中的$到底是什么? 答案: 它是一个函数3、怎么为按钮添加点击响应函数的? 答案:$ 是 jQuery 的核心函数

2023-02-18 18:18:02 628

原创 代码随想录第十三天(20)

还有,最开始的if语句,如果写成注释中的形式,会报错,因为前面的==符号优先级比||高,所以先会判断前面的式子是否成立,然后再计算后面的||,也就是在第一个||的两边,左边是boolean类型,右边是char类型,不能计算。首先,要注意在创建一个Deque时,不能写成Deque stack=new Deque();最后,在else中还要先判断一下stack是否为空,因为如果不判断这个条件,在后面调用peek方法时,有可能会碰上stack已经为空的情况,就会报错。

2023-02-17 21:29:49 49

原创 JavaScript

JavaScript语言主要是完成页面的数据验证,因此运行在客户端,需要浏览器来解释执行JavaScript代码。JS是弱类型,Java是强类型。在head或body标签中,用script标签书写script代码需要使用script标签引入外部js代码使用先执行上面的代码,再执行下面的JavaScript是一种动态语言——即其是一种解释性语言,并非编译性语言,不能编译成二进制文件。JavaScript中存在几种常用的变量类型,用于逻辑判断以及数据存储:几种特殊数值类型:在JavaScript中一般

2023-02-16 19:33:09 282

原创 代码随想录第十二天(232)

双向队列:支持插入删除元素的线性集合。java官方文档推荐用deque实现栈(stack)。

2023-02-15 21:06:39 383

原创 CSS学习

Cascading Style Sheet层叠样式表CSS:表现(美化网页)字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动CSS1.0CSS2.0:DIV(块)+CSS,HTML与CSS结构分离的思想,网页变得简单,SEOCSS2.1:浮动,定位CSS3.0:圆角、阴影、动画…浏览器兼容性~最好写成如下这种形式:CSS的优势:1、内容和表现分离;2、网页结构表现统一,可以实现复用3、样式十分的丰富4、建议使用独立于html的css文件5、利用SEO,容易被搜索引擎收录!1

2023-02-14 20:12:13 469

原创 代码随想录第十一天(459 有问题)

涉及到的知识点,equals和==之间的区别,String重写后的equals比较的是内容,而不重写equals时,两者是相同的,如果使用的是基本数据类型,比较的是值,如果是引用数据类型,比较的是地址。当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,要刨除 s + s 的首字符和尾字符,这样避免在s+s中搜索出原来的s,我们要搜索的是中间拼接出来的s。但是这样对于重复字符串很长的字符串,效率会非常低。现在字符串和原字符串匹配了,所以可以得出结论存在重复的子串。

2023-02-13 17:29:19 272

原创 HTML学习

Hyper Text Markup Language(超文本标记语言)W3C:World Wide Web Consortium(万维网联盟)W3C标准包括:1、首先可以将创建好的工程中的src文件夹删除2、新建一个Directory(即文件夹),起名3、在其中,new一个html文件4、右上角的浏览器标识,点击可以用对应的浏览器打开我们写的代码对应的网页(如果安装了显示的浏览器)1、添加注释的快捷键:crtl+/2、所有网页内容必须写在中3、【补充】SEO定

2023-02-13 10:27:21 631

空空如也

空空如也

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

TA关注的人

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