自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (7)
  • 收藏
  • 关注

原创 生成图片二维码

二维码生成代码

2022-09-09 15:29:54 187 1

原创 MySQL性能瓶颈排查

sql性能优化

2022-08-03 10:52:29 522

原创 解决jersey服务war deploy后发生java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri

AbstractMethodError: javax.ws.rs.core.UriBuilder.uri

2022-07-09 20:44:22 698 2

原创 mysql迁移达梦

达梦迁移工具dts使用

2022-06-14 10:54:37 672

转载 使用Linux的MAT分析工具分析超大dump文件(几GB)

Linux的MAT分析工具

2022-04-10 11:48:07 1514

转载 JProfiler 监视远程的JVM(linux)部署手册

1. linux server服务器上安装agent图1备注: 如果不知道安装路径在什么地方,可以通过命令rmp -ql jprofiler-9.2-1.i386查看。2.打开window机器的JProfiler,并新建连接图23.选择对应的Apache Tomcat 7.x需要针对应用系统的架构来选择不同的类型,这里举例使用的tomcat容器;这里要补充说明下,如果有的是纯java应用的,没有使用容器的,我们选择默认的就好。4.选择远程系统类型..

2022-04-10 11:24:31 662

转载 MySQL中SQL执行计划,你理解了吗?播

首先我们来看一下什么是执行计划:执行计划就是解释select语句如何在数据库执行的、相关表是怎么连接、连接的次序、有哪些索引和索引使用情况、每个表的扫描数据量等等。 简单来说,就是通过数据来分析select语句的执行情况;怎么查看执行计划:查看执行需要用到关键字EXPLAIN,将EXPLAIN放在SQL语句的前面( EXPLAIN [EXTENDED] SELECT select_options ),如下图:从上图可以看出,通过执行计划展示了表格数据,这个表格有id、select_type、

2022-04-02 14:38:30 230

转载 生产环境之Nginx高可用方案

准备工作:192.168.16.128192.168.16.129两台虚拟机。安装好Nginx安装Nginx更新yum源文件:Copyrpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/C

2021-10-28 17:46:24 144

转载 Log4j.properties配置详解

参考博客https://www.jianshu.com/p/ccafda45bcea一、log4j简介#log4j主要有三个重要的组件:Loggers(记录器):日志类别和级别; Appenders(输出源):日志要输出的地方; Layout(布局):日志以何种形式输出。1、Loggers#Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR &

2021-07-28 18:10:45 96

转载 彻底搞懂Reactor模型和Proactor模型

在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。想要了解两种模型,需要了解一些IO、同步异步的基础知识,点击查看服务端的线程模型无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图:2种fdlistenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。 connfd:每个连接都有一个co..

2021-07-28 18:09:55 217

转载 Redis调优

Redis性能调优设置键值的过期时间(惰性删除)应该根据实际的业务情况,对键值设置合理的过期时间,这样 Redis 会帮你自动清除过期的键值对,以节约对内存的占用,以避免键值过多的堆积,频繁的触发内存淘汰策略。Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除)。expire:命令用于将键key 的生存时间设置为ttl 秒。 pexpire:命令用于将键key 的生存时间设置为ttl 毫秒。 pexpireat< timestamp.

2021-07-28 18:09:41 3302

转载 分布式锁之Redis实现

https://www.jianshu.com/p/47fd7f86c848https://www.cnblogs.com/moxiaotao/p/10829799.html在Java中,关于锁我想大家都很熟悉。在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?一、分布式锁分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当

2021-07-07 23:39:29 62

原创 JAVA并发十二连招,你能接住吗?

话不多说,干货走起。1、HashMap面试第一题必问的 HashMap,挺考验Javaer的基础功底的,别问为啥放在这,因为重要!HashMap具有如下特性: HashMap 的存取是没有顺序的。 KV 均允许为 NULL。 多线程情况下该类不安全,可以考虑用 HashTable。 JDk8底层是数组 + 链表 + 红黑树,JDK7底层是数组 + 链表。 初始容量和装载因子是决定整个类性能的关键点,轻易不要动。 HashMap是懒汉式创建

2021-06-12 21:38:33 82

转载 Dubbo RPC只要一个长连接就可以收发所有请求,为什么Spring Cloud不行?

Dubbo RPC使用dubbo协议只需要一个长连接就可以收发所有请求,为什么使用http协议的Spring Cloud即便使用长连接也需要连接池呢?http协议是一种同步应答的交互模式的应用层协议。就是客户端向服务端建立连接后,向服务端发起请求时,客户端必须要阻塞当前连接等到服务端响应,即便使用NIO。如果你用一个Chanel向服务端发送一个http请求,没等服务端响应,你又用Chanel向服务端发送另一个请求,那服务端响应的结果客户端就没办法知道对应是哪个请求的响应。因此客户端必须同步阻塞等待,除非

2021-06-01 11:07:47 164

转载 详解Redis中两种持久化机制RDB和AOF

原文链接:https://baijiahao.baidu.com/s?id=1654694618189745916&wfr=spider&for=pc

2021-04-27 23:25:17 70

转载 MySQL发生死锁有哪些原因,怎么避免?(6个案例)

作者:王啸 tr1912blog.csdn.net/tr1912/article/details/81668423一、MySQL锁类型和加锁分析锁类型介绍:MySQL 有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高, 并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低, 并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度

2021-04-25 09:49:58 112

转载 你知道怎么分库分表吗?如何做到永不迁移数据和避免热点吗?

来源:https://www.toutiao.com/i6677459303055491597目录前言 分库分表方案 hash取模方案 range范围方案 总结前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库 和 用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了40..

2021-04-25 09:45:34 50

转载 Kafka高性能原理

Kafka线程模型1(Acceptor) + N(Processor) + M(KafkaRequestHandler),在Netty,Tomcat,Nginx上面都能看见类似的设计N = num.networker.threadsM = num.io.threads一个EndPoint(网卡)对于一个Acceptor,一般来说就一个kafka存储模型日志文件Kafka节点上,一个Partition对应一个磁盘目录,命名为_,分为多个LogSegment,一个LogSegme

2021-03-29 18:14:53 144

原创 fullgc过于频繁该怎么解决?

fullgc过于频繁有可能会造成oom,有可能不会。首先明确一下,这篇文章的重点是分析后面一种情况,即应用在频繁的fullgc,但并没有出现oom。我们来想一下为什么会出现fullgc,触发原因有很多种,但归根到底都是因为内存空间不足了(system.gc的情况不考虑)。系统在频繁的fullgc,但并没有出现oom,说明每次回收的时候,肯定清理了部分内存空间。那这里就有2种情况,gc之后清理的内存空间大不大?1、如果每次gc之后剩余的空间不大,说明有一部分顽固对象一直没法被回收,导致可用内存

2021-03-25 14:54:25 2778

转载 Nginx的四大模块总结——proxy、headers、upstream、stream模块

一、ngx_http_proxy_module模块1)proxy_pass URL;Context: location, if in location, limit_except注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机server { … server_name HOSTNAME; location /uri/ { proxy http://hos[:port]; } …

2021-03-24 11:57:12 1546

转载 Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做。至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html。然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等,鉴于Nginx在7层负载均衡和web service上的成

2021-03-24 11:55:56 164

转载 聊聊互联网限流方案

首先要知道为什么要进行限流,限流的方式有那些,那些应用需要限流。 在业务场景中,我们会遇到有百万甚至更加大的用户请求流量来访问接口,或者在业务对接过程中,业务提供方的访问频率控制,等等我们的业务都需要做限流处理,这个时候如果不做任何保护措施,服务器就会承受很大的处理压力,请求量很高,服务器负载也很高,并且当请求超过服务器承载极限的时候,系统就会崩溃,导致所有人都不能访问。为了应用服务的高可用,一个常用的办法是对大流量的请求(秒杀/抢购)进行限流,拦截掉大部分请求,只允许一部分请求真正进入后...

2021-03-10 10:46:52 511

转载 三种常见的限流算法

在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。1、计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开 始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,c

2021-03-10 10:34:28 1660

转载 Java线程状态切换以及核心方法

1.Java线程状态1.1 线程主要状态①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得cpu 时间片后变为运行中状态(running)。③阻塞(BLOC

2021-03-08 20:19:23 118

转载 彻底理解volatile关键字

1. volatile简介在上一篇文章中我们深入理解了java关键字,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下。通过上一篇的文章我们了解到synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。而volatile就可以说是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在并发编程中很多程序员遇到线程安全的问题就会使用synchronized。java内存模型告诉我们,

2021-03-08 17:00:14 101

转载 Reactor详解

reactor 是什么 为何要用,能解决什么问题 如何用,更好的方式 其他事件处理模式 一、Reactor 是什么关于reactor 是什么,我们先从wiki上看下:The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more i...

2021-02-24 16:25:17 578

转载 Java NIO系列教程(六) Selector

原文链接作者:Jakob Jenkov译者:浪迹v校对:丁一Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector? Selector的创建 向Selector注册通道 SelectionKey 通过Selector选择通道 wakeUp() close() 完整的示例为什么使...

2021-02-23 16:26:59 100

转载 Java NIO系列教程(三) Buffer

原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是NIO Buffer相关的话题列表:Buffer的基本用法 Buffer的capacity,position和limit Buffer...

2021-02-23 15:03:47 54

转载 Java IO多路复用技术详解

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。(3)IO多路复用(IOMultiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这...

2021-02-23 09:11:31 470

转载 深入理解BIO、NIO、AIO

导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,让我们一起进入IO的世界吧。在开始之前,我们先来思考一个问题:我们经常所说的“IO”的全称到底是什么?可能很多人看到这个问题和我一样一脸懵逼,

2021-02-23 09:10:12 135

转载 简单总结:以设计模式的角度总结Java基本IO流

在总结 Java Basic IO 时,发现 java.io 包的相关类真心不少~~。看到一堆“排山倒海”般的类,我想,唯有英雄联盟中小炮的台词才能表现此刻我的心情:跌倒了没?崩溃了没?学 Java 的,学过装饰者模式一般都知道一个典型的应用:Java 的基本 IO 使用了装饰者模式(更多的 JDK 中使用的设计模式,请点我)。也因此知道了为什么 io 包里为什么会有这么多的类~~,引用《HeadFirst 设计模式》的话:Java I/O 也引出装饰者模式的一个“缺点”:利用装饰者模式,

2021-02-22 11:38:42 90

转载 kafka的基本概念和工作流程分析

为什么需要消息队列  周末无聊刷着手机,某宝网APP突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”。买一送一还有这种好事,那我可不能错过!忍不住立马点了去。于是选了两个最新款,下单、支付一气呵成!满足的躺在床上,想着马上有女朋友了,竟然幸福的失眠了……  第二天正常上着班,突然接到快递小哥的电话:  小哥:“你是xx吗?你的女朋友到了,我现在在你楼下,你来拿一下吧!”。  我:“这……我在上班呢,可以晚上送过来吗?“。  小哥:“晚上可不行哦,晚上我也下班了呢!”。  于

2021-02-16 21:32:59 222

转载 VRRP虚拟路由器冗余协议简介

1. VRRP技术的引入随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的。我们知道,为了实现不同子网之间的设备通信,需要配置路由。目前常用的指定路由方法有两种:​ 第一种是通过路由协议 :RIP、OSPF动态学习 ​ 第二种是通过静态路由: 对终端PC机配置静态路由。这两种路由各有各的优缺点:第一种路由可以自动寻找最优路径,邻居路由也可以通过学习来获得路由表,但是动态路由占用线路带宽和CPU处理时间。第二种路

2021-02-16 15:18:49 1110

原创 RabbitMQ消费消息的两种模式:推和拉

前言 在rabbitmq中有两种消息处理的模式,一种是推模式/订阅模式/投递模式(也叫push模式),消费者调用channel.basicConsume方法订阅队列后,由RabbitMQ主动将消息推送给订阅队列的消费者;另一种是拉模式/检索模式(也叫pull模式),需要消费者调用channel.basicGet方法,主动从指定队列中拉取消息。推模式:消息中间件主动将消息推送给消费者 拉模式:消费者主动从消息中间件拉取消息推模式(push)1:推模式接收消息是最有效的一种消息处理方...

2021-02-16 15:18:27 1416

原创 LVS:三种负载均衡方式(VS/NAT、VS/TUN、VS/DR)比较

1、什么是LVS?首先简单介绍一下LVS (LinuxVirtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其.

2021-02-02 20:03:32 368

转载 分布式架构基础:Java RMI详解

分布式架构基础:Java RMI详解GitHub: https://github.com/jayknoxqu/rmi-exampleRMI简介​ Java RMI,即 远程方法调用(Remote Method Invocation),一种用于实现远程过程调用(RPC)(Remote procedure call)的Java API, 能直接传输序列化后的Java对象和分布式垃圾收集。它的实现依赖于Java虚拟机(JVM),因此它仅支持从一个JVM到另一个JVM的调用。rmi架构图rmi的实现(1

2020-10-24 00:32:19 261 1

原创 mysql新增字段判断字段是否存在的存储过程

DELIMITER // DROP PROCEDURE IF EXISTS addColumnPro; CREATE PROCEDURE addColumnPro( IN tab varchar(200), IN colu varchar(200), IN sqlStr varchar(200)) BEGIN set @sql = CONCAT('ALTER TABLE ',tab,' ADD COLUMN ',colu, ' ', sqlStr); IF...

2020-09-27 09:51:56 365 1

转载 volatile关键词的含义

出处:http://www.importnew.com/24082.html一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在...

2020-05-06 16:36:46 95

转载 java并发包

https://blog.csdn.net/shengqianfeng/category_9275515.html

2020-04-13 10:40:04 60

转载 大白话布隆过滤器

大白话布隆过滤器本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒…经过“放弃,拿起...

2020-03-28 17:10:23 69

Nginx+keepalived高可用集群方案

Nginx+keepalived高可用集群方案

2022-06-24

jprofiler使用

jprofiler使用,性能分析工具

2022-06-14

gc分析工具 也可以采用下面的在线分析gceasy.io

https://gceasy.io/

2022-04-10

性能测试工具jmeter

性能测试工具jmeter

2022-04-10

javacore分析工具

javacore分析工具。右键用java打开jca440.jar

2017-10-14

如何提高代码重用性

java 提高代码重用性的三个措施 代码重用性

2013-03-16

事物设计策略

java事物设计策略 Java Transaction Design Strategies

2013-03-16

空空如也

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

TA关注的人

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