- 博客(1820)
- 资源 (20)
- 收藏
- 关注
原创 IDEA函数调用关系图插件
Call Graph是一款IDEA插件,用于可视化基于IntelliJ平台的IDE的函数调用图。这个插件的目标是让代码更容易理解,有助于读懂和调试代码。安装插件安装后,通过View - Tool Windows - Call Graph ,激活窗口激活后,需要先Build graph,让插件分析java代码,可以选择对整个工程或者针对某个项目。然后点击Run.选择你要看的函数所在模块查看调用关系图...
2022-03-11 13:52:30
10501
1
原创 IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法
因为IDEA2021.3.2 的Maven是3.8.1后,mvn编译的时候总是提示拉不到依赖,报错如下:Could not validate integrity of download from http://0.0.0.0/...因为使用HTTP协议下载依赖,可能会导致中间人攻击。所以Maven 3.8.1就禁止了所有HTTP协议的Maven仓库,而IDEA2021.3.2使用了Maven 3.8.1很多公司内部的maven仓库一般都是http协议,而Maven 3.8.1禁止了http协
2022-03-11 10:29:03
20870
1
原创 Linux系统火焰图以及Java火焰图
CentOS7.8安装perf#yum install perf执行perf执行perf record 命令,记录该PID的行为#perf record -a -g -p 14851 -- sleep 30 --30秒后退出#perf report安装git#yum -y install git下载FlameGraph#git clone https://github.com/brendangregg/FlameGraph.git生成火焰图/
2021-12-31 18:31:00
2717
1
原创 使用arthas采集火焰图
火焰图是用图形化的方式来展现profiler工具采集的性能数据,对数据进行统计和分析,方便找出性能热点。现在我们使用arthas采集JVM的火焰图。1.首先你需要安装arthas说是安装其实就是下载解压,arthas是不需要安装的。下载 — Arthas 3.5.5 文档需要完整的文件目录例如:需要注意 如果你只是上传一个arthas-boot.jar是不够的,因为会调用其他库#unzip arthas-packaging-3.5.4-b.
2021-12-31 15:13:33
13818
原创 show-busy-java-threads查找CPU占用高
背景:需要查找线上CPU占用过高的Java线程在做什么。可以使用top命令找出占CPU高的进程#top 然后按shift+C 按CPU占比排序然后把进程中占比高的线程id找出来,这个是常见的套路,但是这样做比较繁琐。可以使用show-busy-java-threads工具包快速定位,确实好用。1.下载安装下载#wgethttps://github.com/oldratlee/useful-scripts/archive/release.zip解压#unzip usefu.
2021-12-31 15:03:12
1299
1
原创 不写容易出错的代码
下面2段代码都是完成商品名称的更新,只是第一种情况数据源是list第二种是map第一代代码是从List里获取第0个entity.setProduct_name(productList.get(0).getName());第二段代码从map里获取键值entity.setProduct_name(productMap.get(pid).getName()));如果哪一天第一段代码修改了 然后忘记改第二段代码这是一种容易犯错的情况。更多的是改了第一段代码直接复制到第二段,也可以..
2021-03-18 18:38:05
3381
4
原创 Spring @bean冲突解决方案
引用2个jar都实现了相同的@bean注入,这个是feign的Level@Beanpublic Level feignLoggerLevel() { return Level.FULL;}这样报错:escription:xxx required a single bean, but 2 were found: - feignLoggerLevel: defined by method 'feignLoggerLevel' in class path r
2021-03-13 18:11:20
2843
原创 编程容易犯的错
1.数字比如分页默认从第0页开始,你不了解,写个1,这样数据也出来,但是就是少了第一条,这种错误比较难发现。写代码对于数字需要敏感,不懂一定要搞懂。2.参数多参数做缓存拼凑一个key,之前的代码是对的,后来需要写类似的代码,就遗漏了其他参数,只用一个id对于个数需要敏感。3.临时代码忘记复原临时修改代码为了验证某个问题,后来改了B,忘记A该回去。...
2021-03-04 18:10:02
1100
3
原创 系统架构的过程 浮现式设计
系统架构如果设计之初就设计错了,那么必然是南辕北辙。系统分为三层,数据层 视图层 业务层数据层 包含数据存储和数据交互,应该是纯数据操作和业务无关业务层 自然就是service层这是最多变的一层视图层 接口那么系统设计应该按照什么顺序呢?应该是先设计数据层,如果数据层设计错了那么整体就会事倍功半。所以这是一个自底往上的过程。但是,上并不是到业务层,而是视图层,因为你的一切设计都是围绕对外,如果你的接口没有使用使用价值整个系统也就变得没有价值。好,当你设计好视图和数..
2021-02-20 20:22:40
1092
原创 索引与联合索引使用注意
索引和联合索引看似很简单但是往往不一定用的对。假设数据库2个字段a,b都是查询条件第一个问题:是建立2个索引还是一个联合索引?第二个问题:如果建立联合索引那么字段的顺序有什么讲究?原则:1.如果需要多个字段唯一健那么需要联合索引2.如果某2个字段总是成对出现在查询语句里需要建立联合索引,相反的如果这2个字段总是出现在不同的查询语句也就是两者没有什么必然连续无需联合索引3.联合索引字段的先后顺序ab还是ba看列值选择性好的放前面,所谓列值选择性好就是该字段重复的越少越好。.
2021-02-20 18:33:50
1306
原创 大厂线上案例复盘--代码漏洞
这是一则发生在某大厂的真实案例,出于脱敏名字这且不说。这个系统因为第一次上线,流量非常的大。所以需要灰度上线,所谓灰度方案很短,比如按照地理位置,先选择某个访问量小的地区比如西部青海。然后逐步放量,几天以后增加几个省再看看,然后如果没问题扩大到全国。灰度是没有问题的,也是必要的。APP--->B系统--->新系统这个系统提供了一个接口给B调用由于B系统是全国开放,所以B的流量很大,B上面没有做地区限制,他的流量会都打到新系统上。所以一开始不是青海的用户..
2021-02-15 09:59:26
996
2
原创 从一个需求看问题的无限复杂化和简单化
一个需求 如果你一开始的出发点就错了,那么后续的设计只会非常复杂,而且还会有漏洞,也很难发现,发现了也很难解决。先看数据结构:A表 主键id 其他各种字段不重要 ,重要的就一个字段sort字段aid1 sort=1aid2 sort=1---------------------B表 A的关联表 存A的id 还有就是C表的idaid1 cid1aid2 cid2-------------------C表 某种数据cid1cid2...
2021-02-03 22:46:39
748
3
原创 代码规范碎碎念
代码规范碎碎念list条件多于2不要写命名上controller (model-DTO)service (model)repository层 语义化构造(entity->model)String转map 语义化数据结构String转model 从数据库层增强语义 组装模型DAO ( entity)mapperVO(admin) DTO(client)---------facade层 必须接外部接口 必须用 integration包一层接口降级不...
2021-02-02 14:58:54
671
原创 暗时间:开发效率为何如此低下
产品 开发 测试 三者都理解不一致。产品怎么样表达出自己的诉求,是否写清文档就够了。开发觉得自己沟通了,但是为什么测试一提测又许多问题。测试的case看似都一起评审了。而这样的结果必然是重新修修补补,怎么样事前把问题全部解决?产品的设计稿,开发的代码,测试的case 不统一是关键!...
2021-02-02 14:53:08
598
原创 Java开发字符串JSON处理
需求很简单就是数据库存json。数据库字段 varchar入参request 定义 List<String> 如果不定义这个 而是定义String那么需要加"/转义比较难看Entity 定义Stringentity.setXXXIds(JSON.toJSONString(request.getXXXIds()));返回VO 定义还是List<String>BeanUtils.copyProperties(entity, vo);...
2021-01-25 16:52:03
613
原创 从难免的线上bug说起代码的思考
经常是某司线上又出bug了,然后是给公司造成多少损失,追根究底总是可以找到一些原因,诸如:写代码逻辑考虑不全面,或者代码有硬伤,也有测试不充分,甚至不测试都有,也有是运维的问题等等。我对测试部专业,测试是否可以发现所有问题我不好说,但是可以肯定的是从很多大厂出过的问题来看,测试只能减少问题,不能彻底规避问题。可能你会说需要监控等手段并用,那是必须的,但是首先还是需要把代码写好。作为开发人员需要有些追求,写出高阶一点的代码,不然只是这次发现问题,但是一些不好的习惯或者代码水平不提高还是会出错。
2021-01-19 19:55:48
6541
11
原创 说透泛型类和泛型方法以及Class<T>和Class<?>的差异
泛型类和泛型方法看起来似乎可以实现类似的功能,但是很多人并未真正掌握泛型方法,网上很多文章说了很多还是似是而非,特别是初学者还是搞不明白。1.泛型方法可以独立于泛型类2.泛型方法等效于泛型类里泛型参数方法代码一 泛型类Generic:泛型类有一个带泛型参数的方法listAdd,有2个入参一个泛型数组,一个泛型List。功能很简单就是把数组元素添加到List里,返回泛型List。public class Generic<T>{ //泛型类中的..
2020-11-24 23:30:20
3342
3
原创 复杂系统设计 企业开发的困境
复杂源自微观宏观架构+微观架构宏观架构:大架构,通用架构微观架构:小架构。架构的复杂性首先是多实现,不同实现必然有优劣。未完 。
2020-11-15 19:44:45
1497
原创 Linux Performance
性能专家Brendan Gregg的网站。Linux性能该页面链接到我创建的各种Linux性能材料,包括右侧的工具图。它们使用大字体来适合滑盖。您也可以将它们打印出来用于办公室墙壁。它们显示:Linux可观察性工具,Linux静态性能分析工具,Linux基准测试工具,Linux调整工具和Linux sar。在图像上检查年份(右下)以查看年份。还有一个高分辨率图,它结合了可观察性,静态性能调整和perf-tools / bcc:png,svg(请参见讨论),但是它不如其他图完整。有关更多图表...
2020-10-08 13:46:53
2761
1
原创 Intellij IDEA单元测试提示Test events were not received
Intellij IDEA单元测试时提示Test events were not received也就是可以运行test方法,也提示成功,但是看不到具体的执行结果。Intellij IDEA从2019.2.1版本开始,会将Gradle管理的项目的测试代码,默认使用Gradle来运行,从Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle进入。这里修改下就行了:使用此工具运行测试 选.
2020-09-29 14:21:44
5652
1
原创 微服务重构心得
1.领域划分通用划分模式,一定的内聚,这并不难,难的还是领域直接的耦合怎么尽可能的解耦干净2.领域解耦错综复杂的调用关系分层,从顶到底,不允许底层调上层。底层需要的数据尽量上层提供,而不是底层继续调接口:性能问题,循环调用,等。3.代码翻译与义译基本是直接翻译,但是需要做一定的去重,原先代码因为是单体工程,所以会不断的查库,分层之后,需要的数据都已经上层给你提供,那么没必要做太多的if else这需要消除。例如:某方法 原先是 需要根据商品id区分是自己从购物...
2020-09-22 19:40:18
1971
1
原创 Redis客户端JetCache的单机版和集群版的配置
jetcache基础应用参考这个:阿里巴巴开源的缓存框架JetCache创建缓存1.JetCache的jedis配置https://github.com/alibaba/jetcache/wiki/Config_CNjedis配置:apollo版jetcache.remote.default.type = redisjetcache.remote.default.keyConvertor = fastjsonjetcache.remote.default.valueEncoder.
2020-09-17 10:44:46
3510
原创 自动生成纯文本表格的工具
https://tableconvert.com/?output=text有时候需要写文档的时候生成这种纯文本表格,这个工具真的很方便,贴上数据就可以了。
2020-09-04 16:16:58
3354
原创 阿里巴巴开源的缓存框架JetCache创建缓存
JetCache的优势自动刷新和加载保护是JetCache的大杀器,对于加载开销比较大的对象,为了防止缓存未命中时的高并发访问打爆数据库:public interface SummaryService{ @Cached(expire = 3600, cacheType = CacheType.REMOTE) @CacheRefresh(refresh = 1800, stopRefreshAfterLastAccess = 3600, timeUnit = TimeUnit.SEC
2020-06-18 20:12:24
1761
1
原创 Win10蓝屏原因查找以及解决
Win10蓝屏会重新收集信息,这个时候不能强制重启需要过一段时间,不然导致Win10无法进入。Win10蓝屏要找原因,不然还会重复出现。如果你乱猜什么显卡驱动,杀毒软件都是不靠谱的。看Win10日志找到18:26分的日志,是在同步时间:关闭时间同步很简单:...
2020-05-10 20:43:29
4797
原创 深入浅出SpringBoot源码分析
Bean的初始化类DefaultListableBeanFactorythis.beanDefinitionNames.add(beanName);初始化这里写入所有的bean对每一个进行初始化@Override public void preInstantiateSingletons() throws BeansException { if (log...
2020-04-28 23:10:46
1129
原创 更换yum的源为阿里云或者网易
1.备份原本的yum源:#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载阿里云的yum源:CentOS6,CentOS7,CentOS8下对应的即可wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali...
2020-04-27 23:37:26
900
原创 安装最新的GCC
GCC版本低了会出错,导致头文件不能解析,需要升级GCC。一、下载gcc最新源码包#wget http://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz二、解压缩#tar -xzvf gcc-9.3.0.tar.gz三、进入解压缩目录#cd gcc-9.3.0四、运行download_prerequisites脚本,这个脚本...
2020-04-23 15:08:13
13488
2
原创 Apache Hudi的写时复制和读时合并
Apache Hudihttp://hudi.apache.org/http://hudi.apache.org/docs/quick-start-guide.htmlHudi将流处理带到大数据,提供新数据,同时比传统批处理效率高一个数量级。存储类型和视图Hudi存储类型定义了如何在DFS上对数据进行索引和布局以及如何在这种组织之上实现上述原语和时间轴活动(即如何写入数据)...
2020-04-22 18:23:41
4863
原创 MongoDB分布式原理以及read-preference和readConcern解决读写一致性问题
MongoDB词汇表:https://docs.mongodb.com/manual/reference/glossary/#term-replica-set几个重要概念:primaryIn areplica set, the primary is the member that receives all write operations. SeePrimary.在副本集中...
2020-04-20 12:27:28
3831
原创 一步一步学习VirtualBox安装CentOS7和CentOS8
具体步骤可以参考我很多年前写的《虚拟机安装CentOS以及SecureCRT设置【完美无错版】》,这个整体并无太大变化。下载镜像CentOS源可以选择阿里云的https://mirrors.aliyun.com/centos/https://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-DVD-1...
2020-04-18 20:47:22
2345
原创 Redis源码分析 List实现
在版本3.2之前,Redis中的列表是 ziplist 和 linkedlist 实现的,在3.2之后,由quicklist实现。双向链表linkedlist在表的两端进行push和pop操作非常方便,但是地址不连续,而且需要保持额外的指针。ziplist是连续内存,存储效率高。但不利于修改操作,插入和删除需要重新申请和释放内存。先看quicklist数据结构/* Nod...
2020-04-14 23:30:57
854
1
原创 从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发
有人询问我网上一篇关于“redis为什么单线程这么快”的文章,我建议他不要看了,因为redis是单进程不是单线程,后面的意见不用看了,文章质量肯定不会很好,他也说了自己看了很久源码似乎还是有些云里雾里,所以我就给他分析了为什么redis这么快,这篇主要讲epoll的实现。从redis和nginx源码和llinux内核角度分析redis和nginx可以支持多大的并发.redis和nginx都...
2020-04-14 11:43:27
1920
原创 Linus采访对Linux对git和对代码品味的理解
Linus大师说他11岁就开始编程,他说他是一个喜欢安静和不合群的人。图中是他和他的弟弟,看来少儿编程还是很重要的,大师21岁写出linux0.0.1最初的内核。图中是他的家,也是Linux的总部,非常简单的办公环境,只有显示器,大师喜欢安静,所以不想听到电脑主机风扇声音,墙壁是绿色的,他觉得可以让他宁静。Linus说他认识很多在谷歌工作的人在家里都有小型数据...
2020-04-13 23:15:49
1053
原创 切换阿里云maven源解决maven中央仓库下载太慢卡顿的问题
maven默认官方的中央仓库有时候很慢下载jar甚至会卡住,那么你可以切换到阿里云的maven源在本地的maven文件夹新建settings.xml<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http:...
2020-04-13 20:06:12
1747
原创 Java得到调用当前方法的方法名
Thread.currentThread().getStackTrace()[1]当前方法执行堆栈 Thread.currentThread().getStackTrace()[2]上一级的方法堆栈Thread.currentThread().getStackTrace()[3]上上一级的方法堆栈StackTraceElement[] temp=Thread.currentThread()...
2020-04-11 11:25:55
5153
1
原创 Java的List和Json转换以及StringRedisTemplate往redis存泛型对象
List转JsonList<User> user= new ArrayList();String str = JSON.toJSONString(user);Json 转List方法一List<User> user= JSON.parseArray(json,User.class); 如果是泛型方法需要使用TypeReferenceJson ...
2020-04-10 10:47:12
4608
1
原创 SpringBoot自定义异常源码分析
11111ExceptionHandlerExceptionResolver类initExceptionHandlerAdviceCache方法先找到异常注解的beanList<ControllerAdviceBean> adviceBeans = ControllerAdviceBean.findAnnotatedBeans(getApplicationContext...
2020-04-08 14:16:21
797
原创 使用Notepad++比较文件的差异
https://blog.csdn.net/qq_34741578/article/details/88743952
2020-04-02 22:47:33
1908
原创 Spring Boot集成Swagger导入YApi@无界编程
接口APi开发现状现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率。但是如果接口很多,你一个个手工在YApi去录入无疑效率很低。如果是使用Spring Boot集成Swagger可以直接导入YApi非常方便,不过还有一些需要注意的事项。1.Spring Boot集成Swagger添加swagger相关的maven依赖<...
2020-04-02 16:45:34
3435
jdk-12_windows-x64_bin.exe和安装说明
2019-03-23
Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集)
2019-03-19
JDK源码 openjdk-8u40-src-b25-10_feb_2015.zip
2019-03-17
EncodingDetect.java
2016-01-30
FreeTDS-0.95版
2015-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅