Java
文章平均质量分 65
Andy_Zheng.
这个作者很懒,什么都没留下…
展开
-
git创建分支
版本控制原创 2023-02-02 17:49:20 · 191 阅读 · 1 评论 -
was expecting double-quote to start field name错误
JSON原创 2022-07-13 17:04:51 · 16741 阅读 · 1 评论 -
Java-classLoader双亲委派机制
java文件会被编译成class文件,而class文件就是通过类加载器classloader进行加载的,java中有BootStrapClassLoader、ExtClassLoader、AppClassLoader三类加载器。BootStrapClassLoader是使用c++编写的,用于加载java核心类库,是由jvm在启动时创建的,主要是加载JAVA_HOME/jre/lib目录下的类库;ExtClassLoader用于加载java扩展类库,主要是jre/lib/ext包下的类;AppCl.原创 2021-07-28 16:50:39 · 519 阅读 · 0 评论 -
Java8新特性
前言:Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus Interface in the JDK 8 Era。本文还参考了一些其他资料,例如:15 Must Read Java.原创 2021-07-28 15:49:34 · 190 阅读 · 0 评论 -
Java本地线程副本ThreadLocal详解
多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。 ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐ThreadLocal变量,那么访问这个变量的每原创 2021-07-27 17:21:45 · 697 阅读 · 0 评论 -
LocalDate用法简介
转载:https://my.oschina.net/mdxlcj/blog/16227183、Date3.1、JDK7 Date缺点1、所有的日期类都是可变的,因此他们都不是线程安全的,这是Java日期类最大的问题之一2、Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义3、java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,将其纳入java.sql包并不转载 2020-09-13 22:20:00 · 3366 阅读 · 0 评论 -
PO,BO,VO,DTO和POJO的区别
PO:persistent object 持久对象1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。2 .在hibernate持久化框架中与insert/delet操作密切相关。3 .PO中不应该包含任何对数据库的操作。POJO :plain ordinary java object 无规则简单java对象一个中间对象,可以转化为PO、DTO、VO。1 .POJO持久化之后==〉PO(在运行期,由Hibernate中的cgli转载 2020-08-15 22:41:23 · 1415 阅读 · 0 评论 -
TreeMap中如何实现自定义类key值的排序
在TreeMap中,如果key值是java中的基本类型,TreeMap会自身帮我们排序,如果是自定义类型,如定义一个Student类作为key值,我们如果不告知排序规则的话,运行就会报错。所以,如何实现自定义排序呢?解决方案有2个,二者选一即可:在Student类中实现Comparable,重写compareTo方法在构造函数中new Comparator,匿名内部类,重写compare 方...原创 2018-10-17 14:07:40 · 4152 阅读 · 0 评论 -
通过环境变量修改java版本不生效
在现公司,遇到一个问题,就是配置JAVA_HOME无效,不管怎么改,运行Java -version始终是最初的那个java版本。直接在PATH环境变量里追加写死的java路径也没用。解决过程 在网上看到有些工程师说删除 C:\WINDOWS\system32目录下的java.exe、javac.exe等exe程序。因为系统会优先在这个目录下寻找,然后才去找JAVA_HOME环境变量。因...转载 2018-09-04 09:18:30 · 1622 阅读 · 3 评论 -
Java反射机制
反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射机制能做什么反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法; 在运...转载 2018-07-20 17:09:05 · 116 阅读 · 0 评论 -
annotation(@Retention@Target)详解
一、注解:深入理解JAVA注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。1、元注解(meta-annotation): 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java...转载 2018-07-26 09:06:38 · 161 阅读 · 0 评论 -
Java中的String、StringBuilder以及StringBuffer
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String、StringBuffer、StringBuilder 三.不同场景下三个类的性...转载 2018-07-06 10:13:25 · 147 阅读 · 0 评论 -
Java变量(属性)的覆盖
class ParentClass { public int i = 10; } public class SubClass extends ParentClass { public int i = 30; public static void main(String[] args) { ParentClass parentClass...转载 2018-07-05 16:06:54 · 1739 阅读 · 0 评论 -
java内存管理(堆、栈、方法区)
java内存管理简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决。因此,了解并掌握Java的内存管理是我们必须要做的是事,也只有这样才能写出更好的程序,更好地优化程序的性能。概述 Java虚拟机在执行...转载 2018-07-05 11:31:46 · 234 阅读 · 0 评论 -
Java类的初始化顺序
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。初始化顺序图示:我们也可以通过下面的测试代码来验证这一点:package com.trs.oop;/** * 类的初始化顺序 * 静态变量->静态初始化块->变量->初始化块->构造器 * @author xiayunan...原创 2018-07-05 10:03:23 · 41149 阅读 · 7 评论 -
Javac不是内部或外部命令
当输入javac命令时候,系统会在Path环境变量中找jdk的路径,正常情况下,配置完JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_91CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(变量值前面有点号和分号,后边结尾也有分号)PATH:%JAVA_HOME%\bin;(就是j...原创 2018-07-05 08:21:50 · 3083 阅读 · 0 评论 -
深入理解Java:String
在讲解String之前,我们先了解一下Java的内存结构。 一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存。简单来说,非堆包含方法区、JVM内部处理...转载 2018-07-04 22:01:05 · 453 阅读 · 0 评论 -
Java获取某年某月的第一天和最后一天
public static String getLastDayOfMonth(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, mo...原创 2018-12-03 09:07:06 · 1389 阅读 · 0 评论 -
使用Joda-Time优雅的处理日期时间
在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大,于是就诞生了Joda-Time这个专门处理日期时间的库。由于Joda-Time很优秀,在Java 8出现前的很长时间内成为Java中日期时间处理的事实标准,用来弥补JDK的不足。在Java 8中引入的java.time包是一组新的处理日期时间的API,遵...转载 2018-12-20 10:37:36 · 901 阅读 · 0 评论 -
MYSQL系统学习(四)——explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。1.explain的作用通过explain+sql语句可以知道如下内容:①表的读取顺序。(对应id)②数据读取操作的操作类型。(对应select_type)③哪些索引可以使用。(对应possib...原创 2019-08-23 16:50:27 · 139 阅读 · 0 评论 -
App保持登录状态的常用方法
我们在使用App时,一次登录后App如果不主动退出登录或者清除数据,App会在很长一段时间内保持登录状态,或者让用户感觉到登录一次就不用每次都输入用户密码才能进行登录。银行、金融涉及到支付类的App一般不支持这种长时间的登录状态保持。对于保持长期登录的技术实现方式,除了和前端技术有关,还涉及到前后台的通讯连接方式、后台提供的服务方式等有关。比如前端App是前端技术是原生加H5实现的,那选择的技术可...转载 2019-04-15 14:14:09 · 2279 阅读 · 0 评论 -
JSONObject.toBean String转Date类型的处理
核心代码:String[] dateFormats = new String[]{"yyyy-MM-dd"};JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));原创 2019-04-22 14:57:04 · 1467 阅读 · 0 评论 -
加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,...转载 2019-03-01 11:19:58 · 670 阅读 · 0 评论 -
服务器端乱码问题总结
Javaweb项目中提交表单上传到服务器的编码是乱码,如下图所示:乱码问题,无非就是编解码不一致,常见问题有如下几种,应用服务器编码,数据库编码,连接数据库指定的URL:1、tomcat字符编码格式关于URIEncodingThis specifies the character encoding used to decode the URI bytes, after %xx ...原创 2019-02-19 10:51:29 · 1966 阅读 · 0 评论 -
Github 热门Java项目一览
今天逛了逛Github,顺手精选出了一下近几个月以来Github上最热门的12个Java项目。如果遇到自己感兴趣的开源项目,不妨去学习一下哦!1. java-design-patterns(Star:36k)Github地址:https://github.com/iluwatar/java-design-patterns介绍:设计模式是形式化的最佳实践,程序员可以在设计应用程序或系统...转载 2019-02-12 14:28:05 · 1193 阅读 · 0 评论 -
Java并发编程网址链接:
并发编程网:http://ifeve.com/java-7-concurrency-cookbook/原创 2019-01-29 14:35:30 · 190 阅读 · 0 评论 -
mybatis动态sql条件为Integer的注意事项
例如如下拼接的动态sql<if test="work_status !=null and work_status !='' "> and T.status=#{work_status,jdbcType=INTEGER}</if>当work_status为0时,Mybatis会将0解析为了空字符串‘’,这样if判断就为false,如果想正确添加and后的...原创 2019-01-16 22:10:14 · 647 阅读 · 0 评论 -
Java判断字符串是否为金额
/** * 判断字符串是否是金额 * @param str * @return */ public static boolean isNumber(String str){ java.util.regex.Pattern pattern=java.util.regex.Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\...转载 2019-01-24 16:05:02 · 10370 阅读 · 1 评论 -
Java泛型--上界通配符和下界通配符
转自:Java泛型中extends和super的区别?另,问题来源:Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同? <? extends T>和<? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。<? extends T>:是指 ...转载 2018-12-29 15:14:52 · 1022 阅读 · 0 评论 -
JAVA中循环删除list中元素的方法总结
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。 1、for循环遍历list...转载 2018-12-29 12:37:11 · 172 阅读 · 1 评论 -
java:String使用equals和==比较的区别
"=="操作符的作用1、用于基本数据类型的比较2、判断引用是否指向堆内存的同一块地址。equals所在位置:在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写public boolean equals(Object obj) { return (this == obj); }equals的作用:用于判断两个变量是否是对...转载 2018-07-04 21:37:38 · 152 阅读 · 0 评论 -
有效处理Java异常的三个原则
Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮、易于调试。异常之所以是一种强大的调试手段,在于其回答了以下三个问题:什么出了错? 在哪出的错? 为什么出错?在有效使用异常的情况下,异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出,如果你的异常没有回答以上全部问题,那么可能你没有很好地使用它们。有三个原则可...转载 2018-07-17 14:09:22 · 404 阅读 · 0 评论 -
Integer 中的缓存类IntegerCache
2014年去某公司笔试的时候遇到这么一道题:public class Test { public static void main(String[] args) { Integer int1 = Integer.valueOf("100"); Integer int2 = Integer.valueOf("100"); System.out....转载 2018-06-29 08:08:51 · 554 阅读 · 0 评论 -
深入理解Java中的IO
引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如下: Java IO概要 a.Java IO中常用的类 b.Java流类的类结构图 1.流的概念和作用 2.Java IO所采用的模型 : 3.IO流的分类 4.Java IO流对象 1.输入字节流Inp...转载 2018-05-09 16:50:52 · 249 阅读 · 0 评论 -
java缩放图片、java裁剪图片代码工具类
一首先看下效果二工具类三测试类在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统一大小的图片。所以我们需要对用户上传的图片进行缩放和裁剪,这里的缩放和平常的压缩不是一个意思,因为要实现小的图片会放大,大的图片会缩小,而且是等比例变的,图片不会显示挤压的效果。而这种操作Java完全可以实...转载 2018-04-02 10:04:20 · 674 阅读 · 0 评论 -
Java基础--定时任务Timer
一、Timer介绍 java.util.Timer java.util.TimerTaskTimer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类,如下所示: public abstract class TimerTask implements Runnable 可以通过继承该类,转载 2018-01-04 18:17:55 · 260 阅读 · 0 评论 -
Java中常用的异常处理方法
觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?1 OutputStreamWriter out = ...2 java.sql.Connection conn = ...3 try { // ⑸4 Statement stat = conn.createStatemen转载 2017-12-07 10:12:35 · 540 阅读 · 1 评论 -
Java递归实现目录复制
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.In原创 2017-08-13 15:19:41 · 381 阅读 · 0 评论 -
java.lang.OutOfMemoryError处理错误
原因: 常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3.代码中存在死循环或循环产生过多重复的对象实体;4.使用的第三方软件中的BUG;5.启动参数内存值设定的过小;常见错误提示: 1.tomcat:java.lang.OutOfMemoryError: PermGen spac转载 2017-08-02 15:51:22 · 219 阅读 · 0 评论 -
Java类加载机制
1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java转载 2017-07-24 09:16:17 · 235 阅读 · 0 评论