Java基础
文章平均质量分 92
Believe me, PHP is the best programing language in the world. so we use Java
Alphathur
码路漫漫修远兮,吾将原创而求索。
展开
-
Java判断字符串是否为IPV4,IPV6地址的多种方式
判断字符串是否为IP地址通常都是基于正则表达式实现的,无论是引入外部的依赖包亦或是自己写正则实现,基本都是基于正则表达式实现的判断。然而比较例外的是,jdk自身提供了`Inet4Address.getByName`方法也可以帮助我们实现ip地址的判断。本文将详细列举常见的判断字符串是否为IPV4,IPV6地址的方式,并分析其存在的局限性。原创 2021-03-17 23:11:02 · 8523 阅读 · 1 评论 -
Java判断字符串是否为数字的多种方式,你用对了吗
判断一个字符串是否为数字是Java开发中很常见的业务需求,实现这个判断有很多种方式,大体上分为异常处理,正则表达式,数字字符,NumberFormat工具类,外部工具类这四大类,不同类型下的实现方式其实略有不同,那么究竟选择哪种方式才是最好的呢?本文将一一列举出9中具体的方案,并通过丰富的测试用例来并对比这些方案的差异,相信看完本文,你将会有自己的思考。原创 2021-01-28 23:24:31 · 75464 阅读 · 5 评论 -
Java将对象写入Excel文件
本文通过poi依赖实现将java对象写入excel之中,核心理念是通过反射获取Java对象的getter方法和属性,通过getter方法获取要写入excel中的值,再通过属性上的自定义注解获取excel标题行,然后以文件流的方式写入excel。话不多说,直接上码。首先我们定义注解@ExcelTitle,用来初始化excel第一行作为标题行/** * excel标题头注解,当Java属性...原创 2019-09-07 18:28:21 · 18270 阅读 · 13 评论 -
Java8日期格式化
Java8之前的版本,格式化日期常使用SimpleDateFormat,但这个类并不是线程安全的,通常要用作局部变量或者使用ThreadLocal包装。或者使用额外的joda time 依赖来对日期进行操作。但是到了Java8,这类烦恼都没有了,全新的日期api可以快速实现日期格式化。1.日期格式化-日期类型的字符串转换成其他形式 /** * 不带时分秒的日期字符串转化 ...原创 2019-07-13 12:26:40 · 25923 阅读 · 0 评论 -
HashMap夺命连环问,你扛得住吗
HashMap是面试中最常被问到的问题,被问到的概率基本是99%,关于HashMap的知识点很多,这里做个总结,如果没有提及版本,默认为jdk1.8.HashMap的数据结构?底层是数组+单链表实现。数组的每个元素是个单链表,在jdk1.8中,当数组长度大于等于64且链表长度超过 8 时,链表转换为红黑树。为什么采用这种结构来存储元素呢?数组的特点:查询效率高,插入,删除效率低。链表的特点:查询效率低,插入删除效率高。在HashMap底层使用数组加(链表或红黑树)的结构完美的解决了数原创 2020-09-04 20:14:52 · 11308 阅读 · 1 评论 -
使用MockMvc来代替RestTemplate对Controller进行单元测试
对Controller进行单元测试可以通过RestTemplat发送一个http请求来实现。也可以通过MockMvc来实现,二者还是有很大区别的,参考Difference between MockMvc and RestTemplate in integration tests简单来说,二者的直接区别是:使用MockMvc,通常是设置一个完整的Web应用程序上下文,来模拟HTTP请求和响应...原创 2019-06-28 18:06:56 · 13280 阅读 · 0 评论 -
SpringBoot实现单元测试时回滚事务
SpringBoot跑个单元测试只需要在测试类加两个注解就行了。@RunWith(SpringRunner.class)@SpringBootTest然而这样的单元测试默认是提交事务的,一般的场景下都是要对事务进行回滚的。要支持回滚,只需要增加一个@Transactional注解即可。@RunWith(SpringRunner.class)@SpringBootTest@Tr...原创 2019-06-28 15:53:42 · 21602 阅读 · 7 评论 -
Java生成满足正则表达式的随机密码
生成随机密码,密码至少要包含 大写字母,小写字母,数字,特殊字符四者中的三种组合,并且不能包含中文,还要满足线程安全。代码如下:public class PasswordGenerator { private static final char[] CHARR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456...原创 2019-06-08 11:36:45 · 12118 阅读 · 0 评论 -
Java实现anagram算法
最近碰见一道面试题,是关于anagram算法的,问题很简单:给定两个字符串,每个字符包含中英文,空格,大小写等等,如果这两个字符串在忽略大小写和空格的情况下,如果相同字符出现的次数相同,则互为anagram。例如“我爱 中华 I love china” 和 "我 爱 中 华 I LOVE CHINA"互为anagram。关于本题目,至少有两个解决方案。第一个方案,将输入的字符串去掉所...原创 2019-04-05 00:52:16 · 11864 阅读 · 0 评论 -
了解intern(),了解字符串常量池
intern()是String一个api,平时不常用,但是面试可能会考,掌握intern可避免被面试官问到时大眼瞪小眼的尴尬局面。当一个String对象调用intern()方法时,会首先检查字符串常量池中是否存在equals相等的字符串,若存在直接返回常量池中该字符串对象,否则创建该字符串对象并放入字符串常量池。然而并不是所有创建的字符串都会进入常量池。下面直接贴代码,每行代码都通过备注的...原创 2018-11-05 17:00:53 · 10595 阅读 · 0 评论 -
了解join()和CountDownLatch的差异
一、join()join()是线程对象的成员方法,功能是等待调用join()的线程对象执行完毕,才执行其它的逻辑。假设我们有三个线程, 主线程,子线程B和C。在主线程中若调用了子线程的join方法,则必须等待子线程执行完毕,才会继续执行主线程的其它逻辑。如下是案例:public class JoinTest { public static void main(String []...原创 2018-07-29 22:49:20 · 11122 阅读 · 2 评论 -
非线程安全的ListHelper
Java并发编程实战这本书里提到了使用Collections.synchronizedList可以创建线程安全的容器,同时给了一个没有正确使用该容器的反例ListHelper,这个反例看起来实现了同步,然而由于锁不一致导致它并不是一个线程安全的类。代码如下:class ListHelper <E> { public List<E> list = Collect...原创 2018-07-29 22:33:17 · 11172 阅读 · 0 评论 -
初探RestTemplate--解决中文乱码问题
本文完全承接上一篇文章:初探RestTemplate--postForObject方法直接传递对象,如果你还没有看过,建议先阅读完再看下去。如果你没有兴趣也可以直接拉到本文末尾,查看我对中文乱码的解决方案。我们在TestController中添加一个新的方法用来接收JSON格式的字符串@RequestMapping(value = "/string", method = Reque...原创 2018-07-08 23:03:40 · 55871 阅读 · 26 评论 -
初探RestTemplate--postForObject方法直接传递对象
1.我们通过 http://start.spring.io/ 初始化一个简单的spring boot工程,取名 resttemplate, 由于只研究RestTemplate的特性,故仅添加web即可,如图所示,另外本项目额外添加了alibaba.fastjson这个jar包,你需要在pom.xml添加依赖<!--阿里 FastJson依赖--><dependency>...原创 2018-07-08 23:02:59 · 140974 阅读 · 26 评论 -
RestTemplate报错:no suitable HttpMessageConverter found for request type
某天试用RestTemplate调试,浏览器直接提示:This application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Dec 01 14:49:26 CST 2017There was an unexpected error (type=Internal Serv...原创 2017-12-12 21:50:47 · 70611 阅读 · 0 评论