自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 资源 (6)
  • 收藏
  • 关注

原创 Linux Ubuntu 手动搭建webDav

ununtu新建webdav环境 能够自动创建对应用户的文件夹

2023-12-08 16:25:11 2080

原创 Keycloak怎么接入短信登录

keycloak计入短信登录

2023-09-25 10:47:41 388 1

原创 单元测试案例

【代码】单元测试案例。

2023-08-18 10:38:51 174

原创 如何建立单元测试

zixun-quickstart-mk3生成的项目已经配置好了基础的BaseTest,各个测试类只需要继承BaseTest就可以开始进行单元测试的编写了。

2023-08-18 10:38:19 990

原创 压测标准和接口

此处省略部分细节,介绍压测流程,提供给已了解细节的人快速进行压测。强烈建议首次进行压测者详细阅读全文注意最大qps和预期qps的区别估算预期qps准备数据,单一请求/固定值枚举随机/线上流量测试环境80.188压测:不求找到瓶颈,只为排查比较明显的程序问题,由于测试环境性能有限,可以将部分低性能依赖mock掉这一步可以这样压:wrk -t8 c200 d60s --latency -H “Host:host−−latencyhost−−late。

2023-08-18 10:37:28 149

原创 图片匹配服务

【3】更新图片库关系。

2023-08-18 10:34:52 37

原创 压测的注意事项

1、压测的时候需要不断对 自己当前的压测参数,观察后台的指标的变化,目的是为了 不让空跑的现象发生,另外如果接口的情况比较复杂的话,不要只压测最简单的接口,也要查看是否压到了最坏的情况(没有命中缓存的情况、链接数升高的情况)3、保证压测的结果更准,要记得去分析性能的瓶颈。2、压测的线程数 是内核的2-3倍。5、怎么分析系统的瓶颈。

2023-08-18 10:20:51 95

原创 什么是边车

Sidecar:边车。微服务中数据平面的进程,负责转发应用、服务请求,并支持限流、熔断、负载均衡等特性。Control-plane: 控制平面。微服务的配置中心,负责配置下发、数据搜集、服务发现等功能。应用: 应用是指服务的使用方。注:有些服务可能既有服务使用方又有服务提供方的角色。服务: 服务是指服务的提供方。

2023-08-18 10:20:16 114

原创 作为工程师应该具备哪些素质

美团技术团队做了很多我喜欢的框架他们的文章也非常棒,以下内容来自于 美团技术团队技术基本功存在于每一行代码中@美团金融技术负责人。

2023-08-18 10:19:06 142

原创 怎么写一个项目方案

线上qps2000,主要的性能瓶颈在于出现在数据库I/O上。另外,如果是一个正常部署的容器,qps能达到几百就不错了。资讯服务现在做了静态的底层页,所以热点新闻多数会命中底层页,即便没有命中底层页,也会走多层的缓存,不会直接打到资讯服务的接口上。

2023-08-18 10:17:22 100

原创 Mysql 几条好用的调优方法

区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。再或者使用连接来替换。这样的语句,普通索引是无法满足查询需求的。如果连接方式是inner join,在没有其他过滤条件的情况下MySQL会自动选择小表作为驱动表,但是left join在驱动表的选择上遵循的是左边驱动右边的原则,即left join左边的表名为驱动表。优化的方法如下:可以取前一页的最大行数的id,然后根据这个最大的id来限制下一页的起点。

2023-08-18 10:06:40 80

原创 mysql 连接池建立过程

2023-08-14 11:25:55 49

原创 Mysql 建索引规范

今天在建线上表的时候,做了一个varchar的索引,运维说varchar的索引会占用很大的内存。于是 上网搜了一下建索引规范。

2023-08-14 11:25:06 290

原创 了解一下Caffine

一、简介Caffeine 是基于Java 8 开发的、提供了近乎最佳命中率的高性能本地缓存组件,Spring5 开始不再支持 Guava Cache,改为使用 Caffeine。不管在并发读、并发写还是并发读写的场景下,Caffeine 的性能都大幅领先于其他本地开源缓存组件。本文先介绍 Caffeine 实现原理,再讲解如何在项目中使用 Caffeine。二、Caffeine 原理2.1 淘汰算法2.1.1 常见算法对于 Java 进程内缓存我们可以通过 HashMap 来实现。

2023-08-14 11:22:10 102

原创 什么是 fullgc

先说一下结论,Full GC这个概念是没有官方定义的,而且含义还特别混乱,在不同地方表达的含义是不同的,需要就不同的场景分别进行讨论。

2023-08-14 11:21:32 202

原创 Java堆、栈、内存的知识

在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。

2023-08-14 11:19:52 503

原创 HashMap源码 学习日志

int h;int h = 0;return h;一般的数据结构,不是查询快就是插入快,HashMap就是一个插入慢、查询快的数据结构。但这种数据结构容易产生两种问题:① 如果空间利用率高,那么经过的哈希算法计算存储位置的时候,会发现很多存储位置已经有数据了(哈希冲突);② 如果为了避免发生哈希冲突,增大数组容量,就会导致空间利用率不高。而加载因子就是表示Hash表中元素的填满程度。加载因子 = 填入表中的元素个数 / 散列表的长度。

2023-08-14 11:18:57 108

原创 多线程CompletableFuture

【代码】多线程CompletableFuture。

2023-08-14 11:14:24 44

原创 如何给ELK日志加上索引

业务日志里的log patter放了seq 字段,那就可以在进入aop的时候 打上seq作为日志的字段索引,然后在处理流程结束的时候,拿出seq字段索引,这样排查的时候,就可以根据这个字段来排查了。1、遇到长流程的时候,日志记录是非常重要的。如何排查日志,可以在MDC中去put对应的值,这样就等于对你关心的关键字段加上了索引,在elk中可以通过该索引就能 容易排查到问题。同样的,如果是kafka的接受类,你可以把 offset和partition作为字段索引,也是及其好用的。

2023-08-14 11:13:27 672

原创 返回参数规范

目录接口参考 项目目录结构设计,增加部分领域模型后缀强制定义,方便统一编码风格。controller:请求处理module:按大业务区分,对多个业务对象数据聚合处理@Componentmanager:按业务对象区分,对同一业务对象的数据聚合处理@Componentservice:按业务对象区分,主要负责数据获取impl:主要负责数据获取的接口的具体实现@Servicedao:主要负责数据访问层xxxDao:固定后缀 Daoconfig:配置类集合目录。

2023-08-14 11:11:35 185

原创 Sentinel使用实例

默认限流异常处理URL 限流触发后默认处理逻辑是,直接返回 “Blocked by Sentinel (flow limiting)”。@Override使用注解下的限流异常处理如果需要自定义处理逻辑,填写注解的属性(针对所有类型的,需自行判断)或fallback属性(针对熔断降级异常),注意对应方法的签名和位置有限制,详情见Sentinel 注解支持文档。

2023-08-14 11:09:38 1234

原创 分布式锁 -- 分布式锁的种类和原理

jvm进程锁和分布式锁。

2023-08-09 10:40:15 91

原创 年轻代频繁GC ParNew导致http变慢

某日下午大约四点多,接到合作方消息,线上环境,我这边维护的某http服务突然大量超时(对方超时时间设置为300ms),我迅速到鹰眼平台开启采样,发现该服务平均QPS到了120左右,平均RT在2秒多到3秒,部分毛刺高达5到6秒(正常时候在60ms左右)。qps情况:rt情况。

2023-08-09 10:00:10 1935

原创 创建索引的规范

今天在建线上表的时候,做了一个varchar的索引,运维说varchar的索引会占用很大的内存。于是 上网搜了一下建索引规范。

2023-08-09 09:55:25 123

原创 Jstack线上问题排查

1.top查找出哪个进程消耗的cpu高。执行top命令,默认是进程视图,其中PID是进程号(记下进程号)2.top中shift+h 或“H”查找出哪个线程消耗的cpu高 (记下最高的几个线程号)4、printf “%x\n” 线程号(得到线程16进制)

2023-08-09 09:52:44 185

原创 如何使用多线程来完成一个java任务

【代码】如何使用多线程来完成一个java任务。

2023-08-09 09:52:13 66

原创 业务日志里加上traceId

业务日志里的log patter放了seq 字段,那就可以在进入aop的时候 打上seq作为日志的字段索引,然后在处理流程结束的时候,拿出seq字段索引,这样排查的时候,就可以根据这个字段来排查了。1、遇到长流程的时候,日志记录是非常重要的。如何排查日志,可以在MDC中去put对应的值,这样就等于对你关心的关键字段加上了索引,在elk中可以通过该索引就能 容易排查到问题。同样的,如果是kafka的接受类,你可以把 offset和partition作为字段索引,也是及其好用的。

2023-08-09 09:50:07 209

原创 线上容器卡顿的排查思路

CPU 内存不超过 80%Heap 不超过 80%non-Heap 正常[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-coGpw0v2-1691545686403)(/uploads/new2021/images/m_845526dc8feb927116914051c6d735d1_r.png)]这个曲线是正常的。表示jvm中有足够的空间。

2023-08-09 09:48:23 78

原创 mysql高并发下主键自增打来的问题

如果数据库的并发率很高,比如在插入记录后执行查询主键之前,数据库又执行了若干条插入记录的SQL语句,这时,通过表1 返回的主键值就是最后一条插入语句的主键值,而非我们希望的主键值了。在很多情况下,我们需要获取新对象持久化后的主键值。在JDBC 3.0之前的版本中,PreparedStatement不能绑定主键,如果采用表自增键(如MySql的auto increment或SqlServer的identity)将给获取正确的主键值带来挑战——因为你必须在插入数据后,马上执行另一条获取新增主键的查询语句。

2023-08-09 09:45:59 914

原创 什么事P95、P99

前段时间,在对系统进行改版后,经常会有用户投诉说页面响应较慢,我们看了看监控数据,发现从接口响应时间的平均值来看在500ms左右,也算符合要求,不至于像用户说的那么慢,岁很费解,后来观察其它的一些指标发现确实是有问题,这个指标就是P95,P99.9,我们发现虽然平均响应时间并不高,但P95和P99.9却达到了2s以上,说明我们的接口确实存在慢查询。于是捞取了一些慢查询的请求日志终于发现问题。那么P95、P99又代表什么意思呢?

2023-08-09 09:45:04 653

原创 如何阐述自己做了一个什么样的东西

线上qps2000,主要的性能瓶颈在于出现在数据库I/O上。另外,如果是一个正常部署的容器,qps能达到几百就不错了。资讯服务现在做了静态的底层页,所以热点新闻多数会命中底层页,即便没有命中底层页,也会走多层的缓存,不会直接打到资讯服务的接口上。

2023-08-09 09:39:26 74

原创 如何解决高并发问题(思路)

对于一些大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。避免使用错误的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做条件判断,尽量使用比的条件判断方式.使用JAVA中效率高的类,比如ArrayList比Vector性能好。并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作。

2023-08-08 15:34:40 149

原创 Bean 和 static的区别

Static 没有办法控制在多个并发请求的时候,只生成一个实例。有多少个请求就会生成多少个 实例,那么此时如果用 @Bean的方式来注解,就会启用SpringBoot中的单例模式,从始至终都只有一个实例。静态方法我们都知道,那么@Bean的方式怎么使用呢?

2023-08-08 15:33:31 284

原创 静态方法为什么不能用非静态变量

写到这答案已经出来了,静态方法是属于类的,动态方法属于实例对象,在类加载的时候就会分配内存,可以 通过类名直接去访问,非静态成员(变量和方法)属于类的对象,所以只有该对象初始化之后才存在,然后通过类的对象去访问。这些内存都在方法区分配。注意此时就会为我们的类变量也就是静态变量分配内存,但是普通成员变量还没。我们需要首先知道的是静态方法和静态变量是属于某一个类,而不属于类的对象。也就是说如果我们在静态方法中调用非静态成员变量会超前,可能会调用了一个还未初始化的变量。验证的主要作用就是确保被加载的类的正确性。

2023-08-08 15:32:51 144

原创 Java Kafka 怎么写

KafkaListener 用于消费类,代表说你的topic产生一条数据时,只要你是对应的group,就会自动收到一条对应的消息,此时在里头写执行代码,就做到了 kafka放出消息自动执行。gruopid 是 org.springframework.kafka。pom文件 引入的jar包是 spring-kafka。

2023-08-08 15:31:58 928

原创 Java Mongo怎么写

注意这里有一个 if (StrUtil.isNotEmpty(replicaSet)) ,就是通过这层设置来判断是集群连接还是单点连接。这里因为是 单点的mongo,所以 replicaSet写成 “”,待会儿会对replicaSet的值进行判断,来判断它是单点还是集群。哦对了,还有Mongo的实体类是怎么定义的。先前积累了一套 mongo的做法,但是只能针对于单点进行操作,这个教程可以帮助你,无论是单点还是集群,都能连接的上进行操作。其实就是在原本的类的声明的基础上加了 @Document的注解。

2023-08-08 15:31:22 100

原创 项目规范 编写规范(范例)

目录接口参考 项目目录结构设计,增加部分领域模型后缀强制定义,方便统一编码风格。controller:请求处理module:按大业务区分,对多个业务对象数据聚合处理@Componentmanager:按业务对象区分,对同一业务对象的数据聚合处理@Componentservice:按业务对象区分,主要负责数据获取impl:主要负责数据获取的接口的具体实现@Servicedao:主要负责数据访问层xxxDao:固定后缀 Daoconfig:配置类集合目录。

2023-08-08 15:30:37 253

原创 aop执行模版

【代码】aop执行模版。

2023-08-08 15:29:59 38

原创 业务线 产品完整性思考

置顶文章数和置顶个股数。选股文章数和选股个股数。支持个别场景下的数据统计。

2023-08-08 11:45:02 35

原创 http请求外部文件

底下的某某util都是来源于hutools。

2023-08-08 11:37:16 73

调度系统-调度系统详情.pdf

调度系统-调度系统详情.pdf

2023-08-08

布隆过滤器-详说布隆过滤器.pdf

布隆过滤器-详说布隆过滤器.pdf

2023-08-08

压测之道-详说压测的那些事情.pdf

压测之道-详说压测的那些事情.pdf

2023-08-08

线上系统の扩容之道.pdf

线上系统の扩容之道.pdf

2023-08-08

设计模式在mybatis中的应用

设计模式在mybatis中的应用

2023-08-08

批量处理文件名.bat

还在为多个文件的命名而感到困惑吗? 还在因为命名一个个文件而不厌其烦吗? 传统的F2命名虽然方便但产生的括号不符合命名规范 使用这个工具,你只需要全选之后点F2,统一命名为带括号的形式之后,再运行这个脚本,就能变成下划线+序号的形式。 用它!放心,不是病毒文件!

2019-12-23

Java连接Mysql做数据可视化(含sql脚本).zip

Java连接Mysql做数据可视化 可视化组件使用的是echarts.js 内含配置项文本手把手教你配置项目

2019-10-31

SSM网上商城项目.zip

一个很基础的SSM网上商城,Java项目,实现了功能包括登录,商品展示和订单展示 逻辑如下:登录看到首页,在首页看到商品并下单,下单之后,订单页会显示相关的订单信息,首页和订单页都支持增删改查 配套的讲解在:https://blog.csdn.net/qq_34093082/article/details/100571944

2019-10-31

hbase-echarts.zip

java连接hbase做数据库连接 其中hbase的参数配置类已经写在了yml底下,使用的时候只需要修改参数就能使用

2019-10-31

文件名批处理.7z

1、里面写了使用的步骤是什么,按照步骤来完成就行 2、第一步:选定要重命名的文件点击F2,统一命名,此时所有文件会有后缀(数字) 3、第二步:点击第一个bat删除右括号 4、第三步:点击第二个bat将左括号替换成为_ 5、第四步:点击第三个括号去除文件名尾部产生的空格

2019-10-12

【基础练习】jsp+servlet+jdbc 网上购物商系统(带sql脚本)

这个网上购物商城系统的教程适用于  基础入门的同学,其中前端采用了一些layui的框架的知识,数据库用的也是原生的JDBC做连接。往后学习,大家会碰到很多的框架,例如JDBC的配置类不需要自己写,用mybatis就可以做连接和增删改查,例如servlet也会被spring boot的注解所代替,但是归根结底,它们都是要基于这类知识的。我会把我 拓展了的地方写在文章一开始的地方。   1、在前端往后端传值的地方用了layui table 数据传值,其中 总价实时改变和订单价格实时改变的地方 用了layui的模板。 2、servlet做了数据的组装,使得传回的值是可以被layui table所接收的。 3、商城功能:登陆功能+购物车功能+商品展示功能

2019-08-15

空空如也

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

TA关注的人

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