自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 索引下推及具体实践

索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。

2023-08-20 15:54:55 216

原创 Nginx部署前后端分离项目

开发环境和生产环境之间还有测试环境,一般情况下,项目先进行开发,开发完成之后进行测试,测试之后修改bug完成,进入生产环境部署上线。dev.env.js是开发环境变量,prod.env.js是生产环境开发变量。生产环境:项目已经完成,前后端对接完成,部署在阿里云成功,有客户使用。NODE_ENV是用来判断是生产环境还是开发环境的。开发环境:项目尚在编码阶段,编码完成前的阶段。这个是生产环境的后端请求接口,必须要写对。IMAGE_CDN部署到阿里云上的端口。这个是开发环境的后端请求接口,默认会被。

2023-07-06 15:35:22 1948

原创 Redis缓存一致性问题及解决方案

还没等执行成功,此时如果项目「重启」了,那这次重试请求也就「丢失」了,那这条数据就一直不一致了。来讲,更新的缓存不一定会马上被读取,可能会导致缓存中有很多没有用的数据,浪费资源。最终 X 的值在缓存中是 1(旧值),在数据库中是 2(新值),也发生不一致。订阅变更日志,目前也有了比较成熟的开源中间件,例如阿里的。程序在执行过程中发生异常,最简单的解决办法是什么?显然有问题,以上是并发问题,除此之外从。线程A的缓存把线程B的缓存覆盖了。们的业务应用在修改数据时,「,然后再根据这条数据,去。

2023-05-29 20:51:56 1190

原创 Ajax跨域与封装

问题:在一些浏览器中(IE),由于缓存机制的存在,ajax 只会发送的第一次请求,剩 余多次请求不会在发送给浏览器而是直接加载缓存中的数据。解决方式:浏览器的缓存是根据 url 地址来记录的,所以我们只需要修改 url 地址 即可避免缓存问题。JSONP(JSON with Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明。CORS 是通过设置一个响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应。案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持。

2022-08-23 20:09:40 479 1

原创 【JAVA】PriorityQueue优先队列的使用

按逆序创建:创建一个PriorityQueue优先队列,其按逆自然顺序进行排序(从大到小,队头大队尾小)内容二:PriorityQueue的注意事项内部使用的是堆排序,堆排序只会保证第一个元素是当前优先队列里最小(或者最大)的元素。当使用迭代器遍历时,结果不会按序进行输出;若需要结果按序输出,则需要使用循环和poll()进行获取内容。...

2022-07-02 21:02:33 553

原创 泛型数组初始化

实际的运行时对象数组是Object[],而实际的运行时数组对象可能是T类型。因此,应该在运行时,数组对象的出口做转型输出,入口方法在编译期已实现类型安全,所以出口方法可以放心强制类型转换,保证成功.通过反射在运行时构出实际类型为type[]的对象数组,避免了类型擦除,从而转换成功,无.模板结论不能(直接)创建泛型数组泛型数组实际的运行时对象数组只能是原始类型( T[]为Object[],Pair[]为Pair[] ),而实际的运行时数组对象可能是T类型( 虽然运行时会擦除成原始类型 )...

2022-06-09 19:01:28 816

原创 Java异常之自定义异常类详解和代码举例

Java语言的异常异常处理机制Java中的异常概念1. 异常是程序在运行过程中由于算法问或软件设计等问题导致的程序异常事件。2. 异常的前提是可以识别并被捕获的。3. Java以面向对象的方法来处理异常的;Java提供了各种类型的异常类。4. Java允许自定义异常类。Java异常的产生过程1. 程序运行若发生异常,就会触发能被监听器捕获的异常事件,该事件的处理程 序会生成一个对应的异常对象并交给JVM,由 JVM查找相应的代码处理该异 常。2. 生成异常对象并将其交给JVM的过程称为

2022-05-05 19:13:33 4117

原创 res.add(new ArrayList<>(path))和res.add(path)的区别

1.创建两个集合: public static ArrayList<Integer> path = new ArrayList<>(); public static ArrayList<ArrayList<Integer>> res = new ArrayList<>();共同点:  都是向res这个ArrayList中填加了一个名为path的集合不同点:res.add(new ArrayList(path)):开辟一

2022-04-30 21:44:39 498

原创 isEmpty和null有什么区别

1.isEmpty是对象是否为空,null是值为空2.isEmpty() 用于判断List内容是否为空,必须在 list 本身不是空的引用的情况下才行;null 用于判断有没有这个集合对象;例如List<对象> list = new List<对象>;//代表有内容if(!list.isEmpty){ ...}报错:java.lang.NullPointerException //空指针异常if(list.isEmpty != null){ ..

2022-04-08 21:10:23 2425 1

原创 「滑动窗口」leetcode原题详解

2024. 考试的最大困扰度一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为 ‘T’ 或者

2022-03-29 15:56:26 113

原创 @Value的几种常用用法

用法1.@Value(“${xxxx}”)注解从配置文件读取值的用法,也就是从application.yaml文件中获取值。比如存在application.yaml文件,配置内容如下:user: userName: xiaozhou sex: 女 age: 18在使用上述配置文件时,可以直接@Value(“${user.userName}”)等等。如果@Value(“${user.userName:xiaosun}”),指定了name的值为xiaosun,当从配置文件中获

2022-03-28 22:27:46 2482

原创 172.阶乘后的零

题目:给定一个整数 n ,返回 n! 结果中尾随零的数量。提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1示例 1:输入:n = 3输出:0解释:3! = 6 ,不含尾随 0示例 2:输入:n = 5输出:1解释:5! = 120 ,有一个尾随 0示例 3:输入:n = 0输出:0思路与算法其实就找出阶乘的结果中有多少个0,这个是纯纯的查找问题,可以将其转化为字符串类型。我们再深入一下,有多少个0难道不就是有多少个2*5吗?

2022-03-25 13:29:18 366

原创 209. 长度最小的子数组

题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。思路与算法方法一:暴力O2遍历数组nums,每次遍历将第一个下标的元素作为子数组的开始,从下标i向后遍历,使得nums[i]到nums[j]的和>=target,跟新最小子数组长度min。代码:class Solution {

2022-03-22 20:04:54 69

原创 59. 螺旋矩阵 II

题目:螺旋矩阵 II思路与算法:题目:螺旋矩阵 II给你一个正整数 n,生成一个包含 1 到 n*n所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵matrix。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]思路与算法:先来看看我自己的,感觉定义的参数有点多哈,有时候就不能分辨清楚,这一点要改进。然后就是咋一看这题应该用模拟法。从最外面一圈一圈的加数子。我这里定义了两层循环:第一.

2022-03-21 21:55:53 216

原创 20. 有效的括号

给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true首先来看我的傻傻的暴力解法

2022-03-20 14:26:31 301

原创 387. 字符串中的第一个唯一字符

题目给定一个字符串s,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例 1:输入: s = “leetcode”输出: 0示例 2:输入: s = “loveleetcode”输出: 2示例 3:输入: s = “aabb”输出: -1方法一:使用哈希表存储频数思路与算法我们可以对字符串进行两次遍历在第一次遍历时,通过hash映射统计每个字符出现的频数,如果只出现一次,设置他的值为1,如果出现多次就设置值为0或其他。代码:publi

2022-03-20 13:47:44 500

原创 739. 每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出: [1,1,1,0]示例 3:输入: temperat

2022-03-17 22:11:23 76

原创 503. 下一个更大元素 II

503. 下一个更大元素 II给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。示例 1:输入: nums = [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第

2022-03-17 20:59:59 548

原创 Linux 下 EMQ X 服务器部署

EMQ 物联网MQTT 服务器官方中文文档官方文档中提供了好几种安装方式,为了自定义安装版本和安装路径,我采用了 zip 压缩包模式安装。zip 压缩包下载网站:https://www.emqx.io/downloads/broker/?osType=Linux一、 上传并解压程序包wget https://packages.emqx.io/emqx-ce/v4.1.4/emqx-centos7-v4.1.4.zipunzip emqx-centos7-v4.1.4.zip二、 .

2022-03-12 17:07:20 707 1

原创 axios 传递图片以及后台接收图片

axios 传递图片以及后台接收图片

2022-03-09 16:34:26 584

原创 shiro中bean.setloginurl有什么作用

1.loginUrl:没有登录的用户,请求某个资源页面(这里是index.html)时,自动跳转到制定的haha.html页面。2.unauthorizedUrl:登录成功的用户,访问了没有被授权的资源,自动跳转到制定的页面。3.map.put("/**", “authc”)使得所有请求都需要认证才能请求成功,否则就跳转至setLoginUrl中指定的页面,同时为了使登录页面可以在未登陆时请求成功,需要用代码map.put("/login.html",“anon”)进行设置。...

2022-03-06 16:08:53 809 1

原创 简单快速的用SpringBoot访问静态资源(图片、html)

首先需要记载Springboot访问静态资源的Jar文件<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>还需要在“resources”目录下(注意只能在“resources”目录下创建文件,因为SpringBoot只在它下面扫描

2022-03-05 18:33:49 971

原创 自定义异常处理

@ResponseStatus注解使用和@ExceptionHandler注解使用应该放在一起使用对于@ResponseStatus注解,如果直接用在目标方法上面的话即使方法正常执行完毕没有报错,最后收到的信息就是@ResponseStatus中的内容所以该注解最好和自定义异常一起使用对于@ExceptionHandler最好加一个异常类的参数,注解的参数是NumberFormatException.class,表示只有方法抛出NumberFormatException时,才会调用该方法参考文章:@

2022-03-02 20:49:01 119

原创 @EqualsAndHashCode(callSuper = false)作用

在类是继承父类的情况下:EqualsAndHashCode实则就是在比较两个对象的属性;当@EqualsAndHashCode(callSuper = false)时不会比较其继承的父类的属性可能会导致错误判断;当@EqualsAndHashCode(callSuper = true)时会比较其继承的父类的属性;官方文档中提到的大致有以下几点:此注解会生成equals(Object other)和 hashCode()方法。它默认使用非静态,非瞬态的属性可通过参数exclude排除一些属

2022-03-01 20:25:35 1983

原创 MySQL创建表时Invalid ON UPDATE clause for ‘create_date‘ column

高版本的mysql导数据到低版本出现的问题日期类型报错解决方式:将datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT中的 ON UPDATE CURRENT_TIMESTAMP删除有需要可以看看下面讲的更详细MySQL自动更新列时间戳ON UPDATE CURRENT_TIMESTAMP...

2022-03-01 14:23:48 439

原创 IP基础知识

1、IP地址IP位于网络层,作用是主机间的通信,负责在没有直连的两个网络之间传输通信数据,而MAC位于数据链路层,作用是实现两个设备之间的直连通信IP地址(IPv4)由32位二进制数表示,在计算机中是以二进制的方式处理的,人类为了方便记忆而采用了点分十进制的标记方式:也就是将32位二进制的IP地址以每8位为一组,共分为4组,组之间用“.”隔开,再将每组转换成十进制数表示。也就是说,IP地址的最大值就是232 = 42949672962、IP地址分类互联网诞生之初,IP地址显得很充裕,因此计算机科

2022-02-23 20:18:20 725

原创 OSI七层模型简述

应用层(Application Layer):是OSI参考模型的最高层,它是用户、应用程序和网络之间的接口,它直接向用户提供服务,替用户在网络上完成各种工作。表示层(Presentation Layer):是OSI参考模型的第六层,它对来自应用层的指令和数据进行解释,对各种语法赋予相应的含义,它主要功能是处理用户信息的表示问题,例如数据编码、数据格式转换和加解密等。会话层(Session Layer):是OSI参考模型的第五层,它的主要任务是为两个实体的表示层提供建立和使用连接的方法(不同实体之间表示层

2022-02-23 20:03:55 1198 1

原创 centOS7 如何启动/停止/重启MySQL

如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start3、使用 safe_mysqld 启动:safe_mysqld&二、停止1、使用 service 启动:service mysqld stop2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop3、 mysqladmin shutdown三、重启1、 使用

2022-02-22 20:23:32 14933 1

原创 Idea中关于Git的使用

Idea中关于Git的使用

2022-02-22 16:45:43 283

原创 Git错误提示之:fatal: Not a git repository (or any of the parent directories): .git

产生原因:一般是没有初始化git本地版本管理仓库,所以无法执行git命令解决方法:操作之前执行以下命令行: git init或者clone项目1.在远程clone的项目同名目录下创建项目2.把clone的项目拷贝进自己的项目...

2022-02-22 16:15:32 722

原创 Docker之Dockerfile

1.DockerFile介绍dockerfile是用来构建docker镜像的文件!命令参数脚本!构建步骤:1、 编写一个dockerfile文件2、 docker build 构建称为一个镜像3、 docker run运行镜像4、 docker push发布镜像(DockerHub 、阿里云仓库)但是很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!2.DockerFile构建过程基础知识:1、每个保留关键字(指令)都是必须是大写字母2、执行从上到下顺序3、#表示

2022-02-08 00:28:41 1355

原创 Docker部署nginx

1.搜索镜像建议去docker hub去搜索:https://hub.docker.com/或者直接docker search nginx[root@iZwz92v9xcjopi734c76bdZ ~]# docker search nginx -f=stars=100NAME DESCRIPTION STARS OFFICIAL AUTOMATEDnginx

2022-01-28 20:33:40 2121 1

原创 Docker的常用命令

帮助命令docker version # docker版本信息docker info # 系统级别的信息,包括镜像和容器的数量docker 命令 --help #在线帮助文档官方帮助文档镜像命令docker images 查看所有本地主机上的镜像[root@iZwz92v9xcjopi734c76bdZ ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql 5

2022-01-28 15:38:07 116

原创 21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]代码:** * Definition for singly-linked list. * public class ListNode { * int

2022-01-09 16:02:04 417

原创 Web基础:Token

传统身份验证的方法1、HTTP是一种没有状态的协议,也就是它并不知道是谁是访问应用客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下用户名密码,这样就显得很麻烦2、解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的ID号发送给客户端客户端收到以后把这个ID号存储在Cookie里,下次这个用户再向服务端发送请求的时候,可以带着这个Cookie,这样服务端会验证一个这个Cooki

2021-12-20 21:04:04 527 1

原创 session、cookie、token 详解

session、cookie、token 详解

2021-12-20 17:04:29 74

原创 @Results的用法详解

MyBatis中使用@Results注解来映射查询结果集到实体类属性。1. 基本用法当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。@Select({"select id, name, class_id from my_student"})@Results({ @Result(column="id", property="id", jdb

2021-12-19 20:00:33 802

原创 @Mapper的使用

@Mapper注解,目的就是为了不再写mapper映射文件,是注解开发时用的。在Dao层配置@mapper注解@Mapperpublic interface Inter { @Insert("insert into sysuser values('e212te','2','jjj','pwd','ljk','男',1)") int addUser();}有参数的情况@Mapperpublic interface Inter { @select("select * fr

2021-12-19 19:02:25 7847 2

原创 @Deprecated注解功能

若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。或许有人会问 为什么会出现加这个注解呢,直接在写方法的时候定义一个新的不就好了吗?因为在一个项目中,工程比较大,代码比较多,而在后续开发过程中,可能之前的某个方法实现的并不是很合理,这个时候就要新加一个方法,而之前的方法又不能随便删除,因为可能在别的地方有调用它,所以加上这个注解,就方便以后开发人员的方法调用了。...

2021-12-19 18:34:34 185

原创 spring入门概述

1.spring概述1.1.1 spring是什么Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。1.1.2 Spring的发展

2021-12-16 19:00:06 67

flask 图书信息管理系统(flask+vue).zip

flask 图书信息管理系统(flask+vue).zip

2023-02-22

学相伴Nginx最新教程通俗易懂.pdf

学相伴Nginx最新教程通俗易懂.pdf

2021-12-13

空空如也

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

TA关注的人

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