实习踩坑之路:Date、LocalDate和LocalDateTime的区别
首先说业务需求,我的业务是从数据库查询创建、修改、添加时间的等字段的信息返回给一个临时的Bean对象,这个Bean对象一开始我设计的字段是Date类型,debug的时候发现这个Bean时间字段显示不友好,为此有了下面的使用
Date
Date如果不格式化,打印出的日期可读性差
Tue Sep 10 09:34:04 CST 2019
使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的,具体可看源代码
private StringBuffer format(Date date, StringBuffer toAppendTo,FieldDelegate delegate) {// Convert input date to time field listcalendar.setTime(date);boolean useDateFormatSymbols = useDateFormatSymbols();for (int i = 0; i < compiledPattern.length; ) {int tag = compiledPattern[i] >>> 8;int count = compiledPattern[i++] & 0xff;if (count == 255) {count = compiledPattern[i++] << 16;count |= compiledPattern[i++];}switch (tag) {case TAG_QUOTE_ASCII_CHAR:toAppendTo.append((char)count);break;case TAG_QUOTE_CHARS:toAppendTo.append(compiledPattern, i, count);i += count;break;default:subFormat(tag, count, delegate, toAppendTo, useDateFormatSymbols);break;}}return toAppendTo;}
多线程并发如何保证线程安全
避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大
对使用format和parse方法的地方进行加锁 => 线程阻塞性能差
使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法
LocalDate、LocalTime、LocalDateTime
创建LocalDate 只获取某年某月
创建LocalTime只能获取时分秒
LocalDateTime = LocalDate + LocalTime
这些都是Java的新的APOI,感兴趣的可以深入了解一下,和SimpleDateFormat相比,除了API调用更为简单,还有DateTimeFormatter是线程安全的
实习踩坑之路:Date、LocalDate和LocalDateTime的区别相关推荐
- mybatis mapper.xml dtd_全栈开发踩坑之路4-用MyBatis实现服务
1.前言 上一篇文章介绍了如何设计后端的Mysql数据库:Alex Wang:全栈开发踩坑之路3-MySql数据库设计,本文介绍如何用MyBatis实现后端服务. 本后端项目的Github地址(撰写中 ...
- jmeter 3版本到5版本踩坑之路
jmeter 3-5版本升级踩坑路 新版本下载安装 踩坑之路 新版本下载安装 下载新版本软件 ,链接: https://jmeter.apache.org/download_jmeter.cgi: 配 ...
- 微信小程序实现大转盘抽奖----踩坑之路
微信小程序实现大转盘抽奖----踩坑之路 需求:现在有一个小程序抽奖页面如下,此类抽奖方式为大转盘 思路:由服务端获取抽奖次数和奖品,根据服务端的中奖概率来决定是否中奖,最后利用小程序动画将转盘转起来 ...
- contentprovider踩坑之路之Failed to find provider info for com.example.app.provider和cursor=null空指针问题
目录 bug1.Failed to find provider info for com.example.app.provider bug2:cursor=null bug1.Failed to fi ...
- 2021-11-01 富文本编辑器Vue-Quill-Editor 踩坑之路
Vue-Quill-Editor 基于 Quill.适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用. 相对于ssr,spa是通过component进行工作 ssr和spa的区别 1 踩坑之路 ...
- [Java灵信LED] -- 踩坑之路
灵信led -T8 控制板卡 --踩坑之路 下载lv_led.dll 动态库链接 https://pan.baidu.com/s/11ZO-M6kllsq2AyhVW4AKoA 提取码:unsb 提取 ...
- webpack踩坑之路 (2)——图片的路径与打包
webpack踩坑之路 (2)--图片的路径与打包 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我 ...
- 基于dx11的动作游戏踩坑之路--1
基于dx11的动作游戏踩坑之路--1 首先要声明所有的博客都是学习博客,不是技术博,只是用来记录.整理自己的学习路线,以及日后可以回顾一下.本人也只是一个小菜鸡,可能会有很多错误与纰漏,有大佬愿意指出 ...
- 公司自建电商系统对接Ariba PunchOut ----踩坑之路
Ariba Network是ariba公司开发的供应商采购平台.punchout功能对接数据传输基于cxml. 主要是实现接口登录.购物车信息返回到airba系统,以及等订单功能. 开发手册中有相应的 ...
- echart php mysql简书_echart 踩坑之路
资料 漫漫踩坑路 1. 在低分辨率的电脑上使用时,出现文字和图表模糊的情况. 问题解决前后的展示截图(截图被压缩了,实际效果比较明显) 显示模糊的展示截图 问题解决后的展示 产生问题的原因 canva ...
最新文章
- Java中classpath配置
- FPGA笔试题解析(五):串并转换与奇分频电路
- 派生类的赋值运算符重载【C++继承】
- 经典C语言程序100例之十六
- Recyclerview不显示内容
- 真香定律!Android动态换肤实现原理解析,原理+实战+视频+源码
- mac npm command not found
- ActiveMQ消息重发
- Git版本控制:Git远程仓库
- SQL SERVER 2008 索引、数据存储基本理论【原创】
- Python下opencv(图像的阈值处理)
- OLED 12864屏幕指南
- 华为HCIP(HCNP)笔记,还不快快收藏!
- 如何用决策树模型做数据分析?
- linux文件属性全解,Linux文件属性详细图解
- Smart Link概述
- java游戏为什么_JAVA能不能开发大型游戏?为什么?
- 软件测试作业1 令我印象深刻的bug
- Chrome浏览器保存微信公众号文章中的图片
- 实验二——————路由器口令配置
热门文章
- websocket.onmessage回调没反应_Java笔记:反应器模式的简单运用
- shell export path_学习Shell编程
- Vue:返回上一个路由
- EasyUI:datagrid冻结表头
- commons-beanutils实现java深度克隆
- 3D目标检测多模态融合综述
- 【bzoj2434】[Noi2011]阿狸的打字机【AC自动机】
- 整体二分初识--POJ2104:K-th Number
- Jquery easyUI datagrid载入复杂JSON数据方法
- 异常:请将注册表值...