- 博客(43)
- 收藏
- 关注

原创 MySQL索引合并的使用与原理
文章目录索引合并不足简介算法index merge intersection access algorithm(索引合并交集访问算法)执行流程必要条件index merge union access algorithm(索引合并并集访问算法)必要条件执行流程例子index merge sort sort-union access algorithm (索引合并排序并集访问算法)必要条件执行流程例子实战复现 intersect复现 union复现 sort-union复现因为组合索引没有完全覆盖而导致没有使用
2020-07-29 22:52:45
4215
1

原创 谈谈时间序列数据库
文章目录什么是时间序列数据时序数据格式时序数据的应用场景时间序列数据的特点常见时序数据库对比opentsdbprometheusinfluxdb设计一种时序数据库功能点存储读写流程分布式存储其它本文转自https://gentlezuo.github.io/2019/11/12/%E8%B0%88%E8%B0%88%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97%E6%9...
2019-11-12 21:05:52
8713

原创 APM工具对比
市面上有很多分布式链路监控的工具,客观对比。调研市面上的APM(Application Performance Management)理论模型大多都是借鉴,Google Dapper论文。我最近也在选取使用哪一个工具,这里的对比是在Spring Cloud 中的使用。对比三种工具:zipkin:Twitter公司开源的一个分布式追踪工具,被Spring Cloud Sleuth集成,...
2019-07-16 21:28:56
17937

原创 Prometheus介绍与MySQL监控
文章目录Prometheus介绍与MySQL监控简介组件特点工作流程数据模型四种 Metric 类型数据存储数据展示监控mysql的例子配置安装mysqld_exporter将数据展示在Grafana配置数据源其它监控Prometheus介绍与MySQL监控文章源地址 : Prometheus介绍与MySQL监控简介普罗米修斯是一个开源系统监控和警报工具包。它能监控很多东西,比如机器,J...
2019-07-13 21:55:11
3386
2

原创 谈谈对分布式链路追踪与监控的理解
分布式链路追踪与监控分布式链路追踪与监控背景分布式跟踪术语性能采样数据收集安全与隐私trace生成的损耗数据展示与查询服务告警分布式链路追踪与监控现代互联网服务通常是复杂的大规模分布式系统,持续跟踪与监控每个服务显然是必须的。背景比如一个web搜索,前端服务器经一个web查询分发给上百台搜索服务器,每个服务器在自己的inedx上搜索,例如搜索新闻,图片,视频,音乐,博客等,还需要配合例如...
2019-07-13 15:00:34
1314
原创 Linux CGroup cpu memory cpuset子系统简介
cgroup的作用,应用范围Linux cgroups的全称是Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。另外,Linux cgroups还可以对进程进行优先级设置、审计,以及将进程挂起和恢复操作。cpumemdevicecpuacctcpuset...
2021-09-20 12:08:15
1548
原创 druid连接池RemoveAbandanded导致的性能问题
DB driuid连接池 removeAbandanded 配置导致CPU使用率飙高单机压测发现请求QPS不高也很吃CPU,通过观察火焰图和热点代码发现是获取DB连接池的问题。DB连接池底层使用了driuid,并且将removeAbandanded默认配置为true。在com.alibaba.druid.pool.DruidDataSource#getConnectionDirect中有一段逻辑if (removeAbandoned) { StackTraceElem
2021-09-19 15:29:22
953
原创 如何执行压测
文章目录压测是什么压测的目的压测的要求压测的分类压测的过程明确压测目的梳理压测链路准备压测数据构造压测环境执行压测压测的保护机制清理数据总结复盘压测常见问题压测是什么压测是一种测试方式,通过不断对被压服务施加压力的来测试服务的性能极限,寻找瓶颈。压测的目的压测的目标关系到压测方案的确定和实施。一是压测的场景(接口,接口组),二是压测的目标探寻服务的性能上限,可通过压测结论进行限流,保护自身的服务大促前,判断目前的机器配置、服务逻辑是否能满足业务的要求,如果不满足需要进行优化(加机器,加缓存,代
2021-09-19 14:31:23
775
原创 web开发安全
文章目录越权水平越权案例防御手段垂直越权XSS持久型攻击(持久型攻击)案例反射型攻击案例DOM型攻击防御手段XSRF服务请求伪造SQL注入命令注入文件上传web开发安全问题越权越权是指操作主体能够访问逾越期权限的资源。比如A操作了B的订单,非管理者查看了管理者才能访问的数据。越权可以分为水平越权和垂直越权。水平越权水平越权又被称之为数据越权,如上述所说的A操作了B的订单数据。案例如下所示,攻击者可以取消任意一个订单 cancelOrderByOrderId(String orderId){
2021-07-18 16:29:09
374
原创 java日志总结系列4-log4j2配置及常见问题
java日志总结系列4-log4j2配置及常见问题java日志总结系列1-日志规范文章目录java日志总结系列4-log4j2配置及常见问题log4j2配置日志常见问题log4j2配置配置可参考 https://logging.apache.org/log4j/2.x/manual/configuration.html几个注意的点Logger是一个树形结构,最上层是Root,一个日志如果没有匹配的logger,最终会走到Root,即使匹配到了一个Logger,没有配置additivity,也会
2021-05-29 22:35:04
360
原创 java日志总结系列3-大型日志收集处理系统
java日志总结系列3-大型日志收集处理系统文章目录java日志总结系列3-大型日志收集处理系统日志系统架构一些问题总结之前说到日志可以存储到磁盘,但是有如下问题:微服务架构下,一个服务部署在不同的机器上,排查问题时需要登录不同的机器grep日志,显然不是一个好的做法。4根据日志的内容制作报表,配置告警不易实现…因此通常大型服务日志都是存储在一个日志系统中,该日志系统包含日志收集功能、日志存储功能、日志查询功能、其他根据日志数据开发的功能,例如告警等。日志系统架构日志系统需要解决如下几件
2021-05-29 17:06:25
1958
原创 java日志总结系列2-日志框架
最近在进行日志标准化治理,准备做一番总结。本章讲述日志框架、日志实现。理清日志门面:SLF4J、JCL日志实现:JUC、log4j、logback、log4j2、slf4j文章目录java日志总结系列2-日志框架日志门面SLF4JJCL日志具体实现log4jlogbacklog4j2jucslf4j-simple项目中SLF4J搭配日志实现`SLF4J+logback``SLF4J+log4j``SLF4J+JUC``SLF4J+log4j2``其他`使用SLF4J替换其他日志框架总结注意事项jav
2021-05-29 15:08:58
322
2
原创 java日志总结系列1-日志规范
最近在公司做日志标准化治理,准备总结一些日志相关的文档。文章目录java日志总结系列1-日志规范日志级别日志内容日志注意事项java日志总结系列1-日志规范日志是系统的重要组成部分,用于记载系统的执行记录、审计、排查问题、数据采集等。日志需要持久化,通常日志仅仅需要持久化到磁盘,或者存储到ES,有些场景也需要将日志存储到MySQL中,例如重要的请求日志、用户抽奖的执行记录、提现操作等。本系列主要讲述java系统中存储到文件、ES中的日志。日志级别由高到低可分为error、warn、info、de
2021-05-28 22:23:46
564
原创 数据迁移:双写调研
注:没有实践过,完全是为了学习目的目的:将A库中N张表中的数据迁移到B库的M张表中,在B库中做分表操作。在迁移过程中要求不停服。方案方案:双写具体流程在B库中建表,在代码中实现双写的开关以及功能(读老库,增删改老库和新库)由于只读老库,所以新库中的功能实际上未对外提供数据,即使期间新库数据存在问题,依旧不影响服务功能新增操作:老库和新库都新增,因此新增的数据新老库是一致的。(新老库自动生成的主键不一致问题,可以先插入老库,得到id,再插入新库,插入数据带上id)删操作:删除操作幂等,
2021-02-10 12:14:05
2477
1
原创 OGNL简介
Ognl文章目录Ognl数据结构访问属性实例属性静态属性赋值调用方法实例方法静态方法操作符集合操作构造访问投影选择选择第一个选择最后一个索引机制官方文档例子Ognl (Object-Graph Navigation Language)是对象图导航语言,用于访问一个容器中的对象的属性,调用对象的方法。主要是为了方便访问对象的属性和方法。应用Struts2arthas中,命令参数数据结构OgnlContext是一个容器,本质是一个Map,key是String类型的值,value是对象。因此它具
2020-11-29 10:39:28
2326
1
原创 一次MySQL join执行错误分析
一次MySQL join执行错误分析文章目录一次MySQL join执行错误分析分析总结分析练习一道MySQL题目按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩分析:要获得学生的学号,姓名,因此需要student表要获得所有课程的成绩,需要score 和course表使用join获取所有课程的成绩,使用group by获取平均成绩使用order by desc排序sql:SELECT st.s_id "学号", st.s_name "姓名", avg( sc.s_s
2020-09-05 17:25:24
722
原创 单元测试进阶Mockito
Mockito文章目录Mockito简介使用准备工作创建mock对象验证mock对象是否执行了某些操作打桩参数匹配器验证方法的调用次数/最多/最少/从不等返回值为void的方法调用时抛异常打桩验证执行顺序验证没有任何交互检查是否还有没有验证的交互简化Mock创建,注解驱动连续打桩回调打桩doReturn()、doThrow()、doAnswer()、doNothing()、doCallRealMethod()系列方法的运用监视真实的对象resetdetail自定义失败打印信息laambda支持原理限制简
2020-08-29 14:06:16
2198
原创 Junit单元测试简要总结
Junit单元测试文章目录Junit单元测试简介常用注解使用参数化测试其他简介单元测试在开发中占据很重要的地位,它能发现问题,提高效率,在java中应用最广泛的单元测试框架就是Junit,它被集成在了多个框架或者工具中,例如IDEA、Spring等。通常我们使用注解的方式使用Junit。常用注解注解描述@Test注解于方法上,表示作为测试案例@Before注解于方法上,在每一个注解案例运行前,都会执行此方法@After注解于方法上,在每一个注解案例执行后,都
2020-08-21 23:10:20
1480
原创 HBase基础笔记
文章目录优质博客特点架构HMasterHRegionServer对外提供的接口zookeeper数据模型存储shell命令脚本使用hbase脚本java api操作表操作数据优质博客https://juejin.im/post/5c666cc4f265da2da53eb714http://hbasefly.com/https://hbase.apache.org/book.htmlhbase是一个运行与、于hadoop上的分布式,可扩展,多版本,大数据存储的非关系型数据库。具有广泛的使用场景。
2020-08-15 23:00:31
461
原创 springcloud-链路追踪skwalking
文章目录简介原理简介搭建下载服务端配置数据持久化方式MySQL数据自动清理告警配置客户端UI简介在一个微服务中,链路追踪能够准确监控所有调用链路,从而定位慢调用,失败调用。简介skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。发起者是吴晟,现在是Apache项目。官方文档原理简介skywalking分为四个部分:探针,平台后端,存储,UIProbes,探针,探针因使用的语言不同而不通,收集数据并且格式
2020-08-01 11:02:24
1524
原创 SpringCloud-链路追踪sleuth
文章目录版本说明简介术语Zipkin示例启动zipkin依赖配置文件验证使用rabbitmq进行链路数据传输(可选)日志收集(可选)Elasticsearch+Kibana+Logstash在分布式系统中,链路将总是十分重要。版本说明组件版本说明zipkin2.12.9rabbitmq3.7.15erl10.4rabbitmq依赖elasticsearch6.5.3使用7.x会与zipkin冲突kibana6.5.3使用7.x会与zi
2020-08-01 10:59:42
368
原创 SpringCloud配置中心nacos
文章目录配置nacos使用mysql持久化解决不支持mysql8.x的问题登录问题依赖配置文件发布于获取配置发布获取启动类集群搭建nacos配置配置文件nacos的配置功能比springcloud原生的要强大,更简洁。配置nacos使用mysql持久化创建一个mysql数据库,例如create database nacos将nacos/cofn/nacos-mysql.sql中的sql语句在该数据库中执行。修改nacos/conf/application.properties,在文件之后追加
2020-08-01 10:55:15
594
原创 SpringCloud注册中心nacos
文章目录nacos简介下载安装服务注册于发现依赖配置文件启动类集群配置部署nacosapplication.yaml其它参考为什么要使用nacos?nacos简介nacos=consul+config,既可以作为配置中心,还可以作为注册中心,并且具有web ui,可以在线优雅的进行配置,服务下线,监控等。减少组件的集合。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。单论注册的功能来来说,它与co
2020-08-01 10:53:10
276
原创 SpringCloud注册中心Consul
文章目录简介下载安装单机版搭建依赖配置文件启动类效果集群搭建consul参数agent参数vs others参考既然eureka不再维护,那么我们可以考虑其他的组件,比如consul。consul生态很好。简介Consul的主要特点是:服务发现:Consul的客户可以注册服务,并且其他客户可以使用Consul来发现给定服务的提供者。使用DNS或HTTP,应用程序可以轻松找到它们所依赖的服务。运行状况检查:Consul客户端可以提供任意数量的运行状况检查,这些检查与给定服务(“是Web服务器返回2
2020-08-01 10:50:39
215
原创 SpringCloud注册中心eureka
文章目录eureka服务端搭建依赖配置文件启动类服务注册依赖配置启动类流程简述在springcloud中eureka被用来作为一个注册中心组件。但是eureka2.x已经不再维护了,不过目前使用还是没什么问题,而且1.x也够用了。而且还有多种注册中心可供选择,比如consul。eureka服务端搭建依赖<parent> <groupId>org.springframework.boot</groupId> <artifac
2020-08-01 10:45:01
172
原创 MySQL索引-看一篇就够了
文章目录常见的索引数据结构有序数组hash二叉树,红黑树lsm树b树b+树索引分类是否唯一是否聚集是否单列其他innodb中的索引前提b+树索引哈希索引全文索引索引管理索引优化MRR(Multi-Range Read)优化Index Condition Pushdown(ICP)优化descending indexes(降序索引)使用索引扩展(use of index extensions)实践优化器不使用索引的情况自增主键联合索引唯一索引与非唯一索引的性能差别给字符串加索引常见的索引数据结构有序数组
2020-07-29 22:42:10
334
原创 Java排查问题工具
文章目录jinfo用法例子问题jps用法例子jconsole用法例子jcmd用法例子jstack例子jmap使用例子jhat使用例子jstat使用总结jdk自带一些工具来查看或更改java程序的信息。在程序出现问题时可以用它们分析。jinfojinfo用来查看JVM的参数,更改参数等。用法$ jinfo Usage: jinfo [option] <pid> (to connect to running process) jinfo [optio
2020-07-29 22:34:16
741
转载 JMH基准测试
文章目录简介使用测试目标环境配置测试注解@BenchmarkModeWarmupMeasurementThreadsForkoutputTimeUnit@BenchmarkParamSetupTearDownState总结简介本文转载自https://gentlezuo.github.io/2019/11/06/jmh%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95通...
2019-11-09 18:00:06
394
原创 垃圾回收-标记整理算法的两种实现
https://gentlezuo.github.io/2019/08/10/gc-%E6%A0%87%E8%AE%B0%E6%95%B4%E7%90%86%E7%AE%97%E6%B3%95%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%AE%9E%E7%8E%B0/#more
2019-08-24 20:54:39
625
原创 springcloud系列导读
springcloud系列导读spring cloud是微服务的集大成者,它集成了许多优秀的工具,因此使用spring cloud 全家桶就可以很容易的开发微服务项目。它基于spring boot,因此配置简单,容易学习。zookeeper入门springcloud-erueka注册中心springcloud-consul注册中心springcloud-服务调用-robbin负载均...
2019-06-30 23:28:40
186
原创 java并发编程:synchronized与对象头
原章文地址:java并发编程:synchronized与对象头java并发编程:synchronized与对象头多线程提高了效率,但是也会出现同步的问题。为了解决这个问题,java提供了synchronized关键字和Lock类。synchronized的使用synchronized使用如下:修饰普通方法:private synchronized void add(int val...
2019-06-11 08:17:50
1374
原创 java并发编程:进程和线程
java并发编程:进程和线程java并发编程:进程和线程进程的由来线程的由来java并发的问题其他参考java并发编程:进程和线程进程的由来为什么有进程:现在计算机的功能已经十分丰富了,可以一边看视屏,一边浏览网页等等。但是在计算机开始出现的时候,计算机的功能十分简单,人们输入特定的指令,计算机就执行该指令,但是当人们休息或者思考的时候计算机就不工作,效率十分低下。为了更好的利用计算机,...
2019-06-09 23:18:08
363
原创 RPC简介
RPC原文章地址RPC简介RPC(Remote Procedure Call)就是远程过程调用。就是一台机器调用另外一台机器上的服务,比如想要执行一个函数,在另一台机器上执行完之后返回一个结果。举一个简单的例子,机器A想要对一张图片进行一些渲染,但是它没有这个这个功能,却又知道机器B有这个功能,所以A将这张图片以及要执行的操作发送给机器B,B收到消息后处理图片,然后将处理后的结果发送...
2019-05-30 16:40:11
458
1
原创 maven总结
maven原文章地址:maven总结简介maven是一个Apache下由java开发的开源项目。基于对象模型的概念(POM),Maven利用能管理一个项目的构建、报告和文档等步骤。需求当写一个项目的时候往往需要引入第三方依赖包,但是一个第三方包可能又要依赖其他的包,一旦依赖过多,就会给开发人员造成很大的负担,而且容易出错。maven使用一个仓库存储需要的第三方库,而且可以自动解决依赖问题...
2019-05-30 16:29:19
272
原创 java反射
java反射java反射Class类获取Class对象的方法Class类的常用的方法Constructor类常用方法Field类常用方法Method类常用方法配置文件+反射工具类Modifier常用方法一些常量缺点原文章地址java反射java反射最近使用到了java反射,记一笔笔记。定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,...
2019-05-27 16:32:14
379
原创 StackOverflowError
StackOverflowErrorStackOverflowError 是一个java中常出现的错误:在jvm运行时的数据区域中有一个java虚拟机栈,当执行java方法时会进行压栈弹栈的操作。在栈中会保存局部变量,操作数栈,方法出口等等。jvm规定了栈的最大深度,当执行时栈的深度大于了规定的深度,就会抛出StackOverflowError错误。典型的例子:public class ...
2019-05-26 20:31:51
95670
6
原创 Redis多机数据库
Redis多机数据库原文章地址复制数据库状态一致:主从服务器中的数据库中保存相同的数据库。为了保证这种一致性,可以使用复制的方法。在Redis中可以使用 slaveof 命令让一个服务器复制另一个服务器,也就是让从服务器去复制主服务器。方式psync命令:完整重同步:处理初次复制的情况,完整重同步是指主服务器的数据库生成RDB文件和在生成RDB文件期间缓存的命令,并发送给从服务器。...
2019-05-25 10:55:45
192
原创 类图与类之间的关系
类图与类之间的关系类图与类之间的关系类图类之间的关系关联双向关联单向关联自关联聚合组合依赖泛化关系接口与实现关系类图与类之间的关系类图参考了http://www.uml.org.cn/oobject/201211231.asp,讲的很好类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完...
2019-05-24 11:43:07
1096
原创 Redis对象与持久化
原文章地址Redis对象与持久化Redis使用5种对象来实现键值对数据库:字符串,列表,哈希,集合,有序集合对象。使用这么多对象方便了在不同情景下的使用。对象的类型与编码typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 ...
2019-05-23 22:32:06
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人