经验总结
文章平均质量分 59
个人经验总结
W_Meng_H
希望是本无所谓有,无所谓无的!
这正如地上的路,其实地上本没有路,走的人多了,也便成了路!
展开
-
Spring - 事务扩展机制 TransactionSynchronization
TransactionSynchronization事务同步回调接口,用于在事务执行过程中的重要时间点执行额外的逻辑,AbstractPlatformTransactionManager中通过TransactionSynchronizationManager间接调用绑定到当前事务所在线程的TransactionSynchronization集合的对应的回调方法。 TransactionSynchronizationManager使用ThreadLocal管理当前事务的TransactionSy原创 2022-12-03 11:13:39 · 1081 阅读 · 0 评论 -
docker-配置mysql主从复制
首先主服务器上查看master_log_file、master_log_pos两个参数,然后切换到从服务器上进行主服务器的连接信息的设置。Slave_IO_Running: Yes,Slave_SQL_Running: Yes 即表示启动成功。docker查看主服务器容器的ip地址。从服务器启动I/O 线程和SQL线程。原创 2022-10-24 11:30:58 · 901 阅读 · 0 评论 -
docker-部署Keepalived实现Nginx高可用
Keepalived是一款基于VRRP协议的高可用集群软件,通过虚拟IP(VIP)对外提供服务,能够实时监控集群中服务器的运行状态并自动进行故障隔离,这些服务器都启动着相同的服务,当主服务器发生故障时,会自动将虚拟IP漂移到备份服务器,从而实现业务高可用。原创 2022-10-13 12:37:34 · 5648 阅读 · 10 评论 -
Springboot-Guava retrying接口重试
一般在各种业务场景中,为了保持系统稳定,我们都会有相应的重试机制,某个接口某个数据库链接由于网络抖动或者其他因素导致响应失败。Guava-retrying或者分析过其源码你会发现,guava-retrying重试组件特别轻量级,核心类就那几个,并且使用简单设计优雅,但是它也存在缺点。原创 2022-10-10 20:07:57 · 952 阅读 · 0 评论 -
Kafka-connect将Kafka数据同步到Mysql
Kafka Connect主要用于将数据流输入和输出消息队列Kafka版。Kafka Connect主要通过各种Source Connector的实现,将数据从第三方系统输入到Kafka Broker,通过各种Sink Connector实现,将数据从Kafka Broker中导入到第三方系统............原创 2022-07-04 20:11:24 · 3995 阅读 · 1 评论 -
Kafka-相关命令总结
Kafka相关命令总结原创 2022-07-04 18:17:38 · 315 阅读 · 0 评论 -
Kafka-connect将Kafka数据同步到文件
Kafka Connect主要用于将数据流输入和输出消息队列Kafka版。Kafka Connect主要通过各种Source Connector的实现,将数据从第三方系统输入到Kafka Broker,通过各种Sink Connector实现,将数据从Kafka Broker中导入到第三方系统...原创 2022-07-04 18:20:52 · 1013 阅读 · 0 评论 -
设计模式-工厂模式(统一获取枚举类)
目录一、引入jar二、公用接口三、自定义枚举类四、枚举工厂类五、获取所有的枚举类参数项目开发时,我们会写很多枚举类,有的是后端自己使用,有的给前端当做字典使用。可以通过此工具包统一获取:org.apache.commons:commons-lang3一、引入jarmaven:<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><depen原创 2022-03-30 20:03:16 · 3044 阅读 · 0 评论 -
Linux-Nginx、Redis、PG等中间件操作命令(个人总结)
每扫描100个key休息0.1秒,可以找到某个实例5种数据类型(String、hash、list、set、zset)的最大key。用unlink代替del来删除,这样redis会将这个key放入到一个异步线程中,进行删除,这样不会阻塞主线程。jdk目录/usr/lib/jvm/java-1.8.0-openjdk。2、重启,进入nginx可执行目录sbin下,输入命令。11、查看物理CPU的个数。12、查看逻辑CPU的个数。13、查看CPU是几核。.........原创 2022-03-29 19:27:02 · 8812 阅读 · 0 评论 -
ElasticSearch-索引生命周期(ILM)-日期分割索引
官方文档介绍:ILM overview | Elasticsearch Guide [8.0] | Elastic名称 版本 ElasticSearch 7.X 生命周期把索引分为四个阶段,Hot,Warm,Cold,和 Delete。hot 索引可写入,也可查询,也就是我们通常说的热数据。这种类型的数据节点执行集群内所有的操作,节点存储的数据经常被查询,属于IO、CPU密集型操作,因而需要CPU比较空闲和装有高性能IO读写的磁盘(如SSD)的服务器支撑 warm原创 2022-02-20 15:03:40 · 3861 阅读 · 0 评论 -
Springboot-MDC+logback实现日志追踪
一、MDC介绍MDC(Mapped Diagnostic Contexts)映射诊断上下文,该特征是logback提供的一种方便在多线程条件下的记录日志的功能。某些应用程序采用多线程的方式来处理多个用户的请求。在一个用户的使用过程中,可能有多个不同的线程来进行处理。典型的例子是 Web 应用服务器。当用户访问某个页面时,应用服务器可能会创建一个新的线程来处理该请求,也可能从线程池中复用已有的线程。在一个用户的会话存续期间,可能有多个线程处理过该用户的请求。这使得比较难以...原创 2022-02-15 13:47:09 · 4195 阅读 · 1 评论 -
Springboot-RestTemplate实现https请求
基于上一篇文章生成的证书:Nginx-配置HTTPS证书(单向认证)_孟孟的博客-CSDN博客_nginx配置https访问一、证书转换服务方给的证书多为"cer"类型,比如直接从浏览器中下载下来的,该类证书不能直接使用java调用认证,需转换为java可识别的类型,比如".keystore"。 利用jdk中"keytool"命令进行转换,即证书导入,执行命令:keytool -importcert -keystore client.keystore -file nginx.crt.原创 2022-02-13 16:52:28 · 2802 阅读 · 0 评论 -
书籍推荐呐~
深入理解Java虚拟机推荐多看几遍,对JVM的分析很棒,整合Java代码的运行流程等,都是慢慢的知识点Java并发编程之美对Java的锁、AQS、并发包的源码分析,建议在看了上边JVM那本书之后在看,书的目录编排很赞,从锁到AQS,再到基于AQS设计的锁,同步队列,线程池,实战应用等。JUC包的设计体现了Java很多思想(继承、多态、抽象等),模板方法设计模式等。Doug Lea yydsRedis深度历险暂更深入浅出MySQL暂更...原创 2021-08-08 18:17:28 · 277 阅读 · 0 评论 -
项目开发所思
近段时间,再重新梳理自己的知识结构,对于项目处理并发和优化有一些自己的想法,简单记录一下;各位大佬有好的建议和想法,希望能分享一下,内容若是有错误之处,望指正,感谢!在很多公司里,高并发项目很难接触到,但是程序员嘛,咱们可以自己造一些并发量(虽然很低,哈哈哈)我之前有写了一个秒杀的小Demo,感兴趣的话,可以看一下。秒杀Demo:https://github.com/Vmetrio/spike.git对于此项目,我在思考如何优化,解决大量访问的问题!一、单机性能优化① 使..原创 2021-07-17 14:48:05 · 277 阅读 · 0 评论 -
Springboot-jar包瘦身部署
目录一、获取依赖的jar包二、修改pom文件三、运行命令Springboot默认jar的方式打包,会把所有依赖都打包,有的jar比较大,变动很小,这样每次部署都整个发布,网速不好花的时间就会比较多,我们可以把依赖的jar包独立出来。一、获取依赖的jar包在Idea终端使用命令:mvn dependency:copy-dependencies -DoutputDirectory=E:\jar -DincludeScope=runtime二、修改pom文件...原创 2021-06-23 09:18:48 · 519 阅读 · 0 评论 -
Java-动态调用接口实现
目录一、枚举类二、Contrller层三、处理不同泛型的lList四、类操作工具类五、Spring 工具类提供一个统一的对外接口,根据不同的传参,按照对应的方式处理一、枚举类定义一个枚举RequestEnum,保存method,和对应完全限定名和方法名并根据method获取到对应枚举,来进行反射获取对应类import lombok.AllArgsConstructor;import lombok.Getter;/** * @Description: {枚举.原创 2021-04-18 15:25:30 · 2317 阅读 · 1 评论 -
docker-redis
一、获取 redis 镜像docker pull redis:5.0二、创建挂载文件夹mkdir /dockermkdir /docker/redismkdir /docker/redis/confmkdir /docker/redis/datatouch /docker/redis/conf/redis.conf切记注释掉:#daemonize yes 否则无法启动容器三、启动 redisdocker run -d -p 6379:6379 \-v...原创 2020-12-24 16:17:26 · 1481 阅读 · 0 评论 -
docker-Kibana7.x
一、获取 Kibana 镜像docker run -d --name=kibana kibana:7.6.2二、拷贝 Kibana 配置文件docker cp kibana:/usr/share/kibana/config/ /tools/dockerdata/kibana/三、修改 config 文件夹里的 kibana.yml 文件server.name: kibanaserver.port: 5601server.host: "0.0.0.0"elasti...原创 2020-12-20 10:01:05 · 628 阅读 · 2 评论 -
docker-logstash7.x(增量更新)
爬一些豆瓣读书的数据到 mysql 中,在使用 logstash 传输到 elasticsearch 中爬虫代码:https://blog.csdn.net/W_Meng_H/article/details/111408984es安装:https://blog.csdn.net/W_Meng_H/article/details/105200771PS:根据自己的使用情况,统一 es 和 logstash 的版本一、获取 logstash 镜像docker run -d --nam.原创 2020-12-20 09:55:39 · 1024 阅读 · 3 评论 -
docker-net host 无效问题
官方解释:https://docs.docker.com/network/host/Mac 和 Windows 的 docker 命令: --net=host 无效原创 2020-12-19 23:34:24 · 7028 阅读 · 6 评论 -
Springboot-爬虫代码(豆瓣读书)
个人学习需要,自己也不想造数据(太懒~哈哈~),就爬了一下豆瓣读书的数据(感谢豆瓣~)流程:使用 Java 的 jsoup 对豆瓣读书进行爬虫,保存到本地 mysql 中,再使用 logstash 插件,将 mysql 的数据传输到 elasticsearch项目源码:https://github.com/Vmetrio/reptilejsoup官网:https://jsoup.org豆瓣读书:https://book.douban.com/latest?icn=index-latestbo原创 2020-12-19 19:24:33 · 878 阅读 · 1 评论 -
Spingboot-Mysql数据导出为Excel
pom文件:<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependency><原创 2020-12-17 14:28:36 · 339 阅读 · 0 评论 -
Linux - SpringBoot的jar开机自启(阿里云服务器)
Ubuntu 16.04项目目录为 /usr/local/api/1、在项目目录创建shell脚本vi /usr/local/api/runJar.sh脚本内容:#!/bin/bashexport JAVA_HOME=/usr/local/java/jdk1.8.0_181export JRE_HOME=${JAVA_HOME}/jreexport CLASSPAT...原创 2019-12-09 11:19:59 · 631 阅读 · 0 评论 -
Nginx-日志切割
生产环境中的服务器,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率。同时,为了方便对日志进行分析计算,须要对日志文件进行定时切割.定时切割的方式有按月切 割、按天切割、按小时切割等。最常用的是按天切割。所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期,可自定义控制)生成一个日志文件,而不是将Nginx所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位问题也更容易。比如Nginx产生的访问日志文件默认一..原创 2020-11-16 12:43:29 · 393 阅读 · 0 评论 -
Linux-修改服务器时区
PS:修改Linux系统的时区以后,再安装jvm,jvm默认会使用系统的时区。如果系统时区设置错误,安装jvm后,再修改系统的时区,但jvm的时区仍然用不变,除非添加jvm的启动参数:java -jar -Duser.timezone=GMT+08 XXX.jar修改时区sudo tzselect选择 4选择 9选择 1创建时区软链sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /et...原创 2020-09-21 14:59:58 · 780 阅读 · 0 评论 -
docker-容器和镜像的导入导出
容器的导入和导出导入docker import test.tar test:v1导出docker export -o test.tar test其中-o表示输出到文件,test.tar为目标文件,test是源容器名(name)镜像的导入和导出导入docker load -i test.tar导出docker save -o test.tar test区别: docker save保存的是镜像(image),docker export保存的..原创 2020-06-16 14:26:05 · 445 阅读 · 0 评论 -
Java- snowflake 算法
snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bits 作为毫秒数,用 10 bits 作为工作机器 id,12 bits 作为序列号。1 bit:不用,为啥呢?因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。 41 bits:表示的是时间戳,单位是毫秒。41 bits 可以表示的数字多达翻译 2020-05-29 15:34:43 · 519 阅读 · 0 评论 -
Java- 并发编程 注意事项
put 方法判断如果 key 已经存在,则使用 value 覆盖原来的值并返回原来的值,如果不存在则把 value 放入并返回 null。而 putIfAbsent 方法则是如果 key 已经存在则直接返回原来对应的值并不使用 value 覆盖,如果 key 不存在则放入 value 并返回 null,另外要注意,判断 key 是否存在和放入是原子性操作。...翻译 2020-05-22 10:03:00 · 430 阅读 · 0 评论 -
Nginx-访问中文名的文件 404
一、查系统字符集是不是支持utf-8Ubuntu:vim /etc/default/locale 是否显示是en_US.UTF-8二、上传工具的问题filezilla、ftp、winscp这类上传工具,上传文件名都不是默认的utf-8修改上传工具字符集:...原创 2020-05-15 10:59:06 · 1797 阅读 · 0 评论 -
docker-elasticsearch
一、修改 elasticsearch.yml 配置http.cors.enabled: truehttp.cors.allow-origin: "*"cluster.name: es-lognode.name: masternode.master: truenetwork.host: 0.0.0.0二、启动 elasticsearchdocker run -d -p...原创 2020-03-30 15:39:17 · 837 阅读 · 0 评论 -
Linux-Kibana之Sentinl日志报警
一、下载Sentinl插件下载链接:https://github.com/sirensolutions/sentinl/releases/download/tag-6.6.0-0/sentinl-v6.6.0.zipPS:Sentinl版本和Kibana版本要一致二、安装Sentinl插件cd /usr/local/kibana/bin./kibana-plugin ...原创 2020-03-30 17:16:01 · 1914 阅读 · 0 评论 -
Linux-安装 Kibana
一、下载安装包cd /usr/localwget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz二、解压tar -xzf kibana-6.6.0-linux-x86_64.tar.gz三、修改 kibana.yml 配置server.name:...原创 2020-03-30 15:18:25 · 351 阅读 · 0 评论 -
Linux-Metricbeat 系统监控
官网:https://www.elastic.co/cn/beats/metricbeat一、安装Metricbeatcurl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.5.0-amd64.debsudo dpkg -i metricbeat-7.5.0-amd64....原创 2020-12-24 16:21:26 · 1031 阅读 · 0 评论 -
Springboot - 统一异常处理
异常处理流程业务中存在运行时异常和业务逻辑异常,前者不运行时很难察觉,后者在遍及业务时就可以定义出来,因此异常分为不可预知异常和可知异常。流程如下:自定义全局异常类,使用@ControllerAdvice,控制器增强 自定义错误代码及错误信息,两种异常最终会采用统一的信息格式来表示,错误代码+错误信息。 对于可预知的异常由程序员在代码中主动抛出,由SpringMVC统一捕获。 不可预...原创 2020-03-26 15:12:37 · 659 阅读 · 0 评论 -
docker-ELK+Filebeat日志管理(Kibana中文版)-7.X版本
一、下载ELK镜像docker pull sebp/elk:750PS:镜像较大,时间较长!!!二、对 sysctl.conf 文件 进行修改echo "vm.max_map_count=262144" > /etc/sysctl.confsysctl -p三、运行 ELKmkdir -p /usr/local/docker/elkdata...原创 2020-03-24 23:32:25 · 3529 阅读 · 5 评论 -
Springboot - 通用返回类BaseResults
BaseResults类public class BaseResults<T> { private Integer code; private String message; private T data; public BaseResults() { super(); } public BaseResu...原创 2020-03-20 18:18:02 · 1959 阅读 · 0 评论 -
Spring Data Jpa - 获得实体类部分字段(单表或多表)
一、单表查询的某一个字段、一条数据@Query(value = "select username from user",nativeQuery = true)// 注意返回值用String类型接收,也可以使用ObjectString findOneUserName();二、单表查询的某一个字段、多条数据@Query(value = "select distinct use...原创 2020-03-07 11:16:09 · 2060 阅读 · 0 评论 -
Mysql 5.7 - 修改编码为utf-8 (Windows)
一、MySQL配置文件-my.ini 二、修改配置文件在其中添加在[client]下添加default-character-set=utf8在[mysqld]下添加character-set-server=utf8注意:网上很多资源都是在[mysqld]下添加default-character-set=utf8如果这样改会导致5.7版本my...原创 2019-01-04 16:40:35 · 2573 阅读 · 0 评论 -
阿里云服务器(CentOS-6.8) - 安装fastDFS
一、安装FastDFS环境我把所有的安装包放到了 /usr/local/fastDFSLinux版本所需安装包下载链接:https://download.csdn.net/download/w_meng_h/108856611、安装libevent库# yum -y install libevent 2、进入 /usr/local/fastDFS 目录,解压 libf...原创 2018-12-29 16:17:17 · 1297 阅读 · 0 评论 -
Duplicate entry '0' for key 'PRIMARY'的一种可能的解决办法
问题: 我在项目开发过程中,本地测试的数据库(第二版本)和线上运行的项目数据库(第一版),把第一版数据库的数据转移到了第二版中,保存新数据的时候,遇见了这个问题。 解决: 我是用新数据不停的保存之后,解决了这个问题。(例如:数据库中这个表有100条数据,不停保存100次就正常啦!)当然,这个方法只能数据小的时候使用。 我有搜索了一番,可以是由表...原创 2018-12-21 16:24:20 · 18553 阅读 · 4 评论