标签

Java

20 篇文章

全部文章
  • JDK命令行(jps、jstat、jinfo、jmap、jhat、jstack、jstatd、hprof)与JConsole

    很多资料在介绍JDK命令行工具时并不是在Java8环境下,因此还在使用过时的永久区系列的参数,给一些读者造成困难。 Java8使用Metaspace(元空间)代替永久区,对于64位平台,为了压缩JVM对象中的klass指针的大小,引入了类指针压缩空间(Compressed Cla…

  • 海纳百川而来的一篇相当全面的Java NIO教程

    本文是从网络复制、经过我的整理、开光而来的,而来的,来的,的。 为什么?因为写的太好了没事打开看看打发打发时间,哈哈 零、NIO包 NIO类包含在一个叫作java.nio包的包中。要了解NIO子系统不会取代java.io包中可用的基于流的I/O类,如果有对java.io基于流的I…

  • 深入理解JAVA虚拟机(内存区域+GC算法+JVM调优)

    1.Java虚拟机内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。 根据《Java虚拟机规范(Java…

  • 十分钟学会Java8:lambda表达式和Stream API

    Java8 的新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、MetaSpace。总得来说,Java8 的新特性使 Java 的运行速度更快、代码更少、便于并行、最大化减少空指针异常。 本篇博客将以笔者的一些心得…

  • Java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)

    在JDK的并发包里提供了很多有意思的并发工具类。CountDownLatch、CyclicBarrier和Semaphore 工具类提供了一种并发流程控制的手段,Exchanger 工具类则提供了在线程间交换数据的一种手段。 1.等待多线程完成的 CountDownLatch C…

  • Java线程池实现原理与技术(ThreadPoolExecutor、Executors)

    本文将通过实现一个简易的线程池理解线程池的原理,以及介绍JDK中自带的线程池ThreadPoolExecutor和Executor框架。 1.无限制线程的缺陷 多线程的软件设计方法确实可以最大限度地发挥多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意…

  • 高并发下的Java数据结构(List、Set、Map、Queue)

    由于并行程序与串行程序的不同特点,适用于串行程序的一些数据结构可能无法直接在并发环境下正常工作,这是因为这些数据结构不是线程安全的。本节将着重介绍一些可以用于多线程环境的数据结构,如并发List、并发Set、并发Map等。 1.并发List Vector 或者 CopyOnWri…

  • Java获取文件Content-Type的四种方法

    HTTP Content-Type在线工具 有时候我们需要获取本地文件的Content-Type,已知 Jdk 自带了三种方式来获取文件类型。 另外还有第三方包 Magic 也提供了API。Magic依赖: 下面我们来通过单元测试看下这四种方式的效果。主要代码: 首先,新建文本文…

  • Java性能优化之编程技巧总结

    程序的性能受代码质量的直接影响。在本文中,主要介绍一些代码编写的小技巧和惯例,这些技巧有助于在代码级别上提升系统性能。 1、慎用异常 在Java软件开发中,经常使用 try-catch 进行错误捕获,但是,try-catch 语句对系统性能而言是非常糟糕的。虽然在一次 try-c…

  • Java核心数据结构(List,Map,Set)原理与使用技巧

    JDK提供了一组主要的数据结构实现,如List、Map、Set等常用数据结构。这些数据都继承自 java.util.Collection 接口,并位于 java.util 包内。 1、List接口 最重要的三种List接口实现:ArrayList、Vector、LinkedLis…

  • Java性能优化之使用NIO提升性能(Buffer和Channel)

    在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈。提升I/O速度,对提升系统整体性能有着很大的好处。 在Java的标准I/O中,提供了基于流的I/O实现,即InputStream和OutputStream。这种基于流的实现以字节为单位处理数据,…

  • 你知道Java的四种引用类型吗

    关于java四种引用类型,我也是刚了解,特此记下! 在Java中提供了四个级别的引用:强引用,软引用,弱引用和虚引用。在这四个引用类型中,只有强引用FinalReference类是包内可见,其他三种引用类型均为public,可以在应用程序中直接使用。引用类型的类结构如图所示。 1…

  • Java性能优化之String字符串优化

    字符串是软件开发中最重要的对象之一。通常,字符串对象在内存中是占据了最大的空间块,因此如何高效地处理字符串,必将是提高整体性能的关键所在。 1.字符串对象及其特点 Java中八大基本数据类型没有String类型,因为String类型是Java对char数组的进一步封装。 Stri…

  • 深入理解Java中的反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 一:Class类 在面向对象的世界里,万物皆对象。类也是对象,类是java.l…

  • 在执行jar包时如何使用调优参数

    使用时去掉换行 各参数百度获取

  • Linux下快速安装Java开发环境

    一行命令安装 Java 环境 jdk-8u341-linux-x64.tar.gz 1.下载 jdk8官网下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm…

  • Linux下如何让jar包程序在后台一直执行

    方法一 &:使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。 nohub:nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。默认让程序控制台输出转移到no…

  • 详解JSOUP的Select选择器语法

    本文参考:JSOUP中文文档 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素。 方法 可以使用Element.select(String selector) 和 Elements.select(String selector) 方法实现: 说明 jsoup ele…

  • Java获取Window和Linux系统的项目ClassPath路径

    不啰嗦,直接复制工具类 使用方法 注意 在使用System.getProperty("user.dir")时: 如果是在IDE中启动,则获得的路径为D:\xxxx\projectName,包括项目名; 如果是以Jar包方式启动,得到该jar包所在的路径。如project.jar在…

  • Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 2.代码 · 实例:通过一个已知的163邮箱发送给他人邮件 · 实例:通过一个已知的QQ邮箱发送给他人邮件 --- 二:SpringBoot的JavaMailSenderImpl发送 1.在resources下新建mailConfig.properti…