Java
java开发基础
小姜dot
执着的小愤青
展开
-
【java】SimpleHttpConnectionManager being used incorrectly
目前生产上某一个合作方接口总是报错,排查日志发现如下提示报错日志:SimpleHttpConnectionManager being used incorrectly. Be sure that HttpMethod.releaseConnection() is always called and that only one thread and/or method is using this connection manager at a time.原因分析:通过资料发现SimpleHttpCon原创 2020-12-07 17:17:57 · 437 阅读 · 0 评论 -
【java】临时文件
原文参考: 老姜博客在日常开发中,我们通常需要先在服务端生成好文件,然后上传到fastdfs或者其他不易失的设备上,对于服务端的文件只是临时性的存放,操作完之后将会删除.如果每次需要指定文件名的话,其实对开发而已也是比较费劲的.java File的api中就提供创建临时文件的功能,这样比较方便大家使用.方法签名: public static File createTempFile(String prefix, String suffix)调用时可以指定文件的前缀和后缀,主要方便问题排查时使用.原创 2020-12-03 12:41:35 · 987 阅读 · 0 评论 -
【Java】Response约定
老姜博客了解更多:Response约定1 Response定义推荐使用如下格式:package cn.com.bestpay;public class Response<T> implements Serializable{ private Boolean success; private String errorCode; private String errorMsg; private T body; // 原错误码 priva.原创 2020-12-03 10:27:25 · 437 阅读 · 1 评论 -
【Java IO】File类的getPath, getAbsolutePath和getCanonicalPath的区别
这三个方法的理解很容易混淆,总结一下自己对这个方法的区别,首先为了理解这几个方法的区别有必要了解一下File这个类,File实例包含所代表的文件或者目录路径的信息,这个信息通常称之为抽象路径(Abstract Path).大家可能好奇了,为啥叫抽象路径,这里的主要原因是由于Java本身的跨平台特性,所以在路径表示的时候,路径信息并不应反映出具体对应的操作系统环境。另外,这个抽象路径可以包含操作系统特原创 2018-04-17 13:45:15 · 1910 阅读 · 0 评论 -
【Java基础】FileFilter
FileFilter主要被用来过滤给定目录下面的文件或者目录首先我们先看与喜爱FileFilter接口的定义:@FunctionalInterfacepublic interface FileFilter { /** * Tests whether or not the specified abstract pathname should be * included i原创 2018-04-20 09:51:07 · 1236 阅读 · 0 评论 -
【Java基础】FilenameFilter
FilenameFilter用来根据给定文件或者目录的名称进行过滤,和FileFilter功能类似,区别在于两者的形式.首先,看一下FilenameFilter的定义:@FunctionalInterfacepublic interface FilenameFilter { /** * Tests if a specified file should be ...原创 2018-04-20 10:09:33 · 3807 阅读 · 1 评论 -
【Java】设置单元测试类模板
在项目中需要使用hamcrest做assert,为了避免每次都要copy-paste,下面直接通过再Intellij IDEA里面进行设置,其他用途的设置也可以通过这种方式配置:原创 2018-09-19 17:26:35 · 1164 阅读 · 0 评论 -
【JVM学习系列】JDK、JRE和JVM的区别
想必大家经常看到大家提及到JDK、JRE和JVM的区别,尤其在面试中,作为JVM的开篇有必要对这几个概念进行梳理和澄清.1. JDKJDK(Java Development Kit)即Java开发工具,它主要包括两大部分: Java程序工具(Development Tools) javac(Java程序编译器)、javap(Java反编译工具)、jdb(Java调试工具)以及javadoc(原创 2017-01-06 21:54:04 · 402 阅读 · 0 评论 -
【JVM学习系列】 JVM内部架构
我们都知道字节码是由JRE解析执行的,但是可能并未了解JRE本身其实是对JVM的一种实现,JVM定义了如何去分析字节码、如何去解析字节码的意义以及如何去执行解析后的字节码.作为Java开发人员,如果我们对JVM的体系结构有一定程度的深入了解,将会有益于我们写出更加高效的Java应用.本文先对JVM的架构进行了大致的了解,在后续的章节中会对其中的每个部分进行深入的探讨.下面是JVM体系的概念图:为了方原创 2017-01-06 22:57:47 · 363 阅读 · 0 评论 -
【JVM学习系列】JVM特性
这里主要对JVM作为虚拟机器与真实机器在架构实现方面的差异进行一个比较,以便形成新的认知:Stack-based virtual machine The most popular computer architectures such as Intel x86 Architecture and ARM Architecture run based on a register. However,原创 2017-01-06 23:14:16 · 1126 阅读 · 0 评论 -
【JVM学习系列】ClassLoader(类加载器)
1. 为何需要ClassLoader?应用如果使用的是编译型语言例如C或C++,它们最终会编译成针对平台的可执行文件,这个过程中代码编译成可执行文件的过程称之为链接,主要目的是将多个编译后的obj文件合并成一个可执行的文件.然后,对于动态编译的语言(例如Java)情况就有所不同了,在Java环境中,编译器将代码编译成class文件,class文件将会保持不变,知道JVM需要将其加载到运行环境中,换句原创 2017-01-07 12:45:18 · 735 阅读 · 1 评论 -
【JVM】Perm Generation与Heap的关系
Java 6 stores all the constant pool and Class information in the Perm GenJava 7 only stores the class information in the Perm Gen. The String literal pool is on the heap.Java 8 has no Perm Gen. Th...转载 2018-08-09 16:53:54 · 2364 阅读 · 0 评论 -
【JVM】java版本对应的默认garbage collector
Java 7 : Parallel GC Java 8: Parallel GC Java 9: G1 GC Java 10: G1 GC各类型的GC工作的模型可以通过如下的图简单了解:参考: 1. https://stackoverflow.com/questions/33206313/default-garbage-collector-for-java-8...原创 2018-08-09 17:01:59 · 1726 阅读 · 0 评论 -
Java学习笔记: 线程的创建
多线程概念:多线程能够将任务放在不同的线程当中同时处理,可以有效的提高系统的资源使用,尤其针对多处理器对应用的提升更大。实现理念:把要进行处理的业务逻辑单元放在一个类当中,对于主线程而言就是创建这些类的对象,然后把每个对象作为一个线程进行启动,当中也涉及到多个线程的通信。实现方法:一 通过实现Runnable接口1 构建运行线程的类,该类需要实现Runnable接口,因此需原创 2014-09-25 10:17:55 · 796 阅读 · 0 评论 -
用synchonized实现多线程的消费者和生产者的模拟
consumer1 say: No food and I will wait consumer2 say: No food and I will wait producer1 say: I produce one and now counter is 1producer3 say: I produce one and now counter is 2producer2 say:原创 2014-09-25 16:31:37 · 794 阅读 · 0 评论 -
Java设计模式--Java设计模式介绍
设计模式是针对某一特定问题,被证明是一种行之有效的解决方法。例如,考虑一下情形:需要创建一个class, 这个class只需要实例化一次即可,这个实例对象可以被其他的类共享使用,这时就可以考虑单例模式 .设计模式代表一种思想,它并不是一种特定的实现。通过使用设计模式, 我们可以使编写出现的代码更加灵活,可重用和可维护性。Java语言本身在内部也遵循设计模式。对Java的核心部分, 可以大致的分为三大翻译 2015-09-02 23:13:16 · 942 阅读 · 1 评论 -
【java基础】Stack Memory VS Heap Memory
这篇文章是自己总结JVM中Stack Memory与Heap Memory的区别,1 Stack Memory解释2 Heap Memory解释heap memory主要是用来存储java程序创建的对象,例如new Object();此时,JVM会在heap memory分配一定的空间用来存储创建的Object对象.JVM中的垃圾回收机制主要的工作就是释放heap memory中不被其他任何对象引用原创 2016-06-01 23:20:03 · 2306 阅读 · 0 评论 -
【java基础】String Pool
String Pool正如它的名字所说明的那样,是在heap memory中保存一个字符串池.使用String Pool主要的目的是用来节省存储空间,一般java程序中分布着大量的字符串变量.Java中String对象的内容是不能被修改的,因此,如果字符串的内容是一样,就没有必要再重新创建一个新字符串对象来表示,完全可以把已经存在的对象作为返回,这样可以有效剩下空间.这种方式需要在定义字符串的时候使原创 2016-06-01 23:57:02 · 940 阅读 · 0 评论 -
Date、TimeStamp和Calendar的使用
Date在Java的日常开发中很重要原创 2016-08-18 10:51:39 · 1361 阅读 · 0 评论 -
10 Steps to Become an Outstanding Java Developer
Have strong foundation and understanding on OO Principles For a Java developer, having strong understanding on Object Oriented Programming is a must. Without having a strong foundation on OOPS, one ca转载 2016-08-18 11:39:16 · 685 阅读 · 0 评论 -
【Java基础】List
在应用开发中,基本上都会有读取资源的情况,这些资源包括文件系统的文件、ClassPath中的某个配置文件或者是网络上的文件,我们之前可以使用java.net.URL这个类去完成这个任务,但是在开发基于Spring框架的应用的时候,可以使用Spring原生提供的Resources接口来实现.1. Resource接口Spring 的Resources是一个抽象的接口,它可以被实现成各种场景下的资源访问原创 2016-09-26 00:29:19 · 367 阅读 · 0 评论 -
【Java基础】JVM介绍
JVM(Java Virtual Machine)是一种抽象的机器,它是一个定义Java程序执行环境的标准.大家在学习Java语言的时候,都被告知Java程序具有平台无关的特性,其实是通过JVM把平台相关性的东西给屏蔽了,JVM是依赖具体的软硬件环境,JVM通过隐藏底层硬件和操作系统的差异,向上提供统一的接口,这样就实现了Java程序“一次编译,到处运行”的目的. JVM是什么?可以从一下几个方面原创 2016-09-27 21:45:55 · 509 阅读 · 0 评论 -
【java基础】Class.getName()输出结果的解释
在学习Java Reflection的时候,打算通过Class.getName()方法了解具体的Class名称,package com.jiangjian.study.java.advanced.reflection;public class Sample { public static void main(String[] args) { byte[] a = new by原创 2017-02-09 20:40:23 · 9707 阅读 · 0 评论 -
【Java基础】Java注解中成员支持的类型说明
Java注解是java提供的一个很好的工具,那么在自定义注解的时候,其内部成员可被允许的类型又有哪些呢?根据 JLS中章节9.6.1 的说明,Java中注解成员的类型必须是如下几类: 1. 基本数据类型(boolean, byte, char, short, int, long, float, double等); 2. String; 3. Class; 4. 枚举; 5. 其他的注解;原创 2017-02-24 20:17:39 · 6376 阅读 · 0 评论 -
【java】BigDecimal使用注意
先看代码:import java.math.BigDecimal;public class BigDecimalDemo { public static void main(String[] args) { BigDecimal a = new BigDecimal(0.55); System.out.println(a); BigDecima原创 2017-07-03 15:08:04 · 456 阅读 · 0 评论 -
NoSuchMethod异常信息解释
在应用运行时候,我们可能会遇到java.lang.NoSuchMethod异常,问题基本上就是jar包的依赖存在问题。通常异常日志信息会同下面的信息类似:Exception in thread "main" java.lang.NoSuchMethodError: scala.Product.$init$()V这里我们该如何理解 scala.Product.initinit()V呢?其实上面的格式是原创 2017-09-06 17:17:21 · 6136 阅读 · 0 评论 -
【Java】静态绑定和动态绑定
在Java的方法调用上,存在静态绑定和动态绑定两种类型,下面对这两种类型的区别进行了举例:Java中的静态绑定是发生在编译阶段,然而动态绑定是在程序运行时发生的;private, final, static等修饰的方法和变量都是采用静态绑定的;静态绑定使用Java Class类型来获取信息的,然而动态绑定是使用当前运行时的对象来获取相关信息的;重载的方法使用静态绑定,而重写的方法使用动态绑定原创 2018-03-30 11:19:15 · 202 阅读 · 0 评论 -
【Java正则表达式系列】1. Java正则介绍
正则表达式对我们程序员来说应该经常听到,通常用来过滤日志,查找以及替换内容。这个系列总结Java正则的学习内容。1. 何为正则表达式?正则表达式(Regular expression)是用来表述一类某一类字符串集合的特性,通常被用来搜索、编辑和操作文本和数据。正则表达式有着自己的语法格式,这样得要求我们在学习正则表达式的时候,得了解其书写语法,它这里面的语法和具体的语言...原创 2018-04-24 10:16:25 · 550 阅读 · 0 评论 -
【Java正则表达式系列】2. 简单的正则匹配示例
本小节的目的是熟悉java平台提供的Pattern、Matcher和PatternSyntaxException类的使用。import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.regex.PatternSyntaxExcepti...原创 2018-04-24 10:33:23 · 664 阅读 · 0 评论 -
【Java正则表达式系列】3. 字符串
字符串在我们平常编程当中应该是被使用最多的类之一了,那么它跟正则表达式有什么关系呢?1. 字符串匹配java平台正则表表达式api提供的最基础的匹配就是这种字符串的匹配,这个概念很简单说明,比如: 正则表达式是:”foo”,带匹配的字符串是”foo”, 这种情况是匹配应该是成功的。我们可以通过实例来了解(测试代码请参见第二节):从上面可以了解到匹配成功,请注意我们的输入字符...原创 2018-04-24 11:23:39 · 375 阅读 · 0 评论 -
【Java正则表达式系列】4. Character Classes
1. Character Classes为何物?如果你阅读Pattern类的定义,你将会看到里面有一个表格总结了Pattern类所支持的正则表达式构造类型,下面是从中截取的。 Construct Description 翻译 [abc] a, b, or c (simple class) a, b或c (简单类型) [^abc] Any cha...原创 2018-04-24 12:49:38 · 1098 阅读 · 0 评论 -
【Java正则表达式系列】5. 预定义Character classes
上面一节中我们了解了character classes的相关内容,这一节,我们了解一下一些Pattern里面预定义的character classes. 这些预定义的character classes主要用来简化和方便我们使用character classes, 把一些通用的提取处理。1. 预定义Character Classes Construct Descriptio...原创 2018-04-24 13:47:07 · 404 阅读 · 0 评论 -
【Java正则表达式系列】6. Quantifiers(量词)
在前面的几个章节中,我们简单的学习了一些基本的正则表达式的一些元素,今天,我们来讨论一下Java 正则表达式重要的一个概念–Quantifiers(量词).啥为量词?从字面意义上可能和数量有关,其实Java 正则里面的量词被用来需要指定某种模式需要重复出现一定次数的情况,比如:我们想匹配100个连续的a, 当然了,你可以写100个a的正则表达式来达到同样的功能,但是,这种也太辛苦了,我们程序...原创 2018-04-26 11:45:31 · 1710 阅读 · 0 评论 -
【Java正则表达式系列】7 Capturing Groups(匹配组)
上一节中我们在学习Quantifier时候,也考察了和Capturing Groups结合的意义。本节主要对Capturing Groups进行描述一下。它的意义和用途很简单,它就是把一组字符串当做一个整体来看待,比如 (abc)我们就应该将字符串abc看做一个整体。输入匹配的字符串如果匹配Capturing Groups的正则内容,匹配引擎会将匹配部分的位置和信息记录在内存中,以便后续b...原创 2018-04-26 14:00:45 · 1422 阅读 · 0 评论 -
【Java正则表达式系列】8 Boundary Matcher(边界匹配)
我们之前的学习中,匹配是发生在输入字符串任意位置的,但是某些场景下,我们需要某些匹配仅仅对输入字符串的开始或者结尾处进行匹配,这就引入Boundary Matcher概念。通过约定特殊的语法格式来满足特定意义,在Java API中定义了如下的Boundray Construct. Boundary Construct Description ^ The begin...原创 2018-04-26 14:21:40 · 1975 阅读 · 2 评论 -
【Java基础】java major version
java class文件里面major version用来指定当前的class文件编译时所用的java版本,了解到这个,经常我们会遇见如下的报错:Unsupported major.minor version 52.0上面的提示信息说明当前运行的java版本不能支持,major version = 52代表的是java 8,当前运行环境的java版本可能的原因是版本过低,java版本是...原创 2018-08-02 10:37:34 · 3204 阅读 · 0 评论 -
【java】十六进制字符串转化为字节数组
public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (...原创 2018-08-17 11:42:20 · 6914 阅读 · 0 评论 -
【java】system property 和environment property
系统变量(system property)和环境变量(enviroment property)的区别对于java应用开发者而言应该要区分清楚:1. 概念说明enviroment property: 是系统级的环境变量,系统当中所有的进程都可以访问到,下面示例查看windows系统和linux系统的环境变量:centos7:win7:system property:是java应用程序自...原创 2018-09-18 13:39:20 · 7325 阅读 · 0 评论 -
【Java】Intellij IDEA 设置properties默认创建编码格式
在添加resourcebundle的时候发现创建的文件默认编码都是GBK,所以需要调整默认的格式,下面是IDEA中调整的菜单截图:原创 2018-09-25 10:15:39 · 4418 阅读 · 0 评论