Java
文章平均质量分 56
水桶前辈
爱旅行爱生活喜欢西藏的蓝天白云
展开
-
Mysql 中 RC、RR隔离级别的原理及区别
总结∶在RC隔离级别下,是每个快照读都会生成并获取最新的Read View,而在RR隔离级别下,则是同一个事务中的第一个快照读才会创建Read View,之后的快照读获取的都是同一个Read View。2)、在RR级别下,快照读生成ReadView时,Read View会记录此时所有其他活跃事务的快照,这些事务的修改对于当前事务都不可见的, 而早于Read View创建的事务所做的修改均是可见。二、实验对比 RR、RC的区别:采用mysql 5.6之后的版本。另外,更新一条数据的操作也可以演示此效果!转载 2023-02-12 17:13:10 · 790 阅读 · 0 评论 -
实战总结,18种接口优化方案的总结
18种 接口 优化方案的总结转载 2022-12-16 12:15:37 · 218 阅读 · 0 评论 -
慢查询优化,filesort详细解析
慢查询优化,filesort详细解析转载 2022-12-05 10:56:24 · 2368 阅读 · 0 评论 -
MybatisX快速开发插件模版扩展
mybatis 生成代码插件,扩展模版原创 2022-08-02 16:40:01 · 996 阅读 · 3 评论 -
Spring Boot 优雅配置多数据源
大约在19年的这个时候,老同事公司在做医疗系统,需要和HIS系统对接一些信息,比如患者、医护、医嘱、科室等信息。但是起初并不知道如何与HIS无缝对接,于是向我取经。最终经过讨论采用了视图对接的方式,大致就是HIS系统提供视图,他们进行对接。什么是多数据源?最常见的单一应用中最多涉及到一个数据库,即是一个数据源(Datasource)。那么顾名思义,多数据源就是在一个单一应用中涉及到了两个及以上的数据库了。其实在配置数据源的时候就已经很明确这个定义了,如以下代码:@Bean(name =转载 2022-05-18 15:08:22 · 727 阅读 · 1 评论 -
SpringBoot 启动时自动执行代码的几种方式
一 目录 前言 java自身的启动时加载方式 Spring启动时加载方式 代码测试 总结 二 前言目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现。当然也可以去实现Spring的ApplicationRunner与CommandLineRun转载 2022-05-10 20:31:34 · 167 阅读 · 0 评论 -
Spring事务监听管理器TransactionSynchronizationManager的使用
1. Spring 提供了事务同步管理器让我们能监听Spring的事务操作,这个可以获取到当前是否存在事务。TransactionSynchronizationManager.isSynchronizationActive()2. 这是注册一个监听器,需要传入一个对象TransactionSynchronizationTransactionSynchronizationManager.registerSynchronization()他有两个方法,一个是事务提交后执行,一个是事务完成原创 2022-04-12 14:04:40 · 4200 阅读 · 0 评论 -
Docker打包发布
一. 什么是docker?docker 是一个开源的应用容器引擎,是一个用于开发,交付和运行应用程序的开放平台。1. 解决了环境配置问题2.docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。3.容器是完全使用沙箱机制,相互之间不会有任何接口二. docker 的优点?1. 快速交付产品,快速部署应用. 就能够将现有的应用部署到其它机器上,从而实现一次打包,多次部署的目的。2. docker基于镜像可以秒级启动原创 2022-01-21 17:14:45 · 2327 阅读 · 0 评论 -
Sharding-JDBC实战(水平分表,读写分离)
Sharding-JDBC是一个轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务, 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架 在使用Sharding-JDBC首先要清楚以下几点:它是一个轻量级的Java框架,可以理解是增强的JDBC驱动 Sharding-JDBC是不做分库分表的,库与表是由数据库工程师分好的,通过引入Sharding-JDBC.jar配置好配置,解决多数据源切换原创 2021-12-30 17:49:07 · 875 阅读 · 0 评论 -
Navicat连接mysql - Authentication plugin ‘caching_sha2_password‘ cannot be loaded: dlopen
解决办法:1. 跳过秘密验证修改密码: vim /etc/my.cnf 中添加 skip-grant-tables修改密码:[root@centos-linux bin]# ./mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7Server version: 8.0.18 MySQL Communi.原创 2021-11-25 09:42:23 · 439 阅读 · 0 评论 -
Mysql启动时报错 The server quit without updating PID file (/data/mysql/mysql.pid)
在执行mysql启动命令后,报错了,如下:sudo mysql.server startStarting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).解决办法:删除 /data下的mysql文件,然后使用命令行初始化mysql,如下初始化数据库信息cd /usr/local/mysql/bin./mysqld --defaults-file=/etc/my.cn原创 2021-11-25 09:43:06 · 1508 阅读 · 0 评论 -
Java应用cpu使用率过高问题排查(jstack实战模拟操作)
1. 上传我们需要实战模拟的Jar包到linux服务器scp /Users/sunww/Desktop/demo-0.0.1-SNAPSHOT.jar [email protected]:/httx/packjar2. 启动Jar包java -jar demo-0.0.1-SNAPSHOT.jar3. 发起请求curl http://localhost:8080/admin/test?a=1服务器在循环打印数据:4. 利用top命令查看通过上面可以...原创 2021-09-27 09:53:44 · 1349 阅读 · 0 评论 -
Linux下后台启动springboot项目
我们知道启动springboot的项目有三种方式:运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种。但是,我们在使用java -jar来运行的时候,并非后台运行。下面我们来说说服务器上如何后台启动springboot项目。实际上,实现的方法有很多种,这里就列两种还原创 2021-09-18 17:15:02 · 1601 阅读 · 0 评论 -
mysql5.7之json格式与json_extract方法使用
数据初始化json_test表数据,id和jsonstr字段(类型json){ "no": "7", "title": "运动方式", "content": [{ "text": "您平时经常进行的运动及时间", "item1": [{ "text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"转载 2021-09-18 17:07:45 · 793 阅读 · 0 评论 -
Mysql JSON_EXTRACT 获取JSON数据
1. mysql数据库中的ext存的是json字段,如下:CREATE TABLE `volume` ( `volumeId` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `ext` json DEFAULT NULL COMMENT '扩展字段', PRIMARY KEY (`volumeId`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='量表'.原创 2021-09-17 11:15:40 · 4037 阅读 · 0 评论 -
idea中Mybatis自动生成pojo、mapper.xml、接口
一. 在idea中安装插件二. 在maven工程中的resource中创建generatorConfig.xml配置generatorConfig.xml的<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" ...原创 2021-08-24 18:52:53 · 769 阅读 · 0 评论 -
WebMagic 发起POST表单请求,同时传入Cookie来下载文件
发起post请求的2种方式:1. 直接给Spider传入request对象(包含下载地址),定义好请求方式post,参数通过formdata/json,header里传cookie public static void main(String[] args) throws IOException {string URL = https://bbbb.com/column_more_data_v2/column_more_data Map<String, Object&.原创 2021-08-19 18:32:00 · 882 阅读 · 0 评论 -
SpringBoot 存储JSON数据到Mysql对应的JSON字段
1. 引入Gson<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency>2. 定义要存储的JSON字段@Datapublic class LJUserExt implements Serializable {原创 2021-08-17 17:07:49 · 4153 阅读 · 0 评论 -
利用SpringBoot的RestTemplate 发起Http请求(POST,请求参数JSON)
1. 先将RestTemplate以Bean的形式加载进来@Configurationpublic class SpringBeanConfig { @Bean public RestTemplate restTemplate(){ return new RestTemplate(); }}2. 发起一个 Http请求(POST,请求参数JSON)Map<String, Object> verifyParams = new HashMap<String, ..原创 2021-08-17 15:30:15 · 2322 阅读 · 0 评论 -
Netty 搭建Http服务端
1. 通过浏览器请求接口,http://localhost:8000/Netty的Http服务器返回 Netty Http Server2. 服务端打印的日志Netty的Http服务器源码如下:package server;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandlerAdapt原创 2021-04-13 17:49:00 · 237 阅读 · 0 评论 -
Spring提交数组时超过256个值报错解决办法
使用SpringMVC或者SpringBoot提交数组时,如果list大小超过256,就会报错。原因是DataBinder 中默认限制了list最大只能增长到256。private int autoGrowCollectionLimit = DEFAULT_AUTO_GROW_COLLECTION_LIMIT;解决方案:在需要的Action中添加InitBinder方法。@InitBinderpublic void initBinder(WebDataBinder binder)原创 2021-04-06 10:16:18 · 1356 阅读 · 0 评论 -
Springboot集成Sentinel实战
一. Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台原创 2021-03-11 14:12:56 · 1151 阅读 · 0 评论 -
Mysql for update 悲观锁实践
InnoDB行锁实现方式InnoDB行锁是通过给索引项加锁来实现的,如果没有索引,InnoDB将通过隐藏的聚簇索引来对记录枷锁。共享锁(S):允许一个事务去读取一行,阻止其他事务获取相同数据集的排他锁。 排他锁(X):允许获得排他锁的事务更新数据,组织其他事务获取相同数据集的共享锁和排他锁。for update是在数据库中上锁用的,可以为数据库中的行上一个排它锁。当一个事务的操作未完成时候,其他事务可以读取但是不能写入或更新。for update 仅适用于InnoDB,并且必须开启事务,原创 2021-02-22 16:13:44 · 164 阅读 · 0 评论 -
FastJSON解析JSON字符串数据
需要解析的JSON数据如下:解析代码: public static void main(String[] args) { String result = "{\"msg\":\"success\",\"code\":0,\"data\":[{\"invoice_code\":\"3700194130\",\"total_amount\":22090.39,\"total_amount_excluding_tax\":20266.41,\"total_tax_amount\".原创 2021-02-08 14:59:05 · 772 阅读 · 0 评论 -
Java接收数组,要求前端给他字符串(用“,“分割)?
一. 用Postman发起请求,传个数组给后端接口,如下:localhost:8080/web/order/selectOrderList?orderCodes=21010807414510001,21010807424120001,21010807430810001二. Spring来接收数组数据,如下:OrderQuery@DATApublic class OrderQuery extends BaseObject { private static final lon.原创 2021-02-07 14:59:48 · 738 阅读 · 0 评论 -
Ngnix负载均衡实战配置
一、Nginx优势1、作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高2、作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度3、作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡4、在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用原创 2021-02-03 09:26:22 · 194 阅读 · 0 评论 -
case when 语句
<if test="blackOwners != null and blackOwners.size >0 "> AND ( CASE WHEN o.orderType = 20 AND o.ownerPartyId not in <foreach item="item" index="index" collection="blackOwners" open="(" separator="," close=")"> #{item} </fo..原创 2021-01-29 17:41:00 · 278 阅读 · 0 评论 -
利用WebMagic爬豆瓣电影数据(注解版本)
WebMagic爬数据(注解版本)官方资料:http://webmagic.io/docs/zh/posts/ch5-annotation/继上一篇爬虫文章后,再用注解版来抓取点数据。一.目标页面(https://www.douban.com/doulist/3907668)爬取豆瓣电影数据(电影名字,评分,导演信息,电影信息)界面如下图:二. 注解版本源码分析现在只爬取单个页面的电影数据,这里写死这个页面@TargetUrl(value = "(https://www.douban原创 2021-01-29 11:20:15 · 453 阅读 · 0 评论 -
利用Spring Boot WebMagic MyBatis 爬数据并存入mysql
一. webmagic简介webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。<dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>..原创 2021-01-28 16:49:28 · 463 阅读 · 1 评论 -
CPU飙高及Full GC次数过多怎么排查?
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量...原创 2021-01-20 09:25:31 · 391 阅读 · 0 评论 -
JVM调优总结
https://www.cnblogs.com/andy-zhou/p/5327288.html#_caption_0原创 2021-01-11 14:38:37 · 95 阅读 · 0 评论 -
JVM调优
由于GC操作会暂停所有的应用程序线程,JVM为了尽量缩短停顿时间就必须尽可能地利用更多的CPU资源。JVM调优主要就是调整下面两个指标停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis 吞吐量:垃圾收集的时间和总时间的占比:1/(1+n),吞吐量为1-1/(1+n)。-XX:GCTimeRatio=n我们项目的配置API和MT层配置如下:一. API配置(CMS标记清楚算法)-Xms3072m -Xmx3072m -Xmn1500m -XX..原创 2021-01-11 14:22:26 · 623 阅读 · 0 评论 -
Java 正则表达式 手机号 身份证号脱敏
// 手机号码前三后四脱敏 public static String mobileEncrypt(String mobile) { if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) { return mobile; } return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); }..原创 2020-12-24 15:07:58 · 3357 阅读 · 0 评论 -
DateUtils after 使用注意
public static void main(String[] args) { Date inputDateStart = DateUtil.farseDate("2020-08-31", "yyyy-MM-dd"); Date a = DateUtils.addMonths(inputDateStart, 3); System.out.println(a); System.out.println(DateUtil.formatDat...原创 2020-11-30 10:03:57 · 606 阅读 · 1 评论 -
简单的延时消费队列
1. 简单的延时消费队列单元测试,将2个任务添加到队列中,然后消费,代码如下:package com.robinboot.facade;import com.robinboot.service.task.DelayRunnable;import com.robinboot.service.task.DelayRunnable;import com.robinboot.service.task.TaskManager;import org.apache.log4j.Logger;import原创 2020-11-26 14:26:43 · 422 阅读 · 0 评论 -
Mysql的Expalin执行计划
一. Expalin中关键字解释select_type查询的类型,主要是用于区分普通查询、联合查询、子查询等复杂的查询1、SIMPLE:简单的select查询,查询中不包含子查询或者union2、PRIMARY:查询中包含任何复杂的子部分,最外层查询则被标记为primary3、SUBQUERY:在select 或 where列表中包含了子查询4、DERIVED:在from列表中包含的子查询被标记为derived(衍生),mysql或递归执行这些子查询,把结果放在零时表里5、UNION原创 2020-11-25 10:32:14 · 152 阅读 · 0 评论 -
Kibana 创建索引 POST 403 (forbidden) on create index
一、问题描述:Kibana创建索引:kibana > management > index patterns > create index pattern索引名称:merchant-receipt-log-2019.06.04点击创建按钮后,什么也没发生, 索引没有创建成功。打开浏览器开发工具【f12】发现如下错误:POSThttp://ip:5601/api/saved_objects/index-pattern7403 (forbidden)二...转载 2020-11-10 17:28:53 · 1253 阅读 · 1 评论 -
ELK通过logstash采集java日志(多图演示)
一. 下载elasticsearch-7.3.0cd /Users/sunww/Documents/soft/ELKtar -xzvf elasticsearch-7.3.0-darwin-x86_64.tar.gzcd elasticsearch-7.3.0/bin/elasticsearch 启动elasticsearch二. MAC下安装ElasticSearch Head插件参考我之前的文章 https://blog.csdn.net/robinson_91...原创 2020-11-10 14:02:03 · 1165 阅读 · 0 评论 -
dubbo报错 Please check registry access list (whitelist/blacklist)问题分析
初步推测因为网络切换致长时间(具体时间不详)网络不通。provider端dubbo provider与注册中心Zookeeper断掉,多次重试任然失败,Zookeeper删除掉provider注册信息。ZKClient默认的超时时间是Integer.MAX_VALUE,几乎是无限等待,网络恢复后部分provider注册成功部分provider未注册成功。consumer端如果服务提供者列表为空,那么请求协议会被设置为empty。后面会调用refreshInvoker方法。对应的Z..原创 2020-10-19 17:59:28 · 4789 阅读 · 0 评论 -
SpringBoot启动卡住 问题排查
上午从git上拉了最新的代码后,导致SpringBoot启动卡住。解决办法:给 SpringApplication.run()加个try。。。catch。。。捕获下异常信息如下:修改完后,重新启动正常了。原创 2020-08-12 14:44:48 · 1462 阅读 · 0 评论