2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了
//显示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日
转载于:https://www.cnblogs.com/qitian1/p/6462354.html
2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了相关推荐
- 2016年工作中遇到的问题31-40
31.Spring和Dubbo中都有@Service注解,需要注意. import com.alibaba.dubbo.config.annotation.Service; import org.sp ...
- 2016年工作中遇到的问题1-10:select-for-update锁表
1.select... for update锁表. 注意事项: 事务下使用,@Transactional 如果用主键,只锁住1行记录 如果不用主键,会锁住多条记录,mysql下测试,查询1条,锁住1行 ...
- 2016年工作中遇到的问题11-20
11.SpringMVC的PathVariable. @PathVariable("id") Integer id; @RequestParam Integer id; 使用了&q ...
- 工作中使用到的单词(软件开发)_2022-02-26_备份
■原文 工作中使用到的单词(软件开发)_sun0322-CSDN博客 目录 ■常用链接 ■2020/03/15 (最初整理 242个单词) 2020 6/28 整理 2020 6/29 整理 20 ...
- 工作中使用到的单词(软件开发)_2023_0316备份
原文: 工作中使用到的单词(软件开发)_http://42.62.43.136:8081/_sun0322的博客-CSDN博客 目录 ■Java学习汇总 ■常用链接 ■2020/03/15 (最初整 ...
- 2016年度工作总结
一想起来今天全办公室人都在写年终总结的场景,不由自主的笑开了颜,因为我把一名程序媛的年终总结硬生生的写成了一篇"散文",而且还是很"冒牌"的总结,以下就是&qu ...
- 敲代码就是一把梭_2020必看!开发五年的大佬日常工作中所使用的java代码技巧...
前言 罗列工作中实际使用的一些代码技巧或者叫工具类;知识无大小,希望大家都有收获 实用技巧 rpc服务出参统一化 什么,出参统一化有什么好说的????? 我不知道你们有没有遇到过多少五花八门的外部服务 ...
- 遥感在计算机领域的应用,遥感技术在测绘工作中的应用分析
孟亭记 摘 要:在信息化发展的当下,遥感技术是众多新技术中的一种,在测绘工作中发挥着重要作用.在科学技术的快速发展中,计算机技术与互联网技术不断得到普及,大大增加了应用范围,促使遥感技术在测绘工作中的 ...
- 管理工作中的50点感悟
※ 管理认知 1.经常自我反省,检视一下,在管辖范围内的人.时.地.物.有没有浪费资源,或无效运用的状况. 2.不要在下属面前抱怨工作,数落上司及公司的不对. 3.接受上司交待任务时, ...
- 外业精灵,在水土流失监测野外调查工作中的应用
常规的水土流失野外调查技术已难以满足现阶段区域水土流失监测工作的需求. 为探索高效.精准.高质量的水土流失数据采集技术,作者以山东沂蒙山泰山国家级重点治理区蒙阴县为例,以小流域或公里网格为调查单元,通 ...
最新文章
- 深度学习-智能视频监控
- django_2.0_请求处理
- 【独家】深度学习论文阅读路线图
- Unity加载配置文件的两种方式
- 自定义注解妙用,一行代码搞定用户操作日志记录
- Mybatis like模糊查询的写法
- DIP第六章习题解答
- python学习(字符串、整数、列表)
- “Info.plist” couldn’t be removed
- rhq监控软件_RHQ指标的WildFly子系统
- Java之IO操作总结
- 计算坐标点的距离计算机公式,计算两个GPS坐标点的距离
- int *p=new int; int *p=new int[10]; int *p=new int(10);这三个有什么区别
- mysql 随机槽_mysql怎样高效率随机获取n条数据
- 微软收购yahoo,不知道是好事还是坏事!?
- ubuntu学习日记--Lesson5:系统目录详解
- easyexcel多个sheet导入_Easypoi实现excel多sheet表导入导出功能
- OPENROWSET访问CSV格式文件
- 通过AndroidStudio找到数据库文件
- 《虚幻4 VR开发指南》视频教程
热门文章
- 如何在Windows上使用GIT下载Android源代码
- 转载 网络上的8051 free IP core资源
- etc profile 的使用
- Linux下rpm安装MySQL及配置
- gatewayworker配置php,tp5整合GatewayWorker
- 带小手的文档怎么复制
- java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
- Linux文件的基本属性
- ubuntu命令行打开vscode-insider_在 Linux 中如何从命令行查找 VirtualBox 版本
- 嵌入式论文3000字_毕业论文写完之后,你还要做的几件事