自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker

分层的镜像有助于代码复用,在下载其他镜像时如果有些层已经存在就不需要再下载dockerFile中这几个指令就可以实现打jar包并运行。我们也可以直接下载jdk的镜像,它会包含jre(jvm)和系统函数库,所以我们只需要关注拷贝jar包和定义启动命令具体实现:jar包和Dockerfile在同一目录执行docker build -t 镜像名 dockerfile地址 这样一个格式创建镜像启动自定义容器。

2025-05-14 22:06:00 787

原创 Mybatis-plus

案例:我们之前写的.setSql是在业务层写的SQL语句,这在很多公司的规范中是不被允许的。用MP方便了,但有的时候要去拼接SQL,违反企业开发规范。比如我们这里的setSql(...)语句。自定义SQL就是我们在service和mapper层只构建条件然后逐步向下传递,然后在xml文件里对SQL语句进行拼接。

2025-05-13 18:29:41 1291 1

原创 java的Stream流处理

不是数据结构:不存储数据,只是从数据源(集合、数组等)获取数据函数式风格:支持 lambda 表达式和方法引用延迟执行:许多操作(中间操作)不会立即执行,只有遇到终止操作才会执行可消费性:Stream 只能被消费一次,用完即失效。

2025-05-11 19:29:15 837

原创 java面试篇(常见的集合底层原理)

abcd的hash值是10,它与数组长度16的按位与运算结果是0,所以不用移动桶下标。而1234的hash值是26,它的按位与运算不为0,则需要当前桶下标加上旧数组长度等于26。右移16位的异或运算,由于低位都是零,所以异或运算不改变原先的值,只有当hash值太大才会改变(似乎,这是猜测,老师没讲)。(n-1)&hash在n时2的n次幂时,计算按位与运算,等价于hash % n。注意两个线程扩容,用的都是创建的新数组。

2025-04-20 22:46:42 303

原创 java面试篇 4.9(mybatis+微服务+线程安全+线程池)

一个服务的所有连接数是确定的,当服务A向服务D发送请求失败时,连接并不会被释放,A持续向D发送请求会占满A的最大连接数,故而A无法再提供服务,A发生了宕机,而这是一个链式的崩溃过程。服务降级服务熔断服务降级是针对接口,当服务的某个方法不可用时,我们对该接口的方法进行降级,它会直接返回错误而不占用连接,而仅仅是部分方法不可用不需要关闭整个服务,当请求失败率达到50%以上则触发熔断,整个服务会被关闭,进入熔断机制。熔断针对的是整个服务不可用。

2025-04-16 21:37:39 885

原创 vue学习笔记(组合式api+elementUI介绍)

1.响应式数据和方法,import进来ref或者钩子函数,定义的数据一般为响应式数据const msg = ref(...);在使用这个响应式数据时需要添加value,msg.value。是 Vue 3 中的一个重要特性,它通过减少样板代码、自动暴露变量和方法、支持类型推断等方式,极大地简化了组合式 API 的使用,提高了开发效率和代码可读性。

2025-04-15 01:45:04 602

原创 Excel文件的导入导出

通过Multipartfile和ExcelUtil工具类实现文件导入文件导出结果。

2025-04-12 02:26:50 1154

原创 java面试篇 (线程基础)

需要获得线程的返回值就是和用实现callable方法。

2025-04-06 23:55:56 397

原创 java面试篇 Redis+MySQL+Spring

联合索引(Composite Index)是数据库中的一种索引类型,它基于表中的多个列创建。与单列索引(基于单个列创建的索引)不同,联合索引可以同时对多个列进行索引,从而提高多列查询的性能。联合索引是数据库中一种强大的工具,可以显著提高多列查询的性能。通过合理设计联合索引,可以优化查询性能,但需要注意索引的维护成本和列的顺序。记录日志:把这些通用代码抽出来,避免跟你的业务代码进行耦合:在 Spring 框架中,代理(Proxy)和动态代理(Dynamic Proxy)

2025-04-06 01:23:39 1802 3

原创 Springboot(循环依赖+SpringMvc流程)

springboot默认是不支持循环依赖的,但是我们可以在yml配置文件里开启支持循环依赖:Spring解决循环依赖的方式:第三个缓存区是为了解决动态代理的问题:代码梳理:回答:dispatchServlet是前端处理器。 渲染视图,view.render梳理代码:回答:服务器怎么给前端传一个视图模型?1.在Controller这里我们返回的是一个ModelAndView,它会设置视图名称和页面模型。mv.addObject会添加模型数据。 2.在Template文件下我们创建一个跟指定视图名称相同的页面:

2025-04-05 02:05:01 440

原创 Springboot面试篇(springApplication+ioc初始化+Bean生命周期)

回答:通过注入的环境属性在 Spring 应用中具有多种用途,包括动态配置、多环境支持、占位符替换、条件注解、集成测试、微服务配置和安全性配置等。这些属性使得 Spring 应用更加灵活和可配置,能够适应不同的运行环境和需求。的作用是允许开发者在 Spring 应用上下文的生命周期中插入自定义逻辑。通过实现,你可以在上下文初始化完成后,根据环境属性动态加载资源、进行资源后处理或处理资源依赖。这使得 Spring 应用更加灵活,能够适应复杂的业务需求。

2025-04-04 19:55:22 1139

原创 Springboot学习笔记4.1(登录优化+Vue介绍)

每次请求除了前端传来的JWT令牌,还需要Redis传来一份一模一样的令牌,那么一旦你的令牌修改,那么原令牌就与Redis中的令牌不匹配,无法请求服务器中的的数据。

2025-04-03 03:31:50 1054

原创 Springboot学习笔记3.28(条件校验分组+动态SQL+文件上传)

1.自定义注解State,这个注解要有message、group、payload三个方法,其他的元注解要看明白它的作用,如Constraint它指明包含校验规则的类,Target指明可以在哪些部分使用,Retention指明可以保留在哪些运行阶段:2.包含效验规则的类,需要实现constraintValidator接口,注意<1,2>前后两个参数的作用。重写isValid方法提供效验规则:3.此时我们就可以用这个自定义的效验注解用于参数校验,它会阻挡不是“草稿”和“已发送”的参数。虽然as是一个。

2025-04-01 21:39:00 911

原创 SpringBoot学习笔记3.27(参数校验+自定义异常+JWT+ThreadLocal)

匹配符:d?d出现0/1次a* a可以出现0/多次a+ a出现一次以上a{6} a出现6次a{2,} a出现2次以上a{2,6} a出现2-6次匹配多个字符:(ab)+ ab出现一次以上或运算:a (cat|dog) 匹配 a cat or a doga cat|dog 匹配 a cat or dog字符类:匹配由abc构成的数据【abc】+ abc出现一次以上 abc aabbcc^ 排除 【^0-9】 匹配0-9之外的数据(包括换行符)

2025-03-28 21:49:09 726

原创 Springboot学习笔记3.20(lombok+开发流程)

如果你需要返回一个视图(如 JSP 页面),使用。如果你需要返回 JSON 或 XML 格式的数据,使用。RESTful Web 服务是一种基于表现层状态转移(Representational State Transfer,简称 REST)原则构建的网络应用程序接口(API)。REST 是由 Roy Fielding 在 2000 年提出的,它是一种设计风格,用于设计网络应用程序,以便它们可以通过标准的 HTTP 方法访问和操作网络资源。符号用于 SpEL 中,用于对象图的查询和操作。

2025-03-27 19:43:40 769

原创 Springboot学习笔记 3.13(Bean管理+自动配置原理+自定义starter)

很显然,我们在整个业务代码中并没有使用配置文件中的信息,是Springboot自动识别参数并连接的数据库,配置文件中的信息我们一般只管写,不管读,只有特定情况下才需要去读取;mybatis自动配置的实现步骤:1.在autoconfigure模块中,编写配置类,配置类中包含两个Bean对象MyBatis 是一个流行的 Java 持久层框架,它提供了简单的方法将 SQL 查询转换为 Java 对象(Object-Relational Mapping,简称 ORM)。

2025-03-26 23:38:45 1010

原创 Mysql学习笔记3.15日

主表:包含主键字段,用于唯一标识每条记录。从表:包含外键字段,用于与主表的主键关联。外键约束:确保从表中的外键字段值必须存在于主表的主键字段中。通过这种方式,可以实现一对多的关系,并且可以通过外键约束来维护数据的完整性。INNER JOIN:返回两个表中匹配的记录。LEFT JOIN:返回左表的所有记录,右表中没有匹配的记录显示为NULL。RIGHT JOIN:返回右表的所有记录,左表中没有匹配的记录显示为NULL。FULL JOIN:返回两个表的所有记录,MySQL 中需通过UNION实现。

2025-03-16 17:56:40 951

原创 常用的排序算法3.14日

通过将记录按不同的步长分组,对每组使用直接插入排序算法排序,随着步长逐渐缩小,整个序列向有序状态演进,最后步长为1时进行一次完整的插入排序。:通过相邻元素的比较和交换,将较大的元素逐步“冒泡”到数组的末尾。:每次从未排序部分选择最小(或最大)的元素,将其放到已排序部分的末尾。将数组分成两部分,分别对两部分进行排序,然后将排序好的两部分合并成一个有序数组。:平均和最坏情况下为O(n²),最好情况下(数组已有序)为O(n)。:平均和最坏情况下为O(n²),最好情况下(数组已有序)为O(n)。

2025-03-14 12:10:44 673

原创 SpringBoot学习日记 3.12日

Spring Boot 是一个非常强大的框架,它简化了 Spring 应用的开发过程,提供了丰富的功能和强大的扩展性。通过自动配置、独立运行、微服务支持等特性,Spring Boot 让开发者能够快速构建高效、可维护的 Java 应用程序。在Spring框架中,Bean是被容器管理的对象实例,而注入Bean是Spring依赖注入机制的核心功能。它通过解耦、提高可测试性、集中管理配置以及支持AOP等方式,极大地简化了Java应用的开发,提高了代码的可维护性和可扩展性。

2025-03-13 01:53:02 679

原创 java学习笔3.10日(动态规划+位运算+单调栈)

两个整数的二进制表示中,只有当相同位置上的两个位都为。

2025-03-12 03:48:24 869

原创 Java学习笔记3.7(除法求值+动态规划+回溯)

动态规划(Dynamic Programming,简称DP)是一种用于解决复杂问题的算法思想,它通过将问题分解为更小的子问题,并将子问题的解存储起来以避免重复计算,从而高效地解决问题。动态规划通常用于优化问题,尤其是那些具有重叠子问题和最优子结构特性的问题。

2025-03-08 20:29:13 1014

原创 Java学习笔记 3.4日(二叉树+图)

图(Graph)是一种由**顶点(Vertices)和边(Edges)**组成的非线性数据结构,用于表示对象之间的关系。图可以用于建模各种复杂的关系网络,例如社交网络、交通网络、计算机网络等。图是一种用于表示对象之间关系的非线性数据结构,广泛应用于各种实际问题中。DFS和BFS是图的两种主要遍历算法,各有优缺点,适用于不同的场景。DFS 更适合寻找路径和检测环,而 BFS 更适合寻找最短路径和层次遍历。

2025-03-07 15:15:59 1373

原创 Java学习笔记 3.3日(linkedlist双向链表+栈/队列/递归遍历题)

遍历方式访问顺序应用场景前序遍历根 -> 左 -> 右构建复制树、表达式树的前缀表达式中序遍历左 -> 根 -> 右二叉搜索树的升序遍历后序遍历左 -> 右 -> 根删除树节点、表达式树的后缀表达式。

2025-03-06 02:10:34 621

原创 Java学习笔记3.2日(ArrayDeque双端队列/栈+小行星碰撞)

ArrayDeque是 Java 中的一个双端队列(Deque,Double-Ended Queue)实现,属于java.util包。它是一个基于动态数组的双端队列,支持在两端高效地添加和移除元素。特点双端操作可以在队列的两端(头部和尾部)高效地添加和移除元素。提供了丰富的操作方法,支持队列和栈的特性。动态数组实现内部使用动态数组存储元素,类似于ArrayList。当数组空间不足时,会自动扩容。高效性能在两端的操作(添加和移除)的平均时间复杂度为O(1)。不支持随机访问(没有get(index)

2025-03-03 03:43:09 332

原创 Java学习笔记2.28(定划窗+hashset+Arrays.aslist)

HashSet` 是 Java 中的一个集合类,属于 `java.util` 包。它是基于哈希表实现的,用于存储不重复的元素。`HashSet` 不保证元素的顺序,并且不允许存储重复的元素。以下是 `HashSet` 的常用方法和特性介绍。---### **1. 构造方法**`HashSet` 提供了多种构造方法,用于创建不同类型的实例:1. **无参构造方法**:```java```创建一个空的 `HashSet`,默认初始容量为 16,负载因子为 0.75。

2025-03-02 04:45:51 618

原创 Java学习笔记2.27(List接口+hashmap类)

这种情况下我们想要让指针移动后的容器面积增大,而如果我们只让高更高没有意义,因为木桶效应所以我们必须得移动短的一条边,移动长的那的边就算更高算的也是短边(木桶效应),所以我们只能期望移动短边让它更高来让容积更高。| `subList(int fromIndex, int toIndex)` | 返回从 `fromIndex` 到 `toIndex - 1` 的子列表。| `lastIndexOf(Object o)` | 返回指定元素最后一次出现的索引,如果不存在则返回 `-1`。

2025-02-28 21:50:28 691

原创 Java学习笔记 2025.2.26开始(String类、Array提供的方法、贪心算法)

思路:我们相加两个字符串,如果str1 + str2 = str2 + str1的(当然此处代码里肯定是equals),那么我们就可以认为一定存在公因子字符串(数学思想,可以好好想想),那么当一定存在公因子时,那么我们的最大公因子字符的长度一定就是两个字符串长度的最大公因数,求出这个最大公因数后截取合并字符串的前缀即可得到最终结果,前缀范围为:[0,两字符串的最大公约数]。- `String substring(int beginIndex, int endIndex)`: 返回指定索引范围内的子字符串。

2025-02-27 01:14:55 526 1

空空如也

空空如也

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

TA关注的人

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