自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 斗地主发牌

【代码】斗地主发牌。

2023-09-07 21:18:52 118

原创 按日期发送生日祝福

【代码】按日期发送生日祝福。

2023-09-07 21:16:54 213

原创 java中的异常

为什么要自定义异常​ 当jdk中的异常类型不满足我们的需求时,可以自定义异常我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。,例如年龄负数问题,考试成绩负数问题。如何自定义异常1.定义异常类,并继承Exception或者RuntimeException2.编写异常类的构造方法,向父类构造方法传入异常描述信息,并继承父类的其他实现方法。

2023-08-30 23:07:05 114

原创 Record-记录类型

Record类型是不可变的,一旦创建后,其属性值就不能被修改,从而保证了数据的不可变性。没有 setter 方法.record 声明的对象一旦创建,内部字段的值不能变。是一种简洁的类声明方式,用于定义数据传输类型,或者用于表示不可变的数据对象。相当于(隐式的最终类,final修饰,不能继承其他类,不能被其他类继承)相当于声明一个类只有一个有参构造,有私有字段,同时还有获取参数的方法,同时还有获取字段值得方法(方法名是字段名/形参名),继承 java.lang.Record。

2023-08-28 22:13:47 311

原创 字符串--笔记

字符串是由字符组成的序列。是用双引号引住的的任意个字符。字符序列: 多个字符按照一定的顺序组成的列表String 字符串StringBuffer 字符缓冲区 线程安全StringBuilder 字符串构造器 线程不安全charBuffer 字符缓冲区都实现了 CharSequence 接口。

2023-08-28 22:11:41 51

原创 内部类 - 笔记

定义:内部类是指将一个类定义在另一个类的内部,称为内部类,在内部类里还可以定义内部类。也叫成员类,也是类的一个成员例:内部类可以继承其他类,也可以被其他类继承(如果不再同一个.java文件中,那么被继承的内部类必须是非私有的)内部类可以被外部类的子类继承外部类只能被public修饰或者不写 (package-private) ,而内部类可以被所有的修饰符修饰,成员类可以使用 final static abstract 等修饰符修饰成员类(注意final和static不能同时出现)

2023-08-28 22:10:46 33

原创 很全的面向对象笔记

java面向对象

2023-08-18 21:30:07 561

原创 java内存图

栈堆方法区本地方法栈寄存器从jdk8开始,取消方法区,新增元空间,把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的放到了元空间中静态初始化java中静态初始化,在类被加载时执行的初始化方式,用于初始化类的静态变量和执行一些静态代码块注意:静态代码块在类被加载时只执行一次,且只能访问类的静态变量和方法,静态初始化的执行顺序时按照代码块在类中出现的顺序依次执行的实例初始化:在创建对象时执行,优先级高于构造方法,在每次创建对象时都会执行//代码块 }构造方法。

2023-08-17 14:17:44 32

原创 java数据结构与算法之使用非递归的方式进行二叉树的前序后序中序遍历

非递归代码,去时打印是前序遍历,回时打印时中序遍历。

2023-08-08 22:06:56 278

原创 java中的冒泡排序、选择排序、插入排序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGNn6uqR-1691502606575)(https://s2.loli.net/2023/08/08/s1LkmwdAvKqhYRt.jpg)]

2023-08-08 21:50:48 23

原创 使用递归对二叉树进行前序、中序、后序遍历

中序遍历:对于每一颗子树,先访问左子树,然后是该节点,最后是右子树。广度优先遍历:尽可能的先访问距离根节点最近的节点,也称位层序遍历。前序遍历,对于每一棵子树,先访问该节点,然后是左子树最后是右子树。后序遍历:对于每一棵子树,先访左子树,然后是右子树,最后是该节点。深度优先遍历:对于二叉树可以进一步分为三种。

2023-08-02 22:38:50 36 1

原创 程序控制流程

可以不使用{},但是这时只会执行条件后的一条语句。在if中,可以这样写。

2023-08-02 21:56:45 27 1

原创 java基础中一些细节

返回一个字符串,如果字符串中间有空格则忽略掉空格以后的值,但是如果定义两个String类型接收后面的值,则第二个变量可以接收到空格后的第二个字符串。返回一行的数据,可以是空白字符,如果定义两个String变量接收,那么第一行的是第一个变量所接收的值,第二行的是第二个变量所接收的值。| 逻辑或 只有一个为true则为true ,全部为false才是false,左边无论true或false右边都会执行。&& 短路与 运行规则和&相同,区别在于如果左边为false,则右边不会执行,为短路。

2023-08-01 22:06:30 33 1

原创 MySQL子查询

最后,使用子查询进行 DELETE 和 UPDATE 操作时,性能可能较差,因为数据库必须执行两个查询操作,而不是一个。因此,您可以使用子查询来指定要删除或更新的行,但是不能使用子查询来更新特定列的值。例如,主查询中的 WHERE 子句必须使用等式或条件,而不能使用子查询中的聚合函数或 GROUP BY 子句。在emp表中,可以看到员工李四是没有部门编号的,但是使用左连接,左边中的数据会被全部查询出来,右表中则只将对应的数据查询出来。使用左连接,则可以将左表中的数据全部查询出来,即使右表中无数据。

2023-07-30 10:24:55 37 1

原创 MySQL约束篇

自增长列。

2023-07-27 21:32:27 36 1

原创 网络编程(一)

例如一个采用二进制形式的IP地址是“11000000 10101000 00000001 01000010”,这么长的地址,处理起来也太费劲了。IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。为了扩大地址空间,通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,这样就解决了网络地址资源数量不够的问题,可以为地球上的每一粒沙子都设定IP。利用局域网IP解决IP不够的问题。IP:设备在网络中的地址,是唯一的标识。

2023-07-26 22:31:21 32 1

原创 在java中使用双锁实现阻塞队列(二)

目前在每执行一次offer或者poll操作时,都会执行一次唤醒操作,但是唤醒就会再次执行加锁操作,offer和poll操作还是可能会互相影响,所以要尽可能的减少在唤醒时的加锁操作,例如,在队列为空时,offer第一次执行时,唤醒poll,后续则通过poll来唤醒poll。c = size.getAndIncrement()此方法返回值是增加前的值。让它们并行存在,写成平级。

2023-07-26 17:38:46 39 1

原创 如何在阿里云服务器上安装宝塔

第一次登录会给出宝塔访问地址、用户名和密码,如果在以后使用的过程中密码忘记可以通过5进行修改密码。第一次安装会在底部提示需要放行的端口,将端口复制,然后再阿里云云服务器控制台安全组进行配置。在第3步选择你服务器系统对应的安装命令 ,然后粘贴到终端界面执行。将提供的用户名和密码复制进去,就可以登录宝塔面板啦!然后将外网面板地址复制到浏览器,就会出现宝塔登录页。可以使用命令 bt 查看宝塔相关操作指令编号。在宝塔安装完毕后会出现类似下方的界面。点击手动添加,将复制的端口添加进去。然后输入登录服务器的密码。

2023-07-25 23:37:51 1126

原创 在java中使用双锁实现阻塞队列(一)

双锁实现1.0使用单锁实现阻塞队列存在一个问题,因为offer和poll使用的是同一个锁,所以当执行offer操作时,poll就要等待offer释放锁之后才能进行操作,如果当poll正在执行时,offer也要等到poll解锁后才能进行。解决方案:创建两个锁对象,tailLock 和headLock分别关联offer方法和poll方法,分别创建与两个锁相关联的条件变量,让两个操作之间互不影响。代码实现:package com.luas.blockingqueue;​import

2023-07-25 22:55:00 173

原创 阻塞队列java实现

假设队列的长度为3,队列已满,当进行offer(4)时当前线程会进入阻塞状态,然后取走1,此时队列空出一个位置,然后进行唤醒线程,当线程被唤醒后,此时正好offer(5)抢到了线程的执行权,此时队列添加5,队列已经满了,当offer(5)执行完成以后,此时offer(4)会从 tailWaits.await()后往下执行,则不会去判断队列是否已满,此时就会出现,队列已满,但是还在往里添加元素,会出现异常;可以在offer方法中,加锁,执行完代码后再去解锁,就可以避免这样的问题出现。

2023-07-23 15:31:42 382 1

原创 springboot项目中,将在拦截器中解析token得到的信息传给Service层

就可以在拦截器中将从token获取到的用户id存放到ThreadLocal中去,然后在service层拿出id,然后将这个id添加到数据库中。ThreadLocal为每个线程单独提供一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。在拦截器中将解析后的token载荷中的用户id存放在ThreadLocal中,然后在service中取出。可以看到,发起的每一个请求都是一个单独的线程 ,满足每个线程都是单独的一份存储空间。封装ThreadLocal便于代码的维护。

2023-07-22 23:31:58 1065

原创 在springboot中进行异常处理

2.创建一个方法,在方法里写拦截到异常后,处理异常的方法,需要在方法上加上@ExceptionHandler 注解。当controller中的方法出现异常时,会将异常抛出,然后交给全局异常处理器处理,返回错误信息。步骤1.创建一个全局异常处理类,在类上加上@RestControllerAdvice。1.在controller的方法中进行try...catch处理。实现简单,但是比较繁琐,不推荐使用。

2023-07-22 17:54:22 130

原创 拦截器(二)

1.接口规范不同:过滤器实现Filter接口,而拦截器需要实现HandlerInterceptor接口;2.接口范围不同:过滤器会拦截所有的资源,而拦截器只拦截Spring环境只能的资源;可以设置拦截哪些请求,也可以设置不拦截哪些请求。拦截器可以根据需求,配置不同的拦截路径。

2023-07-22 13:51:43 28

原创 拦截器(一)

是一种动态拦截方法调用的机制,类似于过滤器。spring框架中提供的,用来动态拦截控制器方法的执行。拦截请求,在指定的方法前后调用,根据业务需要执行预先设定的代码。

2023-07-22 08:56:14 30

原创 在springboot项目中使用Filter进行登录验证

首先发送login请求,过滤器会放行login请求,然后会返回给用户一个token,在用户发送其他请求时,需要在请求头里,携带token,然后过滤器会验证这个token是否有效,如果有效则可以正常发送请求,否则会返回请先登录提示信息。

2023-07-21 23:03:35 967 1

原创 Filter(三)过滤器链

举个例子,如果有两个过滤器,那么在执行时,会先执行第一个过滤器放行前的逻辑,放行,然后再去执行第二个过滤器放行前的逻辑,第二个放行之后才能访问到资源,当资源访问完毕后,会先执行第二个过滤器放行后的逻辑,然后再去执行第一个过滤器放行后的逻辑。也就是说,如果一个请求需要经过第一个过滤器和第二个过滤器,那么Servlet容器将首先调用第一个过滤器,然后再调用第二个过滤器。如果两个过滤器都需要对同一个请求进行处理,并且它们的执行顺序很重要,则可以使用元素中的dispatcher属性来指定过滤器的执行顺序。

2023-07-21 08:41:44 195 1

原创 Filter(二)过滤器详解

当过滤器拦截到请求之后,会先执行拦截前的逻辑,然后放行,当访问完资源后,又会回到过滤器中,执行放行完逻辑。2.Filter可以根据需求,配置不同的拦截资源路径。

2023-07-21 08:16:09 109

原创 过滤器(一)

ServletComponentScan注解主要用于在SpringBoot应用中自动注册Servlet、Filter、Listener组件,使其可以自动被Spring容器管理。步骤1:创建一个类实现Filter接口,重写接口中的init,doFilter,destory方法。注意:init,destory方法在过滤器被创建时会,默认执行,在创建类时可以不用重写这两个方法。@WebFilter注解用于将一个类声明为Web过滤器(Filter)的组件。步骤2:在创建的过滤器上,加上@WebFilter注解。

2023-07-20 23:42:13 70 1

原创 Swagger常用注解

注解 说明 @Api 用在类上,例如Controller,表示对类的说明 @ApiModel 用在类上,例如entity、DTO、VO @ApiModelProperty 用在属性上,描述属性信息 @ApiOperation 用在方法上,例如Controller的方法,说明方法的用途、作用

2023-07-19 22:04:24 29

原创 JWT学习笔记

存放用户自定义信息,通常会把用户信息和令牌到期时间放在这里,同样是一个Json对象,里面的key和value可以随意设置,经过Base64 Url编码后形成JWT的第二部分,由于部分是没有加密的,建议只存放非敏感信息。JWT最常见的常见就是授权认证,一旦用户登录,后续的每个请求都将包含JWT,系统在每次处理用户请求之前,都要先进行JWT安全验证,通过之后再进行处理。使用表头的算法和私钥对第一部分和第二部分进行加密,通过Base64 Url编码后形成JWT的第三部分。是一个密钥,用于生成签名。

2023-07-19 20:48:26 433

空空如也

空空如也

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

TA关注的人

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