- 博客(48)
- 资源 (4)
- 问答 (3)
- 收藏
- 关注
原创 一文带你入坑全链路监控,skywalking
一,APM概念介绍APM(Application Performance Management)对应用程序性能和可用性的监控管理系统。它主要有这三个方面的内容,分别是 Logs(日志)、 Traces(链路追踪)和 Metrics(报表统计)。简单描述就是通过各种探针采集并上报数据,收集关键指标,同时搭配数据展示以实现对应用程序性能管理和故障管理的系统化解决方案。二,全链路监控特点1,低侵入性监控系统应尽可能减少对业务系统的侵入,保持对使用方的透明性,减少开发人员的负担,降低接入门槛和难度。
2021-05-16 15:01:06 2983 2
原创 ThreadLocal 存储的线程变量不能在父子线程中传递解决方案
问题描述:ThreadLocal 存储的线程变量不能在父子线程中传递项目中,我们经常会用ThreadLocal来存储线程变量,方便后续业务操作的获取。但是如果后续业务中又重新新开线程去处理业务的时候,ThreadLocal不能正常获取到存储的线程变量。也就是线程变量不能在父子线程中传递。JDK提供的解决方案InheritableThreadLocal:InheritableThreadLocal是jdk自带的提供父子线程传递的实现类。InheritableThreadLocal实现的原.
2021-05-04 15:57:29 672 2
原创 springboot集成tomcat, jetty, undertow服务器吞吐量对比
springboot集成tomcat, jetty, undertow服务器吞吐量对比一,实验结论:100个线程 循环1000次,都用默认配置,没有调配置参数情况下tomcat的吞吐量是每秒973.1,undertow的吞吐量是每秒1211.8,jetty的吞吐量是1148.3结论:可以看出,默认配置情况下,undertow的吞吐量领先于jetty和tomcat.,undertow>jetty>tomcat二,实验过程1,测试类的controller @Request
2021-05-02 00:43:03 1814 1
原创 基于spring提供的反射工具类,实现通用重试功能
基于spring提供的反射工具类,实现通用重试功能一,背景:项目中有需要重试的场景:失败后,记下重试的类名,方法名和参数到数据库。后续通过定时任务扫描,重试。二,代码实现特意写了一个反射的工具类,只要传入需要执行的类名和方法名和参数即可通过反射执行该方法。1,反射工具类@Componentpublic class SpringReflectionUtil { @Resource private ApplicationContext applicati..
2021-05-02 00:07:13 513
原创 钉钉消息结合链路监控在项目中的应用
第一步:拉一个钉钉群,然后添加一个机器人,获取发送权限添加完成后,会返回发送的地址链接:https://oapi.dingtalk.com/robot/send?access_token=xxxx注意点:发送内容必须含有自定义关键词,才能发送成功第二步:编写发送钉钉消息代码注意点:content中必须含有 第一步设置的关键词 “告警” 两个字否则发送不成功。@Component@Slf4jpublic class DingDingHelper ...
2021-03-28 22:40:06 319
原创 jvm参数设置不合理导致频繁gc问题排查
目录一,问题背景:二,实验结论:三,实验过程:实验前置条件:1,服务原有jvm配置2,去掉新生代128m的限制3,Cms垃圾回收器4,开启G1一,问题背景:线上有个项目jvm参数大概这么配置,然后最近项目经常告警,接口响应超时。-javaagent:D:\apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar-Dskywalking.age
2021-03-21 21:31:51 1489
原创 线程池问题解读
线上同事写的线程池private static ThreadFactory pushThreadFactory = new ThreadFactoryBuilder().setNameFormat("event-redirect-%d").build();private static ThreadPoolExecutor appPushExecutor = new ThreadPoolExecutor(8, 16, 0L, TimeUnit.MILLISECONDS,
2021-03-17 23:44:05 246
原创 本地微服务注册上eureka问题解决方案
一,问题背景:微服务改造后,组内服务调用采用feign接口调用。经常发现调其他组feign接口莫名的报错,时好时坏,干扰开发进度。导致时好时坏的原因是:开发人员本地启动的时候是连接开发环境,并且默认将本机启动的服务注册到eureka,导致当请求分发到开发人员本机的时候,因为网络不通出现异常,分发到开发环境的服务器就请求正常。二,解决方案:第一步:配置中心配置配置参数如下:代表不注册上eurekaeureka.client.register-with-eureka = false
2021-03-13 15:56:10 3440 1
原创 xxjob分布式定时任务简单入门和改造
xxjob简单入门和改造xxjob简介XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。xxjob官网下载地址https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8Bxxjob下
2021-03-07 15:20:36 19419
原创 rocketmq4.8版本单机搭建指南
rocketmq4.8版本单机搭建指南rocketmq版本4.8下载地址https://apache.claz.org/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip官网地址https://rocketmq.apache.org/docs/quick-start/rocketmq-all-4.8.0-bin-release实验:将rocketmq版本下载到阿里云的服务器进入rocketmq-all-4.8.0-bin-rel
2020-12-26 16:13:34 2398
原创 微信小程序码生成踩的坑
小程序码生成开发者文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.htmlhttps://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html#method-http接口返回的内容,用byte[]去接收,然后将byte[]转化成图片或者上次.
2020-09-15 18:17:38 521
原创 visualvm 安装Gc可视化插件
第一步打开 工具-》插件第二步安装安装完后重启即可效果如下如果遇到错误第一步:检查自己电脑jdk版本第二步:打开这个网址http://visualvm.github.io/pluginscenters.html第三步:选择自己jdk对应的版本,然后复制链接第四步:将第三步复制的链接,复制到下图所示位置...
2020-08-01 11:34:02 358
原创 java对象引入问题,导致的莫名其妙的bug
前语:问题虽然简单,但是一不小心就引起了线上bug,这个问题 是出现在订单金额计算过程中,造成了部分的经济损失,估计这也是面试经常强调重视基础的根源。这里只是举个简单例子,不贴线上代码问题代码示例public class ObjectProblem { public static void main(String[] args) { List<Student> list = new ArrayList(); Student studen
2020-07-24 16:02:00 240
原创 mq使用不当,造成生产线上环境的服务奔溃问题记录
案例描述:线上采用canel监听A表的status状态变化,只要有变化就通过mq发送消息到对应的消费者端处理。消费者端的程序代码这样子写(因涉及公司业务,这里只是举个大致的代码示例)代码大致的思路就是,监听队列QUEUE_B,然后消费发送到QUEUE_B的消息,如果消费过程中发生异常,就将消息重新发回队列中去。一开始上线这个功能是正常的,因为doSomeThing业务里面没有任何异常,消息能够被正常消费。后来某个版本上线后,突然有一天晚上,发现线上的服务,大部分宕机,监控短信响个不停。
2020-07-05 19:43:21 857
原创 教你写个最简单的shell定时任务
第一步新建task.sh脚本vim task.sh#! /bin/bash echo "hello task " >> /usr/local/task.txt赋予权限chmod 755 task.sh
2020-07-05 16:45:16 21550 1
原创 redis集群缩容
redis集群缩容参考上篇文章的介绍,再看这篇文章https://blog.csdn.net/u010772230/article/details/105923826第一步:将剔除master节点的所有槽位移到redis其他集群master节点上这里将redis-7007节点的槽位全部移动到其他节点上redis-cli --cluster reshard --clu...
2020-05-04 22:19:02 607
原创 redis集群扩容
redis集群扩容第一步:准备加入的两个节点参考上篇文章的介绍,新增两个节点https://blog.csdn.net/u010772230/article/details/105916102redis-7007和redis-7008第二步:将节点加入集群主节点加入集群redis-cli --cluster add-node 120.79.67.227:700...
2020-05-04 21:39:26 896
原创 在阿里云,使用docker搭建外网可以访问的redis集群
限于机器限制,本文主要在阿里云搭建 3主3从的redis集群重要注意事项:在阿里云网络配置安全组先打开这12个端口的访问权限7001-7006 17001-17006第一步:拉取redis镜像,创建redis-conf模板拉取redis最新镜像docker pull redis新文件redis-cluster2.tmpl 文件,vim redis-cluste...
2020-05-04 16:06:56 2745 3
原创 线上订单数据导出功能优化历程分析和演示
背景:订单导出功能,因公司业务需要,订单导出的字段,需要关联15张表。优化历程:问题1:一开始用poi,出现过线上内存溢出的问题,解决问题1:后通过加大内存,改用占用内存量小的工具easypoi,后来没出现过内存溢出问题。问题2.:导出一个3000条数据的excel,经常超时。导致excel无法正常下载。解决问题 2:原因是导出耗时比较久,出现超时的情况,这个时候把导出功能...
2020-05-02 12:01:18 1170
原创 mysql死锁演示
背景:线上日志突然爆了有数据库死锁的日志。通过以下语句查询数据库死锁的日志SHOW ENGINE INNODB STATUS通过 日志分析,看到了两条update语句并且是里面有子查询。还有两个表的更新顺序问题。解决方案是:加了分布式锁,让两个update语句放到一起执行,然后再调整两个update语句里面的子查询。得出的结论是:不要在update语句里面写子查询。...
2020-04-16 14:58:55 442
原创 jenkins搭建及构建springboot项目
安装jenkins第一步:拉取镜像docker pull jenkins/jenkins:lts第二步:启动镜像docker run -p 8080:8080 -p 50000:50000 -d -v /home/jenkins-home-docker:/var/jenkins_home -u 0 jenkins/jenkins:lts注意 -v ...
2020-04-16 09:34:36 718
原创 -XX:HeapDumpPath生成目录注意点
使用-XX:HeapDumpPath配置的时候,需要保证目录的文件夹都是存在,因为它在到处dump文件的时候,不会帮你去创建不存在的目录。使用相对路径:nohup java -Xms512M -Xmx512M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar order-0.0.1-SNAPSHOT.jar >/...
2020-02-23 23:34:15 32630 2
原创 记录logback日志相对路径问题
问题:项目成员将其设置成这样子,本意是在运行目录生成日志文件,结果日志一直没有打印出来。解决方案:按以下三种方案皆可以正常生成日志文件。文件保存路径设置可分以下三种:第一种:表示保存到程序运行目录,即为上图问题的解决方案,这种为相对路径第二种:使用绝对路径第三种:运行程序的父级目录...
2020-02-23 23:09:04 3047 1
原创 死锁例子示例
@Servicepublic class DeadLockService { private static final Object ROURCEA = new Object(); private static final Object ROURCEB = new Object(); public void getRourceAAfterRourceB() { ...
2020-02-06 17:35:40 264
原创 jvm内存溢出问题排查演示
实验环境:cenos7实验代码不停的new对象加入list中//list放到类成员变量 // 如果放到方法里面,方法结束后会,当内存不够,会触发gc,且list可被回收,不会造成内存泄露问题。 List<User> userlist = new ArrayList<>(); public void getUserList() { ...
2020-02-06 15:49:54 848
原创 jvm,导致cpu过高问题和排查演示
实验环境:cenos7实验代码模拟一段死循环的代码/** * 死循环Map测试 * 解决死循环问题:因为dataMap为空的时候,iterator.next()一直没有被调用到,就会导致死循环 */ public Map<String, Object> deadIterator() { Map<String, ...
2020-02-06 11:53:40 717
原创 bash: jsp: command not found...解决方案
安装了openjdk发现,jps不起效果解决方案:此时需要安装另外一个包才能使用在cenos下执行以下命令安装即可正常使用改命令sudo yum install java-1.8.0-openjdk-devel.x86_64...
2020-02-04 10:26:54 3750
原创 SimpleDateFormat线程不安全演示,DateTimeFormatter和ThreadLocal替换方案示例
问题演示:DateUtil错误示例public class DateUtil { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static Date dateStrFormat(String dateStr) { ...
2020-01-30 10:46:34 764
原创 spring事务@Transactional(readOnly = true)及隔离级别实验
先写结论:第一:@Transactional(readOnly = true)1.那么方法里面,必须是读的操作,当有写的操作的时候会报错提示。2.读到的数据,从进入方法开始,以后即使其他客户端修改了数据,读到的数据还是进入方法那刻的数据。即不会去读取更新的数据。第二:不指定事务,即不加@Transactional1.那么读到的数据,都是数据库最新的数据。第三:@Transactional...
2020-01-19 17:58:04 3774
原创 springboot日志文件不生产问题
当指定了日志文件logback-spring.xml,发现项目启动的时候,不生产日志解决方案:在yml中指定本工程具体的日志文件logging: config: classpath:logback-spring.xml如果还是不产生日志文件的话:指定磁盘上具体的目录即可(即把下图红圈部分,改成具体的磁盘目录)...
2020-01-17 16:21:43 3666 1
原创 Spring声明式事务和编程式事务简谈
spring有两种事务类型一种是声明式事务通过aop切面配置或者通过在类或者方法上加上@Transactional声明式事务作用于方法或者类,范围比较大。举例,当方法没退出的时候,数据库连接数不会释放,当调用第三方接口时,会存在很大的问题。容易导致连接数被占满。可以将数据库连接数最大设置为2,且连接超时时间设置较短来验证。 @Transactional publi...
2020-01-15 00:14:04 352
原创 MybatisPlus代码生成器配置
第一步:新建springboot项目第二步:引入相应的包,笔者用的freemarker,所以引入freemarker <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</arti...
2020-01-13 00:43:41 1325
原创 java - finally语句并非全部执行
java中的finally语句并非都会执行,当finally中出现异常的时候,异常后面的代码不会执行。所以在finally中尽量不要做太多的业务逻辑。实验代码 @Test void dotestFinally() { try { System.out.println("try"); } catch (Exception e)...
2020-01-09 22:34:06 400
原创 shardingsphere自定义分布式主键
实验环境springboot版本:2.2.2.RELEASEshardingsphere版本:4.0.0-RC3hutool版本:4.5.15(主要是借用里面的雪花算法生成id)shardingsphere自定义分布式主键,主键可以有很多种生成方式,这里只是方便,为了验证如何自定义主键而已,实际项目中可以根据需要定义主键,可以参考美团的分布式主键,并改造成适合自己业务的主键。...
2020-01-07 14:23:42 6561 1
原创 shardingsphere实现分库分表
实验环境springboot版本:2.2.2.RELEASEshardingsphere版本:4.0.0-RC3实验说明:数据库:demo_ds_0,demo_ds_1表user,分别在demo_ds_0,demo_ds_1各自建两张user表,user_1和user_2,两个库共四个表user表结构如下,自行改表名在两个库各执行一次即可。CREATE TABLE `...
2020-01-03 18:14:47 2033 1
原创 shardingsphere实现分表
实验环境springboot版本:2.2.2.RELEASEshardingsphere版本:4.0.0-RC3实验说明:数据库:demo_ds_master4张表,表结构一摸一样:user_0,user_1,user_2,user_3以下为user表的表结构,修改表名,为user_0,user_1,user_2,user_3然后在数据库中执行即可。CREATE TA...
2020-01-03 17:51:52 1586
原创 shardingsphere实现分库
实验环境springboot版本:2.2.2.RELEASEshardingsphere版本:4.0.0-RC3实验说明:数据库:demo_ds_0,demo_ds_1表user,分别在demo_ds_0,demo_ds_1各自建一张user表CREATE TABLE `user` ( `id` bigint(255) NOT NULL AUTO_INCREMENT,...
2020-01-03 12:41:06 1220 2
原创 shardingsphere实现数据库读写分离
实验环境:主数据库:userdb_master从数据库:userdb_slave0,userdb_slave1数据库各有一个表usershardingsphere版本:4.0.0-RC3实验没有实现数据库的主从同步,只是建了数据库叫从库。第一步:建立数据库表在userdb_master,userdb_slave0,userdb_slave1各建立一张表userCR...
2020-01-03 10:28:06 1711
easy-UI帮助文档
2015-09-13
boostrap压缩包
2015-09-13
使用exe4j生成程序后,出现了以下的错误,大伙看看怎么解决,谢谢哈
2015-01-07
使用exe4J出现以下问题,大伙看看问题在哪?谢谢
2015-01-07
在C#中如何获取网页的验证码链接地址
2014-08-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人