自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

云胡

业精于勤,荒于嬉;行成于思,毁于随。

  • 博客(265)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用 mtcnn 和 facenet 进行人脸识别

人脸识别目前有比较多的应用了,比如门禁系统,手机的人脸解锁等等,今天,我们也来实现一个简单的人脸识别。

2023-12-01 18:26:11 424 1

原创 阿里云配置 HTTPS

依次点击:数字证书管理服务 -> SSL 证书 -> 免费证书 -> 立即购买。版本的证书,下载的是一个压缩文件,解压后发现里面有。阿里云有免费的 20 个域名的证书,因此就选择这个。购买完证书,就可以创建证书,然后填入域名,等待签发。做反向代理,因此就下载。下载证书,由于我们是用。

2023-12-01 18:18:18 176

原创 网站实现验证码功能

一般来说,网站在登录的时候会生成一个验证码来验证是否是人类还是爬虫,还有一个好处是防止恶意人士对密码进行爆破。字符的编码方法,我们这边用这个编码传递验证码图片,数据在。记得设置验证码过期时间,否则每一次生成验证码都会在。是一种用于将二进制数据编码为。里面产生数据,造成内存浪费。和验证码,确保唯一性。

2023-12-01 18:16:27 836

原创 Docker 部署 Spring Boot 项目

分配一个伪终端(pseudo-TTY),以便在容器内部的。表示保持标准输入流(stdin)打开,允许你与容器交互。中能够使用交互式终端功能,如清屏、颜色等。查看所有,包括已经停止的。是构建镜像的文本文件。

2023-12-01 18:13:49 612

原创 Vue 跨域的两种解决方式

接口前缀重写,我这边是置为空,因为后端的控制层并没有去匹配。,但是我用了内网地址,不用再通过。填入后端真实运行的接口地址。解析了,可以提高一点点性能。由于我们的后端控制层并没有。对每一个请求的前缀都加上。端口,然后将接口前缀是。后端程序的那个端口。

2023-11-06 11:34:00 748

原创 Spring Boot 配置 Knife4j

【代码】Spring Boot 配置 Knife4j。

2023-09-12 16:12:39 1343

原创 微信小程序获取 openid 和 session_key

【代码】微信小程序获取 openid 和 session_key。

2023-07-21 18:41:00 1346

原创 微信小程序之实现文章列表

有了数据,那么就把数据显示到界面上,这边使用。并放在第一个,那么会被小程序作为初始页面。,底下再创建三个文件夹,分别是。

2023-07-12 15:20:31 2465

原创 Redis 五种基本数据结构及基本使用

zset 与 set 一样都是集合,但是 zset 每个元素关联一个 double 类型的分数,通过这个分数对集合进行从小到大排序。一个键对应一个值,并且是二进制安全的,值可以是图片或者序列化后的对象。是一个无序的集合,底层使用哈希表实现,添加、删除、搜索都为。,键为 id 的值是 1,键为 name 的值是。GETSET 获取旧值并设置新值。是一个键值对集合,字符类型的。Hash 适合用来存储对象。每个 Hash 可以存储。设置 Hash 名是。然后去获取对应键的值。

2023-07-09 16:31:43 552

原创 Windows 解除端口占用

在任务管理器的详细信息选项卡中找到。这个进程,右键关闭即可。

2022-12-29 14:24:34 350

原创 Qt paintEvent 绘制的文字消除之前的遗留

利用 update 重绘的时候,发现上一次绘制的数据残留,当前数据会覆盖在他上面,因此每一次重绘之前先清空。

2022-10-27 17:44:50 2448

原创 Java 中 Map 集合的基本使用

使用TreeMap必须实现Comparable接口,String、Integer已经默认实现了,因此可以直接作为键来使用。如果作为键的类型没有实现Comparable接口,那么必须指定一个自定义的排序算法。/***@authoryunhu*@date2022/7/15//按年龄从小到大排序returnp1.age.compareTo(p2.age);//按姓名排序//returnp1.name.compareTo(p2.name);}});......

2022-07-18 11:14:35 648

原创 Java 各种数组类型的转换

代码示例:1.2 包装类型数组转基本类型数组代码示例:二、基本类型数组与 List 接口互转2.1 基本类型数组转 List 接口代码示例:2.2 List 接口转基本类型数组代码示例:三、包装类型数组与 List 接口互转3.1 包装类型数组转 List 接口代码示例:......

2022-07-04 10:38:09 3732 1

原创 Java 中算术移位与逻辑移位的区别

算术移位,符号位不变。符号位是 1,移位后还是 1。符号位是 0,移位后还是 0。Java 中用 和 表示算术移位。逻辑移位后,符号位填充总是 0。Java 中用 和 表示逻辑移位。

2022-07-02 20:46:16 626

原创 Java 中 String、StringBuffer、StringBuilder 的用法与区别

是不可变的。咦,你不是说 是不可变的吗?这怎么就变了。 变为小写字母了。String 不可变指的是 String 指向的对象不可变,而不是 String 对象引用不可变。 是一个对象引用,存放 的地址, 存在栈中。是字符串对象,它的值不会发生改变,存在堆中。 字符串没有被改变,只是新建了一个新的 字符串,然后 这个引用指向了新的。 字符串后面会被垃圾回收处理。每次对 对象进行改变的时候,都会生成一个新的 对象,然后将引用指向新的 对象,然后丢弃掉旧的 对象,因此效率很差。 会预分配缓冲区,每次

2022-06-27 20:00:16 317

原创 JavaScript 箭头函数

等价于:1.2 不同参数的箭头函数二、箭头函数 this 绑定问题2.1 this 绑定有误普通函数 的 会指向 ,因此获取不到我们想要的结果。2.3 通过箭头函数箭头函数不会创建自己的 , 它只会从自己的作用域链的上一层继承 ,这个例子中就是 对象。...

2022-06-22 09:40:32 286

原创 Java == 运算符与 equals() 方法的区别

对于基本数据类型来说,== 比较的是值1.2 引用类型的 == 运算对于引用数据类型来说,== 比较的是对象的内存地址。即使 book1 与 book2 对象的属性值相同,他们 == 的结果还是 false,就是因为内存地址不同。new 方式因为 a 和 b 都是 String 的对象引用,即使内容相同,但是指向的是不同的内存地址。直接赋值方式直接赋值,对象存储在常量池中。虚拟机会在常量池中寻找是否已经有与将要创建的值相同的对象,如果有直接赋值给当前的引用,如果没有,新建一个 String 对象

2022-06-22 09:15:21 341

原创 Spring Boot 实现 JWT

Web 网站离不开用户认证,这边我们不用 ,而直接使用 。JWT 的背景知识可以看阮一峰老师的这篇文章: JSON Web Token 入门教程JWT 由三个部分组成:在 中添加 配置信息。2.2 新建 JwtUtil 工具类新建 目录,在 目录下新建 。将当前 注入到 容器中。,匹配 配置文件的前缀,然后将配置文件里面的数据加载到当前类。2.3 用户登录创建 token2.3 拦截器验证 token如何自定义拦截器可以看我的这篇: Spring Boot 2 配置登录拦截。三、参考资料

2022-06-21 15:14:10 7684 4

原创 MyBatis Plus 使用 Service 接口进行增删改查

一般我们不在 层直接使用 方法去操控数据库,而是通过 写业务逻辑,然后去操控数据库。在 中加上以下配置,可以在控制台打印 语句。二、步骤2.1 新建实体类 中的数据新建 目录,在 目录下新建 接口继承 。T 泛型在这边就是 实体类。2.3 新建 UserServiceImpl 类在 目录下新建 目录,在 目录中新建 类 。去继承 。 有两个参数:2.4 新建接口新建 目录,然后在 目录下新建 接口。三、测试3.1 查询output:3.2 插入output:

2022-06-20 19:40:37 2006

原创 Spring Boot 2 配置登录拦截

平常我们的网站内容是不对非登录用户开放的,因此要对除了登录和注册的页面的其他任何页面进行访问拦截。在 目录下新建 类,然后去实现 这个接口。重写 方法,这个方法会在控制器接受请求前调用,如果 则不往下进行了,则可以实现拦截。2.2 配置拦截器定义好拦截器后,还不能直接使用,必须配置。在 目录下新建 类,实现 接口。然后把刚刚自定义的用户登录的拦截器注册上。...

2022-06-14 10:31:47 1495

原创 JavaScript 操作 DOM

二、更新 DOM 节点修改 节点 样式 与 都可以写入当前节点的值,区别在于 还可以写入 标签,如果在网络上获取,可能会被 攻击。如果原来的节点为空,可以用 来增加节点。如果原来的节点不为空,那么就不能用 ,因为它会直接替换掉原来的所有子节点,原来的就没了。插入已经有的节点会将原来的 删除,然后添加到 中。执行后 结构如下:大部分我们并不需要这样操作,而是插入新的节点。创建一个新节点,然后插入。执行后 文档如下:3.3 动态增加样式3.3 插入节点到指定位置执行后

2022-06-14 10:27:45 190

原创 Python 规范文件名

文件名中不能含有以下字符,否则会报错。

2022-06-10 18:36:30 1185

原创 MySQL 常用命令

总结一些常用的命令2.2 删除表中数据2.3 给结果添加编号2.4 查询分组的最小 id2.5 删除重复记录,保留最小索引的那一个t_test 表中数据:重复记录用两个字段进行唯一确定。因此 id 为 1 的记录与 id 为 3 的记录是重复记录,与 id 为 5 的记录不是重复记录,因为他们的 book_type 不同, 一个是 noval,一个是 essay。因此我们想得到的结果是删除 3、4 两行记录,他们重复了。先获取分组后的最小的 id,删除重复记录并且这个 id 不能是最小

2022-06-10 13:03:30 155

原创 Vue3 使用 store 给请求头配上 token

从后端获取 后,需要先用 进行存储,然后给 加上 里存储的 。在 目录中新建 文件夹,然后新建 文件。2.2 调用 changeLogin 存储 token在 或者其他登录页面中先引入,然后在后端给的响应数据中获取 ,之后再调用 执行 函数。我这边登录成功,后端返回的 数据:接下来主要就是要拿到后端给的 值。2.3 axios 配置在 目录中新建 文件,使用 对每一个请求进行拦截。 挂载 。2.4 查看请求表头中已经带有后端给的 值,后端拦截器对这个 值验证通过

2022-06-09 23:33:53 3001

原创 Vue3 配置路由拦截

我们的网页需要用户登录后才可以进行显示,不然将其拦截到登录页面。登录成功后,前端的 header 加上 token 值。如果 token 值为空,说明未登录。

2022-06-09 23:33:08 5892 1

原创 Vue3 + Element Plus 实现动态二级菜单

注意核心是 记录了父菜单的 id。插入一些数据: 为 表示当前菜单为一级菜单,没有父菜单。id 为 6 的「动漫」菜单是一个二级菜单,父菜单 id 为 1 说明父菜单是「文学」。id 为 12 的「历史」菜单也是一个二级菜单,父菜单 id 为 11 说明父菜单是「人文社科」。新建 目录,然后在目录下新建 树形类。增加一个字段 表明当前菜单的子菜单列表。使用 表明非数据库中的字段。四、新建 MenuTreeUtil.java新建 目录,然后在目录下新建 工具类,目的是转为 tree 结构。五、使用

2022-06-09 23:31:36 4504 1

原创 JavaScript 变量作用域

一、var 的作用域1.1 var 变量在函数体外使用变量在函数体内声明,作用域范围是在函数体内。'use strict';function foo() { var x = 1; x = x + 1;}x = x + 2; // ReferenceError! 无法在函数体外引用变量 x1.2 不同函数同名变量'use strict';function foo() { var x = 1; x = x + 1;}function bar() {

2022-05-31 11:23:59 608 1

原创 深入浅出设计模式之简单工厂模式

一、概述简单工厂模式是常用的设计模式之一,属于创建者模式,可以根据不同条件创建不同实例。二、实现2.1 定义抽象运算类让加减乘除的具体实现类去继承这个抽象类。/** * Operattion 抽象运算类 */public abstract class Operation { private double numberA; private double numberB; public double getNumberA(){ return number

2022-05-31 11:22:55 112

原创 VSCode 格式化 cpp 文件时配置左大括号不换行

一、概述格式化 cpp 文件时,发现左大括号是换行的,因此想要修改成不换行的。二、步骤依次点击:文件->首选项->设置,然后输入 C_Cpp: Clang_format_style将默认的 file 改为 {BasedOnStyle: Chromium, IndentWidth: 4}三、结果3.1 格式化前class Solution{public: vector<int> reversePrint(ListNode *head) {

2022-05-31 09:58:44 4364 7

原创 Vue 和 Spring Boot 项目部署到 Linux 服务器

一、构建流程1. 打包 Vue 项目在 vue 项目目录下使用:npm run build 生成 dist 目录。2. 复制 dist 目录下的文件将 dist 目录下的文件复制到 Spring Boot 项目中的 src/main/resources/static 文件夹里面。3. 打包 Spring Boot 项目双击 maven package 生成 jar 包,生成的 jar 包位置在 target 目录下。4. 使用 XShell 将 jar 包传到 linux 服务器中登录 li

2022-05-29 23:53:35 422

原创 使用 Element el-upload 控件上传文件并且带参数

一、概述前面我实现了文件的上传,但是我还需要带一个参数,表明我传了什么文件给后端。二、方法data 属性可以在上传时附带参数,类型是 Record<string, any>,因此可以通过这个实现。action 属性可以将文件传到后端去。ref 属性可以让外部找到这个控件。三、代码3.1 html 部分 <el-upload ref="uploadRef" class="upload-demo" accept=".xls,.xlsx,.csv"

2022-05-24 15:05:08 13696

原创 Vue3 设置默认目标服务器的 URL

一、概述在本地开发,由于 vue 端口和 spring boot 端口都在 8080, 会产生冲突,所以我将 spring boot 的端口改为了 8085 , 在 application.yml 中直接修改,如下所示server: port: 8085 然后本地去连,直接完整路径的 axios 请求是可以的,比如axios({ method: "GET", url: "http://localhost:8085/getVaule", })通过

2022-05-24 15:03:23 1445

原创 Vue3 父组件通过 props 传值给子组件

一、概述父组件传值到子组件,通过 props 的方式二、步骤2.1 子组件<template> <h2>父组件传来的数据 {{ msg }} </h2></template><script>import { defineComponent } from "@vue/runtime-core"export default defineComponent({ name: 'StudyProp', props:

2022-05-24 15:01:39 670

原创 Vue3 实现简单 todo-list

一、概述通过 todo-list 来学一些 vue3 的知识。二、设计维护两个列表,一个待办事项,一个已完成事项。三、界面3.1 模板部分<template> <h2>云胡待办事项</h2> <div id="todo-list"> <el-row> <el-col :span = "12"> <ul class = "card"> <div> 待办事项

2022-05-24 14:58:18 1353

原创 Spring Boot 配置 MySQL 数据库

一、导入 Maven 依赖<!--MySQL jdbc 驱动--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version></dependency>二、在 application.yml 中配置数据源spring:

2022-05-24 14:57:03 14497

原创 sql 常用语法

限制查找结果范围LIMIT m # 前 m 个数据LIMIT(m, n) # 从 m + 1 行开始 n 条记录查找某个字段介于两者之间的数据WHERE age >= 20 and age <= 23WHERE age between 20 and 23查找某个字段不等于某个值的数据WHERE university != "复旦大学"WHERE university <> "复旦大学"WHERE university NOT IN ("复旦大学")where

2022-05-23 15:07:25 80

原创 Vue3 使用 ref 获取后端数据

一、概述通过 ref 返回一个响应式的数据,可以在 html 模板上直接使用。二、步骤2.1 引入 refimport { ref } from "vue";2.2 setup()export default { name: 'App', setup() { const serverValue = ref(); onMounted(() => { axios({ method: "GET",

2022-05-20 11:03:30 313

原创 Java 后端将上传的 csv 文件转为 Excel xlsx 文件

一、概述本地文件是 csv格式,将其转成 xlsx 或者 xls。二、实现步骤2.1 获取 csv 文件数据由于前端的上传文件的数据类型是 MultipartFile,所以就通过获取输入流的方式读取到 CsvReader 对象中。然后将所有 csv数据一行一行的存入到 ArrayList 动态数组中。 /** * 获取 csv 数据 * @author 云胡 * @param multipartFile * @throws IOException

2022-05-20 11:01:53 4618

原创 MyBatis-Plus 实现增删改查操作

MyBatis-Plus 实现增删改查操作一、概述之前已经使用 Spring Boot 集成 MyBatis-Plus,这次实现增删改查操作。二、表的内容idnameageemail1孙悟空1000sunwukong@gmail.com2唐僧20tangseng@gmail.com3猪八戒800zhubajie@gmail.com4沙僧900shaseng@gmail.com5白龙马500bailongma@gmail.c

2022-05-20 11:00:19 543

原创 Spring Boot 使用 Mybatis-Plus

一、Mybatis-Plus 概述Mybatis-Plus 支持非常多的数据库,常规的有 MySQL,H2,SQLite,SQLServer 等等。这边我将使用 H2 数据库做一次测试。二、本地 H2 数据的配置2.1 下载和配置 H2 数据库H2数据库官网:https://www.h2database.com/html/main.html在本地用户目录底下新建一个文件 test.mv.d,test表示数据库名称,你可以自定义名称。在本地H2 目录下找到 h2\bin\h2.bat文件,这个是

2022-05-20 10:57:22 1424

鸟哥的linux私房菜

Linux最佳学习资料,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系统安全非常重要的Linux账号的管理,以及主机系统与程序的管理,如查看进程、任务分配和作业管理;第五部分介绍了系统管理员(root)的管理事项,如了解系统运行状况、系统服务,针对登录文件进行解析,对系统进行备份以及核心的管理等。

2017-10-15

空空如也

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

TA关注的人

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