zoukankan      html  css  js  c++  java
  • 2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了

    41.获得JSON中的变量。
    //显示json串中的某个变量,name是变量名
    function json(json,name){
    var jsonObj = eval(json);
    return jsonObj[name];
    }
    不能直接使用jsonObj.name,用jsonObj[name]。


    42.Spring定时任务,加简单锁,需要“2台机器时间完全一致”。
    方案1:从“时间一致”角度
    网上有个答案:局域网内有3台服务器,由于是分布式部署,要求彼此时间误差在30s内,但是服务器不可以连互联网。
    使用时间同步服务器,NTP同步。


    还有个疑问:同步的过程中,“时间还在流逝”,怎么保证2台机器时间是一致的?
    除非网络特别好,时间误差可以忽略。


    方案2:只执行一次的角度。
    机器启动的时候,去Zookeeper注册,选举机制,只会有1个“主机”,主机执行定时任务。
    如果任务失败了,怎么重复执行?这是另外一个问题!!!




    43.基于Zookeeper实现的简单不等待锁。

      1个业务的2个线程,都去拿锁,如果拿不到,就直接返回。
     
      是否存在,可以等待一会的情况。
      场景1:如果拿不到,直接返回。
      场景2:一致等待,知道拿到锁。
      场景3:设置超时,超过预定时间,自动返回。
      
      归根结底,可以合并为“一种场景”。
      Lock getLock(String lockName,Integer timeout);


    44.引入JS,路径的问题
    staticDomain=http://dev.com:8080/static


    前端引入js ${staticDomain}/js/my.js


    如果staticDomain带了后缀“staticDomain=http://dev.com:8080/static/”,
    则js路径为http://dev.com:8080/static//js/my.js,从而导致js找不到。


    解决办法:Java后端代码,自动去掉结尾的“/”


    public static String delLastSeparator(String path) {
    if (path.endsWith("/") || path.endsWith("\")) {
    path = path.substring(0, path.length() - 1);
    }
    return path;
    }

    45.windows下mysql的root密码丢失怎么办?5步解决这个问题!


    如果忘记了 MySQL 的 root 密码,windows操作系统下可以用以下方法重新设置:


    1. KILL掉系统里的MySQL进程;


    2. 在命令提示符下(CMD),进入到MYSQL的BIN目录,用以下命令启动MySQL,以不检查权限的方式启动;
    mysqld -nt --skip-grant-tables


    3. 然后重新开打一个命令提示符的窗口(CMD)用空密码方式使用root用户登录MySQL;


    mysql -u root


    4. 修改root用户的密码;
    mysql> update mysql.user set password=PASSWORD('123456') where User='root';
    mysql> flush privileges;
    mysql> quit




    参考资料:http://www.cnblogs.com/zox2011/archive/2013/01/20/2868966.html


    5. 重新启动MySQL服务,就可以使用新密码登录了。


    46.当当分库分表框架中的2个小问题。
    https://github.com/dangdangdotcom/sharding-jdbc


    源文件是这样创建“数据库”的,在mysql-front执行,只提示“一行记录受到影响”,但是数据库并没有成功创建。
    CREATE SCHEMA IF NOT EXISTS `dbtbl_0`;
    CREATE SCHEMA IF NOT EXISTS `dbtbl_1`;
    CREATE SCHEMA IF NOT EXISTS `dbtbl_config`;


    把schema改为database就可以了
    CREATE database IF NOT EXISTS `dbtbl_0`;
    CREATE database IF NOT EXISTS `dbtbl_1`;
    CREATE database IF NOT EXISTS `dbtbl_config`;


    创建订单数据的sql语句,演示“分库分表”插入数据。
    但是存在一个“小问题”,2个不同的用户,有相同ID的1个订单。实际情况中,这样是不合理的。
     public void insert() {
        //同一个订单,有不同的用户,这个例子不够恰当
            String orderSql = "INSERT INTO `t_order` (`order_id`, `user_id`, `status`) VALUES (?, ?, ?)";
            String orderItemSql = "INSERT INTO `t_order_item` (`order_item_id`, `order_id`, `user_id`, `status`) VALUES (?, ?, ?, ?)";
            for (int orderId = 1; orderId <= 4; orderId++) {
                for (int userId = 1; userId <= 2; userId++) {
    }
    }

    47.最近在学习sharding-jdbc,去官方交流群学习了下。
    读写分离是为了缓解数据库的读压力,分库分表主要是为了缓解数据库的写压力。


    48.关于freemarker里面的hashmap使用问题。
        Map testMap = new HashMap();
            testMap.put("sh", "shanghai ");
            testMap.put("bt", "北京 ");


    <#list testMap?keys as testKey> 
           < option value="${testKey}" >
                  ${testMap[testKey]}
         </option> 
    </#list>


    <#list testMap?keys as testKey> 
           < option value="${testKey}" >
                  ${testMap.get(testKey)}
         </option> 
    </#list>

    但是,如果map的key是long,就出问题了。

    网上参考了另一篇文章“Freemaker如何遍历key为non-string类型的map?”http://www.cnblogs.com/beiyeren/p/3873494.html
    <bean id="freemarkerConfig"
              class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
            <property name="templateLoaderPath" value="/WEB-INF/view/"/>
            <property name="freemarkerSettings">
                <props>
                    <prop key="object_wrapper">freemarker.ext.beans.BeansWrapper</prop>
                </props>
            </property>
        </bean>
    这样就可以正常获得值了。


    但是!!!
    我发现了,另外一个问题。
    <#assign supportMap = customCombo.itemSupportMap>
    <#list supportMap?keys as key>
    ${key}
    </#list> 
    在打印map的key的时候,把方法名也打印出来了。

    getClass clone put remove get equals entrySet class hashCode keySet 226 225 size clear isEmpty containsKey values empty containsValue toString putAll 

    因此,freemarker.ext.beans.BeansWrapper也不是完全正确的。解决了1个问题的同时,又带来了另外一个问题!!!


    Freemarker的Map只支持String类型的key,只能这样了。


    参考资料:http://www.fengfly.com/plus/view-170673-1.html
    http://www.cnblogs.com/beiyeren/p/3873494.html


    49.javascript精度问题,导致后端传过来long类型的值显示不正确,有何好的解决办法?

    后端long型的订单号,"orderId":1606291143573740096


    转换成js的值,就变成了1606291143573740000。


    百度一下,网上很多人都遇到了这个问题。
    方法1:最笨的办法是,后端就用String类型。


    参考资料:https://www.zhihu.com/question/34564427?sort=created


    方法2:或者,mysql的bigint只用16位,不用太长。


    后端订单号,主键,用String类型,确实可以解决这个问题。
    但是,其它业务就想用bigint作为主键,怎么办呢?


    方法3:后端用long,异步给前端时,用string。(后端手动转换)


    50.Dubbo注册中心奇葩问题,wifi热点坑了,200分钟的经验教训。
    #dubbo.registry.address=multicast://224.5.6.10:1234
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    #dubbo.registry.address=redis://127.0.0.1:6379
    #dubbo.registry.address=dubbo://127.0.0.1:9090
    至少有4种配置,用广播multicast的方式,可以少安装启动一个软件,但是广播这种方式经常遇到问题。
    今天又遇到了,平时正常启动的,结果今天一直提示依赖的服务找不到,改成Zookeeper就可以了。


    已经是第2次遇到这种情况了,之前是修改了dubbo的端口号搞定的。


    2016年7月12日


    今天早上,dubbo服务又出现了问题。
    A服务启动正常,B服务死活连不上A。
    无论是广播,还是Zookeeper。


    调试了100分钟,最终还是逐步分析出了问题。


    第1种可能:A服务和B服务,在端口号,注册中心配置方面,出现了不一致(平时一直正常,出现问题的可能性很小。)
    第2种可能:本地DNS出现问题。(排除,本地防火墙一直是关闭的。)
    第3种可能:防火墙导致。(打算重启WindowsDNS服务的时候,看了下本地IP。)


    Eclipse控制台,一直提示连不上某个IP,192.168.1.23。
    之前的IP还是192.168.1.197,按说IP不太可能发生变化的。


    ipconfig发现有2个 IP-V4的地址。
    ping 192.168.1.23,确实ping不通。
    按道理讲,ping本地ip却不通,是不可能的。


    突然想起来,右下角的QQ电脑管家的wifi热点,还是开着的,但是连不上网。


    最终确认,就是这个因素导致的。


    wifi热点启动了,但是没有正常连网,却占了1个ipv4的地址。
    dubbo恰好又优先使用了这个ip地址,最终坑了!
    2016年7月13日
  • 相关阅读:
    hdu 4027 Can you answer these queries?
    hdu 4041 Eliminate Witches!
    hdu 4036 Rolling Hongshu
    pku 2828 Buy Tickets
    hdu 4016 Magic Bitwise And Operation
    pku2886 Who Gets the Most Candies?(线段树+反素数打表)
    hdu 4039 The Social Network
    hdu 4023 Game
    苹果官方指南:Cocoa框架(2)(非原创)
    cocos2d 中 CCNode and CCAction
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462354.html
Copyright © 2011-2022 走看看