自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 byte类型也可以存0-255?

但是如果我们想用byte来存储0-255的数据需要怎么办呢?那就是我们在定义的时候,将0~255的数据强制转换成byte类型,此时我们的jvm会自动将129 ~ 255的数据表示为 -127 ~ -1的数据。但是我们为了得到0 ~ 255的数据,所以我们在。由于Java不存在无符号数据类型,所以在Java中我们使用基本数据类型来存储数据时,需要使用一位来存符号,所以我们byte的存储范围为-128 ~ 127。展示的时候可以使用int型来展示,存储时用byte来存储。

2023-07-25 11:49:42 565

原创 腾讯云部署springboot前后端分离项目

在前端页面点击一个时间,然后需要访问我们后端的controller,我们需要添加一个location来进行拦截,拦截到的请求可以进行反向代理到某个地址去,也就是去访问我们的后端地址。任意目录下,输入命令mongo即可进入数据库,配置了环境变量的前提下,否则需要在mongodb安装目录下的bin目录下使用 ./mongo 命令。redis的安装我是使用的宝塔一键安装的,安装好了之后,我们还是需要修改我们的配置。安装结束,安装jdk还是比较简单的,宝塔其实有一键安装jdk,但是我用不太习惯。

2023-06-30 12:14:26 421

原创 设计模式(工厂模式)

抽象工厂类优点就是我们需要引入新的课程时,只需要直接新创建一个工厂类就好,但是如果我们需要新增等级结构,比如给美的新增一个热水器的产品,那么我们就需要修改原代码中的东西,违背了开闭原则。我们有一个Video的抽象类,可以有多个类继承这个抽象类,然后实现这个抽象类种的方法,我们的应用层要根据不同的实现了这个抽象类的类,来调用其中的方法。不同的场景需要不同的使用,比如我们的课程就不会再增加了,那么我们就可以使用简单的工厂模式,减少类的个数,并且不需要担心开闭原则的问题。族:根据上图,我们一个族就是一个产品。

2023-04-30 20:52:42 122

原创 设计模式(代理模式)

代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,我们可以对实际对象中的方法进行一定程度的增强。

2023-04-30 14:55:01 107

原创 设计模式(单例模式)

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。保证一个类仅有一个实例,并提供一个全局访问点。

2023-04-28 23:19:20 68

原创 设计模式(七大设计原则)

我的理解就是,一个类就可以创建这个类的对象,我们用一个对象为例,一个对象要干的事情可以归纳为一个职责,这个对象又可以做不同的事情《===》类中不同的方法。看视频的时候这个地方说得比较繁琐,主要的意思就是我们的Interface接口中可以有很多方法,但是我们希望我们自己定义的接口,在我们自己定义的类去继承它的时候,是该接口所有方法都有用的。如果我们的一个类中,负责两个职责,职责1和职责2,如果我们只想修改职责1,而不想修改职责2,那么问题就出现了。对于一个类来说,我们应该控制只负责一项职责。

2023-04-27 19:43:11 111

原创 代码随想录Day14

我们只需要返回root.val == val的这个结点就可以了,这里比较好的就是先判断root == null 和root.val ==val的情况,所以,一旦我们判断成功了,就不会再接着向下递归了,然后向上层返回一个根节点,然后一次不断返回,直到到最外层递归返回该root结点。否则,不为 null 的节点将直接作为新二叉树的节点。通过前序中序、后序中序构造一棵二叉树,主要是左闭右开原则,然后使用递归的方法,通过前序或者后序可以不断的将中序的二叉树 序列分成左子树和右子树,这就是突破口。

2023-04-20 18:00:28 60

原创 自刷代码随想录Day13

如果他的左子树为空,右子树高度为n,那么这棵子树的最小高度不能以0为标准,而需要以存在子树的部分为标准。该题的思路就是遇见叶子结点,就将路径中的元素拼成一个String放进res中,如果不是叶子节点就进去咯,但是进去后出来的时候需要删除该结点在paths中的路径,这就是回溯。该题方法挺多的,本次使用的是递归法,我们需要特别注意的是,对称不是所有结点的左右子节点都对称,而是根节点的左右子树对称,意思是我们需要比较两棵树的对称。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

2023-04-18 14:21:28 203

原创 自刷代码随想录Day12

int val;} }

2023-04-17 14:06:15 60

原创 代码随想录Day11

我们需要自己造一个单调队列,队列里面的元素需要单调递减,存放的是我们一个滑动窗口中的元素的一个单调递减顺序,目前主要的注意力就是在进队,如果发现进队的元素大于队列队尾元素,则就尾元素出队,则直到进队这个元素的地方,前面窗口的中元素都小于该元素,所以可以将对列清空,在入队该元素。给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。出队操作,考虑到什么时候什么时候需要出队,就是该队首的元素已经滑到窗口外了,不属于滑动窗口中最大的元素了。返回一个表示表达式值的整数。

2023-04-13 11:34:05 169

原创 自刷代码随想录day10

该题主要是已经提供了栈的一系列操作(说明中已经说明了),不需要自己去构建栈的一些列操作,我们只需要实现的是用两个栈来实现一个队列的操作,没有复杂度,需要注意的就是当stcakOut为空是,需要将stackIn中的元素放到stackOut中,总归还是两个单独操作的栈,而不是说是一个数组维护的两头插入的栈。怎么去实现呢,我的理解是队列queueOne和queueTwo两个队列,每当要进栈,就进到有数据那个队列,每当要出栈,就将有数据的对列出队列,另一个队列进队列,直到第一个队列只剩一个元素,然后取出来。

2023-04-11 14:35:12 109

原创 自刷代码随想录Day09

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。KMP的思想确实难,其实也就是我们做next数组那个地方有点难以理解,后面还需要多看看,再做深入分析KMP。给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。完全通过观察next数组的规律来判定是否该字符串有某子串重复多次构成。若是重复多次构成,那么字符串长度%字串长度一定等于0。本题还可以使用滑动窗口来解决。

2023-04-11 10:19:02 86

原创 自刷代码随想录Day08

反转数组比反转链表要简单很多,因为数组是一组连续的空间,可以根据下标索引拿到数组中的值,并且时间复杂度为O(1),通常的做法是使用双指针,两头交换就行。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。该题有个特点,就是每次交换的前后的字符串元素的个数不一样,我们需要每次去找到该交换的而字符串。给你一个字符串 s ,请你反转字符串中 单词 的顺序。

2023-03-28 22:28:55 117

原创 自刷代码随想录Day07

这道题的题解还是比较新颖的,它在map中存放的key值是这个key对应的value的值在数组中的值还差多少到target,如果找到这个差值,我们就找到了第二个数。2)set是一个集合,里面只能存放一个元素key值,这道题我们不仅需要y的值,还需要y值在nums数组对应的下标值,所以需要key-value键值对来存放。1)数组的长度受限,如果不能确定数组的长度我们就无法使用数组的数据结构,同时,如果数组长度很长(哈希值大),而元素很少,浪费空间严重,不建议使用数组。:答案中不可以包含重复的三元组。

2023-03-25 22:33:46 109

原创 自刷代码随想录Day06

哈希表的选取首先的要素就是要能把所有元素通过映射到哈希表中去,这里我们选取一个长度为26的数组,因为字符串中的元素都是小写字母,26个小写字母的ASSCI值是26个连续的值,所以我们可以将它们分别映射到0-25的数值上,正好对应上数组的下标。1)是否符合大海捞针的条件,我们要去对比每一个字符串t中的字符是否在字符串s中,相当于我们需要做t.length()次大海捞针的操作。1)终止条件:再次得到了一个之前重复的数,证明次数不快乐了,陷入了死循环,快乐不起来,得到了1,那么该数就是快乐数了,也就结束了。

2023-03-24 22:44:11 64

原创 自刷代码随想录Day05

(快慢指针的差值可以以固定速度变化,这也是第一次遇到,slowIndex以速度为1前进,fastIndex以速度为2前进,如果链表中存在环形,那么快指针指定会在环形中与慢指针相遇(至于相遇时,快指针跑了多少圈我们先不管他))果不其然,我没有考虑到我们给出的数据,就是以数组形式给出的,数组中的值也就是对应下表的节点的val值,如果我们设置的特殊值与数组中的值撞车了,那么也就顺其自然的失败了。我们此时再用快慢指针(此时快慢是位置上的快慢,移动速度相同),同时移动到两个节点相同就行了。(day04那道题)

2023-03-23 11:28:54 69

原创 自刷代码随想录Day04

2)我们要考虑当快指针比慢指针快n-1时,也就是n正好等于链表长度,那么我们要删除的就是head的那个节点,我们在正常删除节点的时候,此时又有个特殊情况,如果这个链表就只有一个head节点,也就是n和链表长度都等于1的情况,我们删除的方法又是和常规操作不一样的。要求出两个链表相交的开始,我们知道相交之后的所有部分,他们的节点时相同的,就意味着我们需要尾对齐,更长的链表,链表前的部分肯定是不符合要求的,算了这个还是直接上图比较清晰。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。

2023-03-22 21:26:37 135

原创 瑞吉外卖优化(三)

前后端分离开发,就是在项目开发过程中,对于前端代码的开发由专门的前端开发人员负责,后端代码则由后端开发人员负责,这样可以做到分工明确、各司其职,提高开发效率,前后端代码并行开发,苛以加快项目开发进度。目前,前后端分离开发方式已经被越来越多的公司所采用,成为当前项目开发的主流开发方式。前后端分离开发后,从工程结构上也会发生变化,即前后端代码不再混合在同一个maven工程中,而是分为前端工程和后端工程。

2023-03-22 15:39:36 59

原创 Nginx基础入门

Nginx是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。官网地址:Nginx。

2023-03-21 18:46:15 70

原创 自刷代码随想录Day02

这道题首先我们可以选择暴力解法,也就是使用两个for循环,一个循环进行遍历值等于val的元素,另一个循环做赋值,也就是后面覆盖前面元素的操作,显然这样的时间复杂度为O(n*n),但是该题只限制了空间复杂度而没有限制时间复杂度,是可以行得通的。通常情况下,我们需要对一个数组的元素操作,然后生成另一个数组,我们可以考虑快慢指针,快指针(一个或者两个)在原数组跑,慢指针视情况在新数组或者原数组上跑(题1为在原数组上跑、题2为在新数组上跑)。数字的平方,当两个数的平方一样时,也是需要返回的。元素的顺序可以改变。

2023-03-20 19:55:57 99

原创 自刷代码随想录Day01

两题的特点都是需要判断target的值在数组的中位置,同时告诉时间复杂度为logn,我们在遇见logn的时间复杂度要有意识的想起二分查找。解题心得:我最开始忽略了时间复杂度,然后在找到任意一个target的值,就开始使用两个while循环,左右移动,直到不为target为止,显然不能满足时间复杂度为logn的条件。二分法是非常重要的一种算法,在实际应用中非常广,解题思路其实也是比较简单,我们主要是需要学会辨认二分查找和在一个比较难的算中,某一个部分可以使用二分查找来简化算法。

2023-03-19 20:48:33 48

原创 Maven的基本使用——基础篇2(Idea)

Maven的基本使用(idea版)

2023-02-10 14:48:09 348

原创 Maven的基本使用——基础篇1(命令行)

通过命令行来使用Maven,更通俗的理解Maven

2023-02-10 13:44:37 2483

原创 Maven的下载安装和配置

Maven的下载安装和配置

2023-02-07 15:18:59 132

原创 MyBatis缓存

MyBatis的一级缓存和二级缓存的使用。

2023-02-06 09:07:24 63

原创 自定义映射ResultMap

MyBatis中的一对一、一对多、多对一和字段名与属性名不匹配的映射关系

2023-02-04 17:13:17 340 1

原创 特殊SQL的执行

特殊SQL语句的执行

2023-02-03 14:09:57 97

原创 MyBatis的各种查询功能

MaBatis的各种查询功能

2023-02-02 14:02:15 558

原创 MyBatis获取参数

MyBatis获取参数的五种方式

2023-02-01 12:50:36 1364

原创 MyBatis基本操作流程

MyBatis的基本操作流程,只是为了防止自己遗忘使用。

2023-01-31 17:07:18 55

原创 java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

2022-12-23 18:17:17 395

原创 MySQL的卸载与安装配置和基础操作

手把手教你mysql的安装配置和基础操作

2022-12-02 11:18:03 619

原创 `com.mysql.cj.jdbc.Driver`和`com.mysql.jdbc.Driver`区别问题

MySQL连接数据库的时候,使用了很久的com.mysql.jdbc.Driver驱动,居然报错了。

2022-11-25 12:11:20 341 1

原创 JSP入门基础汇总

一、jsp的作用Servlet:缺点:不适合设置HTML响应体,需要大量的response.getWrite().print("");优点:动态资源,可以编程HTML:缺点:HTML是静态资源,不能包含静态信息优点:对HTML标签输出方便jsp(java server pages):优点:在原有的HTML基础上添加java脚本(jsp 2.0以后只能使用EL表达式)jsp与Se...

2019-06-05 13:32:44 293

原创 自定义工具类----JavaWeb生成验证码并使用

生成验证码创建类VerifyCode用于生成验证码import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import...

2019-05-24 15:45:05 350

原创 java中如何将自己的工具类自定义为jar包并使用jar包

myeclipse、eclipse一、生成jar包1.选中项目名2.右键---->export---->java---->JAR file----->next---->选中工具类的.class文件----->填写文件路径----->finish二、使用jar包1.选中需要使用jar包项目2.右键---->new---->Folder...

2019-05-22 10:53:43 2728

log4j.properties

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

2019-07-24

空空如也

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

TA关注的人

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