java
文章平均质量分 50
伏念先生
勤能补拙
展开
-
Jacoco 引起反射异常
Jacoco 会利用编译器在编译期间加入 JacocoData成员变量,如果使用反射循环成员变量进而拼凑set或者get方法,会产生NoSuchMethodException,建议在循环中利用isSynthetic()方法检查成员变量。Eclipse中的Coverage 插件是使用jacoco来统计单元测试的代码覆盖率,会在类中加入 JacocoData成员变量,会导致反射循环成员变量进而拼凑...原创 2019-12-20 11:25:41 · 2742 阅读 · 2 评论 -
Java 中的 i = i++ ,计算之后 i 值无变化的原因
Java 中的 i = i++ 问题int i = 0;i = i++;System.out.println(i); // 0问最后的输出结果是什么。我这两天才开始看 Java,第一眼就认为肯定是输出 1 ,但如果结果真的这么直观就不会出成笔试题了。实际运行一下,结果居然是输出 0。如果把i = i++换成i = ++i或者干脆换成i++。输出结果就是 1 了。为了完...原创 2019-12-08 21:38:46 · 1384 阅读 · 0 评论 -
Java中的锁分类
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指...转载 2019-11-05 13:55:29 · 101 阅读 · 0 评论 -
static代码块的执行时间
/** * 对象初始化过程: * 1. 初始化static变量 * 2. 执行static代码块 * 3. 初始化非static变量 * 4. 父类无参构造函数 * 5. 子类构造函数 * * 6. 直接调用类的静态方法执行顺序是: * 1)初始化static变量 * 2)执行static代码块 * 3)执行静态方法 * * @author ya...原创 2019-01-19 23:55:14 · 2726 阅读 · 0 评论 -
Java 异常链,重新抛出异常并通过异常链追踪到异常最初发生的位置
Throwable的子类在构造器中可以接受一个cause(因由)对象作为参数。这个cause就是用来表示原始异常,这样通过把原始异常传递给新的异常,使得即使在当前位置创建并抛出了新的异常,也能通过这个异常链追踪到异常最初发生的位置。示例/** * 重新抛出异常 * @author yan * */public class Rethrowing { //模拟dao层异常 pu...原创 2019-01-14 23:17:38 · 1661 阅读 · 0 评论 -
maven工程单元测试配置文件加载顺序
maven工程目录结构在进行单元测试时,单元测试用例首先从src/test/resources目录下查找配置文件,如果没有则使用src/main/resources目录下的配置文件。在进行spring项目的单元测试时,配置文件中不能包含嵌套的beans,和定时任务配置。在main目录下的配置文件中添加配置项后,需要相对应的在test目录下的配置文件中添加配置,否则会造成单元测试因找...原创 2019-02-15 09:37:35 · 1229 阅读 · 0 评论 -
java类中serialversionuid 的作用
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...转载 2019-02-11 10:40:51 · 198 阅读 · 0 评论 -
ServletContextListener 实现类的contextDestroyed ()方法不执行
public void contextDestroyed(ServletContextEvent sce) { System.out.println("===========关闭spider!==========="); stopSpider(); }ServletContextListener 接口的contextDestroyed () 方...原创 2019-03-05 17:25:29 · 5938 阅读 · 1 评论 -
webmagic+selenium模拟浏览器下载动态网页
现在绝大多数网页都是动态生成的,那么学习爬虫就意味着更加困难。若是静态网页,只需要了解如何连接网络和分析网页源代码提取标签信息即可,但是动态网页的话,就需要使用到一些特定的框架来爬取了。比较实用的爬取动态网页信息的其中一个工具就是selenium了。先来看看要怎样使用webmagic和selenium来模拟浏览器启动吧。import us.codecraft.webmagic.Spider;i...转载 2019-03-10 21:40:18 · 1670 阅读 · 0 评论 -
System.err与System.out共用时输出乱序问题
1、System.out在JVM和操作系统都具有缓存功能,输出的东西不一定实时输出,可能积累几个字符才会一块输出2、System.err 不带缓存(默认,可修改),会实时输出,打印的东西可以立马显示在屏幕。3、如果使用了log4j的日志记录,System.err会被记入日志,System.out不会。4、JDK的解释是System.out是通常输出信息的方式,System.err是用在显示错...转载 2019-05-23 19:06:57 · 910 阅读 · 0 评论 -
同步调用,异步调用,回调
同步调用在单线程方式下,计算机是一台严格意义上的冯·诺依曼式机器,一段代码调用另一段代码时,必须等待这段被调用代码执行完返回结果后,调用方才能继续往下执行。举例你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去。代码public class A { public void methodA() { System.out.println("this is...原创 2019-07-16 17:08:46 · 1107 阅读 · 0 评论 -
maven工程中读取resource目录下配置文件
在maven工程中,我们会将配置文件放到src/main/resources下面,例如我们需要确认resource 下的文件编译之后存放的位置。它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径。public static void main(String[] args) th...转载 2019-01-19 23:44:58 · 739 阅读 · 0 评论 -
org.apache.catalina.LifecycleException: Failed to start component
tomcat启动报异常:org.apache.catalina.LifecycleException: Failed to start componentjava.util.zip.ZipException: invalid LOC header (bad signature)tomcat启动报异常:原因是jar包下载缺损。到maven的reposity目录下搜aether*****in...转载 2019-01-19 23:29:16 · 6843 阅读 · 0 评论 -
java线程池基本概念
我觉得要比较容易理解Java线程池,要逐步搞懂这么几个问题。1、Java线程池是一个放线程的池子,指的就是里面有很多个线程,池子怎么实现呢,用什么东西来表示,有考虑到数据结构吗,跟连接池类似吗。2、里面的线程是用来干什么的。3、线程池中的线程是在什么时候创建的,有哪些方式可以创建呢。4、池中线程个数怎么设置,若是超过了怎么办,若是还没达到怎么办。转载 2018-01-02 18:52:52 · 294 阅读 · 0 评论 -
Java 线程池(ThreadPoolExecutor)原理分析与实际运用
一、使用线程池的好处1、降低资源消耗可以重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行。3、提高线程的可管理性线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控二、线程池的工作原理首先我们看下当一个新转载 2018-01-02 20:32:38 · 1101 阅读 · 0 评论 -
java虚拟机堆、栈的理解
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)栈区: 每个线程包含一个栈区,栈中只保存基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。堆区: 存储的全部是对象实例,每个对象都包含一个与之对应的clas...转载 2018-02-01 14:57:43 · 288 阅读 · 0 评论 -
jdom解析xml, API使用、详解、实例说明
package com.aisino.xml; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; import java.util.Iterator; import java.util.List; i转载 2018-01-26 09:25:20 · 556 阅读 · 0 评论 -
java之从字符串比较到==和equals方法区别
我们先看代码String str1 = new String(“hello”); String str2 = “hello”;System.out.println(“str1==str2: ” + (str1==str2)); \1 System.out.println(“str1.equals(str2): ” + str1.equals(str2)); \2输出结果:s...转载 2018-05-16 09:11:43 · 234 阅读 · 0 评论 -
解析XML文件时,无效的XML 字符 (Unicode: 0x7)异常处理
报错信息:2015-01-29 00:10:22,075 ERROR commonapi.CommonApiAction - errorCode:5000,5000-00;Description:程序异常。Error on line 1 of document : An invalid XML character (Unicode: 0x19) was found in the CDAT...原创 2018-08-06 11:14:39 · 13621 阅读 · 3 评论 -
JavaWeb项目启动时,自动执行代码的三种方式(包含不占用tomcat启动时长的方式)
现有三种方式可以实现在tomcat启动时执行某段代码(三种实现方式见1.2.3.)由于这三种方式的执行时长计算在tomcat的启动时长里,如果tomcat设置了启动超时时间,那么这三种方式执行的操作很可能会让tomcat启动超时。为了解决自动执行的部分不影响tomcat的正常启动我们可以在三种方式中新建一个线程,将需要操作的部分交给子线程去做。我们可以取三种方式的任意一种,新建一个线程...转载 2018-11-19 10:07:44 · 172 阅读 · 0 评论 -
Junit 异常 No tests found matching
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=test2], {ExactMatcher:fDisplayName=test2(cn.amumu.spring.test.shiro.ShiroTest12)], {LeadingIdentifierMatcher:fClassName=cn.amum...原创 2018-11-25 21:10:10 · 2156 阅读 · 0 评论 -
Java本地调用shell,cmd命令
Java本地调用shell,cmd命令本地调用cmd命令本地调用Linux命令本地调用cmd命令@Test public void testCmd()throws Exception{ String cmd="cmd /c date"; //命令的前面必须要有cmd /c execCmd(cmd); } public static vo...原创 2019-01-07 20:09:23 · 818 阅读 · 0 评论 -
java中读取配置文件的方法
一、使用org.apache.commons.configuration需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commons-logging-1.2.jar。maven依赖为<!-- 使用org.apache.commons.configu...原创 2019-01-07 21:26:48 · 544 阅读 · 0 评论 -
java接口与多态
接口无法被实例化,但是可以被实现。在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个此接口实现类的对象。接口可以用来作为一种引用类型使用,在创建对象时使用接口名,也就是用接口类型的变量指向接口实现类的实例。得到这个引用后,可以访问接口中定义的方法。 例:public class Test { public static void main(String[原创 2017-12-16 14:30:46 · 269 阅读 · 0 评论