group by
场景:我在调用气象局的雷达图十分钟定时扫描一次接口查询气象图片和时间,我会判断到分为止,如果我的数据库中没有扫描出的分,我会将这个雷达图上传到我们公司的服务器再保存在我的数据库,因为我的代码上传到服务器了一份,本地和服务器用的是同一个定时任务,也就是我在开启本地的时候会和服务器同时进行定时任务,我会发现,数据中会有时间相同的数据(我在代码中已经判断过时间不能重复),这种情况我想了想,既然避免不了同时启动扫描的情况,我会利用查询列表的时候去重就好了,于是我开始了sql,
select a.* from E_RADARURL_INFO a WHERE ID in (SELECT MAX(ID) FROM E_RADARURL_INFO GROUP BY DATA_INSERT_TIME) AND a.DATA_INSERT_TIME <= ?2 and a.DATA_INSERT_TIME >= ?1 order by a.DATA_INSERT_TIME asc
![](https://img.haomeiwen.com/i14109981/86c512e1646c062e.png)
ID是唯一不重复的主键,我这里是去除DATA_INSERT_TIME重复的字段,看语句自己理解吧
数组中移除某个指定元素的方法
//删除数组中给定元素
public static String[]removeElement(String arr[],String element){
String newArr[] =new String[arr.length-1];
int elementLength =0;
for (int i=0;i
if(!element.equals(arr[i])){
newArr[elementLength]=arr[i];
elementLength++;
}
}
return newArr;
}
![](https://img.haomeiwen.com/i14109981/cf7d8d2af740bd49.png)
![](https://img.haomeiwen.com/i14109981/250b22a6dd99cb73.png)
![](https://img.haomeiwen.com/i14109981/f5568817d5d37dd8.png)
JDK1.8 HashMap源码分析
在JDK1.8之前,HashMap采用数组+链表实现,而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。到了jdk1.8,当同一个hash值的节点数不小于8时,不再采用单链表形式存储,而是采用红黑树。
![](https://img.haomeiwen.com/i14109981/ffe75cc1b4cd19b6.png)
spring ioc是如何实现的
1.读取标注或者配置文件,看看JuiceMaker依赖的是哪个Source,拿到类名
2.使用反射的API,基于类名实例化对应的对象实例
3.将对象实例,通过构造函数或者 setter,传递给 JuiceMaker
split("\\.")这样才认识
使用FastJson对实体类和Json还有JSONObject之间的转换
1. 实体类或集合转JSON串
String jsonString = JSONObject.toJSONString(实体类);
2.JSON串转JSONObject
JSONObject jsonObject = JSONObject.parseObject(jsonString);
3.JSON串转实体类
实体类 javaBean = JSON.parseObject(json,实体类.class);
4.JSON串转带泛型的List的集合
List<实体类或其他泛型> list = JSON.parseObject(json, new TypeReference<List<实体类或其他泛型>>(){});
Maven的scope属性
compile
默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。
test
该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。
runtime
依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。
此类的驱动都是为runtime的类库。
provided
该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。
system
使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。
import
这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。
MultiValueMap的用法
MultiValueMap stringMultiValueMap =new LinkedMultiValueMap<>();
stringMultiValueMap.add("早上九点","周一");
stringMultiValueMap.add("早上九点","周二");
stringMultiValueMap.add("早上十一点","周三");
stringMultiValueMap.add("早上十一点","周四");
stringMultiValueMap.add("下午两点","周五");
stringMultiValueMap.add("下午两点","周六");
stringMultiValueMap.add("下午五点","周日");
Set keyset = stringMultiValueMap.keySet();
for(String key : keyset){
List values = stringMultiValueMap.get(key);
System.out.println(StringUtils.join(values.toArray()," ")+":"+key);
}
![](https://img.haomeiwen.com/i14109981/d2754b38204b9684.png)
![](https://img.haomeiwen.com/i14109981/86e4e04cf3de71b8.png)
查询某年某月的sql
select count(*) count from C_REPLY_INFO where to_char(UPDATE_TIME,'yyyy')='2019' and to_char(UPDATE_TIME,'mm')='06' and STATUS = '2';
![](https://img.haomeiwen.com/i14109981/833f0245561d4b5d.png)
网友评论