
后端开发
文章平均质量分 79
探索后端开发之道,从基础到架构。
晟盾科技
自2011年创办以来,始终以“致力于客户的满意与成功”为使命,专注于信息化领域的技术研发与产品应用。主要围绕营销系统、大数据处理、监控运维、呼叫平台、客服系统、数智能源系统等各类IT信息化系统进行产品开发。截至目前,公司业务已覆盖三十多个省、地市,与众多国企、央企建立了长期稳定的合作关系,如国家烟草、国家电网、中石油、中海油、三大运营商等。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ClickHouse 多表 JOIN 时 SELECT * 语法错误解析与解决方案
摘要:ClickHouse 19.5.3.1版本不支持多表JOIN时使用SELECT *语法,会报错"Multiple JOIN do not support asterisks yet"。这是由于列名冲突、性能问题和语义歧义等限制。解决方案包括明确指定列名、使用表别名、处理列名冲突或升级版本。最佳实践建议避免使用SELECT *,明确列引用,并提前检查表结构。原创 2025-07-18 16:54:54 · 369 阅读 · 0 评论 -
达梦数据库不兼容 SQL_NO_CACHE 报错解决方案
达梦数据库(DMDBMS)是国产关系型数据库,其语法体系与 Oracle 更为接近,并未实现 MySQL 的查询缓存机制,自然也不支持 SQL_NO_CACHE 这类专属于 MySQL 的语法。在 MySQL 中,SQL_NO_CACHE 是一个查询修饰符,用于告知数据库不要将此次查询的结果缓存到查询缓存(Query Cache)中。同时,也不会从查询缓存中读取数据。因此,在使用达梦数据库时,若 SQL 中存在 SQL_NO_CACHE 关键字,就会导致语法解析失败,抛出异常。原创 2025-07-16 14:55:10 · 368 阅读 · 0 评论 -
开源流程引擎Camunda简介
Camunda是一套独立运行的流程引擎系统,支持BPMN2.0、DMN和CMMN标准规范,用于业务流程建模和执行。其核心组件包括:ProcessEngine(负责流程解析和执行)、DecisionEngine(执行决策模型)、Modeler(图形化建模工具)、REST API(系统集成接口)和JobExecutor(任务调度)。相较于传统开发模式,Camunda将流程控制逻辑转移至引擎,前端只需处理界面交互,后端专注业务接口实现,引擎则自动管理流程状态、任务分配和接口调用顺序。原创 2025-06-26 17:16:22 · 596 阅读 · 0 评论 -
MyBatis 中的 resultType 与 resultMap:区别、使用场景及示例详解
在使用 MyBatis 进行数据库操作时,我们经常需要将查询结果映射到 Java 对象中。MyBatis 提供了两种主要的方式来进行结果映射:resultType 和 resultMap。本文将详细介绍这两者的区别、适用场景,并通过代码示例帮助你更好地理解和应用。原创 2025-06-25 16:57:58 · 780 阅读 · 0 评论 -
BeanUtil.copyProperties()进行属性拷贝时如何忽略NULL值——CopyOptions配置详解
配置项类型默认值说明booleanfalse是否忽略NULL值ignoreCasebooleanfalse是否忽略字段名称大小写booleanfalse是否忽略拷贝错误editableClass<?null限制目标对象类型String[]null要忽略的属性名数组overridebooleantrue是否覆盖已有值null字段名称映射关系。原创 2025-06-13 10:31:09 · 554 阅读 · 0 评论 -
SQL 中整数除法陷阱:为什么你的百分比总是 0%?
为了避免在 SQL 中遇到百分比或比率计算结果为 0% 的问题,务必记住在除法运算中,如果分子或分母可能导致小数结果,并且它们当前是整数类型,请务必使用 CAST 或 CONVERT 函数将其中的至少一个操作数转换为浮点数类型。这能确保数据库执行浮点数除法,从而得到精确的计算结果。原创 2025-06-12 14:07:41 · 367 阅读 · 0 评论 -
MySQL中高内聚原则的实践:如何设计清晰、可维护的数据库结构
表结构设计:按业务实体拆分,避免大宽表;视图设计:按维度划分,职责单一;存储过程/函数:功能专一,避免多功能混合;定期重构:发现低内聚结构及时调整。高内聚不仅是面向对象编程中的核心理念,在数据库设计中同样具有重要意义。只有坚持这一原则,才能让我们的数据库系统更加健壮、灵活、可持续发展。原创 2025-06-09 16:35:45 · 420 阅读 · 0 评论 -
【VMware】此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。
如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用。(1) 确认 BIOS/固件设置中启用了 Intel VT-x 并禁用了“可信执行”。找到Intel 相关设置:每个主板BIOS开启虚拟化不同,根据BIOS中关键词Intel(R) Virtualization Technology、Virtual、Virtualization、VT-X、SVM、虚拟化技术等,来找到VT设置进行开启。可以先做验证此电脑是否开启了虚拟化。原创 2025-06-09 09:18:48 · 793 阅读 · 0 评论 -
Doris 中聚合函数使用常见问题及解决方案
在 Doris 中使用聚合函数时,需要注意以下几点:数据类型匹配:确保过滤条件中的数据类型与表中的数据类型匹配。聚合函数要求:确保所有非聚合列都包含在 GROUP BY 子句中,或者所有列都必须是聚合函数的结果。使用 MAX() 聚合函数:在某些情况下,使用 MAX() 可以避免重复累加问题,同时保持数据的准确性。原创 2025-06-09 09:03:51 · 760 阅读 · 0 评论 -
BigInteger和Long的区别
“有符号选Long,无符号用BigInteger;性能优先看场景,超大计算不犹豫”。合理选择类型,既能避免程序崩溃,又能提升运行效率。原创 2025-04-18 08:48:45 · 1011 阅读 · 0 评论 -
窗口函数over()
PARTITION BY + ORDER BY → 分组内排序计算(如累计值)PARTITION BY + 窗口范围 → 分组内指定计算范围(如移动平均)原创 2025-04-18 08:44:44 · 646 阅读 · 0 评论 -
数据库主从复制
简单来说,它像一台摄像机,忠实记录所有对数据库进行修改的 SQL 语句(如 INSERT/UPDATE/DELETE)或表结构变更(如 CREATE/ALTER)等操作。),而非底层数据页的物理修改细节(这是 redo log 的特性)。其核心思想是通过将主库(Master)的数据变更异步/同步复制到从库(Slave),使从库与主库保持数据一致。GTID(全局事务标识符)是 MySQL 主从复制中用于唯一标识事务的机制,它解决了传统复制依赖 binlog 文件名和位置的痛点。原创 2025-04-16 15:00:00 · 1709 阅读 · 0 评论 -
Mybatis中dao(mapper)层几种传参方式
某些情况下,#{}和${}可以互相替换,但是有些情况下必须使用${},比如order by的字段是sql参数。#{} 占位符,相当于?,sql预编译,可以防止sql注入。2、${}非预编译(直接拼接sql,不能防止sql注入)1、 #{}预编译 (可防止sql注入)${} 原样替换,相当于sql拼接。二、dao层的四种传参方式 ↓。原创 2025-04-16 08:55:53 · 279 阅读 · 0 评论 -
使用 SQL CTE(公共表表达式)优化数据查询的实践
在数据分析和数据库管理中,SQL 查询的效率和可读性是至关重要的。随着数据量的不断增加,复杂的查询变得越来越难以管理和理解。为了解决这个问题,SQL 提供了一种强大的工具——公共表表达式(CTE,Common Table Expressions)原创 2025-04-16 08:50:15 · 327 阅读 · 0 评论 -
Trae如何使用插件Mybatis Log & MybatisX转换SQL语句?
字节出品的Trae作为VSCode的套皮开发前端非常顺手,但是为了白嫖无限量的Claude 3.7,还是尝试使用Trae开发Java。今天就说一下如何将插件Mybatis Log & MybatisX接入 Trae 查看转换后的SQL语句。原创 2025-03-21 08:24:42 · 585 阅读 · 0 评论 -
Mybatis和Mybatis-plus实现逻辑删除
什么是物理删除,什么是逻辑删除?物理删除就是直接干掉数据库的数据,无法再恢复回来。但在企业级项目中,物理删除已经非常少见,而是使用逻辑删除。逻辑删除本质上是个update操作,通过一个标记字段来识别某个数据是否被隐藏起来,但是对于用户来说看不到了自然以为就是删除了。原创 2025-03-20 17:39:58 · 735 阅读 · 0 评论 -
达梦数据库
DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。原创 2025-03-20 17:25:05 · 1878 阅读 · 0 评论 -
为什么不建议使用自增ID作为参与业务计算处理逻辑的字段?
自增ID是工具,不是答案原创 2025-03-13 17:10:09 · 914 阅读 · 0 评论 -
MySQL字符串处理神器:SUBSTRING_INDEX函数深度解析
SUBSTRING_INDEX 是MySQL中用于按分隔符截取字符串的核心函数,特别适合处理包含固定分隔符的文本数据(如日志、路径、标签等)。日志示例:[2023-08-20] ERROR=5003 Connection timeout → 输出:5003。大小写敏感:SUBSTRING_INDEX('A-B-C', 'b', 1) → 返回完整字符串。多字符分隔符:支持多字符分隔符,如SUBSTRING_INDEX(str, '||', 2)输入:"王慧(网络组)" → 输出:"王慧"原创 2025-03-13 17:00:56 · 966 阅读 · 0 评论 -
MySQL 索引失效案例:为什么你的 GROUP BY 没有走索引?
通过合理的设计索引和使用方法,90%的 GROUP BY 性能问题都能得到有效解决。原创 2025-02-14 15:54:37 · 895 阅读 · 0 评论 -
如何减少在创建库表结构时,频繁去添加字段的问题?
如果真的需要添加一些仅用于展示用的字段,而没有深入业务逻辑的字段,则可以在拓展字段中添加,但如果需要添加与业务逻辑强绑定的字段,还是需要添加,而不是写入拓展字段中。但是现在随着关系数据库理论的成熟和范式理论的出现,技术的逐渐成熟,存储成本逐渐降低,而性能优化成为更重要的考虑。由第三范式中引申出来的问题,需要对设计出的表字段进行适当的冗余,以减少多表查询,用空间换时间。简而言之,就是提前对业务进行了解和询问,提前与售前等人员进行沟通,或者在进行开发时,即使进行反馈和确认,减少后期因为返工带来的重复性工作。原创 2025-02-11 10:49:53 · 761 阅读 · 0 评论 -
ClickHouse SQL 查询中别名导致报错的问题分析与解决方案
ClickHouse作为一款高性能的列式存储数据库,在SQL查询方面有着独特的要求。对于别名的使用,开发人员需要格外谨慎,遵循一致性原则,避免列名重复等问题,以确保查询能够顺利执行并返回预期的结果。希望本文能为广大ClickHouse用户解决因别名使用不当而导致的报错问题提供有益参考。原创 2025-01-24 08:48:33 · 598 阅读 · 0 评论 -
前端发送request请求时,参数params和data的区别?
在前端开发过程中,当我们通过JavaScript或其框架(如Axios)向服务器发送HTTP请求时,经常会遇到需要传递参数的情况。根据不同的需求,这些参数可以通过params或data的方式进行传递。了解这两者的区别对于正确构建请求、确保数据准确传输至关重要。params通常用于GET请求中,它代表的是URL查询字符串中的键值对。当你使用params时,这些参数会直接附加到请求的URL后面,以“?”开头,多个参数之间用“&”分隔。原创 2025-01-20 16:31:31 · 3092 阅读 · 0 评论 -
MyBatis-Plus 分页插件配置的两种方式
如果你正在开发或维护一个基于 MyBatis-Plus 3.4.0 之前的项目,并且你的需求仅仅是分页功能,那么就足够了。对于 MyBatis-Plus 3.4.0 及之后的版本,官方推荐使用,因为它提供了更高的灵活性和更多的内置功能,可以根据实际需要轻松扩展应用的功能。原创 2025-01-10 08:58:19 · 2072 阅读 · 0 评论 -
Spring Boot--@PathVariable、@RequestParam、@RequestBody
RESTful是一种基于HTTP协议的软件架构风格,它用于设计网络应用程序接口(API)。REST代表“表述性状态转移”(Representational State Transfer),其核心思想是通过一组标准的操作和资源来实现客户端与服务器之间的交互。RESTful API 设计强调简洁、直观和易于理解,遵循无状态通信原则,使得开发者能够快速构建和维护分布式系统。RESTful 的基本原则无状态性(Stateless)原创 2025-01-02 18:29:01 · 726 阅读 · 0 评论 -
IDEA中如何使用Maven构建多模块项目?模块间如何相互调用?
在 IntelliJ IDEA 中使用 Maven 构建多模块项目(Multi-Module Project)是一个常见的开发场景,尤其适用于大型项目或需要将代码拆分为多个独立模块的项目。通过合理组织模块结构,可以提高项目的可维护性和扩展性。下文将详细说明如何IDEA 中使用 Maven 构建多模块项目以及模块间是如何相互调用的。通过以上步骤,你可以在 IntelliJ IDEA 中使用 Maven 构建一个多模块项目,并确保模块之间能够正确地相互调用。项目的 pom.xml:定义项目的整体结构和模块列表。原创 2025-01-02 18:24:50 · 1974 阅读 · 0 评论 -
VPN?隧道?跳板机?代理服务器?网络通信中的术语都是什么含义?
你是否在工作或生活中总是听到这些网络术语,VPN、隧道、代理服务器等等,不了解相关概念的朋友可能对此一头雾水,其实这些都是网络通信中涉及到的知识点。我们身处在互联网中,大部分信息的通知、交互、转发都依赖网络完成,那么信息如何安全、准确进行传递呢?这就和上述提到的术语有关了。防火墙(Firewall)是一种网络安全系统,它监控并控制基于预定义的安全规则进出网络的流量。防火墙可以是硬件设备、软件应用程序或两者的组合。原创 2024-12-26 16:46:51 · 1111 阅读 · 0 评论 -
Git如何设置和修改当前分支跟踪的上游分支
Git如何设置和修改当前分支跟踪的上游分支原创 2024-12-26 16:25:33 · 607 阅读 · 0 评论 -
返回NaN(Not a Number)的原因及解决办法
在这个修改后的公式中,nullif(l.sign_in_dur, 0) 会将 sign_in_dur 为零的情况转换为 NULL,从而避免了除以零的操作。对于 job_number 为 1 的记录,nullif(sign_in_dur, 0) 将 sign_in_dur 转换为 NULL,ifnull(l.busy_dur / NULL, 0) 将结果转换为 0,最终结果为 "0.00%"。这个公式计算的是 busy_dur 除以 sign_in_dur 的百分比。通过这种方式,可以避免除以零的情况。原创 2024-12-26 16:24:33 · 357 阅读 · 0 评论 -
cJSON学习笔记
JSON是一种轻量级的数据交换格式,常用于网络之间传输数据。它是一种文本格式,易于人阅读和编写,同时也易于机器解析和生成。原创 2024-12-26 16:09:06 · 691 阅读 · 0 评论 -
HTTP接口报错详解与解决 200,500,403,408,404
HTTP接口报错详解与解决 200,500,403,408,404原创 2024-12-19 19:09:21 · 2953 阅读 · 0 评论 -
黑马SpringBootWeb开发综合案例环境搭建
黑马SpringBootWeb开发综合案例环境搭建原创 2024-12-19 19:00:17 · 353 阅读 · 0 评论 -
数据库中常见的聚合函数
聚合函数是数据库查询中非常强大和有用的工具,可以帮助你快速汇总和分析数据。熟练掌握这些函数及其用法,将大大提高你的数据分析能力和效率。以下是一些关键点总结:作用: 数据汇总、统计分析、数据分组。好处: 高效性、简洁性、灵活性、可读性。注意事项: NULL 值处理、数据类型、子查询、窗口函数、性能考虑、结果精度。原创 2024-12-19 18:54:28 · 1060 阅读 · 0 评论 -
DAYOFMONTH和DATE_FORMAT
【代码】DAYOFMONTH和DATE_FORMAT。原创 2024-12-13 08:42:39 · 293 阅读 · 0 评论 -
SQL小技巧——UNION ALL/UNION创建临时表
我们都知道,在SQL中,UNION ALL / UNION的作用是将多个 SELECT 语句的结果合并成一个结果集,常见的使用场景是作为查询结果的拼接,比如下列语句,但实际上,UNION ALL / UNION也可以实现类似于创建临时表的功能。本文只是给出了一非常简单的例子,在实际的使用中可以根据情况再进行优化,但前提是替换的子查询的表所需的记录较少且固定,那么这个前提下一般不会替换业务表,可能是一些固定的对照表比如操作的n中情况的记录表等等。原创 2024-12-13 08:40:49 · 592 阅读 · 0 评论 -
nginx安装
From:xxx 这样的,是nginx的来源,配置文件中默认的端口为8080, 且nginx将在/usr/local/etc/nginx/servers 目录中加载所有文件。并且我们可以通过最简单的命令'nginx' 来启动nginx.配置文件前端放置文件路径打开nginx目录后,可以看到我们上面的使用 brew info nginx 查看信息所说的 server目录以及nginx.conf的配置文件,那么我们的nginx被安装到什么地方呢?原创 2024-12-12 17:11:12 · 1345 阅读 · 0 评论 -
MySQL各个版本新功能简介
目录MySQL 5.0MySQL 6.0MySQL 7.0MySQL 8.0MySQL 8.1MySQL 8.2MySQL 8.3MySQL 8.4原创 2024-12-06 08:52:35 · 1340 阅读 · 0 评论 -
安装MYSQL
首先使用了方法一,但是在终端输入后没有响应,且显示要输入密码,输入几次密码都显示错误后,上网搜索了解决方法仍未解决,但是。没有连接外网,无法申请连接到github,在森哥帮助下下载了ClashX,成功连接上了外网。经过森哥的点拨,明白出现该问题是由于上次下载的文件并没有进行安装,所以又一次出现了报错。由于方法一多次尝试无果,选择采用方法二的步骤,进行下载并安装MySQL。尝试按照课程里的教程,在idea中使用数据库,成功得到了连接!(后续在森哥进行帮助时发现了不对劲,重新下载了DMG文件)原创 2024-12-06 08:51:46 · 623 阅读 · 0 评论 -
数据库索引
employee_id”(员工编号,主键)、“employee_name”(员工姓名)、“department”(部门)等字段。数据库索引是一种数据结构,类似于书籍的目录,它能够帮助数据库管理系统(DBMS)迅速定位和访问数据库中的数据。= 567” 时,数据库系统可借助索引快速定位到员工编号为 567 的记录,而非遍历整个员工表来查找,大大提高了数据检索效率。树索引为例,它是一种平衡的多叉树结构,其节点存储索引键值以及指向数据行的指针(或存储子节点的引用)。例如,在一个存储员工信息的。原创 2024-12-06 08:39:28 · 681 阅读 · 0 评论 -
WITH语句还是子查询?
1.WITH语句(CTE)将查询分解成多个步骤,助于组织和简化复杂的查询逻辑支持递归查询,这对于处理层次结构数据非常有用CTE如果被多次引用,它的结果只会被计算一次,可以提高性能CTE如果只被使用一次,它的执行时间一般会长于同样逻辑的子查询CTE在执行时通常会被物化,即创建临时表用于存储WITH语句的结果,导致额外的I/O和内存并非所有数据库系统都支持CTE,尤其是较老的版本。例如,MySQL直到8.0版本才支持CTE。2.子查询子查询通常嵌套在主查询的FROM子句或WHERE。原创 2024-12-06 08:38:44 · 695 阅读 · 0 评论