自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于Spring AOP的示例

AOP (Aspect Orient Programming),直译为面向切面编程。与IOC一样,也是一种编程思想,是面向对象编程(OOP)的一种补充。

2022-09-05 00:10:29 362 2

原创 深入理解控制反转IOC和依赖注入

用代码的思想来解释就是,将下层的类作为参数传给上层类,这样就只专心做自己的事,不用考虑下层类在干什么。如果要把轮胎的size设置为自定义的,就不需要再修改上层类。

2022-09-03 23:18:03 498

原创 详解单例模式+代码实现

1.4 应用场景大家都要喝水,但是没必要每人家里都打一口井是吧,通常的做法是整个村里打一个井就够了,大家都从这个井里面打水喝日志管理、打印机、数据库连接池、应用

2022-09-03 00:51:30 515

原创 从零开始,SpringBoot搭建WebSocket

一 什么是WebSocket1.1 首先分清几个概念**http协议:**超文本传输协议,属于应用层。它的任务是与服务器交换信息。至于怎么连接到服务器,怎么保证数据正确,http不管。**TCP协议:**传输控制协议,属于传输层。任务是保证连接的可靠,包括防止丢失,出错。所以在初次连接的时候进行3次握手,断开连接时进行4次挥手。至于连接上以后具体传送什么数据,tcp不管。PS:别的应用层协议也能通过tcp进行,那么这协议在底层也进行三次握手。1.2 混淆点WebSocket:基于T

2022-05-07 00:08:55 3108

原创 Cannot resolve MVC View

前言在SpringBoot设置跳转页面时报了个错:Cannot resolve MVC View "index"解决在pom.xml文件中缺少依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

2022-05-04 22:06:26 912

原创 三个路由器的静态路由设置

一 基本概念什么是路由?路由是把数据包从源主机转发到目标主机的过程。什么是网关?是信息从一个网络发到另一个网络需要经过的一个“关口”二 模拟实验2.1 连接拓扑首先需要三台模拟器,两台PC主机,使用交叉线使其互连。连接图:将主机P1与路由器R1的0/0端口相连将路由器R1的1/0端口与路由器R2的1/0端口相连将路由器R2的0/0端口与路由器R3的1/0端口相连将路由器R3的0/0端口与主机P2相连2.2 配置ip,网关和掩码设置各个端口ip如下所示:P1: ip

2022-04-27 13:58:25 17507 2

原创 基于SpringBoot+Redis实现给邮箱发送验证码(注册)

一 为什么用Redis缓存验证码redis缓存运行效率高redis可以通过expire来设定过期策略,比较适用于验证码的场景。考虑到分布式数据个负载均衡数据要一致,这种共有的不用持久化的数据最好找一个缓存服务器存储redis、Memcache都是内存数据库,都支持K-Y型的数据结构redis还支持其他更加丰富的数据结构(list,set,hash等)二 开启POP3/SMTP服务。2.1 在QQ邮箱的【设置】=>【账户】里开启POP3/SMTP服务。保存生成的授权码三 添加依赖

2022-04-19 11:28:05 3447

原创 Socket套接字实现一对一聊天

一 关于Socket1.1 简介Socket,又称套接字,在TCP/IP协议分层架构中,属应用层和传输层之间的一个抽象层(也有的说是属于传输层),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。1.2 优点传输数据时间短,性能高可以加密,数据安全性强适合客户端和服务器端之间信息实时交互传输数据为字节级,传输数据可自定义,数据量小1.3 缺点相对于http协议传输,增加了开发量二 效果图展示三 代码3.1 服务端package com.w

2022-04-11 23:36:06 1510

原创 从零开始在Centos7上部署SpringBoot项目

一 安装jdk1.1 下载官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载压缩包执行wget命令:wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;"https://download.oracle.com/java/18/latest/jdk-18_linux-x64_

2022-04-05 18:02:36 3712 5

原创 SpringData整合Redis

一 SpringData-Redis我们使用redis解决过期优惠券和红包等问题,并且在java环境中使用redis的消息通知。目前世面比较流行的java代码操作redis的AIP有:Jedis和RedisTemplateJedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。SpringData Redis是Spring官方推出,可以算是Spring框架集成Redis操作的一个子框架,封装了Redis的很多命令,可以很方便的使用Spring操作Redis数据库。由

2022-04-04 18:03:19 1747

原创 搭建 Zookeeper+Dubbo+Spring Boot 的 RPC 框架

首先在自己本地下载一个zookeeper,安装参考链接:windows环境下安装zookeeper教程详解(单机版)_风轩雨墨的博客-CSDN博客_zookeeper安装教程新建一个maven项目,项目目录如下。再在该父项目中创建3个module,分别是:provider(服务端)、customer(消费端)、common(存放所有接口和实体类)然后在主项目的pom.xml文件中添加相应的依赖。<?xml version="1.0" encoding="UTF-8"?&gt.

2022-04-01 23:18:41 2307

原创 【JVM并发】java中的锁机制

一 面试题1.1 java中的Lock👨‍💻面试官:java底层中锁是怎么实现的lock -----AQS🙋 我 :这个我之前看过一点源码,Lock是一个类,在java.util.concurrent.locks包下面,通过一个AQS的框架实现。AQS我之前读过一点注释,它的核心思想主要是:如果一个的资源被请求,如果是空闲的就把当前的请求资源的线程设置为有效的工作线程,并且将共享资源锁定,如果共享资源被占用,就把这个线程加入一个CLH双向队列中,等这个资源被释放。判断资源是否空闲,在源码中用int

2022-03-31 17:56:48 453

原创 【面试点】TCP为什么是安全可靠的传输协议

一 面试问题1.1 TCP为什么是安全可靠的传输协议👨‍💻面试官:TCP为什么是安全的🙋我:因为TCP在数据传输之前会有三次握手来进行连接在数据传输时候,有确认、滑动窗口、超时重传、拥塞控制之类机制数据传输之后会进行四次挥手断开连接来节约系统资源。具体:应用数据被分割成TCP认为最适合发送的数据块TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化

2022-03-22 20:33:56 3938

原创 SpringBoot和SpringMVC的区别

一 面试提问👨‍💻面试官:SpringBoot和SpringMVC的区别🙋我:形式上:SpringBoot是一个自动化配置的工具;SpringMVC是一个web框架在搭建项目时:SpringMVC需要手动配置xml文件,同时需要配置Tomcat服务器。而SpringBoot采用约定大于配置的方式,进行自动装配,同时内置服务器,打开就可以直接用。二 项目搭建区别2.1 SpringMVC项目搭建过程:首先是要有一个Maven项目,选择好自己的仓库配置以及本地仓库位置然后在这个mav

2022-03-19 23:31:48 9948

原创 Typora+PicGo-Core上传服务设置

一 Typora中安装PicGo-Core二 安装插件(Win10为例)首先点击验证图片上传选项根据提示找到安装路径,我的路径为C:\Users\86137\AppData\Roaming\Typora\picgo\win64\picgo.exe运行命令cmd进入当前路径,并安装插件cd C:\Users\86137\AppData\Roaming\Typora\picgo\win64.\picgo.exe install smms-user.\picgo.exe install

2022-03-18 15:32:59 491

原创 Spring Boot面试必问:启动流程

一 面试提问1.1 Spring Boot启动流程👨‍💻面试官:说说SpringBoot启动流程吧🙋 我 :首先从main找到run()方法,在执行run()方法之前new一个SpringApplication对象进入run()方法,创建应用监听器SpringApplicationRunListeners开始监听然后加载SpringBoot配置环境(ConfigurableEnvironment),然后把配置环境(Environment)加入监听对象中然后加载应用上下文(Configurab

2022-03-17 18:45:48 29457 6

原创 剑指 Offer 59 - I. 滑动窗口的最大值

1.题目地址力扣2.题目描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 ...

2022-02-10 21:45:53 550

原创 剑指 Offer 31. 栈的压入、弹出序列

1.题目地址力扣2.题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1),

2022-02-08 22:09:20 81

原创 剑指 Offer 29. 顺时针打印矩阵

1.题目地址力扣2.题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 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]3.思路因为顺时针打印矩阵,因此可以定义矩阵的四个边界,初始化矩阵左(l),上(t).

2022-02-08 21:48:34 76

原创 剑指 Offer 65. 不用加减乘除做加法

1.题目地址力扣2.题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a,b均可能是负数或 0结果不会溢出 32 位整数3.思路使用位运算。异或运算^:第一个操作数的第n位于第二个操作数的第n位相反,那么结果的第n位也为1,否则为0。与运算&:第一个操作数的第n位与第二个操作数的第n位都为1,那么结果的第n位也为1,否则为0。...

2022-02-04 23:23:45 872

原创 剑指 Offer 15. 二进制中1的个数

1.题目地址力扣2.题目描述编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的示例 3中,输入表示有符号整数 -3...

2022-02-04 22:10:09 84

原创 剑指 Offer 68 - II. 二叉树的最近公共祖先

1.题目地址力扣2.题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5,...

2022-02-02 23:18:51 59

原创 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

1.题目地址力扣2.题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], ...

2022-02-02 22:23:14 62

原创 剑指 Offer 12. 矩阵中的路径

1.题目地址力扣2.题目描述给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E...

2022-01-28 19:27:28 55

原创 剑指 Offer 58 - I. 翻转单词顺序

1.题目地址力扣2.题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的...

2022-01-27 23:53:28 66

原创 剑指 Offer 57. 和为s的两个数字

1.题目地址力扣2.题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:1 <= nums.length <= 10^5.

2022-01-27 23:36:22 750

原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

1.题目地址力扣2.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:输入:nums =[1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:0 <= nums.length <= 500000 <= nums[i] <= 100003.思路双指针。定义两个指针,i指向数组的最左端,j指向数组的最右端。i向右寻找第...

2022-01-27 23:01:26 553

原创 剑指 Offer 52. 两个链表的第一个公共节点

1.题目地址力扣2.题目描述输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为

2022-01-26 19:14:07 51

原创 剑指 Offer 25. 合并两个排序的链表

1.题目地址力扣2.题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000注意:本题与主站 21 题相同:https://leetcode-cn.com/problems/merge-two-sorted-lists/3.思路首先定义两个指针fir.

2022-01-26 18:54:16 718

原创 剑指 Offer 22. 链表中倒数第k个节点

1.题目地址力扣2.题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.3.思路双指针。首先定义两个指针fir和sec,初始化使其都指向head。

2022-01-25 20:12:18 50

原创 剑指 Offer 18. 删除链表的节点

1.题目地址力扣​​​​​​2.题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给..

2022-01-25 18:25:53 250

原创 剑指 Offer 48. 最长不含重复字符的子字符串

1.题目地址力扣2.题目描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答...

2022-01-24 21:11:09 46

原创 剑指 Offer 46. 把数字翻译成字符串

1.题目地址力扣2.题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num < 2313.思.

2022-01-24 18:25:23 64

原创 剑指 Offer 47. 礼物的最大价值

1.题目地址力扣2.题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.lengt...

2022-01-23 20:46:40 210

原创 剑指 Offer 42. 连续子数组的最大和

1.题目地址力扣2.题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] <= 100注意:本题与主站 53 题相同:https://leet

2022-01-23 19:42:21 227

原创 剑指 Offer 63. 股票的最大利润

1.题目地址力扣2.题目描述假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, ...

2022-01-22 18:47:20 43

原创 剑指 Offer 10- I. 斐波那契数列

1.题目地址力扣2.题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输.

2022-01-22 16:32:57 271

原创 剑指 Offer 28. 对称的二叉树

1.题目地址​​​​​​力扣2.题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2 2\ \3 3示例 1:输入:root = [1,2,2,3,4...

2022-01-21 18:16:26 143

原创 剑指 Offer 27. 二叉树的镜像

1.题目地址力扣2.题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7/ \ / \1 3 6 9镜像输出: 4 / \ 7 2/ \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000注意:本题...

2022-01-21 17:40:14 365

原创 剑指 Offer 26. 树的子结构

1.题目地址力扣2.题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \1 2给定的树 B: 4 /1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A...

2022-01-21 16:57:46 53

空空如也

空空如也

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

TA关注的人

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