java
文章平均质量分 61
Anhe0901
这个作者很懒,什么都没留下…
展开
-
匿名内部类和局部内部类中只能访问final变量的原因
在一个方法中,如果创建一个匿名内部类,并且在内部类中药访问方法的参数,我们必须将该参数用final进行修饰才能访问,这个的原因主要是由于方法和内部类的生命周期不相同导致的。当我们执行一个带参的方法时,在该方法的调用栈中将生成一个局部变量(即该参数),如果在该方法中创建了局部内部类,则jvm会产生一个inner_object,但是,此inner_object并不会随着方法的执行完毕而销毁。因此,原创 2018-01-02 22:31:39 · 361 阅读 · 0 评论 -
Java使用管道实现进程间通讯
转载请注明出处:http://blog.csdn.net/jmppok/article/details/175007391.进程通讯大家都知道进程间通讯有三种常用方式: 1)管道2)共享内存3)socketbaidu也有说8种方式的,其实基本都是这三种方式的进一步细化。2.Java进程通讯Java没有共享内存机制,同时Java的管道也只能用于Java线程间的通讯。下面是一个关于Java的管道简单的...转载 2018-06-06 23:16:31 · 3804 阅读 · 0 评论 -
Java原生提供的和数据结构有关的类
Java原生提供的和数据结构有关系的类主要由两个接口派生而来:Collection和Map。本文主讲Collection,Map在稍后新开一篇。 Collection接口继承了Iterable接口,内部定义了一系列的抽象方法,如:size(), isEmpty(), contains(Object o), iterator(), toArray(), add(E e)等常用方法。 目前...原创 2018-04-09 15:14:33 · 632 阅读 · 0 评论 -
Java中的 Vector、ArrayList和LinkedList
Vector类继承了AbstractList抽象类,其内部数据存储方式是一个对象数组,几乎所有的方法都通过synchronized关键字修饰,支持多线程的同步,安全性较好但访问效率较低。 ArrayList类同样继承了AbstractList抽象类,它的内部数据存储方式与Vector相同也是一个对象数组,内部方法与Vector也很相似,最主要的不同在于ArrayList中的方法没有使...原创 2018-03-30 23:55:26 · 189 阅读 · 0 评论 -
短知识点记录
Statement每次执行sql语句,数据库都要执行sql语句的编译 , 最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS(数据库管理系统)预编译一条SQL当然会比多次编译一条SQL的效率要高。 servlet处于服务器进程中,它通过多线程方式运行其ser...原创 2018-03-20 23:42:23 · 241 阅读 · 0 评论 -
JVM中的内存模型
一、内存模型 Java虚拟机在运行时的内存模型分为线程共享的和线程隔离的。其中,线程共享的包括:Method Area(方法区)和Heap(Java堆),在方法区中存在一个常量池;线程隔离的包括:Program Counter Register(程序计数器)、VM Stack(虚拟机栈)和Native Method Stack(本地方法栈)。 概括地说来,JVM初始运行的时候都会分配好...转载 2018-03-20 23:33:30 · 306 阅读 · 0 评论 -
使用dom4j时遇到了NoClassDefError
在使用dom4j技术解析xml文档的时候,遇到了java.lang.NoClassDefError错误,错误提示信息为:java.lang.NoClassDefError: org/jaxen/JaxenException,通过查询项目内的jar包也没有找到所描述的类,所以判断应该是缺少jar包导致。通过查询了解到是确实是缺少dom4j所依赖的jar包,通过下载和导入该包之后错误消失。下载地址在解...原创 2017-12-18 17:00:27 · 855 阅读 · 0 评论 -
String的split方法
今天在使用String类的split方法时,遇到问题,当我尝试用'.'来分割字符串时,得到的返回为空。发现这个问题之后在网上找到了原因,记录如下: 在这个方法中,是根据正则表达式的匹配来分割字符串的,我们在该方法中输入的参数并不只是普通的字符或字符串,它的实质是一个正则表达式。split根据输入的正则表达式来定位要分割的位置。 '.'是正则表达式中的一个元字符,代表着任意一个字符(除换...原创 2018-03-01 15:37:44 · 227 阅读 · 0 评论 -
Mybatis中的动态代理
Mybatis在Mapper接口上使用了动态代理的一种非常规的用法。假设有如下一个Mapper接口:public interface UserMapper{ List selectAll();}这里使用Java动态代理方法创建一个代理类:public MyMapperProxy implements InvocationHandler{ private Cl转载 2018-01-10 01:56:14 · 469 阅读 · 0 评论 -
MyBatis中的缓存
Mybatis作为持久化框架,提供了非常强大的缓存特性。一般在提到Mybatis缓存的时候,指的都是二级缓存。一级缓存,即本地缓存,默认会启用并且不能控制,可能会导致一些难以发现的错误。一、一级缓存public void testL1Cache() { SqlSession sqlSession = getSqlSession(); SysUser user1 = null;原创 2018-01-13 02:42:02 · 1802 阅读 · 0 评论 -
使用sql时有关基本类型的细节
由于JAVA中的基本类型会有默认值,例如当某个类中存在private int age; 字段时,创建这个类时,age会有默认值0.当使用age属性时,它总会有值。因此在某些情况下,便无法实现使age为null。并且在动态SQL的部分,如果使用age != null进行判断,结果总会为true,因而会导致很多隐藏的问题。所以,在实体类中不要使用基本类型。基本类型包括byte, int, shor转载 2018-01-08 23:32:10 · 503 阅读 · 0 评论 -
Java提供的线程池
Java原声提供了Executors类,可为用户提供四种不同类型的线程池。1. CachedThreadPool 通过Executors.newCachedThreadPool()获得,该线程池没有线程数量的限制,当需要一个新的线程但线程池中没有空闲的线程时,该线程池便会新建一个线程,而如果有,则会复用空闲的线程。该线程池使用灵活,但是当面临较大的数据访问量时,可能会导致线程数过多而...原创 2018-07-18 16:55:23 · 200 阅读 · 0 评论