近期一些开发规范上的问题记录

Java开发规范学习--日期和时间 近期,阿里巴巴发布了《Java开发手册(泰山版)》。 摘录部分官网的说明 《Java开发手册》始于阿里内部规约,在全球Java开发者共同努力下,已成为业界普遍遵循的开发规范。 手册涵盖编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程规约、设计规约七大维度。 此次泰山版发布,将带来三大亮点:新增5条日期时间规约;新增2条表别名sql规约;新增统一错误码规约。 阿里在2016年12月7日首次向业界开放《Java开发手册》以来,获得了绝大部分开发者的认可,目前已经成为行业的事实标准。很多公司直接引 阅读详情

1.log打印

一定要在接口调用处和数据返回处加上log打印调用方法名和出入参,方便日志排查。
在业务逻辑开发处,对一些关键点进行日志打印,方便在逻辑处理时进行问题排查。
日志需要精简,不需要过多,能简单明确定位到问题即可。

2.精度问题

普通的Double类型直接做加减乘除的时候会出现精度缺失,需要用用BigDecimal类。

    public double add(double d1,double d2){ 
        BigDecimal bd1 = new BigDecimal(Double.toString(d1)); 
        BigDecimal bd2 = new BigDecimal(Double.toString(d2)); 
        return bd1.add(bd2).doubleValue(); 
    }

    public double sub(double d1,double d2){ 
        BigDecimal bd1 = new BigDecimal(Double.toString(d1)); 
        BigDecimal bd2 = new BigDecimal(Double.toString(d2)); 
        return bd1.subtract(bd2).doubleValue(); 
    } 

        public double mul(double d1, double d2){        // 进行乘法运算
         BigDecimal b1 = new BigDecimal(d1);
         BigDecimal b2 = new BigDecimal(d2);
        return b1.multiply(b2).doubleValue();
     }

    public double div(double d1,double d2,int scale){ 
        BigDecimal bd1 = new BigDecimal(Double.toString(d1)); 
        BigDecimal bd2 = new BigDecimal(Double.toString(d2)); 
        return bd1.divide  
               (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); 
    }

3.适当简化参数

个别数据库表使用MongoDB,由于字段较多,但是可能业务字段并不是很多,所以在使用MongoDB查询的时候,可以根据业务逻辑在查询的时候进行字段精简,以免在VO转换的时候,beancopy出现性能耗时问题。

        Query query = new Query(new Criteria().andOperator(criteriaList.toArray(new Criteria[]{})));
        query.fields().include("A")
                .include("B")
                .include("C")
                .include("D")
                .include("E")
                .include("F")
                .include("G")
                .include("H")
                .include("I")

不断完善中。。。。

教育系统支付逻辑漏洞分析与防御实践 业务逻辑漏洞是Web安全中的重要威胁,特别是支付系统的逻辑缺陷可能导致直接经济损失。这类漏洞不同于传统注入攻击,其核心在于业务流程设计缺陷,攻击者通过篡改参数或绕过流程实现非预期操作。在教育信息化场景中,支付模块的折扣计算、金额校验等环节常出现服务端验证缺失问题。以典型的EDUSRC平台漏洞为例,攻击者通过修改前端折扣参数实现低价购买,反映出信任边界模糊和校验机制缺失等安全设计问题。防御方案需遵循服务端计算原则,实施参数签名验证,并建立支付风控模块。支付系统安全需构建分层防御体系,从前端展示层到业务逻辑层实 阅读详情

相关推荐

华为云Stack应急预案实战:从IaaS到PaaS的故障场景与恢复指南

本文详细解析华为云Stack应急预案在IaaS到PaaS层的故障场景与恢复实践,涵盖计算节点故障、存储链路中断等典型问题。通过标准化操作流程和实战案例,帮助企业在突发故障时快速恢复业务,确保高可用性。华为云Stack的应急预案体系经过金融、政务等严苛场景验证,恢复时间指标(RTO)控制在30分钟以内。

weixin_33724059的博客 373

自己规定的开发规范

代码规范每家都有, 可发现开发的时候执行力很差. 所以自己小结了一下具有"可操作性"的规定. 呵呵. (备注: 感谢几位朋友的关注, 我写这个帖子, 更关心"可操作性的"的程度, 接下来对项目实际开发中如何"操作"来说明一下.)   1/ 所有文件编码为utf-8 [可以写个小程序来遍历文件夹]2/ 所有操作的入口都必须log开始和结束时间, 并记录功能点名称 及功能负责人[可以由测试的MM...

happyforever82 241

超越界面设计:GUI Guider与LVGL在STM32F103上的系统集成与架构思考

本文探讨了GUI Guider与LVGL在STM32F103微控制器上的系统集成与架构设计,重点分析了工程模块化组织、内存管理优化、硬件驱动接口设计以及FreeRTOS多任务集成。针对STM32F103ZET6的资源限制,提供了实用的移植策略和性能优化方案,帮助开发者构建高效、可维护的嵌入式GUI系统。

j2k3l4的博客 921

awesome-copilot 中的 salesforce-expert:用一份系统提示词把 Salesforce 企业级开发规范装进 Copilot Agent

在 GitHub Copilot 的自定义 Agent(`.agent.md`)体系里,`awesome-copilot` 仓库的 [salesforce-expert.agent.md](https://link.gitcode.com/i/4794bc0f299056cf0dd65b482d83302a) 是一个典型的"角色 + 硬约束"型专家 Agent:它把 Salesforce 平台的

gitblog_00342的博客 447

树莓派4B网线直连Windows全流程:从IP查询到SSH登录避坑指南

本文提供了一份详细的树莓派4B通过网线直连Windows电脑的实战指南。核心步骤包括配置Windows网络共享、查询树莓派IP地址以及通过SSH进行安全登录与初始配置。文章深入解析了直连的网络原理,并重点分享了使用CMD命令和工具定位IP、避免常见错误的避坑技巧,帮助用户在没有显示器或路由器的环境下快速完成树莓派初始化。

grape的博客 1080

UG/NX二次开发实战:用Python脚本批量更新100个零件参数,解放你的双手

本文详细介绍了如何利用NXOpen Python API进行UG/NX二次开发,实现批量更新100个零件参数的自动化流程。通过环境配置、框架设计、核心代码实现及性能优化,帮助工程师高效完成参数化设计任务,显著提升工作效率。

weixin_28694169的博客 276

5个实战技巧:用OpenSpec构建企业级AI开发规范体系

OpenSpec是一款面向AI编码助手的规范驱动开发(SDD)框架,通过结构化的工作流帮助开发团队与AI助手达成共识,在编写代码前明确需求、设计和技术方案。不同于传统文档工具,OpenSpec将规范嵌入到开发流程中,实现"先达成共识,再自信构建"的高效协作模式。 ## 项目定位与价值主张 在AI编码助手日益普及的今天,团队面临一个核心挑战:如何确保AI生成代码符合项目规范、架构设计和业务需求?

gitblog_00210的博客 335

Python气象数据处理实战:用PyCINRAD轻松绘制雷达PPI图像(附避坑指南)

本文详细介绍了如何使用Python库PyCINRAD处理中国CINRAD系列天气雷达的基数据,并绘制专业的PPI图像。内容涵盖从环境配置、数据读取、核心绘图到高级定制与批量处理的完整流程,并针对安装依赖、中文乱码、数据范围等常见问题提供了实用的避坑指南,帮助气象工作者高效完成雷达数据可视化。

dog123的博客 221

家乡的IT行业现状——温水煮青蛙

下一步该迈向何方,是如履薄冰还是铿锵有力,是浅尝辄止还是一往无前,一切都不得而知

记录工作生活中的学习笔记和心得体会 563

Aruco标签定位、测距、三维位置估算 opencv应用

摄像头要一开始对准aruco标签才开始运行。+ 相机标定文件(参考我的上篇文章)+ aruco标签6*6。

dgut_guangdian的博客 4221

GameFramework框架详解之 Network网络框架

NetworkManager只负责维护NetworkChannel,实际的有种我们简历网络连接的也是NetworkChannel作为一个网路频道,这样管理起来比较方便,比如:一个游戏可能有多个网络连接,那么我们建立多个网络频道即可,或者当我们一个网络频道断线后,我们可以直接再新建一个,防止数据混乱。/// /// 网络管理器。/// /// 网络频道。/// 用户自定义网络错误事件。/// 检查是否存在网络频道。/// 获取网络频道。/// 获取所有网络频道。

TxNet 3366

【亲测免费】 Lin-CMS-Flask:基于 Flask 的简洁实用 CMS 解决方案

Lin-CMS-Flask 是一个基于 Python 的 Flask 框架实现的简洁且实用的内容管理系统(CMS)后端项目。该项目旨在帮助开发者提高 CMS 的开发效率,采用前后端分离的设计理念,使得开发更为灵活和高效。 ## 1. 项目基础介绍和主要编程语言 本项目是 Lin CMS 后端的 Flask 实现,主要使用 Python 语言开发。Lin CMS 是由林间有风团队经过大量项目实践

gitblog_00624的博客 516

网神 SecGate 3600 防火墙 app_av_import_save文件上传漏洞(含批量验证poc)

网神 SecGate 3600 防火墙 app_av_import_save文件上传漏洞(含批量验证poc)

weixin_43567873的博客 296

对目前小组开发模式的一些想法和意见

今天和cc哥讨论了近期小组开发的一些问题和想法. 最后受到了一些启发. 基于目前无法完全实现完全的面向对象编程的设计和实现模式。也基于我对前段时间的总结,我想到了一下几点,可能可以被应用到小组团队的建设中,作为一种开发规范也好,共同认识也好,因为我觉得这些思想能够使我们接下去的工作更顺利更清晰减少返工。 以下的一些原则,有些与面向对象的思想有关有些无关只是一些开发规范或单纯只是我的一些想法而...

weixin_30278311的博客 505

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

量化实现难:别被“近期”工具带偏,先检查规则和流程

量化实现的难点常常不在某段代码,而在规则是否稳定、流程是否连续、参数是否有明确交易含义。AI 可以帮助回看代码逻辑、发现跳步和重复连接,但检查必须围绕原始规则和可验收结果展开。

LadenKiller的博客 180

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

从技术黑话到可复用知识:构建开发者的事件记录体系

在软件开发和系统运维领域,知识管理与经验沉淀是提升工程效能的核心环节。其原理在于将个体或团队在解决具体问题、优化系统性能过程中的隐性知识,通过结构化的方式转化为显性、可检索、可复用的资产。这一实践的技术价值在于能显著降低同类问题的“再认”成本,固化有效的排查路径与决策逻辑,并最终构建起连接个人经验与团队协作的知识网络。常见的应用场景包括线上故障复盘、性能优化追踪、部署发布记录以及技术决策归档。通过引入“环境指纹”、“关键线索”等结构化要素,并配合标签化分类与关联链接,开发者可以将偶然的“高光时刻”或“踩坑现

weixin_30552811的博客 429

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AI时代开发者转型:从执行者到问题定义者

在AI技术加速渗透软件行业的背景下,许多开发者开始感受到“体力型脑力劳动”被快速压缩,基础CRUD、模板化脚本和重复性数据处理正被大模型高效替代。这并非某个人的困境,而是整个技术岗位价值结构正在重构:执行效率不再稀缺,定义问题、系统设计与工程化交付能力成为新的护城河。从RAG检索增强生成到Agent智能体搭建,从AI辅助编码到代码审查与测试生成,掌握将AI能力嵌入可观测、可回滚工作流的工程方法,才能让技术人从被动回应需求转向主动创造价值。本文基于一线实践,拆解AI时代的能力模型与转型路径,帮助开发者结合真实

congsikuai0611的博客 402

结束也是开始:字节跳动半年工作体验

结束也是开始:字节跳动半年工作体验

冷月心的博客 4692

AI科研失败实验报告:价值分析、记录方法与实操指南

在人工智能研究领域,实验可复现性是确保科研成果可靠性的基础技术概念。其核心原理在于通过标准化的记录和验证流程,保证不同研究者能够在相同条件下获得一致结果。这一原理的技术价值体现在避免资源浪费、加速科研进程和构建可信知识体系。在实际应用中,实验可复现性面临数据版本管理、环境配置差异和实现细节披露等挑战。针对这些挑战,系统化的失败实验记录与分析成为关键解决方案。通过建立完整的实验记录工具链,包括版本控制、结构化模板和量化分析框架,研究者能够将负面结果转化为宝贵的经验资产。这种方法不仅提升了科研透明度,更重要的是

weixin_34417183的博客 498

实习心得记录——撷取瞬间芳华,见证生命成长

2014/07/07  今天是我进入亚信实习的第一天,我按照之前预约的时间准时到达公司。早上我在学校乘坐专线4到员村四横路,然后在转239,但是我却不知道该趟239竟然是短线,坐了一站就叫全部下车,不经过华景路口。能有什么办法呢?另外再等239吧?可是等着等着却没有车来,干脆我就走路过去了。路途有点远,重要的是天气很热,我边走边流汗,走到公司附近时,我已经汗流满面。。。我在外面稍微休息缓冲一下,

沉思录_xjg 845

Ruoyi-AI项目文件上传问题分析

Ruoyi-AI是基于Ruoyi-Plus框架开发的AI聊天和绘画功能开源项目。近期在该项目中发现了一个需要关注的文件上传问题,可能会影响系统的安全性。 ## 问题原理分析 该问题的核心在于文件上传功能需要加强安全校验机制。具体问题出现在两个关键代码文件中: 1. ChatController.java中的/audio接口直接接收用户上传的文件 2. SseServiceImpl.java中...

gitblog_07966的博客 435

debug目录在哪里_Debug 是门艺术

【这是一猿小讲的第78篇原创分享】最近想结合发生在身边码农身上的一些小故事,尝试表达一个观点“Coding 是门技术,Debug 是门艺术”。上期的分享《Coding 是门技术》主要通过引入身边 Code farmer 撸码的一些真实故事,掰扯了一下开发规范以及重构可以改变代码的设计的理念,并且文末我又尝试总结了,人人皆知的一个看似专业而又非专业的撸码套路(一篇流水账,而却忘了升华,...

weixin_39684495的博客 974

未来展望:chadstr.h的 roadmap 与社区贡献指南

Chad Strings(chadstr.h)是一个革命性的C语言字符串处理库,它通过单一`str(...)`宏简化了字符串操作,让C语言字符串处理变得前所未有的简单和强大。这个开源项目正在快速发展,我们制定了清晰的路线图和社区贡献指南,欢迎所有开发者加入我们的Chad字符串革命!🚀 ## 📈 项目发展路线图 ### 近期目标:v1.0稳定版本 我们的首要目标是发布chadstr.h的第

gitblog_00972的博客 857

轻量级现代Web栈:Trixion 介绍

轻量级现代Web栈:Trixion 介绍 Trixion 是一个超轻量级的现代Web栈,其目标是为用户提供一个极其轻量的包,同时支持最新的开发规范。该项目主要使用 JavaScript 语言进行开发。 项目基础介绍 Trixion 项目致力于在保证功能全面的同时,将打包后的体积控制在约 15KB 左右。它集成了大部分 React 和 Redux 的功能,包括组件化UI、状态管理、路由等,但仅依赖于...

gitblog_01011的博客 370

c++输出txt格式循环一组数据后换行再循环一次_研发协同平台数据库死锁处理及改进...

源宝导读:数据库死锁是高并发复杂系统都要面临课题,处理死锁问题没有一招制敌的标准方法,需要具体问题具体分析。本文将基于研发协同平台遇到的死锁案例,介绍从监控、分析到处理的完整过程和经验总结。一、背景 研发协同平台使用的技术栈大体是.NET Core + EFCore + SQLServer, 周边还有一些第三方组件, 如Redis、Jenkins、Gitlab、Sonar。整体...

weixin_39932947的博客 117

springboot使用SHA256加密算法对接口访问控制

使用场景 由于业务系统较多,且存在很多个提供给第三方系统的查询接口,第三方系统属于外部系统,个别系统在调用内部系统接口时可能存在安全风险,在周五项目组评审后决定,在对外提供的接口中,请求方需要添加私钥请求校验,我方使用 SHA256 算法计算签名,然后进行Base64 encode,最后再进行urlEncode,来得到最终的签名。周末闲来无事,简单研究一波(基于内网中其他系统已有的类似功能,结合外网资料)。 学习使用 创建一个简单的springboot项目,目录结构如下: 由于并不是对所有接口进行过滤验证

CodersCoder的博客 9030
上一篇: Command line is too long
下一篇: Java常用excel导出实现
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值