zoukankan      html  css  js  c++  java
  • 第六机智:1248码的应用,状态码应如何选择

    这个得从易经说起,计算机理论和易经有不解之缘。
    太极生两仪,两仪生四象,四象生八卦



    说起1248码,大家可能并不陌生。这种算法的始祖应该算是发源于易经了,其中的太极八卦就是如此。计算机中 Linux 系统上的权限管理机制将其发挥到了极致,chmod 777 /xxx 这种操作后面的智慧便是如此。
    1,最近项目中使用1248码定义了IOT传感器设备的探头路数:传感器探头的路数,1:代表第1路探头,2:代表第2路探头,4:代表第3路探头,8:代表第4路探头...以此类推~
    2,假设某一个IOT设备关联到了某个设施(车辆,货柜,集装箱)上,并且使用其中的1~n个探头,如何知道该集装箱使用了哪几个探头呢?

    你是不是想到使用一个字符串1,3代表一个数组{1,3},表示他绑定了第1路和第3路探头,如果随着探头数量的扩展,这个字符串会越来越长,不利于扩展~

    哪如何实现一个优雅的设计呢?1248码将是你的不二选择!

    什么是1248码:

    其实就是二进制和十进制之间转换的1248赋值法的原理。
    二进制是使用一组1、0表示如下:

    二进制:1001        1010

    转换   :8421        8421

    十进制:9        10

    那么如何在上面提到的场景中应用呢?

    --》1:代表第1路探头,2:代表第2路探头,4:代表第3路探头,8:代表第4路探头...以此类推~

    使用:用探头绑定的路数模1248,若结果大于0说明,route包含该路探头,非常方便使用和扩展:

    直接上代码:

    if((route & 1)> 0) {
    //说明包含第一路探头,balabala~处理
    }else if((route & 2)> 0){
    //说明包含第二路探头,balabala~处理
    }else if((route & 4)> 0){
    //说明包含第三路探头,balabala~处理
    }else if((route & 8)> 0){
    //说明包含第四路探头,balabala~处理
    }
    ........
    如果想去掉if else ,大家可以自行实现噢

    扩展:

    状态码的智慧:《把问题记录一下,以防别人的分享连接失效》

    (一个事物有5个流程,ABCDE一般的程序员通常会定义为 status 有5个状态 0/1/2/3/4 ,流程的顺序是 A->B->C->D->E ,可是有一天项目经理说这个流程会有个快捷流程 A->B->E 。于是原本的 0->1->2->3->4 就有部分数据变为了 0->1->4 ,这些都不会有太大的问题,然而,后来项目经理跟你说我需要区分在E状态下它是经历了 ABCDE 还是直接经历 ABE ,于是乎,你就懵逼了。)http://duguying.net/article/%E7%8A%B6%E6%80%81%E7%A0%81%E8%AE%BE%E8%AE%A1%E7%9A%84%E6%99%BA%E6%85%A7%EF%BC%8C1234%E8%BF%98%E6%98%AF1248

    状态码面试题:(

       1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,每天结束的时候,工人会向你要一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?
       2.有1000个苹果,将它们放在100个箱子里,怎么放才能让我向你要苹果的时候,你都能整箱整箱的给我,你的给法是否唯一?

    http://blog.chinaunix.net/uid-20676637-id-86111.html?/10085.html

  • 相关阅读:
    flash背景透明、置底、禁止放大 右键菜单
    SQL 命令
    php无刷新翻页,单独的一个文件加上一个JS即可搞定
    php jquery ajax无刷新评论 无刷新翻页,字数统计 绝对可以用
    input点击隐藏显示层
    jquery延迟加载图片
    用Javascript读取CheckBox数组的值
    链表结构_C语言实现
    struts2_自定义错误提示
    struts2_自定义对象设置
  • 原文地址:https://www.cnblogs.com/hbuuid/p/12580709.html
Copyright © 2011-2022 走看看