Java笔记
工作总遇到的java相关技巧
菜小菜吃菜
向着进步进步
展开
-
关于com.google.gson.JsonSyntaxException时间格式解析错误问题
项目中用到了Gson实例化实体时时间格式转换在不同的服务器上会发行改变,所以当我在本地可以正常运行时,发布到线上就不能用了(linux),当时我还很纳闷为何报错,后来百度这个错误后才发现Gson在不同服务器上解析的时间格式不一样,所以在一开始就应该以下列方式来创建Gson对象。private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();原文:https://blog.csdn.net/q.转载 2020-08-20 18:56:55 · 541 阅读 · 0 评论 -
SpringBoot集成redis,实现分布式锁
1、准备使用redis实现分布式锁,需要用的setnx(),所以需要集成Jedis需要引入jar,jar最好和redis的jar版本对应上,不然会出现版本冲突,使用的时候会报异常,我使用的redis版本是2.3.0 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId>原创 2021-01-21 15:23:36 · 642 阅读 · 4 评论 -
Random random = SecureRandom.getInstanceStrong();
真是史前巨坑,上生产环境导致线程阻塞,靠打印日志一点点定位这一句代码。如无特殊要求,可用Random random = new SecureRandom();替代详情可看:https://blog.csdn.net/weixin_45244678/article/details/106137948...原创 2021-06-25 02:50:20 · 1294 阅读 · 0 评论 -
DataSource连接失败常见异常捕获
捕获SQLException异常,并对常见的异常进行特殊处理:private static Boolean sqlTest(DataSource dataSource) { try { dataSource.setLoginTimeout(5); dataSource.getConnection().getClientInfo(); }catch (SQLException e) { if(e.g.原创 2021-05-18 22:39:31 · 869 阅读 · 0 评论 -
数据库JSON类型映射到java实体类中的对象——MyBatis框架
简介在使用MyBatis的过程中,会有这样的需求:POJO里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符串字段与Java类的相互类型转换。解决方式是为每一个类写一个TypeHandler,但是这样过于繁琐。引入泛型,写一个通用的TypeHandler。代码import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.ibat原创 2021-01-19 21:56:19 · 8608 阅读 · 2 评论 -
JAVA向上、向下转型
Animal dog = new Dog();//向上转型dog只能调用Animal中定义的成员变量或者方法; 若Dog中存在重写Animal中的成员变量或者方法,则dog调用的是Dog中重写的部分; dog不能调用Dog中新增加的方法。Animal a1 = new Animal();Animal a2= new Dog();Dog dog = (Dog)a1;//向下转型,...原创 2019-03-25 18:48:38 · 155 阅读 · 0 评论 -
java程序初始化顺序
一般遵循三个原则:静态对像(变量)优先于非静态对象(变量),其中静态对像(变量)只初始化一次,而非静态对象(变量)可能会初始化多次。 父类优先于子类进行初始化。 按照成员变量的初始化顺序进行初始化。即使变量定义散布于方法定义之中,它们依然在任何方法(包括构造函数)调用前先进行初始化。父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类非静态变量 父类非静态代码块 ...原创 2019-02-12 13:40:54 · 359 阅读 · 0 评论 -
获取两个日期相差多少个月
/** * 获取两个日期相差多少个月 * @param beginTime * @param endTime * @return */ public static int getMonthDateDisparity(Date beginTime, Date endTime) { Calendar begin = Calendar.getInstance(); Ca...原创 2018-12-28 18:18:35 · 628 阅读 · 0 评论 -
spring批量新增mysql数据
public void create(List<WfCountHoursFansNum> list) { String sql = new WfCountHoursFansNum().getCreateObjSql() ;//暂时未优化 // logger.debug("create(String sql, T t)====" + sql); BeanPropertySq...原创 2018-06-26 18:40:55 · 307 阅读 · 0 评论 -
获取两个坐标点间的距离
private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 获取两个坐标点之间的距离 * @param lat1 起点经度 * @param lng1 起点维度 * @...原创 2018-05-04 10:07:07 · 1303 阅读 · 1 评论 -
Simpledateformat 时间格式化多了一小时
错误:import com.ibm.icu.text.SimpleDateFormat;正确:import java.text.SimpleDateFormat;原创 2018-05-03 11:03:25 · 1627 阅读 · 0 评论 -
netty的option
ChannelOption.SO_BACKLOG, 1024BACKLOG用于构造服务端套接字ServerSocket对象,标识当服务器请求处理线程全满时,用于临时存放已完成三次握手的请求的队列的最大长度。如果未设置或所设置的值小于1,Java将使用默认值50。ChannelOption.SO_KEEPALIVE, true是否启用心跳保活机制。在双方TCP套接字建立连接后(即都进入ESTABLI...转载 2018-03-29 10:16:59 · 1182 阅读 · 2 评论 -
什么是原子性,什么是原子性操作
例:A要向B账户中转100元,那么从A转账到B接收完成的过程为一个事务。假设A有1000,B有1000,那么A需要从账户中减掉100,B的账户上要加100,在此过程中发生意外,比如停电,关机等操作,那么这个操作就是败了,需要进行事务的回滚,重新回到发生意外前的状态,A还没有减100,B还没有加100。这种要成功都成功,要失败都失败的操作就叫做原子性操作。如果把一个事务看做一个程序,他要么完转载 2017-12-12 15:11:41 · 1614 阅读 · 0 评论 -
java实现Excel导入
主要涉及技术,注解和反射过程1、创建Excel数据实体类在实体类的属性上面添加注解,对应Excel表中的title2、获取Excel数据(用到IO流)3、将数据通过反射和注解封装到实体类中(重点和难点)private static Map Y_TITLE_MAP=new HashMap();/*** 读取excel并封装为对原创 2017-03-30 19:14:34 · 382 阅读 · 0 评论 -
java实现Excel导出
public class ExcelOutput {/** * @功能:手工构建一个简单格式的Excel */ private static List getStudent() throws Exception{ List list = new ArrayList(); SimpleDateFormat df转载 2017-04-08 16:35:12 · 180 阅读 · 0 评论 -
CellType 类型 值
CELL_TYPE_NUMERIC 数值型 0CELL_TYPE_STRING 字符串型 1CELL_TYPE_FORMULA 公式型 2CELL_TYPE_BLANK 空值 3CELL_TYPE_BOOLEAN 布尔型 4CELL_TYPE_ERROR 错误 5日期既是CELL_TYPE_FORMULA 也是CELL_TYPE_STRING数字既是CELL_TYPE_NUMERI转载 2017-04-10 17:03:31 · 12389 阅读 · 1 评论