- 博客(66)
- 资源 (11)
- 收藏
- 关注
原创 gorm-sharding分表插件升级版
需要代码的可以联系我,本文章是纯图片。gorm-sharding 解决了原生sharding的三个问题:1.不支持不带分表键的查询 2,不支持不同分表策略的配置 3.没有配置分表的自定义sql可能因为无法解析而发生异常
2024-05-09 16:47:44 609 5
原创 golang由浅入深
Go语言基础知识:学习goroutine需要先熟悉Go语言的基本语法和特性。并发编程:goroutine是Go语言的并发机制,因此学习goroutine需要对并发编程有一定的了解。Go语言的channel:goroutine之间通信的基本机制是channel,因此学习goroutine需要掌握channel的使用方法。Go语言的sync包:sync包提供了用于同步goroutine的工具,因此学习goroutine需要了解sync包的相关内容。垃圾回收:Go语言的垃圾回收机制对gorouti
2023-02-10 23:48:50 553 1
原创 golang学习历程必读
了解Go语言的历史和背景:Go语言是由Google开发的开源编程语言,了解它的历史和背景可以帮助您更好地理解Go语言。熟悉Go语言的基本语法:学习任何编程语言都需要先熟悉它的基本语法,Go语言也不例外。了解Go语言的特性:Go语言具有诸如并发、快速编译、高效内存管理等独特特性,了解这些特性可以帮助您更好地利用Go语言。掌握Go语言的核心库:Go语言提供了丰富的核心库,学习Go语言需要掌握这些核心库的使用方法。了解Go语言的社区:Go语言有着活跃的社区,学习Go语言需要了解这个社区的运作方式。
2023-02-10 23:40:26 523
原创 go 性能监测、gin、resty、gin等框架的使用
目录加载顺序gingo-restyfmtosgo pprof性能监控概述说明如何使用美化查看内存使用情况查看cpu使用情况加载顺序go语言标准规定了多个编译单元的初始化顺序,包的初始化顺序按照包引入的顺序进行初始化,如果有依赖关系先解决依赖关系,按依赖的顺序进行初始化。 如果某个包被多次导入的话,也只会初始化一次。 对于同一个包中的多个.go文件,实现一般按照文件名排序,进行初始化 首先按顺序初始化全局常量和变...
2022-04-20 17:34:10 1489
原创 fastjson序列化和反序列化理解
json序列化直接根据get和set方法进行序列化json反序列化则有以下几个步骤 没有构造函数的类,java中有默认无参构造函数,此时反序列化会根据getset方法的名称进行属性赋值,使用没问题 当类中存在一个自定义有参构造函数的时候,此时java默认无参构造函数就没有了,此时反序列化是以有参构造函数的参数名称进行注入的,与类型无关 当类中存在多个自定义有参构造函数的时候,此时反序列化将以参数长的为优先进行反序列化 当类中存在多个自定义有参构造函数,且参数个数一..
2022-03-23 14:36:06 4498
原创 sentinel+nacos持久化流控配置
目录概述服务端1、拉取sentinel代码地址2、打开工程如下,重点关注core和dashboard的微服务3、启动控制台时需要往jvm中写入参数4、然后启动微服务客户端接入1、客户端引入pom文件2、限流配置测试持久化nacos1、控制台工程修改2、idea配置jvm参数,启动3、客户端工程引入nacos4、限流配置测试概述Sentinel控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自...
2022-03-16 15:24:49 4940 1
原创 nginx文件下载限流+jmeter压测
找到nginx.conf的配置,可以通过nginx -t去查找相关路径,将其中的server下的图片location增加单次连接的传输速率限制和连接数限制,能够支持的总传输速率=limit_rate*limit_conn ,单位是秒s location /images/{ #传输速率 limit_rate 10k; #连接数 limit_conn addr 10; r
2022-01-05 16:03:19 6232
原创 log4j远程注入漏洞模拟和详解
IT之家 12 月 10 日消息,近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。Apache Log4j2 是一款优秀的 Java 日志框架。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。IT之家获悉,由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊.
2021-12-21 11:43:46 4524 2
原创 多数据源事务集成-mybatis-plus
目前百度能搜索到的大部分是各自单独实现的aop以及多数据源的管理,使用起来比较复杂,而且做得也相对来说不是很完善,比如是否要考虑嵌套事务这种以及多数据源事务的支持方式,很多博主都没有涉及到,大多是简单的基于spring框架的拦截处理,自己实现不仅有不完善的缺点、可扩展性也是比较差的,后期版本维护升级或者支持更加复杂的功能就需要进行大改动以及全面的测试,风险系数也是蛮高的。mybatis-plus高版本在2021年下半年已经自己实现了在不借助外部协调者seata的情况下通过实现spring分布式事务的相关接口
2021-12-16 10:31:09 3798
原创 glusterfs分布式文件存储搭建和使用
Glusterfs简介 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到..
2021-12-09 10:41:22 4326
原创 kafka多线程并发消费处理
1、在kafka异步处理数据的时候,为了提高kafka的效率,通常是一口气拉取批量数据进行计算,但是kafka分区数的有限决定了消费者的数量限制,简单的增加消费者数量无法获取到性能的提升,此时需要将批量数据进行分批多线程处理,并在多个线程执行完毕之后再统一提交偏移量以下是kafka的消费端的配置kafka.consumer.servers: 192.168.0.1:9092kafka.consumer.enable.auto.commit: falsekafka.consumer.sessio
2021-11-29 14:43:07 5179
原创 json生成excel文件
package excel;import com.alibaba.fastjson.JSONObject;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import.
2021-11-25 16:14:49 1690
原创 xrebel项目性能分析工具使用
首先我将很高兴的告诉大家,这个工具在idea2021版本集成进去了,不再需要冗余的配置项,使用起来非常easy。首先需要到plugins下查找xrebel的插件并安装安装完之后重启就生效了在idea-》help下进行激活配置需要到Generate GUIDs online 此网站上生成一个GUID,然后按照这个格式进行填写url:https://jrebel.qekang.com/{GUID} ,至于邮箱号可以随便填写一个即可,这样就算激活了,重启idea即可启动项目的...
2021-11-15 17:20:02 2144
原创 redis管道piplines优化springboot业务性能
redis本身执行指令的性能非常的高,单台数十万并发不成问题,但是如果一个请求处理流程过长,需要频繁的操作redis,此时无论如何都无法提高系统的并发,归根结底还是网络带来的性能损耗过大,为了降低网络开销,redis支持piplines和lua脚本的方式进行批量处理和返回值,只需要一次网络请求就可以发送数百条操作指令。以下我将对着两种方式的应用场景进行详细的描述。上图是piplines的命令执行流程,很遗憾的是,spring-data编程模式下的基于jedis连接池的redis cluster模式.
2021-11-15 17:02:31 1275 1
原创 docker部署nacos配置中心并集成nginx和springcloud
架构理解1.Nacos 客户端会循环请求服务端变更的数据,并且超时时间设置为30s,当配置发生变化时,请求的响应会立即返回,否则会一直等到 29.5s+ 之后再返回响应2.Nacos 客户端能够实时感知到服务端配置发生了变化。3.实时感知是建立在客户端拉和服务端“推”的基础上,但是这里的服务端“推”需要打上引号,因为服务端和客户端直接本质上还是通过 http 进行数据通讯的,之所以有“推”的感觉,是因为服务端主动将变更后的数据通过 http 的 response 对象提前写入了。..
2021-10-29 17:23:51 1580
原创 mybatis-plus使用+generator逆向工程
MyBatis-Plus(opens new window)(简称 MP)是一个MyBatis(opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:简介 | MyBatis-Plus用idea开发的建议安装一个mybatisx的插件,可以实现xml和dao层之间的跳转以及天生自带generator的功能本文将对mybatis-plus引入到工程以及generator逆向工程两个功能的着重描述配置mybatis..
2021-10-22 15:04:40 2833 2
原创 docker部署hadoop监控prometheus
hadoop是通过docker部署的 ,在docker中添加监控端口和监控进程vi namenode.yamlstartDelaySeconds: 0hostPort: localhost:1234 #1234为想设置的jmx端口(可设置为未被占用的端口)ssl: falselowercaseOutputName: falselowercaseOutputLabelNames: falsevi datanode.yamlstartDelaySeconds: 0hostPor.
2021-10-09 10:59:25 1995
原创 远程submit任务到spark(docker)
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法,不过sparkonyarn的集群部署模式不支持http的方式提交任务,所以需要通过远程docker容器通过docker发送spark-submit的指令到spark容器内部,才可在springboot项...
2021-10-09 10:27:25 1988
原创 springcloud 服务健康状态监控
SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等,但是无法监控eureka注册中心下各个微服务的健康状态,只能监控每一个微服务的启停状态,如果想要监控到这个状态,则需要手动进行埋点并把相关指标数据暴露到prometheus即可对于整个监控流程图大致如下:grafana和prometheus在我的其他文章中有相关说明,在此主要把注册中心这边通过actuator暴露指标数据并由prometheus..
2021-09-26 19:43:39 2744
原创 springcloud镜像docker打包
打包方式有两种:一种是idea中引入docker相关插件并开发远程服务器上的docker端口进行远程打包,另外一种是直接通过服务器上的jdk进行docker-compose打包运行1、idea远程容器打包配置服务器上的docker可被远程访问vim /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.socks..
2021-09-13 15:06:52 1323
原创 docker安装es、logstash、kibana
1、安装es拉取镜像:docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.1运行容器:docker run -d --name es --restart="always" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.1进入容器:docker exe
2021-08-13 17:30:11 2221
原创 springcloud优雅停止微服务
1、引入actuator服务的jar<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>2、修改application.yml配置文件management: endpoints: web:
2021-08-06 16:13:12 854
原创 java微基准测试代码块性能
基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。可以简单的类比成我们电脑常用的鲁大师,或者手机常用的跑分软件安兔兔之类的性能检测软件。都是按一定的基准或者在特定条件下去测试某一对象的的性能,比如显卡、IO、CPU之类的。使用如下:1、pom文件引入<!-- https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-core JAVA 微基准测试套件 -->.
2021-08-06 15:58:53 712 1
原创 mysql原理问题整理
1、mysql的innnodb和myisam存储引擎的区别innodb1、支持事务,实现了四个事务的隔离级别2、主索引是聚簇索引,索引的顺序就是数据存储地址的顺序,极大提高查询效率,其中主键自增id就是一个很好的例子3、支持在线热备份4、支持外键5、不保存表的具体行数6、不支持全文索引7、支持表、行级别的锁,包括间隙锁8、InnoDB表必须有唯一索引(如主键)(用户没有指定的话会自己找/生产一个隐藏列Row_id来充当默认主键)myisam1、主索引是非聚簇..
2021-08-06 15:45:01 607
原创 pageHelper分页实现原理分析
在查询前调用startPage的时候,会往ThreadLocal里面注入分页信息,并且PageHelper类实现了mybatis的inteceptor的接口,执行sql拼接并完成调用的时候会从ThreadLocal中取出分页信息并拼接到sql后面,返回数据后通过实现mybatis拦截方法afterAll,对分页信息进行封装,封装成功后会调用clearPage清除本地变量,这样子下一个查询就不会分页了,如果下一个也需要分页则继续加startPage设置本地分页线程变量即可总结:多个查询分页不会互相影响.
2021-08-02 15:16:14 2231
原创 mybatis实现读写分离
现网生产环境mysql基本上都会采用多主多从的集群模式,能够同时提高读和写的并发性能。那么在微服务中如何在不同的业务操作不同的库又同时对代码没有侵入性呢?在此给出两种常用的方式:1、spring aop的方式动态拦截切换数据源 2、采用mybatis-plus的方式,通过注解和配置的方式简单实现。无论哪一种方式在同一个被拦截的service层,不通过spring bean容器管理进行调用都无法有效切换数据源
2021-08-01 12:20:34 2335 6
原创 redis 连接池优化
使用jedis2.9.1的连接池的小伙伴可能存在一个问题,在程序高并发运行一段时间后会出现Could not get a resource from the pool的报错信息,并且在停止接口调用后查看到的redistemplate的连接工厂里面的空闲连接idelPool始终为0,,这部分连接不会再释放,初步怀疑是jedis连接池泄露问题,经过资料的查阅发现jedis2.9.2以下版本存在连接池泄露的问题,在官方可以看到在2.9.2的bug修复说明(经过我的全方位的测试发现这个bug是在2.9.1改出来的,
2021-06-17 10:14:01 2326
原创 springboot通过responseBody实现jsonp跨域请求
实现jsonp跨域的方式有很多,不过常用的是通过注解的方式实现,这种就需要每个controller层的方法上面都加上注解,从代码简洁层度上来说是不友好的在此给出基于springboot的拦截器ResponseBodyAdvice 实现的jsonp跨域处理其中,beforeBodyWrite的最后一句return null主要是在处理jsonp请求的时候已经通过response进行过write了,如果继续return body就会被ResponseBodyAdvice追加write body内...
2021-05-18 18:47:54 424
原创 mybatis-plus 实现自增id且可手动输入id的方式
在用mybatisplus的时候可以通过注解实体字段从而实现对象和数据库字段的映射,其中主键id基本上采用的是mysql数据库自增的方式,如果此时采用@TableId(value = "id", type = IdType.AUTO)方式,则每次插入一条数据都将只会用到数据库的自增id并把id返回注入到实体对象,此时如果想要手动插入id(基本上在同步数据的时候用到),就无法实现如果此时采用@TableId(value = "id", type = IdType.INPUT)方式,在对象id
2020-12-29 15:52:49 11330 8
原创 离线升级curl采坑
先在线yum打包1、安装reporpm -Uvhhttp://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm2、查看该 repo 包含的 curl 版本yum.repos.d]# yum --showduplicates list curl --disablerepo="*" --enablerepo="city*"3、修改该repo的...
2020-08-19 11:13:48 1514
原创 java常用时间工具方法
1、获取两个时间之间的天数、周数、月数(最小单位为天)有三种实现方式:calendar的date日期获取出来,通过until方法获取之间的差距;转化为毫秒数,再除以一天得毫秒数;字符串的date日期获取然后until获取差距,其中通过java的微基准测试发现方式2的性能最好,方式3的性能最差 public static int getMonthsDiff(Date startDate, Date endDate) { Calendar calendar = Calendar.ge
2020-08-04 17:42:29 306
原创 制作docker pt-online-schema-change修改表结构工具镜像
修改线上的表容易导致线网数据出现问题严重导致数据库崩掉(尤其是主从同步的时候),所以一般不建议直接修改线网的表一般情况建表的时候最好预留保留字段和json的扩展字段,保留字段用于需要经常排序或者查询的,json扩展字段用于简单的扩展信息如果实在需要修改表,必须按照pt-online-schema-change 的方式修改,这个的大致原理是:创建新表-》修改新表的表结构-》新建旧表数据新增或者修改的触发器-》往新表插入数据-》修改旧表表名-》修改新表表名为旧表原表名-》删除旧表以及触发器...
2020-07-06 11:10:49 329
转载 mybatis generator重复生成xml解决方案
https://blog.csdn.net/amoscn/article/details/103260288
2019-12-18 15:37:13 644
原创 docker安装、部署、汉化监控服务grafana+prometheus
在docker上部署springcloud项目 https://www.jianshu.com/p/3f385c0a4af3grafana操作最全文档http://www.doc88.com/p-4039177469210.html1.在linux上安装dockerhttps://www.cnblogs.com/qgc1995/archive/2018/08/29/955357...
2019-12-16 10:52:39 6026 2
原创 mysql数据库全量备份和增量备份(docker容器部署方式)
1、创建备份数据库容器(参考监控相关下面的mysql安装)# 建立挂载的数据卷mkdir -p /opt/mysql/data# 虚拟机 3307 端口和容器里的3306端口对应,虚拟机路径和容器里路径(下图,来自头部参考地址)对应docker run -p 3307:3306--restart="always" --name iptv-mysqlback...
2019-12-06 10:46:44 1942
原创 普通安装和docker安装process-exporter对linux进程进行监控
普通安装部署process-exporterwget https://github.com/ncabatoff/process-exporter/releases/download/v0.4.0/process-exporter-0.4.0.linux-amd64.tar.gztar -xvf process-exporter-0.4.0.linux-amd64.tar.gz进...
2019-11-15 16:10:55 2663
原创 docker部署kafka监控服务kafka-exporter
1、kafka需要zookeeper管理,所以需要先安装zookeeper。 下载docker pull wurstmeister/zookeeper:latest版本docker pull wurstmeister/zookeeper启动镜像生成容器docker run -d --restart="always" --name zookeeper -p 2181:2...
2019-11-12 10:26:40 4090 2
原创 通过prometheus实现的docker部署mysql监控
1、安装mysqldocker pull hub.c.163.com/library/mysql:latest# 建立挂载的数据卷mkdir -p /opt/mysql/data# 虚拟机 3306 端口和容器里的3306端口对应,虚拟机路径和容器里路径(下图,来自头部参考地址)对应docker run -p 3306:3306--restart...
2019-11-12 10:18:44 4654
原创 分析springboot2.0自带连接池HikariCP的优势
HiKariCP是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池,是一个高性能的JDBC连接池,基于BoneCP做了不少的改进和优化。其作者还有另外一个开源作品——高性能的JSON解析器HikariJSON。从以上图可看出Hikari相比起其它连接池的性能高了非常多,那么,这么好的是怎么做到的呢?官网详细地说明了HikariCP所做的一些优化,总结如下:字节...
2019-09-24 11:54:02 838
原创 springcloud服务注册服务总线配置服务调用简单使用
首先参考以下几个文档顺序完成相应的搭建,注意,除了eureka作为服务server引入jar其它全部作为client引入服务注册和发现的依赖,而对于config依赖只有配置中心的服务作为server,其它应用服务作为client项目搭建参考文档:https://www.jianshu.com/p/65dfbb55779b 项目启动参考文档:https://blog.csdn.net/si...
2019-09-19 19:01:49 537
nginx.conf
2020-09-29
nginx-module-vts-0.1.18.tar.gz
2020-09-29
docker安装、部署、汉化监控服务grafana+prometheus.html
2019-10-28
jkd1.8-32.rar
2019-06-07
谷歌浏览器32位70 102
2018-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人