dubbo设计实现的健壮性】的更多相关文章

Dubbo 作为远程服务暴露.调用和治理的解决方案,是应用运转的经络,其本身实现健壮性的重要程度是不言而喻的. 这里列出一些 Dubbo 用到的原则和方法. 日志 日志是发现问题.查看问题一个最常用的手段.日志质量往往被忽视,没有日志使用上的明确约定.重视 Log 的使用,提高 Log 的信息浓度.日志过多.过于混乱,会导致有用的信息被淹没. 要有效利用这个工具要注意: 严格约定WARN.ERROR级别记录的内容 WARN 表示可以恢复的问题,无需人工介入. ERROR 表示需要人工介入问题.…
问题定义 app发布后经常容易出现各种诡异的crash, 这些crash固然可以通过各种崩溃分析服务去定位. 但是的确很影响用户体验. 在crash分类中有一类是后端接口引发的. 比如常见的引发app crash的原因 接口自身变更, 接口失效或者超时, 比如用户进地铁 接口格式变更. 字段缺失 接口内容变更, int string格式搞错了. 某些字段原本是有值后来就变成了null 一旦出了问题, 后端背锅或者做兼容是常见的方案. 但是对于app自身来说,也需要加强健壮性测试. 健壮性的英文名…
最近出了2个类似问题,此处写下,以作为警醒 问题1: 背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动 需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制.用户等级和代金券等级相同时,用户可领取到这张代金券:否则代金券显示"等级不符不可领取". 于是我设计用例时这样的: 代金券领取等级: 代金券1(领取等级0),g1(领取等级1) 用户等级:user1(用户等级go) , user2(用户等级g1) 即可以实现以下场景: user1 -->…
文本将介绍 CSS 媒体查询中新增的几个特性功能: prefers-reduced-motion prefers-color-scheme prefers-contrast prefers-reduced-transparency prefers-reduced-data 利用好它们,能够很好的提升我们网站的健壮性与可访问性! 互联网发展到今天,对于我们的前端而言,我们的关注点不应该仅仅是我们产出的页面能不能用,也需要更多的去关注我们的页面好不好用,有没有照顾到更多的用户群体? 要知道,截至 2…
这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析有缺陷的xml文件 3.regex    更强大的正则表达式引擎 1.cchardet cchardet模块用于检测文本的编码. 安装后,如果服务器不发送网页.xml的编码(这种情况很罕见),InfoPi会调用cchardet检测编码. Linux安装命令: sudo pip3.4 install…
strcpy   函数的原型是: char * strcpy(char * strDest,const char * strSrc);    功能:把从strSrc地址开始且含有NULL结束符的字符串复制到以strDest开始的地址空间,返回指向strDest的指针. 说明:strSrc和strDest所指内存区域不可以重叠且strDest必须有足够的空间来容纳strSrc的字符串. 与strncpy   函数进行对比: strncpy  函数的原型是: char * strncpy( char…
转载:https://iluhcm.com/2018/02/27/design-an-elegant-and-powerful-android-webview-part-two/ (这篇文章写得有点晚,请谅解~) 前言 在上文<如何设计一个优雅健壮的Android WebView?(上)>中,笔者分析了国内WebView的现状,以及在WebView开发过程中所遇到的一些坑.在踩坑的基础上,本文着重介绍WebView在开发过程中所需要注意的问题,这些问题大部分在网上找不到标准答案,但却是WebV…
转接:https://iluhcm.com/2017/12/10/design-an-elegant-and-powerful-android-webview-part-one/ 前言 Android应用层的开发有几大模块,其中WebView是最重要的模块之一.网上能够搜索到的WebView资料可谓寥寥,Github上的开源项目也不是很多,更别提有一个现成封装好的WebView容器直接用于生产环境了.本文仅当记录在使用WebView实现业务需求时所踩下的一些坑,并提供一些解决思路,避免遇到相同问…
一十一 发表于 2018-03-02 09:10:08 TestOps   最具影响力的测试运维一体化综合平台. DevOps实现了从代码到服务的快速落地,而TestOps集成了DevOps效率,更是将质量与过程完美的体现. 1)介绍 我在2017年阅读了许多有趣的书籍,这对我影响很大. 其中最好的是Nassim Nicholas Taleb的<Fooled by Randomness>,黑天鹅和防空洞,这也许是最重要的,尽管如果不阅读剩余的两部分就不能完全理解. Taleb有一个非常独特的原…
使用 const  提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的 魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是 constant 的缩写, “恒定不变”的意思.被 const 修饰的东西都受到强制保护, 可以预防意外的变动,能提高程序的健壮性.所以很多 C++程序设计书籍建议:“Use const wheneve…
转:如何设计一个优雅健壮的Android WebView?(下) 前言 在上文<如何设计一个优雅健壮的Android WebView?(上)>中,笔者分析了国内WebView的现状,以及在WebView开发过程中所遇到的一些坑.在踩坑的基础上,本文着重介绍WebView在开发过程中所需要注意的问题,这些问题大部分在网上找不到标准答案,但却是WebView开发过程中几乎都会遇到的.此外还会浅谈WebView优化,旨在给用户带来更好的WebView体验. WebView实战操作 WebView在使…
转:如何设计一个优雅健壮的Android WebView?(上) 前言 Android应用层的开发有几大模块,其中WebView是最重要的模块之一.网上能够搜索到的WebView资料可谓寥寥,Github上的开源项目也不是很多,更别提有一个现成封装好的WebView容器直接用于生产环境了.本文仅当记录在使用WebView实现业务需求时所踩下的一些坑,并提供一些解决思路,避免遇到相同问题的朋友再次踩坑. WebView现状 Android系统的WebView发展历史可谓一波三折,系统WebView…
java能检测编译和运行时的错误 java自己操作内存减少了内存出错的可能 java实现了真数组,避免了覆盖数据的可能 Java不支持指针操作,大大减少了错误发生的可能性 ... 备注: Java能运行虚拟机实现跨平台,这是Java的与平台无关性的特点,不是健壮性…
写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性. 今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设 static void Main(string[] args) { try{ //Code A } catch{ //Code B } finally{ //Code C } } 按照我们平时经常用的,我们在Code A的位置执行出错之后,我们最后可能在Code B进行错误处理,然后可能在Code C处写错误日志. 那么问题来了,…
注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环境自带SDK,方便下一步配置adb.下载Android Studio的参考资料戳这里 在Android Studio中查看SDK路径的方法见下图: 配置adb环境变量: vim  .bash_profile 添加 ANDROID_HOME=/Users/xxx/Library/Android/sdk…
如何评论一个开发代码写的好?清晰简洁明了?No,No,一个处女座就可以写出来了,整齐地代码,详细的注释不是代码好的标准,应该说不是最重要的标准.代码写的是否健壮才是检验的重要标准. 代码的健壮性: 当我们测试向开发提出一个bug,问怎么会出现这样一个bug,他们可能会说代码写的不健壮.何为健壮性,健康强壮,抵挡得住测试各种异常场景的测试才为健壮.而真正的大牛追求的就是以较少的代码量来完成逻辑开发,还能保持代码的健壮性.而这样的代码很少见,一般的程序员见到还不一定能看懂. Python函数的健壮性…
造个简单的轮子倒是不难,但可用性健壮性高到qt这样全世界都在用,就几乎不可能了比如自己写个事件循环实现信号槽,还真不难,我这边的架构里就这么搞了个仿osgi的事件总线嵌入式实时操作系统上能用的大型gui框架,这句话足够日天了,也就qt一家…… qt诞生比mfc还早,基本上是全期压制mfc的,只是亏在早年gpl协议太不友好了vs可以通过ssh远程编译部署到linux上,然后再vs里远程调试gdb,做linux开发也是杠杠的信号槽涉及到事件循环,来保证安全易用的无锁并发,这个不是简单的回调…
最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: adb shell monkey -p com.**** -v-v-v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-sy…
最近带着学生做的某个项目,跑健壮性Monkey,出现一次Crash全过程-日志分析: 准备:搭建adb环境.安装实际测试包:开始: Monkey命令: 1 2 3 4 5 adb shell monkey -p com.**** -v-v-v --throttle 300 --pct-touch  30 --pct-motion 20 --pct-nav 20 --pct-majornav 15  --pct-appswitch 5 --pct-anyevent 5 --pct-trackbal…
所谓的程序健壮性是指处理异常的能力,在异常中能够独立处理异常,并且把正确的答案输出. 例如: 有一个程序能够下载一个文件到指定的路径,但是这个路径是不存在的,因此程序必须要处理这个情况. 例1:下面的代码就没有很好的考虑到异常情况,如果service层出现某个异常,则返回给前端的值就为null 例2:下面的代码没有考虑到returnresult为null时,catch里面这样调用会出现空指向异常,而且还没有考虑到try里面的值为null的情况,返回给前端的值也为null , 完整的代码示例:…
在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 <null>,客户端解析时会 Crash,为了增强程序的健壮性,减少 Crash 的发生,可以使用 NullSafe 这个类别.它对不识别的类型返回 nil,而不是抛出异常,它减少了例如因为 JSON 解析中 数组或字符串为 null 时导致的 Crash.这些异常对客户端来说是不可预期的. 使用时只需要把 NullSafe.m 文件拖进工程就可以了,它在程序运行时自动加载,你不需要再导入其他头文件了. 如果想要禁止 NullSaf…
搭建环境这章节没做详细说明,因为我是前期做APP自动化是已经将 SDK 以及JDK给安装配置好了,这次是直接上来演示monkey的功能点以及运用 一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行 二.Monkey是什么? Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常.和MonkeyRunner几乎是完全不同的,Mon…
道哥的第 023 篇原创 目录 一.前言 二.assert 断言 assert 是一个宏,不是一个函数 三.if VS assert 1. 使用 if 语句来检查 2. 使用 assert 断言来检查 3. 你喜欢哪一个? 4. assert 的本质 5. if-else 的本质 6. 我喜欢的版本 五.总结 一.前言 我们在撸代码的时候,经常需要对代码的安全性进行检查,例如: 指针是否为空? 被除数是否为 0? 函数调用的返回结果是否有效? 打开一个文件是否成功? 对这一类的边界条件进行检查的…
总体架构 Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层.图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口.下面,结合Dubbo官方文档,我们分别理解一下框架分层架构中,各个层次的设计要点: 服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现. 配置…
erlang 提供了简单易用的并发编程模型,基本不需要再考虑多线程并发问题.但实际应用中并不是那么的完美,很多地方需要注意,就算标准库也有不少问题.很多在多线程编程中很多很容易解决的事情,在erlang中是那么的蛋疼和无奈.erlang专注于自己擅长领域,本身十分健壮,强大的shell,分布式特性,让我们更专注于业务实现:但因缺乏文档.足够的经验资料,初入时很容易用出各种问题. 1.进程message_queue_len 很多问题归根结底都处在message_queue_len 太长,每个进程都…
1.如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针指向的内存单元,起到保护的作用. 例如:void StringCopy(char *strDest, const char *strSrc);   void OutPutString(const char *str); 2.如果输入参数采用“值传递”,由于函数将自动用实参的拷贝初始化形参,因此即使在函数内部修改了该参数,改变的也只是堆栈上的拷贝而不是实参,所以一般认为不需要用const 修饰. 对于ADT/UDT的参…
Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlzYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> 收集统计信息: 创建B树索引: 2. 运行select id from tbl_plan…
序 在之前,我写过一个系列“从零开始搭建一个简单的ui自动化测试框架(pytest+selenium+allure)”,在这个系列里,主要介绍了如何从零开始去搭建一个可用的自动化工程框架,但是还缺乏了一些细节的补充,例如对于自动化测试而言,如何提高其测试的稳定性? 本篇文章,将会和读者一起探讨这个问题. 装饰器与出错重试机制 谈到稳定性,不得不说的就是“出错重试”机制了,在自动化测试中,由于环境一般都是测试环境,经常会有各种各种的抽风情况影响测试结果,这样就为测试的稳定性带来了挑战,毕竟谁也不想…
责任链模式  责任链模式在Dubbo中发挥的作用举足轻重,就像是Dubbo框架的骨架.Dubbo的调用链组织是用责任链模式串连起来的. 责任链中的每个节点实现Filter接口,然后由ProtocolFilterWrapper,将所有Filter串连起来. Dubbo的许多功能都是通过Filter扩展实现的,比如监控.日志.缓存.安全.telnet以及RPC本身都是. 如果把Dubbo比作一列火车,责任链就像是火车的各车厢,每个车厢的功能不同. 如果需要加入新的功能,增加车厢就可以了,非常容易扩展…
在网上看到一些帖子,吐糟,质疑nodejs 程序的稳定性,为什么呢?其一,可能这个和javascript有关吧,node是拿javascript去实现的,而javascript又被称为是“世界上误解最深的语言”,我们可以去看看nodejs 创始人的说法,可以去看看知乎的这篇文章,为什么node 用javascript去实现,其二,nodejs 毕竟还年轻,而且官网在部分模块也标注了此模块的目前的状态. 这2天我抽了点时间思考了下这个问题,我觉得我们程序首先功能应该是独立的,就是一个功能出异常了,…