java
分享java相关知识
两只橙
全球AI挑战赛百强选手,曾任职于腾讯微信事业部,魅族flyme事业部,中国平安人工智能团队。《深度学习500问》作译者,CSDN博客专家及签约讲师,指弹吉他爱好者,简书专栏作家。
展开
-
java 时间处理工具类
1、java 时间处理工具类package com.meizu.mdsp.common.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.regex.Matche...原创 2019-05-19 15:24:43 · 534 阅读 · 0 评论 -
java Tue Aug 21 2018 00:00:00 GMT+0800 (中国标准时间) 00:00:00 时间格式转换
package com.meizu.mdsp.web.util;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import java.util.regex.Pattern;/** * @author liangzhicheng * @version V1.0 */...原创 2019-01-07 17:33:58 · 15206 阅读 · 0 评论 -
java Tue Aug 21 2018 00:00:00 GMT+0800 (中国标准时间) 00:00:00 时间格式转换
package com.meizu.mdsp.web.util;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import java.util.regex.Pattern;/** * @author liangzhicheng * @version V1.0 */...原创 2019-04-26 07:44:48 · 10579 阅读 · 0 评论 -
如何解决fastJson无序问题
在开发过程中,遇到过一种一开始觉得很莫名其妙的情况——在将json解析成一个map的时候,会出现顺序颠倒的情况,虽然数据读取和存储都没有出错,但是顺序的颠倒在开发中处理特定问题时也是一件很令人头疼的事情,那么为什么会出现这种情况,怎么避免出现这种情况呢?跟踪fastjson源码,在com.alibaba.fastjson.parser.DefaultJSONParser 类中475行发现:...原创 2018-05-16 09:49:29 · 1633 阅读 · 0 评论 -
DateUtils时间类
package test.utils.date;import java.text.ParseException;import java.util.Date;import org.apache.commons.lang.time.DateUtils;public class Test { public static void main(String[] args) { int amoun原创 2018-01-02 14:48:23 · 2694 阅读 · 0 评论 -
spring使用java配置定时任务的几种配置方式及示例
Spring定时器,主要有两种实现方式,包括Java Timer定时和Quartz定时器!1、Java Timer定时首先继承java.util.TimerTask类实现run方法package com.land;import java.util.Date;import java.util.TimerTask;public class TimerTest extends TimerTask原创 2018-01-02 11:44:06 · 2233 阅读 · 0 评论 -
Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,因为都是解析简单的json数据。但是最近学习springboot,要解析一个比较复杂的json数据。就照之前的用gsonformat自动生成实体类,让gson直接解析,本想着一切ok了,可是确报错了,刚开始以为gsonformat生成的类有错误,因为毕竟json数据较为复杂,于是多生成几次,可是还是不行转载 2017-12-26 10:11:14 · 1403 阅读 · 0 评论 -
java面试必问面试题
一、八种基本数据类型(1)boolean:只有true和false两个取值。 (2)byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。 (3)short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。 (4)char:16位,存储Unicode码,用单引号赋值。 (5)float:32位,数据范围在3.4e-45~1.4e38,直接赋原创 2017-12-23 19:04:19 · 7036 阅读 · 1 评论 -
23种设计模式——单例模式
一、目的单例的目的是为了保证运行时Singleton类只有唯一的一个实例,最常用的地方比如拿到数据库的连接,Spring的中创建BeanFactory这些开销比较大的操作,而这些操作都是调用他们的方法来执行某个特定的动作。二、单例会带来什么问题多线程调用这个实例,会产生线程安全问题三、解决方法(1)按使用环境决定,单线程环境下使用懒汉模式public class Singleton { pr原创 2017-12-22 15:24:07 · 259 阅读 · 0 评论 -
23种设计模式——适配器模式
一、目的:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。二、意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。三、主要解决:主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。四、何时使用:原创 2017-12-22 14:52:56 · 261 阅读 · 0 评论 -
23种设计模式——代理模式
(1)意图:为其他对象提供一种代理以控制对这个对象的访问(2)主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层(3)何时使用:想在访问一个类时做一些控制(4)如何解决:增加中原创 2017-12-22 14:19:43 · 289 阅读 · 0 评论 -
Java虚拟机工作原理详解
前言首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转化为机器码。主要介绍下图中的类加载器和运行时数据区两转载 2017-12-21 17:52:32 · 277 阅读 · 0 评论 -
PWC 6033:Error in javac compilation错误
笔者在开发的时候遇到PWC 6033:Error in javac compilation错误,服务器用的是jetty,版本是7.6.9jdk用的是1.8_031.解析: 在查阅资料后发现是7.6.9版本的jetty对jdk1.8的支持不足,Jetty 9.2.0 发布才支持 Java 8,将jetty升级到9.2.0后这个问题就解决了。jetty 9.4.6.v20170531下载地址:htt原创 2017-07-10 20:07:54 · 6951 阅读 · 0 评论 -
第一章 JDK8 API解析(1.1) MAP新增的merge方法介绍
1.Map.merge方法介绍jdk8对于许多常用的类都扩展了一些面向函数,lambda表达式,方法引用的功能,使得java面向函数编程更为方便。其中Map.merge方法就是其中一个,merge方法有三个参数,key:map中的键,value:使用者传入的值,remappingFunction:BiFunction函数接口(该接口接收两个值,执行自定义功能并返回最终值)。当map中不存在指定的...原创 2019-07-20 16:11:03 · 542 阅读 · 0 评论 -
JAVA数据加密——MD5加密,SHA加密,BASE64解密,BASE64加密,HMAC加密
加密工具类package com.xinrui.flower.util;import java.security.MessageDigest;import javax.crypto.KeyGenerator;import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;原创 2016-03-19 20:49:29 · 926 阅读 · 0 评论 -
java面向对象思想
一、封装封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。通常情况原创 2017-12-22 11:37:07 · 278 阅读 · 0 评论 -
Java 十大异常报错(Exception)
No.1 java.lang.NullPointerException 这个异常大家肯定都经常遇到,异常的解释是 “程序遇上了空指针 “,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混原创 2017-12-07 09:58:00 · 3664 阅读 · 0 评论 -
try catch 对性能影响
一、比较下面两种try catch写法,哪一种性能更好 for (int i = 0; i < 1000000; i++) { try { Math.sin(j); } catch (Exception e) { e.printStackTrace(); }转载 2017-08-02 11:44:01 · 2219 阅读 · 0 评论 -
Java多线程实现的方式
Java多线程实现的方式有四种1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通过Callable和FutureTask创建线程4.通过线程池创建线程前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果后...原创 2018-12-04 08:39:40 · 206 阅读 · 0 评论 -
JVM及GC机制
一、概述Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。经过这么长时间的发展,Java GC机制已经日臻完善,几乎可以自动的为我们做绝大多数的事情。二、JVM内存空间管理根据JVM规范,JVM把内存划分了如...原创 2018-12-03 00:40:42 · 1292 阅读 · 1 评论 -
CAS算法
简介.CAS:Compare and Swap, 翻译成比较并交换CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁优点.一、高效的解决原子操作二、实现了区别于synchrono...原创 2018-07-01 20:11:23 · 581 阅读 · 0 评论 -
java面向对象编程杂谈
Java程序的发展经历了面向过程,面向对象两个阶段。什么是面向过程和面向对象呢?其实面向过程就是一种以“事件”为中心的编程思想。而面向对象是一种以“事物(即对象)” 为中心的编程思想。打个比喻,面向过程就是不用想去做什么样的盒子,随机取工具就开始制作。而面向对象就是先想好做一个什么样的盒子,再去找对应的工具去做。在此我就重点谈下java的面向对象编程吧!首先我认为面向对象编程是相对于面向过原创 2016-03-29 16:48:58 · 491 阅读 · 0 评论 -
JAVA Split方法,拆分字符串后,去除返回的空值
1.使用org.apache.commons.lang3.StringUtils中的StringUtils方法 String strno = ",1,1,2"; for (String string : StringUtils.split(strno, ",")) { System.out.println(string); }2.原创 2017-05-08 23:08:16 · 15456 阅读 · 1 评论 -
java报错:java.lang.Integer cannot be cast to java.lang.Long
这个报错解决方案仅适用于获取JSONArray 对象中的Long型数据1、java报错:Integer强制转换成Long出错 public void handle(String eventData) { LOGGER.info("handle metaq event:{} data:{}", this.getEvent(), eventData); JSONOb原创 2017-09-29 11:10:44 · 13033 阅读 · 1 评论 -
Java多线程
一、线程总是属于某个进程,进程中的多个线程共享进程的内存。“同时”执行是人的感觉,在线程之间实际上轮换执行。线程总体分两类:用户线程和守候线程。当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。二、在调用start()方法之后:发生了一系列复杂的事情:在调用start()方法之后:发生了一系列复杂的事情:启动新的执行线程(具有新的原创 2017-12-22 16:29:29 · 274 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap区别
一、Hashtable和HashMap都实现了Map接口,但是Hashtable的实现是基于Dictionary抽象类。public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {public class Hashtable<K,V> extends Dict原创 2017-12-22 16:55:48 · 382 阅读 · 0 评论 -
java中Volatile变量
(1)Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值(2)如果读操作远远大于写操作,volatile 变量还可以提供优于锁的性能优势(3)volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. volatile是给编译器的指示来说明对它所修饰的对象不应该原创 2017-12-23 18:37:59 · 410 阅读 · 0 评论 -
Java的Integer与int互转
一、int转Integer int i = 0; Integer wrapperi = new Integer(i); 二、Integer转int Integer wrapperi = new Integer(0); int i = wrapperi.intValue();原创 2018-01-19 09:32:04 · 3574 阅读 · 0 评论 -
Java List 集合去除null元素
一、使用 for 循环处理集合思路:这种处理方式是把要处理的集合进行遍历,取出其中不为空的元素,添加到新的集合中public static <T> List<T> removeNull(List<? extends T> oldList) { // 临时集合 List<T> listTemp = new ArrayLi...原创 2018-03-05 11:03:30 · 23540 阅读 · 5 评论 -
Java8 jvm参数简介
一、用jmap命令输出 二、解析MaxHeapFreeRatio: GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比),则收缩堆内存的预估最大值, 预估堆内存是堆大小动态调控的重要选项之一. 堆内存预估最大值一定小于或等于固定最大值(-Xmx指定的数值). 前者会根据使用情况动态调大或缩小, 以提高GC回收的效率MinHeapFreeRatio:GC后如果发现空闲堆内存占到整...原创 2017-07-10 14:19:24 · 3123 阅读 · 0 评论 -
Java内存区域和GC机制
一、Java GC机制主要完成3件事:确定哪些内存需要回收,确定什么时候需要执行GC,如何执行GC。二、我们将从4个方面学习Java GC机制1、内存是如何分配的 2、如何保证内存不被错误回收(即:哪些内存需要回收) 3、在什么情况下执行GC以及执行GC的方式 4、如何监控和优化GC机制三、程序计数器用于指示当前线程所执行的字节码执行到了第几行,可以理解为是当前线程的行号指示器。字节码解释器在原创 2017-12-22 15:51:06 · 452 阅读 · 0 评论