- 浏览: 209798 次
- 性别:
- 来自: 哈尔滨
最新评论
文章列表
常犯错误总结(一)
一、Arrays.asList 与 java.util.ArrayList
1.常用代码:
// 将数组转化为集合
int [] intArray = new int[]{1,2,3,4};
List<int[]> asList = Arrays.asList(intArray);
此时 Arrays.asList 转化过程中使用到了一个ArrayList 但此ArrayList 非 java.util.ArrayList 而是 Arrays 内部的一个静态类
2.java.util.Arrays.ArrayList(Arrays的私有内部静 ...
问题背景:
需要申请服务器root权限以便于维护部署在服务器上的storm项目;
邮件申请、审批、回复;告知root用户密码
服务器:租用阿里云的服务器;
通过 SecurityShell 连接跳转机,普通用户登录,OK
执行 su root 输入告知的密码,回车;incorret password 提示密码错误;
退出,重新登录依然失败
问题分析:
理解错误,
su root 是由当前用普通用户切换到root超级用户,输入的密码为当前用户的密码
问题解决:
sudo su -i 回车输入告知的密码,切换用户成功;
此时需要输入的密码是 root的密码
http://blog. ...
问题背景:
项目中某个功能发送队列,造成队列积压,系统功能预警
通过日志查询何处调用、何时调用,根据程序中的输出日志在生成环境的log中没有检索到
问题分析:
1.对比已有代码发现有两种日志输出方式,引用的JAR包不同
// 打印日志在测试环境可查看到
org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
// 打印日志在测试环境未能看到
org.apache.log4j.Logger logger = Logger.getLogger(this.getClass());
2.Java项目中 ...
需求:按天统计数据
分析:create_time 为 datetime 类型,按天统计数据,则需要将 create_time 格式化为 yyyy-MM-dd 格式
处理:
MySql按周,按月,按日分组统计数据
-- 先格式化时间,将时间格式为标准格式,再按照格式后的时间分组
SELECT DATE_FORMAT(C_CREATE_TIME,"%Y-%m-%d")
FROM `p2p_td_user` ORDER BY C_CREATE_TIME DESC LIMIT 5 ;
参考博文:
http://linkyou.blog.51cto.com/133 ...
LinkedList
一、总结
1.基于 jdk 1.8 源码分析
2.
二、类声明
/**
* Linked list implementation of the <tt>List</tt> interface. Implements all
* optional list operations, and permits all elements (including
* <tt>null</tt>). In addition to implementing ...
Objects
一、总结
二、equals
Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals
public static boolean equals(Object obj, Object obj1) {
return obj == obj1 || obj != null && obj.equals(obj1);
}
1.调用equals方法时,通常将常量放在左侧,调用常量的equals方法,防止变量为空
2.使用上面的方法,常量作为第一个参数
RandomAccess
总结:
1.基于 JDK 1.8 源码分析
2.作用
起到判断的作用,即当前集合是否支持随机访问
顺序表(数组形式)还是单链表存储,以便使用更合适的遍历方式
RandomAccess(如ArrayList)还是Sequence List (如LinkedList)
源码:
/*
* @(#)RandomAccess.java 1.9 06/04/21
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. ...
ArrayList
一、总结
1.基于 JDK 1.8 源码分析
2.默认初始化长度 10
3.线程不安全,modCount ,对集合的实际操作次数与预期操作次数进行比较,若不同,快速失败,抛出异常;集合通过Iterator 遍历时使用
4.扩容,数组原长度*3/2 + 1
5.ArrayList 与 Array 转换
ArrayList.toArray
Arrays.asList
使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一样的数组,大小就是list.size()
二、类声明
public class ArrayList ...
基于AbstractDataSource实现主从数据库切换
项目背景:
1.DBA通知某一个SQL运行严重超时,告知将读取源头从主库改为从库,减轻主库压力
2.数据库配置上有两个数据源,主从两个配置;
主库:允许读写;从库:只允许读;
主从库数据同步
3.功能已存在,分析运行流程如下
项目流程:
一、使用自定义注释
@RequestMapping(value="/getBrandHisProjectsForM",method=RequestMethod.POST)
@ResponseBody
@DbReadonly
pu ...
DateUtils
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
...
CollectionUtils
/**
* 集合常用工具
*/
public class CollectionUtils {
public static boolean isEmpty(Collection<?> c) {
return c == null || c.isEmpty();
}
}
问题描述:
单元测试一个已离职同事的接口,运行时提示 po 类中的某个属性字段的映射找不到
问题分析:
根据描述的异常信息,在类中找到了该属性,set get 均有,mapper.xml 中映射也存在
检查代码版本,历史版本生产环境运行正常,于是对比此次新增的代码
定位到了问题所在,
po 类中 描述用户类型的字段,用的 isXXX
po 类中 又定义了常量 IsXXX 与 属性字段仅仅首字母不同
所以,Mapper.xml 中的文件在做映射处理时,首先映射的是常量的定义的字段,而该字段又没有SET GET ,因而报错
问题总结:
1.常量不要写在PO类中,而要单独写在 c ...
问题场景:
启动 Tomcat 时报错,org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'XXXXX' is defined
问题解决:
Server 窗口,选择 Tomcat ,右键 publish 或 clean
问题分析:
项目未部署完毕,重新部署
问题场景:
公司项目采用模块化的形式,即按照业务模块构建多个项目工程,每个业务分为 core 项目(Service 与 Dao 层),common 项目(常量类及对外提供的调用接口名称及调用方式)、api 项目(提供对外的调用接口,实现部分再调用 core )
common项目中的 client 类中,通过加载 diamond 服务器中配置的 url 即服务器的部署的HTTP地址进行访问
在项目开发过程中,为了便于调试,将此URL重新赋值为 localhost
本地开发时功能调试完毕,等待与前端同事进行接口联调时,调用接口相应特别慢,就重启了一下机器,再次启动服务,调用失败,断点跟踪不 ...
问题场景:
与同事共同开发一个项目,调用其开发的接口,未接收到返回值
问题分析:
将SQL复制添加指定的查询条件,SQL无误,问题定位到 MyBatis 语法上
问题解决:
1.select 字段部分使用*,导致 表中该字段与PO类之间无法映射
select *
改为 select 具体的字段
2.参数类型不正确 parameterType
参数
java.util.Map
或
map
直接 写Map 不识别
问题总结:
心态,不必为了一个小错误而批评别人,谁都是从那个阶段过来的,过去也会犯此类的错误
总结一下,虽然自己当前不会犯此类的错误