对象拷贝 - 优雅的解决方案 Mapstruct

阅读更多

Effective Java 读书笔记 - 09. 使用try-with-resources语句替代try-finally语句

9. 使用 try-with-resources 语句替代 try-finally 语句

  Java 类库中包含许多必须通过调用 close 方法手动关闭的资源。 比如 InputStreamOutputStreamjava.sql.Connection。 客户经常忽视关闭资源,其性能结果可想而知。 尽管这些资源中有很多使用 finalizer 机制作为安全网,但 finalizer 机制却不能很好地工作(详见第 8 条)。

  从以往来看,try-finally 语句是保证资源正确关闭的最佳方式,即使是在程序抛出异常或返回的情况下:

阅读更多

Java源码之List,Set,Map

Java原理之List,Set,Map

  • 1、Java8对Java7的HashMap做了修改,最大的区别就是利用了红黑树。
  • 2、Java7的结构中,查找数据的时候,我们会根据hash值快速定位到数组的具体下标。但是后面是需要通过链表去遍历数据,所以查询的速度就依赖于链表的长度,时间复杂度也自然是O(n)
  • 3、为了减少2中出现的问题,在Java8中,当链表的个数大于8的时候,就会把链表转化为红黑树。那么在红黑树查找数据的时候,时间复杂度就变味了O(logN)
阅读更多

J2EE基础知识

这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书
本文引用 https://github.com/Snailclimb/JavaGuide
自己进行了添加与修改

Servlet总结

在Java Web程序中,Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()**中做相应的处理,并将回应HttpServletResponse反馈给用户。Servlet可以设置初始化参数,供Servlet内部使用。一个Servlet类只会有一个实例,在它初始化时调用init()方法,销毁时调用destroy()方法Servlet需要在web.xml中配置(MyEclipse中创建Servlet会自动配置),一个Servlet可以设置多个URL访问Servlet不是线程安全**,因此要谨慎使用类变量。

阅读更多

Java基础知识

1. 面向对象和面向过程的区别

面向过程

优点: 性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发

缺点: 没有面向对象易维护、易复用、易扩展

阅读更多

OOM 的介绍

OOM 分析

Java 堆内存溢出

在 Java 堆中只要不断的创建对象,并且 GC-Roots 到对象之间存在引用链,这样 JVM 就不会回收对象。

只要将-Xms(最小堆),-Xmx(最大堆) 设置为一样禁止自动扩展堆内存。

当使用一个 while(true) 循环来不断创建对象就会发生 OutOfMemory,还可以使用 -XX:+HeapDumpOnOutOfMemoryError 当发生 OOM 时会自动 dump 堆栈到文件中。

阅读更多

Java 运行时的内存划分

这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书

Java 运行时的内存划分

程序计数器

记录当前线程所执行的字节码行号,用于获取下一条执行的字节码。

当多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。由此也可以看出程序计数器是每个线程私有的。

阅读更多

为什么处理排序的数组要比非排序的快

这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书

为什么处理排序的数组要比非排序的快

问题

阅读更多

Java编程技巧

这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书

如何在整数左填充0

问题

如何在整数左填充0
举例 1 = “0001”

阅读更多