- 博客(173)
- 资源 (1)
- 收藏
- 关注
原创 Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)
这样做完后,使用swagger测试接口大概率会出现"%A8%A1%E6%9D%BF.xlsx"这种格式,这是由于Swagger对文件名进行了URL编码,导致文件名在下载时显示为编码后的形式。Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)编写下载接口,返回要下载的模版文件,fileName可以根据需要灵活配置。准备文件,这里我放在resource下的templates路径。直接使用浏览器进行Get测试接口,文件编码正常,完美!
2023-09-13 14:57:16
943
原创 Git commit 通用提交消息规范
一种常见的提交消息规范是使用 “Conventional Commits” 规范,它使用一些预定义的关键字来标识提交的类型和目的。采用这种规范的提交消息有助于清晰地了解每个提交的目的,提高代码审查的效率,追踪项目的变更历史,以及生成有意义的版本发布日志。格式(style):表示提交对代码的格式进行了修改,如缩进、空格、格式化等,但没有改变代码的逻辑。新功能(feature):表示提交引入了新的功能、功能改进或添加新的功能点。撤销(revert):表示提交撤销了之前的提交。
2023-09-11 10:17:58
291
原创 23种设计模式介绍+案例演示
对每个设计模式案例增加了详细注释和设计模式的介绍总结。这是一个学习java设计模式案例分析。参考书籍:《图解设计模式》
2023-08-04 13:07:07
54
原创 GitLab不同角色对应的权限
Owner(拥有者):拥有者是项目或组的创建者,拥有最高级别的权限。他们可以添加、删除项目成员,修改项目设置,管理访问权限,并进行项目转让。在组级别,他们还可以添加或删除子组和项目,并管理组设置。Maintainer(维护者):维护者拥有项目中的写入权限,可以推送代码、创建分支,管理问题和拉取请求。他们可以添加、删除项目成员,但不能对项目的高级设置进行修改。Developer(开发者):开发者通常具有项目中的读写权限,可以推送代码和创建分支。他们可以创建问题、合并请求等,但不能修改项
2023-08-04 08:07:55
3949
转载 MySQL 事务日志
为每一个事务分配一个页,是非常浪费的(除非你的事务非常长),假设你的应用的TPS(每秒处理的事务数目)为1000,那么1s就需要1000个页,大概需要16M的存储,1分钟大概需要1G的存储。可以发现每次对数据的变更都会产生一个undo log,当一条记录被变更多次时,那么就会产生多条undo log,undo log记录的是变更前的日志,并且每个undo log的序号是递增的,那么当要回滚的时候,按照序号依次向前推,就可以找到我们的原始数据了。了,当事务提交时,并不会立刻删除undo页。
2023-07-28 09:43:43
93
原创 事务基础知识
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。
2023-07-28 09:21:03
91
原创 数据库索引优化与查询优化——醍醐灌顶
哪些维度可以进行数据库调优关于数据库调优的知识点非常分散。不同的 DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。这里我们分为三个章节进行细致讲解。虽然 SQL 查询优化的技术有很多,但是大方向上完全可以分成和两大块。
2023-07-27 17:14:45
878
原创 数据库性能分析工具的使用
定位了查询慢的 SQL之后,我们就可以使用 EXPLAIN 或 DESCRIBE 工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MySQL中有专门负责优化SELECT语句的优化器模块,主要功能: 通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的 执行计划 (他认为最优的数据索方式,但不见得是DBA认为是最优的,这部分最耗费时间)。
2023-07-26 14:25:15
142
原创 索引的创建与设计原则
在实际使用中,根据数据表的访问模式和查询需求,选择合适的索引类型,并确保索引的设计能够提高查询性能和数据访问效率。同时,根据数据库的实际负载和查询频率,定期监测索引的性能,对索引进行优化和维护,是保持数据库高性能的关键。
2023-07-25 14:44:28
138
原创 索引的数据结构
使用索引是为了加快数据库的查询速度和提高数据库的性能。索引是数据库表中的一种数据结构,它可以帮助数据库快速定位并检索所需的数据。当数据库表中的数据量较大时,如果没有索引,数据库系统需要逐行扫描整个表来查找满足查询条件的数据,这将会消耗大量的时间和资源。而有了索引,数据库系统可以根据索引中存储的信息快速缩小查询范围,直接定位到符合条件的数据,从而大大减少查询所需的时间和资源。
2023-07-25 10:24:01
716
原创 MySQL 字符集
排序规则影响字符在比较和排序时的行为,因为在不同的语言和地区,对字符的排序方式可能有所不同。请注意,在 MySQL 中,“utf8” 和 “utf8mb4” 的存储方式略有不同,“utf8mb4” 的存储空间会稍微多一些,因为它支持更多的字节。例如,“utf8mb4_general_ci” 表示使用 “utf8mb4” 字符集,并采用不区分大小写的排序规则。对于大多数情况下,特别是需要支持表情符号、特殊符号或其他非常用字符的情况,建议使用 “utf8mb4” 字符集,以免出现字符存储和处理的问题。
2023-07-24 16:35:24
450
原创 MySQL8 新特性——公用表表达式用法
在MySQL 8.0及更高版本中,引入了公用表表达式(Common Table Expressions,CTEs),它是一种方便且可重用的临时结果集,类似于子查询,但使用更简洁和易读的语法。CTEs通常用于在复杂的查询中创建临时表,以便于后续查询和分析。
2023-07-24 09:11:05
73
原创 MySQL8 新特性——窗口函数用法
窗口函数的特点是可以分组,而且可以在分组内排序。另外,窗口函数不会因为分组减少原表中的行数,这对我们在原表数据的基础上进行统计和排序非常有用。
2023-07-23 16:39:48
182
原创 MySQL 触发器
MySQL 触发器(Trigger)是一种在数据库中定义的特殊类型的存储过程,它在指定的数据库表上自动执行,当满足特定的触发条件时,触发器会被激活并执行相应的操作。触发器通常用于在数据库表发生特定事件时,自动执行一些操作,如更新其他表的数据、记录日志等。
2023-07-21 13:58:22
214
原创 Redis 数据类型及其常见使用场景
Redis(Remote Dictionary Server)是一种高性能的键值存储数据库,它支持多种数据类型,使其成为广泛应用于缓存、消息队列、计数器、会话存储等场景的理想选择。下面简单介绍 Redis 的常见数据类型及其使用场景。
2023-07-20 14:22:57
116
原创 MyBatis XML方式常用元素用法示例
MyBatis XML 中的元素有很多种,每个元素都有不同的作用和用法。:用于定制 SQL 片段的前缀和后缀,并根据条件进行添加或删除。:用于循环遍历集合或数组,并生成对应的 SQL 语句。:根据条件判断是否包含某个 SQL 片段。:实现条件选择逻辑。
2023-06-28 16:00:15
552
原创 Mybatis注解形式用法
MyBatis 注解形式的用法提供了一种在接口方法上直接定义 SQL 语句和参数映射的方式,使得数据库操作更加简洁和直观。在使用注解形式时,需要确保正确配置了 MyBatis 的注解扫描和相关的配置信息,以便正确地执行数据库操作。除了以上示例,MyBatis 还提供了其他注解和用法,例如动态 SQL 注解(:指定方法参数的名称,在 SQL 语句中引用参数。:执行查询操作,用于查询单个结果或结果列表。:执行插入操作,用于插入数据。:执行更新操作,用于更新数据。:执行删除操作,用于删除数据。
2023-06-28 15:52:20
336
原创 MySQL基本知识复习补充
DDL:数据定义语言。create、alter、drop、rename、truncate(清空表)DML:数据操作语言。DCL:数据控制语言。因为查询语句使用频繁,可以把细分为DQL(数据查询语言),和commit、rollback细分为TCL(事务控制语言)
2023-06-08 16:27:46
1904
原创 Mac/Linux系统idea启动springboot项目慢;Oracle数据库连接:ORA-21561: OID generation failed
我用的黑苹果系统,但是之前遇到过问题就是idea启动spirngboot项目特别特别特别慢!!!要1,2分钟左右,找了好久原因也没找到,怀疑是黑苹果调度问题。直到今天,我尝试连接一个oracle数据库,连不上提示`ORA-21561: OID generation failed`,找了半天原因发现是当前系统的用户的hostname我设置的跟hosts文件不一致,被oracle的安全校验否决了于是我推测在其他项目连接mysql项目时也出现了这个问题,可能mysql用localhost连接不上又帮我试了
2023-04-19 17:22:17
414
1
原创 【软件设计师15】数据结构与算法应用
对应一个规模为n的问题,若该问题可以容易的结局(比如说规模n较小)则直接解决;否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归的解决这些小问题,然后将各个子问题的解合并得到原有问题的解。该问题的规模缩小到一定程度就可以容易地解决该问题可以分解为若干个规模较小的相同问题利用该问题分解出的子问题的解可以合并为该问题的解该问题所分解出的各个子问题是相互独立的。
2023-04-16 12:31:03
243
原创 【软件设计师14】UML建模
动态图,表现对象之间的交互关系,强调时间顺序;给出一些对象,引出生命线(竖直虚线),通过交互表达消息的传递一般会把某个消息去掉,让你分析题补充;其次是填对象名
2023-04-14 09:30:25
475
原创 【软件设计师13】数据库设计
例如一对一联系,可以将联系单独做为关系模式,也可以存放到任意一个实体中而一对多要合并只能合并到多这边,不能存放到1多对多则联系必须单独转成一个关系模式。
2023-04-11 08:18:25
327
原创 【软件设计师11】面向对象设计
单一职责原则:设计目的单一的类开放-封闭原则:对外扩展开放,对修改关闭里氏(Liskov)替换原则:子类可以替换父类依赖倒置原则:要依赖与对象,而不是具体实现;针对接口编程,不要针对实现编程接口隔离原则:使用多个专门对接口比使用单一的总借口要好组合重用原则:要尽量使用组合,而不是继承关系达到重用目的迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。
2023-04-09 11:07:49
377
原创 【软件设计师10】软件工程
每个阶段分工明确;出现问题可以向上层回溯缺点:需求阶段难以把控,在项目初期,软件的需求几乎是不明确的,等开发完用户往往再提出问题,又回到了需求阶段重新来适用于软件的工程。
2023-04-05 17:12:50
451
原创 【软件设计师09】多媒体技术
感觉媒体:指人们接触信息的感觉形式。如:视觉、听觉、触觉、嗅觉、味觉等。表示媒体:信息的表示形式(编码形式)。如:文字、图形、图像、动画、音频、视频等。显示媒体(表现媒体)(易错):表现和获取信息等物料设备。如:输入显示器媒体键盘、鼠标和麦克风等;输出显示媒体显示器、打印机和音响等。说白了输入输出设备。存储媒体:存储数据的物理设备,如磁盘、光盘、内存等。传输媒体:传输数据的物理载体,如电缆、光缆、交换设备等。
2023-04-05 16:20:03
352
原创 【软件设计师08】法律法规(知识产权)
涉及法律法规角度:著作权法、计算机软件保护条例、商标法、专利法试题考点分布角度:保护期限、知识产权人确定、侵权判定知识产权:著作权与邻接权、专利权、工业外观设计权、商标权、地理标志权、集成电路布图设计权。
2023-04-05 14:49:02
54
原创 【软件设计师07】程序设计语言与语言处理程序基础
概念文法类型语法推导树有限自动机与正规式 常见问题:给一个串比如01、10、001等,看图中起点到终点能否连起来得到这样的串正规式是有限自动机到另一个表达形式(1)A. S -> aA -> abS -> abaA -> ababS -> ababaA -> ababab 成立同理推出B、C成立,D无法识别(2)(*表示可以组合任意次数)常规解法很慢,用代入法可以快速推理。
2023-04-05 14:12:24
309
原创 【软件设计师06】数据结构与算法基础
存储和组织数据的方式线性结构、非线性结构包含树(不存在环路)和图(存在环路);从意义上讲图可以包含树,树包含线性结构基本操作单链表删除:p -> next = q -> next单链表插入:s -> next = p -> next;排序的概念稳定与不稳定排序(排序前后原有的相等两个数字的顺序是否改变,比如分数的排名先来后到等)、内排序(在内存进行)与外排序(涉及到外部存储空间)
2023-04-05 11:03:11
571
原创 【软件设计师05】 系统安全分析与设计
防止信息别篡改摘要是信息的特征值,当原始信息发送变化时特征值也会随之改变。单向散列函数(单向Hash函数)、固定长度的散列值常用的消息摘要算法有MD5、SHA等,使用较多的是MD5。SHA算法的散列值分别为128位和160位,密钥较长因此安全性高于MD5。
2023-03-26 10:51:12
322
原创 【软件设计师04】计算机网络
ICMP:因特网的控制协议,如ping命令就属性此协议ARP:地址解析 ip -> MacRARP:反向地址解析 Mac -> ipTCP:可靠协议;存在验证机制;三次握手、四次挥手UDP:不可靠协议;不建立连接,直接将数据发送给另一方DHCP:做动态的IP地址分配TFTP:小文件传输协议SNMP:简单网络管理协议DNS:域名解析协议中间的Samba、CIFS、NFS可以用TCP或UDP实现,文件共享协议;Samba可跨平台TCP和UDP均提供了端口寻址能力MIML:是一个互联网标准,
2023-03-24 16:01:28
510
原创 【软件设计师03】数据库系统
规范化理论、关系代数必考数据库模式、ER模型、关系代数与演算、规范化理论、并发控制、数据库完整性约束、分布式数据库、数据仓库与数据挖掘。
2023-03-24 14:09:05
353
原创 【软件设计师02】操作系统基本原理
控制系统的硬件、软件、数据资源控制程序运行人机之间的接口应用软件与硬件之间的接口进程管理(进程状态、前趋图、PV操作、死锁问题)存储管理(段页式存储结构、页面置换算法)文件管理(索引文件、位示图)作业管理设备管理微内核操作系统(虚设备与SPOOLING技术)
2023-03-24 07:59:29
167
原创 Nginx+内网穿透Cpolar工具实现外网访问内网服务
假设服务A:A服务IP:9200内网服务A,需要连接VPN才能访问电脑B可以连接VPN访问A;电脑C(没有或无法安装VPN)也想访问服务A现在想用电脑C通过访问电脑B来访问服务A但是现在电脑B和服务A之间还有一层,所以可以在这一层做一个nginx代理,然后在用Cpolar内网穿透电脑B,就可以用电脑C访问服务了。
2023-03-23 10:22:28
532
原创 基于线程池的定时任务/控制一段代码的执行时间
此时,如果你希望在Callable的while中控制任务的停止,你可以在while循环中判断Thread.currentThread().isInterrupted(),如果返回true,则代表任务已经被取消,可以退出while循环,终止任务的执行。调用shutdownNow()方法后,如果还有其他的任务在执行,那么它们也将被取消,并且shutdownNow()方法将会尝试停止正在执行的线程。在下面的例子中,监控你要执行的代码部分,如果这段代码执行的时间超过了你的定义,你可以终止它继续后面的代码。
2023-03-22 16:35:35
310
原创 【软件设计师01】计算机组成与体系结构
算术逻辑单元ALU 算术和逻辑运算累加寄存器AC 运算结果或源操作数存放区数据缓冲寄存器DR 暂存指令或数据海明码是一种利用奇偶性来差错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置插入K个校验位,通过扩大码距来实现检错和纠错。
2023-03-22 16:07:55
229
原创 JSON序列化/反序列化,指定自定义字段名key转换注解配置
输出结果: 可以看到直接输出key也是自定义的,但这里用的是alibaba.fastjson注解完成的,和上面使用场景不一样,因为springboot使用fastjson序列化对象。在springboot请求接口返回对象得到的结果:(因为springboot使用fastjson序列化对象)实体类属性上增加@JSONField(name = “属性名”)注解(alibaba.fastjson)实体类的属性上面增加@JsonProperty(“字段名”)注解(fastjson)
2023-01-13 15:40:39
3984
原创 处理MySQL执行SQL语句,表名不支持大写问题
Linux下的MySQL默认是区分表名大小写导致的;处理MySQL执行SQL语句,表名不支持大写问题。修改/etc/my.cnf文件。
2023-01-13 14:10:34
393
原创 Mac/Windows使用DBeaver+jdbc驱动连接KingbaseES人大金仓数据库
下载DBeaver Communit连接工具并安装:官网下载驱动你电脑对应的文件:
2023-01-13 10:03:40
3001
1
黑苹果EFT,亲测可用完美适配拯救者Y7000P-10875H
2022-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人