- 博客(38)
- 收藏
- 关注
原创 记录一次生产jvm问题的排查
1、前援反馈页面有接口陆续出现请求超时2、登录后台服务器top命令查看发现java进程发生高cpu占用情况3、查看对应业务日志,报数据库连接等待超时-数据库连接池连接无空闲1、临时调大数据库连接池最大连接数限制,从20调整到502、重启服务,先保证业务可用。
2024-08-19 20:06:34 804
原创 【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 2999 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 851
转载 @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated
简述项目依赖全局异常处理类基础参数校验实体类控制类测试嵌套参数验证实体类控制类测试分组参数验证接口类实体类控制类测试@Valid和@Validated 区别简述@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束。@Validated作用在类、方法和参数上@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})
2021-09-13 23:27:56 348
原创 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 664
原创 增强网关设计与使用
增强网关目的整合错误码,对外显示友好,对内便于快速定位问题记录出错请求,依照错误码制定处理策略设计状态码格式示例 E01001B002解析E 统一前缀,表明异常01 应用标识001 功能域B 错误类型002 错误码配置格式Better-Gateway 简单说明核心实现设计思路配置文件读取NacosClient 封装后的Nacos客户端,便于手动操作获取配置。NacosConfChangeHandler Nacos监听
2021-03-02 14:14:08 1326 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 2343
原创 缓存与分布式锁
缓存与分布式锁背景随着分布式架构的发展,集群部署成为必不可缺少的一部分,相比以往的单应用部署,复杂业务中衍生出诸多需要解决的问题,例如在分布式系统中,要解决分布式事务,在集群部署中,要解决分布式缓存和分布式锁等问题缓存(What)定义 From WiKi缓存是在计算机上的一个原始数据的复制集,以便于访问(Why)为什么使用缓存对于用户:提升用户体验,加快访问速度,降低响应时间对于服务:提升系统性能,提高并发数量、吞吐量及资源利用率,减少DB及I/O过程,让DB更多的承担数据落盘工作(
2021-03-02 14:06:06 371
原创 常见异常的处理方式
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 183
原创 列表查询优化,使用异步count和list提高执行效率
列表参数需继承 common 模块下的 pojo.ListQueryParam 创建参数实体,类名格式为 “模块列表 + QueryParam”,其属性除包含正常参数以外,还需以筛选条件为参考添加 xxxJoinFlag 标识,作为是否进行表连接标识,此标识在count语句时可以完全依赖,在信息查询语句时需考虑字段返回问题;@Datapublic class ListQueryParam { /** * 页码 */ private int pageNo = 1;.
2020-12-31 17:01:26 968 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 385
原创 使用注解方式对前端参数进行合法性校验
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 823
原创 Java创建对象过程Jvm的内存分配及产生线程安全的原因
一、描述一个对象生成的过程虚拟机内存的分配情况图片描述:共享的区域有方法区和堆,虚拟机栈 和PC计数器为线程私有堆:是用来存放对象和数组,以及对象的成员变量方法区:将加载进来的class文件进行解析后,得到的方法代码,和一些常量存于此虚拟机栈:用于存放局部变量、但如果局部变量为对象,只会存放内存地址,具体也是存放在堆中。基本数据类型则直接存在虚拟机栈程序计数器:用于确认当前线程执行到哪一步使用例子解释java代码运行时具体各区说执行的工作// 创建一个对象public class Pers
2020-12-14 14:41:34 485
转载 使用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 2953
原创 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 181
原创 开放本地数据库局域网共享
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 768 2
原创 gateway的作用
gateway介绍gateway相当于所有服务的门户,将客户端请求与服务端应用相分离,客户端请求通过gateway后由定义的路由和断言进行转发,路由代表需要转发请求的地址,断言相当于请求这些地址时所满足的条件,只有同时符合路由和断言才给予转发。一、鉴权我们在gateway服务定义了一组过滤器其图如下:在所有的客户端请求在经过gateway时,都会被拦截下来,并进行统一的权限判断处理,校验权限信息,如果不通过会返回指定结果,当然也可以在代码中定义指定的路径不受权限的控制。1、实现方式:通过实现G
2020-09-14 15:14:56 47138 4
原创 记录一次生产情况下出现mysql死锁
问题描述在生产中有两笔单子同时进行 ,一个是新增一个是修改操作,且这两个操作都通过spring添加了事务,由于死锁导致了新增的这笔单子新增失败导致回滚。解决思路1、先使用 >SHOW ENGINE INNODB STATUS 命令查看了mysql的最近一次死锁记录...
2020-09-10 11:19:54 282
原创 分布式日志系统解决方案
一、什么是PlumeLogPlumeLog 是一款无入侵的分布式日志系统基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志基于elasticsearch作为查询引擎.实现日志报错预警PlumeLog有什么优点效率高 免维护 搭建快高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护 无需修改老项目,引入直接开.
2020-09-09 18:22:54 2094
原创 idea打开项目文件失效解决方法
问题描述出现问题:当idea打开文件时发现,idea无法正常识别maven项目,导致java文件夹置灰解决方法1、Flie >>>> Project Structure >>>> Modules2、删掉原先文件3、加入文件4、如果是maven项目需要再导入maven5、添加maven依赖7、打开项目的pom文件,有几个就加几个,等待依赖加载就可以了...
2020-09-03 17:52:28 3200
原创 检测服务器端口是否开放
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 479
原创 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 689
原创 《重构改善既有代码的设计》读后感
1、类名、方法名与参数名都需要规划类名需要使用名词,方法名是动词结合,一个函数方法一次只做一件事,参数名应该符合文意。避免出现长函数,尽可能将函数分成小份。2、提取公共字段新出新的公共类方便统一维护3、参数过多传递时应该将参数封装成一个对象,便于传递4、...
2020-08-10 00:06:28 163
原创 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 987
原创 策略模式结合springboot开发
策略模式介绍策略模式是什么?策略模式是依赖接口多实现的一种设计模式,通一接口的方法通过不同的实现方式呈现接口的多态。策略模式中上下文对象,上下文对象封装了接口的具体实现,与一些逻辑,是提供服务与实际的服务底层逻辑相互分离。结合springboot实现策略模式1、创建公共接口类2、构建类去实现这个公共接口,实现类可以有多个3、构建上下文对象类,去封装实现的逻辑(可以通过注入的方式创建接口实现类)4、使用服务层调用该策略模式demo《锦郎妙计》1、创建公共接口类/** * 公共接口类,代
2020-08-04 16:27:58 651
原创 从乐观锁到JMM内存模型到缓存协议
概念1、乐观锁乐观锁是指在2、CAS (Compare And Swap 比较并且替换CAS是乐观锁的一种实现,是一种轻量级锁,其工作原理为:当需要修改某条数据是,先去对比该条数据是否与读的时候相同,如果不同则放弃修改,若相同则修改成功3、ABSABA是在CAS的时候为引发ABA,ABA是指在对比修改数据时会因为改数据被重复修改,但是最终仍然与最开始读的数据一致,此时CAS误认为该数据与读时相同,使得修改成功。原理图如下:实现...
2020-07-29 11:31:41 445
原创 进行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 1339
原创 Stream流的操作
1、去重(按集合对象里面的某个字段进行去重)根据ECreditCustomerInfoExtend对象里面的cardNo字段去重,然后获取新的集合List<ECreditCustomerInfoExtend> uniqList = customerInfos.stream().collect( Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Co
2020-07-27 13:38:51 342
转载 activiti工作流引擎(二)表结构及用处介绍
一、理解数据库表的命名Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。AC
2020-07-22 00:20:57 262
原创 activiti工作流引擎(一)搭建环境与部署
工作流引擎介绍工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现环境搭建IDEA开发工具下1、安装actiBPM插件2、导入工作流7.0版本依赖<dependencies> <dependency> <groupId>org.activiti</groupI
2020-07-20 00:07:38 1022 1
原创 事务失效的场景
引言@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种编程式事务是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例: try { t
2020-07-14 15:29:42 2078 1
原创 自定义注解与@ControllerAdvice实现列表数据脱敏
自定义注解与@ControllerAdvice实现列表数据脱敏一、自定义注解1、什么是自定义注解一、自定义注解1、什么是自定义注解(1) 自定义注解与类和接口的定义类似(2) 关键字为:@interface 但该自定义注解上方需要加上一些注解去说明该注解的使用范围与使用时间点,如下@Target注解表示该注解应该在方法上进行使用,@Retention注解表示该注解的作用时间在运行和编译时都起作用@Target(ElementType.METHOD)@Retention(RetentionPol
2020-07-08 22:11:33 1183
原创 使用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 475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人