- 博客(397)
- 收藏
- 关注
原创 【知识点总结】微信登录流程与Java Spring 实现
sky:wechat:sky:wechat:sky:jwt:# 设置jwt签名加密时使用的秘钥# 设置jwt过期时间# 设置前端传递过来的令牌名称。
2024-11-06 10:05:26
1117
原创 【知识点总结】Java 发送Http请求——HttpClient
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。为什么要在Java程序中发送Http请求?有哪些应用场景呢?当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时其实,应用程序本身并未实现这些功能,都是在应用程序里访问提供这些功能的服务,访问这些服务需要发送HTTP请求,并且接收响应数据,可通过HttpClient来实现。
2024-11-06 10:04:05
785
原创 【知识点总结】Java 中操作 Redis
Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。网址:https://spring.io/projects/spring-data-redisSpring Boot提供了对应的Starter,maven坐标:
2024-11-06 09:37:12
956
原创 【知识点总结】 Redis 数据类型操作指令
Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。Redis set 是string类型的无序集合。更多命令可以参考Redis中文网:https://www.redis.net.cn1。
2024-11-06 09:35:21
1005
原创 【知识点总结】切面编程——公共字段的统一填充
而针对于这些字段,我们的赋值方式为:1). 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。2). 在更新数据时, 将updateTime 设置为当前时间, updateUser设置为当前登录用户ID。如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐,那能不能对于这些公共字段在某个地方统一处理,来简化开发呢?
2024-11-06 09:33:15
265
原创 【知识点总结】时间传输格式问题
在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理。但这种方式,需要在每个时间属性上都要加上该注解,使用较麻烦,**问题描述:**操作时间字段显示有问题。在属性上加上注解,对日期进行格式化。为自定义的 对象转化器。
2024-11-06 09:31:48
351
原创 【知识点总结】解决保存与获取 jwt 问题-localThread
的机制,每个线程都能独立地访问和修改自己的变量副本。因此,在Spring Web应用中,两个并发的请求不会共享同一个。不过,为了保持代码的整洁和避免潜在问题,建议在每次请求处理完毕后调用。变量是同一个静态变量,但每个请求线程对这个变量的访问是隔离的。在Spring Web应用中,当两个请求进来时,它们访问的。我们应该在服务层获得到请求所携带的信息呢?的设计就是为了让每个线程都有自己的独立变量。
2024-11-06 09:29:46
420
原创 【知识点总结】文档接口的使用
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。
2024-11-06 09:28:40
997
原创 【知识点总结】nginx 使用
当在访问http://localhost/api/employee/login,nginx接收到请求后转到http://localhost:8080/admin/,故最终的请求地址为http://localhost:8080/admin/employee/login,和后台服务的访问地址一致。这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。**注:**upstream后面的名称可自定义,但要上下保持一致。
2024-11-06 09:25:52
833
原创 【mysql进阶】5-事务和锁
事务是把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失败,这组SQL语句可以是⼀条也可以是多条。
2024-10-28 18:46:19
1085
原创 【mysql进阶】4-8 临时表空间
🔍 分析过程使⽤ CREATE TEMPORARY TABLE 语句创建的临时表是外部临时表# 创建⼀个名称为t1的临时表通过 INNODB_TEMP_TABLE_INFO 查询临时表元数据TEMPORARY表只在当前会话中可⻅,并且在会话关闭时⾃动删除。这意味着两个不同的会话可以使⽤相同的临时表名,⽽不会相互冲突,临时表也不会与已有的⾮临时表名冲突,如果创建了与现有表同名的临时表,则现有表被隐藏,直到临时表被删除。重启MySQL服务器后,再次查询临时表信息,得到空集合✅ 解答问题。
2024-10-26 23:06:33
902
原创 【mysql进阶】4-7. 通用表空间
✅ 解答问题通⽤表空间是使⽤ CREATE tablespace 语法创建的共享InnoDB表空间通⽤表空间能够存储多个表的数据,与系统表空间类似也是共享表空间;服务器运⾏时会把表空间元数据保存在内存中,在表的数量相同的情况下,通⽤表空间⽐独⽴表空间的数量更少,所以消耗的内存也就更少;数据⽂件可以放置在数据⽬录或数据⽬录之外的其他位置,对于单独管理关键表⾮常有⽤;⽀持所有的表格式和⾏格式的相关特性;
2024-10-26 23:05:27
981
原创 【mysql进阶】4-6. InnoDB 磁盘文件
表空间可以理解为MYSQL为了管理数据⽽设计的⼀种数据结构,主要描述的对结构的定义,表空间⽂件是对定义的具体实现,以⽂件的形式存在于磁盘上,以后我们说的表空间指的就是表空间⽂件InnoDB存储引擎的表空间包括:系统表空间、独⽴表空间、通⽤表空间、临时表空间和撤销表空间✅ 解答问题当事务对数据进⾏修改的时候,每个修改操作都会在磁盘上创建与之对应的Undo Log,当事务需要回滚时,会根据Undo Log逐⼀进⾏撤销操作,从⽽保证事务的原⼦性。
2024-10-26 23:02:56
1053
原创 【mysql进阶】4-5. InnoDB 内存结构
关于索引在数据库初阶已经做了介绍,我们知道索引分为聚集索引(主键)和⼆级索引(⾃定义)由于聚集索引具有唯⼀性,我们分析⼀下聚集索引为什么不能被放⼊变更缓存,假设表中有⼀个主键( ID ),现在有两条 INSER 语句,都在插⼊数据时ID的值相同 (id=1) ,那么在变更缓冲区中就存在两个修改操作,如果以后要合并到缓冲池中,这时就会出现重复的主键值,所以聚集索引的修改不能被加⼊到变更缓冲区;
2024-10-26 22:59:55
1006
原创 【mysql进阶】4-4. 行结构
在结构上与 DYNAMIC 相同,只是对超⻓字段的处理上有些区别,它不会把所有超⻓数据都放在溢出⻚中,⽽是会在本⾏中保留前768个字节的数据,多出的部分放在溢出⻚中,溢出⻚的地址额外⽤20个字节表⽰,那么在本⾏的列中就会占⽤768+20个字节。在结构上与 DYNAMIC 相同,只是对超⻓字段的处理上有些区别,它不会把所有超⻓数据都放在溢出⻚中,⽽是会在本⾏中保留前768个字节的数据,多出的部分放在溢出⻚中,溢出⻚的地址额外⽤20个字节表⽰,那么在本⾏的列中就会占⽤768+20个字节。
2024-10-26 22:58:41
950
原创 【mysql进阶】4-3. 页结构
LSN:是"Log Sequence Number"的缩写,表⽰⽇志序号。⽤⼀个任意的、不断增加的值表⽰⽇志中记录的操作对应的时间点,⽤8字节的⽆符号⻓整形表⽰,后⾯会详细介绍如何⽣成LSN的值了解了⾏的基本结构和组织⽅式之后,那么当遍历⻚中的⾏时,从哪⾥开始到哪⾥结束呢?
2024-10-26 22:57:25
883
原创 【mysql】4-2. MySQL存储结构
局部性原理是指程序在执⾏时呈现出局部性规律,在⼀段时间内,整个程序的执⾏仅限于程序中的某⼀部分。相应地,执⾏所访问的存储空间也局限于某个内存区域,局部性通常有两种形式:时间局部性和空间局部性。时间局部性(Temporal Locality):如果⼀个信息项正在被访问,那么在近期它很可能还会被再次访问。空间局部性(Spatial Locality):将来要⽤到的信息⼤概率与正在使⽤的信息在空间地址上是临近的。
2024-10-26 22:56:43
1581
原创 【mysql 进阶】3 MySQL架构和存储引擎
了解MySQL整体架构了解MySQL架构各层级的组成和作⽤了解存储引擎分类了解不同存储引擎的特点掌握创建表时指定存储引擎的⽅式。
2024-10-25 00:26:18
1143
原创 【mysql进阶】2-4. mysql 系统库
Mysql Schema是⼀个系统库,表中存储了MySQL服务器运⾏时所需的信息。⼴义上,mysqlschema包含存储数据库对象元数据的数据字典和⽤于其他操作⽬的的系统表。数据字典表和系统表位于数据⽬录下⼀个名为 mysql.ibd 的表空间⽂件中,使⽤的是InnoDB存储引擎。
2024-10-24 22:01:26
1045
原创 【mysql进阶】2-3. 日志简介
如果使⽤ FLUSH ERROR LOGS 、 FLUSH LOGS 语句或 mysqladmin flush-logs 命令刷新错误⽇志,服务器会将正在写⼊的任何错误⽇志⽂件关闭并重新打开。
2024-10-24 21:32:59
922
原创 【mysql 进阶】2-1 mysql 数据目录
b. performance_schema⽬录对应于Performance Schema,提供了在运⾏时⽤于检查服务器内部执⾏的信息;d. 其他⼦⽬录对应于⽤⼾或应⽤程序创建的数据库,也就是说我们每创建⼀个数据库,就会在数据⽬录⽣成⼀个同名的⽬录来保存对应的数据。a. mysql⽬录对应于mysql系统库,包含mysql服务器运⾏时所需的信息,该数据库包含数据字典表和系统表;c. sys⽬录对应于sys系统库,提供⼀组对象来帮助解释性能模式相关信息;默认或⾃动⽣成的 SSL 和 RSA 证书和密钥⽂件。
2024-10-24 18:14:49
303
原创 【mysql 进阶】2-1. MySQL 服务器介绍
当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数情况下,为确保服务器每次运⾏时都使⽤相同的选项,最好的⽅法是在选项⽂件中指定相应的选项。mysqld从选项⽂件中的 [mysqld] 和 [server] 组(节点)中读取选项内容。
2024-10-24 18:09:04
1295
原创 【mysql进阶】1-5. 其它客户端
在平时使⽤MySQL数据库时,经常进⾏查询操作,有些查询语句执⾏的时间⾮常⻓,当执⾏时间超过设定的阈值时,我们称这个查询为慢查询,慢查询的相关信息通常需要⽤⽇志记录下来称为慢查询⽇志,mysqldumpslow可以解析慢查询⽇志⽂件并汇总其内容,有关慢查询⽇志的内容我们在MySQL服务器配置与管理专题进⾏讲解。
2024-10-24 12:56:59
760
原创 【mysql进阶】1-4 mysql 数据的导入和导出
如果在 db_name 后没有指定任何表名,或者使⽤ --databases 或 --all-databases 选项,那么整个数据库都会被转储。如果没有使⽤ --single-transaction 选项时必须要有 LOCK TABLES 权限。如果没有使⽤ --no-tablespaces 选项时必须要有 PROCESS 权限。由于mysqldump是逐⾏转储数据,所以不适⽤于⼤数据量的转储与导⼊。重新导⼊转储⽂件时,也需要有相应的权限。转储表时必须要有 SELECT 权限。使⽤mysql客⼾端导⼊。
2024-10-24 01:11:15
374
原创 【mysql进阶】1-3. mysql - MySQL 命令⾏客⼾端
⼤多数 MySQL 程序都可以从选项⽂件(配置⽂件)中读取启动选项。可以在选项⽂件中指定常⽤选项,这样就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。include /home/mydir ,但不保证⽬录中选项⽂件的读取顺序。MySQL 按以下表格中的顺序查找并读取选项⽂件。读取顺序从上到下,后读取的⽂件中配置的选项优先级越⾼。选项 --defaults-file 可以指定要使⽤的选项⽂件,客⼾端程序会读取并应⽤选项⽂件中的相关配置。在mysql后⾯指定配置⽂件的路径,以便在程序启动时读取配置⽂件中的选项。
2024-10-24 01:10:12
936
原创 【mysql 进阶】1-1 mysql 程序介绍
Linux系统程序⼀般在 /usr/bin⽬录下,可以通过命令查看:windows系统⽬录:你的安装路径\MySQL Server 8.0\bin,可以通过命令查看:每个 MySQL 程序都有许多不同的选项。⼤多数程序都提供⼀个 --help 选项,您可以使⽤该选项来获取程序不同选项的描述。例如: mysql --help,可以通过在命令⾏或配置⽂件中指定选项来覆盖 MySQL 程序的默认选项值程序名作⽤mysqld。
2024-10-24 00:27:31
418
原创 【Java 问题】集合——Map
将元素放在table数组上面,是用hash值%数组大小定位位置,而HashMap是用hash值&(数组大小-1),却能和前面达到一样的效果,这就得益于HashMap的大小是2的倍数,2的倍数意味着该数的二进制位只有一位为1,而该数-1就可以得到二进制位上1变成0,后面的0变成1,再通过&运算,就可以得到和%一样的效果,并且位运算比%的效率高得多。阈值为什么要选8呢?理想情况下,使用随机哈希码,链表里的节点符合泊松分布,出现节点个数的概率是递减的,节点个数为8的情况,发生概率仅为0.00000006。
2024-10-21 15:21:56
679
原创 局域网中部署 web 项目
2. 访问: http://电脑主机IP:90/ 例如: http://10.114.165.189:90/看 无线局域网适配器 WLAN - IPV4 地址 : 10.114.165.189。spring 全局配置, 指定可以跨域访问的 IP 地址。后端要做到以下配置, 不然会存在跨域访问报错的问题!默认只是监听 127.0.0.1 的 TCP 连接。需要添加server.address配置。在 cmd 中运行下面的命令。
2024-10-20 23:42:57
446
原创 【vue】vue-router_ vue3路由管理器
什么是单⻚⾯应⽤程序? 答:所有的功能都在⼀个html⻚⾯上单⻚⾯应⽤优缺点? 答:1、优点:体验好、开发效率⾼ 2、缺点:⾸屏加载相对较慢、不利于SEO单⻚应⽤场景? 答: 系统类⽹站 / 内部⽹站 / ⽂档类⽹站 / 移动端站点⽣活中的路由:设备和ip的映射关系Vue中的路由:路径和组件的映射关系单⻚⾯应⽤程序, 之所以开发效率⾼, 性能好, ⽤⼾体验好, 最⼤的原因就是:⻚⾯按需更新⽐如当点击【发现⾳乐】和【关注】时,只是局部更新内容。
2024-10-15 22:15:31
913
原创 【vue】⾃定义指令+插槽+商品列表案例
内置指令:v-model、v-for、v-bind、v-on… 这都是Vue给咱们内置的⼀些指令,可以直接使⽤⾃定义指令:同时Vue也⽀持让开发者,⾃⼰注册⼀些指令。这些指令被称为⾃定义指令⾃定义指令的作⽤是什么? 答:封装⼀段公共的 DOM操作 的代码使⽤⾃定义指令的步骤是哪两步? 答: 先注册、后使⽤指令配置选项中的 mounted 钩⼦何时执⾏? 答:元素 挂载后 (成为DOM树的⼀部分时) ⾃动执⾏组件内某⼀部分结构不确定,想要⾃定义怎么办? 答:使⽤ 插槽 (技术)
2024-10-15 17:24:33
1217
原创 【vue】组件及组件化+组件⽣命周期
为什么需要组件? 答:当遇到⼀段标签(UI)需要复⽤的时候如何让这⼀段标签(UI)复⽤? 答:抽离 -> 封装( JS+HTML+CSS ) -> 导⼊ -> 使⽤什么是组件 答:⼀个 可复⽤的、独⽴的 Vue 实例(UI) ,包含 3 部分代码组件化的好处是什么? 答: 化⼤为⼩、化繁为简 , 利于代码复⽤和维护App组件我们称之为什么? 答:根组件(顶层组件)A组件内部导⼊组件能在B组件使⽤吗? 答: no, 不能使⽤组件⾃定义标签 时应该按照什么命名法?
2024-10-13 22:02:38
1266
2
原创 【vue】指令补充+样式绑定+计算属性+侦听器
所谓指令修饰符就是让指令的 功能更强⼤,书写更便捷如何监听回⻋键? 答: 1、 @keydown.enter -> 回⻋按下 2、@keyup.enter -> 回⻋抬起如何阻⽌默认⾏为、阻⽌冒泡? 答: 1、@click.prevent -> 阻⽌默认⾏为 2、@click.stop -> 阻⽌冒泡 3、 @click.prevent.stop -> 可以链式调⽤, ⼆者都阻⽌v-model的3个修饰符的作⽤是什么?
2024-10-13 14:36:10
979
原创 【vue】前置知识学习
模块化是指将⼀个复杂程序划分为⼀系列独⽴、可互操作的模块的过程。每个模块负责特定的功能或任务,并通过定义好的接⼝与其他模块进⾏通信。简单来说, 就是将代码进⾏分解、按功能进⾏管理。模块化的⽬的是提⾼代码的可维护性、可重⽤性、可测试性和可扩展性。开发者能够更容易地处理⼤型JavaScript项⽬。
2024-10-11 20:41:20
888
原创 【Java 问题】集合——List
ArrayList是基于数组的集合,数组的容量是在定义的时候确定的,如果数组满了,再插入,就会数组溢出。ArrayList的序列化不太一样,它使用 transient 修饰存储元素的 elementData 的数组, transient 关键字的作用是让被修饰的成员属性不被序列化。出于效率的考虑,数组可能长度100,但实际只用了50,剩下的50不用其实不用序列化,这样可以提高序列化和反序列化的效率,还可以节省内存空间。ArrayList的扩容是创建一个1.5倍的新数组,然后把原数组的值拷贝过去。
2024-10-10 09:04:27
1545
原创 【Java 问题】基础—— jdk1.8 新特性
当我们定义了 一个方法,这个方法返回的对象可能是空,也有可能非空的时候,我们就可以考虑用 Optional 来包装它,这也是在 Java 8 被推荐使用的做法。Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream 流,简单来说,使用 java.util.Stream 对一个包含一个或多个元素的集合做各种操作。count 是一个终端操作,它能够统计 stream 流中的元素总数,返回值是 long 类型。
2024-10-08 17:29:28
967
简单三子棋的游戏设计思路代码
2022-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人