【Java-SE】
YvesHe
人的痛苦大部分来源于自我怀疑。
展开
-
Java规范| 理解的Java中SPI机制
本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。1 SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基..转载 2020-09-14 20:53:24 · 192 阅读 · 0 评论 -
Java| Java原生日志
Java 原生日志:java.util.logging.LogManager#readConfiguration()...String fname = System.getProperty("java.util.logging.config.file");if (fname == null) { fname = System.getProperty("java.home"); if (fname == null) { throw new Error("Can't fi原创 2020-09-07 14:23:19 · 308 阅读 · 0 评论 -
Java| 获取本机IP
获取本机IP原创 2020-08-24 16:47:50 · 96 阅读 · 0 评论 -
Java8特性总览
改进接口现在可以在接口中定义静态方法了。例如,java.util.Comparator接口中现在拥有一个静态的naturalOrder方法。public static <T extends Comparable<? super T>> Comparator <T>naturalOrder() { return (Comparator<T>) Cmparators.NaturalOrderComparator.INSTANCE;}还能够在接口中提供默原创 2020-05-11 14:16:41 · 187 阅读 · 0 评论 -
Java8| 新特性说明
改进接口现在可以在接口中定义静态方法了。例如,java.util.Comparator接口中现在拥有一个静态的naturalOrder方法。public static <T extends Comparable<? super T>> Comparator <T>naturalOrder() { return (Comparator<T>) Cmparators.NaturalOrderComparator.INSTANCE;}还能够在接口中提供默原创 2020-05-09 15:10:03 · 170 阅读 · 0 评论 -
Java| String, StringBuffer和tringBuilder之间的区别?
String字符串在 java 中是不可变的,而且是最终的,因此每当我们进行 String 操作时,就会创建一个新的 String。字符串处理是一种资源消耗,所以 java 提供了两个字符串操作的实用类—— StringBuffer 和 StringBuilder。 StringBuffer 和 StringBuilder 是可变类。 Stringbuffer 操作是线程安全和同步的,其中 Str...原创 2018-10-19 11:55:11 · 677 阅读 · 0 评论 -
Java| String的split方法是如何分割字符串的?
在Java程序中我们经常会用到字符串的分隔,例如分裂 CSV 文件中的数据来获取所有不同的值。Java中提供了一下两个方法来分隔字符串public String[] split(String regex)public String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此字符串。此方法返回的数组包含此字符串的子字符串,每个子字符...原创 2018-10-25 19:54:38 · 1873 阅读 · 0 评论 -
Java| String 字符串拼接方法 concat 和 + 效率比较
测试代码:public static void main(String[] args) { String str1 = "yveshe"; String str2 = "hello"; /** * concat */ System.gc(); long startTime1 = System.currentTimeMillis();...原创 2018-10-25 19:54:19 · 6397 阅读 · 0 评论 -
Java| String总结
String.valueOf和Integer.toString的区别原创 2018-10-17 19:48:54 · 371 阅读 · 0 评论 -
Java| String.valueOf和Integer.toString的区别
示例代码:int i = 4;String i1 = "" + i; //String i1 = (new StringBuilder()).append(i).toString();String i2 = String.valueOf(i); // public static String valueOf(int i)String i3 = In...原创 2018-10-17 19:45:28 · 2052 阅读 · 0 评论 -
Java| Charset.defaultCharset()和file.encoding的关系
一. Charset.defaultCharset()系统默认编码字符集介绍说明:返回此 Java 虚拟机的默认 charset。默认 charset 在虚拟机启动时决定,通常根据语言环境和底层操作系统的 charset 来确定。Charset.defaultCharset()是操作系统的编码,可以通过虚拟机启动时指定属性-Dfile.encoding=UTF-8,来更改Charset.de...原创 2018-10-17 18:04:20 · 3938 阅读 · 0 评论 -
Java| 深入解析String中的intern
引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String...转载 2018-10-19 19:58:44 · 248 阅读 · 0 评论 -
Java| StringBuilder与StringBuffer在单线程下的性能测试
本文将在单线程的场景下测试Stringbuilder 与StringBuffer 的相关性能.下面的代码我将针对 StringBuffer 和 StringBuilder 对象在执行多次 append()andinsert() 后对比对程序性能的影响.package com.yveshe;import java.util.GregorianCalendar;public class ...原创 2018-10-19 19:58:08 · 2244 阅读 · 0 评论 -
Java| 什么是字符串常量池( String Pool )?
顾名思义,Java 中的字符常量串池( String Pool )是一个存储在 Java 堆内存中的字符串池。 我们知道 String 是 java 中的特殊类,我们可以使用 new 操作创建 String 对象,也可以使用双引号来创建 String 对象.字符串常量池在哪里?字符串常量池 ( String Pool )存在于方法区在分析字符串常量池的位置时,首先了解一下堆、栈、方法区:...原创 2018-10-25 19:54:52 · 1633 阅读 · 0 评论 -
String 设计成不可变类的好处? OR 为什么要将String设计成不可变化的?
为什么String在 java 中是不可变的? 这是一个受欢迎的面试问题。 字符串是任何编程语言中使用最多的类之一。 我们知道 String 在 java 和 java 运行时是不可变(immutable )和最终(final)的,使用 String pool来维护,使它成为一个特殊类。让我们来看看字符串不可变性的一些好处,这些好处有助于我们来理解为什么 String 在 java 中是不可变...原创 2018-10-23 20:21:01 · 1140 阅读 · 0 评论 -
Java| Java加载资源文件的两种方法getResource与getResourceAsStream
一. Class 的getResource与getResourceAsStreamgetResourcepublic URL getResource(String name)查找带有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。此方法委托给此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSyst...原创 2019-06-13 19:47:09 · 920 阅读 · 0 评论 -
Java| Javadoc生成Java帮助文档
一.JavaDoc介绍Javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档。比如官网JDK1.7API二.注释的种类 /** * 注释种类3 * * @param args原创 2017-11-16 19:59:50 · 8800 阅读 · 3 评论 -
Java| unsupported major.minor version 52.0解决办法
1.首先解释一下报错原因:stanford parser和jdk版本对应关系J2SE 8 = 52,J2SE 7 = 51,J2SE 6.0 = 50,J2SE 5.0 = 49,JDK 1.4 = 48,JDK 1.3 = 47,JDK 1.2 = 46,JDK 1.1 = 45Unsupported major.minor version 52.0...转载 2019-06-20 19:38:04 · 10766 阅读 · 0 评论 -
Java| 资源的国际化处理
文章目录1、使用ResourceBundle访问本地资源2、读取国际化文件3、认识Locale1、使用ResourceBundle访问本地资源在设计时,我们往往需要访问一些适合本地修改的配置信息,如果作为静态变量,那么每次修改都需要重新编译一个class,.config保存此类信息并不适合,这时我们需要ResourceBundle。 通过ResourceBundle,我们需要访问位于/W...原创 2019-06-11 14:11:02 · 886 阅读 · 0 评论 -
Java| 我们可以在Switch中使用String吗?
这个问题主要用来检查你对当前 Java 开发的了解。 Java 7扩展了 switch case 使用字符串的能力,早期的 Java 版本不支持这一点。如果您正在实现字符串的条件流,您可以使用 if-else 条件,如果您使用 Java 7或更高版本,则可以使用 switch case。在 Java 7之前,实现基于字符串的条件流的唯一方法是使用 if-else 条件。 但是 Java 7也改进...原创 2018-10-19 10:25:14 · 35140 阅读 · 2 评论 -
Java| String s=new String("abc")和Stirng s = "abc"的区别
大纲一.使用&amp;quot;&amp;quot;创建String对象的规则(String s1 = &amp;quot;yveshe&amp;quot;)二使用new关键字创建String对象的规则(String s= new String(&amp;quot;YvesHe&amp;quot;))三.使用+操作符号创建的String对象四.`String s = new String(&amp原创 2018-10-18 20:21:43 · 1740 阅读 · 0 评论 -
Java| 命令行运行Java程序(Jar或Class)
在前面的文章中,我们已经知道如何使用javac来编译java文件和运行简单的单个class文件了,命令行编译Java程序以及运行class文件,本篇文章主要讲归纳讲解下通过命令行来运行java程序命令行运行java程序的两种方式: 方式一: 直接使用java -jar yveshe.jar的方式来运行,这里在yveshe.jar中的项目清单文件MANIFEST.MF需要配置Main-Class属原创 2018-04-26 20:38:52 · 12480 阅读 · 0 评论 -
Java| Java的类加载顺序
Agent.java/** * 静态块中只能调用在该静态块 之前声明的静态变量 * * 普通块中只能调用在该普通块 之前声明的普通变量 * * * 调用final 修饰的字段是不会加载类的,但是调用final 修饰的方法事会加载 * * @author Yves He * */public class Agent { private String genStr原创 2017-08-20 21:02:29 · 303 阅读 · 0 评论 -
Java| Java特殊注释(XXX,TODO,FIXME)解释说明
测试代码package cn.com.yves;public class Test { public static void xxx() { // XXX 勉强可以工作,但是性能差等原因. } public static void todo() { // TODO 表示需要实现,但目前还未实现的功能. } public static原创 2017-10-16 13:55:56 · 4556 阅读 · 0 评论 -
Java| 编码格式介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
编码一直是让新手头疼的问题,特别是 GBK、GB2312、UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚。但是编码又是那么重要,特别在网页这一块。如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了。此外除了乱码之外,还会出现一些其他问题(例如:IE6 的 CSS 加载问题)等等。我写本文的目的,就是要彻底解释清楚这个编码问题!如果你遇到转载 2017-10-19 20:09:04 · 12004 阅读 · 0 评论 -
Java| Java异常新理解RuntimeException(不抛出异常,程序运行时出错会有错误信息)
在程序设计时,我们一般都是像外面抛出需要捕获的异常,这里的RuntimeException异常时不需要捕获的,也就是说在调用clone方法时是不需要捕获异常的,但是在程序运行时,如果出错,在日志或控制台里还是有异常堆栈信息显示的.但是我们再设计程序时一般不建议这样使用. @Override public Object clone() { JRBaseElement cl原创 2017-10-26 20:44:02 · 3298 阅读 · 0 评论 -
Java| Java 运算符
Java 运算符: 分类: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符https://www.w3cschool.cn/java/java-operators.html原创 2017-12-16 13:52:14 · 314 阅读 · 0 评论 -
Java| 调试JDK源码
博主在在实际的Java学习中,有时候想看看JDK的源码,甚至是在程序运行期间想看看某些源码中变量的值,这时候我们就地来对JDK的源码来进行调试,比如在调试HashMap.1.导入源码 在JDK的安装目录下有一个src.zip的文件,这个文件就是rt.jar的源码文件. 选中项目后配置Build Path如下: 这时候我们就点击JDK的类文件就可以直接查看到源码了.原创 2017-12-16 12:56:31 · 4571 阅读 · 3 评论 -
Java| Java中字节Byte和位Bit的关系
Java中字节容量关系1TB=1024GB TB是千千兆 1GB=1024MB GB是千兆 1MB=1024KB MB是兆 1KB=1024Byte KB是千字节 注意:Byte的缩写是B也就是字节 Byte(缩写B)月Bit(缩写b)的关系Byte:1B=8b 也就是说1字节等于8个比特.参考: http://www.cnblogs.原创 2017-12-15 22:36:36 · 8479 阅读 · 4 评论 -
Java| 时间日期处理(SimpleDateFormat,Calendar,Date)
介绍:在实际开发过程中经常会需要将Date类型的数据封装成XML或Json格式在网络上进行传输,这样就面临这String 类型的日期和Date类型日期互转的情况。在JDK1.1之前可以使用newDate(“”)来将String类型的日期转换成Date类型的对象。但自JDK1.1开始已将不建议这样做了。本文主要介绍一下用SimpleDateFormat类来将String类型的日期与Date对象的互转.原创 2017-09-22 11:59:49 · 1198 阅读 · 0 评论 -
Java| Java方法中返回多个返回值
有时候需要一个函数返回多个值./** * Filename: Test.java * Copyright: Copyright (c)2016 * Company: Yves * @version: 1.0 * Create at: 2017-3-13 下午8:27:30 * Description: * * Auth原创 2017-03-13 20:33:02 · 7124 阅读 · 0 评论 -
Java| enum枚举(1)
定义枚举package cn.com.yves.enumeration.api1;/** * 所有自定义的枚举都继承抽象类:java.lang.Enum * * 注意:所有自定义枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。 * * @author Yves He * */public enum Car { /**原创 2017-06-22 23:52:32 · 443 阅读 · 0 评论 -
Java| 正则表达式之Pattern
正则表达式开发思路首先写出正则表达式的匹配模型, 然后针对java写出java版的匹配模型.运用javaAPI Pattern 类和Matcher类来是实现java的正则匹配.首先在匹配模式中最简单的正则表达式是不经过任何转义的,比如直接输入的英文字母s,就是代表要要匹配字母s如果要匹配两个ss,当然还可以用到正则表达中关于数量的符号 s+,这个表达式代表着要匹配到的是s为最少一个,+代表最少一个原创 2017-04-06 23:39:35 · 1217 阅读 · 0 评论 -
Java| enum枚举(2)
定义枚举package cn.com.yves.enumeration.api2;/** * 枚举 --相当于类的概念 * * @author Yves He * */public enum Phone { /* 定义枚举Phone的实例(一定得放在第一行),相当于在构造方法中传入了两个参数 ,参数可以是多个,与相应的构造函数相匹配 */ IPHONE("iphone7",原创 2017-06-22 23:55:40 · 430 阅读 · 0 评论 -
Java| Java对象克隆Clone(1)
在程序开发过程中,有时候我们需要一个对象的副本,我们对该副本的操作不能影响到原对象中的数据,这时候,我们就需要对该对象进行一个复制版本,也就是我要说的克隆Clone.clone方法原型介绍在讲对象的克隆之前,我们先来了解一下Clone方法存在哪里,Clone方法是Object类中声明的一个protected访问权限的本地方法. clone方法原型如下: protected native Ob原创 2017-09-22 19:47:27 · 401 阅读 · 0 评论 -
Java| Java中转义字符和路径符
在java的实际开发中,经常会遇填写一个文件的相对路径或者是绝对路径的问题,对于初学者来说,经常犯难的是到底是用\ 还是用/的问题,本文将彻底解决这个问题的困扰.先来看要下路径符号在windows系统和再linux系统写的显示使用的区别: Windows下的路径: Linux下的路径: 对比可以发现:windows使用的是\ linux使用的是/ 然而在java的代码开发中\是代表转义字原创 2017-04-04 13:53:12 · 10386 阅读 · 0 评论 -
Java| Java基础还得从头来
基本概念● 操作系统中 heap 和 stack 的区别 ● 什么是基于注解的切面实现 ● 什么是 对象/关系 映射集成模块 ● 什么是 Java 的反射机制 ● 什么是 ACID ● BS与CS的联系与区别 ● Cookie 和 Session的区别 ● fail-fast 与 fail-safe 机制有什么区别 ● get 和 post请求的区别转载 2017-12-07 19:30:43 · 422 阅读 · 0 评论 -
Java| MANIFEST.MF讲解
在Java平台中, 清单文件(Manifest file)是JAR档案中包含的特殊文件。Manifest文件被用来定义扩展或档案打包相关数据,是一个元数据文件,它包含了不同部分中的名/值对数据。如果一个JAR文件被用来作为可执行文件,那么其中的Manifest文件需要指出该程序的主类文件。通常Manifest文件的文件名为MANIFEST.MF。JAR文件可以可选地在META-INF目...原创 2018-04-26 18:35:50 · 11169 阅读 · 0 评论 -
Java| 命令编译Java程序以及运行class文件(javac)
本文主要说明了一下内容: 1.如何编译一个无包结构的java文件,以及运行该文件? 2.如何编译一个有包结构的java文件,以及如何运行该文件? 3.如何批量编译java文件,以及如何运行生成的文件?首先我们先看下javac命令的常用操作选项: 常用参数: -encoding <编码> 有时候当我们的java文件不是默认的GBK编码的时候是需要在编译Class的时原创 2018-04-25 20:07:10 · 12422 阅读 · 0 评论 -
Java| 编译和反编译
原文链接: http://www.yveshe.com/articles/2018/05/01/1525172129089.html什么是编程语言? 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(High-level La...原创 2018-04-20 15:49:18 · 33999 阅读 · 5 评论