首页 > 编程知识 正文

众鸟高飞尽孤云独去闲的意思,孤芳远影碧空尽的意思

时间:2023-05-05 20:54:12 阅读:22962 作者:1024

代码审查代码恶性循环:

没有一个小时codeRevew

2业务培训的直写代码

3没有时间填坑,却继续挖坑

好的程序员

第一颗星的程序员写计算机可以理解的代码。 第2星写自己的未来可以理解的代码。 第3星是别人写自我理解的代码。

程序员的自我修养

1 .写好代码

2技术水平不断提高

帮助三个人成长

代码审阅

维包括

1 .熵减少的过程,减少系统混乱

2 .团队成长,团队沟通文化培养。

3 .提高代码质量,工程师相互评审,消除知识盲点,提高代码质量

3 .提高代码规范度,通过代码评审发现纠正不规范的情况,形成良好的开发规范。

代码审阅方法(Review )

统一编码和设计规范的完整技术体系结构说明和用例不定期的Review会议小项目(3个月内) 10天1次,大项目(6个月以上) 15天1次。 开发前期密集点,后期可延长间隔,一个月配置一次。 Review工具:

Phabricator Facebook开源代码审阅工具。

Gerrit :由非常强大的代码审查代码托管的工具

CheckStyle :代码正则性检查工具

代码审查建议

不要在review中对对方讨论需求。 至少一个提交肯定评估的代码内容不应明确每个模块的联系人代码审查时应注意的方向维度

请注意逻辑执行先决条件校验和数据的合法性注释的有效性。 如何打印异常堆栈信息换行执行空的四个空格(.set ) )对于打印日志,禁止使用JSON工具将对象转换为字符串。 这是因为,如果某些get方法被重写,则打印日志可能会影响正常的业务运行,因为在转换过程中可能会抛出异常。 在发生异常时打印日志的信息必须包括业务参数的一部分。 鲁棒性和鲁棒性系统的鲁棒性是指1 .异常时、2 .特殊环境、3 .超时时

系统稳定运行的能力

鲁棒性:形容词robust:结实、强壮、结实、结实、有活力。

鲁棒性和鲁棒性一样吗?

n-left:0;text-align:left;">       应该是一样的。健壮性是意译,鲁棒性是音译,其实是一样的。

健壮性的维度

       1从架构方面:负载均衡,容灾能力

均衡负载

       负载均衡有名的公司,

              F5公司是应用交付网络(ADN-Application Delivery Networks)领域的全球领先厂商,命名含义: 系统公司具有非常强的稳定性,在各种复杂和异常情况下都能帮客户解决问题,同时也代表龙卷风的最高等级EF5情况下依旧能帮客户解决问题,显示公司的强大能力。

              负载均衡的定义:防止服务或者数据热点问题的出现,使得集群内的所有服务器的负载水平在同一个水平线上。

              软件负载:

              1).LVS(Linux Viritual Server),是由章文嵩主导的开源负载均衡项目,已经集成到了linux的内核中,实现了基于IP的数据请求负载均衡调度方案。

              2)VIPServer是阿里中间件开发的负载均衡产品,提供动态的域名解析,和负载服务,支持多业务单元同业务单元优先、同机房优先、同区域优先,并支持各种健康监测协议,支持精细的权重控制,提供多级容灾体系。

容灾能力

容灾能力包括4方面:熔断、限流、降级、灾备

熔断:服务全部停止响应以保护核心流程正常运行

限流:有策略的丢弃部分用户请求

降级:部分功能不可用,或用户体验被降级。

灾备:复制多份系统能力或者数据核心服务单点问题

容灾能力相应的软件

       Sentinel:阿里开源的项目,提供了流量控制,熔断、降级、系统负载保护等多个维度来保障系统服务的稳定性。

是一个轻量级的框架,依赖的内容不多。

       流控方式里有个warm up:指的是java在运行时是字节码在运行,如果一个模块的字节码在高频的被调用时,虚拟机会将该段字节码转为二进制文件,这样执行速度更快,但是如果流量太大时可能没有时间去做warmup,所以给预留了这个方式。

流控规则配置

sentinel的服务感知

是通过heartbeat(心跳包)来感知服务的健康。

如下是K8s的容灾

       2.从代码角度:   参数校验,异常处理,分支覆盖

       3.从环境方面:混沌工程,异地多活

2数据健壮性:

       数据健壮性的4个维度:主备准实时备份、逻辑删除、定时本地冷备份、定时云端离线备份

       主备准实时备份:快速切换服务的能力

       逻辑删除:杜绝物理删除

       定时本地冷备份:可以作为数据日志的快照

       定时云端备份:防地震,水灾等自然灾害。

代码的健壮性:主要包括6方面

所有的POJO类属性必须使用包装类数据类型,防止被设置默认值。定义DO/DTO/VO等pojo类时不要设置任何属性默认值。定义数据对象DO类时,属性类型要与数据库字段类型相匹配。在get和set方法中不要增加业务逻辑。禁止在pojol类中同时存在对应属性xxx的isxxx()和getxxx()方法

6)构造方法里禁止增加任何业务逻辑,如有初始化逻辑放在init方法中。

面向失败架构:是指在异常情况下的架构设计,主要包括4方面:网络抖动、服务超时、弱电断电、洪峰流量。

网络抖动:甚至断网,如何提示,恢复,切换。

        断电预案:UPS(Uninteruptible Power Supply)中文翻译为不间断电源。是一种含储能装置,以整流器、逆变器为主要组成部分,为变电站内监控系统等提供恒定电压和恒定电频的不间断电源。

        这种设备分为3种:1.被动后备式UPS电源;2在线互动式UPS电源3)双变换式UPS电源

        其中第三中最好也是最贵的。

服务超时:任何服务都要考虑超时没有返回的可能性。

弱电、断电:配置多个云,多地部署能力

洪峰流量:流量打爆服务器后的架构健壮性。

断网处理

面向失败设计

        从面向对象角度来看,面向失败的设计就是以“失败”为对象,天然为了处理失败而存在的设计思想。

在古代肌肉是力量,20世纪知识是力量,现在思维是力量。思维层次更高,更加全面的人更具竞争力。结构化思维、逆向思维、风险思维都非常重要,需要打开自己的思维来思考和面对失败的设计。

面向失败设计的核心理念:

任何环境都是不可信赖的,都需要对环境进行预处理任何外部依赖接口都有可能出错任何异常都需要响应和处理任何行为都需要日志记录的任何系统的上线都需要经过严酷的测试

健壮性测试

       健壮性测试包括4方面:功能测试、性能测试、稳定性测试、混沌工程

       功能测试:相信用户的一切可能行为,进行正确性验证

       性能测试:系统能够提供的最大服务级别的能力

       混沌工程:确定线上系统的故障恢复能力,混沌工程是在分布式系统上进行实验的学科,是一种未雨绸缪的心态。由薄弱环节,做到自我发现,在薄弱处放置一个炸弹控制爆炸半径评估损失和系统的自我修复能力。

              混沌工程的原则包括5个,1建立稳定状态的假设、2多样化显示世界事件、3在生产环境运行试验、4持续自动化运行试验、5最小化的爆炸半径

              混沌工程的4个步骤:

      

混沌工程的操作

       稳定性测试:确定系统长时间在正常压力情况下运行的有效性。

       测试覆盖率:包括代码覆盖率、条件判断覆盖、路径覆盖

ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。说白了asm是直接通过字节码来修改class文件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。