JAVA
文章平均质量分 67
走慢一点点
这个作者很懒,什么都没留下…
展开
-
Springboot实现doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频在线预览功能,你学“废”了吗?
最近工作中,客户需要生成包含动态内容的word/pdf报告,并且需要在线预览。刚开始使用后台直接生成word文档,返回文件流给前端,浏览器预览会发生格式错乱问题,特别是文档中的图片有些还不显示。想到最简单的办法就是后台将docx转换成pdf,前端预览一般就不会出问题。技术栈使用的是java,springboot那一套,所以调研了网上java文件预览相关的技术方案。原创 2024-08-13 15:56:18 · 818 阅读 · 0 评论 -
java并发编程 之 常用并发类库使用举例
CountDownLatch (同步计数器)Latch闭锁的意思,是一种同步的工具类。类似于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭着的,不允许任何线程通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。且当门打开了,就永远保持打开状态。作用:可以用来确保某些活动直到其他活动都完成后才继续执行。使用场景:1、例如我们上例中所有人都到达饭店然后吃饭;2、某个操作需要的资源初始化完毕3、某转载 2015-11-03 13:51:31 · 2187 阅读 · 0 评论 -
Java并发编程 之 线程池核心ThreadPoolExecutor
java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。构造参数在ThreadPoolExecutor类中提供了四个构造方法:public class ThreadPoolExecutor extends AbstractExecutorService { ..... publ转载 2015-11-03 17:24:27 · 3287 阅读 · 0 评论 -
java检测文件编码——cpdetector
cpdetector一个可以自动检测文本编码格式的项目detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的 字符集编码。 使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar cpDetector是基于统计学原理的,不保证完全正确。以下是读取xxx.txt文件中的内容,以html的方式返回给浏览器的简单serv原创 2015-05-17 22:51:19 · 15992 阅读 · 3 评论 -
json、xml解析
常用解析工具一、JSON解析1、解析json之net.sf.json http://blog.csdn.net/itlwc/article/details/384426672、解析json之com.google.gson.Gson http://blog.csdn.net/itlwc/article/details/38454867 相关文章:http://blog原创 2015-05-07 10:50:41 · 715 阅读 · 0 评论 -
HttpClient与Spring的整合
本文整合基于httpclient-4.5.2版本。加入httpclient依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version></dependency>编写Spring与HttpClien原创 2016-12-02 15:58:48 · 4926 阅读 · 0 评论 -
dubbo简介、maven构建步骤、框架说明
简介官网:http://dubbo.io/ 源码下载:https://github.com/alibaba/dubbo 发布包下载:http://repo1.maven.org/maven2/com/alibaba/dubbo/DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000原创 2017-03-01 14:49:00 · 809 阅读 · 0 评论 -
Java——多线程总结、ThreadLocal/Volatile/synchronized/Atomic关键字
当线程被创建并启动之后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在其生命周期中,要经过”新建(New)”、”就绪(Runnable)”、”运行(Running’)”、”阻塞(Blocked)”和”死亡(Dead)”五种状态。线程在创建之后,不可能一直霸占着CPU独立运行,需要在多个线程之间切换,所以大部分时间处于运行、阻塞之间切换。Thread类中和这四种状态相关的方法: //转载 2015-10-08 10:54:42 · 1766 阅读 · 0 评论 -
java并发编程 之 Queue的一些总结
什么是队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新增原创 2017-03-31 00:09:27 · 5276 阅读 · 0 评论 -
RESTful的一些总结
RESTful Web ServiceREST是什么RESTful是什么REST 架构的主要原则补充:URI和URL一切皆为资源在 REST 的定义中,一个 Web 应用总是使用固定的 URI 向外部世界呈现一个资源。 它认为Web是由一系列的抽象资源组成,这些抽象的资源具有不同的具体表现形式。 譬如,定义一个资源为photo,含义是照片,它的表现形式可以是一个图片,也可以是一个.xml的文件,转载 2017-10-12 11:19:24 · 631 阅读 · 1 评论 -
Maven 之 依赖管理
最简单的依赖<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mav转载 2017-10-12 14:49:49 · 1169 阅读 · 0 评论 -
Spring事务异常回滚
Java异常层次结构可查的异常/检查型异常(checked exceptions) - 编译器要求必须处置的异常 除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。 这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。不可原创 2017-11-30 21:38:03 · 2242 阅读 · 0 评论 -
Maven 之 常用plugin
Maven项目的标准目录结构 目录结构 说明 src/main/java application library sources - java源代码文件,会自动编译到classes文件夹下 src/main/resources application library resources - 资源库,会自动编译到classes文件夹下 src/mai原创 2018-02-05 15:19:50 · 896 阅读 · 0 评论 -
logback 配置总结
一、根节点configuration 及其 子节点根节点configuration属性: scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug:当此属性设置为true时,将打...原创 2018-05-10 15:38:50 · 410 阅读 · 1 评论 -
Linux下快速搭建Java开发/测试环境【笔记】
一、快速安装JDK检查系统是是否自带了openjdk,如果有卸载之1、检查一下系统中的jdk版本[root@ip-172-31-33-123 software]# java -version2、检测jdk安装包[root@ip-172-31-33-123 software]# rpm -qa | grep java3、卸载openjdkyum remove *openj...原创 2018-07-16 11:53:05 · 985 阅读 · 0 评论 -
java并发编程 之 并发集合对象
我们常用到的一些集合对象像ArrayList、LinkedList、HashSet、TreeSet、PriorityQueue等都不是线程安全的,java Concurrent包提供了一些并发集合对象。1. Concurrent Queues:ConcurrentLinkedQueue,并发队列的链表实现,它实现了Queue本身具备的基本操作。它的并发控制是通过原子操作对象AtomicReferen转载 2015-04-06 13:57:46 · 800 阅读 · 0 评论 -
java并发编程 之 Lock(锁的妙用)
Java 5中提供了另一种实现线程同步或互斥的机制,即使用Lock。Lock比传统线程模型中的synchronized方式更加面向对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的,我们只需要上好相应的锁即可。如果代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果代码修改数据,只能有一个人在写,并不能同时读取,那就上写销锁。总之,读的时候原创 2015-04-06 13:24:38 · 1496 阅读 · 0 评论 -
使用Gson将Java对象转换为JSON
Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。 Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法1) toJson() – 转换java 对象到JSON2) fromJson() – 转换JSON到java对象 下面是几个小例子1转载 2013-10-31 17:17:36 · 18281 阅读 · 0 评论 -
利用ParameterizedType和范型做切面编程
前段时间用hibernate的时候,看到用范型加ParameterizedType进行设计的例子,使用的比较巧。用ParameterizedType进行切面编程十分轻巧。下面是一个利用ParameterizedType进行切面编程的例子:例子中有一个抽象的JpaDaoImpl.java类,所以继承该类的XXXJpaDAOImpl,都对应于一个数据库表(table)。转载 2014-02-11 15:56:54 · 1058 阅读 · 0 评论 -
Dom4j读写文件时的编码问题
Dom4j读写文件时的编码问题原创 2014-05-05 15:40:52 · 2427 阅读 · 0 评论 -
常用正则表达式收集整理
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,转载 2014-05-27 10:45:13 · 828 阅读 · 0 评论 -
基于 Quartz 开发企业级任务调度应用
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/index.html转载 2014-07-26 17:44:36 · 852 阅读 · 0 评论 -
linux 下单独运行java程序
1、 javaweb项目原创 2014-09-18 15:48:00 · 2066 阅读 · 0 评论 -
JAXB 操作XML 与 Object
Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。是一种xml与object映射绑定技术标准。JDK5以下开发需要的jar包:activation.jar、jaxb-api.jar、 jaxb-impl.jar、 jsr173-api.jarJDK6以上版本已经集成JAXB2的JAR,在目录{原创 2014-10-23 15:47:49 · 1238 阅读 · 0 评论 -
Apache POI介绍
POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。自2009-09-28后,推出了3.5版本,提供了对Office2007的支持; HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代转载 2014-10-29 10:27:13 · 895 阅读 · 0 评论 -
常用工具类
BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别一、简介:BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难转载 2014-10-22 10:30:46 · 752 阅读 · 0 评论 -
java abstract类和interface的区别,精辟!
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大转载 2015-03-15 23:31:24 · 821 阅读 · 2 评论 -
JAVA 值传递(副本传递)的理解
Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本(地址值,本质上是按值传递),这转载 2015-03-13 11:18:26 · 3394 阅读 · 0 评论 -
java——对象的引用级别
为了更加灵活的控制对象的生命周期,jdk1.2以后,将对象的引用分为4个级别: 一、强引用(StrongReference) 特性:当内存空间不足时,java虚拟机宁可抛出OutOfMemoryError错误,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 二、 软引用(SoftReference) 特性:除非JVM即将OutOfMemory,否则不会被GC回收原创 2015-03-31 10:44:47 · 1227 阅读 · 0 评论 -
JAVA如何判断网页编码
前言 最近做一个搜索项目,需要爬取很多网站获取需要的信息。在爬取网页的时候,需要获得该网页的编码,不然的话会发现爬取下来的网页有很多都是乱码。 分析 一般情况下,网页头信息会指定编码,可以解析header或者meta获得charset。但有时网页并没没有指定编码,这时就需要通过网页内容检测编码格式,通过调研,最好用的还是cpdetector。 cpd转载 2014-08-29 12:02:27 · 2273 阅读 · 0 评论 -
java并发编程 之 Condition(等待和通知)
Condition的功能类似在传统线程技术中的Object.wait和Object.notity的功能。一个锁内部可以有多个Condition,即有多路等待和通知,可以参看Jdk1.5提供的Lock和Condition实现的可阻塞队列的应用案例。在传统的线程机制中一个监视器对象上只能有一路等待和通知,要想实现多路等待和通知,必须嵌套使用多个同步监视器对象。 例一: JDK文档中提供了一个很不错的转载 2015-04-06 13:38:13 · 1122 阅读 · 0 评论 -
Java线程的生命周期
当线程被创建并启动之后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在其生命周期中,要经过"新建(New)"、"就绪(Runnable)"、"运行(Running')"、"阻塞(Blocked)"和"死亡(Dead)"五种状态。线程在创建之后,不可能一直霸占着CPU独立运行,需要在多个线程之间切换,所以大部分时间处于运行、阻塞之间切换。 一、新建和就绪状态 (1)、当转载 2013-10-30 17:42:18 · 761 阅读 · 0 评论