
Java
文章平均质量分 56
冷血有情556
喜欢编程,热爱生活!
展开
-
对Java中将Object转成String的思考
1.问题在开发中,有很多时候需要将Object类型转成String。如调用一个方法,其返回的类型是Map<String, Object>类型,当对返回结果进行解析时,很可能需要将Object类型的value转成String类型,那么怎么转换是比较好的方式呢?2.实现方式及分析常用的方式应该有如下三种:public class ToStringTest { @Suppress...原创 2020-03-15 21:36:29 · 1101 阅读 · 0 评论 -
对StringBuilder抛出ArrayIndexOutOfBoundsException的探究
最近在项目开发时遇到一个问题,就是写好的代码是不是的报出ArrayIndexOutOfBoundsException的异常,这让我很困扰。下面是那段代码的简化版,只是为了说明这个问题。1、 代码及报错信息 代码如下:import java.util.ArrayList;import java.util.List;/** * 测试StringBuilder和StringBuf原创 2017-06-27 23:31:22 · 11908 阅读 · 2 评论 -
阿里巴巴2018校招笔试题
前几天做了阿里的2018的校招笔试题,我投的岗位是Java研发,在这里跟大家分享下笔试题及我的解法。1、 题目 由于当时时间比较紧,只有四十分钟,但是题目也只有一道,可能我比较渣,所以时间很赶,没来得及截图,下面是我对题目的大致记忆。大致意思是给定一组树节点,形式为(id, pId, cost),其中id是节点的序号,pId是父节点的序号,cost是花费,即完成这件事情所需的花费。给定的节点可以构原创 2017-07-10 07:54:17 · 15787 阅读 · 0 评论 -
InteliJ idea与github
前段时间想把本地的一个Java项目放到github上去,可是不知道在InteliJ idea怎么操作。百度了很久,没有很满意的结果。受到博客最后参考博客的启发,我终于找到了怎么实现这个想法。下面从使用InteliJ idea**将github中代码下载到本地和将本地项目上传到github中**两个方面讲解。前提 1. 已经注册了一个github账号; 2. 已经安装git客户端; 3. 已经在原创 2017-09-04 16:55:13 · 588 阅读 · 0 评论 -
Java中包装类作用及注意点
Java中对每种基本类型都有一个对应的包装类,这里主要讲解包装类的作用和包装类使用时的一些注意点。包装类的作用作用主要有以下两方面: - 编码过程中只接收对象的情况,比如List中只能存入对象,不能存入基本数据类型;比如一个方法的参数是Object时,不能传入基本数据类型,但可以传入对应的包装类; - 方便类型之间的转换,比如String和int之间的转换可以通过int的包装类In...原创 2018-03-16 19:30:50 · 13991 阅读 · 4 评论 -
异常:Unable to create schema compiler解决方法
1. 现象最近在工作中遇到如下报错: 2.分析从报错中可以看到[java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC],说明没有找到的类时属于tools.jar包中的,所以接下来要做的就是找到没有加载tools.jar的原因。如果你也是用eclipse运行项目的话,不妨按以下路径查看项目是以j...原创 2018-05-11 18:32:22 · 17184 阅读 · 2 评论 -
ArrayList的contains()方法的性能问题及优化方法
今天在项目性能测试过程中发现,某处代码通过ArrayList的contains()方法来检查某个给定值是否存在于该ArrayList中的性能非常低(该ArrayList中有10万个元素)。然后开始着手对其进行优化,下面主要介绍ArrayList的contains()方法的实现原理,以及优化后用来代替ArrayList的HashSet的contains()方法的实现原理,最后通过实例进行验证优化...原创 2018-06-28 22:55:46 · 30118 阅读 · 5 评论 -
【No buffer space available】异常解决
最近在工作中遇到这样一个场景:使用一个Java编写的模拟硬件设备的工具,这个工具会模拟很多设备(每个设备需要占用一个端口)去连接服务器。一般情况下,一台Windows虚拟机上会模拟5000至10000个设备,这样一般不会有问题。后来改成模拟40000个设备的时候,出现了“No buffer space available”的异常,具体如下:1. 问题原因乍一看以为是虚拟机内存不够或者是模拟工...原创 2018-10-27 10:13:07 · 47207 阅读 · 6 评论 -
NIO在Windows下占用大量CPU资源原因详解
1. 现象简述在项目性能测试过程中发现,同样的代码,连接同样数量(10万)的设备(设备和代码之间通过NIO有大量的数据交互),在Linux下CPU利用率只有20%~30%,而在windows下却一直高于80%。2. 原因初步排查通过jconsole分别监控运行在linux和windows上的程序,在【线程】选项卡中发现,windows下启动了大量未命名线程,堆栈信息都类似于下图:通过Ja...原创 2019-01-10 20:38:13 · 3230 阅读 · 5 评论 -
浅谈四种内部类
Java中内部类分为四种,分别是静态内部类、成员内部类、局部内部类和匿名内部类。下面分别介绍这四种内部类以及相互之间的联系和区别。 1. 静态内部类(static inner class)1.1 定义方式public class OuterClass{//外部类 public static class StaticInnerClass{ } //这个为静态内部类}1...原创 2015-09-07 17:46:51 · 873 阅读 · 0 评论 -
Java NIO持续触发读事件的解决方法
1. 现象最近在一次项目编码中遇到这么一个情况: 程序本身是一个中间处理器的角色,功能可简述为接收硬件设备的报文,然后对某些报文处理(其他报文之间转发),然后发送服务端处理;服务端处理后回复,程序接收服务端回复,然后直接转发给硬件设备。在测试时发现,硬件设备第一次发送报文,能够正常处理,但是当硬件设备第二次发送报文时,程序中Java NIO会持续触发读事件,导致服务端持续回复报文,从而设备持续受...原创 2019-03-15 17:25:02 · 2047 阅读 · 1 评论 -
清除原有的SVN信息
1. 遇到的问题将一个已经上传到svn的工程拷贝到其他目录或者机器,然后希望提交到其他svn路径时会发现,提交时总会默认提交到之前的svn路径,导致无法实现提交到新的svn路径。此时需要清除原有的svn信息。2. 清除svn信息的方法清除原有svn信息时,可根据当前工程是否还与svn存在关联,选择下面的清除方法。2.1 工程与svn存在关联右键点击该项目 -> team ->...原创 2019-03-21 13:48:46 · 5641 阅读 · 0 评论 -
浅析Java中的字符串分割方法split()
前几天看到同事代码里有类似如下这样一行代码:String[] testStrs3 = testStr3.split(",", -1);因为之前使用split()方法没有加过第二个参数,所以对此进行了学习,在此做个总结与分享。1.代码示例先来看一段测试代码:public class Test { public static void main(String[] args) { ...原创 2019-07-28 17:32:33 · 571 阅读 · 0 评论 -
Map与对象之间属性复制浅析
在使用Java开发中,很多时候会遇到需要将Map中的值复制到对象中。如果通过手动方式将map中的值取出然后在set到对象中,那对于属性比较多的情形来说,这明显不是一个好办法。当然有比较方便的拌办法,就是使用Apache Commons BeanUtils中的BeanUtils.copyProperties(Object, Object)方法。但是笔者最近在使用这个方法时,遇到属性无法复制到对象中的...原创 2019-09-30 21:40:37 · 2019 阅读 · 0 评论 -
探讨UnsupportedOperationException的原因及解决方案
最近工作中老给同事挖坑,真是愧疚。上周五写了个接口给同事用,结果同事用的时候告诉我报错,我一看,是UnsupportedOperationException,有点懵,没明白这是为啥。当时只是在网上找解决方法,没有细究错误出现的原因,今天有时间把这个整明白,记录于此。1、 示例代码及错误信息 下面是我工作时写的错误代码的简化版:import java.util.ArrayList;import j原创 2017-07-02 10:21:53 · 90363 阅读 · 20 评论 -
Java使用正则表达式验证常用字符串
最近在项目中遇到比较多需要校验的字符串,由于以前没怎么用过,导致使用不太熟练。在这里将常用的正则表达式总结一下,方便日后使用,也供大家参考。public class TestReg { public static void main(String[] args) { while(true) { Scanner scanner = new Scanner(原创 2017-05-20 12:32:27 · 1285 阅读 · 0 评论 -
使用POI读写Excel
使用POI来读写exccel很方便,但是一开始用的时候有点蒙,这里我将我学习时写的例子给大家分享一下,希望对你学习有点帮助。 顺便说一下,jxl也可以操作excel,如果有兴趣,可以参考:http://blog.youkuaiyun.com/liu_005/article/details/49404687【POI的jar包下载地址:http://download.youkuaiyun.com/detail/liu_...原创 2015-10-25 16:33:23 · 473 阅读 · 0 评论 -
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
JDBCSQL Server 2005转载 2015-10-23 20:19:38 · 488 阅读 · 0 评论 -
java通过URL读取json数据
打开URL,读流:public static String loadJson (String url) { StringBuilder json = new StringBuilder(); try { URL urlObject = new URL(url); URLConnection uc = ur转载 2016-02-24 21:47:03 · 531 阅读 · 0 评论 -
java中volatile关键字的含义
【转载者】我觉得这篇博客解释volatile解释的很清楚,值得一读。在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchroniz转载 2016-04-10 13:58:40 · 429 阅读 · 0 评论 -
java 项目导入外部 jar包
如果你建的是java project项目的话,那就通过Myeclispe中的右键你的项目名称,选择build path ->config build path... 然后在弹出的java build path 这个面框中,选择libraries这个页签,然后选择Add External JARs这个按钮就可以选择你要添加的jar包。转载 2015-09-08 10:38:02 · 676 阅读 · 0 评论 -
equals()方法和“==”的区别
在这两者中,“==”是比较简单的,所以我们先讨论一下“==”。1. “==”的作用“==”的作用就是比较左右两边的值是否相等:(1)对于Java中的原生数据类型,如int,boolean等,其比较的就是它们字面值是否相等,这个应该是很好理解的;(2)对于引用类型,如Student student=new Student(),这其中的student就是引用类型,其作用也是比较左右两边的...原创 2015-08-02 17:44:18 · 535 阅读 · 0 评论 -
Java中RMI的实现
最近在学习Java中的设计模式,在代理模式中有一种远程代理,它是通过RMI来实现的。1、作用 RMI是通过网络使得本地对象能够方便地远程对象的方法,使得本地对象调用远程对象的方法跟调用本地对象的方法一样。2、 调用过程 如上图,客户端中的客户对象调用服务端服务对象的方法A(),其过程是: (1) 客户对象调用远程对象的方法A(); (2) 客户辅助对象将请求进行包装,通过网络发送到服务端原创 2016-05-28 22:38:25 · 791 阅读 · 0 评论 -
“无法加载主类”解决办法
最近我在百度知道里很多刚学java的人,在用命令提示符编译和运行java程序的时候遇到了”无法加载主类“的问题,在这里我给出可能的解决方法,仅供参考。 检查环境变量是否配置正确: (1) JAVA_HOME配置到jdk所在目录,比如你的jdk安装在E盘的java文件夹下,那这个就配置成“E:\Java\jdk1.7.0”。 (2) classpath配置成“ .;%JAVA_HOME%\l原创 2016-10-31 23:05:20 · 1500 阅读 · 0 评论 -
即将改变软件开发的5个Java9新特性
预计发布的Java 9中,最令人兴奋的特性是什么?有关Java9的消息最近显得有些沉寂,不要被它迷惑了。JDK开发者正在努力朝着下一个版本迈进,计划2015年12月前完成所有功能开发。之后,它会经历严格测试和bug修复以准备它的全面上市,按计划会在2016年9月发布。今天我们已经对Java 9中所期待的特性有了一个很清晰的图景。如果Java 8可以被描述为主要是lambdas表达式、streams和转载 2017-01-18 21:38:15 · 4174 阅读 · 0 评论 -
卫语句
1.使用卫语句取代嵌套表达式函数中的条件逻辑使人难以看清正常的执行途径。使用卫语句表现所有特殊情况。动机:条件表达式通常有2种表现形式。第一:所有分支都属于正常行为。第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况。 这2类条件表达式有不同的用途。如果2条分支都是正常行为,就应该使用形如if…..else…..的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条转载 2017-02-21 21:27:23 · 545 阅读 · 0 评论 -
浅谈List使用的一个易错点
这个问题还是我去年在项目中遇到的,一直没来得及总结。最近同事在他的项目中遇到了类似的问题,让我感觉到有必要总结一下这个易错点。首先贴上测试代码吧。import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.List原创 2017-03-06 21:33:57 · 426 阅读 · 0 评论 -
Java下利用Jackson进行JSON解析和序列化
Java下常见的Json类库有Gson、JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法。1. 准备工作 首先去官网下载Jackson工具包,下载地址http://wiki.fasterxml.com/JacksonDownload。Jackson有1.x系列和2.x系列,转载 2017-04-15 12:03:49 · 346 阅读 · 0 评论 -
Java合并数组的两种实现方式
最近在写代码时遇到了需要合并两个数组的需求,突然发现以前没用过,于是研究了一下合并数组的方式,总结如下。1.System.arraycopy()方法(1) 解析 通过阅读JDK源码,我可以知道方法原型如下:public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, in...原创 2017-05-25 23:44:52 · 78064 阅读 · 0 评论 -
使用jxl读写excel
最近使用jxl操作excel,期间遇到一些小问题。在这里,我将我学习时写的例子和大家分享,希望对你学习jxl有帮助。 【注意首先要导入jxl的jar包,请网上自行下载】顺便说一下,poi也可以操作excel,如果想要了解,可以参考:http://blog.youkuaiyun.com/liu_005/article/details/49404477【读excle】 这是我在一个小项目中用到的,使用的时候你需原创 2015-10-25 16:56:03 · 472 阅读 · 0 评论