Java
文章平均质量分 63
Owen William
这个作者很懒,什么都没留下…
展开
-
区别:synchronized与static synchronized
1.1论述synchronized是java语言提供的锁机制的其中一种,其实现共享资源的同步。Synchronized使用时可以直接加载方法上或代码块中(括号表示需要锁的对象)。那么synchronized与static synchronized有什么区别呢?主要的区别如下:synchronized是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问类的该实例的所有synchroni...原创 2020-02-14 09:55:01 · 423 阅读 · 0 评论 -
线程池ThreadPoolExecutor使用
1. 说明 最近笔者在开发时,遇到了这样的问题。当笔者通过WEB界面删除某一条记录时,系统老是报“系统出错”,并且想到删除的数据并没有删除掉。查看Tomcat的日志,发现报了以下的错误: java.util.concurrent.RejectedExecutionException at java.util.concurrent.ThreadPoolExecutor$Abort原创 2017-04-24 21:17:12 · 2252 阅读 · 0 评论 -
解析XML文件信息
1. 说明 在项目中,我们需要将一些可能会变动的信息配置在一份XML的文件中。这样,即时信息变动了也不需要修改代码,只要修改配置文件就行了。比如,我们在创建线程池时,我们会将创建线程池需要的corePoolSize、maxinumPoolSize、keepAliveTime等参数配置到指定的配置文件中,这样对于不同的项目,我们可以选用不同的参数。所以,本次的博客笔者主要向大家介绍如何原创 2017-05-07 21:01:30 · 410 阅读 · 0 评论 -
实现截图页面并导出word
1.说明截图是现在手机应用的最基本的功能,大伙儿都喜欢将自己的手机上的某个画面截图发到朋友圈上。当是在实现的开发时,非APP的应用,我们也需要截图某个页面,将其做成报告或存档。这时笔者将分别介绍使用java的jsp的技术应该如何实现。2.技术实现2.1Java技术使用java技术时,我们需要的是从前端获取到页面的元素,这些元素将会以一个点一个点的写到word文件中。所以,需要提取r...原创 2018-07-30 18:27:58 · 2415 阅读 · 0 评论 -
使用poi生成word文档(最全例子)
1.说明平时的项目中,我们可能需要做大量的报告。而这些报告中,有些是固定的格式,有些是需要自定义模板来生成。如果是固定的形式的,那么相对而言是比较好做的,但要是根据模板来生成报告,比如:word、Excel或PDF。这样的话,可能需要我们花点时间去解决了。这篇博客主要是带领大家学习一下,如何用poi技术来实现生成word报告。2.设计我们知道,poi的技术可以做出word、Excel、...原创 2018-07-30 18:41:17 · 68305 阅读 · 21 评论 -
监听UDP端口
说明问题如果我们要监控TCP协议的端口,那么比较简单。只要通过 telnet ip port,就可以查看端口是否处于正常状态。因为TCP的协议是应答式的,也就是说,从发请请求到结束,TCP会跟踪最后的结果是怎样,这个对于重要信息的发送是较为重要的。但是,如果要我们去监听UDP的端口,那就麻烦了,我们不能用telnet的命令,当然网站上也给出了一些在linux和windows上分别使用的命令去pi...原创 2018-08-24 18:00:50 · 20175 阅读 · 0 评论 -
Json文件转Map(一)
说明 笔者最近在项目开发中遇到这样的一个问题:首先需要将指定的Json文件转为Map,然后还要从Map中获取指定key的value.所以在这一篇的博客中,笔者将会介绍如何将json文件转化为Map。判断JsonObject或JsonArray 读者应该清楚Json的格式,最简单的就是Key:value的形式。如果对于一份简单的Json文件的话,那么转化为Map就很好实现。问...原创 2018-10-26 17:56:59 · 6271 阅读 · 1 评论 -
Json文件转Map(二)之解析节点
说明 在上一篇博客中,笔者向大家介绍了如何去解析Json并转化为Map。这一篇的博客,笔者主要是介绍如何去提取嵌套Json的节点并保存。例如以下的Json格式: { "error": 0, "status": "success", "results": [{ "currentCity": "青岛", "index": [{ &quo原创 2018-10-26 18:02:19 · 836 阅读 · 0 评论 -
Json文件转Map(三)之获取嵌套Map值
说明在上一章节的博客中,我们已经学习了如何解析嵌套的Json,将获取嵌套Json的节点。那么在这一章节中,如何通过以下的节点格式去取值。index8=results>index>index7> index7=results>index> index=results> index2=results> results=null分析及实现既...原创 2018-11-09 17:59:50 · 3234 阅读 · 0 评论 -
Json文件转Map(四)之代码
说明 在前几篇的博客中,笔者已经向大家说明了如何去解析Json文件,而且这个Json文件是嵌套的。还有就是如何去获取嵌套Json文件的节点,还有就是取节点的值。这一篇博客主要是将全部的代码分享给读者。代码 package com.owen.json;import java.io.BufferedReader;import java.io.File;import jav...原创 2018-11-09 18:01:41 · 1221 阅读 · 0 评论 -
使用freemarker模板生成html文件(一)
导言本次的博客,笔者将会向读者分享的是,如何通过freemarker的模板生成HTML的文件。众所周知,有时候项目上需要开发人员通过java的代码动态生成HTML文件,如日报、月报、账务报表等。为了可提高访问的性能,我们会预先生成HTML文件,这个的话可以提高访问的效率。在这一次博客中,笔者将会通过一个例子来分享这个功能,这个例子的功能点是:首先,将一份Json的文件转化为对象,及将对象转换为...原创 2019-01-30 16:55:35 · 6706 阅读 · 4 评论 -
使用freemarker模板生成html文件(二)
导言在上一篇的博客中,笔者向读者介绍了如何将Json转对象,及如何将对象转Json。那么,在本次的博客中,笔者将要向读者介绍的是,如何将一个Map作为资源,然后生成一份HTML的文件。这里需要读者自己先预备好一份freemarker的模板,模板的后缀是ftl。如果读者对于freemarker比较陌生的话,自己百度查找一个,它的语法其实是很简单的。读者也可能通过笔者给的模板来学习freemark...原创 2019-01-30 17:00:32 · 1958 阅读 · 0 评论 -
H2数据库使用
H2数据库说明 H2是一个文本数据库,你可以引用到自己的项目中,或在电脑上直接使用。好处在于不需要像Oracle或Mysql那样要安装软件,而且是轻量的。H2在使用时,只要引入h2*.jar文件,并指明JDBC驱动:org.h2.Driver,还有就是数据库的路径即可。H2在项目中使用时,你可以看作H2有一个服务平台,将你的项目web端和H2数据库连接起来。电脑上使用H2...原创 2019-03-29 18:46:11 · 3352 阅读 · 0 评论 -
监控redis性能
1.导言 在开发过程中,为了提高系统的访问效率,我们会自己开发个缓存工具或使用第三方的缓存工具。笔者公司最近的开发中使用的是redis作为缓存工具。关于redis的介绍相信用过的读者都知道它的好处,这里不作介绍。这篇博客也不是关于redis是怎么使用,而是说一个如何去监控redis的性能,或者说是监控redis的一些主要的指标。毕竟在一些证券、银行的系统中,很关心的是系统的性能,包括r...原创 2019-03-29 18:49:01 · 401 阅读 · 0 评论 -
使用jvm监控应用
1.说明在项目中,如果要去监控某个java应用的性能,这个时候有多个方法。你可以应用开源的软件或自己写个程序来监控。如果是自己写个程序来监控java的应用,我们就要考虑用什么样的方法是最好的。其中有两个方法: 第一种方法,你可以使用Sigar将要监控的代码写到自己的应用中,但是前提是这个应用是你自己公司开发的,如果要监控其它公司的应用,人家可能就不太愿意开放这个接口给你。第二种方法...原创 2019-06-19 15:58:32 · 496 阅读 · 0 评论 -
解决系统性能问题:线程增加导致堆增加
问题描述最近使用Spring boot 架构了一套监控系统.由于是监控系统,所以对系统的调用频率会比较频繁。例如,系统要每隔30秒开启线程去访问远程主机获取所需要的信息。所以系统的开销还是比较大。就是因为开销大,所以要保证系统自身不能卡死,不然还怎么去监控其它的呢?但是事与愿违,这套监控系统刚开始跑个两三天是没有问题的,后来发现,重启系统后,运行一个小时多就卡死了。前端访问不到页面,控制台报错...原创 2019-07-23 09:25:26 · 1100 阅读 · 1 评论 -
获取一周的星期一日期和一个月的第一天星期
1. 需求说明最近笔者在开发一个报表功能时,客户要求报表生成的时间可以自己制定,也就是说我们系统需要提供一个或两个日期的文件框(如果是日报表就一个,如果是周或月或年报表就需要两个)给客户自己填写。除此之外,客户还需求,如果是日报,那么就提供一个文本框,文本框默认为当天的时间;其它的情况就要提供两个文本框,默认的时间是从开始时间到当天时间。例如:周报需要从一周的星期一的日期到当天,月报就需要从原创 2017-01-17 20:51:01 · 4639 阅读 · 0 评论 -
时间间隔递增
1.说明在开发的时候,我们可能需要在当前的时间进行某个时间段间隔增加或减速少,如果要自己写的话,可能代码量会一点,但是用Calendar来处理来会快很多。如果按照秒数增加,可以用add(Calendar.SECOND,数字),按照分钟增加add(Calendar.MINUTE,数字)还可以按照小时、日期等。说明一下后面的数字,如果是正数那么就是递增、如果是负数就是递减。2.例子下面我们原创 2016-12-04 17:33:06 · 1037 阅读 · 0 评论 -
将秒数转化为日期、时、分、秒
1.说明笔者最近在开发过程中,需要进行时间上的处理的地方比较多,有时候没有处理好导致出现各种的错误。这里主要是讲一下,如何时将秒数的时间转化为"yyyy-MM-dd HH:mm:ss"的格式,例如:2016-12-04 16:40:23的格式。为了更好的转化时间,笔者用了Calendar和SimpleDateFormat的类。如果想了解更多这个两个类的用法,读者可以自己去看java的API。原创 2016-12-04 17:30:36 · 23443 阅读 · 0 评论 -
Java I/O系统之InputStream
1.InputStream类型继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit);下图中深色为节点流,浅色为处理流。2.InputStream的基本方法InputStream的有以下几个的基本用法:1) 读取一个字节并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。int read() throw原创 2016-08-06 17:41:13 · 340 阅读 · 0 评论 -
Java I/O系统之OutputStream
1.OutputStream类型继续自OutputStream的流是用于程序中输入数据,且数据的单位字节(8bit):下图深色为节点流,浅色为处理流。2.OutputStream的基本方法OutputStream的基本方法如下:1) 向输出流写入一个字节数据,该字节数据为参数b的低8位void write(int b) throws IOExcep原创 2016-08-06 17:45:46 · 446 阅读 · 0 评论 -
Java I/O系统之Reader
1.Reader类型继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色的为处理流。2.Reader的基本方法1) 读取一个字符并以整数形式返回(0~255),如果返回-1已到输入流的末尾。int read() throws IOException2) 读取一系列字符并存储到一个数原创 2016-08-06 17:49:53 · 352 阅读 · 0 评论 -
Java I/O系统之Writer
1.Writer类型继承Writer的流都是用于程序输出数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色为处理流。2.Writer的基本方法1) 向输出流写入一个字符数据,该字节数据为参数b的低16位void write(int c) throws IOException2) 将一个字符类型的数组中的数据写入输出流。原创 2016-08-06 17:54:19 · 692 阅读 · 0 评论 -
Java I/O系统之处理流类型
1.缓冲流介绍1) 缓冲流要“套接”在相应的节点上,对读写的数据提供了缓冲的功能,提高读写的效率,同时增加了一些新的方法。2) J2SDK提供了四种缓存流,其常用的构造方法为:BufferedReader(Reader in)BufferedReader(Reader in, int sz) //sz为自定义缓存区的大小BufferedWriter原创 2016-08-06 17:57:38 · 1448 阅读 · 0 评论 -
Java I/O系统之转换流
1.转换流介绍1) InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间转换2) InputStreamReader需要和InputStream“套接”3) OutputStreamWriter需要和OutputStream”套接”4) 转换流在构造时可以指定其编码集合,例如:原创 2016-08-06 18:00:01 · 321 阅读 · 0 评论 -
Java I/O系统之转换流
1.数据流介绍1) DataInputStream和DataoutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点上。2) DatainputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(如:in原创 2016-08-06 18:01:31 · 321 阅读 · 0 评论 -
Java I/O系统之Print 流
1. Print 流介绍1) PrintWriter和PrintStream都属于输出流,分别针对与字符和字节。2) PrintWriter和PrintStream提供了重载的print。3) Println方法用于多种数据类型的输出。4) PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误原创 2016-08-06 18:04:09 · 418 阅读 · 0 评论 -
Java I/O系统之Object流
1. Object流介绍 当我们要向程序写入一个对象或读取一个对象时,我们会用ObjectOutputStream和ObjectInputStream。可是,我们写入与写出的对象要求拥有持久性,也就是对象是序列化的。Java的对象序列化将那些实现Serializable接口的对象转换成一个字节序列,并能够一以后将这个字节序列完全恢复为原来的对象。如果你不希望对象的某个参数被序列化,那么就原创 2016-08-06 18:05:50 · 1380 阅读 · 2 评论 -
Java多线程机制(一)
1.线程在基本概念1) 线程是一个程序内部的顺序控制流。简单说线程就是程序中执行的路径。2) 进程的理解就是程序运行的主线程,也就是即将要开始运行的线程。3) 线程和进程的区别:a) 每个进程都有独立代码和数据空间(进程上下文),进程间的切换会有较大的开销。b) 线程可以看成是轻量级的进程,同一类线程共享代码原创 2016-08-07 17:56:20 · 825 阅读 · 4 评论 -
Java线程状态转换
1.线程状态图 当我们new 一个Thread的时候,就是告诉CPU我们创建一个新的线程,这个时候只是创建过程。当我们开始为创建的线程调用start()的方法时,我们的线程就进入的就绪状态。所以我们一般不直接开始调用run的方法。就绪状态好了之后,就会反选run的方法。如果出现某种特殊的情况,那么线程可以还会进入就绪状态。例如,某个线程的优先级比较高的时候,需要它先使用。当然,在线程执行原创 2016-08-07 18:01:28 · 597 阅读 · 6 评论 -
Java同步线程
在Java语言中,引入对象互斥锁的概念,保证共享数据操作的完整性。每个对象都应用于一个可称为“互斥锁”的标记,这个标记保证在任一时刻,只能有一个线程访问对象。1.关键字synchronizedJava以提供关键字synchronized的形式,为防止资源冲突提供了内置支持。当任务要执行被synchronized关键字保护的代码片段的时候,它将检查锁是否可用,然后获取锁,执行代码,释放锁。原创 2016-08-07 18:05:56 · 537 阅读 · 7 评论 -
Java网络编程介绍
1.OSI和TCP/IP的参考模型 2.数据封装过程3.数据拆分过程原创 2016-08-07 18:09:19 · 483 阅读 · 7 评论 -
TCP Socket
1 .介绍TCP Socket1) 两个Java应用程序可通过一个双向的网络连接实现数据交换,这个双向链路一端称为一个Socket。2) Socket通常用来实现client-server连接3) java.net包中定义的两个Socket和ServerDSocket,分别用来实现双向连接的client和server端4) 建原创 2016-08-07 18:13:02 · 464 阅读 · 2 评论 -
Java网络编程之UDP
1. 介绍UDP UDP与TCP相比,它是不可靠的传输,但是它效率高。对于UDP的传输有这样的一个特点那就是在传输时不需要对方的应答,直接将信息给了对方,至于对方是否接收到,它是不管的,所以它是不可靠的。因此,对于UDP来说是严格上来说是不存在客户端与服务端的,我们这里的例子讲解还是分为客户端与服务端来说,主要是为了方便大家的理解。2.UDP例子1) 首先,我们创建一个服原创 2016-08-07 18:15:54 · 685 阅读 · 4 评论 -
Java I/O系统(一)
1.输入/输出流的分类java.io包中定义了多个流类型(类或抽象类)来实现输入、输出功能;可以从不同的角度对其进行分类:1) 按数据流的方向不同可以分为输入流和输出流。输入流和输出流的可以这样来理解,例如,读取一份文件,对于文件来说是输出,而对于计算机来说是输入,然而我们平时都是面向计算机的,所以是输出;反之亦然。2) 按处理数据单位不同可以分为字节流和字原创 2016-08-06 17:34:54 · 368 阅读 · 0 评论