Java
文章平均质量分 64
Java一级目录
月犹依依
RPG、Flow、Loop & Zoom! Have fun every day~
一天一天成长为架构师~
展开
-
Java8提取两个String的公共字符集
没找到轮子,简单写一下// 方法1:private List<String> getDuplicateCharacters(String checkWord, String key) { List<String> characters = new ArrayList<>(); Arrays.stream(key.split("")).forEach(character -> { if (checkWord.原创 2021-11-11 15:58:50 · 796 阅读 · 0 评论 -
新SpringBoot项目swagger启动
文章目录参考maven的部分内容不同package引用pom写法某个class文件属于哪个包SpringBoot工程启动启动类文件webConfig配置swagger配置参考新代码仓发布、新jar包发布以及一些maven的基础内容maven的部分内容不同package引用每个package都有一个pom,不同的包之间通过pom引用pom写法各种包引入,参见参考文章其中几个比较重要的引入说明根pom <swagger-version>2.9.2</swagger-ver原创 2021-10-26 18:51:48 · 2678 阅读 · 1 评论 -
ArrayList多线程下不安全性解释以及多线程下安全使用
文章目录不安全的原因与几种解决方案原因解决方案ArrayList不安全的实例线程安全版本的原理不安全的原因与几种解决方案多线程场景下如何使用 ArrayList原因ArrayList 的 add 操作源码如下:/** * Appends the specified element to the end of this list. * * @param e element to be appended to this list * @return <tt原创 2021-10-11 10:36:53 · 787 阅读 · 0 评论 -
Java8 函数式去重过滤规则
文章目录需求参考实现需求根据从另一个微服务取到的用户自定义过滤规则,完成实体的去重,并返回给调用方进行后续更新操作规则定义非常灵活:不同实体类型有不同的过滤规则,且过滤规则的过滤字段数目不定、指定字段名称不定参考https://blog.csdn.net/Draymond_feng/article/details/108304165list<Bean> java8根据某几个属性去重实现 /** * 根据传入的属性列表返回去重字段的Function * * Fu原创 2021-10-09 14:23:00 · 761 阅读 · 0 评论 -
Java8 Stream distinct 去重
文章目录参考总结参考Stream distinct 去重总结1,distinct去重原理:类实现hashCode()和equals()方法2,filter根据属性过滤去重:支持单属性与多重属性去重。不足:多重属性去重必须提前已知属性个数。核心代码:// 去重predict方法public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor){原创 2021-10-09 09:59:14 · 6411 阅读 · 0 评论 -
HashMap:保持key值不变
key的hash发生变化造成的影响HashMap 在存储元素时是把 key 的 hashCode 再做了一次hash。得到的hash将最终作为元素存储位置的依据。如果采用一个自定义的类作为key,并且该key值在map.put(k, v)之后发生了字段变化(比如,k.set(…)),就会导致key.hashCode的值出现变化,当Map尝试去获得这个 key 的存储位置时就不能得到正确的值,导致最终找不到目标元素。当把对象放到 HashMap 后,不要去修改 key 的属性,除非你重写了该实体类的 ha原创 2021-09-02 20:37:11 · 389 阅读 · 0 评论 -
定时任务一种实现架构 & 调试方法
服务启动类@Slf4j@EnableCaching@EnableAsync@SpringBootApplication(scanBasePackages = {"com.a.b"})public class TaskApplication implements CommandLineRunner { // Spring的应用上下文 @Resource private ConfigurableApplicationContext context; @Resource原创 2021-09-02 19:42:33 · 663 阅读 · 0 评论 -
Thrift IDL基本语法
文章目录thrift原理IDL基本类型object类型struct 结构体Container (容器)enum (枚举)常量类型ExceptionService (服务定义类型)Namespace (名字空间)Comment (注释)thrift原理https://www.jianshu.com/p/f12a442d510cIDLThrift 采用IDL(Interface Definition Language)来定义通用的服务接口,然后通过Thrift提供的编译器,可以将服务接口编译成不同语言编原创 2021-08-26 09:47:19 · 815 阅读 · 0 评论 -
IDE Arthas热部署与测试环境代码debug
IDE Arthas测试环境代码debug参考2种热部署方法定点debug安装并配置IDE Arthas直接debug示例参考主要步骤:https://github.com/alibaba/arthas/issues/1823IDE插件配置官方文档:https://www.yuque.com/arthas-idea-plugin/help/ugrc8n2种热部署方法方法一:IDE生成class文件后,使用Arthas的redefine命令redefine /tmp/com/example/dem原创 2021-08-11 14:38:18 · 783 阅读 · 0 评论 -
Java8 StringJoiner,字符串连接器
参考https://www.jianshu.com/p/538df9b1b6f9实例StringJoiner sj = new StringJoiner(","); sj.add("aaa"); sj.add("bbb"); sj.add("ccc"); String result = sj.toString(); //aaa,bbb,cccStringJoiner sj = new StringJoiner("/", "prefix原创 2021-08-09 12:07:01 · 120 阅读 · 0 评论 -
Lombok常用注解
Lombok常用注解参考简介入参检测:@NonNull更简洁的数据类@Getter 和 @Setter@AllArgsConstructor@ToString@EqualsAndHashCode@Data使用 @Buidler 创建对象日志参考https://blog.csdn.net/qiushisoftware/article/details/108075920简介Lombok提供了一系列注解用以在后台生成模板代码,将其从你的类中删除,从而有助于保持你的代码整洁。较少的模板意味着更简洁的代码,更原创 2021-08-04 20:52:58 · 1952 阅读 · 0 评论 -
Lombok注解-@SneakyThrows
Lombok注解-@SneakyThrows背景样例背景java中2类异常:1.Checked Exception:受检异常。2.运行时异常:RuntimeException类。前者会强制要求抛出它的方法声明throws,调用者必须显示处理这个异常。设计的目的是为了提醒开发者处理一些场景中必然可能存在的异常情况。比如网络异常造成IOException。然而大多数程序无法处理受检异常,尤其是模板方法中。因此常见处理手段就是外面包一层RuntimeException,接着往上丢。这种解决思想尤其在S转载 2021-08-04 17:03:33 · 441 阅读 · 0 评论 -
线上问题:JVM Fast Throw导致异常被吞
参考https://machen.blog.csdn.net/article/details/118652468?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-原创 2021-07-31 16:32:11 · 440 阅读 · 0 评论 -
Java以及其他笔记零散收录
说明:收录那些零散记录在笔记中,但是篇幅又不长的内容。Java篇基础语法可变入参写法-》效果:继承基类private属性https://www.cnblogs.com/ztt0918/p/8043757.htmlstatic关键字、静态代码块、final关键字static关键字总结:https://blog.csdn.net/kuangay/article/details/81485324静态代码块:https://blog.csdn.net/qq_35868412/artic原创 2021-03-27 15:30:52 · 1832 阅读 · 0 评论 -
@Mapper,mapstruct与自定义注解:实体间字段映射的优雅写法
实体间字段映射的优雅写法背景自定义注解与切面自定义注解工具类方法实现使用lombok提供的mapping注解背景实体之间进行covert操作时,如果使用函数将会出现大量的set、get方法,代码很丑陋。查阅到两种优化方案。自定义注解与切面参考:https://cloud.tencent.com/developer/article/1771768自定义注解import java.lang.annotation.*;@Target({ElementType.FIELD,ElementType.原创 2021-06-21 21:46:10 · 4075 阅读 · 0 评论 -
volatile修饰数组或者引用对象的问题
volatile修饰数组或者引用对象的问题对项目使用sonarLint扫描的时候,得到警告“Non-primitive fields should not be “volatile””,意思就是非基本字段不应该用volatile修饰。其原因是volatile修饰对象或数组时,只能保证他们的引用地址的可见性。实例测试:http://1024.notacat.cn/2020/05/性能优化-volatile修饰数组和对象/对数组元素分析其汇编代码:对数组分析其汇编代码:...原创 2021-06-21 21:33:59 · 2071 阅读 · 1 评论 -
Java基础知识
Java基础知识原始数据类型数值比较基本类型和不可变类型BigInteger和BigDecimaljava中的大小端32位和64位字符串处理可变参数Java安全类库/安全管理器SecurityManager启动安全管理器方式流程控制语句break/continue label用法switch支持的变量类型类、接口、对象Java的单继承和多继承接口默认属性类和成员可见性/作用域函数重载overload与覆盖override变量与函数的运行时绑定规律变量初始化Default函数(默认方法)函数式接口==,equ原创 2021-04-08 14:26:29 · 1403 阅读 · 0 评论 -
Java8 ConcurrentHashMap详解(待补充图示)
Java8 ConcurrentHashMap详解为什么要用ConcurrentHashMap?ConcurrentHashMap的结构HashEntry对象的不变性结构性修改操作:put、remove、clearSegment类ConcurrentHashMap类ConcurrentHashMap的操作put操作get操作size操作remove操作ConcurrentHashMap实现高并发的总结读操作的高效率比HashTable和HashMap拥有更高并发性ConcurrentHashMap的高并发性原创 2021-04-08 10:12:33 · 716 阅读 · 0 评论 -
异步回调一种实现:completable + function
completable 核心:CompletableFuture.supplyAsync(() -> { String ec = ""; try { ec = executeCommand(command, envp, timeout); } catch (Exception e) { logger.error("Asyn handle happen error:原创 2021-03-29 20:26:51 · 86 阅读 · 0 评论 -
如何优化锁
如何优化锁并发性能问题的根源锁优化思路并发性能问题的根源线程切换的系统开销操作系统保存和恢复上下文调度器进行线程调度处理器高速缓存重新加载可能导致整个高速缓存区被冲刷,从而带来时间开销锁优化思路多线程对锁资源的竞争会引起上下文切换,锁竞争导致的线程阻塞越多,上下文切换就越频繁,系统的性能开销就越大• 在多线程编程中,锁本身不是性能开销的根源,锁竞争才是性能开销的根源6. 锁优化归根到底是减少竞争减少锁的持有时间7. 锁的持有时间越长,意味着越多的线程在等待该竞争锁释放8. 如果原创 2021-03-24 18:49:26 · 128 阅读 · 0 评论 -
Java项目环境变量管理
Java项目环境变量管理两种方式概述方法1:Linux系统环境变量方法2:配置文件管理两种方式概述不同模块之间环境变量管理的2种方式:linux系统环境变量配置文件方法1:Linux系统环境变量在系统启动之后,执行如下命令:. Profile.system. Profile.system文件如下:#!/bin/sh#以下为所有的环境变量PRODUCT_NAME="AAA"PRODUCT_COMMON="common"PRODUCT_VERSION=@VERSION@PROD原创 2021-01-31 15:51:10 · 196 阅读 · 0 评论