JAVA
hui008
这个作者很懒,什么都没留下…
展开
-
ThreadLocal原理源码详解
多看几遍,定能理解通透!原文链接:https://www.jianshu.com/p/3c5d7f09dfbd转载 2020-12-22 18:31:45 · 127 阅读 · 2 评论 -
freemaker生成word模板的各种坑,包含word打不开、批量添加图片、图片变形等问题总结
最近在使用freemaker做一个word模板,里面包含大量表格、截图、超链接等数据、历时一周多,遇到很多坑,现在想想都后怕,现在简单总结一下,希望给以后的小伙伴提供帮助,少走弯路!坑一:word打不开可能原因:1、往xml文件中添加数据占位时,不细心导致文件中出现多余的{、}、;、#等字符,导致xml校验错误,会导致生成的word打不开。2、word中有超链接,链接中包含多个参数时,会用&进行连接,然而在xml中&属于特殊字符,如若不处理,导致xml校验错误,会导致生成的w原创 2020-06-16 16:49:48 · 4788 阅读 · 5 评论 -
JavaMail附件名字过长导致的乱码问题
问题背景:公司有个业务场景是审核客户机构通过后,给客户发送一封邮件,并将机构相关材料以附件形式一块发送,有些附件名正常,有些就乱了,如下图:后来发现是附近名称过长导致的!问题原因:java mail中设置附件名称会采用 base64格式进行编码,如果附件名称过长会被进行切割,将剩下字符抹去,所以导致不知道这是什么格式的文件。注:虽然将文件格式被改变了,但是若强制转换成原格式(右键->另存为->xxx.pdf) 仍然可以进行打开,文件内容也并非改变(这是测试后的结果)解转载 2020-05-08 19:44:31 · 731 阅读 · 0 评论 -
Java Web利用POI导出Excel简单例子
采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "...原创 2018-09-18 20:04:34 · 662 阅读 · 0 评论 -
那些年让你迷惑的阻塞、非阻塞、异步、同步
在IT圈混饭吃,不管你用什么编程语言、从事前端还是后端,阻塞、非阻塞、异步、同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi)?但是,掌握这些概念又不是非常容易,尤其对非科班出身的,更加困难。本文试图给出一个清晰简明但不失深刻的介绍,希望对大家有所帮助。1、从I/O说起这些概念之所以容易令人迷惑,在于很多人对I/O就没有清晰准确的理解,后面的理解自然不可能...转载 2018-10-27 16:42:33 · 182 阅读 · 0 评论 -
java删除文件夹中的所有文件及文件夹
删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉【close()】,否则文件无法删除)/** * 删除文件夹 * @param folderPath */ public static void delFolder(String folderPath) { try { delAllFile(folderPath); /...原创 2018-12-24 17:26:31 · 888 阅读 · 0 评论 -
java通用换行符
在java开发中Windows下换行符为: \r\nLinux下换行符为:\nMac下换行符为:\r可以用通用代码System.getProperty("line.separator")替换String separator = System.getProperty("line.separator");System.out.println("第一行"+separator+"第...原创 2019-01-08 11:31:02 · 3109 阅读 · 0 评论 -
url地址传参中文乱码问题
在传参前转码,接收参数后再转码回来。这种方式有两种:第一种:传参前:使用java.net.URLEncoder.encode("xxxx",“utf-8"),将中文转为16进制字符。接收参数后:使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。这种方式需要注意的是,在使用encode转码后,会出现特殊字符,这时候,就...原创 2019-01-08 11:46:11 · 978 阅读 · 0 评论 -
Java获取当月的每一天
/** * 获取当月所有天 * @return */ public static List<String> getDayListOfMonth() { List<String> list = new ArrayList<String>(); Calendar aCalendar = Cale...原创 2019-03-20 15:09:29 · 4851 阅读 · 0 评论 -
对List里的对象元素进行排序
方法一:实例化一个比较器public class Student { private int studentId; private String studentName; private int age; public Student(int studentId , String studentName, int age){ this.stud...原创 2018-09-18 19:57:54 · 358 阅读 · 0 评论 -
Java中将File转化为MultipartFile的方法
话不多说直接上代码,简单明了import java.io.File;import java.io.FileInputStream;import org.springframework.web.multipart.MultipartFile;import org.springframework.mock.web.MockMultipartFile;import org.apache.h...原创 2018-08-15 14:17:28 · 76330 阅读 · 21 评论 -
获取Map中最大(小)的key
将Map中的key存放至set集合中,进行排序,排序后的set中第一个值即为最小,最后一个即为最大/** * 获取map中最大的key * @param map * @return */public static Integer getMaxKey(Map<Integer, List<User>> map) { if (map == null){...原创 2018-08-15 14:04:43 · 11405 阅读 · 1 评论 -
@SuppressWarnings注解
@SuppressWarnings注解 简介:java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。使用:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(va...转载 2018-04-10 18:12:44 · 140 阅读 · 0 评论 -
Java中double和float精度丢失问题及解决方法
在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2。但是问题总是如此吗?下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); }控制台输出2001299.4300000002我们...原创 2018-05-03 14:36:50 · 458 阅读 · 0 评论 -
JAVA8 十大新特性详解
本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API“Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单代码来描述新特...转载 2018-04-28 16:38:19 · 114 阅读 · 0 评论 -
registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requaired
当更新jdk后,运行java命令可能会提示类似这样registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requaired的问题。这里对这个问题做个简单分析,并给出几种解决方案,希望能帮助到大家!导致这个问题的原因很明显文件版本不匹配导致的,当在cmd下运行java命令时,系统首先会去 a.%systemroot%S...原创 2018-06-15 16:59:34 · 339 阅读 · 0 评论 -
java8中map的新方法--replace
译者:kingvikerMap在Java8中新增了两个replace的方法1.replace(k,v) 在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值) 在指定的键不存在时,方法会return回来一个null javadoc的注释解释了该默认值方法的实现的等价java代码: [java] view plain cop...翻译 2018-06-26 10:25:45 · 4147 阅读 · 0 评论 -
map转换成JSON的3种方法
http://www.json.cn/JSON格式校验1 json-lib<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version>转载 2018-07-24 10:59:14 · 52736 阅读 · 4 评论 -
Java中将List中的实体类按照某个字段进行分组并存放至Map中
1、JDK1.8之前:假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中。(例子不是很恰当,但很能说明问题) public static void main(String[] args) { List<User> list = new ArrayList<>(); list.add(new User(1, 1...原创 2018-08-15 13:39:47 · 21506 阅读 · 12 评论 -
Map按照key进行排序
声明比较器:class MapKeyComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; }}排序方法:public static Map<Integer, List<U...原创 2018-08-15 13:58:32 · 16310 阅读 · 0 评论 -
@Slf4j注解实现日志输出
自己写日志的时候,肯定需要:private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);1每次写新的类,就需要重新写logger 有简单的方式,就是使用@Slf4j注解首先是在pom中引入:<!--可以引入日志 @Slf4j注解--><dependency> ...转载 2018-04-08 17:33:43 · 7499 阅读 · 2 评论