自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql报错:can‘t create more than max_prepared_stmt_count statements

每个预处理语句都会占用一些内存资源,因此 MySQL 引入了 max_prepared_stmt_count 参数来限制其数量,以防止消耗过多的内存。max_prepared_stmt_count 参数控制了一个 MySQL 实例能够准备的最大预处理语句(prepared statements)的数量。Com_stmt_prepare 减去 Com_stmt_close 大于 max_prepared_stmt_count 可能就会出现这种错误。定位分析具体的业务sql。1、查看mysql当前值。

2023-12-27 16:07:55 890

原创 Go性能分析工具PProf

PProf是Go SDK内置的性能分析工具,用于分析和优化Go程序的性能。PProf通过收集和分析程序的运行时数据来生成性能分析报告。它使用Go语言的运行时特性,如代码注释和特殊的程序运行标记,来收集性能数据。PProf可以检测和测量程序中的CPU利用率、内存分配、阻塞等情况,并生成可视化的报告和图表,以帮助开发人员理解程序的行为和性能瓶颈。PProf 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)。

2023-10-12 21:11:13 924

原创 GOPATH和Go Modules

GoPath所引出的问题,就是因为第三方类库的包所导致的,所以在有了GoModule之后,GoPath和GoModule就分别负责不同的职责,共同为Golang项目服务GoPath用来存放我们从网上拉取的第三方依赖包GoModule用来存放我们自己的Golang项目文件,当自己的项目需要依赖第三方的包的时候,我们通过GoModule目录下的一个go.mod文件去引用GoPath目录pkg包下的mod文件夹下的第三方依赖即可。

2023-10-11 19:39:35 704

原创 go mod 使用三方包、go get命令

/ indirect ,表示该模块为间接依赖,也就是在当前应用程序中的 import 语句中,并没有发现这个模块的明确引用,如果没引用,我们提前先拉下来这个包,就会出现该注释,比如直接使用go get拉代码包,而不是 go build 让命令自动根据 go.mod 拉代码包。在实际的项目中很少被使用,故很少会显式的排除某个包的某个版本,除非我们知道某个版本有严重 bug。-u 标志是用于更新包的常见用法,它会忽略已安装包的版本,而是下载并安装最新的版本。module: 定义当前项目的模块路径。

2023-10-11 17:05:18 961

原创 golang tag标签取值

【代码】golang tag标签取值。

2023-10-10 19:09:11 186

原创 Golang可选参数实践

背景:go不支持类似java的方法重载,但对于函数的可选参数和默认参数配置,通常要在不影响不破坏现有逻辑基础上进行参数的添加。实现:通过options选项,使用函数进行参数的初始化和可选值的设置。

2023-07-05 15:56:59 342

原创 Go for-range VS for

1. for-range 本质上是 C 风格的for循环。2. for-range迭代时,声明了一个临时变量,每次将迭代的元素赋值给临时变量。编译器编译阶段。3. 理论上赋值给临时变量的操作是会产生一次数据copy,但由于编译器的优化,可能会消除实际的copy。4. for-range概念上都是copy,不管是数组、slice、map,迭代的都是值拷贝对象。数组是copy一份新数组,slice、map是copy一份新slice、map,但不会copy底层存储数据的结构。

2023-06-01 12:00:04 966

原创 Java集成nacos配置管理

【代码】Java集成nacos配置管理。

2023-05-15 11:12:03 767 1

原创 go集成nacos配置管理

【代码】go集成nacos配置管理。

2023-05-11 15:35:54 898

原创 springboot集成nacos配置管理

个人实践:Namespace用来区分环境,例如:开发环境、测试环境、生产环境。Group用来区分不同的应用。DataId用来区分配置,例如:mysql配置,redis配置,kafka配置。

2023-04-19 20:17:53 1079

原创 Nacos简介、基本概念、基本架构、安装部署

Nacos:(Dynamic) Naming and Configuration Service,动态的服务发现和配置的服务,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2023-04-19 16:24:55 479

原创 内存管理、内存映射mmap、java内存映射

MMU:Memory Management Unit,内存管理单元,CPU中独立硬件,负责处理CPU的内存访问请求。虚拟地址到物理地址的转换(即虚拟内存管理)。物理内存:真实存在的插在主板内存槽上的内存条,提供临时储存。虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上物理内存通常被分隔成多个内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。页面文件:操作系统反映构建并使用虚拟内存的硬盘空间大小而创建的文件。

2023-04-12 17:50:28 1680 1

原创 go JSON库调研

go json库的序列化、反序列化性能,api可用性对比调研。序列化:Sonic速度最快,且数据越大,速度差距越大,但Sonic的内存分配次数更多些,内存分配大小无明显差距。GoJson、JsonIter性能甚至不如原生encoding/json。反序列化:gjson最快,jsonparser次之,Sonic紧随其后,比原生encoding/json快20-70倍,数据越大,速度差距越大。序列化:Sonic速度最快,且数据越大,速度差距越大,但Sonic的内存分配次数更多些,内存分配大小无明显差距。

2023-04-07 11:50:36 1313

原创 lsof:文件被进程占用/进程占用的文件

lsof:list open files,列举打开的文件。在 linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关信息。lsof 文件名查看进程打开了哪些文件(注意,在Unix中一切(包括网络套接口)都是文件!

2023-04-04 15:31:08 2533

原创 JVM调优实战:to-space exhausted & Evacuation Failure

一次线上dubbo问题的定位,进行JVM调优实战。

2023-01-18 16:53:21 1974

原创 Redisson自定义序列化

项目之前使用的RestTemplate api,RestTemplate的序列化使用的RedisSerializer接口,使用的实现类Jackson2JsonRedisSerializer。现在改为使用RedissonClient,RedissonClient的序列化使用的Codec接口,默认实现类JsonJacksonCodec。

2023-01-10 20:06:38 5852

原创 java list分批

对集合数据分次批量处理,防止数据IO突增带来问题。

2023-01-09 10:38:56 1088

原创 规则引擎groovy

重量级方案:Acitivities、drools,适合复杂业务场景的规则引擎。轻量级方案:groovy脚本。

2022-08-21 18:33:33 2958

原创 es nested object区别

ES原生支持Object类型,也就是任意字段都可以是个对象,而ES又是所有字段都支持多值,即都可以是list。es的object类型虽然是对象类型,但是数据是打平存储的。就丢失了name和age之间的关联关系,就不知道谁是18岁谁是20岁了。可是狗娃是18岁,狗剩才是20岁啊!所以,为解决es object类型的数据扁平化存储问题,引入了nested类型。...

2022-08-06 17:49:54 865

原创 maven scope

scope作用:决定 dependency 的jar的作用范围。即控制 Jar 包在哪些周期被加载和使用。项目周期:编译、测试、打包、运行。编译和运行也可分为:测试代码的编译和运行、非测试代码的编译和运行。一般情况下,编译和运行是指非测试代码的编译和运行,测试是指测试代码的编译和运行。打包:一般情况下,指的是mvn package且打包格式是war之类(附带依赖包的),非默认的jar。scope取值:compile、test、runtime、provided、system、import。scope默认值:c

2022-07-14 12:04:53 213

原创 springboot解决CORS跨域的三种方式&cookie的跨域支持

Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。如果使用的是 Spring-Session,可以使用以下配置来设置 cookie 的 SameSite 属性(创建两个普通的SpringBoot项目A、B,A配置8081端口,B配置8082端口。

2022-06-24 15:15:14 4702 2

原创 ElasticSearch写分词keyword、text以及读分词term、match

图解:一、写分词keyword、text字符串 - text:文本索引,分词默认结合standard analyzer(标准解析器)对文本进行分词、倒排索引。不支持聚合,排序操作。模糊匹配,支持 term、match 查询。字符串 - keyword:关键词索引,不分词不分词,直接将完整的文本保存到倒排索引中。支持聚合、排序操作。支持的最大长度为32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,..

2022-05-16 15:23:57 2234

原创 ElasticSearch重建索引reindex

一、新建索引,且声明新索引mapping。二、设置新索引副本为0、刷新间隔为-1(不刷新),提升reindex速度。三、异步、多线程、批量执行reindex。四、获取reindex任务详情,等待reindex结束后,恢复新索引副本为1、刷新间隔为1秒。GET /old/_mappingGET /old/_settingsGET /new/_mappingGET /new/_settingsDELETE /newPUT /new{ "mappings": { "p

2022-05-11 17:28:07 752

原创 ElasticSearch深度分页

es的分页查询有3种方式:from+size,scroll,search_after,下面比较一下这3种方式。一、from+sizefrom+size的分页查询称为"浅"分页,它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据。这样其实白白浪费了前10条的查询。在深度分页的情况下,这种使用方式效率是非常低的,比如from = 50000, size=10, es 需要在各个分片上匹配排序并得到50010条数据,协调节点拿到这些数据再进行全局排序处理,然后结果集中取最后

2022-05-07 10:40:28 1815

原创 一次jvm导致线上内存占用过高问题定位

背景:8G物理内存,8核CPU,jvm使用的G1垃圾回收器。问题:线上内存占用告警,内存占用超过85%,且现象一直持续。分析看一下jvm启动参数配置:-Xms6144m-Xmx6144m-Xss256k-XX:+UseG1GC-XX:MaxGCPauseMillis=200-XX:+DisableExplicitGC-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/tmp/heapdump.hprof-XX:+PrintGCD

2022-02-23 20:58:11 3965 1

原创 JVM启动参数推荐配置

JVM启动参数推荐配置

2022-02-18 17:13:25 1574

原创 手写一个springboot的starter

starter 自动注入组件,为用户省去组件引入、配置类、jar包冲突解决。starter一般都包含2个类:ConfigurationProperties和AutoConfiguration。命名规则由于SpringBoot官方本身就提供了很多Starter,为了区别那些是官方的,哪些是第三方的,所以SpringBoot官方提出:第三方提供的Starter统一用 xxx-spring-boot-starter而官方提供的Starter统一用 spring-boot-starter-xxx

2022-02-16 17:56:16 668

原创 springboot2 + es7 使用RestHighLevelClient

一、引入依赖jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>二、application.properties配置spr

2022-02-15 20:54:25 7011 1

原创 PayPal(贝宝) Webhooks使用

一、paypal账号注册官网地址:https://www.paypal.com/右上角,点击“注册”按钮即可,后续步骤略。二、添加Webhook进入开发者管理台:https://developer.paypal.com/developer/applications/

2022-02-15 14:46:37 2385 1

原创 es7为document自动添加时间戳

需求:为每一条document添加时间戳解决:es5.0之前是使用 @timestamp 方式解决,es5.0之后该方式废弃,改用 pipeline 方式。步骤:1、配置时间戳pipeline:my_timestamp_pipelinePUT _ingest/pipeline/my_timestamp_pipeline{ "description": "Adds a field to a document with the time of ingestion", "proce

2022-01-24 17:45:14 2223

原创 MongoDB java client选型

1、MongoDB Java Driver2、MongoDB Java Reactive Streams3、spring-data-mongodb4、spring-boot-starter-data-mongodb一、MongoDB Java Driver官网地址: https://docs.mongodb.com/drivers/java/sync/current/#mongodb-java-driver介绍:官方提供。适用于同步 Java 驱动程序。同步 Java 驱动程序在 Mon

2022-01-12 14:22:14 561

原创 JDK8 日期工具类DateUtils

代码】JDK8日期工具类DateUtils。

2022-01-06 16:41:08 372

原创 Postman下载文件

or

2021-12-31 17:31:18 482

原创 Web浏览器发送POST请求

Chrome浏览器,F12打开Console控制台,输入:fetch('http://localhost:8080/export', { method: 'POST', headers: {appId: 4} })即可在Network页看到发送的请求。

2021-12-31 16:46:01 5952

原创 SpringBoot使用AOP

【代码】SpringBoot使用AOP。

2021-12-14 18:17:41 128

原创 easyexcel 的使用

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;

2021-12-04 23:33:04 3387

原创 SpringBoot tomcat默认上传文件大小限制

默认文件大小限制是1M。修改,在application.properties全局配置文件添加配置:# 单个文件大小限制spring.servlet.multipart.max-file-size=5M# 总文件大小限制spring.servlet.multipart.max-request-size=50M也可改为大小无限制:spring.servlet.multipart.max-file-size=-1spring.servlet.multipart.max-request-si

2021-11-24 17:21:00 3196

原创 JVM GC日志详细分析,ParallelGC和G1

一、ParallelGC:默认垃圾回收器jvm启动参数:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/gc-%t.logGC日志:OpenJDK 64-Bit Server VM (25.282-b08) for bsd-amd64 JRE (1.8.0_282-b08), bu

2021-11-22 13:08:14 4186

原创 IDEA查看类UML图

一、配置打开idea配置,搜索“Diagrams”:二、查看类的UML图类文件上右键,选择“Diagrams”:

2021-11-03 10:48:15 1979

原创 JVM 堆栈信息保存与分析

Problem Suspect --> Details(Description、Shortest Paths To the Accumulation Point、Accumulated Objects in Dominator Tree等等)左上角 File --> Open Heap Dump --> Leak Suspects Report(泄漏可疑报告):为GC日志文件添加启动时间戳后缀,格式为:YYYY-MM-DD_HH-MM-SS。jvm启动参数中添加如下参数:用于OOM时自动保存堆栈信息;

2021-11-01 10:33:58 5274

空空如也

空空如也

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

TA关注的人

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