一叶障目, 不见泰山------要对整个数据流有非常清晰的认识,避免走入死胡同!

本文主要是介绍一叶障目, 不见泰山------要对整个数据流有非常清晰的认识,避免走入死胡同!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       俗话说: 一叶障目, 不见泰山。 很多时候, 我们缺乏全局上的整体认识, 在局部死胡同中瞎转, 耗费精力。  扯多了, 颇有点格局和细节的意味。


       最近遇到这样一个问题, 如图:



       从接入层开始, 我把数据"http://w.x.y.z/aaa"写入, 最终落地到data中, 随后, 我用查看存储的"标准工具"查看data数据, 非常意外地发现, 从data中读取出来的数据是“//w.x.y.z/aaa”, 非常意外啊!

       于是, 我便认为, 肯定是写的时候, 改变了"http://w.x.y.z/aaa"的值, 于是寻找证据。

       经抓包确认, 入接入层的数据没问题, 入逻辑层的数据没问题, 入适配层的数据没问题。  当时又觉得, 入存储层的数据不太好查, 于是就想当然地认为一定是适配层在写入的时候, 改变了"http://w.x.y.z/aaa"的值。

       可是, 在适配层,在所有代码中的关键点中(写逻辑), 发现没有改动原串的代码, 那就加log吧, 看看哪里变了。 无奈, 适配层的逻辑还挺复杂, 这log要加到猴年马月呢?


       停停吧。 如果走在做错的路上, 那么停止脚步就是进步!

       貌似是思路错误, 走入了死胡同。 于是反思上述过程, 进行了一步关键的验证: 写入的时候, 入存储层的数据又没有变化, 用tcpdump抓出明文包, 发现写入的时候居然没有变化。看来, 写入的时候没有任何问题。

       那就是“标准工具”读取的时候有问题了, 再看看“标准工具”读取的流程。 原来, 所谓的“标准工具”是从上图中的线路2读取的, 不是从线路1中读取的。 而我知道, 读取的时候, 在适配服务中, 确实有调用一个远程服务------实现从"http://w.x.y.z/aaa"到"//w.x.y.z/aaa"的转换。

       原来如此!


       最开始笃定是写逻辑有问题, 最后的结论是读逻辑在捣鬼。 值得反思。 

       实际上, 很多时候都有类似的悖论。 这让我想起了前段时间的svn提交二进制库的问题:你说你提交了, 但怎么保证你真正svn ci了呢? 不能仅仅看提交成功的提示, 而应该让人外一个人svn up一下, 看看是否有结果。

       值得深思。





这篇关于一叶障目, 不见泰山------要对整个数据流有非常清晰的认识,避免走入死胡同!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684337

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

如何来避免FOUC

FOUC(Flash of Unstyled Content)是指在网页加载过程中,由于CSS样式加载延迟或加载顺序不当,导致页面出现短暂的无样式内容闪烁现象。为了避免FOUC,可以采取以下几种方法: 1. 优化CSS加载 内联CSS:将关键的CSS样式直接嵌入到HTML文档的<head>部分,这样可以确保在页面渲染之前样式就已经加载和应用。提前引入CSS:将CSS文件放在HTML文档的<he

argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述 一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。 二、问题分析 argodb的计算引擎是基于spark的定制化引擎,对于自定义函数的调用跟hive on spark的是一致的。udf要通过反射生成实例,然后迭代调用evaluate。通过代码分析,udf在

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

C#设计模式(1)——单例模式(讲解非常清楚)

一、引言 最近在学设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考。首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类) 二、单例模式的介绍 说到单例模式,大家第一

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是