自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMq高级之如何保证消息能够成功消费

1.消息消费两种方式推的模式:MQ 主动将消息推送给消费者,消费者设置一个缓存区去消费消息,这种效率高,也是主要采用的方式拉的模式:消费者主动到MQ中主动拉取消息,很少使用.案列:推模式主要是通过@RabbitListener标记消费者@Componentpublic class DirectReceiver { @RabbitListener(queues = "test_queue_two") public void processTwo(String testMessage

2021-11-28 20:43:18 2548

原创 RabbitMq高级之如何保证消息发送可靠性

1.RabbitMq的发送机制学过RabbitMq的同学们大概都知道了RabbitMq发送机制引入了Exchange(交换机的概念),消息发送方,首先把消息发送到交换机这是第一个步骤,然后交换机在把消息路由到不同的队列中(Queue)这是第二个步骤,在有不同的消费者去消费。注意:大致,知道消息发送的整个过程后,大概知道了要想保证消息发送成功主要是从俩个方面出发1.消息成功发送到交换机(Exchange)2.交换机成功路由到队列(Queue)2.针对俩种情况RabbitMq解决方案为了解决这个俩个

2021-11-28 20:11:08 1893 1

原创 Mysql报错ERROR [com.alibaba.druid.pool.DruidDataSource] - create connection error, url

在本地跑项目的时候,本地数据库的版本是5.1.37的版本。而服务器的数据库版本是8.0.20。这就是主要原因造成的,先改本地pom文件里的jar包改成和数据库版本一致。jdbc.driver = com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://49.27.62.218:3306/zjcq?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC在数据

2020-08-07 15:40:19 21030 5

原创 Redis的入门

Redis学习笔记一.什么是RedisRedis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。二.Redis的特点1.Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候,可以再次加载进行使用2.Redi

2020-08-03 20:43:43 550 1

原创 Spring基于XML多数据源配置

一个老项目,要整合mysql和sqlserver俩个数据库。以前,知道可以配置多个数据源,但是没有做过俩个不同的数据库配置多个数据源。直接看代码吧。配置文件<!--连接数据库MYSQL--> 第一个数据源 <bean id="mysqlDataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"&g

2020-07-31 09:28:59 1830 3

原创 MyBatis使用分页插件pagehelper,遇到 IndexOutOfBoundsException: Index: 0, Size: 0] with root cause解决方法

在不使用条件查询的时候内容会完整的查询出来pagehelper在使用的时候它首先会通过你给的条件内容先去数据库查询出来有多少条记录然后在通过你自己写SQL语句查询分页的内容假如我的SQL语句是:注意在使用pagehelper插件的时候 不用自己去写 < LIMIT X,X>本人的坑就踩到这里了。我自己写limit,查询出的内容一直为空。就出现了...

2020-03-25 14:04:05 3907 1

原创 并发编程-Day2

读取锁允许多个线程同时共享读操作,而写入锁则只允许一个线程进行写入操作。如果有一个线程已经获取了写入锁,那么其他所有线程都无法获得读取或写入锁,它们只能等待写入锁被释放后才能进行读取或写入操作。构造时设置『计数个数』,每个线程执 行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足『计数个数』时,继续执行。可以修饰成员变量和静态成员变量,可以避免线程从自己的工作缓存中查找变量,必须到主内存获取它的值,线程操作volatile变量都是直接操作主。只能保证可见性 不能保证原子性。

2023-05-07 21:40:17 539 1

原创 并发编程-Day1

并发就是同一时间应对多件事情的能力并行就是同一时间做多件事情的能力**synchronized:**用到statis静态方法和synchronized(class)代码块上都是给Classl类加锁**synchronized:**加到实例方法是给当前对象实例上锁。

2023-03-04 12:47:51 542

原创 布隆过滤器

布隆过滤起是1970年由布隆提出来的,它实际上是一个很长的二进制数组+一系列随机hash算法映射函数,主要用于判断一个元素是否在集合中.总结:由一个初值都为零的bit数组和多个哈希函数构成,用来快速判断某个数据是否存在。

2022-11-23 20:48:04 745

原创 【docker配置mysql主从复制模式】

mysql主从模式基于docker配置5.在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和

2022-09-15 16:15:29 295 1

原创 Redis Scan 用法,Java代码演示

由于 Redis 是单线程在处理用户的命令,而 Keys 命令会一次性遍历所有 Key,于是在 命令执行过程中,无法执行其他命令。这就导致如果 Redis 中的 key 比较多,那么 Keys 命令执行时间就会比较长,从而阻塞 Redis。

2022-09-09 10:27:11 1651

原创 Redis【缓存穿透+缓存击穿+缓存雪崩】解决方案

一.缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中数据.而用户不断发起请求。由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义.(有恶意攻击,会直接影响到数据库性能(严重DB会挂掉))产生原因第一,自身业务代码或者数据出现问题(例如:set 和 get 的key不一致)第二,一些恶意攻击、爬虫等造成大量空命中(爬取线上商城商品数据,超大循环递增商品的ID)解决方案接口

2022-03-25 18:33:21 1490

原创 redis分布式锁解决方案

一、什么是分布式锁?线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。分布式锁:当多个进程不在同一个系统中,用分布式.

2022-03-20 22:29:40 4715

原创 logstash同步数据库数据到es中

input{ jdbc { # 数据库的驱动包 各个数据库都有对应的驱动 需自己下载 jdbc_driver_library => "E:\apache-maven-3.8.2-bin\apache-maven-3.8.2\repo\org\postgresql\postgresql\42.2.18\postgresql-42.2.18.jar" # jdbc class 不同数据库有不同的 class 配置 jdbc_driver_class => "org

2022-02-18 16:56:23 967

原创 redis主从复制 哨兵搭建

1.一主两从原理:Slave启动成功连接到master后会发送一个sync命令Mster接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步只要是重新连接master ,一次完全同步(全量复制)将自动执行搭建步骤1复制三个文件 分别是

2022-01-23 15:19:17 603

原创 centos虚拟机关闭防火墙

systemctl stop firewalld #停止firewallsystemctl disable firewalld #禁止firewall开机启动service iptables stop #linux关闭防火墙

2022-01-23 13:19:38 841

原创 springboot配置多数据源,不同的数据库

1.配置文件## 2.mybatis 多数据源配置mybatis根据不同的数据源调用不同的dao和mapper文件,在这里需要把你想要被扫描的dao建在一个新的文件夹。核心代码@MapperScan(basePackages = "com.sthg.dao.pg", sqlSessionTemplateRef = "pgSqlSessionTemplate")sqlSessionTemplateRef 指定使用哪个SqlSessionTemplate,SqlSessionTemplate是创建Sq

2021-11-04 15:45:19 2552

原创 Error: Cannot download ‘https://start.spring.io/starter.zip?报错解决

问题分析:是因为在下载springboot的脚手架出问题了,所以只需要修改一下springboot的脚手架地址就可以,修改此地址即可,修改为:http://start.spring.io

2021-11-02 10:25:30 1372

原创 postgresql 更改某一字段的内容为另一字段加上字符串

UPDATE pos_aircraft_activity_record SET sys_code = ID || 'ACU'

2021-10-28 18:07:08 1001

原创 mybatis-plus配置多数据源,mybatis-plus 自带的方法找不到解决

主要创建会话工厂不要用jdbc的,用mybatis的会话工厂 /** * 创建会话工厂SqlSessionFactory * @param dataSource * @return * @throws Exception */ @Bean(name = "iamSqlSessionFactory") @Primary public SqlSessionFactory iamSqlSessionFactory(@Qualifier("

2021-10-21 18:23:19 887

原创 jenkins部署项目选择构建指定分支代码有变动构建

在构建环境,选择高级最下面的这个,正则表达式过滤分支,就是当此分支发生变化构建项目 .*test *.

2021-10-20 09:48:48 398

原创 jenkins在部署maven聚合工程,重新构建修改的项目模块,无代码变动的不做构建

1.安装插件pathignore 和 maven注意:在使用maven任务构建会有maven版本过高的问题,打包会失败2.新建任务3.设置源码4.设置触发器,需要在你的gitlab Webhooks对应,是为了gitlab上有代码推动,就通知jenkins自动化构建5构建环境,在这里主要可以设置只构建修改的代码 过滤器的效果6.指定maven构建命令package -pl 模块名 -am -am clean install -DskipTests具体命令看这篇文章7.构

2021-10-09 13:54:26 499

原创 jenkins配置顶层maven独立打包子模块

mvn clean package -pl 指定模块工程名 -am参数说明:-am --also-make 同时构建所列模块的依赖模块;-amd -also-make-dependents 同时构建依赖于所列模块的模块;-pl --projects 构建制定的模块,模块间用逗号分隔;-rf -resume-from 从指定的模块恢复反应堆。...

2021-10-08 16:22:48 790 1

原创 关于数据库查询not in 里面有空值的情况,查询不出内容解决

表结构本意是查询age 不等于15,并且第一条数据的age为空改造后

2021-09-29 11:17:22 466

原创 mybatis-plus配置多数据库开启驼峰命名

//开启驼峰命名org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();configuration.setMapUnderscoreToCamelCase(true);sqlSessionFactoryBean.setConfiguration(configuration);

2021-09-28 16:11:17 788

转载 Org.postgresql.util.PSQLException: ERROR : duplicate key value violates unique constraint XXXX

https://blog.csdn.net/qq_35976271/article/details/80523042

2021-09-16 11:54:58 261

原创 git clone 项目出现 Failed to connect to github.com port 443: Timed out

将命令号中的https 改为git 就可以解决这个问题的出现

2021-09-11 14:43:14 517 2

原创 IDEA启动微服务service不显示端口

正常情况下解决不显示端口号1.地址栏输入%TEMP% 回车就能进入目录了 C:\Users\admin\AppData\Local\Temp2.注意,把这个目录下的文件都清楚掉(缓存文件不影响)3.重启就解决了

2021-09-06 10:43:50 2461

原创 windows下安装nacos保姆教程

1.下载地址需要确保你本地已经安装java环境和mavan环境https://github.com/alibaba/nacos/releases2.配置数据库解压缩文件后,在你的环境设置一个nacos的数据库,执行以下脚本修改配置文件 application.properties.example3.修改脚本 startup.cmd我是单机状态修改为:set MODE=“standalone”4.启动 startup.cmd脚本5.输入地址http://127.0.0.1:88

2021-09-01 17:44:19 82

原创 RabbitMq详解讲解以及代码Demo

RabbitMQ1.什么是MQ生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者。2.MQ有什么作用解耦:一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理,只需要主业务完成以后,发送一条MQ,其余模块消费MQ消息,即可实现业务,降低模块之间的耦合。异步:业务执行结束后从属业务通过MQ,异步执行,减低业务的响应时间,提高用户体验(比如发短信)削峰:高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪(比如促销活动)3.MQ

2021-08-06 14:54:24 466

原创 spring知识点总结

spring51. 什么是springspring是一个轻量级的非入侵式java框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。spring可以做很多事情,它为企业级开发提供了丰富的功能,但是这些功能的底层都依赖于它的俩个特性,也就是依赖注入(DI),和面向切面编程(AOP)为了降低Java开发的复杂性,spring采取了以下四种策略基于pojo的轻量级和最小侵入性编程通过依赖注入和面向接口实现耦合基于切面和惯例进行声明式编程通过切面和模板减少板式代码2. spri

2021-07-16 15:29:32 644 1

原创 MySQL基础入门到索引优化

MySql1. 什么是数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。mysql是关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。2. 基本命令使用2.1 命令进入数据库首先进入数据库的bin目录下mysql -u root -p root2.2 查看数据库有哪些表show databases;2.3 选择某个表use test;2.4 创建

2021-07-09 10:16:21 392 2

转载 springboot动态切换数据源

pom文件<name>springboot-duoshujuyuan</name> <description>多数据源整合</description> <properties> <java.version>1.8</java.version> <mybatisplus.version>3.2.0</mybatisplus.version> <fastjson.version&

2021-04-30 16:57:43 152 1

原创 解决 Maven ‘parent.relativePath‘错误原因

异常信息:‘parent.relativePath’ of POMxxx的parent里写的并不是xxx的上一级。加上:<relativePath />修改为:

2021-04-26 09:43:03 8842 2

原创 Mysql索引

MySQL1.索引1.1索引概述索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定算法的数据结构,这些数据结构以某种方式引用(指向数据),这样可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。1.2索引优势和劣势优势类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗劣势索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。

2021-03-30 13:25:50 99

原创 Java BIO/NIO/AIO解读

Java IO流1.I/O模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接受,很大程度上决定了程序通信的性能,Java共支持3种网络编程的I/O模型:BIO/NIO/AIO1.1BIO同步阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销1.2NIO同步非阻塞,服务器实现模式为一个线程处理多个请求,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请

2021-03-23 17:30:39 192

原创 JVM学习-运行时数据区-虚拟机栈

概述:内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请,分配,管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局每个线程:独立包括程序计数器,本地方法栈,虚拟机栈(每个线程独立的一份)线程间共享:方法区,堆区。1.程序计数器JVM中的程序计数寄存器中,Register的命名源于CPU的寄存器,寄存器存储指令

2021-03-13 13:21:29 138

原创 JVM学习-执行引擎

一.概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这俩种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器,缓存,指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。如果想要一个Java程序运行起来,执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的

2021-03-08 18:16:30 72

原创 JVM学习-方法区

一.方法区的基本理解方法区与Java堆一样,是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误。关闭JVM就会释放这个区域的内存二.方法区的内部结构1.方法区存储什么?存储已被虚拟机加载的类型信息,常量,静态变量,即时编译器编译后的代码缓存等。类型信

2021-03-08 18:10:27 71

原创 JVM学习-堆空间

一.堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间.(堆内存的大小是可以调节的)《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有线程共享Java堆,在这里可以还可以划分线程私有的缓冲区《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当运行时分配在堆上。数组和对象可能永远不会在存储在栈上,因为栈帧中保

2021-03-05 10:06:01 93 3

空空如也

空空如也

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

TA关注的人

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