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

阿里巴巴 Java 开发手册--学习(四)

工程结构

    工程结构之应用分层

         1、( 分层异常处理规约 ) 在 DAO 层,产生的异常类型有很多,无法用细粒度的异常进行 catch ,使用    catch(Exception e) 方式,并 throw new DAOException(e) ,不需要打印日志,因为日志在 Manager / Service 层一定需要捕获并打到日志文件中去,如果同台服务器再打日志,浪费性能和存储。在 Service 层出现异常时,必须记录出错日志到 磁盘,尽可能带上参数信息,相当于保护案发现场。

工程结构之二方库依赖

         1、定义 GAV 遵从以下规则:

            1) GroupID 格式: com.{公司/BU }.业务线.[子业务线],最多 4 级。
说明: {公司/BU} 例如: alibaba/taobao/tmall/aliexpress 等 BU 一级; 子业务线可选。
正例: com.taobao.jstorm 或 com.alibaba.dubbo.register
            2) ArtifactID 格式:产品线名-模块名。语义不重复不遗漏,先到中央仓库去查证一下。
正例: dubbo-client / fastjson-api / jstorm-tool
            3) Version:二方库版本号命名方式:主版本号.次版本号.修订号

        2、赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。

工程结构之服务器

         1、 高并发服务器建议调小 TCP 协议的 time_wait 超时时间。

        2、调大服务器所支持的最大文件句柄数

        3、给 JVM 设置-XX:+HeapDumpOnOutOfMemoryError 参数,让 JVM 碰到 OOM 场景时输出dump 信息。

        4、在线上生产环境, JVM 的 Xms 和 Xmx 设置一样大小的内存容量, 避免在 GC 后调整堆大小带来的压力。    

        5、    服务器内部重定向使用 forward; 外部重定向地址使用 URL 拼装工具类来生成, 否则会带来 URL 维护不一致的问题和潜在的安全风险。

相关文章:

  • Selenium入门之元素的基本定位以及操作
  • 阿里规约插件的安装和使用
  • Tomcat结构及处理请求过程
  • Spark Rdd coalesce()方法和repartition()方法
  • 基于Oracle的SQL优化--学习(一)
  • 基于Oracle的SQL优化--学习(二)
  • MySQL案例-show fileds from 提示无权限
  • B+树的数据结构理解
  • 基于Oracle的SQL优化--学习(三)
  • 打 spice 的 deb 格式安装包的时遇到的问题和解决方法
  • 基于Oracle的SQL优化--学习(四)
  • 基于Oracle的SQL优化--学习(五)
  • 基于Oracle的SQL优化--学习(六)
  • (转载)hibernate缓存
  • 基于Oracle的SQL优化--学习(七)
  • codis proxy处理流程
  • co模块的前端实现
  • CSS 三角实现
  • golang 发送GET和POST示例
  • Invalidate和postInvalidate的区别
  • magento 货币换算
  • nodejs:开发并发布一个nodejs包
  • springboot_database项目介绍
  • springMvc学习笔记(2)
  • Vue 2.3、2.4 知识点小结
  • 不上全站https的网站你们就等着被恶心死吧
  • 从伪并行的 Python 多线程说起
  • 仿天猫超市收藏抛物线动画工具库
  • 前端设计模式
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小李飞刀:SQL题目刷起来!
  • 智能合约Solidity教程-事件和日志(一)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (javascript)再说document.body.scrollTop的使用问题
  • (libusb) usb口自动刷新
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (蓝桥杯每日一题)love
  • (一)appium-desktop定位元素原理
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net Winform开发笔记(一)
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net环境下的缓存技术介绍
  • ?
  • @31省区市高考时间表来了,祝考试成功
  • @Data注解的作用
  • [ SNOI 2013 ] Quare