自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (7)
  • 收藏
  • 关注

原创 【Springboot文件上传】前后端双开,大文件秒传、断点续传的解决方案和优雅实现

效果图Demo体验地址:http://easymall.ysqorz.top/file/upload(不保证长期有效)思路和解决方案探讨秒传这里指的 “秒传”,是指:当用户选择上传一个文件时,服务端检测该文件之前是否已经被上传过,如果服务器已经存有该文件(完全一样),就立马返回前端 “文件已上传成功”。前端随即将进度条更新至100%。 这样给用户的感觉就是 “秒传” 的感觉。对于每一个上传到服务器的资源,我们都需要往数据库的 db_file 表插入一条记录,每条记录都包含文件的MD

2020-11-22 21:36:54 1698 1

原创 SpringBoot + Shiro + Jwt 实现登录认证,代码分析

前言花了几天了解Shiro框架(也不算太深入),根据网上资料做了一个Demo:SpringBoot 2.2.9.RELEASE+ Shiro + Jwt 实现登录认证。1、这个Demo关注 登录授权(比较通用),基本不涉及权限控制,因为权限控制设计到具体业务。所以可以本Demo可以根据自身实际情况稍加修改,就可以作为前后端分离项目的登录模块。2、本博客适用于对Shiro和Jwt有了解,起码对于几个关键的类的作用及方法有了解,下面我不会展开,只会对Demo的思路和代码做分析。思路分析

2020-08-25 19:24:40 5423 2

原创 洛谷P1379【八数码问题】【九宫重排】算法优化

题目描述洛谷P1379 八数码难题(本博客的代码和描述都是针对洛谷这题)问题 1426: [蓝桥杯][历届试题]九宫重排(与洛谷那题 [基本] 一样,输入有所不同)在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123...

2019-10-27 12:32:21 1336 2

原创 最详细的SpringBoot实现接口校验签名调用

验签是指第三方系统在调用接口之前,需要按照原系统的规则根据所有请求参数生成一个签名(字符串),在调用接口时携带该签名。原系统会验证签名的有效性,只有签名验证有效才能正常调用接口,否则请求会被驳回。

2023-07-04 11:27:37 5605 6

原创 acme自动续订freessl免费证书

去域名的云服务提供商,按照第一张图来配置DNS解析。

2023-04-19 13:54:18 438 1

原创 踩坑,结合profile深入理解spring.config.additional-location

但按照我对他的文字理解和验证结果对不上。下面结合源码和验证结果,简单说一下我对这个规则的理解。

2023-02-21 17:27:56 1193

原创 java.io.IOException: Unable to establish loopback connection

在win10电脑上启动SpringBoot项目出现以下报错/:1.0.0]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]/:9.0.38]

2022-10-19 17:09:02 3506

原创 分布式环境下使用RSA算法实现登录密码的加密传输

RSA是一种非对称加密算法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。

2022-09-27 00:32:10 2176 3

原创 Windows杀进程bat脚本,方便解决端口占用

在Windows上遇到端口占用,每次都要通过命令行去Kill掉占用端口的进程,太麻烦了。为了一劳永逸,我写了一个批处理脚本。在Windows可以方便地根据端口查找相关进程信息(包括进程名称),并逐一确认是否Kill掉。

2022-08-20 11:14:55 3070 3

原创 idea配置tomcat后找不到网页

最近遇到了一个问题使用servlet的传统JavaWeb项目,配置tomcat启动后找不到网页。下面使用展示将一个空白项目设置为JavaWeb项目,并配置tomcat环境启动项目的整个过程。看你有没有踩坑。

2022-07-26 09:29:38 7374 4

原创 Git bash命令行密码登录失败,提示remote: Support for password authentication was removed。避免每次都要输入密码

在Git bash操作时,不断提示登录,使用账号密码登录失败,但是密码正确。命令行可能会出现提示 “remote: Support for password authentication was removed...” Github对于所有需要身份验证的 Git 操作都不支持使用账号密码进行身份验证,而是使用基于令牌的身份验证。详情见:​​​​​​https://github.blog/2020-12-15-token-authentication-requirements-for-git-op

2022-06-05 17:18:16 2090

原创 Docker安装MySQL

1. 先运行一个容器来测试,进入容器看看关键的目录结构docker run \--privileged=true \-p 3306:3306 \--name mysql8 \-e MYSQL_ROOT_PASSWORD=123456 \-d mysql

2021-06-20 14:22:13 134

原创 项目中如何使用【设计模式】来处理【订单状态】?

应用场景订单状态和操作

2021-06-17 11:35:51 2011 5

原创 【LoadRunner】软件测试。获取响应参数,作为下一次请求的参数

测试项目的截图

2021-06-17 01:13:09 1112

原创 最强案例,【中介者模式】在GUI界面组件中的使用

题目某软件公司欲开发一套CRM系统,其中包含一个客户信息管理模块,所设计的“客户信息管理窗口”界面效果图如图所示。组件之间的交互关系如下:(1) 当用户单击“增加”按钮、“删除”按钮、“修改”按钮或“查询”按钮时,界面左侧的“客户选择组合框”、“客户列表”以及界面中的文本框将产生响应。(2) 当用户通过“客户选择组合框”选中某个客户姓名时,“客户列表”和文本框将产生响应。(3) 当用户通过“客户列表”选中某个客户姓名时,“客户选择组合框”和文本框将产生响应。请使用中介模式实现该系统,并补

2021-06-03 16:48:27 886 1

原创 jQuery-Tags-Input组件重写,实现autocomplete和标签数量限制

效果图

2021-05-29 00:39:54 937

原创 Thread.currentThread.getName()和this.getName()的区别

案例引入/** * @author passerbyYSQ * @create 2021-05-02 14:54 */public class TestCurrentThread { public static void main(String[] args) { MyThread t1 = new MyThread(); Thread t2 = new Thread(t1); t2.setName("A"); t2.s

2021-05-02 15:47:48 213

原创 从案例到底层原理,彻底理解volatile可见性和禁止指令重排

一. volatile保证可见性public class TestMain { private static boolean flag = false; //private volatile static boolean flag = false; public static void main(String[] args) throws InterruptedException { new Thread(() -> { fla

2021-04-11 13:55:34 3856 6

原创 取数组中任意个数相加,但是取的数不能相邻,输出最后得到的和的最大值

前言2020-3-25 唯品会笔试。总结一些记忆深刻的题目。数组最大值题目提供一个数组,取数组中任意个数相加,但是取的数不能相邻,输出最后得到的和的最大值,输入的数组的值均为正整数。样例输入:[ 2, 3, 2 ]输出:4说明:取第1个值和第三个值,2+2 = 4分析动态规划。假设num[]表示上述数组,dp[i] 表示数组区间[0, i] 符合题意的最大值,那么 dp[i] 可以通过递推得出1. 假设第 i-1 个数要取,则第 i 个数必然不能取(不能取相.

2021-03-27 12:51:15 1581

原创 【蓝桥杯省赛】七段码,二进制枚举 + 判断连通性(DFS或并查集)

原题小蓝要用七段码数码管来表示一种特殊的文字。上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二 极管,分别标记为 a, b, c, d, e, f, g。 小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符 的表达时,要求所有发光的二极管是连成一片的。 例如:b 发光,其他二极管不发光可以用来表达一种字符。 例如:c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上一行的方案可以用来表示不同的字符,尽管看上去比较相似。 例如:a, b, c, d

2021-03-19 23:31:39 724

原创 【史上最详细,没有之一】Spring【三级缓存】解决【循环依赖】的流程梳理,原理和核心代码分析

一. 前言1. Spring版本:5.2.4.BUILD-SNAPSHOT2. 本文着重点1. 梳理解决循环依赖的整个流程(流程比较长,源码很长,陷得很深,着重于理清整个流程,不要抠细节)2. 三级缓存的变化(要理清三级缓存如何变更)3. 关键代码验证(不要过于抠细节)由于源码跟踪很难用图片去说明,因此涉及到核心代码,我会:标注出类名和方法名。至于如何追踪到某处代码,自己跟一遍源码。二. 概念明晰为了后面的讲述便于理解,在此之前先明晰几个下问将会出现多次的概念。1. 半成

2021-03-12 01:18:07 3313 2

原创 【双栈】有括号的四则运算求值

已通过的题目题目都一样,稍微改一下输入。代码通过了以下 3 题的测试数据。其中,LeetCode的两题的测试数据不够复杂(下面说明)。代码的正确性,还需要更多的测试数据来测。224. 基本计算器227. 基本计算器 II题目 1683: 算法3-4:表达式求值LeetCode 227 题的测试数据,没有包含以下两种情况:1、负数开头。类似:-2+...2、左括号后的第一个数是负数。类似:2*(-3+4)...另外,如果有LeetCode会员,可以再提交一下这题:772. 基

2021-03-11 16:12:29 225

原创 【LeetCode】【每日一题】132. 分割回文串 II。DFS + 贪心 + 剪枝

原题https://leetcode-cn.com/problems/palindrome-partitioning-ii/给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。提示:1 <= s.length <= 2000。s 仅由小写英文字母组成示例 1:输入:s = "aab"输出:1解释:只需一次分割就可将s 分割成 ["aa","b"] 这样两个回文子串。示例 2:输入:s = "a"输出:0示例.

2021-03-08 23:44:34 181

原创 【Leetcode】【每日一题】503. 下一个更大元素 II。单调栈,就这么通俗易懂

原题https://leetcode-cn.com/problems/next-greater-element-ii/给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。(注意: 输入数组的长度不会超过 10000)示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下

2021-03-06 12:57:07 118

原创 【面试考点】HashMap的扩容机制、put详解、源码分析,考点问题解答

静态变量介绍static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

2021-03-04 18:05:51 1015 3

原创 【面试】【剑指Offer48】最长不含重复字符的子字符串

原题https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。提示:s.length <= 40000,字符串可能不止不含字母。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"..

2021-03-03 01:16:12 124

原创 2021-2-28某Web后台笔试总结,一张图搞定String和==的的面试题

cvte的Web后台实习岗笔试,总结以下我印象比较深刻的题目,凭记忆回顾。。。题1:String和==题目我忘了,直接上总结 String s = "JavaWeb"; String s2 = new String("JavaWeb"); String s3 = new String("JavaWeb"); String s4 = s2.intern(); String s5 = s3.intern();.

2021-02-28 14:13:50 272

原创 SpringBoot只需要几行代码,就可以防XSS攻击

前言可能很多同学在学习过程中自己做项目,很容易忽略XSS攻击。网上不少博客的自定义全局拦截器来实现XSS过滤,其实不需要这么麻烦,SpringBoot留有不少钩子(扩展点),据此我们可以巧妙地实现全局的XSS过滤。防止XSS攻击,一般有两种做法:1、转义Spring有提供工具类HtmlUtils来实现转义。个人比较喜欢这种方式,所以下面代码均采用转义处理。2、过滤敏感标签(将敏感标签去除)jsoup实现了非常强大的clean敏感标签的功能,但是我对jsoup了解并不多。接下来的

2021-02-23 00:13:05 1029 6

原创 Netty和WebSocket实现IM,讨论Channel和用户标识的双向绑定,离线消息和消息签收

问题引入相信很多人用过Netty写过聊天室的简单案例吧,可以说是模板代码了,没有结合业务。如果我们要做项目中的即时通讯模块(IM),需要将用户A发的消息转发给用户B,将会不可避免的遇到一个问题:如何快速找到用户B所建立的Channel (用户 -> Channel 的映射)?围绕我们的聊天业务,离线消息又如何进行推送?一个用户建立Channel之后,我们要想知道他有没有未签收的离线消息,就必定要知道用户标识。原则来讲,我们又如何避免一个用户重复创建Channel?换言之,在IM业务中,我们.

2021-02-14 00:34:21 5565 20

原创 优雅地实现base64字符串的解码,涉及到正则表达式的分组,NIO和jdk1.8的Base64

前言最近用到了一款移动端的裁剪插件 PhotoClip(https://github.com/baijunjie/PhotoClip.js),移动端裁剪之后的图片以base64编码的形式传给后端,后端要对base64进行解码转存成文件存储,基于这个业务需求,实现了一个简单的工具类。其实,网上有很多差不多的代码,只是稍微有点不同。参考别人的代码,自己写出来可能更能让自己满意吧。好,进入正题。分析1、如果不使用其他类库。早期(在jdk1.8以前)在Java上做Base64的编码与解码,会使

2021-01-31 13:25:06 646

原创 Netty心跳机制的使用,以及源码刨析

一. 概念引入1. 心跳在TCP长连接中,客户端和服务端之间定期收发的一种特殊的数据包称为“心跳包”,用以通知和确认对方都还在线,以确保TCP连接的有效性2. 心跳的必要性客户端程序崩溃、或者网络断开等原因,单方面释放了TCP连接TCP连接被防火墙干掉计算机与计算机之间相互是有防火墙的,而这个防火墙随时可以做到一个策略,随时可以断开socket连接,而断开的时候可能不会进行四次挥手,服务端或者客户端没有收到连接断开的消息,此时会认为连接还可用,随时还想发送数据,发送的时候才知道连接不可

2021-01-25 00:54:00 368 1

原创 SSM整合EasyPoi,解决图片导出报错ArrayIndexOutOfBoundsException

参考博客:https://blog.csdn.net/qq_34988540/article/details/83050187https://blog.csdn.net/breakaway_01/article/details/103895099前言最近由于JavaWeb期末作品的需求,在SSM项目中引入了EasyPoi,用于将订单数据导出为Excel。说一下遇到的两个坑手动导入jar包由于项目是和组员共同编码的,一开始就用的手动导入jar包,没有使用maven。Easy...

2020-12-29 17:18:19 1181

原创 PageHelper实现多条件的分页查询,封装页码按钮的生成逻辑,对接后端接口

效果图难点分析PageHelper的引入和使用,这里我就不多说了。有了PageHelper,后端的分页查询就非常简单了。要实现携带多条件的分页查询,前端要如何跟后端接口对接呢?在开始代码之前,先来依次思考和分析下面的问题,然后再来整理思路,最后看代码。问题1:前端需要传给后端什么参数?(1)page:当前页。理应由前端传给后端,但是前端的传参有可能超出实际范围(比如说,一共才有10页,用户传参11,那么后端应该返回第10页的数据,而不应该返回空数据),这就必须交由后端来纠正之后,再

2020-12-28 00:25:54 2534

原创 十几行代码教你封装基于bootstrap的前端分页组件

效果图前言哈哈,每次写博客都喜欢啰嗦几句。本来这是前端的东西,由于做期末作品需要,一个学后端的,被迫营业。提前学全栈分页逻辑描述1、数字按钮数字按钮始终有 7 个。如果当前页 左边、右边的按钮充足时,左、右两边各有3各按钮。如果当前页按钮左边的按钮不足3个时,数字按钮组的范围是[1, 6]。如果当前页按钮右边的按钮不足3个时,数字按钮组的范围是[5, 11]。3、首页、末页如果第1页(首页)出现在了7个数字按钮中,则不需要显示 “First” 按钮;同理,如果第11页.

2020-12-24 00:15:38 484

原创 【面试】【算法】将0放到前面,非0数字放到后面,非0数字的相对次序不变。T(n)和O(n)

题目描述给定一个随机的整数数组,含有0 和 非0的整数。要求:将0放到数组前面,非0整数放到后面,且非0整数的相对次序不能改变。空间复杂度要求T(n),换言之不能新建辅助数组,时间复杂度要求O(n)。例:输入:1, 0, 2, 0, 3, 0, 0, 4, 5, 0, 6, 7输出:0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7前言我同学参加cvte校招的电话面试时被问到的一题算法题,然后跟我讨论了一下。大概题意,如上面所描述。不过面试官只要求了空间复

2020-12-22 00:27:43 838 1

原创 踩坑篇,多达21页的,超级详细的Oracle安装和配置教程,没有之一

由于文档直接复制到博客,图片会转存失败。所以下面贴出几张长图。完整的pdf文档下载:https://download.csdn.net/download/qq_43290318/13724306

2020-12-18 22:50:11 99 1

原创 虚拟机centos7配置静态ip,踩坑网页无法访问

1、Vm上配置虚拟网络编辑器2、windows上配置 VMnet83、centos7上配置ens33网卡注意,有些linux上是 ifcfg-eth0 网卡vim /etc/sysconfig/network-scripts/ifcfg-ens33修改以下参数:4、虚拟机上通过火狐访问网页没有界面可通过ping命令测试...

2020-12-18 20:07:07 971 2

原创 基于bootstrap的富文本编辑器summernote,重写图片上传并添加进度条

效果图前言据我了解,这是一款基于bootstrap的富文本编辑器,比较喜欢的它的样式风格和图片上传的功能。问题1:它默认的图片上传,是把图片转成base64编码并提交给后端。这显然不是我们想要的,我们希望图片以文件形式提交给后端保存,后端返回其保存的路径。问题2:图片异步上传时,没有进度显示。如果上传动态图等较大的图片,用户体验不是很好。为此,我使用一款基于bootstrap的模态框插件 BootBox.js (https://www.bootboxjs.cn/)来显示上传

2020-12-09 20:38:12 611

原创 Java使用dom方式解析和操作xml,递归解析xml以yml格式输出

题目1. 编写程序,解析score.xml文件,要求输出的结果如图1所示。2.编写程序,修改下面的XML文件book.xml,要求:(1)为每一个book元素添加一个author子元素,元素内容自定。(2)修改title元素的值,在文本内容的后面添加文本“(电子工业出版社)”。 例如:<title> Java面向对象编程</title> 变为:<title> Java面向对象编程(电子工业出版社)</title>...

2020-12-01 16:01:05 1289 2

原创 【Java8】Lambda表达式 和 Stream API 详解笔记

视频地址:https://www.bilibili.com/video/BV1ut411g7E9笔记 md 文档:xxx(稍后补上)Lambda表达式概念​ Lambda是一个匿名函数,Lambda表达式可以理解为一段可以传递的代码(将代码像数据一样进行传递)引入/** * 匿名内部类 */@Testpublic void test1() { Comparator<Integer> com = new Comparator<Integer>().

2020-11-26 16:12:56 1069 1

easy-web-iframe-master.zip

官网:https://eleadmin.com/

2021-05-07

thymeleaf_3.0.5_中文参考手册.zip

thymeleaf_3.0.5_中文参考手册.pdf

2021-05-07

虚拟机安装和配置Oracle.pdf

踩坑篇,多达21页的,超级详细的Oracle安装和配置教程,没有之一!!!

2020-12-18

【Java8】Lambda表达式 和 Stream API 详解笔记.zip

视频地址:https://www.bilibili.com/video/BV1ut411g7E9 【Java8】Lambda表达式 和 Stream API 详解笔记 md文档

2020-11-26

easymall_秒传和断点续传.zip

【Springboot文件上传】前后端双开,大文件秒传、断点续传的解决方案和优雅实现 Demo体验地址:http://easymall.ysqorz.top/file 1、这里指的 “秒传”,是指:当用户选择上传一个文件时,服务端检测该文件之前是否已经被上传过,如果服务器已经存有该文件(完全一样),就立马返回前端 “文件已上传成功”。前端随即将进度条更新至100%。 这样给用户的感觉就是 “秒传” 的感觉。 2、断点续传是什么样的效果呢? 用户正在上传某个大文件,中途点击了 “取消” 。下次再次上传该文件时,能够从上次中断的地方继续上传,而不会从头开始上传。

2020-11-22

jquery.validation.min.js 增强版(plus)

jquery.validation.min.js 增强版(plus)。在原有的插件基础上,增加了一些常用验证规则,比如说身份证、手机号等等

2020-11-12

Java8新时间API.pdf

Java8新时间API使用详解 较为全面地总结了Java8中新时间API的基本用法(也是自我学习的总结,花点时间也是值得的),应该说面对大部分关于时间的需求,博客的内容大概也都够用了。当然由于能力和篇幅原因,博客只介绍了用法,并未去深究源码。但学习过程,也并非所有事情都得去深究。 如果博客对你有帮助,不妨点个赞,收藏一下?转载请注明出处。感谢。

2020-04-20

空空如也

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

TA关注的人

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