自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Honins的博客

放低姿态,静心学习。

  • 博客(161)
  • 资源 (1)
  • 收藏
  • 关注

转载 JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack

2020-09-25 08:53:20 207

原创 列一下关于博客和学习的计划

关于博客几个月没有更新博客了,有一些读写提的问题也迟迟没有回复,深感抱歉。后续会积极回复问题、继续在CSDN上更新文章、也会搭建自己的博客网站。博客内容大概分为记录BUG、学习内容、实用操作,内容质量上也会有所提升,链接github等关于提升加强基础学习,今年内看完《JAVA编程思想》和《深入分析JAVA WEB技术内幕》,刷一下leetcode学习一个框架的源码,将学习过程以博客方式记录下来搭建完成一套完整的微服务架构...

2020-08-14 17:15:21 132

转载 JAVA架构学习路线

随着项目的发展,最近一直在怎么提示个人水平和设计项目架构,首先是代码设计中一定要注意的6大原则项目设计原则单一职责原则里氏替换原则依赖倒转原则接口隔离原则迪米特法则开闭原则发现下面讲的内容颇有道理,在这里记录一下,慢慢学习一、阅读源码程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多...

2019-08-08 16:36:51 367

原创 一个奇怪的bug,记录一下

问题发请求经过gateway都报500错误。有两条相关的错误日志[reactor-http-epoll-4] ERROR o.s.b.a.w.r.error.AbstractErrorWebExceptionHandler - [9667bcf8-59094591] 500 Server Error for HTTP GET "/yyw-pharmacy/verify/captcha?key=852639"java.lang.IllegalArgumentException: a header v

2022-03-28 16:46:41 3446 8

转载 maven 基础知识总结

maven 基础知识总结这里记录 maven 的基础知识,一方面巩固自己学到的知识,另一方面希望可以对有同样困惑的小伙伴提供一些帮助。一. maven 简介Maven 是一个项目管理工具,它包含了一个项目对象模型POM (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你

2021-07-26 12:46:39 862

原创 数据库报错:The user specified as a definer (‘xxx‘) does not exist

报错内容### Cause: java.sql.SQLException: The user specified as a definer ('xxx') does not exist; uncategorized SQLException; SQL state [HY000]; error code [1449]; The user specified as a definer ('xxx') does not exist; nested exception is java.sql.SQLExcept

2021-07-12 11:13:06 807

原创 Springboot项目 基于gitlab runner 实现CI/CD教程

Java项目 CI/CD的实现教程CI 是什么?CI 和 CD 有什么区别?缩略词 CI / CD 具有几个不同的含义。CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。持续交付通常是

2021-07-09 17:04:16 1168

转载 设计一个成功的微服务,堪称必备的9大基础知识

设计一个成功的微服务,堪称必备的9大基础知识人体是不同系统的组合,其中大多数系统是独立的,并且作为一个整体协同工作。每个系统都有自己的特定功能。所有具有多种其他支持框架的器官构成了一个功能完备的机构。现在,如果应用于软件系统,这就是微服务架构的概念。在技术方面,微服务系统允许开发单个功能模块。这种开发单一功能模块的趋势为大型和小型组织提高了灵活性,性能和成本效率,同时实现了持续测试和早期交付。但是,在我们深入研究微服务设计的基础知识之前,让我们先看看它的优点。微服务架构的优点对于单一体系结构,开发人

2021-06-25 09:52:53 175

转载 Linux 前后台进程切换

Linux 前后台进程切换当你用shell启动一个程序时,往往他是在前台工作的。 例如经常用PUTTY连接到远程服务器执行脚本的时候,如果本地网络中断后,这个时候前台进程就结束了,比较的懊恼,必须重新执行。因此有必要进行前后台进程的切换。例如直接在终端里输入firefox,那么会打开firefox,但当你关闭此终端或者ctrl+c强制终止时,firefox也随机关闭了。你可以在执行时后面加一个&,这样就在后台工作了。Shell支持作用控制,有以下命令:command & 让进程

2021-06-17 10:19:03 2643

原创 执行mvn install 报错 source-1.5 中不支持 diamond运算符

问题原因:很明显可以看出是maven打包时未指定jdk版本,默认使用1.5,代码中有更高级jdk的api。所有打包失败解决办法:网上有很多文章说 pom.xml 文件的maven-compiler-plugin中添加 配置。测试无效亲测可行的配置方式是pom.xml中添加 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

2021-06-16 12:46:27 221

转载 centos6 yum失效的解决办法

备份先备份源文件:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-backup更换新源在ssh界面执行以下命令即可一键更换yum源为CentOS的Vault源(包括CentOS官方和阿里云的源):wget -O /etc/yum.repos.d/CentOS-Base.repo http://files.tttidc.com/centos6/Centos-6.repowget -O /etc/yum.re

2021-06-09 13:52:27 348

原创 gateway简介和灰度发布实现方案

gateway简介和灰度发布实现方案gateway介绍官方文档:https://docs.spring.io/spring-cloud-gateway/docs/2.2.8.RELEASE/reference/html/#gateway-starter网关请求处理过程客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。此处理程序运行通过特定于请求的过滤器链发送请求。滤波器被虚线划分的原因是滤波器可以在发送代理请求之

2021-06-03 11:01:55 2778 2

转载 常用 Maven 命令

常用 Maven 命令maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下,-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;-P 指定 Profile 配置,可以用于区分环境;-e 显示maven运行出错的信息;-o 离线执行命令,即不去远程仓库更新包;-X 显示maven允许的debug信息;-U 强制去远程更新snapshot的插件或

2021-05-26 14:53:41 243

转载 全面分析由浅入深解析Mysql索引底层原理

前言索引是SQL优化中最重要的手段之一,本文从基础到原理,带你深度掌握索引。https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f56c98ca-6974-43c7-90e0-faac1c43a2de/6c9bfe165fc1459890a303f074638fb0tplv-k3u1fbpfcp-watermark.image一、索引基础1、什么是索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数

2021-05-26 11:14:43 233

转载 线上问题排查常用命令

内存瓶颈freefree是查看内存使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。free -h -s 3表示每隔三秒输出一次内存情况,命令如下[1014154@cc69dd4c5-4tdb5 ~]$ free total used free shared buff/cache availableMem: 119623656 43052220 45611364 4313760

2021-04-15 09:05:22 735

原创 jvm 性能调优工具之 jstat

jstat介绍jstat 用法# jstat -helpUsage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]Definitions: <option> An option reported by the -options option <vmid>

2021-03-29 11:28:48 173

转载 jvm 性能调优工具之 jmap

概述命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。jmap 用法参数:option: 选项参数。pid: 需要打印配置信息的进程ID。executable: 产生核心dump的Java可执行文件。core: 需要打印配置信息的核心文件。server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。remote ser

2021-03-28 13:05:19 364

原创 Web服务不停机更新和灰度发布方案

文章目录Web服务不停机更新和灰度发布方案当前情况方案一 负载均衡:问题:方案二 灰度发布:用IF指令实现根据来源ip做判断根据cookie做判断使用lua写脚本实现使用nginx+lua实现web项目的灰度发布Web服务不停机更新和灰度发布方案当前情况Web服务需要改造成使用jwt登陆访问。因此可以使用nginx进行不停机更新。方案一 负载均衡:将新版本另起一个端口,nginx中配置负载均衡,并反向代理到新旧两个服务。若新服务功能正常,则可关闭旧版本,只使用新版本。配置如图:http {

2021-03-26 17:22:22 2642

原创 Markdown中使用plantuml的探索

问题由于我经常使用Typora写文档,文档中经常需要插入uml图。这样操作起来并不方便,能否直接在Typora上画uml图呢?经过查找之后,发现了一些方法记录一下。解决方案http://www.gravizo.com/这个网站提供了解决方案,但Typora中不是所有方法都支持。经过测试,可以达到如下效果:流程图<img src='https://g.gravizo.com/svg? digraph G { 前端请求-> nginx; nginx -> 旧

2021-03-26 15:25:31 9123 9

原创 看spring源码时,在mysql-connector包发现了一行有点意思的代码

在包 com.mysql.jdbc下,ConnectionImpl类中execSQL 方法中this.lastQueryFinishedTime = 0; // we're busy!注释 we’re busy这里探究一下,为啥开发人员要加这么一句话。

2021-03-23 17:38:09 227

转载 Java异常体系

总体结构通过jdk文档 https://docs.oracle.com/javase/8/docs/api/,我可了解jdk这样设计的意图The Throwable class is the superclass of all errors and exceptions in the Java language. Only objects that are instances of this class (or one of its subclasses) are thrown by the Jav

2021-03-23 14:57:59 123

原创 Spring事务介绍和几种失效原因

Spring事务介绍和失效原因介绍Transaction事务管理方式在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理: 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目

2021-03-23 13:45:35 404

原创 使用minikube安装k8s

官方文档https://kubernetes.io/zh/docs/tutorials/前置工作安装dockerhttps://docs.docker.com/engine/install/centos/要注意的是配置国内镜像加速,配置方法编辑docker的daemon,没有则新建文件vim /etc/docker/daemon.json内容为{ "registry-mirrors" : [ "https://docker.mirrors.ustc.edu.cn", "h

2021-02-25 11:39:29 424 2

原创 minikube start命令的国内使用方法

问题我们可以使用官方提供的 minikube 安装单机版的k8s,查看文档 https://minikube.sigs.k8s.io/docs/start/,在执行 minikube start 命令时会有如下报错[minikube@localhost docker]$ minikube start * minikube v1.17.1 on Centos 7.9.2009* Automatically selected the docker driver* Starting control pl

2021-02-25 09:20:49 13340 8

原创 flowable-6.6.0 Springboot方式实现的 Getting start示例demo

flowable-6.6.0 Springboot方式实现的 Getting start示例demodemo已放至github,欢迎star官方文档地址首先发个flowable和activiti的选型对比核心是下面这个类,其他的文档讲的很清楚package com.example.flow.service;import org.flowable.engine.*;import org.flowable.engine.repository.Deployment;import org.fl

2021-01-15 11:04:09 542

转载 7 个建议让 Code Review 高效又高质

阿里妹导读:Code Review(CR) 的本质是什么?是为了查错?还是为了 KPI?本文分享阿里资深技术专家的看法:CR 是一种关于社会学的长期行为和组织文化,通过 CR,形成一种良性互动的技术氛围,传播和分享知识,提升代码质量,并给出了 7 个提高 CR 效率和质量的实践建议。关于代码评审(Code Review)的文章也算是汗牛充栋了,代码评审也已经是许多组织的标准化实践。不过,许多团队在尝试代码评审实践时,却有如下疑问:“政治正确” 的代码评审活动究竟有没有达到期望的实际效果?给了我一大.

2020-12-31 09:46:23 280

转载 一位架构师的感悟:过度忙碌使你落后

我踩过的坑,希望大家不用再踩。到现在我工作 17 年了, 担任架构师的职位也超过了 10 年,担任过像 HP、Amazon 这样的世界级团队的架构师,也担任过像汇量科技这样快速成长的中小企业的技术领导。应 InfoQ 邀请分享一下我的工作感悟,分享内容部分来自成功总结,更多是来自失败的反思,希望我踩过的坑大家可以不用再踩。“提出问题”难于“解决问题”作为技术人员,我们已经习惯于作为问题的解决者给出设计方案,而很少以问题提出者的身份去思考设计方案。团队中常见的典型矛盾,就是产品团队和研发团队之间的矛盾。

2020-12-29 13:01:54 231

转载 Linux系统系统盘扩容,亲测可用

在Linux学习过程中,可能会遇到根目录存储空间不足的问题,这时候如果只是新增一块硬盘并挂载到某个目录上,还需要将数据转移至新的硬盘中才能缓解存储压力。这种操作未免有些繁琐,那可不可以直接对根目录进行扩容呢?当然是可以的,接下来就给大家介绍操作步骤:实验环境:RHEL7系统(默认已部署LVM)、VMware Workstation 12虚拟软件第1步:给虚拟机新增一块20GB的硬盘第2步:查看系统盘的分区类型,最后记得输入q不保存退出[root@linuxprobe ~]# fdisk /dev/s

2020-12-14 09:42:00 4589 2

原创 消息中间件RabbitMQ 的入门与选型

消息中间件MQ文中代码已放至 github介绍和选型消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。关于各个组件的详细介绍和比较可看以下参考资料:java消息队列MQMQ框架的比较多维度对比5款主流分布式MQ消息队列,妈妈再也不担心我的技术选型了

2020-11-24 13:26:28 335

转载 在阿里,我如何做好技术项目管理?

在阿里,我如何做好技术项目管理?阿里妹导读:在技术公司、尤其是互联网公司,技术人员作为PM(项目经理)是非常常见的。有些同学得心应手,有条不紊,能得到清晰稳定的预期结果;有些同学则在过程中遇到各种闹心的事,最后不是项目上不了线,就是带着问题或各种人员的不满硬上。当然这两种都是比较极端的结果。理性思考下,这里面有没有规律在?今天,阿里高级开发专家墨玖和你聊聊,如何做好一个技术项目的 PM。目标分析对于任何事情要有清晰的目标才能精确把握,如何做好一个技术项目的PM?首先我们看到这里面目标最起码应该是:

2020-11-09 15:01:13 137

原创 1024凑个热闹

顺便领个徽章

2020-10-24 23:25:43 107

转载 centos7 文件搜索、文件内容搜索、管道

1、文件搜索find 可以找到你想要的文件格式: find [目录] [选项] [选项值]目录:去哪找,可以不写,默认代表当前目录选项:怎么找 >> -name 按照名字找 可以使用通配符 -size 按照大小找 单位为 kmg 10k(等于10k) +10k(大于10k) -10k(小于10k) -user 按照用户名 -group 按照组名 -maxdepth -minde

2020-10-22 10:22:56 1928

原创 java 获得文件MD5值的流程

最近在研究怎么实现上传文件的去重目前思路是:先计算文件md5值并保存,上传文件时判断该文件的md5是否已存在,若不存在则跳过上传过程随后研究了下java获得文件MD5值的流程,如图

2020-10-16 16:30:52 566

转载 Java如何支持函数式编程?

背景在很长的一段时间里,Java一直是面向对象的语言,一切皆对象,如果想要调用一个函数,函数必须属于一个类或对象,然后在使用类或对象进行调用。但是在其它的编程语言中,如JS、C++,我们可以直接写一个函数,然后在需要的时候进行调用,既可以说是面向对象编程,也可以说是函数式编程。从功能上来看,面向对象编程没什么不好的地方,但是从开发的角度来看,面向对象编程会多写很多可能是重复的代码行。比如创建一个Runnable的匿名类的时候:Runnable runnable = new Runnable() {

2020-09-25 08:43:19 238

原创 记一次因lombok升级引起的反序列化失败的bug

记一次因lombok升级引起的反序列化失败的bug问题出现:更新项目后,发现原来正常的接口报错,调试发现了报错信息为 json反序列化异常no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)字符串转换对象Area 失败,该对象上添加了lom

2020-05-15 13:09:00 2287

原创 配置springboot实现Java VisualVM远程JMX连接

配置springboot实现Java VisualVM远程JMX连接

2020-04-29 10:10:17 2748 5

原创 记一次因HttpClient引起的定时任务运行失效的异常

记一次因HttpClient引起的定时任务运行失效的异常问题出现:解决过程:第一次修复第二次修复总结:问题出现:项目中有一个业务:有三个定时任务,任务功能是第三方接口发送Http请求,定时任务设定为10分钟一次,随后发现这三个定时任务会在上午10点多停止运行一个多小时甚至更久。解决过程:第一次修复考虑到之前是30分钟执行一次任务,现在是10分钟一次,可能会有并发问题。随后检查代码发现每次...

2020-03-23 16:41:45 952

转载 Tomcat配置与优化(内存、并发、管理)与性能监控

一、JVM内存配置优化在开发当中,当一个项目比较大时,依赖的jar包通常比较多,我们都知道,在应用服务器启动时,会将应用引用到的所有类通过ClassLoader依次全部加载到内存当中。Java的逻辑内存模型大致分为堆内存、栈内存、静态内存区,也称持久区,该区的内存不会被GC回收。堆内存用于存储类的实例、数组等引用类型数据,也就是用new生成的对象,都存放在这里,栈内存存储局部变量(如:方法参数)...

2020-02-14 17:10:38 384

转载 CentOS详解top命令各个数据的含义(各行数据详细解释和内存数据分析)

最近在docker(宿主机是centos虚拟机)里安装gitlab,发现随着时间的运行,虚拟机的内存持续走高,运行几个小时之后内存已经爆掉了,putty远程处理于假死状态。这个时候就需要查看内存进程,发现有10多个ruby进程在运行,最终定位到docker容器的问题。使用到的指令:查看内存使用情况$ free -m$ top //shift+m按内存占用比排序清理内存(效果不是很理想...

2020-02-14 14:50:16 1160

转载 SpringBoot 异步输出 Logback 日志

一、介绍LogbackLogback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logginglogback-access:访问模块与Servlet容器集成提供通过...

2019-12-10 14:42:31 1431

log4j配置文件及jar包

直接导入jar包,配置文件直接放在src目录下即可。

2017-07-06

空空如也

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

TA关注的人

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