随笔分类 - Java
摘要:引言Java程序在实际生产过程中经常遇到CPU或内存使用率高的问题,那么应该如何排查问题的原因呢,本文大概描述一下排查方法。 一、命令方式分析1.排查占用CPU的进程使用top命令,在大写打开的情况下按P键或者在大写没有打开的情况下按 shift+P键,会按照CPU使用率的高低进行排序(在大写打开的
阅读全文
摘要:年前一直忙着项目现场实施,没时间整理,今天终于得空开始整理。 做WMS系统经常会遇到导出各种类型的库存单,此时就可以在后台将这些整合压缩到一个压缩包内然后再下载压缩包,一个接口就可以完成的事。 有两个思路: 思路一:将生成的多个文件先逐个存到本地一个临时的文件夹内并压缩,获取压缩文件下载,下载完以后
阅读全文
摘要:1、POM.XML <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <dependency> <group
阅读全文
摘要:主要原因是Linux服务器上一般安装的字体有限,这时候如果用Aspose转PDF就会出现乱码,解决方法就是把Windows字体拷贝到服务器的目录,逐个安装,然后重启服务器即可; Aspose 转化PDF的过程中需要引用本地的字体库,而centos没有。 具体步骤如下: 1. 获取window字体C:
阅读全文
摘要:下载aspose-cells-8.5.2.jar包 http://pan.baidu.com/s/1kUBzsQ7 JAVA代码 package webViewer; import java.io.*; import com.aspose.cells.*; //引入aspose-cells-8.5.
阅读全文
摘要:一、线程安全在三个方面体现 1.原子性:提供互斥访问,同一时刻只能有一个线程对数据进行操作,(atomic,synchronized); 2.可见性:一个线程对主内存的修改可以及时地被其他线程看到,(synchronized,volatile); 3.有序性:一个线程观察其他线程中的指令执行顺序,由
阅读全文
摘要:Java8内存结构图 虚拟机内存与本地内存的区别 Java虚拟机在执行的时候会把管理的内存分配成不同的区域,这些区域被称为虚拟机内存,同时,对于虚拟机没有直接管理的物理内存,也有一定的利用,这些被利用却不在虚拟机内存数据区的内存,我们称它为本地内存,这两种内存有一定的区别: JVM内存 受虚拟机内存
阅读全文
摘要:前言 最近在写一些业务代码时遇到一个需要产生随机数的场景,这时自然想到 jdk 包里的 Random 类。但出于对性能的极致追求,就考虑使用 ThreadLocalRandom 类进行优化,在查看 ThreadLocalRandom 实现的过程中,又追了下 Unsafe 有部分代码,整个流程下来,学
阅读全文
摘要:观点一(灵剑): 前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。 当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else? 1. 提前return 这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码: if
阅读全文
摘要:一、前言 代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了,
阅读全文
摘要:问题:数组转换成 List 然后进行 remove 操作时却抛出 java.lang.UnsupportedOperationException 异常。 String pattern = " ^, v, m, n-music-name, $ "; String[] patternSplit = Ut
阅读全文
摘要:一、概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stre
阅读全文
摘要:package com.leelen.esafe.test; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.*; public class T
阅读全文
摘要:CRC32简介 CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。 CRC32检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以
阅读全文
摘要:关于线程和线程池的学习,我们可以从以下几个方面入手: 第一,什么是线程,线程和进程的区别是什么 第二,线程中的基本概念,线程的生命周期 第三,单线程和多线程 第四,线程池的原理解析 第五,常见的几种线程池的特点以及各自的应用场景 一、线程概念 线程,程序执行流的最小执行单位,是行程中的实际运作单位,
阅读全文
摘要:JDK 1.8+ Node 中pid 为 0 的是根节点 public class Node { private int id; private int pid; private String name; private List<Node> sub = new ArrayList<>(); pub
阅读全文
摘要:在java中switch后的表达式的类型只能为以下几种:byte、short、char、int(在Java1.6中是这样),在java1.7后支持了对string的判断。
阅读全文
摘要:1、首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 2、相关联的API: 1.首先先来看下Se
阅读全文
摘要:import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import ...
阅读全文
摘要:集合类的通用遍历方式, 用迭代器迭代: Iterator it = list.iterator(); while(it.hasNext()) { Object obj = it.next(); } Map遍历方式: 1、通过获取所有的key按照key来遍历 //Set<Integer> set =
阅读全文