自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 消息队列-RabbitMQ-发布订阅(Publish/Subscribe)模式(代码)-生产者

前提是已经有可用的rabbitmq服务端,如果还没有 参考安装消息队列-RabbitMQ-Centos8安装RabbitMQ_if_icanfly的博客-CSDN博客1.环境安装使用PackageCloud Yum Repository安装依次执行下面这两条命令curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bashcurl -s https://pa..

2022-03-03 23:36:54 1493

原创 消息队列-RabbitMQ-工作队列模式(代码)-生产者

前提是已经有可用的rabbitmq服务端,如果还没有 参考安装消息队列-RabbitMQ-Centos8安装RabbitMQ_if_icanfly的博客-CSDN博客1.环境安装使用PackageCloud Yum Repository安装依次执行下面这两条命令curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bashcurl -s https://pa..

2022-03-03 18:55:15 1519

原创 消息队列-RabbitMQ-简单模式(代码)-生产者

如上官方图:简单模式只有一个生产者,一个队列,一个消费者 没有交换机1.maven普通项目整合MQ新建一个普通的maven项目.导入mq的依赖pom.xml文件中添加以下依赖<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0<...

2022-03-03 18:23:52 1789

原创 消息队列-RabbitMQ-Centos8安装RabbitMQ

1.环境安装 使用PackageCloud Yum Repository安装 依次执行下面这两条命令curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bashcurl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo b

2022-03-03 14:09:12 1501

原创 设计模式-策略模式

策略模式的主要角色:抽象策略类Strategy: 通常是一个接口或者抽象类具体策略类: 实现抽象策略类 通常有多个环境类: 持有一个策略类的引用,最终给客户端调用代码实现抽象策略类:通常是一个接口或者抽象类/** * 支付抽象策略类()接口 * * @author Administrator */public interface PayStrategy { /** * 支付功能 */ void pay();}具体策略类:实现了抽象

2022-02-24 15:27:42 339

原创 设计模式-代理模式

由于某些原因需要给某对象提供一个代理以控制该对象的访问,这时,访问对象不适合或者说不能直接引用目标对象,代理对象作为访问对象与目标对象之间的中介.java中根据代理类生成的时机不同分为静态代理和动态代理静态代理是指代理类在编译时期就生成动态代理是指代理类在java运行时期动态生成的代理类代理Proxy有三种角色:抽象主题: 通过接口或者抽象类声明真是主体和代理对象实现业务的方法.真实主题: 实现了轴向主题中的具体业务,也就是需要被代理的对象.代理类proxy: 代理真实主题 它实

2022-02-24 11:57:29 307

原创 设计模式-适配器模式

适配器模式(adapter)主要包含以下角色:目标(target)接口:当前系统业务锁期待的接口.他可以是抽象类或者接口.适配者(adaptee)类:他是需要被适配的现存组件.适配器(adapter)类:转换器,通过继承或者引用适配者的对象,把适配者接口转换成目标接口.1.类适配器模式实现方式: 定义一个适配器类来实现当前系统业务接口,同时也继承现有组件库中已经存在的组件/** * 类适配器测试类 * 以手机type-c接口为例 * type-c接口的手机都是没有单独的耳.

2022-02-21 16:23:20 110

原创 设计模式-单例模式

单列模式的定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例.在计算机系统中,线程池,缓存,日志对象,对话框等常被设计成单例单例模式的特点:1.单例类智能有一个实例.2.单例类必须自己创建自己的唯一实例.3.单例类必须给其他对象提供这一实例.实现单列的5种方式懒汉式:默认不会实例化,第一次使用的时候实例化.(可能会由有线程安全问题)1.双重检查,已解决线程安全问题【推荐使用】public class Singleton4 { pri.

2022-02-08 11:29:51 343

原创 100万数据入mysql过程记录

个人瞎琢磨的,如有不对的地方还望个位看官给我指点一下,拜谢表:建表语句如下CREATE TABLE `push_record_customer` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'ID', `push_task_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAUL.

2022-01-24 18:43:26 755

原创 java多线程

1.线程/进程2.线程的状态1.新建状态:新创建一个线程对象(比如 new thread())2.就绪状态:调用了线程对象的start()方法就会进入就绪状态,但不意味着立即执行,还需要等待cpu分配时间3.运行状态: 获得了cpu使用权,进入运行状态,执行线程体的代码块.4.阻塞状态: 由于某种原因导致线程失去了cpu的使用权,暂时停止运行,比如wait(),sleep();5.死亡状态:线程执行完毕或因为异常推出了run()方法,该线程的生命周期结束.状态转化图:

2022-01-20 18:26:03 368

原创 SpringMVC

MVCMVC是一种架构,或者说是一种设计模式,这种设计模式将应用分成三个部分,M(模型),V(视图),C(控制器)MVC优点:1.分工明确,松耦合,复用性高,前后端分离,后端开发只需要关注于业务的开发,而不需要关注页面的开发,mvc三个模块相互独立,松耦合架构,多视图共享一个模型,业务层代码复用率更高M: Model(模型)包含:service,pojo,entity,dao等V:View(视图)包含:html,jsp,pdf,excel等C: Controller

2022-01-12 14:26:36 104

原创 分布式锁Redisson简单使用

springboot整合redisson1.添加redisson依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.16.3</version>

2022-01-11 17:17:46 861

原创 SpringCloudAlibaba Seata AT模式简单理解

一.seata简介Seata官方文档http://seata.io/zh-cn/docs/overview/what-is-seata.htmlSeata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。阿里巴巴推荐使用AT模式整体机制两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。 二.

2022-01-11 17:15:30 188

原创 【Centos8.0安装SVN】

安装svn服务# 安装yum install subversion# 查看版本svnserve --version创建版本库svnadmin create /var/svn/shop修改密码文件左边用户名,右边密码。cd /var/svn/shop/confvi passwd# 添加以下内容[users]company= 564409home= 564409修改权限文件/表示根目录,/test表示仓库目录下的子目录,rw代表用户可以进行读写权..

2021-12-03 16:02:17 450

原创 记一次@NonNull导致无法序列化的问题

以上这个代码在接参的时候报了一个缺少无参构造函数无法序列化的错误将.class反编译可以看到编译后的源码中生成了一个有参构造 明显是 用来判空的 假设那么这个构造函数应该就是根据@NOTNULL生成的玛德 导错包了应该导的是第一个才对上面因为lombook生成了一个有参构造函数,导致jdk不会添加默认的无参构造函数,没有无参构造函数的话 序列化就会失败....

2021-11-25 14:46:44 463

原创 Redis5.0.14集群搭建+springboot2.X整合redis集群

1.redis安装包下载Redishttps://redis.io/download如果要选择其他版本这里有全部的redis版本Index of /releases/https://download.redis.io/releases/我这里选择的版本是5.0.14 因为版本低于5.0需要基于ruby来搭建集群,而5.0以后不需要ruby 省了很多麻烦.2.安装单台redis这里下载redis可以选择在线下载 我们将安装包下载到/usr/local目录下1.首先在local目..

2021-11-23 10:43:22 1818

原创 Redis配置文件-基础配置详解

# Redis 配置文件示例。# 请注意,为了读取配置文件,Redis 必须以文件路径作为第一个参数启动# ./redis-server /path/to/redis.conf################################## INCLUDES #################################### 用来引入多个配置文件,需要注意的是后面的配置会覆盖前面相同的配置# include /path/to/local.conf# include /path/.

2021-11-17 15:33:05 736

原创 Redis

一.概述1.什么是redisredis是一个高性能的运行在内存中的非关系型数据库,由c语言编写.2.redis优缺点优点①.读写性能优异,读的速度可以达到110000次/s 写的速度可以达到81000次/s.②.支持数据持久化 支持AOF与RDB两种持久化方案.③.支持事务④.数据类型丰富,除了String,hash,set,zset,list等常规的类型外,还有HyperLogLog,Geo,bitmaps⑤.支持主从复制,可以进行读写分离缺点...

2021-11-16 17:36:03 154

原创 HashSet源码解读

关键属性// hashset底层实际就是维护了一个hashmap private transient HashMap<E,Object> map;// 对象关联的虚拟值 简单来说 就是所有key的value值private static final Object PRESENT = new Object();关键方法构造方法:这三个构造方法实际就是调用了hashmap的构造方法add方法hashset的add方法实际上就是调用了hashmap的..

2021-11-11 11:42:07 385

原创 ArrayList源码分析(1.8 部分源码)

// 默认初始容量 10private static final int DEFAULT_CAPACITY = 10;// 共享空数组实例。private static final Object[] EMPTY_ELEMENTDATA = {};// 默认容量空元素数据 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};// 元素数据 真实的存放数据的数组transient Object[] ele.

2021-11-10 17:11:22 83

原创 System.arraycopy方法参数

方法在java.lang.System中的源码如下public static native void arraycopy(Object src, int srcPos, Object dest, int destPos,int length);可以看出这是一个本地方法 具体在吗实现不得而知参数详解:src 源数组srcPos 源数组起始索引dest 目标数组destPost 目标数组起始索引length 复制的长度将数组src中的数据复制到dest中 从...

2021-11-10 16:42:44 208

原创 HashMap在JDK1.7和JDK1.8中的区别

1.底层数据结构不同jdk1.7 数组+链表jdk1.8 数组+链表+红黑树 树化阈值8 取消树化阈值6数组的名字也不同 1.7中交Entry 1.8交Node 属性都一样 都继承Map.Entry2.空参构造方法不同1.7中 调用空参构造方法直接构建容量为默认值16的Entry[]对象1.8中值进行赋值Node[] table是在第一次put操作时 通过resize()扩容方法 构建默认容量163.链表插入方式不同1.7采用头插法1.8使用尾插法...

2021-11-04 16:25:54 259

原创 jdk1.7 hashmap

1.底层存储原理JDK1.7 数组+链表JDK1.8 数组+链表+红黑树数组在内存中是需要一块连续的内存来存储,链表不需要数组的特性: 由于数组在内存中是连续的且有索引(下标) 所以查询非常快复杂度O(1) 但是添加比较慢,最理想的状态就是O(1) 最不理想的状态是O(n)O(1)的情况就是刚好插入到末尾 前面的数据都不需要移动O(n)的情况是刚好插首位,其他的数据都需要向后移动一位链表新增快,查询慢查询需要遍历整个链表,最理想的状态就是第一个元素就是我们要找的O(1),.

2021-11-04 12:36:50 81

原创 Seata服务端搭建(nacos版)

一.nacos下载安装SpringCloud入门篇-注册中心以及配置中心nacos(windows版)_if_icanfly的博客-CSDN博客testhttps://blog.csdn.net/if_icanfly/article/details/107505689?spm=1001.2014.3001.5501安装完成后启动nacos二.下载seata服务端官网下载地址本文将向你介绍如何点击了解各版本详情和升级注意事项。http://seata.io/zh-cn/blog/download.

2021-11-02 19:56:46 420

原创 Seata入门案例

先完nacos的安装与seata服务端的安装 以及配置文件导入nacos安装详细教程https://mp.csdn.net/mp_blog/creation/editor/107505689seata服务端安装教程https://mp.csdn.net/mp_blog/creation/editor/121103159seata配置导入nacos配置中心教程https://mp.csdn.net/mp_blog/creation/editor/120993190案例使用框架版本项目结构如下.

2021-11-02 17:50:13 539

原创 关于springcloudalibaba组件与springboot/springcloud的版本对应关系

1.进入到springcloudalibab的官网2.进入git中阿里巴巴的主页 选择wiki选择版本说明3.先找到springboot/springcloud/springcloudalibaba之间的版本对应关系4.单独使用springcloudalibaba的组件时,找到对应的alibaba的版本 再到上面找到组件对应的版本...

2021-11-02 11:19:12 314

原创 JVM调优入门

1.部分常用调优参数-Xms8m 堆内存最小值-Xmx8m 堆内存最大值-XX:+PrintGCDetails 控制台打印GC信息-XX:+HeapDumpOnOutOfMemoryError 出现内存溢出时生成dump文件-Xmn20M 表示设置年轻代的大小为20M-XX:MaxTenuringThreshold=15  表示对象年龄大于15,自动进入老年代-XX:+PrintGC  表示在控制台上打印出GC信息-XX:SurvivorRatio=8  表示设置2个Sur.

2021-10-21 15:23:36 167

原创 引用类型与垃圾回收算法

一.JAVA中的的四种引用类型1.强引用(Strong Reference)java中默认声明的就是强引用,只要引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足,jvm抛出OutOfMemoryError也不会回收;如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了2.软引用(Soft Reference)用来描述一些非必须但是有用的对象,在内存足够的情况下,引用不会被回收,只有在内存不足的情况下,系统会回收软引用对象,如.

2021-10-21 09:51:01 411

原创 java类的加载过程

类的生命周期如下加载->链接(验证+准备+解析)->初始化->使用->卸载加载过程包含前面的五个阶段加载->链接(验证+准备+解析)+初始化加载,验证,准备,初始化,卸载的顺序是确定的,类的加载必须按照这个顺序进行,但是解析阶段不一定,它在某些情况下是可以在初始化之后才开始的,因为java支持运行时绑定.一.加载:jvm主要完成三件事1.通过类的全限定名来获取定义此类的二进制字节流(Class文件),获取方式可以是jar,war,网络中获取,js..

2021-10-20 11:00:08 73

原创 类加载器与加载机制

一.类加载器1.启动类加载器(BootstrapClassLoader):JAVA_HOME/lib下面的核心类库2.扩展类加载器(ExtensionClassLoader):JAVA_HOME/lib/ext下面的的jar包3.应用程序加载器(APPClassLoader):加载classpath上指定的类库(也叫系统类加载器,因为这个加载器是ClassLoader中的getSystemClassLoader()方法返回的)二,类加载机制双亲委派机制如果一个类加载器收到一个类加

2021-10-20 10:59:50 85

原创 JVM结构简单理解

1.什么是jvmjvm是Java Virtual Machine的首字母缩写,字面意思理解就是java虚拟机,它的主要作用就是将java程序用javac.exe(编译器)翻编译成字节码文件,再由解释器翻译成机器可执行的机器码进行运行.java的跨平台特性就是基于jvm来实现的,不同的操作系统有对应的jvm,2.jvm组成jvm = 类加载子系统+ 执行引擎+运行时数据区类加载子系统: 可以根据指定的全限定名来载入类或接口执行引擎: 负责执行哪些包含在被载入类的方法中的指令....

2021-10-19 12:07:58 64

原创 MySql优化-查询执行次数最多的sql

sql优化需要从对整个系统的影响来考虑,哪个sql的优化能给系统整体带来更大的收益,就更需要优化,一般来讲,高并发低消耗的影响>低并发高消耗的影响.一个频繁执行的高并发 Query 的危险性比一个低并发的 Query 要大很多,当一个低 并发的 Query 执行计划有误时,所带来的影响只是该 Query 请求者的体验会变差,对整 体系统的影响并不会特别突出,但是,如果一个高并发的 Query 执行计划有误,它带来的 后果很可能就是灾难性的。还有就是我们在做项目的阶段,让项目跑起来才是目标,

2021-10-11 17:50:06 2137

原创 Mybatis-Plus使用记录

简介: mybatis-plus是一个mybatis的增强工具,只是在mybatis的基础上只做了增强,不做改变,为简化开发而生,提高效率而生.特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调...

2021-09-29 17:49:59 488

原创 Mybatis-Plus Generator代码自动生成工具体验

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。1.导入依赖 ,需要引用的依赖如下<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-g...

2021-09-28 15:50:51 301

原创 Springboot2.5.4整合shardingSphere5.0.0-alpha实现读写分离(记录一下)

说明:这里是在springboot已经整合了mybatis 实现了数据的增删查改的基础上再与shardingsphere进行整合. springboot与mybatis的整合 这里不再做介绍.关于shardingsphere这里也不做过多的介绍,可以去官网自行查看,官网地址:shardingsphere官方文档介绍读写分离产生的背景介绍: 面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库...

2021-09-02 16:57:52 804

原创 Spring-事务

spring支持编程式事务和声明式事务1.编程式事务可以使用TransactionTemplate2.声明式事务:是spring在aop基础上提供的事务实现机制,它最大的优点是不需要在diamante中添加事务管理的代码,只需要在配置文件中做相关的事务规则声明就可以,但是声明式事务只能针对方法级别,无法控制代码级别的事务管理.Spring中对事务定义了不同的传播级别:1.REQUIRD 默认的传播行为,如果当前没有事务,就创建一个事务,如果当前存在事务,就加入到事务中....

2021-08-26 14:36:11 69

原创 MySql事务

什么是事务: 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取,事务的正确执行是的数据库从一种状态转换成另一种状态.事务必须遵从的原则:ACID1.原子性: 即不可分割,要么全部执行,要么全部不执行.2.一致性:事务的执行使得数据库从一种正确的状态转换成领一种正确的状态.3.隔离性:并发环境下,并发执行的各个事务之间不能相互干扰.4.持久性:一旦事务提交,结果将永远保存在数据库中.并发下,事务会产生的问题:脏读: 读到了其他事务未提交....

2021-08-24 11:17:34 155

原创 Eclipse常用插件及安装

1.SVN-help->eclipse marketplace搜索svn2.MyBatipse作用是从mapper.XXX()方法直接跳进xml中的方法处安装同上 在搜索框输入MyBatipse 搜索到结果直接install3.lombok作用是不用在创建的对象中写一系列的get/set/构造方法等,可以在类上直接使用lombok相关的注解实现安装方法:1、下载lombok.jar,lombok.jar官方下载地址:https://projectlombok.org/downloa

2020-11-17 14:05:30 334

原创 SpringBoot整合Swagger2实现分布式聚合文档

应用场景:微服务项目项目结构如下:zuul为网关,service为服务提供者,customer为服务的调用者.注册中心使用的是nacos1.配置customer的swagger(service本身是一个运行正常的服务)1.1.导入swagger的jar包在pom文件中加入swagger的依赖(三个项目的pom文件都加入) <dependency> <groupId>com.github.xiaoymin</groupId&g..

2020-08-13 15:32:43 1342 1

原创 SpringBoot整合Swagger2入门示例

1.新建一个springboot项目,勾选spring web2.添加swagger的依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.6</version> </dependency> &lt.

2020-08-06 17:26:56 292

Mybatis-Plus代码生成工具

自动生成controller,service,serviceImpl,mapper,mapper.xml

2021-10-09

空空如也

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

TA关注的人

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