摘要:在日志中打印异常,经常会看到以下的写法: 或者是: 这两种其实都不太好。 e.getMessage只会打印出异常的类型,但是不会显示出错的异常方法堆栈,无法在日志中找出错误代码 而e.printStackTrace();则是将异常打印到控制台,并不是打印到error日志中。 解决方法 看logger
阅读全文
摘要:比较Integer的时候,不要用==。 查看Integer的源码,如下: / Returns an {@code Integer} instance representing the specified {@code int} value. If a new {@code Integer} inst
阅读全文
摘要:相关jar包: 相关代码: import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRendere
阅读全文
摘要:面向对象 接口 1.接口方法默认public abstract。 接口属性访问控制符默认public statistatic final。 2.接口支持多重继承,抽象类只能单继承。 3.接口可以继承接口。 方法 1.方法参数必须做校验。比如判空。 2.构造方法不能被继承,不能被重写。 3.gette
阅读全文
摘要:在平常开发中,如果涉及到计算,要求准确的精度,比如单价*数量=总价之类的计算,那么得用到BigDecimal。 ###初始化 如下: BigDecimal amount=new BigDecimal("5.33"); 注意,最好不要用double类型来初始化,数值并不准确。 比如 BigDecima
阅读全文
摘要:在java开发中,有时我们需要复制对象,并且确保修改复制得到的对象不会影响原来的对象。 于是,有些人可能会写出类似以下的代码: public class CloneTest { public static void main(String[] args) { JSONObject paramJson
阅读全文
摘要:最近在项目中发现了类似如下的代码。 修改新对象,影响了旧对象 这段代码期望原来的paramJson不改变,只改变方法参数中的paramJson。 结果却发现对形参paramJson进行替换操作,实参也跟着改变了。 除了这种传参数,类似的还有赋值。 同样发现,修改了paramJson2,会影响para
阅读全文
摘要:Request(请求) 1.获取并打印request的body中的参数。 这种获取请求中代码,一般都会封装成工具类。 如果不封装,写起来比较麻烦,类似如下: JSONObject res = new JSONObject(); String postData = null; try { postDa
阅读全文
摘要:枚举,可以用来表示状态。包括返回类型状态、错误类型状态等等。 枚举,可以简单理解成是几个常量加在对象类里面。 枚举是用来构建常量数据结构的模板,模块可扩展。枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时候,编译器会报错。 枚举规定构造方法必须为private修饰符所修饰,将枚举类型中
阅读全文
摘要:《java并发编程实战》这本书配合并发编程网中的并发系列文章一起看,效果会好很多。 并发系列的文章链接为: Java并发性和多线程介绍目录 建议: 《java并发编程实战》第3章和第4章可以暂时先跳过。。这部分内容的文字和概念很多,代码块偏少。不容易看进去。 一、线程1.线程的使用可以提升程序的性能
阅读全文
摘要:Java并发包的源码中有着Unsafe类。 Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty、Cassandra、Hadoop、Kafka等。Unsafe类在提升Java运行效率,增强
阅读全文
摘要:Maven安装与配置 Maven安装与配置,详情见:https://www.yiibai.com/maven/maven_environment_setup.html Maven中央仓库 Maven默认的中央仓库在国内连接会比较慢,可以在Maven的setting.xml中换成阿里云中央仓库,或者公
阅读全文
摘要:java执行jar包出错:Unable to access jarfile 错误的原因有多种: 1.一般都是路径不正确。在Windows中,正确的路径类似于: java -jar "D:\WebDemo\demo.jar" 如果使用的是Windows,担心弄错路径,可以直接在Windows中进入目标
阅读全文
摘要:final可以修饰类,方法,变量。 1.final修饰的类,不可以被继承。 2.final修饰方法,可以把方法锁定,以防任何继承类修改它的含义。 3.fianl修饰的变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改; 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对
阅读全文
摘要:一、效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进
阅读全文
摘要:参考博客:https://blog.csdn.net/sinat_33087001/article/details/73607625
阅读全文
摘要:java多线程之间的通信方式有多种: 1.wait(),notify(),notifyAll()方法;2.join()方法;3.通过volatile共享内存的方式进行线程通信的;4.interrupt()方法中断线程; 5.管道通信。 本文主要学习JAVA多线程中的 wait()方法 与 notif
阅读全文
摘要:synchronized能够保证在同一时刻只有一个线程执行该段代码。 使用synchronized能够防止多个线程同时并发访问程序的某些资源。 synchronized既可以修饰变量,也可以修饰方法,还可以用于代码块。 使用synchronized的原则:锁的范围尽可能小,锁的时间尽可能短。即能锁对
阅读全文
摘要:interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程。这一方法实际完成的是,给受阻塞的线程发出一个中断信号,这样受阻线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,此时调用该线程的i
阅读全文