- 浏览: 209687 次
- 性别:
- 来自: 哈尔滨
最新评论
文章列表
问题背景:
在不同日期内进行不同的业务逻辑,在测试环境进行模拟,将日期设置当天时间,通过时分秒区分不同的日期;
不在此时间区间内的数据被统计到了此时间区间内;
问题定位:
Mybatis配置文件中SQL
parameterType = map
确认传入的时间参数为字符串,格式为 yyyy-MM-dd HH:mm:SS,精确到时分秒,符合datetime 类型
查看SQL:
SELECT * FROM `p2p_td_project_invest`
WHERE 1=1
AND DATE(C_CREATE_TIME) >= DATE("2017-10-27 18:31: ...
存储引擎
一、总结
名称MyISAMInnoDB事务不支持支持外键不支持支持数据行锁定不支持支持数据表锁定支持支持全文索引支持不支持优势查询操作多修改操作多对比性能高执行速度快支持事务外键count(*)读取内存中的行数全表扫描count(*) where无差别无差别应用(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且行锁定的机会比较大的情况
二、其他
1.没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从 ...
唯一索引
联合索引
索引方式:BTREE
1.order by create_create 改为 order by id
数据递增插入且有序时
主键一般都为此表的唯一性索引
2.查询条件不适用 or
若有or 则将SQL 查分成两个或多个
使用Union 连接两个SQL
3.limit 1 限制查询格式
4.放弃使用索引的情况
情况举例说明设置为NULLnumber is null!= 或 <> number != 3改为 =其他情况用and连接 ora = 1 or b = 3拆分成两个SQL,使用Union all连接.in 和 not in number in (2, ...
Arrays
一、总结
1.基于 jdk 1.8
二、asList
/**
* Returns a fixed-size list backed by the specified array. (Changes to
* the returned list "write through" to the array.) This method acts
* as bridge between array-based and collection-based APIs, in
* combination wi ...
问题:斗地主游戏,开局会将纸牌重新打乱,请用数组的随机排序实现
思考:
一、
遍历当前数组,Random.next位置下标取值放入新的数组中,为了一定随机不会取重,再加判断是否已加入过新的数组中
二、
正序或逆序遍历数组;将当前位置的元素与Random.next位置的元素调换位置
/**
* 打乱数组中元素的顺序
* @param args
*/
public static void randomAccessArray(String[] argsArray){
String[] cloneArray = argsArray.clone();
int ...
Collections
一、总结
1.基于 JDK 1.8
二、shuffle()
集合中元素重新排序
public static void shuffle(List<?> list) {
if (r == null) {
r = new Random();
}
shuffle(list, r);
}
private static Random r;
public static void shuffle(List<?> list, Ran ...
一、Java 运行时区域
《Java 虚拟机规范(Java SE 7 版)》
1.类装载子系统通过类的全限定名加载 class 文件
2.进而与运行时数据区交互
方法区、Java堆区、Java栈区、程序计数器、本地方法栈
3.通过执行引擎调用本地库接口,进而操作 ...
异常背景
mybatis mapper.xml 中
resultType = int
select count(*)
count(*)查询结果为null,所以出现上述的异常
异常分析:
attempted to return null from a method with a primitive return type (int)
尝试为int赋值为null
异常解决:
1.select IFNULL(count(*),0) 空处理,默认为0
2.resultType = java.lang.Integer 在Service 中调用 mapper.java 接口时做空的判断
异常 ...
主要是为了”安全性“和”效率“的缘故
1、由于String类不能被继承,所以就不会被修改,这就避免了因为继承引起的安全隐患;
2、String类在程序中出现的频率比较高,如果为了避免安全隐患,在它每次出现时都用final来修饰,这无疑会降低程序的执行效率,所以干脆直接将其设为final一提高效率;
常量池的使用,大量使用字符串之后,可以共享字符串的内容,提高效率,节省存储空间
博文参考:
String类为什么是final的?
使String可以像其他基本数据类型一样可以直接使用;
作为一个对象,在main方法中调用时不需要new 新的对象,通过句柄访问方法也不需要声明为static ...
10.25 下午同事帮忙投递的,约在晚上面试,下班之后赶紧去了,好远的说
面试的时候挺苦的,人事没有打印简历,就直接问了
多线程
一脸蒙啊,什么都不会了,因为没准备啊
-------------------------------------------------
问:线程的概念?
答:进程是一个操作的单元,线程是其子单位,共享进程的空间与资源,相互可独立运行
问:大并发会产生什么影响
答:数据的不一致
问:JVM分区
答:堆、栈、程序计数器
问:int是放在堆中还是栈中
答:栈中
(int放在栈中,但堆中也有如类中定义的属性int)
问:并发时是否会改变int的值,
答:不 ...
异常背景:
遍历集合进行元素删除操作
异常描述:
String [] strArray = new String[]{null,null,null,null};
strArray[0] = "1";
List<String> list = Arrays.asList(strArray);
list.removeAll(Collections.singleton(null));
// 运行异常
异常分析:
Arrays.asList 返回结果为List
实现过程中 return new ArrayList
但此时的 Arra ...
需求描述:
为用户隐私考虑,展示用户信息时需要将中间用*代替
功能实现:
手机号码隐藏中间位数
137****1234
1.subString 截取后使用+拼接,拼接过程可以使用StringBuilder
2.正则:replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2")
功能不难,因为不难,所以想找到更优的方法;
subString 实现过程中 new 了一次
两个字符串通过 + 连接的操作,相当于一次 new 操作
系统开销比较大;可以使用 StringBuilder 代替
博文参考:
http://www ...
读《阿里巴巴开发Java开发手册》 有感
-- 读后总结,工作中遇到的问题
-- 防微杜渐,将BUG消灭在萌芽阶段
-- 日拱一卒,功不唐捐
一、对获取的变量与常量进行比较
通常是 常量.equals(变量) ,但可能会出现变量为空的问题;
推荐使用 java.util.Objects.equalts(常量,变量)
二、数据库字段命名,表示是否含义的字段使用 is 开头
通过工具自动生成了 po mapper.java mapper.xml 等,在操作过程中,select 操作会报XXX字段找不到或者对应不上的问题。
总结:避免使用 is 作为前缀,spring 解析的时候会造成混淆
...
一、根据下标删除元素
1.测试代码
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
for(int index = 0 ; index < list.size() ; index++){
if(Objects.equals("a", list.get(index))){
list.remove(index);
...
同事的同事招聘,于是同事帮忙推荐了一下!
2017年10月16日快下班的时候打电话问面试时间,答复待定;
2017年10月19日我回电,预约23日上午10点面试。然后对方发了邮件。
2017年10月20日,胃肠感冒,直到23日都没好,上吐下泻的,哎,天公不作美。也可以为自己的失败找点理由。
9点半到面试地点,等了约15分钟,有人出来接待。
第一轮面试:
一、基本介绍
出生地、毕业院校、工作经历、主要的项目
二、面试官问
1.数据库用过哪些
答:MySQL
简述一下索引的实现原理?(蒙,我还以为是如何使用呢?)
----------------------------------- ...