
java相关
文章平均质量分 73
云原生之家
这个作者很懒,什么都没留下…
展开
-
try catch fianlly执行顺序
今天我们来聊一聊try catch finally执行顺序,一般情况下很容易区分,在实际工作时也不会有非常复杂的情况,但有时候在面试的时候,为了考查面试者的基本功,会特意设计一些非常复杂的情况。该文章就给大家总结一下,它们的执行顺序,希望能帮助到大家。请看如下例子:public class TryCatchFinallyExecutionOrderTest { @Test public void testGetValue1() { System.out.println(getValue原创 2021-03-27 20:44:04 · 286 阅读 · 0 评论 -
JDK安装及注意事项
JDK的英文全称是Java Development Kit,即Java开发工具包,它提供了Java的开发环境和运行环境。有了开发环境,编写的Java源代码才能被解析编译;有了运行环境,Java程序才能运行起来,这就是我们在做开发之前必须先安装JDK的原因。安装JDK本来很简单,但还是有很多初学者安装失败了。其最主要的原因是对JDK不了解,只会照着网上的文章做,网上的文章虽然大体步骤一样,但有些步骤的细节还是有差异的,因为知其然,不知其所以然的原因,还是可能出现问题。写这篇文章的目的就想告诉大家JDK为什么原创 2021-03-11 12:54:35 · 984 阅读 · 0 评论 -
CXF异常处理
本文将讨论一下,在CXF服务端的异常处理,主要包括服务实现类抛出异常与拦截器中抛出异常,抛出异常后CXF的处理流程。其实在CXF中,异常无论是在服务实现类还是拦截器中抛出,其处理方式是一样的,当服务方法中的异常抛出后,CXF会将异常包装为org.apache.cxf.interceptor.Fault类型,而拦截器中只能抛出Fault类型异常,其间接继承于java.lang.RuntimeExce原创 2015-05-28 11:21:04 · 7487 阅读 · 0 评论 -
注意DefaultMutableTreeNode的add方法
由于本人在写一个小工具,用到了swing的JTree组件,节点实现类为DefaultMutableTreeNode,却遇到了一个有点想不通的问题,后来看源代码找到了答案,谨此记录一下。下面是一个对此问题设计的一段代码:public static void main(String[] args) { DefaultMutableTreeNode root = new DefaultMutabl原创 2015-05-17 14:18:45 · 6780 阅读 · 1 评论 -
struts2请求处理流程详解
struts2大概分为两块:一是struts2系统初始化,二是struts2处理请求,对请求作出响应。下面就说说个人对struts2对请求处理流程的理解:下面是StrutsPrepareAndExecuteFilter过滤器的doFilter方法中的主要代码:prepare.setEncodingAndLocale(request, response);prepare.createA原创 2013-10-07 22:03:13 · 4847 阅读 · 4 评论 -
java.util.ConcurrentModificationException异常分析
public class Test { public static void main(String[] args) throws Exception{ List strs = new ArrayList(); strs.add("zhangsan"); strs.add("lisi"); strs.add("wangwu"); strs.add("zhaoliu");原创 2012-12-29 18:17:10 · 3195 阅读 · 1 评论 -
文件复制的疑惑
最近在写一个gradle插件过程中,为Task定义文件复制方法时,发现文件并没有被复制,本来是一个很简单的操作,却出现了如此不解的现象。因编写gradle插件调试不易,所以花了比较多的时间才发现问题,所以谨此记录。 下面一个精简版的Task类:import java.io.File;import java.util.List;import java.util.concurren原创 2015-01-25 15:39:37 · 847 阅读 · 0 评论 -
JDK7动态方法调用
在JDK7中,Java提供了对动态语言特性的支持,实现了JSR 292 《Supporting Dynamically Typed Languages on the Java Platform》规范,这是Java语言发展的一重大进步,而提供对动态语言特性支持也是Java发展的一大趋势与方向。那么动态性表现在哪里呢?其一在Java API层面,新增了java.lang.invoke包,主要包含了Ca原创 2014-12-20 17:45:42 · 4654 阅读 · 1 评论 -
方法调用指令
在JDK7之前方法调用的字节码指令共有四条,invokeinterface、invokespecial、invokestatic、invokevirtual。由这四条指令完成Java中所有类型方法的调用。invokeinterface(调用接口方法) 无符号数indexbyte1和indexbyte2共同组件一个当前类常量池索引(index),该索引值为(indexby原创 2014-12-18 21:39:00 · 1357 阅读 · 0 评论 -
CXF客户端请求服务流程
CXF(使用版本2.7.6)对Web服务封装度已经非常高了,你只需要像正常写代码一样,附加几个额外的注解直接发布,服务端差不多就完成了;对于客户端更简单,只需要知道Web服务的URL地址和接口,就能如调用本地代码一样,几乎感觉不到与本地代码有什么区别。这就是封装的威力,虽然高度封装简化了我们对Web服务的使用,但也间接地阻挡了我们对其深入了解。本文就将源码层面来分析CXF其内部是如何完成客户端对W原创 2015-04-23 14:19:10 · 7667 阅读 · 0 评论 -
CXF中Web服务请求处理流程
Web服务其本质上还是HTTP请求,只不过要遵循Web服务特定的规范,比如说服务端与客户端双方通信的媒介为XML文件格式,以完成对一次Web服务调用的描述。当然此XML还有特定的格式,至于这个特定的格式是什么样的取决于使用哪一种数据绑定方式。CXF中称这为数据绑定,个人觉得称之为Java对象的序列化与反序列化更易懂些。 本文将从源码(CXF版本为2.7.6)层面来分析一下CXF是如何完原创 2015-04-18 21:48:54 · 5003 阅读 · 1 评论 -
CXF中服务发布与访问方式
apache CXF实现了JAX-WS和JAX-RS Web服务范围,所以在CXF中,基于传统soap协议与restful风格的Web服务都支持。而且在CXF中Web服务的发布与访问 也有多种方式,这里就列举一下并做简要说明,下面是示例服务接口与服务实现类:@WebService@Produces("text/plain")public interface HelloService {原创 2015-04-17 10:30:39 · 2168 阅读 · 0 评论 -
请注意写代码的习惯与态度(Java)
我相信很多人都有看别人代码的经历,我也相信很多人看过之后都在心里吐槽:这是哪个SB写的代码,还没有来得及看业务逻辑就因到处充斥着各种代码的“坏味道”,让你根本没信心能看懂这些代码,其导致的结果就是推倒重来。那么,不禁要问是什么原因导致了这种代码让人抓狂,无法理解;原因无非要么是技术水平的问题,要么是写代码的习惯与态度问题。由于大部分的项目业务逻辑并不会太复杂,所以在我看来,最大的原因来自写代码的习原创 2016-08-06 16:05:17 · 3788 阅读 · 0 评论 -
解决Jersey No WebApplication provider is present问题
工程中使用的Jersey版本为:1.19.1出异常代码如下:public static WebApplication createWebApplication() throws ContainerException { for (WebApplicationProvider wap : ServiceFinder.find(WebApplicationProvider.class))原创 2016-10-18 21:19:14 · 4295 阅读 · 1 评论 -
elasticsearch插件开发
检索引擎Elasticsearch支持插件模式,有些时候你可能需要安装一些插件,甚至自己开发插件,这里就提供一个开始ES插件开发示例,ES版本为1.5.2。一、插件类继承自org.elasticsearch.plugins.AbstractPluginpackage org.elasticsearch.plugin.helloworld;import java.util.A原创 2015-07-22 16:21:40 · 7045 阅读 · 2 评论 -
socketio 服务器推送
如果面试官问你:要把服务器端的数据时时显示在浏览器上怎么实现?我想有很多人会回答使用Ajax技术定时去访问一个资源,没错,使用Ajax的确能实现,但面试官要的绝对不是这个答案。因为使用Ajax频繁访问给服务端造成太大的压力,所以在大部分情况下都是不取的。面试官想要的答案应该是将服务器端的数据推送至浏览器,这样只需要保持一个长链接就可以了。socket.io就能实现...原创 2014-11-09 11:38:42 · 10412 阅读 · 6 评论 -
Btrace入门到熟练小工完全指南
转载自:Btrace入门到熟练小工完全指南BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要不断地修改代码,加入System.out.println(), 然后重启,然后重启,然后重启应用!!!同时,特别严格的约束,保证自己的消耗特别小,只转载 2017-09-13 20:59:05 · 486 阅读 · 0 评论 -
Tesseract-OCR的简单使用与训练
Tesseract-OCR的简单使用与训练Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开转载 2017-09-21 21:24:00 · 4816 阅读 · 0 评论 -
Spring Boot配置动态更新
解释配置动态更新在本文中指当更改应用的配置项后,无需要重启应用新配置即可生效。概述配置动态更新是应用的一种通用性需求,很实现 的方式有很多种,如监听配置文件内容变化、使用配置中心等等。Spring Boot在配置动态更新上本身提供了支持,我们在未使用配置中心的情况也可以简单地实现配置动态更新。实现方式添加依赖包:spring-boot-starter-actuator...原创 2018-08-01 17:24:39 · 21027 阅读 · 5 评论 -
Spring MVC一事务控制问题
在最近一个项目中用了Spring MVC作为控制层框架,但却出现了一个让人很费解的问题:事务控制。Spring MVC的配置文件名为:springMVC-servlet.xml,内容如下:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/20原创 2014-10-19 21:25:17 · 2605 阅读 · 0 评论 -
java无依赖读取Excel文件
说到Java读取Excel文件,用得多的当然是POI或jxls,但今天在看一本书的时候,其中提到使用JdbcOdbcDriver这个驱动类在不依赖第三方库的情况下也可以完成对Excel文件的读取操作,网上搜了一下原因然后自己写了个例子跑通了,在此记录一下。Java读取数据库大家都很熟悉,需要一个数据源与相应的驱动,开发者通过JDBC操作驱动,驱动再去操作数据库;那么Java读取Excel文原创 2014-10-26 14:31:36 · 1575 阅读 · 0 评论 -
java类加载器行为[笔记]
1. Java虚拟机使用第一个类的第一件事情就是将该类的字节码装进来,装载类字节码的功能是由类装器完成的,类半遮器负责根据一个类的名称来定位和生成类的字节码数据后返回给Java虚拟机。2. 类装载器本身也是一个Java类,Java虚拟机也允许开发人员编写自己的类装载器,以便通过其他种特殊方式来产生类字节码。3. 不管类装载器采用什么方式,只要能够在内存中制造出给Java虚拟调用的类字节码即原创 2013-09-24 19:58:58 · 1106 阅读 · 0 评论 -
JDK动态代理机制
代理模式有两种,一种是静态代理,这种方式需要为每一个被代理类写一个代理类,显示比较麻烦。还一种是动态代理,动态代理实现方式一般有两种,JDK动态代理与CGLIB动态代理,这里说一下对JDK动态代理的理解。 JDK动态代理最核心的就类就是java.lang.reflect.Proxy,可调用Proxy.newInstance(..)生成动态代理。如果有一个UserService接口(J原创 2013-10-10 16:39:06 · 1182 阅读 · 0 评论 -
WebService简介[笔记]
1.什么是WebService 顾名思义,是一种基于Web的服务,再具体点就是基于HTTP协议的一种服务,它既然是一种服务,只要服务编写者允许那么应该是所有人都能调用到的。它使用Web(HTTP)方式,接收和响应外部系统的某种请求,从而实现远程调用,而且这种调用是跨平台的,与具体的语言无关。2.WebService能干什么 WebService是一种服务,能实现远程调用,跨平原创 2013-10-03 17:22:29 · 1095 阅读 · 0 评论 -
hibernate 主键生成策略
主键生成策略是指 1、 native 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)2、Assigned 在插入数据的时候主键由用户自己添加,hibernate也不管(很常用)3转载 2013-06-30 13:09:26 · 731 阅读 · 0 评论 -
关于struts2中Action实例
一直都说struts2.x与struts1.x有个很大的区别就是在struts1.x中Action是单例的而在struts2.x中是原型,即每次请求创建一个新的实例,但有一次发现并不这是这样,因为我没有传相应字段的值,但字段却有值了,后来在Action中打印System.out.println(this);打印出来hashcode是相同的,说明两次请求是同一个Action实例,后来发现这是因为st原创 2013-04-29 23:59:27 · 1049 阅读 · 0 评论 -
fckeditor 2.6 jsp 中上传功能 与 strut2 中过滤器的问题
fckeditor 2.6 jsp 中上传功能 与 strut2 中过滤器的问题原来使用strut1和strut2。然后上fckeditor。发现上传功能出问题。提示如下Servlet.service() for servlet ConnectorServlet threw exceptionjava.lang.IndexOutOfBoundsException: Inde转载 2013-04-04 00:31:01 · 821 阅读 · 0 评论 -
关于Tomcat配置基于端口号虚拟主机时Engine元素的问题
在看张孝祥老师配置基于端口号虚拟主机时Engine元素的name属性并没有修改,所以一开始我也没去修改,但配置好后启动Tomcat时却出现了NullPointerException异常,显示Error registering contexts,直到后来把name属性修改不与原先的Engine元素的name属性值相同Tomcat就能正常启动了,后来在Tomcat的帮助文件中找到了答案:原创 2012-12-29 18:21:11 · 707 阅读 · 0 评论 -
Spring AOP与struts1.x,struts2.x的结合
spring AOP用于做权限拦截是一个很好的选择.spring AOP其拦截的原理就是生成目标类的代理类对目标类应用通知(advice)通知类型有:前置通知后置通知最终通知例外通知环绕通知由各种通知的特点可知,只有环绕通知才适用于对目标类方法实施拦截。spring AOP生成代理类是通过JDK提供的Proxy这个动态代理类或CGLib生成动态代理,缺省情况原创 2013-06-29 14:30:11 · 2313 阅读 · 0 评论 -
struts2源码分析-IOC容器的实现机制(下篇)
以前看到一篇关于struts2-IOC容器实现的源码分析的博客(上篇),写得很经典,自己也从中了解了很多关于struts2-IOC容器初始化的东西,如果容器托管对象是什么,节点中为什么有了type属性还要有name属性,ContainerBuilder构建Container原理等。可惜博主只写了上篇,主要是讲解了IOC容器的初始化过程,而对从容器中获取容器托管对象以及注入原理一笔带过了。虽然博主说原创 2013-08-15 17:28:25 · 1417 阅读 · 2 评论 -
Camel中的重要概念
Endpoint:即节点,即消息经过的地方Camel支持的EndPoint1.JMS队列2.web service3.文件4.FTP服务5.email地址6.POJO在基于Camel的应用中,你会创建一些EndPoint然后用路由将这些EndPoint连接起来。Camel定义了一个名这EndPoint的接口,每一个Camel支持的EndPoint都有一个类实现了该E原创 2014-09-05 23:50:17 · 5165 阅读 · 0 评论 -
优秀的开源项目已经提供SVN地址
很多优秀的开源项目已经提供SVN源码签出了,无论是解疑还是学习,都是一大幸福之事啊! Apache的SVN库,强烈推荐! http://svn.apache.org/repos/asf/ 里面不但有Struts的源码,还有著名的Apache jakarta project 相当好的Web UI框架Tiles 现在很流行的项目管理工具Maven转载 2014-09-04 16:59:48 · 2352 阅读 · 0 评论 -
hibernate之fetch
处理关联关系是ORM中一常见操作,特别是在查询的时候,经常要在查询某个实体的时候要把它实体关联属性也查询出来,例如查询用户时级联查询角色信息,还有可能角色及联查询权限信息。在hibernate中实现这个目的有很多总方式:1.配置OpenSessionInViewFilter,让Session在View层中保存打开状态,可以随时使用,这看起来是个一劳永逸的办法,但其也带来了一些问题, 至于会有原创 2014-05-25 14:37:06 · 1183 阅读 · 1 评论 -
DataNucleus之JDO操作示例
JDO(Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。注意JDO是一种规范,而不是一个产品。而DataNucleus正是实现JDO规范的产品之一,JDO实现产品还有FOStore、JPOX等。当然DataNucleus不仅实现了JDO规范,还实现了JPA(java另一持久化规范),也就是说有了DataNucleus,你既可以原创 2014-05-08 17:00:23 · 5104 阅读 · 4 评论 -
TreeSet.add()方法一细节
TreeSet.add()方法一细节 最近在一次使用TreeSet.add()方法中遇到了一个很迷惑的问题:往一个TreeSet集合中添加几个对象的时候发现有些没有添加进去,一开始是怀疑hashcode与equals的问题,因为Set集合是不允许添加两个相同对象的,但经查检确认没有问题,几经测试发现是传入的Comporator对象引起的(即使用的是TreeSet(Comparator<原创 2014-04-30 17:52:30 · 5288 阅读 · 0 评论 -
Java远程方法调用(RMI)
在传统的客户/服务器模型中,客户端将请求翻译成某种中间传输格式,然后将请求发送给服务器。服务端解析该请求,通过运算得到响应再将响应格式化传递给客户端。然后客户端解析响应并将它呈现给用户。在B/S架构应用中就是如此,客户端是我们的浏览器,而中间传输格式就是浏览器遵循的HTTP协议,例如请求参数要进行编码再通过网络传输给服务器,服务对接收到的参数进行反向解析进行计算然后将响应返还给浏览器,浏览器解析H原创 2014-03-16 16:11:44 · 1958 阅读 · 0 评论 -
java.exe路径问题
因为要更换JDK版本,自然也就要重新设置JAVA_HOME环境变量,但设置完成后奇怪的发现,运行java -version时还是原来的版本,莫名其妙,最后我把JAVA_HOME环境变量删除竟然java命令仍然有效,此时javac命令却无效了,实在是想不通。 后来通过网上查找才知道,在java程序的运行过程中可能会把java.exe文件拷贝到c:\windows\system32下面,而c:原创 2013-12-02 22:23:34 · 3965 阅读 · 0 评论 -
struts2数据同步原理
用过struts2的人都知道,struts2有个很大的特点就是可以不再面向Servlet API编程,从Action的方法签名就可以看出,其execut方法不接收任何参数,返回值也仅仅是String.从而实现与Servlet API的解耦,语法层面上脱离了Web容器。当要在Web层即控制器向视图层传递数据时,传统做法都是存储在HttpServletRequest、HttpServletSess原创 2013-10-10 12:48:58 · 2303 阅读 · 0 评论 -
Java中常见IO的读写效率对比
Java中常见IO的读写效率对比Java中的IO的类库非常的庞大,选择性非常的多,当面临一个问题时,往往不知道如何下手!下面的例子是对常见几种读文件方式的效率比较,通过一个动态代理的模式来统计每个方法的执行时间,测试文件是100多兆的数据文件。AD: Java中的IO的类库非常的庞大,选择性非常的多,当面临一个问题时,往往不知道如转载 2012-04-04 18:01:02 · 746 阅读 · 0 评论