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日

2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了的更多相关文章

  1. 2016年工作中遇到的问题1-10:select-for-update锁表

    1.select... for update锁表.注意事项:事务下使用,@Transactional如果用主键,只锁住1行记录如果不用主键,会锁住多条记录,mysql下测试,查询1条,锁住1行,查询2 ...

  2. 延申三大问题中的第三个问题处理---发布更新时先把服务从注册中心给down下来,等待一段时间后再能更新模块

    一开始采取的思路大致如下: 在preStop中使用/bin/sh命令,先down 然后sleep一段时间, 这种思路的执行情况如下: 假若升级容器使用的镜像版本的话,先执行preStop中的命令,sl ...

  3. 测试工作中经常用到的几个Linux命令(第一弹)

    自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题(顺便迈向 ...

  4. 测试工作中经常用到的一丢Linux命令

    自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题 1.cd ...

  5. Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)

    平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...

  6. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  7. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  8. 工作中常用的js、jquery自定义扩展函数代码片段

    仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...

  9. 工作中那些提高你效率的神器(第二篇)_Listary

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

随机推荐

  1. JSP | 基础 | JSP状态管理 | Cookie

    Cookie : 是web服务器保存在客户端的一系列文本信息. Cookie的作用: 1.对特定的对象的追踪 2. 3. JSP中创建Cookie以及使用 创建Cookie对象 写入Cookie对象 ...

  2. UVA - 1349 D - Optimal Bus Route Design

    4. D - Optimal Bus Route Design 题意:给出n(n<=100)个点的带权有向图,找出若干个有向圈,每个点恰好属于一个有向圈.要求权和尽量小. 注意即使(u,v)和( ...

  3. 155 Min Stack 最小栈

    设计一个支持 push,pop,top 操作,并能在常量时间内检索最小元素的栈.    push(x) -- 将元素x推入栈中.    pop() -- 删除栈顶的元素.    top() -- 获取 ...

  4. Java基础学习-一切皆为对象

    一切皆为对象 引用 String s; //s是引用,并不是对象. String s = "asdf" //创建一个引用的同时便进行初始化

  5. P3372 【模板】线段树 1 区间查询与区间修改

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

  6. Hive工具类

    Hive2.x的工具类,对常用方法进行了封装,其中设置了kerberos认证. package com.ideal.template.openbigdata.util; import java.sql ...

  7. 如何用Chrome自带的截屏功能截取超过一个屏幕的网页

    提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...

  8. Makeflie自动生成依赖,自动化编译

    在netbeans里开发,有一个重要文件makefile,是用来编译所有的文件. 项目的目录结构如下,扁平的目录结构,如何实现自动化编译,写makefile呢? 第一版 基础版: CC = g++ C ...

  9. 关于Ubuntu 16.04中E: Could not get lock /var/lib/dpkg/lock - open的三种解决方案

    问题 在Ubuntu中,有时候运用sudo  apt-get install 安装软件时,会出现如下的情况: E: Could not get lock /var/lib/dpkg/lock - op ...

  10. 事件捕获 & 事件冒泡

    <body> <div id="div1"> <div id="div2"> <div id="div3&q ...