Java获取指定字符串在另一个字符串中的出现次数

百度发现很多答案都是错误的,全是相互抄袭,也不经过验证就放出来,这里提供正确的搜索算法。 方案一,使用KMP算法,KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核...

2019-08-19 21:07:45

阅读数 3

评论数 0

线上k8s环境swagger2调用接口失败

最近后端项目集成了swagger2,浏览器正常打开了swagger-ui.html,但是调用接口时却报404错误,仔细一看是接口调用地址和浏览器访问地址并不相同。 分析了下接口调用地址的host,它竟然是k8s环境中的后端应用的service。 由于当前项目通过k8s部署,前端和后端app...

2019-08-16 18:46:24

阅读数 8

评论数 0

swagger-ui.html页面无法打开解决方案

最近项目集成swagger2,结果本地swagger-ui.html可以打开,但是线上环境却无法打开。倒腾了一番终于解决问题,总结了以下几个解决方案: 1.@EnableWebMvc注解必须去掉! 2.请实现WebMvcConfigurer,并添加如下代码 @Override public...

2019-08-16 18:13:45

阅读数 50

评论数 0

Java8日期格式化

Java8之前的版本,格式化日期常使用SimpleDateFormat,但这个类并不是线程安全的,通常要用作局部变量或者使用ThreadLocal包装。或者使用额外的joda time 依赖来对日期进行操作。 但是到了Java8,这类烦恼都没有了,全新的日期api可以快速实现日期格式化。 1....

2019-07-13 12:26:40

阅读数 24

评论数 0

使用MockMvc来代替RestTemplate对Controller进行单元测试

对Controller进行单元测试可以通过RestTemplat发送一个http请求来实现。也可以通过MockMvc来实现,二者还是有很大区别的,参考Difference between MockMvc and RestTemplate in integration tests 简单来说,二者的...

2019-06-28 18:06:56

阅读数 114

评论数 0

SpringBoot实现单元测试时回滚事务

SpringBoot跑个单元测试只需要在测试类加两个注解就行了。 @RunWith(SpringRunner.class) @SpringBootTest 然而这样的单元测试默认是提交事务的,一般的场景下都是要对事务进行回滚的。要支持回滚,只需要增加一个@Transactional注解即可。...

2019-06-28 15:53:42

阅读数 176

评论数 0

Java生成满足正则表达式的随机密码

生成随机密码,密码至少要包含 大写字母,小写字母,数字,特殊字符四者中的三种组合,并且不能包含中文,还要满足线程安全。 代码如下: public class PasswordGenerator { private static final char[] CHARR = "ab...

2019-06-08 11:36:45

阅读数 50

评论数 0

ElasticSearch 2.4.X实现中文拼音排序

前言 最近接到一个需求,要求实现搜索框的搜索结果可以按照中文排序,本人灵机一动,那不很简单吗,直接按照es自带的sort功能处理下不就行了吗?两分钟的代码量,半天的喝茶时间,白赚半天的故事点,嘿嘿。 然而问题才刚刚开始,多次测试结果表明,当文本以中文开头,排序结果总是不正确。翻阅资料才知道这么...

2019-06-08 01:01:05

阅读数 110

评论数 0

Java实现anagram算法

最近碰见一道面试题,是关于anagram算法的,问题很简单:给定两个字符串,每个字符包含中英文,空格,大小写等等,如果这两个字符串在忽略大小写和空格的情况下,如果相同字符出现的次数相同,则互为anagram。 例如“我爱 中华 I love china” 和 "我 爱 中 华 I LO...

2019-04-05 00:52:16

阅读数 43

评论数 0

术语Override,Overload,Hide,Shadow,Obscure的解释

Override,即重写,Java最基础的编程技巧之一。仅针对实例方法,并且能够被子类所访问, 且子类该方法的访问权限至少大于父类。遵循运行期绑定原则。 Overload,即重载,Java最基础的编程技巧之一。要求方法名相同,签名不同(参数类型,参数个数,返回类型等)。遵循编译期绑定原则。 H...

2018-11-08 16:36:26

阅读数 58

评论数 0

了解intern(),了解字符串常量池

intern()是String一个api,平时不常用,但是面试可能会考,掌握intern可避免被面试官问到时大眼瞪小眼的尴尬局面。 当一个String对象调用intern()方法时,会首先检查字符串常量池中是否存在equals相等的字符串,若存在直接返回常量池中该字符串对象,否则创建该字符串对象...

2018-11-05 17:00:53

阅读数 55

评论数 0

Java模拟ReentrantLock实现自己的显示锁BooleanLock

一、前言 Java通过synchronized关键字来为我们提供线程安全的保证,大多数情况下使用synchronized是没有问题的,然而synchronized有自身的缺陷。例如:当其它线程持有锁时,当前请求获取锁的线程必须等待。等待的时长是无法控制的,而且等待过程中无法响应中断。 正是为了...

2018-10-23 13:20:22

阅读数 117

评论数 0

execute和submit的区别与联系

execute和submit都属于线程池的方法,execute只能提交Runnable类型的任务,而submit既能提交Runnable类型任务也能提交Callable类型任务。 execute会直接抛出任务执行时的异常,submit会吃掉异常,可通过Future的get方法将任务执行时的异常重...

2018-08-21 00:23:15

阅读数 1225

评论数 0

Java等待线程池终止

1、轮询isTerminated: while (!service.isTerminated()) { TimeUnit.SECONDS.sleep(1); } 2、轮询awaitTermination: while...

2018-08-21 00:22:42

阅读数 483

评论数 0

Runnable和Callable的区别和联系

Java多线程有两个重要的接口,Runnable和Callable,分别提供一个run方法和call方法,二者是有较大差异的。 1)Runnable提供run方法,无法通过throws抛出异常,所有CheckedException必须在run方法内部处理。Callable提供call方法,直接抛...

2018-08-20 22:37:30

阅读数 2723

评论数 3

Java正确地终止线程

首先要明确的是Java没有提供任何机制来安全的终止线程。 Java虽然提供了stop方法来终止线程,但是这种方式简单粗暴,很可能造成数据不一致的情况,因此stop方法已经弃用了。 目前较为安全地终止线程方式有两种: 1)使用标志位,让线程run方法在合适的时候结束执行,从而终止线程。 2)...

2018-08-18 23:16:05

阅读数 64

评论数 0

了解循环屏障CyclicBarrier

CyclicBarrier是常用的同步辅助工具类,它的作用是让一组线程达到屏障点时被阻塞,直到指定数量的线程都达到屏障点,才取消阻塞,此时被阻塞的线程才能继续执行。循环屏障可以重复使用。 SyclicBarrier构造方法有两个CyclicBarrier(int parties)和CyclicB...

2018-08-08 22:49:14

阅读数 86

评论数 0

了解信号量Semaphore和线程池的差异

一、首先要明白Semaphore和线程池各自是干什么? 信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,通过构造器指定许可的数量,每次线程执行操作时先通过acquire方法获得许可,执行完毕再通过release方法释放许可。如果无可用许可,那么ac...

2018-08-08 00:51:36

阅读数 1848

评论数 3

阿里云CentOs7部署Tomcat运行shutdown.sh报错

大概提示SEVERE: Could not contact localhost:8005. Tomcat may not be running.这个错误消息。捣鼓一番,发现是tomcat根本就没有启动成功导致的。 1.验证tomcat是否启动成功: 远程连接你的服务器,使用xrdp或FTP工具...

2018-08-03 17:41:09

阅读数 1020

评论数 0

了解join()和CountDownLatch的差异

一、join() join()是线程对象的成员方法,功能是等待调用join()的线程对象执行完毕,才执行其它的逻辑。 假设我们有三个线程, 主线程,子线程B和C。在主线程中若调用了子线程的join方法,则必须等待子线程执行完毕,才会继续执行主线程的其它逻辑。如下是案例: public cla...

2018-07-29 22:49:20

阅读数 146

评论数 0

提示
确定要删除当前文章?
取消 删除