
Java
文章平均质量分 69
福州司马懿
大家如果觉得文章有帮助,给我个关注。谢谢大家 (+_+),失业了球介绍工作
展开
-
现在这个年代,还有必要进行JVM调优吗?
随着技术的不断发展,软件开发行业也在日新月异地进步。在过去的几十年里,Java语言和Java虚拟机(JVM)在开发企业级应用方面扮演了重要角色。然而,随着硬件和软件的进步,以及JVM本身的改进,人们开始质疑在现代时代是否仍然有必要进行JVM调优。本文将探讨这个问题,并提供一些观点供读者参考。原创 2023-06-26 21:49:34 · 514 阅读 · 0 评论 -
检测连接数据库的配置是否正确
调用getConnection()时会连接数据库,可以用来判断配置的连接信息是否正确。原创 2023-06-21 13:55:43 · 681 阅读 · 0 评论 -
为何RuntimeException不需要捕获
在程序的运行过程中一个checked exception被抛出的时候,只有能够适当处理这个异常的调用方才应该用try/catch来捕获它。而对于runtime exception,则不应当在程序中捕获它。如果你要捕获它的话,你就会冒这样一个风险:程序代码的错误(bug)被掩盖在运行当中无法被察觉。因为在程序测试过程中,系统打印出来的调用堆栈路径(StackTrace)往往使你更快找到并修改代码中的错误。有些程序员建议捕获runtime exception并纪录在log中,我反对这样做。原创 2023-06-21 13:35:38 · 694 阅读 · 0 评论 -
修改MySQL最大连接数 max_connections
控制传统MySQL客户端连接的最大连接数控制MySQL X协议连接的最大连接数这两个参数可以独立设置,允许对不同协议的连接数进行不同的限制。原创 2023-06-13 10:40:51 · 8060 阅读 · 0 评论 -
Java 深入理解 instanceof
instanceof 是 Java 中的一个二元操作符,它的作用是测试左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。不适用的元素由于 instanceof 是用来判断类实例的,因此 Java 中的八种基本数据类型就不能使用该关键字了八种基本类型分别是byteshortintlongfloatdoublebooleanchar基本类型的包装类型整数...原创 2020-01-17 22:00:27 · 1559 阅读 · 0 评论 -
Java 创建 List 和 Map 同时赋初值的 5 种方式
一、最常见的初始化方式先创建,再添加元素List从源码可以看出:List 的默认长度为10递增后的长度为先前长度的 1.5 倍最大长度是 Integer.MAX_VALUE,即 2,147,483,647 或 0x7f ff ff ffList<String> list = new ArrayList<>();list.add("str1");list...原创 2020-01-16 14:53:40 · 10123 阅读 · 0 评论 -
Java 删除文件夹
在Java中删除文件或文件夹的API是File.delete()该API在删除文件夹时有个陷阱,就是只能删除空文件夹,不能删除那些内部包含文件的文件夹!!!比如,现在有个需求要删除SVN目录下的编译文件夹,就可以使用如下方法删除private static String[] DELETE_DIRS = {"bin", "gen", "target", "build"}; public ...原创 2019-03-26 18:57:13 · 961 阅读 · 0 评论 -
Spring AOP 和 动态代理
转自:https://blog.csdn.net/eson_15/article/details/84933442我们知道,Spring 中 AOP 是一大核心技术,也是面试中经常会被问到的问题,最近我在网上也看到很多面试题,其中和 Spring AOP 相关的就有不少,这篇文章主要来总结下相关的技术点,希望对大家有用。0. 几个常见的问题针对这一块的东西,一般下面几个问题面试官问的比较多:...转载 2018-12-13 09:42:31 · 1183 阅读 · 1 评论 -
Java Byte.parseByte() NumberFormatException
最近在做pinblock加密的时候遇到一个问题:将String的 “FE” 作为 Byte 类型,结果报错 NumberFormatException,其实就是值越界了。因为 byte 的范围是 -128~127,Byte.parseByte() 会把 value 当作一个无符号 byte 来转换,其值就是 254,毫无问题。可问题是 java 的 byte 它就是一个 sbyte(sign...原创 2018-11-23 18:57:28 · 2050 阅读 · 0 评论 -
Java Class.isAssignableFrom(Class) 与 instanceof 的区别
superClass.isAssignableFrom(childClass) 属于 Class.java。它的对象和参数都是类,意思是“父类(或接口类)判断给定类是否是它本身或其子类”。我们看一下它的源码public boolean isAssignableFrom(Class<?> c) { if (this == c) { //如果两个类是相同的,那么直接返回真原创 2017-03-23 14:53:08 · 3680 阅读 · 0 评论 -
Java volatile 关键字
读书笔记《Effective Java》位域表示法允许利用位操作,有效地执行先 union(联合)和 intersection(交集)这样的集合操作。但是位域有着int枚举常亮的所有缺点,甚至更多。当位域一数字形式打印时,翻译位域比翻译简单的int枚举常量要困难得多。甚至,要遍历位域表示的所有元素都没有很容易的方法。//Bit field enumeration constant - OBSOLET原创 2016-12-20 20:49:24 · 1174 阅读 · 0 评论 -
Java EnumMap 代替序数索引
学习笔记《Effective Java 中文版 第2版》经常会碰到使用Enum的ordinal方法来索引枚举类型。public class Herb { public enum Type { ANNUAL, PERENNIAL, BIENNIAL }; private final String name; private final Type type; Herb(St原创 2016-12-20 17:26:32 · 1742 阅读 · 0 评论 -
Java EnumSet 代替位域
读书笔记《Effective Java》位域表示法允许利用位操作,有效地执行先 union(联合)和 intersection(交集)这样的集合操作。但是位域有着int枚举常亮的所有缺点,甚至更多。当位域一数字形式打印时,翻译位域比翻译简单的int枚举常量要困难得多。甚至,要遍历位域表示的所有元素都没有很容易的方法。//Bit field enumeration constant - OBSOLET原创 2016-12-20 15:53:28 · 2077 阅读 · 0 评论 -
Java Base64
JDK中的Base64演化流程Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。在JDK1.6之前,JDK核心类一直没有Base64的实现类。一般通过反射调用 Sun/Oracle JDK 里面的 sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder,使用它的优点就是不需要依赖第三方类库,缺点就是可能在未来版本会被删除(用maven原创 2016-12-15 16:50:15 · 2199 阅读 · 0 评论 -
Java 可变长参数
原理Java可变长参数列表的实现是通过编译器把把这些参数封装成一个数组来传递的。注意点可变成参数列表不能与同类型数组重载,因为它本身就是数组void print(int... args) { }//Error : Duplicate method printvoid print(int[] args) { }可变成参数类型不能与自动装箱后类型相同的方法重载void print(int... arg原创 2016-12-12 10:49:13 · 1255 阅读 · 0 评论 -
Java final关键字
转自 http://www.importnew.com/7553.html前言Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。fina转载 2016-12-07 09:33:18 · 1162 阅读 · 0 评论 -
Java json(com.google.gson)
JSON 官方文档http://www.json.org/ JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is原创 2016-12-06 11:41:35 · 7754 阅读 · 3 评论 -
Java StringBuffer和StringBuilder的区别
简介之所以要使用StringBuffer或者StringBuilder是因为:字符串本身是不可变的,而字符串拼接符“+”,实际上就相当于C++中的操作符重载函数,它的参数为2,因此在拼接次数较多的时候会产生大量的零时变量,并且不断地申请和释放资源,造成大量的时间和空间上的浪费。而StringBuffer和StringBuilder均继承自AbstractStringBuilder,它的本质是使用原创 2016-12-06 10:19:33 · 1158 阅读 · 0 评论 -
Java hashCode 的正确求值方法
散列表有一项优化,可以将对象的散列码(hashCode)缓存起来,如果散列码不匹配,就不会检查对象的等同性而直接认为成不同的对象。如果散列码(hashCode)相等,才会检测对象是否相等(equals)。如果对象具有相同的散列码(hashCode),他们会被映射到同一个散列桶中。如果散列表中所有对象的散列码(hashCode)都一样,那么该散列表就会退化为链表(linked list),从而大大降低原创 2016-12-01 14:26:00 · 1947 阅读 · 0 评论 -
Java 正则表达式——贪婪匹配、惰性匹配、支配匹配
简介贪婪匹配先看看整个字符串是否存在匹配,如果未发现匹配,则去掉字符串中的最后一个字符,再次尝试匹配,如果还是未发现匹配再去掉最后一个字符,循环往复直到发现一个匹配或者字符串不剩任何字符串。简单量词都是贪婪量词。惰性匹配先看看字符串的第一个字母是否存在匹配,如果未发现匹配,则读入下一个字符,再次尝试匹配,如果还是未发现匹配则再读取下一个字符,循环往复直到发现一个匹配或者整个字符串都检查过也没有发现匹原创 2016-11-27 22:41:30 · 7693 阅读 · 0 评论 -
Java 单例模式的八种写法比较
转自 http://tianweili.github.io/blog/2015/03/02/singleton-pattern/单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到饿汉式和懒汉式这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允转载 2016-11-09 19:18:09 · 1401 阅读 · 0 评论 -
Java 读写注册表的两种方式 Preferences 与 jRegistry
转自 http://xiaohuafyle.iteye.com/blog/1543559由于java程序是“write once, run everywhere”,用java读写注册表,那程序的跨平台性就差了。java对注册表的操作,在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现;然而jdk1.4之后提供的prefs包可以操作windows注册表,不过定死了root只在SOFTWARE转载 2016-10-19 09:16:48 · 4307 阅读 · 1 评论 -
Java String 创建对象
首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,String只是一个引用变量。所有的字符串都是String对象,由于字符串常量的大量使用,java中为了节省时间,在编译阶段,会把所有字符串常量放在字符串常量池中,字符串常量池的一个好处就是可以把相同的字符串合并,占用一个空间。虽然在Java中无法直接获取变量的地址,但是可以用==判断一下两个引用变量是否指向了一个地址即一个对象。原创 2016-10-12 12:26:22 · 1810 阅读 · 0 评论 -
Java finally 和 return 的关系
finally 和 return 关系的总结try块中有System.exit(0)这样的语句,由于它是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。其它情况下,finally语句都必然会被执行。因此可以在这里执行一些资源的释放操作。 finally中的return会覆盖try/catch中的renturn。在finally中写return原创 2016-10-11 20:15:15 · 1643 阅读 · 0 评论 -
Java StackTraceElement
StackTrace用栈的形式保存了方法的调用信息。可用Thread.currentThread().getStackTrace()方法得到当前线程的StackTrace信息,该方法返回的是一个StackTraceElement数组。线程中methodA调用了methodB,那么methodA先入栈methodB再入栈。在StackTraceElement数组下标为2的元素中保存了当前方法的所原创 2016-10-11 19:39:51 · 2154 阅读 · 0 评论 -
Java 回调函数 与 观察者模式
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。回调函数应该属于观察者模式的一种,目的是为了替代轮原创 2016-10-10 15:11:44 · 2207 阅读 · 0 评论 -
Java 动态加载jar和class文件
JAVA中类文件加载是动态的。也就是说当我们用到的时候才会去加载,如果不用的话,就不会去加载我们的类。JAVA为我们提供了两种动态机制。第一种是隐式机制。第二种是显示机制。如下: 两种方法:隐式机制 :new一个对象 + 调用类的静态方法显式机制 : 由 java.lang.Class的forName()方法加载由 java.lang.ClassLoader的loadClass()方法加载原创 2016-10-10 14:51:20 · 3043 阅读 · 0 评论 -
Java SAX解析XML
SAX解析XML采用的是从上而下的基于事件驱动的解析方式,在解析过程中会视情况自动调用startDocument()、startElement()、characters()、endElement()、endDocument()等相关的方法。由编译执行的结果来看:startDocument()方法只会在文档开始解析的时候被调用,每次解析只会调用一次。startElement()方法每次在开始解析一原创 2016-10-09 16:16:41 · 1818 阅读 · 0 评论 -
C/C++ 和 Java 命令行绘制心形图案
心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名。 心脏线亦为蚶线的一种。在曼德博集合正中间的图形便是一个心脏线。心脏线的英文名称“Cardioid”是 de Castillon 在1741年的《Philosophical Transactions of the Royal Society》发表的;意为“像心脏的原创 2016-10-06 14:19:41 · 12245 阅读 · 1 评论 -
Java 打开本地文件的几种方式
import java.awt.Desktop;import java.io.File;import java.io.IOException;import java.util.ArrayList;public class OpenLocalFile { public static void main(String[] args) { String PATH_TXT = "原创 2016-10-05 23:13:12 · 2569 阅读 · 0 评论 -
浅析 eclipse 项目中的".classpath" 和 ".project" 文件的作用
“.classpath” 文件定义项目的结构,如src、output、con、lib等。 源文件的具体位置(kind=”src”)运行的系统环境(kind=”con”,exported=”true”)外部引用的jar(不在项目的libs文件夹中)的具体位置信息(kind=”lib”,exported=”true” )编译后的类文件(*.class)的输出目录(kind=”output”)原创 2016-09-27 10:34:20 · 4119 阅读 · 0 评论 -
java.lang.Runtime
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。 一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。 一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去原创 2016-09-12 11:35:32 · 1867 阅读 · 0 评论 -
Java 序列化、反序列化与transient关键字
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。 将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。 整个过程都是Java虚拟机(JVM)独立的,也就是说,在一个平台上序原创 2016-09-09 17:07:25 · 1694 阅读 · 0 评论 -
Java8 伪函数指针(Function、BiFunction)
java.util.function.BiFunction 伪函数指针原创 2016-09-09 16:11:16 · 8333 阅读 · 0 评论 -
Java 内存整理——堆、栈、常量池
Java 内存分配:1. 寄存器我们在程序中无法控制2. 栈存放基本类型的变量数据,局部变量,和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆存放用new产生的对象,数组。转载 2016-09-09 14:07:54 · 1462 阅读 · 0 评论 -
Java ==、equals、hashcode的区别
1、== 对于基本变量,判断其值是否相同;对于引用对象,判断其指向的内存地址是否相同。 2、equals 只能应用于引用对象,默认和==的作用相同,如果像String一样继承的话,则可以实现自定义的比较。 3、HashCode仅在Hash容器中使用,用于决定将要插入对象的位置。package com.demo.test;import java.util.HashSet;public class原创 2016-09-09 13:55:21 · 1472 阅读 · 0 评论 -
Java 报错No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
在Java中(1)类的静态方法不能直接调用动态方法。(2)类的静态方法不能初始化内部类(包括该类的内部类,和其他文件中的内部类)。(3)类的静态方法可以初始化其他类文件中的类。(4)类的静态方法可以初始化静态类(包括静态内部类)。原创 2016-09-09 11:27:40 · 7777 阅读 · 0 评论 -
Java String.format
参考http://www.cnblogs.com/linjiqin/archive/2013/06/21/3147943.htmlString.format或者System.out.printf都可以用来格式化字符串,格式为%[argument_index$][flags][width][.precision]conversionpackage com.demo.test;import java.u原创 2016-09-09 10:54:30 · 6047 阅读 · 0 评论 -
Java Properties
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。package com.demo.test;import java.io.FileOutputStream;import java.io.IO原创 2016-09-09 09:37:34 · 1489 阅读 · 0 评论 -
Java 4种数组复制方式的性能比较
(1)从速度上看:System.arraycopy > clone > Arrays.copyOf > for(2)for的速度之所以最慢是因为下标表示法每次都从起点开始寻位到指定下标处(现代编译器应该对其有进行优化,改为指针),另外就是它每一次循环都要判断一次是否达到数组最大长度和进行一次额外的记录下标值的加法运算。(3)查看Arrays.copyOf的源码可以发现,它其实本质上是调用了System.arr原创 2016-08-31 16:46:53 · 5747 阅读 · 0 评论