![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
爱码僧
成长在于点点滴滴。
展开
-
redisTemplate的haskey返回false解决
没有配置相应的序列化规则,配置即可package com.falcon.design.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.原创 2021-12-08 22:12:06 · 3214 阅读 · 0 评论 -
布隆过滤器在redis防止缓存穿透的应用
一个微服务最优的情况就是只保存自己服务的数据,但这样会有缓存穿透的问题,解决方案有两种。缓存穿透:缓存中没有,数据库中也没有缓存击穿:缓存中没有,数据库中有一、通过保存默认值实现这个方案会导致将根本没用的数据保存到了redis缓存,造成了内存空间的极大浪费以及拖慢系统的整体性能。二、通过布隆过滤器实现基本思路就是服务第一次启动时将所有有用的数据的主键存入布隆过滤器,代码实现如下:package com.falcon.design.service;import com.f.原创 2021-11-26 00:36:02 · 356 阅读 · 0 评论 -
补充指定个数的特定字符,以达到一定的长度
talk is cheap, show you the code !/** * 在source前面填充指定个数的0,以达到tarLength的长度 * @param source * @param tarLen * @return */ public static String fillZero1(@NotNull String source, @NotNull Integer tarLen){ Objects.require原创 2021-06-26 23:28:11 · 167 阅读 · 0 评论 -
如何校验字符串类型的日期?
前后端不可避免的会有日期或者时间戳的交互传递,到底用什么类型进行传递日期好那就见仁见智了,个人还是感觉字符串用着方便,特别有了Java8开始支持的LocalDateTime、LocalDate、以及Spring的ConstraintValidator接口,字符串用起来更是得心应手。1、首先创建一个注解类package com.falcon.design.aop.annotation;import javax.validation.Constraint;import javax.validat原创 2020-11-05 22:38:01 · 2017 阅读 · 0 评论 -
当消费者消费的速度无法满足接收MQ消息的速度时怎么办?
在计算机中,当消费者消费的速度无法满足接收消息的速度时,通常会通过缓存来解决这个问题,L1,L2,L3等,其根本原因在于磁盘写入的速度远远慢于内存操作的速度,虽然固态可以在一定程度上缓解这个问题,但是问题依然是存在的。在Java服务端也会存在这样的问题,通常解决思路也是一样的,废话不说 ,提码来见;package com.falcon.design.service;import com.falcon.design.attendance.domain.Message;import com.falco原创 2020-09-17 13:01:34 · 986 阅读 · 0 评论 -
Java枚举的高级用法之多键值的映射使用
枚举Enum单映射使用做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如枚举单映射使用但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可能有些人会说那还是用HashMap呗,对于需求的满足倒是可以,但是不够优雅直观,可读性不高!下面让我们一睹枚举的高级用法之多键值的映射风采。枚举Enum多键值映射使用譬如这个四合一智能门锁场景,可能其他微服务或第三方的键值映射是上面单映射那样的,但是由于历史原因或者是自身强迫症使能,总之就是对原创 2020-09-15 23:36:57 · 5412 阅读 · 0 评论 -
常量的public static final 可以去掉吗?
既然有有了这个问题,那么答案当然是肯定的,虽然idea可以通过psf快速的输出public static final,但是还是看着有点又臭又长。 那怎么可以去掉呢?那就是interface, 类似这样:很多人可能就会问了如果把Constant类都改为interface的话,那Constant类中的一些代码怎么办,因为interface不能有方法的实现,这个问题各位看官了,欢迎大家在评论区留言讨论哦!...原创 2020-07-30 23:00:05 · 423 阅读 · 0 评论 -
一行代码获取星期几
想必这种需求有时候由于时间的关系还是惰性的关系,一遇到就会百度了事,那就很可能出现了下面的代码 public static String getWeekOfDate(java.util.Date date) { String[] weekDays = {"7", "1", "2", "3", "4", "5", "6"}; Calendar cal = Calendar.getInstance(); cal.setTime(date);原创 2020-07-18 20:37:53 · 369 阅读 · 0 评论 -
如何给List集合的每个元素添加index序号
有这样一个需求,在excel导出报表的时候,产品经理想在首列加个序号,可能大家就会问了,直接取数据库的id不就可以吗?但是这样会有一个问题,很多时候我们从数据库捞数据出来还会对数据分组排序等一系列的业务操作,这样一来,这个id还会是我们想要的id吗?显然不是的,还有些id可能是分布式id,其长度就有10位之长,是产品经理想要的结果吗 ?显然不是。这个时候Java8的stream就闪亮登场了...原创 2020-05-07 21:54:20 · 12424 阅读 · 6 评论 -
JAVA中的protected的访问权限只有在本类同包类和子类吗?
官方介绍可能大家都知道,JAVA中protected权限是本类、同包类、子类。但是如果子类不在和父类不在同一个包中,那将会发生什么?子类在其他包中访问我们将父类和子类放在两个包中,如下所示:父类:package com.falcon.auth.father;/** * @Author falcon * @Date 2020/3/19 19:23 **/publ...原创 2020-03-19 20:02:59 · 5002 阅读 · 3 评论 -
精妙绝伦的设计模式:策略模式+模板模式+工厂模式
还是以经典的会员价格策略为依托场景;一、首先加入maven依赖,此依赖用于扫描并获取特定含有特定注解的类二、定义个一个自定义注解,用来定义并判断价格区间三、写一个策略接口类,用于定义获取折后价格的抽象方法四、写一个抽象类,用来实现策略接口中的方法,并且将公共的前置判断逻辑放在此抽象类中(此为模板设计模式),并定义好抽象方法calcPrice()让各自的...原创 2019-12-28 20:34:44 · 1375 阅读 · 0 评论 -
数据同步之解决方案
关于数据同步的需求,想必是开发人员都可能遇到!下面就聊聊关于数据同步的解决方案:一、使用中间表:数据生产者将数据放在一个中间库,数据消费方定时的去这个中间库取数据,用来消费这些数据,但是这中方案并不适合微服务部署的项目!二、数据生产者提供相应的视图,数据消费者直接连对方的库,从对方的库中取数据;新增可以通过唯一主键来判断,更新可以通过时间戳去判断,即根据某条数据的主键查询,发现...原创 2019-09-28 17:32:10 · 3182 阅读 · 0 评论 -
数据库连接工具 DBUtil.java
方式一:使用相对路径import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.Propertiespublic final class DBUtil{ //数据库驱动 private static String driver =""; ...原创 2019-09-02 20:37:34 · 1383 阅读 · 1 评论 -
OOM的几种情况
OOM的几种情况 1堆内存溢出 2Java异常 OOM 1、堆内存溢出【情况一】: java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: < jvm-arg>-Xms306...转载 2019-05-17 00:12:09 · 2168 阅读 · 0 评论 -
使用ThreadLocal需要注意什么?
ThreadLocal 变量解决了多线程环境下单个线程中变量的共享问题,使用名为ThreadLocalMap的哈希表进行维护(key为ThreadLocal变量名,value为ThreadLocal变量的值);使用时需要注意以下几点:线程之间的threadLocal变量是互不影响的, 使用private final static进行修饰,防止多实例时内存的泄露问题 线程池环境下使用后将...转载 2019-05-11 11:07:43 · 3446 阅读 · 0 评论 -
class文件反编译之后参数列表中出现类名点1 的情况解决
对于Java中class文件的反编译,单个文件的反编译遇到的比较多,批量反编译的比较少,但是批量反编译出错的情况可能会比较多,这里分享下我遇到的一种情况以及解决办法。问题现象:参数列表里出现 (类名.1 ×)解决办法:直接替换为类名就可以例如: 出现这样的情况直接将(类名.1)替换为类名就可以了。希望可以帮到大家!...原创 2018-09-04 19:54:44 · 1514 阅读 · 0 评论 -
org.xml.sax.SAXParseException: The reference to entity "membertype" must end with the ';'
weblogic启动报错:对实体“membertype”的引用必须以“;”分隔符结尾。org.xml.sax.SAXParseException: The reference to entity "membertype" must end with the ';' delimiter. at com.sun.org.apache.xerces.internal.util.ErrorHa...原创 2018-09-21 09:51:52 · 1395 阅读 · 0 评论 -
weblogic启动失败The encoding jsp-descriptor param has been deprecated. Consider declaring the encoding..
启动时目测最有价值的一行日志:product spec-version:null]: The encoding jsp-descriptor param has been deprecated. Consider declaring the encoding in the jsp-config element (web.xml) or as a page directive (pageEnco...原创 2018-09-29 23:31:11 · 2318 阅读 · 0 评论 -
将含有任意标点符号的字符串以任何标点分割并转为List集合
程序员在开发中都离不开对字符串的操作,相信大家的StringUtils工具类里写了不少以某种字符分割字符串方法。诸如: 那么有没有不用指定字符去分割的方法呢?下面来分析分析:方式一:通过枚举标点符号;但是这种方案过于死板不够灵活方式二:通过正则;这种方法还行,但是不够骚上面两种方案都被我否定之后,唯有ASCII码值被我相中了!talk is cheap show...原创 2019-01-11 23:45:04 · 3551 阅读 · 0 评论 -
Java统计List集合中每个元素出现的次数
/** * java统计List集合中每个元素出现的次数 * 例如frequencyOfListElements(["111","111","222"]) * -> * 则返回Map {"111"=2,"222"=1} * @param items * @return Map<String,Integer> * @auth...原创 2019-01-21 17:30:00 · 33344 阅读 · 10 评论 -
多个like高效率查询添加工具
/** * 将SQL语句中的多个like进行拼接,这里使用效率最高的instr()函数进行处理;注意:and 关键字需要在调用此方法之前进行添加 * 例如:convertToMultiLike("a.c_custname" ,"hund,sun") * -》 * 返回: "(instr(a.c_custname,upper('hund'))>...原创 2019-02-15 09:49:41 · 689 阅读 · 0 评论 -
全角转半角方法
// 全角转半角的 转换函数 public static final String full2HalfChange(String fullStr) throws UnsupportedEncodingException { if (isNULLString(fullStr)) { return fullStr; } fullStr = stringToUnicode(...原创 2019-02-15 09:52:11 · 1127 阅读 · 0 评论 -
线程一共有几种状态?
一、线程的6中状态:1、New(初始)2、Runnable3、Blocked4、Waiting5、Time_waiting6、Terminated二、线程各种状态的切换三、如何终止一个线程?1:stop()->不建议使用,相当于kill -92:flag(设置一个volatile成员变量,通过更改成员变量的变化来终止线程)代码片段如下:...原创 2019-02-19 14:43:44 · 7715 阅读 · 1 评论 -
synchronized用法总结
synchronized :java内置关键字,被保存在对象头中,而一个对象是由对象头、实例数据、对其填充组成。很多时候大家伙都惯性地将synchronized称为一个重量级锁,理由是synchronized性能开销较重;这在JDK1.6之间这样说是没毛病的,但是在JDK1.6及以后,还这样认为那就欠妥了,因为在JDK1.6及以后JVM层面对它作了优化,可以由轻到重分为:偏向锁->轻量级...原创 2019-04-21 18:51:40 · 355 阅读 · 0 评论 -
面试必问之synchronized与Lock的区别及底层实现
1、synchronized 是Java内置的关键字,使用后会自动释放锁,Lock是java.util.concurrent.Locks 包下的一个接口,必须要手动释放。特别是在发生异常时,需要在 finally 块中进行手动释放,否则会发生死锁行为synchronized 代码清单Lock 代码清单2、Lock可响应中断,而synchronized 不能响应中断,并且Lo...原创 2019-04-14 11:17:26 · 12632 阅读 · 5 评论 -
优雅的统计英文文章中单词出现的次数
思路:1、使用流将文件读到内存2、转化为字符数组,将标点符号通过ASCII码分割并添加到List集合3、使用HashMap对List集合进行元素出现频率的统计 public static void main(String[] args) { //String sourceStr = "I am a A programer,programer !"; ...原创 2019-05-15 00:32:27 · 894 阅读 · 0 评论 -
类中的方法只有静态与非静态方法吗?
众所周知,一个类中除了可定义类的属性之外,还可以定义方法,而方法既可以定义为静态方法(类方法),又可定义为非静态方法(实例方法);除此之外,最容易让人忽略的就是其他方法了,也就是类的初始化代码块。其语法是只用“{}”扩起来的方法,用于初始化类的实例信息!有面试题如下:运行结果如下:可以看得出,只有静态方法伴随了类的加载(被加载到方法区),而类中其他方法的执行则是伴随...原创 2019-05-11 11:06:15 · 786 阅读 · 0 评论 -
HashMap的最大容量为什么是2的30次方?
今天看HashMap的底层实现,发现HashMap的最大容量规定为:// 最大容量(必须是2的幂且小于2的30次方,传入容量过大将被这个值替换)static final int MAXIMUM_CAPACITY = 1 << 30;当看到 1<<30 时,对“<<” 有点模糊,当了解“<<”的用法之后,又有一个问题;int类型不是4个字节共32位吗,...原创 2018-04-28 21:43:24 · 15942 阅读 · 9 评论