
Java代码片段
文章平均质量分 50
lqadam
这个作者很懒,什么都没留下…
展开
-
自定义线程池如何捕获线程异常
最近写了个自定义的线程池,用于处理持续时间短、频次高的任务,逻辑上借鉴了CachedThreadPool,使用SynchronousQueue 作为任务的缓存队列,即实现没有任务进入队里,只要有空闲线程就执行任务。此外还自定义了拒接执行策略,由默认的异常拒绝执行,改为CallerRunsPolicy策略,并加了一行日志用作监控告警。自定义线程池不是重点,本文的重点在线程池捕获异常的问题。在实现该线程池的时候,笔者为其设置了一个ThreadFacotry,其中实现了UncaughtExceptionHan原创 2020-06-30 00:30:09 · 1629 阅读 · 0 评论 -
文件下载文件名乱码的几个问题
Java Web后端做文件的下载,各个浏览器之间有兼容性问题,下载文件的文件名可能有乱码,下面总结几个乱码问题和常见解决办法:firefox文件名乱码的问题:一般下载文件,都会指明Content-disposition,形如下response.setHeader("Content-disposition", "attachment;filename="+URLEncoder...原创 2018-08-05 17:42:13 · 4550 阅读 · 1 评论 -
SXSSFWorkbook写入大量数据的两点处理
初用SXSSFWorkbook,感觉以读写大量数据为买点的SXSSFWorkbook,提供出了两个API,作为对大量数据处理的方式。这里对这两个API做一个小总结。构造入参rowAccessWindowSize 这个参数,会指定一个sheet可读取的row数目,超过该数目的row,会被写入到磁盘文件中,进而不能在通过getRow访问到,通过这种方式,内存使用空间就缩小很多了。 需...原创 2018-08-05 18:03:04 · 9835 阅读 · 1 评论 -
lombok 子类中如何使用@Builder
lombok大家都知道,在使用POJO过程中,它给我们带来了很多便利,省下大量写get、set方法、构造器、equal、toString方法的时间。除此之外,通过@Builder注解,lombok还可以方便的时间建造者模式。但是,在使用@Builder过程中,我发现了一问题:子类的Builder对象没有父类的属性。这在使用上造成了一定的问题。几番搜索,对于这个问题,找到了如下解法,解法的链...原创 2018-09-16 00:58:31 · 18113 阅读 · 2 评论 -
中文拼音排序的两种方法
最近遇到了中文排序的需求,所谓中文排序,一般都是说按中文对应的拼音字母排序,经过网上查询了解,总结一下,有下面两种方式,一一介绍下:数据库中排序能在数据库中解决的问题,自然放到数据库中解决,尤其排序一般和分页一起出现,如果能在数据库层面做掉,从查询性能和代码的简洁性上讲都是最好的,那么如何在数据库层面对中文进行排序呢?其实,文字的排序,就是按代表文字的,背后的编码排序,UTF-8下,中...原创 2018-09-16 01:49:38 · 18023 阅读 · 1 评论 -
Java8 新时间API使用示例
import org.junit.Assert;import org.junit.Test;import java.time.Duration;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;import java.time.temporal.ChronoField;...原创 2018-11-21 23:28:21 · 214 阅读 · 0 评论 -
Mybatis 数据源配置(多数据源类似)
import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import ...原创 2018-11-21 23:33:00 · 312 阅读 · 0 评论 -
打点日志的一个实现
所谓打点日志,是指用于数据统计的日志,一般前端会有打点的方法,而后端也会有类似需求。按理说,后端的一般的日志也可以做到打点的效果,但是因为一般的日志离散,风格不统一,得到的日志格式不好,不容易切分统计,所以就会想要一个独立的打点日志来实现打点。实现打点日志的方法通过日志模版,增加一种类型的打点日志,则替换模版中的占位符,重新生成一遍日志的配置文件,之后热更新日志配置。使用日志框架API...原创 2019-01-29 20:34:50 · 10146 阅读 · 0 评论 -
使用Date CalendarAPI的日期工具类
下面是一个使用Date,Calendar类实现的日期的工具类,可能有些地方还需要作调整,现在是凭感觉写的,之后还会写一个使用Java8新日期API的工具类,二者功能相同。import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Da...原创 2019-01-29 20:45:01 · 179 阅读 · 0 评论 -
使用jdk8 time API的日期工具类
这是日期工具类的第二篇,使用新API来做的。现阶段Java8的新日期API,收到的支持并不太多,mybatis不支持对LocalDate,LocalDateTime的直接读写,需要再引入一个库,使用新的typeHandler才行,数据库内,似乎对LocaDate存储也有问题,使用不当可能引起日期不对的情况,具体了解的不多,所以现阶段这个库的普及情况还有待考证。import java.time.*...原创 2019-01-29 20:48:09 · 883 阅读 · 0 评论 -
logback框架使用误区 如何将所有包的ERROR级别日志集中打印到一个日志文件中
早就想写这个事情了,起因是自己想写一个东西,其中使用logback日志框架记录日志打算 将所有包的ERROR及以上级别日志打到一个文件中,各个包下的日志打到对应包的文件中。 起初写的xml配置类似于这样:<!-- 其中一个appender,其他appender与其相同 ,只有name、file和fileNamePattern不同--><appender name="ALL-ERROR" clas原创 2018-03-03 23:48:25 · 4526 阅读 · 0 评论 -
Spring 和 Quartz 实现定时任务
Java 定时的四种方式Quartz对于继承QuartzJobBean需要做需要实现定时任务的类继承orgspringframeworkschedulingquartzQuartzJobBean实现定时执行的方法xml里要么声明这个定时任务类要么使用注解扫描的方式声明xml里声明新的beanclass为orgspringframeworkschedulingquartzJobDetailBe原创 2017-10-19 10:02:08 · 3434 阅读 · 0 评论 -
两个JDBC连接数据库的工具类
两个JDBC连接数据库的工具类在以前我看过一些C#的东西,知道C#有一个DBHelper的工具类,各种返回DataTable,DataSet很方便,后来看Java,一直没看到有类似的东西,当然这其中有C#的Sql相关类可以脱离COnnection而存在,JDBC的Sql相关类必须保持Connection打开有关。后来发现JDBC的连接数据库的工具类只要完成简单的获得Connection,关闭各种Co原创 2016-10-18 15:49:39 · 1642 阅读 · 0 评论 -
使用Java 发送邮件
使用Java 发送邮件这一段代码是假期之前,同学需要编写一个网站注册验证时,我写的发送验证码的类,把耦合的比较紧的验证码生成、发送固定标题和内容的部分删掉,单独提出来的邮件发送类。东西比较简单,当时赶时间也是四处搜刮代码拼凑出来的,感觉还能再抽象提炼一些。注意: 代码中使用到了一个不在JDK中的jar包,mail.jar需要下载使用Java发邮件开启了邮箱服务器的SSL验证,这需要在QQ邮箱设原创 2016-09-28 13:36:47 · 541 阅读 · 0 评论 -
函数嵌套调用性能好还是函数分开写性能好?
函数嵌套调用性能好还是分开写性能好?下午突然想到一个问题: * 形式如下的两种方法,哪一种的效率更高一点? 第一种:A=fun1(args1[]);B=fun2(A,args2[]);C.fun3(B);第二种:C.fun3(fun2(fun1(args1[]),args2[]));也就是说,一段结果相同的代码,是将中间使用的函数嵌套起来写性能更好还是分开写性能更高呢? 这里假定变量不会再原创 2016-11-29 16:48:18 · 4263 阅读 · 0 评论 -
编译作业——LL(1)文法的语法分析器
又一次的编译上机作业,做了些修改和注释,放到博客上来注意: 以下代码的分析表是写死了的,所以仅仅只能针对文法:E->TE'(1) T->FT'(2) E'->+TE'|e (3)T'->*FT'|e (4)F->(E)|id (5)e代表空串代码可能还有漏洞,使用还请通读package SecondHW;import java.util.ArrayList;import jav原创 2016-11-17 14:40:26 · 2902 阅读 · 0 评论 -
编译作业——LR文法的语法分析器
依旧是编译的上机作业,第四次的了吧。 做一个LR的语法分析器。 文法是E->E+T | TT->T*F | FF->(E) | id然后如果用这个文法推LR(1)的状态,状态太多了,所以我换了一个,用E->E+E|E*E|(E)|id这个有二义性,左递归的文法推,只有10个状态,好手写分析表,以下是代码部分。import java.util.ArrayList;import java.ut原创 2016-11-23 12:39:09 · 3389 阅读 · 0 评论 -
[转载]C++中引用传递与指针传递区别(进一步整理)
转载自 http://xinklabi.iteye.com/blog/653643 这篇文章是在学习了编译原理参数传递后对c++和Java按引用传递的不同表现产生疑问,在网上搜索找到的博文,这里提出了按地址传递和按引用传递是不同的,按我的个人理解,Java的对象参数的传递,是按地址传递,而按地址传递,需要有一个传递到被调用函数的指向实际参数地址的指针,这个指针是指向一个实参地址的指针变量转载 2016-12-14 13:38:11 · 748 阅读 · 0 评论 -
交换排序小结
冒泡排序思想:就像冒泡排序的名字一样,冒泡。每一个比较中的较大的数,会向后交换一次,这样,每一轮比较下来,最大的数就会像气泡一样,飘到最后(或者,将数组立起来,最大的数向上冒泡),第一轮比较全部的数,将最大的数冒泡到最后,第二轮比较除最后的那个最大的数之外的元素,将次大的数冒泡到最后-1的位置,以此类推。关键点:两层循环,第二层循环的尽头需要注意,详情看下面代码代码:public void bu原创 2017-03-31 21:20:06 · 393 阅读 · 0 评论 -
选择排序小结
至此,排序算法总结告一段落,然数据结构与算法知识庞大,围绕其展开的范围更是无限广大。原创 2017-04-01 18:29:36 · 371 阅读 · 0 评论 -
Apache Commons IO入门教程
Apache Commons IO 示例1 Utility Classes2 文件监控器3 过滤器4 比较器5 输入6 输出译文,转载自Apache Commons IO入门教程,留作备忘Apache Commons IO是Apache基金会创建并维护的Java函数库。它提供了许多类使得开发者的常见任务变得简单,同时减少重复(boiler-plate)代码,这些代码可能遍布于每个独立的转载 2017-09-10 10:53:00 · 484 阅读 · 0 评论 -
查找一个字符串中每个单词的出现次数--Java
今天突然觉得博客不仅可以写读书笔记,还可以把平时写的代码也放上来,不敢说能有多优雅,不过很多都是学习中遇到的问题,应该其他人也需要吧。所以今天开始,写第一篇简单的Java代码的博文:如果在一个输入字符串中查找所有单词的出现次数,单词以不定个数的空格区分。先说思路,再上代码。思路: 读入字符串将字符串用“ ”分割成字符串数组对上一点中的字符串数组中每一个元素去掉首尾空格,如果得到的是空字符串则原创 2016-09-28 12:56:29 · 17517 阅读 · 0 评论