自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 记录一次生产jvm问题的排查

1、前援反馈页面有接口陆续出现请求超时2、登录后台服务器top命令查看发现java进程发生高cpu占用情况3、查看对应业务日志,报数据库连接等待超时-数据库连接池连接无空闲1、临时调大数据库连接池最大连接数限制,从20调整到502、重启服务,先保证业务可用。

2024-08-19 20:06:34 793

原创 记录一次mysql死锁问题的分析排查

分析一次生产的死锁问题,由于索引创建不得当加上mysql执行优化器的介入导致死锁,

2024-07-10 20:45:27 599

原创 jvm实战之-常用jvm命令的使用

jvm参与分析命令介绍,并结合实际场景分析,

2023-12-29 11:57:03 1664

原创 关于JVM内存模型的相关介绍与简单实战

简单介绍jvm的内存模型,并用一个简单的场景进行内存模型的调整

2023-12-21 17:15:44 920

原创 Nginx基础配置及场景应用

Nginx是一个高性能的HTTP和反向代理服务器。文章介绍了nginx的基础配置和列举几种场景进行介绍

2023-12-19 17:17:10 1090

原创 【elastic-job的使用】

elastic-job的使用elastic-job官网说明demo 演示引入maven配置添加spring.xml配置文件初始化注册任务的bean启动项处加入sring.xml的引用编写简易MySimpleJob执行效果elastice-job结合spring-batch实现分布式定时任务调度+处理框架构建思路功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创

2022-03-02 23:11:04 2989 1

原创 mybatis一对多,一对一使用场景

前提:建表语句CREATE TABLE `department` ( `id` varchar(16) NOT NULL, `department_name` varchar(16) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4CREATE TABLE `employee` ( `id` varchar(16) COLLATE utf8_unicode_520_ci NOT NULL,

2021-12-08 23:55:59 837

转载 @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

简述项目依赖全局异常处理类基础参数校验实体类控制类测试嵌套参数验证实体类控制类测试分组参数验证接口类实体类控制类测试@Valid和@Validated 区别简述@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束。@Validated作用在类、方法和参数上@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})

2021-09-13 23:27:56 338

原创 Better-Gateway 简单说明

Better-Gateway如何配置?Nacos 配置文件serveice-providers.json 服务提供商总配置[ { "code": "01", "name": "fc-service-system", "dataId": "provider-01-config.json", "domainName": "fc-service-system", "authMethod": "token", "authConfig": {

2021-03-02 14:16:05 650

原创 增强网关设计与使用

增强网关目的整合错误码,对外显示友好,对内便于快速定位问题记录出错请求,依照错误码制定处理策略设计状态码格式示例 E01001B002解析E 统一前缀,表明异常01 应用标识001 功能域B 错误类型002 错误码配置格式Better-Gateway 简单说明核心实现设计思路配置文件读取NacosClient 封装后的Nacos客户端,便于手动操作获取配置。NacosConfChangeHandler Nacos监听

2021-03-02 14:14:08 1296 2

原创 多线程操作Json对象踩坑分享

先来看3个问题你知道你常用的操作Json的对象是怎么实现的吗?多线程中操作json,进行put操作public class JsonShare { private static volatile AtomicInteger atomCount = new AtomicInteger(0); public static void main(String[] args) { int count = 0; final ExecutorServi

2021-03-02 14:12:07 2306

原创 缓存与分布式锁

缓存与分布式锁背景随着分布式架构的发展,集群部署成为必不可缺少的一部分,相比以往的单应用部署,复杂业务中衍生出诸多需要解决的问题,例如在分布式系统中,要解决分布式事务,在集群部署中,要解决分布式缓存和分布式锁等问题缓存(What)定义​ From WiKi缓存是在计算机上的一个原始数据的复制集,以便于访问(Why)为什么使用缓存对于用户:提升用户体验,加快访问速度,降低响应时间对于服务:提升系统性能,提高并发数量、吞吐量及资源利用率,减少DB及I/O过程,让DB更多的承担数据落盘工作(

2021-03-02 14:06:06 360

原创 常见异常的处理方式

1、java.lang.ClassNotFoundException怎么理解这个错误信息呢?我们知道java项目生成的jar文件实际上是class文件的集合。这个错误实际上是告诉我们class文件没找到。导致该问题的原因1)、在依赖导入中exclusion掉了这部分的依赖2)、java运行环境的jdk版本比class文件的编译版本低了导致3)、class文件的访问权限或者所在目录的访问权限有问题,导致java无法读这个文件4)、jar包有错误,查看jar是否有漏或者重新导入jar包...

2021-01-25 09:52:38 171

原创 列表查询优化,使用异步count和list提高执行效率

列表参数需继承 common 模块下的 pojo.ListQueryParam 创建参数实体,类名格式为 “模块列表 + QueryParam”,其属性除包含正常参数以外,还需以筛选条件为参考添加 xxxJoinFlag 标识,作为是否进行表连接标识,此标识在count语句时可以完全依赖,在信息查询语句时需考虑字段返回问题;@Datapublic class ListQueryParam { /** * 页码 */ private int pageNo = 1;.

2020-12-31 17:01:26 945 1

原创 linux环境常用工具安装

常用工具写在前面RPMLinux rpm 命令用于管理套件。rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。阿里巴巴开源镜像 https://developer.aliyun.com/mirror/RPM 仓库 htt

2020-12-31 16:39:50 375

原创 使用注解方式对前端参数进行合法性校验

1、创建对于参数校验的自定义注解import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.*;/** * 数据参数合法性注解 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documented@Constraint(validatedBy = DateValidator.cl

2020-12-18 14:38:25 811

原创 Java创建对象过程Jvm的内存分配及产生线程安全的原因

一、描述一个对象生成的过程虚拟机内存的分配情况图片描述:共享的区域有方法区和堆,虚拟机栈 和PC计数器为线程私有堆:是用来存放对象和数组,以及对象的成员变量方法区:将加载进来的class文件进行解析后,得到的方法代码,和一些常量存于此虚拟机栈:用于存放局部变量、但如果局部变量为对象,只会存放内存地址,具体也是存放在堆中。基本数据类型则直接存在虚拟机栈程序计数器:用于确认当前线程执行到哪一步使用例子解释java代码运行时具体各区说执行的工作// 创建一个对象public class Pers

2020-12-14 14:41:34 476

转载 使用JPA根据实体类生成数据库表

springboot数据库(一)-springboot-JPAJPA:springboot -jpa:数据库的一系列的定义数据持久化的标准的体系学习的目的是:利用springboot实现对数据库的操作第一步:添加springboot-data-jpa和数据库的依赖关系 org.springframework.boot spring-boot-starter-data-jpa <dependency> <gro

2020-12-09 16:33:31 2912

原创 jvm参数调整记录

【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。正例:在 linux 服务器上请通过变更/etc/sysctl.conf 文件去修改该缺省值(秒):net.ipv4.tcp_fin_timeout = 30阿里巴巴 Java 开发手册——禁止用于商业用途,违者必究.

2020-10-26 13:49:33 173

原创 开放本地数据库局域网共享

1:先进去我们的本地数据库 mysql -u root -p 进入我们的数据库,会提示让你输入密码,输入你本地的数据库密码,然后进入2:use mysql (自带的数据库) select host,user from user;3:你可以看到,每个帐号对应 的有一列host,这个就是允许登录的主机,如果host为%号,那么就是所有主机都可以登录,包括远程主机.我执行如下命令mysql>update user set host=’%’ where host=‘127.0.0.1’

2020-10-26 10:28:45 745 2

原创 gateway的作用

gateway介绍gateway相当于所有服务的门户,将客户端请求与服务端应用相分离,客户端请求通过gateway后由定义的路由和断言进行转发,路由代表需要转发请求的地址,断言相当于请求这些地址时所满足的条件,只有同时符合路由和断言才给予转发。一、鉴权我们在gateway服务定义了一组过滤器其图如下:在所有的客户端请求在经过gateway时,都会被拦截下来,并进行统一的权限判断处理,校验权限信息,如果不通过会返回指定结果,当然也可以在代码中定义指定的路径不受权限的控制。1、实现方式:通过实现G

2020-09-14 15:14:56 46310 4

原创 记录一次生产情况下出现mysql死锁

问题描述在生产中有两笔单子同时进行 ,一个是新增一个是修改操作,且这两个操作都通过spring添加了事务,由于死锁导致了新增的这笔单子新增失败导致回滚。解决思路1、先使用 >SHOW ENGINE INNODB STATUS 命令查看了mysql的最近一次死锁记录...

2020-09-10 11:19:54 270

原创 分布式日志系统解决方案

一、什么是PlumeLogPlumeLog 是一款无入侵的分布式日志系统基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志基于elasticsearch作为查询引擎.实现日志报错预警PlumeLog有什么优点效率高 免维护 搭建快高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护 无需修改老项目,引入直接开.

2020-09-09 18:22:54 2072

原创 函数命名技巧

1.变量名的命名可以用数据类型加变量名 如:intUserCount来表示类型2.

2020-09-08 23:25:32 245

原创 idea打开项目文件失效解决方法

问题描述出现问题:当idea打开文件时发现,idea无法正常识别maven项目,导致java文件夹置灰解决方法1、Flie >>>> Project Structure >>>> Modules2、删掉原先文件3、加入文件4、如果是maven项目需要再导入maven5、添加maven依赖7、打开项目的pom文件,有几个就加几个,等待依赖加载就可以了...

2020-09-03 17:52:28 3182

原创 检测服务器端口是否开放

window下:1、下载执行程序https://elifulkerson.com/projects/tcping.php下载tcping.exe 然后把下载好的工具放到电脑的C盘>Windows>System32 下cmd 打开后 输入 tcping 10.12.66.38 80

2020-09-02 16:05:55 465

原创 redis 五种数据类型的使用场景

1、String 类型,这种为最常见的key-value类型存储于redis,通常可用作存储token,在存储是key值最好带有":"冒号方便查找2、hash类型,相当于在redis中存储了一个hashMap集合,可用于一个key对应一个hash然后,一个hash又可以对应多个value,实现一个key对应多个属性,可以用于存储对象属性如JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); JedisPool jedisPoo

2020-09-01 15:24:03 664

原创 《重构改善既有代码的设计》读后感

1、类名、方法名与参数名都需要规划类名需要使用名词,方法名是动词结合,一个函数方法一次只做一件事,参数名应该符合文意。避免出现长函数,尽可能将函数分成小份。2、提取公共字段新出新的公共类方便统一维护3、参数过多传递时应该将参数封装成一个对象,便于传递4、...

2020-08-10 00:06:28 152

原创 springboot整合log4j2实现日志输出体系

实现步骤加入log4j2实现日志的打印与控制日志级别的输出1、导入log4j2的依赖包 <!-- log4j2 Begin --> <dependency> <!-- 引入log4j2依赖 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2

2020-08-06 10:43:32 973

原创 策略模式结合springboot开发

策略模式介绍策略模式是什么?策略模式是依赖接口多实现的一种设计模式,通一接口的方法通过不同的实现方式呈现接口的多态。策略模式中上下文对象,上下文对象封装了接口的具体实现,与一些逻辑,是提供服务与实际的服务底层逻辑相互分离。结合springboot实现策略模式1、创建公共接口类2、构建类去实现这个公共接口,实现类可以有多个3、构建上下文对象类,去封装实现的逻辑(可以通过注入的方式创建接口实现类)4、使用服务层调用该策略模式demo《锦郎妙计》1、创建公共接口类/** * 公共接口类,代

2020-08-04 16:27:58 641

原创 从乐观锁到JMM内存模型到缓存协议

概念1、乐观锁乐观锁是指在2、CAS (Compare And Swap 比较并且替换CAS是乐观锁的一种实现,是一种轻量级锁,其工作原理为:当需要修改某条数据是,先去对比该条数据是否与读的时候相同,如果不同则放弃修改,若相同则修改成功3、ABSABA是在CAS的时候为引发ABA,ABA是指在对比修改数据时会因为改数据被重复修改,但是最终仍然与最开始读的数据一致,此时CAS误认为该数据与读时相同,使得修改成功。原理图如下:实现...

2020-07-29 11:31:41 435

原创 进行sql优化,解决慢查询

1、定位慢查询语句(1)在筛选系统中慢语句可以执行以下方案:1,配置开启Linux:在mysql配置文件my.cnf中增加log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)long_query_time=2 (记录超过的时间,默认为10s)log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启

2020-07-27 16:55:56 1327

原创 Stream流的操作

1、去重(按集合对象里面的某个字段进行去重)根据ECreditCustomerInfoExtend对象里面的cardNo字段去重,然后获取新的集合List<ECreditCustomerInfoExtend> uniqList = customerInfos.stream().collect( Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Co

2020-07-27 13:38:51 311

转载 activiti工作流引擎(二)表结构及用处介绍

一、理解数据库表的命名Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。AC

2020-07-22 00:20:57 250

原创 activiti工作流引擎(一)搭建环境与部署

工作流引擎介绍工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现环境搭建IDEA开发工具下1、安装actiBPM插件2、导入工作流7.0版本依赖<dependencies> <dependency> <groupId>org.activiti</groupI

2020-07-20 00:07:38 1011 1

原创 事务失效的场景

引言@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种编程式事务是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例: try { t

2020-07-14 15:29:42 1997 1

原创 自定义注解与@ControllerAdvice实现列表数据脱敏

自定义注解与@ControllerAdvice实现列表数据脱敏一、自定义注解1、什么是自定义注解一、自定义注解1、什么是自定义注解(1) 自定义注解与类和接口的定义类似(2) 关键字为:@interface 但该自定义注解上方需要加上一些注解去说明该注解的使用范围与使用时间点,如下@Target注解表示该注解应该在方法上进行使用,@Retention注解表示该注解的作用时间在运行和编译时都起作用@Target(ElementType.METHOD)@Retention(RetentionPol

2020-07-08 22:11:33 1172

原创 使用DOM4J解析XML文件

DOM4J解析xml概念:以一切皆对象的原则将xml当成一个对象,在程序中对对象进行进行增删改查的操作即达到了对xml文件进行增删改查的操作。先讲述在建立好xml文件的基础上,对xml文件进行的操作创建xml文件,以eclipse为例,在src下 new>>other>>输入xml>>创建xml文件xml文件(Student.xml)代码片.&l...

2019-05-25 10:41:07 461

空空如也

空空如也

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

TA关注的人

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