自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 问答 (3)
  • 收藏
  • 关注

原创 小学生都会的gitlab的git回滚操作

小学生都会的gitlab的git回滚操作

2022-05-14 23:44:01 7832

原创 手写http-sdk

手写http方式-sdk

2022-05-14 23:00:53 2026

原创 一文带你入坑全链路监控,skywalking

一,APM概念介绍APM(Application Performance Management)对应用程序性能和可用性的监控管理系统。它主要有这三个方面的内容,分别是 Logs(日志)、 Traces(链路追踪)和 Metrics(报表统计)。简单描述就是通过各种探针采集并上报数据,收集关键指标,同时搭配数据展示以实现对应用程序性能管理和故障管理的系统化解决方案。二,全链路监控特点1,低侵入性监控系统应尽可能减少对业务系统的侵入,保持对使用方的透明性,减少开发人员的负担,降低接入门槛和难度。

2021-05-16 15:01:06 2786 2

原创 ThreadLocal 存储的线程变量不能在父子线程中传递解决方案

问题描述:ThreadLocal 存储的线程变量不能在父子线程中传递项目中,我们经常会用ThreadLocal来存储线程变量,方便后续业务操作的获取。但是如果后续业务中又重新新开线程去处理业务的时候,ThreadLocal不能正常获取到存储的线程变量。也就是线程变量不能在父子线程中传递。JDK提供的解决方案InheritableThreadLocal:InheritableThreadLocal是jdk自带的提供父子线程传递的实现类。InheritableThreadLocal实现的原.

2021-05-04 15:57:29 581 1

原创 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 1631 1

原创 基于spring提供的反射工具类,实现通用重试功能

基于spring提供的反射工具类,实现通用重试功能一,背景:项目中有需要重试的场景:失败后,记下重试的类名,方法名和参数到数据库。后续通过定时任务扫描,重试。二,代码实现特意写了一个反射的工具类,只要传入需要执行的类名和方法名和参数即可通过反射执行该方法。1,反射工具类@Componentpublic class SpringReflectionUtil { @Resource private ApplicationContext applicati..

2021-05-02 00:07:13 477

原创 钉钉消息结合链路监控在项目中的应用

第一步:拉一个钉钉群,然后添加一个机器人,获取发送权限添加完成后,会返回发送的地址链接:https://oapi.dingtalk.com/robot/send?access_token=xxxx注意点:发送内容必须含有自定义关键词,才能发送成功第二步:编写发送钉钉消息代码注意点:content中必须含有 第一步设置的关键词 “告警” 两个字否则发送不成功。@Component@Slf4jpublic class DingDingHelper ...

2021-03-28 22:40:06 296

原创 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 1386

原创 线程池问题解读

线上同事写的线程池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 224

原创 本地微服务注册上eureka问题解决方案

一,问题背景:微服务改造后,组内服务调用采用feign接口调用。经常发现调其他组feign接口莫名的报错,时好时坏,干扰开发进度。导致时好时坏的原因是:开发人员本地启动的时候是连接开发环境,并且默认将本机启动的服务注册到eureka,导致当请求分发到开发人员本机的时候,因为网络不通出现异常,分发到开发环境的服务器就请求正常。二,解决方案:第一步:配置中心配置配置参数如下:代表不注册上eurekaeureka.client.register-with-eureka = false

2021-03-13 15:56:10 3305 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 18662

原创 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 2329

原创 微信小程序码生成踩的坑

小程序码生成开发者文档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 461

原创 visualvm 安装Gc可视化插件

第一步打开 工具-》插件第二步安装安装完后重启即可效果如下如果遇到错误第一步:检查自己电脑jdk版本第二步:打开这个网址http://visualvm.github.io/pluginscenters.html第三步:选择自己jdk对应的版本,然后复制链接第四步:将第三步复制的链接,复制到下图所示位置...

2020-08-01 11:34:02 333

原创 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 208

原创 mq使用不当,造成生产线上环境的服务奔溃问题记录

案例描述:线上采用canel监听A表的status状态变化,只要有变化就通过mq发送消息到对应的消费者端处理。消费者端的程序代码这样子写(因涉及公司业务,这里只是举个大致的代码示例)代码大致的思路就是,监听队列QUEUE_B,然后消费发送到QUEUE_B的消息,如果消费过程中发生异常,就将消息重新发回队列中去。一开始上线这个功能是正常的,因为doSomeThing业务里面没有任何异常,消息能够被正常消费。后来某个版本上线后,突然有一天晚上,发现线上的服务,大部分宕机,监控短信响个不停。

2020-07-05 19:43:21 803

原创 教你写个最简单的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 20153 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 581

原创 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 875

原创 在阿里云,使用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 2618 3

原创 线上订单数据导出功能优化历程分析和演示

背景:订单导出功能,因公司业务需要,订单导出的字段,需要关联15张表。优化历程:问题1:一开始用poi,出现过线上内存溢出的问题,解决问题1:后通过加大内存,改用占用内存量小的工具easypoi,后来没出现过内存溢出问题。问题2.:导出一个3000条数据的excel,经常超时。导致excel无法正常下载。解决问题 2:原因是导出耗时比较久,出现超时的情况,这个时候把导出功能...

2020-05-02 12:01:18 932

原创 mysql死锁演示

背景:线上日志突然爆了有数据库死锁的日志。通过以下语句查询数据库死锁的日志SHOW ENGINE INNODB STATUS通过 日志分析,看到了两条update语句并且是里面有子查询。还有两个表的更新顺序问题。解决方案是:加了分布式锁,让两个update语句放到一起执行,然后再调整两个update语句里面的子查询。得出的结论是:不要在update语句里面写子查询。...

2020-04-16 14:58:55 402

原创 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 689

原创 -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 31464 2

原创 记录logback日志相对路径问题

问题:项目成员将其设置成这样子,本意是在运行目录生成日志文件,结果日志一直没有打印出来。解决方案:按以下三种方案皆可以正常生成日志文件。文件保存路径设置可分以下三种:第一种:表示保存到程序运行目录,即为上图问题的解决方案,这种为相对路径第二种:使用绝对路径第三种:运行程序的父级目录...

2020-02-23 23:09:04 2944 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 160

原创 jvm内存溢出问题排查演示

实验环境:cenos7实验代码不停的new对象加入list中//list放到类成员变量 // 如果放到方法里面,方法结束后会,当内存不够,会触发gc,且list可被回收,不会造成内存泄露问题。 List<User> userlist = new ArrayList<>(); public void getUserList() { ...

2020-02-06 15:49:54 819

原创 jvm,导致cpu过高问题和排查演示

实验环境:cenos7实验代码模拟一段死循环的代码/** * 死循环Map测试 * 解决死循环问题:因为dataMap为空的时候,iterator.next()一直没有被调用到,就会导致死循环 */ public Map<String, Object> deadIterator() { Map<String, ...

2020-02-06 11:53:40 674

原创 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 3600

原创 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 717

原创 spring事务@Transactional(readOnly = true)及隔离级别实验

先写结论:第一:@Transactional(readOnly = true)1.那么方法里面,必须是读的操作,当有写的操作的时候会报错提示。2.读到的数据,从进入方法开始,以后即使其他客户端修改了数据,读到的数据还是进入方法那刻的数据。即不会去读取更新的数据。第二:不指定事务,即不加@Transactional1.那么读到的数据,都是数据库最新的数据。第三:@Transactional...

2020-01-19 17:58:04 3121

原创 springboot日志文件不生产问题

当指定了日志文件logback-spring.xml,发现项目启动的时候,不生产日志解决方案:在yml中指定本工程具体的日志文件logging: config: classpath:logback-spring.xml如果还是不产生日志文件的话:指定磁盘上具体的目录即可(即把下图红圈部分,改成具体的磁盘目录)...

2020-01-17 16:21:43 3571 1

原创 Spring声明式事务和编程式事务简谈

spring有两种事务类型一种是声明式事务通过aop切面配置或者通过在类或者方法上加上@Transactional声明式事务作用于方法或者类,范围比较大。举例,当方法没退出的时候,数据库连接数不会释放,当调用第三方接口时,会存在很大的问题。容易导致连接数被占满。可以将数据库连接数最大设置为2,且连接超时时间设置较短来验证。 @Transactional publi...

2020-01-15 00:14:04 330

原创 MybatisPlus代码生成器配置

第一步:新建springboot项目第二步:引入相应的包,笔者用的freemarker,所以引入freemarker <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</arti...

2020-01-13 00:43:41 1276

原创 java - finally语句并非全部执行

java中的finally语句并非都会执行,当finally中出现异常的时候,异常后面的代码不会执行。所以在finally中尽量不要做太多的业务逻辑。实验代码 @Test void dotestFinally() { try { System.out.println("try"); } catch (Exception e)...

2020-01-09 22:34:06 348

原创 shardingsphere自定义分布式主键

实验环境springboot版本:2.2.2.RELEASEshardingsphere版本:4.0.0-RC3hutool版本:4.5.15(主要是借用里面的雪花算法生成id)shardingsphere自定义分布式主键,主键可以有很多种生成方式,这里只是方便,为了验证如何自定义主键而已,实际项目中可以根据需要定义主键,可以参考美团的分布式主键,并改造成适合自己业务的主键。...

2020-01-07 14:23:42 6444 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 1956 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 1550

原创 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 1177 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 1659

easy-UI帮助文档

jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。jQuery EasyUI为我们提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,validatebox,datagrid,window,tree等等。jQuery EasyUI是基于JQuery的一个前台ui界面的插件,功能相对没extjs强大,但页面也是相当好看的。一些功能也足够开发者使用,相对于extjs更轻量。

2015-09-13

boostrap压缩包

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。

2015-09-13

ajax教程.chm

ajax不是一种新的编程语言,而是一种全新的编程模式,用于异步通信,局部刷新。

2015-08-01

MySQL5文档.chm

用于MySQL的学习和查询,方便你们对数据库的了解。

2015-08-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除