当前位置: 首页 > news >正文

代码规范性思考

表命名和设计

业务模块前缀;下划线分隔,体现业务含义;数据库字符集、字段名、类型、长度、默认值;一对一、一对多、多对多建表;注释清晰;良好的索引;

接口文档

swagger增强工具swagger-bootstrap-ui、Knife4j

通用出入参包装类

RestRequest<T>、RestResponse<T>

入参校验

@Validated注解、分组校验(如果文档严格,可使用不同BO,分组则用不上),可以使用通用嵌套即接口来做分组。

通用BO

详情和删除、批量删除等可采用通用BO,如IdBO、BatchIdBO。同个业务的新增、修改接口字段无变化可使用Upsert。

代码分层架构

基本都是api、common、client、service、business

全局异常及断言

采用全局异常+断言公共类可避免大量if/else和return,提高代码简洁性

公共类

公共类需要规范、审查,并通知到开发人员

关联数据完整性校验

配置后产生关联的关联数据,在入参时与配置做对比,提系统安全和健壮性。

删除再插入还是区分新增、更新、删除

各有优缺点,个人偏向于后面这种,好处是大部分业务数据是逻辑删除,且业务配置逐渐稳定,一个简单的修改要重新生成所有数据得不偿失,此外还有个好处是更新可控制到字段级别粒度,通过对比新旧字段值来控制是否更新数据。有利于减少数据量和数据库交互次数。

用户信息网关统一赋值

在请求头中设置用户数据

领域模型之核心业务层以及VO、DTO

核心业务层理解不够,不作描述。VO好处在于接口文档更清晰和精细数据返回、DTO数据库交互返回,常常替代VO。

实体模型转换

建议使用MapStruct,自动生成转换器,类似手动赋值,无需反射,减少性能损耗

自定义sql还是在业务实现(持久层框架增强工具)

关联表多,可以拿到主体分页数据后再到业务层去查询关联数据赋值。

公共字段赋值方案

有些框架自带,如mybatis-plus。如果使用tk-mybatis这种,要自己到mybais拦截器中实现

出参文档

如果严格的化,每个接口返回定义一个VO或DTO

代码扫描

感觉Alibaba Java Coding Guidelines挺好

缓存

看业务,一般不经常变动的配置类数据容易做缓存

分布式锁

重要操作的接口加上

接口调试及自测

swagge增强UI中自带,都是不完整。复杂点用postman

联调

热部署插件如Jrebel,偶尔出现奇怪的代码异常报错问题

相关文章:

代码规范性思考

表命名和设计 业务模块前缀&#xff1b;下划线分隔&#xff0c;体现业务含义&#xff1b;数据库字符集、字段名、类型、长度、默认值&#xff1b;一对一、一对多、多对多建表&#xff1b;注释清晰&#xff1b;良好的索引&#xff1b; 接口文档 swagger增强工具swagger-boots…...

TestProject Python SDK入门

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…...

服务器数据恢复—EMC Isilon存储中被误删的虚拟机数据恢复案例

服务器存储数据恢复环境&#xff1a; EMC Isilon S200集群存储&#xff0c;共三个节点&#xff0c;每节点配置12块SATA硬盘。 服务器存储故障&#xff1a; 工作人员误操作删除虚拟机&#xff0c;虚拟机中数据包括数据库、MP4、AS、TS类型的视频文件等。需要恢复数据的虚拟机通…...

华为安全Security认证,你了解多少?

华为安全Security 认证包含HCIA-Security, HCIP-Security,HCIE-Security。HCIA-Security 掌握中小型网络信息安全基础知识与相关技术&#xff08;华为防火墙技术、加解密技术、PKI 证书体系等&#xff09;&#xff0c;具备搭建小型企业信息安全网络的能力&#xff0c;实现中小企…...

自动驾驶规划-RTT* 算法 【免费获取Matlab代码】

目录 1.算法原理3.结果展示4.参考文献5.代码获取 1.算法原理 RRT(Rapidly-Exploring Random Trees) 快速随机扩展树&#xff0c;是一种单一查询路径规划算法。RRT 将根节点作为搜索的起点&#xff0c;然后通过随机撒点采样增加叶子节点的方式&#xff0c;生成一个随机扩展树&a…...

shell编程中的运算符的讲解

在Linux操作系统中也可以使用expr来进行一些数值的运算&#xff0c;expr接受表达式作为参数&#xff0c;并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境&#xff0c;expr 仍然是一个可行的选择。 如上图所示&#xff0c;是使用变量sum来承接加和…...

yudao-ui-admin-vue3 nginx配置

本文记录一个yudao-ui-admin-vue3 nginx配置信息 一、安装依赖 npm install 二、编译打包 npm run build:prod三、修改.env.prod文件 # 请求路径 VITE_BASE_URL=http://IP地址/admin-api四、 nginx配置 server {listen 80;server_name localhost...

vue3第四十节(pinia的用法注意事项解构store)

pinia 主要包括以下五部分&#xff0c;经常用到的是 store、state、getters、actions 以下使用说明&#xff0c;注意事项&#xff0c;仅限于 vue3 setup 语法糖中使用&#xff0c;若使用选项式 API 请直接查看官方文档&#xff1a; 一、前言&#xff1a; pinia 是为了探索 vu…...

PostgreSQL源码分析——索引扫描

这里&#xff0c;我们分析一下索引扫描的过程&#xff0c;以最简单的select * from t1 where a 100;语句为例&#xff0c;分析一下查询的过程。 postgrespostgres# \d t1;Table "public.t1"Column | Type | Collation | Nullable | Default ------------------…...

零基础入门学用Arduino 第四部分(一)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…...

x-anylabelimg如何标识人脸

软件地址&#xff0c;下载CPU版本就好 https://github.com/CVHub520/X-AnyLabeling/releases/tag/v2.0.0 一、打开软件选择的一个按钮&#xff0c;选择文件夹 二、选择模型运行 未下载的模型需要安全上网下载 选用Yolov6Lite_l-Face MeiTuan生成的文件格式&#xff0c;略作调…...

Element-ui中Table表格无法显示

Element-ui中Table表格无法显示 在使用过程中发现样式正常显示但是table就是不显示&#xff0c;研究了一段时间后&#xff0c;发现问题是项目结构的问题 当你创建vue和安装el的时候&#xff0c;一定要注意进入到正确的项目文件夹&#xff0c;如果在外面也出现一个package.jso…...

电信网关配置管理系统 del_file.php 前台RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…...

游戏心理学Day18

游戏玩家心理 在游戏世界中&#xff0c;设计师的工作总是围绕尽可能留住玩家要展开。在游戏创作时&#xff0c;设计师会假设目标诉讼的特点并激励迎合他们的需求&#xff0c;如果这种假设是经过实际调研之后做出的&#xff0c;那么就会比较接近实际情况而。如果这种假设是设计…...

发文章不违规的5种解决方案,非常适用,记得收藏!

之前以为使用AI写出来的文章&#xff0c;只要检测通过就不会违规&#xff0c;结果却还是让我有些失望。最近测试几款AI工具&#xff0c;测试结果都还是会存在违规情况&#xff0c;无法全文发布。 AI是听从人的指令&#xff0c;只能说是如何下指令&#xff0c;这个非常重要。至…...

【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】

文章目录 NEON 加减乘除NEON 加减乘除 下面代码是使用ARMv8汇编语言对向量寄存器v0-v31执行加、减、乘以及左移和右移操作的示例。 ARMv8的SIMD指令集允许对向量寄存器中的多个数据进行并行操作。v0和v1加载数据,对它们进行加、减和乘,左移和右移操作。最后,我们会将结果存储…...

[2024-06]-[大模型]-[Ollama]- WebUI

主要涉及要部署的前端webui是来源于:https://github.com/open-webui/open-webui 正常就使用: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-web…...

AI智能盒子助力中钢天源设备工厂升级安全防护

中钢集团安徽天源科技股份有限公司成立于2002年3月27日,是中央企业中国中钢股份有限公司控股的上市公司&#xff0c;主导产品为永磁铁氧体器件、钕铁硼器件、四氧化三锰、锶铁氧体预烧料及各类磁选机等。 在中钢天源智能化升级过程中&#xff0c;采用并定制开发一系列厂区安全…...

RNN的变种们:GRULSTM双向RNN

上篇笔记记录到RNN的一个缺点&#xff1a;训练时会出现梯度消失&#xff0c;解决的办法是找到一个更优的计算单元。这里也有GRU和LSTM。 GRU&#xff08;Gated Recurrent Unit&#xff09;门控训练网络 什么是门控机制&#xff1f;就是对当前的输入进行一个筛选。门打开&…...

Linux网络-HttpServer的实现

文章目录 前言一、请求报文的解析URL的解析 二、响应报文的发送Content-LenthConten-TypeCookie和Set-CookieCookie的风险 三、尝试发送一个HTML网页404网页Location 重定向 四、浏览器的多次请求行为总结 前言 之前我们简单理解了一下Http协议&#xff0c;本章我们将在LInux下…...

GPT-4o的综合评估与前景展望

如何评价GPT-4o? GPT-4o作为OpenAI推出的最新一代大型语言模型&#xff0c;其性能、功能和应用前景都备受关注。以下是对GPT-4o的综合评估与前景展望&#xff1a; 一、技术性能评估 响应速度&#xff1a;GPT-4o在响应速度上有了显著提升&#xff0c;能够在极短的时间内对输入…...

私人云盘(自动云同步)

一、项目简介 模仿小米的云服务&#xff0c;实现一个通过TCP实现的私人云盘&#xff0c;因为能力有限&#xff0c;所以只实现自动云同步这一个功能&#xff0c;具体可以分为三个小功能&#xff0c;即保持云端和终端数据一致、实现文件的上传与下载以及手动同步 二、涉及到的知…...

【CMake】Linux 下权限丢失与软链接失效问题

【CMake】Linux 下权限丢失与软链接失效问题 文章目录 【CMake】Linux 下权限丢失与软链接失效问题问题概述解决方法1 - 安装目录2 - 安装文件3 - 手动指定 使用 Linux 下原生命令行注意事项参考链接 问题概述 一般使用 CMake 安装&#xff0c;在 Windows 平台不会出问题&…...

内部类介绍

内部类&#xff08;Inner Class&#xff09;是在另一个类的内部定义的类。它可以访问外部类的所有成员&#xff0c;包括私有成员。内部类有两种主要形式&#xff1a;局部内部类&#xff08;定义在方法内部&#xff09;和成员内部类&#xff08;定义在类的内部&#xff0c;但不在…...

【CVPR2021】LoFTR:基于Transformers的无探测器的局部特征匹配方法

LoFTR&#xff1a;基于Transformers的局部检测器 0. 摘要 我们提出了一种新的局部图像特征匹配方法。我们建议先在粗略级别建立像素级密集匹配&#xff0c;然后再在精细级别细化良好匹配&#xff0c;而不是按顺序进行图像特征检测、描述和匹配。与使用成本体积搜索对应关系的密…...

总结一下 C# 如何自定义特性 Attribute 并进行应用

前言 Attribute&#xff08;特性&#xff09;是一种用于为程序元素&#xff08;如类、方法、属性等&#xff09;提供元数据信息的方法。 特性是一种声明式的信息&#xff0c;附加到程序元素上&#xff0c;提供额外的数据用于描述和控制这些元素的行为。 在编译和运行时&…...

三种暴露方法和引入方式

1.分别暴露 export ...export...用于按需导出一个或多个模块&#xff0c;在导入时需要使用花括号指定导入的模块名称&#xff0c;例如import { a, b } from module module.js中 export let a 1 export function b(){console.log(hello,vue) } 2.统一暴露 export { ...}用于统…...

“Git之道:掌握常用命令,轻松管理代码“

目录 1. 初始化和配置 2. 提交和更新 3. 分支和合并 4. 查看和比较 5. 远程仓库 6. 文件操作命令 1. 初始化和配置 git init&#xff1a;在当前目录初始化一个新的Git仓库git config&#xff1a;配置Git的全局或局部选项git clone&#xff1a;从远程仓库克隆一个本地副本…...

Linux vim 文本编辑 操作文本 三种模式

介绍 vi 是一个经典的行编辑器&#xff0c;支持模式编辑&#xff08;包括普通模式、插入模式和命令模式&#xff09;。 vim 保留vi核心功能的基础上&#xff0c;增加了多级撤销、语法高亮、插件支持等高级功能。 两者的最大区别&#xff0c;简单的来说vim就是vi的增强版 三…...

JavaFX DatePicker

JavaFX DatePicker允许从给定日历中选择一天。DatePicker控件包含一个带有日期字段和日期选择器的组合框。JavaFX DatePicker控件使用JDK8日期时间API。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.DatePicker; import j…...

深圳网站建设公司选全通网络/杭州seo俱乐部

注&#xff1a;本分类下文章大多整理自《深入分析linux内核源代码》一书&#xff0c;另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等&#xff0c;只是为了更好地理清系统编程和网络编程中的一些概念性问题&#xff0c;并没有深入地阅读分析源码&a…...

一个做任务赚钱的网站/saascrm国内免费pdf

一.time模块 import time # 当前时间戳 print(time.time()) # 获取当前时间 print(time.localtime()) # 获取格式化时间 print(time.strftime("%Y-%m-%d %H:%M:%S"))二.datetime模块 import datetime # 获取当前日期 print(datetime.date.today()) print(datetime.…...

长沙专业的网站设计/不死鸟分享友情链接

粗略看了一下&#xff0c;感觉跟Bing API的作用差不多 所以先跳过了...

企业做网站的注意事项/精准营销的概念

复习Python的第十天 复习Python的第十天习题11 提问加分习题11Python2的raw_input 实现的功能raw_input 与 input的区别raw_input 与input的联系从 raw_input 到 input 习题11: 提问 现在要做的是把数据读到我的程序里边去。即学习读入用户的输入。 一般软件做的事情主要就是…...

wordpress 常用小工具/发布软文的平台有哪些

连接Oracle数据库需要Oracle数据访问组件&#xff08;ODAC&#xff09;。 1. 下载ODAC&#xff1a;http://www.oracle.com/technetwork/cn/database/windows/downloads/index-101312-zhs.html 建议使用xcopy版本。该版本中已经包含了下面这些组件。 Oracle Data Provider for .…...

springboot快速搭建网站/页面关键词优化

以植物大战僵尸为例&#xff1a; 用到的工具&#xff1a;spy2.7 用于读取窗口的文件句柄。Cheat Engine6.5这个工具用于读取内存地址 1 import win32process 2 import win32con3 import win32api4 import ctypes 5 import win32gui 6 import time7 8 PROCESS_ALL_ACCESS(0x000F…...