- 博客(331)
- 收藏
- 关注
原创 JVM参数调优——G1收集器
使用默认配置参数,(MaxGCPauseMillis=200)多个服务GC收集器从CMS转到G1效果都很好,GC耗时每分钟 大都在40ms以内,但是有个服务就与众不同了。触发mixedGC的老年代的占用率阈值 85%–>60% (experimentalVMOptions)G1收集器的出现除了提供可控的低延迟GC,解决历史收集器的一些弊病,同时还尽力简化调优参数。mixedGC中要收集的老年代区域占整个堆的百分比上限 10%–>20%默认值是Java堆的5% (experimental VM flag)
2023-09-21 19:17:42 1435
原创 MySQL数据库集群瘦身实践
数据库集群过大,迁移备份慢,易产生慢查,且问题容易扩散,保持小而美是一个健康集群的重要标准。本文主要讲述了作者在MySQL数据库集群瘦身的一次重要实践。集群释放800+G,业务稳定运行两年无忧。
2023-08-18 15:54:42 229
原创 垃圾搜集器UseParallelGC
查看jdk支持的垃圾收集器有哪些?当前进程使用的垃圾收集器是什么?查看默认垃圾收集器详细信息命令通过新生代、老年代名字确定垃圾收集器更加准确的定位使用了哪些垃圾收集器一探究竟结果不尽人意使用参数-XX:+UseParallelOldGC使用参数 -XX:+UseParallelGC -XX:+UseParallelOldGC搜寻官方资料得知,UseParallelGC和UseParallelOldGC,在jdk8及之后,开启一个默认启用另一个。转而尝试G1
2023-08-08 18:03:56 367
原创 MySQL碎片清理
不指定ALGORITHM的情况下,如果alter语句支持 inplace,就使用inplace,否则就用copy。除了mysql官方的实现方式,业界也有一些知名开源工具解决大表的变更,gh-ost就是一例。锁表时间很短,几乎不影响业务读写,属于Online DDL。inplace 基于临时文件,锁表时间短,不易丢数据。copy 基于临时表,锁表时间长,容易丢数据。增量数据同步-by binLog。搜集相关知识,有人提供方案。所以整理碎片 直接执行即可。
2023-07-27 15:13:17 1230
原创 常用脚本命令sort head tail grep awk sed uniq
常用脚本命令sort head tail grep awk sed uniq
2023-03-27 18:21:25 395 1
原创 Guava之RateLimiter如何限流
对本系统的保护。位于业务系统的最前面;对外部调用的并发控制。处于系统的底层;大部分系统聊的都是前者,今天我们聊聊后者。
2023-03-24 17:31:32 162
原创 OpenFeign问题汇总
OpenFeign常见问题:超时配置,Header设置不生效,UndeclaredThrowableException的产生原因,OKhttpClient 连接池的配置
2023-03-12 14:23:05 337
原创 OpenFeign调用产生UndeclaredThrowableException
OpenFeign调用综上,UndeclaredThrowableException 是动态代理类 在调用过程中,除了方法签名throws声明的异常类、RuntimeException 和 Error 之外的异常都会包装为 UndeclaredThrowableException 抛出。捕获 UndeclaredThrowableException 后, 获取 getUndeclaredThrowable();方法签名 throws 某个不希望被包装的异常 xxException;
2023-03-11 23:39:44 575
原创 再谈ThreadPoolExecutor
上次提到分析了ThreadPoolExecutor的核心参数,本文则主要分析下常用队列、拒绝策略和线程池初始化方法。
2022-11-04 16:59:05 783
原创 @PropertySource 使用
PropertySource 可以加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。
2022-08-05 12:30:21 1098
原创 Spring Boot 元数据文件的应用与生成
SpringBootjar包含元数据文件,提供所有支持的配置属性的详细信息。这些文件旨在允许IDE开发人员在用户使用application.properties或application.yml文件时提供上下文帮助和“代码完成”。
2022-07-15 12:42:24 589
原创 springboot starter的实现方式
配置到 spring.factories 中【推荐】自定义 @Enablexxx 注解【推荐】使用 @Import 注解
2022-07-14 10:16:06 327
原创 SpringBoot 拦截顺序 Filter Interceptor
相关类包路径与继承关系package org.apache.catalina.core;public final class ApplicationFilterChain implements FilterChainpackage javax.servlet.http;public abstract class HttpServlet extends GenericServletpackage org.springframework.web.servlet;public abstrac
2022-04-24 20:11:00 635
原创 Mac系统通过标签管理文件
Mac系统通过标签管理文件管理标签可自由增减、命名、排序标签建议:重要、个人、工作添加收藏建议:都加进来,按照自己喜欢的方式排序,考虑下哪几个最常用ps: 添加到收藏后,方可使用 快捷键 Ctrl+1~7mac 给文件添加 标记添加标记选择文件,手动添加快捷键,Ctrl + 1~7 添加指定标记取消标记选择文件,手动取消快捷键,Ctrl+0 取消所有标记...
2022-03-01 18:42:24 572
原创 Java 静态方法读取 yml
本地项目写个测试方法,如何获取 yml 配置文件的属性信息?直接上代码 private static void printAllProperty(Properties props) { @SuppressWarnings("rawtypes") Enumeration en = props.propertyNames(); while (en.hasMoreElements()) { String key = (Strin.
2022-01-21 17:27:06 1281
原创 Maven 自定义 archeType
根据已有项目创建模板,后续依据模板创建工程,提高效率创建archeType在工程根目录打包mvn archetype:create-from-project# 使用个人settingsmvn archetype:create-from-project --settings /Users/yuan/apache-maven-3.8.1/conf/personal_settings.xml生成archetype模板切到 archetype 目录cd target/generated-.
2022-01-21 15:37:08 608
原创 Excel查找匹配VLOOKUP用法
区域引用表示本文件单元格A1区域A1:B2整列A:B同文件跨sheet本文件 sheet2 的A1:B2 区域Sheet2!A1:B2本文件 sheet2 的A:B 列区域Sheet3!A:B,跨文件指定目录下 特定文件的 指定区域‘/Users/yuan/Downloads/[vlookup2.xlsx]Sheet1’!$A1:1:1:B$2指定目录下 特定文件的 指定列‘/Users/yuan/Downloads/[vlo
2021-12-29 15:52:42 1958
原创 Spring Web API 测试
针对spring web API 做接口测试依赖组件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </de
2021-12-29 12:21:58 328
原创 UT 上手实践
UT 上手实践基本工具ToolsJunit——Java主流单元测试框架JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform:测试框架基础,定义了TestEngine用于开发在平台上运行的测试框架的API。JUnit Jupiter:JUnit5的核心,是一个基于JUnit Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。JUnit Vintage:兼容JUnit3、J
2021-12-22 10:21:41 168
原创 @Mock@Spy@MockBean@SpyBean对比
mockito 注解package org.mockito;mockito 定义的注解主要有三个:@Mock@Spy@InjectMocks// demo@InjectMocksprivate MyService myService;@MockMyMockMapper myMockMapper;@SpyMySpyMapper mySpyMapper;说明@Spy和@Mock生成的对象不受spring管理,也不会替换Spring对应类型的bean@InjectMo
2021-12-01 18:10:18 3207
原创 SpringBoot @Value 属性注入
ymlprefix: string: yw array: array1,array2,array3 list: list1,list2,list3 map: "{ 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' }" mapList: "{ key1: 'v11,v12', key2: 'v21,v22',
2021-11-23 20:30:38 1269
原创 单元测试基本原则
FIRSTFAST快速对于大型成熟项目可能会有数千个测试用例。每个测试用例应尽可能快的运行,最好在毫秒级别。# 参考> 单个测试小于200ms> 单个测试套件小于10s> 整个测试小于10分钟Independent隔离单元测试是独立的,可以单独运行而不依赖外部元素,如文件系统或数据库。Repeatable可重复在不改变输入的情况下,单元测试的输出结果应保持不变。Self-validating自检查单元测试应自动检测测试是否通过而无需人
2021-11-18 12:43:45 1354
原创 SpEL小试牛刀
背景SpEL(Spring Expression Language),即Spring表达式语言,语言简洁,功能强大。示例private static final Cache<String, Expression> EXPRESSION_CACHE = CacheBuilder.newBuilder() .maximumSize(8192) .initialCapacity(512) .expireAfterWrite(1L, TimeUnit.HOURS) .build()
2021-11-09 15:57:38 446
原创 FeignClient 使用 @SpringQueryMap 注解不解析父类字段
背景spring cloud 项目使用feign的时候都会发现一个问题,就是get方式无法解析对象参数。其实 OpenFeign 提供了 @QueryMap 注解支持Map形式的参数转换。 但不幸的是和 Spring 不适配,因为缺少 value 这个属性,所以推荐使用 @SpringQueryMap 以解决 GET 请求的时候, 传递对象属性的问题。问题但是问题又来了,当使用子对象继承父类的时候会无法传递父类的属性。探究源码查看源码发现,默认使用的 QueryMapEncoder 是
2021-11-08 17:46:06 2286
原创 Mac与Linux互传文件
建立连接mac 打开终端,找到shell 下的新建远程连接选择安全文件传输(sftp)输入服务器IP选择服务器IP,并输入用户,然后点击连接sftp root@10.xx.xx.xx输入密码然后回车上传文件执行put命令# put 本地文件路径 远程主机路径put /Users/yuan/demo-bookmark.pdf /text下载文件cd到需要下载文件的目录执行get命令# 用get命令下载文件 get 文件名 本地目录get 文件名 本地目录root
2021-11-02 22:46:54 1026 1
原创 Linux 包管理工具
前言现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件。软件通常都是存放在存储库中,并通过包的形式进行分发。处理包的工作被称为包管理。包提供了操作系统的基本组件,以及共享的库、应用程序、服务和文档。名词解释rpm(Redhat Package Manager)最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。yum(Yellodog Update Modifier)是一个在CentO
2021-10-30 17:52:08 255
原创 Linux系统概述及常用命令
系统概述Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。Linus Torvalds ,Linux之父,他根据Minix系统的代码,参照UNIX系统的设计,写出了第一个Linux内核。1991年10月5日首次发布。源码 https://github.com/torvalds/linux背景选择少,不开放20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和macOS这几种。Unix价格昂贵
2021-10-28 18:41:56 383
原创 Java8函数接口
重要的函数接口函数接口参数返回类型说明PredicateTboolean判断是否ConsumerTvoid输入一个参数BiConsumer<T,R>(T,R)void输入两个参数Function<T,R>TR获得对象的名字SuppliernoneT工厂方法UnaryOperatorTT一元运算符BinaryOperator(T,T)T二元运算符lambda表达式详见快速上手
2021-10-12 20:31:49 58
原创 Java泛型标记TEKVSUN?
标记符具体类型T - Type(表示具体的一个java类型)E - Element (在集合中使用,因为集合中存放的是元素)K - Key(键)V - Value(值)S - 2nd typeU - 3rd typeN - Number(数值类型)通配符?- (表示不确定的java类型,无界通配符)< ? extends E> 上界通配符上界:用 extends 关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。类型参数列表中如果有多个类型参
2021-10-12 20:24:22 147
原创 OpenFeign使用Gson编解码自定义TypeAdapter
OpenFeign使用Gson编解码时,针对日期时间类型的一些bean编解码不支持,可以通过自定义TypeAdapter来解决自定义TypeAdapterImprovedDateTypeAdapterpublic class ImprovedDateTypeAdapter extends TypeAdapter<Date> { public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory()
2021-10-11 18:21:21 628
原创 OpenFeign实战
默认Client替换Feign 整体框架非常小巧,在处理请求转换和消息解析的过程中,基本上没什么时间消耗。真正影响性能的,是处理Http请求的环节。由于默认情况下,Feign采用的是JDK的HttpURLConnection,所以整体性能并不高。需要进行性能优化,通常采用ApacheHttpClient或者OKHttp,加入连接池技术。ApacheHttpClient配置类HttpClientFeignLoadBalancedConfiguration依赖<!-- Http Cl
2021-09-27 21:38:14 1080
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人