自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

下半夜的风

享受着风带来的清爽,生活需要有条理的梳理。

  • 博客(81)
  • 资源 (6)
  • 收藏
  • 关注

原创 Centos7 排查流量异常进程

使用iftop命令,界面如下:界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。中间的<= =>这两个左右箭头,表示的是流量的方向。界面相关参数说明TX:发送流量RX:接收流量TOTAL:总流量cumm:运行iftop以来的总流量peak:峰值流量rates:分别表示过去 2s 10s 40s时间内网卡总的平均流量iftop -i ensxxx -n -P #ensxxx表示网卡名称,可以通过ifconfig查看。

2024-03-04 09:47:43 191

原创 响应式常用API

create方法用于创建自定义的Flux或Mono,通过编程方式发射元素和控制订阅。i

2024-01-22 10:12:11 382

转载 nginx接口流量拷贝

我是这样理解的,这里,mirror本意是镜子、镜像,这里可以理解就像一个镜像站点一样,将所有的请求都收集起来,这个镜像就代表了所有真实有效的原始请求。nginx的master进程的进程ID,默认情况下,放在nginx.pid文件中,该文件所在的目录一般是/usr/local/nginx/logs 或者 /var/run。一般情况下,nginx.conf文件在 /usr/local/nginx/conf 或者 /etc/nginx 或者 /usr/local/etc/nginx 目录下。

2024-01-12 15:19:15 44

原创 B01、运行时数据区概述-03

线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行的执行。在HotspotJVM里, 每个线程都与操作系统的本地线程直接映射。当一个Java线程准备好执行以后, 此时一个操作系统的本地线程也同时创建。Java线程执行终止后, 本地线程也会回收。操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化成功, 它就会调用Java线程中的run() 方法。

2024-01-03 22:50:15 422

原创 B01、类加载子系统-02

类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)这里的自定义并非是说由开发人员自定义的类加载器。

2024-01-03 22:14:31 958

原创 A01、class文件简要说明

关于 .class 文件的相关结构说明。

2023-12-27 20:22:48 799

原创 A01、关于jvm执行子系统

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):1)、遇到。

2023-12-21 09:43:08 1009

原创 A01、jvm内存区域划分

程序计数器(Program Counter Register),也有称作为PC寄存器。保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当CPU需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址,然后根据得到的地址获取到指令,在得到指令之后,程序计数器便自动加1或者根据转移指针得到下一条指令的地址,如此循环,直至执行完所有的指令。也就是说是用来的。由于在JVM中,

2023-12-19 18:16:23 905

原创 A01、关于JVM的GC回收

就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会被垃圾回收软引用一般被做为缓存来使用。与强引用的区别是,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收。如果剩余内存比较紧张,则虚拟机会回收软引用所引用的空间;如果剩余内存相对富裕,则不会进行回收。换句话说,虚拟机在发生OutOfMemory时,肯定是没有软引用存在的。弱引用与软引用类似,都是作为缓存来使用。

2023-12-18 20:57:53 1068

原创 A01、深入了解性能优化

提交请求和返回该请求的响应时间之间使用的时间,一般比较关注平均响应时间。同一时刻。对服务器有实际交互请求的请求数。和网站在线用户数的关联:1000个同时在线用户数,可以估计并发数在5%到15%之间,也就是同时并发数在50~150之间。

2023-12-18 19:22:14 1086

原创 B01、JVM与Java体系结构-01

Java平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向。试想一下, 在一个项目之中, 并行处理用Clojure语言编写, 展示层使用JRuby/Rails, 中间层则是Java, 每个应用层都将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难, 就像使用自己语言的原生API一样方便, 因为它们最终都运行在一个虚拟机之上。

2023-12-17 21:35:34 1057

转载 关于带宽大小 & 实际流量大小

这里特别记录下关于这两个的概念,因压测程序受带宽影响,导致始终未定位到正确问题。由于之前一直认为带宽的 20M 就是和实际上行流量的20M对等,结果发现两者之间存在对应的换算关系😂希望有和我一样存在这样误区的,能及时纠正。

2023-12-01 15:28:02 57

原创 Elasticsearch7 入门 & 进阶

全文检索是指,通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了。内容爬取,停顿词过滤比如一些无用的像"的",“了” 之类的语气词/连接词内容分词,提取关键词根据关键词建立倒排索引用户输入关键词进行搜索。

2023-11-14 17:04:28 434 1

原创 RabbitMQ 运维 & 扩展

关于Rabbitmq 集群的搭建,详见以下文章。简单说来就是将多个单机rabbitmq服务,通过给到一致的密钥(.erlang.cookie)并且开放rabbitmq服务的 25672 端口,允许多节点间进行互相通讯,就完成了集群的搭建。当多个单机服务正常部署可运行的时候,则需要进行多节点的配置。假设这里一共有三台物理主机, 均己正确地安装了RabbitMQ ,且主机名分别为myblnp1 , myblnp2和myblnp3。接下来需要按照以下步骤执行。

2023-10-31 18:01:47 5713

原创 Jprofiler V14中文使用文档

JProfiler是一个用于分析运行JVM内部情况的专业工具。在开发中你可以使用它,用于质量保证,也可以解决你的生产系统遇到的问题。方法调用这通常被称为"CPU分析"。方法调用可以通过不同的方式进行测量和可视化, 分析方法调用可以帮助了解你的应用程序正在做什么,并找到提高其性能的方法。分配分析堆上对象的分配、引用链和垃圾回收属于"内存分析"的范畴。这个功能可以让你解决内存泄漏,总之使用更少的内存,分配更少的临时对象。线程和锁线程可以持有锁,例如通过在一个对象上做同步。

2023-10-20 13:44:51 893

原创 Rabbitmq 的管理配置

每一个RabbitMQ 服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(virtual host) ,简称为vhost 。每一个vhost 本质上是一个独立的小型RabbitMQ 服务器,拥有自己独立的队列、交换器及绑定关系等,井且它拥有自己独立的权限。vhost 就像是虚拟机与物理服务器一样,它们在各个实例间提供逻辑上的分离,为不同程序安全保密地运行数据,它既能将同一个RabbitMQ 中的众多客户区分开,又可以避免队列和交换器等命名冲突。vhost 之间是绝对隔离的,无法将vhost1中的交换器与v

2023-10-17 11:00:05 1975

原创 RabbitMQ 知识点解读

当mandatory 参数设为true 时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ 会调用Basic.Return 命令将消息返回给生产者。当mandatory 参数设置为false 时,出现上述情形,则消息直接被丢弃。那么生产者如何获取到没有被正确路由到合适队列的消息呢?这时候可以通过调用 channel.addReturnListener 来添加ReturnListener 监昕器实现。

2023-09-09 15:41:05 1100

原创 Rabbitmq安装

当执行安装目录指定过程中,有提示 err 错误时,需要解决依赖的问题,出现一个解决一个;执行:wget http://erlang.org/download/otp_src_24.1.4.tar.gz。执行第一次解压:xz -d rabbitmq-server-generic-unix-3.8.16.tar.xz。执行第二次解压:tar -xvf rabbitmq-server-generic-unix-3.8.16.tar。执行:./configure --prefix=[具体安装目录路径]

2023-08-31 11:13:51 772

原创 JVM调优指令&参数

想要要获取运行的Java虚拟机进程的列表,可以使用ps命令(Linux系统中)或tasklist命令(Windows系统中),如果Java虚拟机进程没有在单独的docker实例中运行,可以使用jps命令。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用的什么垃圾回收器、分代情况等等。显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。要获得某个对象的大小,可以将其总大小除以该对象类型的数量。

2023-08-29 22:29:18 1837

原创 关于JVM的参数类型

一般也是用的最多的,主要用于JVM调优和debug。主要呢可以分为两类,分别是Boolean类型和Key-Value类型。X参数也就是非标准化参数,在jdk各个版本里可能会变,但是变化的可能比较少。格式:-XX:=表示name属性的值是value。等等,这类参数的特点是在jdk各版本里基本不会变的,相对稳定。格式: -XX:[+-]表示启用或者禁用name属性。比如:-XX:MaxGCPauseMillis=500。JVM参数类型,主要是可以分为三类。

2023-08-27 22:35:39 659

原创 性能优化维度

其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。这二者是为了提高1O性能的,并由OS管理,并非应用自己分配的内存,而是OS自己根据需要对空闲内存进行的额外利用。查看空闲内存,确定应用是否有内存泄漏时,只能以Free的第三行为依据,第二行其实作用不大,只是可以看到OS当前的buffer和cache大小。两者都是RAM中的数据。

2023-08-27 20:48:32 587

原创 CentOS7 TAR安装 EMQX(MQTT)

官网 --> 右上角[免费试用] --> EMQX 下载 --> EMQX 开源版 --> 选择版本 + 系统 --> [免费下载] + 选择 tar.gz + amd64 --> [立即下载]选择对应下载方式上传到 /usr/local/ 目录下。

2023-08-24 17:46:02 641

原创 Elasticsearch配置优化

以下的优化基础是安装的 Elasticsearch 版本为 7.17.7,同时jdk版本为 1.8.321。

2023-08-23 11:12:30 1040

原创 TCP最大连接数问题总结

资源一台Linux的资源一个TCP占用资源占满的结果CPU看你花多少钱买的看你用它干嘛电脑卡死内存看你花多少钱买的取决于缓冲区大小OOM临时端口号1文件描述符1进程/线程数ulimit -n看IO模型系统崩溃。

2023-08-23 11:11:52 709

原创 TCP最大连接数问题总结

资源一台Linux的资源一个TCP占用资源占满的结果CPU看你花多少钱买的看你用它干嘛电脑卡死内存看你花多少钱买的取决于缓冲区大小OOM临时端口号1文件描述符1进程/线程数ulimit -n看IO模型系统崩溃。

2023-08-23 11:11:10 1136

原创 TCP缓冲区参数调优

它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,可用来控制Linux网络配置,由于/proc/sys/net目录内容的临时性,建议把TCPIP参数的修改添加到/etc/sysctl.conf文件, 然后保存文件,使用命令“/sbin/sysctl –p”使之立即生效。**default:**为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem_default 值,一般要低于net.core.wmem_default的值。

2023-08-23 11:10:19 908

原创 Rabbitmq配置调优

abbitMQ存储数据分区的可用磁盘空间限制.当可用空间值低于阀值时,流程控制将被触发.此值可根据RAM的总大小来相对设置 (如.{mem_relative, 1.0}).此值也可以设为整数(单位为bytes)或者使用数字单位(如.“50MB”).因此,很多外面都设1GB,这个显然是不够的,因为经如果当RABBITMQ的消息dump可用磁盘还剩1GB时,此时留给你的处理时间已经很短了,一般至少设成10GB。**注:**4KB包括消息内容以及消息的属性等元数据信息,其中消息的元数据信息占用至少300字节。

2023-08-23 11:09:35 842

原创 Redis性能配置优化

Redis的性能取决于可用内存的大小。如果内存不足,Redis将开始交换(swap),这会极大影响性能。因此,首先我们需要确保Redis所用内存的数量合理。对于合理的内存使用,我们需要对Redis的maxmemory和maxmemory-policy进行配置,以确保Redis在内存不足时仍能优雅地工作。

2023-08-23 11:02:10 385

转载 Rabbitmq 自定义配置线程池

上面说到,内存中的消费者数量n+1,但是有效的消费者n个。若连续9次均未获取到消息,第10次获取到消息,那么会重置。使用线程池启动线程,若核心线程满了之后,会使用阻塞队列。上面说到,mq在启动时创建消费者时由于线程池资源不足,会导致阻塞(影响该queue的消费消息)。配置的线程池资源被消费者占用后,是不会被释放的,while循环会一直监听MQ消息。总结:不推荐使用自定义配置的线程池,若使用,每次增加队列时均需要注意配置好线程数。参数,所以内存会去MQ中预取配置的消息数,放到本地的。启动的线程是串行的阻塞。

2023-08-21 15:02:06 781

转载 RabbitMQ 生产环境配置详解

网络设置 http://www.rabbitmq.com/networking.html RABBITMQ_DISTRIBUTION_BUFFER_SIZE 节点间通信缓冲区大小,默认值 128Mb,节点流量比较多的集群中,可以提升该值,建议该值不要低于64MB。在内存压力下为延迟队列设置的值,该值可以触发垃圾回收和减少内存使用,降低该值,会降低性能,提高该值,会导致更高的内存消耗。在内存压力下,正常队列设置的值,该值可以触发垃圾回收和减少内存使用,降低该值,会降低性能,提高该值,会导致更高的内存消耗。

2023-08-21 14:23:35 469

原创 05、性能分析思路?

所以我们描述系统的容量是用系统当前能处理的业务量(你用 TPS 也好,RPS 也好,HPS 也好,它们都是用来描述服务端的处理能力的),而不是压力工具中的线程数。通过这三次计算,我们是不是可以看到,每线程每秒发出的请求数在变少,但是整体 TPS 是在增加的。它是对架构的梳理,是对系统的梳理,是对问题的梳理,是对查找证据链过程的梳理,是对分析思路的梳理。因为响应时间增加了,TPS 增加得却没有那么多,到第三个阶梯时,显然增加的 TPS 更少了,响应时间也在不断地增加,所以,性能瓶颈在加剧,越往后就越明显。

2023-08-01 21:47:21 173

原创 04、并发用户数该怎么计算

我们假设上图中的这些小人是严格按照这个逻辑到达系统的,那显然,系统的绝对并发用户数是 4。如果描述 1 秒内的并发用户数,那就是 16。是不是显而易见?但是,在实际的系统中,用户通常是这样分配的:也就是说,这些用户会分布在系统中不同的服务、网络等对象中。这时候”绝对并发“这个概念就难描述了,你说的是哪部分的绝对并发呢?要说积分服务,那是 2;要说库存服务,那是 5;要说订单服务,它自己是 5 个请求正在处理,但同时它又 hold 住了 5 个到库存服务的链接,因为要等着它返回之后,再返回给前端。

2023-08-01 20:14:42 310

原创 03、怎么理解TPS、QPS、RT、吞吐量?

首先是 QPS,如果它描述的是数据库中的 Query Per Second,从上面的示意图中来看,其实描述的是服务后面接的数据库中 SQL 的每秒执行条数。这两个指标通常用来描述 Service 层的单位时间内的被其他服务调用的次数,这也是为什么在性能行业中误解不大的原因,因为性能测试的人看 Service 层东西的次数并不多。在上面的内容中,我们说了好多的指标,但并发是需要具体的指标来承载的。通常,我们会对在线的用户做并发度的分析,在很多业务中,并发度都会低于 5%,甚至低于 1%。

2023-07-23 16:33:25 420

原创 02、什么是TPS和响应时间

我们再接着增加压力,响应时间接着增加,但 TPS 会有下降(请注意,这里并不是必然的,有些系统在队列上处理得很好,会保持稳定的 TPS,然后多出来的请求都被友好拒绝)。配置更改前后,会用同样的性能场景来判断效果,最多再增加一些前端的压力,实际的场景并没有任何变化,所以,我觉得它不配做为一个单独的分类。总之,在具体的性能项目中,性能场景是一个非常核心的概念。而通常大家认为的性能测试、负载测试、压力测试在操作的层面,只有压力工具中线程数的区别,其他的都在资源分析的层面,而分析在很多人的眼中,都不算测试。

2023-07-23 14:21:57 183

原创 01、什么是性能测试?

我们经常看到的性能测试概念,有人或称之为性能策略,或称之为性能方法,或称之为性能场景分类,大概可以看到性能测试、负载测试、压力测试、强度测试等一堆专有名词的解释。 针对这些概念,我不知道你看到的时候会不会像我的感觉一样:乱!一个小小的性能测试,就延伸出了这么多的概念,并且概念之间的界限又非常模糊。就拿“压力测试”、“容量测试”和“极限测试”这三个概念(摘抄自网络)来说吧。压力测试: 压力测试是评估系统处于或超过预期负载时系统的运行情况。压力测试的关注点在于系统在峰值负载或超出最大

2023-07-23 14:03:25 37

原创 centos逻辑分区磁盘扩展

最近碰到服务器磁盘空间不足,需要扩展逻辑分区的需求,特地做下小笔记,方便后续自己回忆。

2023-07-21 18:04:05 706

原创 docker、docker-compose无权限

确保服务器是真的已经安装成功了docker与docker-compose,可执行版本信息打印确认,控制台有输出即正确安装。做以上两个查询的目的是确保你需要操作的服务器用户是存在的以及docker用户组是否存在。执行:cat /etc/passwd。执行: cat /etc/group。

2023-06-30 11:29:45 1886

原创 三某云平台

虽然说主机、服务器确实是有,但是用各种限制、而且配置也很一般,只提供免费试用一段时间,过期后需要再次免费使用需要给钱或者所谓的“免费延期”,也就是得帮他做宣传,而且要用就得一直发。只要隔一段时间在上来用,就会发现服务器用不了,VNC无法连接、SSH无法连接,反馈账号密码错误,改密也不行。结果各种难用还不说、态度也很差劲,而且需要使用必须用他家提供的备案服务才能备案,备案还需要收集各种数据,甚至拍照要要他家的幕布(付费购买)拍才行。这里我纯粹就是抱怨吐槽的,希望有跟我一样想法的人,赶紧把这个平台避雷过去。

2023-04-28 11:57:04 73

原创 8、接口的高级用法

我们可以使用接口描述索引的类型和通过索引得到的值的类型,比如一个数组[‘a’, ‘b’],数字索引0对应的通过索引得到的值为’a’。上面的例子中 role3 定义了一个数组,索引为数值类型,值为字符串类型。你也可以给索引设置readonly,从而防止索引返回值被修改。这里有一点需要注意,你可以设置索引类型为 number。但是这样如果你将属性名设置为字符串类型,则会报错;但是如果你设置索引类型为字符串类型,那么即便你的属性名设置的是数值类型,也没问题。

2023-04-25 11:27:43 1835

原创 7、如何使用接口?

我们需要定义这样一个函数,参数是一个对象,里面包含两个字段:firstName 和 lastName,也就是英文的名和姓,然后返回一个拼接后的完整名字。这些都是我们不想要的,在开发时难免会传入错误的参数,所以 TypeScript 能够帮我们在编译阶段就检测到这些错误。这些都是在我们编写代码的时候 TypeScript 提示给我们的错误信息,这样就避免了在使用函数的时候传入不正确的参数。接下来我们使用interface。

2023-04-25 11:14:04 771

MapToDtoConvert.7z

简单封装的一个关于map类型数据转pojo实体类的工具方法,map数据转换,支持实体类中的String、int、Integer、double、Double、float、Float、long、Long以及Date(java.util.Date)类型

2021-07-06

2020java最新基础面经

这份doc面经文档是我最近整理的,里面内容都是比较新的。所有问题都有答案,知识点基本都涉及了。虽说是基础面经,但是里面整理的比较细,有java基本知识、JVM相关知识点、spring相关内容等。

2020-12-04

jacob api文档及使用方法

这里呢是三份文档,里面有jacob的一些具体使用方法包括代码案例也有,三份文档有些重复的不过都是比较全的

2019-09-20

mybatis分页插件与druid连接池

包含了阿里巴巴开的druid1.026版本连接池架包以及mybatis分页插件pagehelper-4.2.1版本的架包

2018-06-20

hibernate框架所需架包

里面拥有的是使用hibernate框架需要用到的几个架包,主要目的是方便使用。

2018-06-20

spring+springmvc+mybatis等架包

该资源包含了我们SSM框架所需的所有架包,包括日志的架包。

2018-06-13

空空如也

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

TA关注的人

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