自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数组的小和问题

数组的小和问题。

2023-06-08 17:39:58 128

原创 for wangwang

【代码】for wangwang。

2023-03-07 11:07:34 176 1

原创 java注解实现对参数的校验

注解校验参数

2023-02-13 11:48:22 482

原创 多线程事务demo

【代码】多线程事务demo。

2023-02-13 11:39:49 116

原创 多线程事务demo

【代码】多线程事务demo。

2023-01-28 18:28:34 254

原创 josn字段事例sql

【代码】josn字段事例sql。

2023-01-28 17:35:18 71

原创 java坐标拾取定位

import com.alibaba.fastjson.JSON;import org.apache.commons.lang3.StringUtils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apac

2021-12-15 01:19:13 637

原创 汉字转拼音工具类

/** * 取一段汉字的每个首字母,字符和字母的话则直接进行输出 */@Slf4jpublic class PingYinUtils { public static String tranHeadPingYin(String hanzi){ if(StringUtils.isBlank(hanzi)) throw new ProjectException(DishEnum.CREATE_FAIL); //基础配置的设置 HanyuPinyinO

2021-12-15 00:45:18 220

原创 springboot开启线程池

定义线程池定义的位置,要在启动类的子包或者同级目录中import lombok.Data;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.schedu

2021-12-02 22:20:22 1872

原创 Spring事务失效场景

spring事务失效的场景及解决方案抛出检查异常导致事务不能正确的回滚原因spring默认只会回滚非检查异常,即会回滚error、runtimeexception及其子类解决方法@Transactional(rollbackFor = Exception.class)//只要是异常就会进行回滚业务方法内自己try-catch异常导致事务不能正确回滚原因:事务通知只有捕捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理了异常,事务通知无法知悉解决方法原样子

2021-11-25 23:14:38 264 1

原创 谈一谈对ThreadLocal的理解

谈一谈对ThreadLocal的理解threadlocal可以实现资源对象的线程隔离,保证线程的封闭性,让每个线程各用各的资源对象,避免竞用引发的线程安全问题为什么不去用局部变量呢?这样更加可以去做到线程的隔离,因为局部变量变量只在当前方法内有效,无法做到线程内的资源共享thread同时实现了线程内的资源共享其原理是,每个线程内有一个threadlocalmap类型的成员变量,用来存储资源对象调用set方法,就是以threadlocal自己作为key,资源对象作为value,放入当前

2021-11-22 23:24:04 440

原创 分布式事务基础理论

基础概念什么是事务事务可以看作是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全不失败本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫做数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务数据的四大特性(ACID):A(atomic):原子性,构成事务的所有操作要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况C(consistency)

2021-11-15 23:44:26 712

原创 RabbitMq插件实现延迟队列

因为延迟队列的需求非常多,而手动的用死信队列实现延迟队列也较为麻烦,所以RabbitMQ的官方也推出了一个插件,原生支持延迟队列效果。这个插件就是DelayExchange插件。参考RabbitMQ的插件列表页面:https://www.rabbitmq.com/community-plugins.html使用方式可以参考官网地址:https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq插件安装运行mq容器

2021-11-14 21:43:15 2042

原创 rabbitmq消费消息确认及消费失败重试机制

这里主要是针对springboot中的rabbitmqtemplate来说的基础代码以查看此专栏相关文章消费者消息确认RabbitMQ是阅后即焚机制,RabbitMQ确认消息被消费者消费后会立刻删除。而RabbitMQ是通过消费者回执来确认消费者是否成功处理消息的:消费者获取消息后,应该向RabbitMQ发送ACK回执,表明自己已经处理消息。设想这样的场景:1)RabbitMQ投递消息给消费者2)消费者获取消息后,返回ACK给RabbitMQ3)RabbitMQ删除消息4)消费者宕机,消

2021-11-14 20:55:00 6937

原创 线程池概述

线程池什么是线程池我们通常可以new Thread(()->{线程执行的任务}).start()这种形式开启一个线程,当run()方法运行结束后,线程对象会被gc释放在真实的环境中,可能需要很多线程来支撑整个应用,当线程数量非常多的时候,反而会耗尽cpu的资源,如果不对线程进行控制与管理,反而会影响程序的性能,线程开销主要包括:创建启动线程的开销;线程销毁的开销;线程调度的开销,即上下文切换时的开销,而且线程的数量会受限cpu处理器的数量的影响线程池则是有效使用线程的一种常用方式,线程池内部可

2021-11-14 17:04:51 842

原创 redis事务机制及持久化机制

事务机制redis是支持事务的redis事务是基于队列实现的,创建一个事务队列,然后将事务操作都放入队列中,最后依次执行#开启事务multi#添加命令sadd user:1001:follow 1002sadd user:1002:follow 1001sadd user:1001:fans 1002sadd user:1002:fans 1002#执行事务exec# 取消事务discardredis事务处理机制redis对于命令执行错误处理,有两种解决方式:语

2021-11-13 15:20:51 1079

原创 redis缓存雪崩、击穿、穿透

缓存雪崩原因在一个较短的时间内,缓存中较多的key集中过期此周期内请求访问过期的数据,redis未命中,redis向数据库获取数据数据库同时接收到大量的请求无法及时处理redis大量请求被积压,开始出现超时现象数据库流量激增,数据库崩溃重启后仍然面对缓存中无数据可用redis服务器资源被严重占用,redis服务器崩溃redis集群呈现崩塌,集群瓦解应用服务器无法得到数据响应请求,来自客户端的请求数量越来越多,应用服务器崩溃应用服务器,redis,数据库全部重启,效果不理想解决方案

2021-11-13 15:13:23 1058

原创 redis过期删除策略及内存淘汰策略

过期删除策略redis可以对key的通用设置中,可以设置key的过期时间及ttl如果单纯的再client中进行命令测试的话,会发现了当时间到时间后再去获取该key会显示nil那么一个key过期了,那么它实际是在什么时候删除的呢?当然这个删除也不是简单的到期了就直接被删除了redis中对于过期键的过期删除策略定时删除惰性删除定期删除定时删除它会在设置键的过期时间的同时,创建一个定时器, 当键到了过期时间,定时器会立即对键进行删除。 这个策略能够保证过期键的尽快删除,快速释放内存空间

2021-11-13 15:06:17 1000

原创 redis基本数据类型

数据存储类型介绍redis数据存储格式redis自身是一个Map,其中所有的数据都是采用key:value的形式存储数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串string和String相似存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型存储数据的格式:一个存储空间保存一个数据存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用set name feifeiset age 18del ageg

2021-11-12 16:15:59 536

原创 RabbitMq发布确认高级

发布确认高级在生产环境中由于一些不明原因导致rabbitmq重启,在rabbitmq重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。如何才能进行rabbitmq的消息可靠投递呢?特别是在这样比较极端的情况,rabbitmq集群不可用的时候,无法投递的消息该去如何处理代码的架构图如上在构建完基础的交换机的配置及路由、队列的配置之后就可以考虑交换机的发布确认了配置文件在配置文件中需要添加在配置文件当中需要添加 spring.rabbitmq.publisher-confirm-t

2021-11-09 21:12:08 841

原创 RabbitMq基础

MQ相关概念什么是mqMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。为什么要用mq流量削峰应用解耦异步处理RabbitMqRabbitMq的概念RabbitMQ 是一个消息中间件:它接受并转发消息。四

2021-11-09 21:09:18 1294 1

原创 es文档查询

查询文档复合查询算分函数查询根据相关度打分是比较合理的需求,但合理的不一定是产品经理需要的以百度为例子,你搜索的结果中,并不是相关度越高排名越靠前,而是谁掏的钱多谁排名就越靠前语法说明function score查询中包含四部分内容:原始查询条件:query部分,基于这个条件搜索文档,并且基于bm25算法给文档打分,原始算分(query score)过滤条件:filter部分,符合该条件的文档才会被重新算分算分函数:符合filter条件的文档要根据这个函数做运算,得到的函数算分(fu

2021-11-05 16:24:06 858

原创 es索引库操作

索引库操作索引库操作有哪些?创建索引库:PUT /索引库名PUT /feifei{ "mappings": { "properties": { "name":{ "type": "keyword", "index": false }, "address":{ "type": "text", "analyzer": "ik_max_word" }, "age":{

2021-11-03 23:40:54 240

原创 GateWay服务网关

spring Cloud gateway具有如下特性:动态路由:能够匹配任何请求属性;可以对路由指定Predicate断言和Filter(过滤器)集成spring cloud服务发现功能易于编写的Predicate断言和Filter(过滤器)请求限流功能支持路径重写三大核心概念路由:路由是构建网关的基本模块,它由id,目标uri,一系列的断言和过滤器组成,如果断言为true则匹配该路由断言:开发人员可以匹配http请求中的所有内容(例如请求头和请求参数),如果请求与断言相匹配则进行路

2021-10-29 23:43:33 174

原创 Eureka注册中心

Eureka服务注册与发现什么是服务注册与发现Eureka采用了cs得设计架构,eureka server 作为服务注册功能得服务器,它式服务注册得中心,而系统中得其他微服务,使用eureka得客户端连接到eureka server并维持心跳连接,这样就可以通过eureka server来监控系统中各个微服务是否正常运行在服务注册与发现中,有一个注册中心。当服务器启动得时候,会把当前自己服务器得信息比如 服务器地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务者),以该别名的方式去注册中心

2021-10-28 23:52:51 9565 2

原创 jwt工具类

<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>package com.itheima.case2.utils;import io.js

2021-10-25 23:46:03 110

原创 maven私服搭建

私服说明​ maven仓库分为本地仓库和远程仓库,而远程仓库又分为maven中央仓库、其他远程仓库和私服(私有服务器)。其中,中央仓库是由maven官方提供的,而私服就需要我们自己搭建了。​ maven私服就是公司局域网内的maven远程仓库,每个员工的电脑上安装maven软件并且连接maven私服,程序员可以将自己开发的项目打成jar并发布到私服,其它项目组成员就可以从私服下载所依赖的jar。私服还充当一个代理服务器的角色,当私服上没有jar包时会从maven中央仓库自动下载。nexus 是一个ma

2021-10-21 20:53:09 1510 1

原创 设计模式-职责链模式

OA系统采购审批需求学校oa系统的采购审批项目:需求是采购员采购教学器材如果金额小于等于5000,由教学主任审批如果金额小于等于10000,由院长审批如果金额小于等于30000,由副校长审批如果金额超过30000以上,由校长审批传统方式解决OA系统审批问题分析传统方式是:接收到一个采购请求之后,根据采购金额调用对应的Approver(审批人)完成审批传统方式的问题分析:客户端到这里会使用到分支判断来对不同的采购请求处理,这样就存在如下问题如果各个级别的人员审批金额发生变化,在客户

2021-10-21 20:23:03 118

原创 java利用网易邮箱免登录发送邮件

package com.cxf.util;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import java.util.Properties;/** * 发送邮件工具类 */public final class MailUti

2021-10-20 23:23:29 637

原创 spring全注解-组件注册

@configuration 配置类==配置文件 高速spring这是一个配置文件@bean 给容器中注册一个bean;类型为返回值的类型,id默认是用方法名字作为id@componentScan 来指定包扫描同样的可以和xml中一样增加过滤规则@ComponentScan(value = "com.cxf",excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION,classes =..

2021-10-14 00:02:26 139

原创 spring全注解-bean生命周期

bean的生命周期bean->初始化->销毁容器帮我们管理bean的生命周期构造(对象创建)单实例:再容器启动的时候创建对象,销毁时容器会帮我们调用destory多实例:每次获取对象的时候创建对象,容器不会管理这个bean,容器不会调用销毁方法我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法指定初始化和销毁方法,初始化的时候需要赋值,销毁的时候关闭一些数据源初始化对象创建完成,并赋值好,调用初始化方法销毁:容器关

2021-10-14 00:01:29 190

原创 spring全注解-属性赋值

使用@value赋值基本数值可以写sp el #{}可以写${}取出配置文件中的值即peoperties中的值 @Value("feifei") private String name; @Value("#{20-2}") private Integer age; @Value("${feifei.sex}") private String sex;同时要在配置类中引入资源文件的位置 @PropertySource(val..

2021-10-14 00:00:38 472

原创 spring事务传播行为

先来看一个假设方便理解辅助:主动光环:可以给队友回血回蓝c(主要输出伤害):主动复苏:可以回血回蓝而且比光环更快​ 主动霸体:增加韧性硬直,抵御一切buff包括增益和减益c的主动技能复苏和辅助的光环不可以叠加,c是否去吃辅助的buff完全由c自己决定,可以开霸体拒绝,也可以使用自己的复苏c对辅助的光环buff即为buff传播行为buff行为:c在辅助的光环的笼罩之下传播:起码发生在两个角色之间c被辅助包裹c是否接收辅助的光环,由c自己决定c的决策方案即为事务传播行为属性:

2021-10-13 23:58:39 192 1

原创 设计模式-观察者模式

天气预报项目需求天气预报项目需求,具体要求如下:气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或者第三方)需要设计开放型api,以便于其他第三方能接入气象站获取数据提供温度、气压和湿度的接口测量数据更新时,要能及时的通知给第三方天气预报设计方案1-普通方案大概方案就是将currentconditions聚合进weatherdata里每当天气数据发生变化的时候,就需要weatherdata去调用currentconditions自己的update方法

2021-10-12 00:26:25 88

原创 设计模式-原型模式

问题:现有一只羊,名为tom,年龄为10岁,颜色为红色,现在需要“克隆出”5只相同的羊首先使用传统的笨方法实现可以使用如下代码package com.cxf.test;public class TestDemo { public static void main(String[] args) { Sheep sheep=new Sheep("tom",10,"红色"); Sheep sheep1=new Sheep(sheep.getName(),sheep

2021-10-06 21:30:19 72

原创 JMM(java内存模型)

java内存模型jmm即java memory model,即java多线程内存模型,它定义了主存、工作内存抽象概念,底层对应着cpu寄存器、缓存、硬件内存、cpu指令优化等jMM体现在以下几个方面原子性-保证指令不会受线程上下文切换的影响可见性-保证指令不会受cpu缓存的影响有序性-保证指令不会受cpu指令并行优化的影响原子性原子(atomic)就是不可分割的意思,原子操作的不可分割有两层含义:访问(读,写)某个共享变量的操作从其他线程来看,该操作要么已经执行完毕,要么尚未发生,即

2021-09-25 00:05:49 1739

原创 多线程的顺序执行

wait&notify实现多线程的顺序执行package com.cxf.test;public class test5 { public static void main(String[] args) { WaitNofity wn = new WaitNofity(5, 1); new Thread(()->{ wn.print("a",1,2); }).start(); new Thread

2021-09-24 23:28:04 165

原创 mysql主从复制简介

mysql复制1.复制概述复制是指将主数据库的ddl和dml操作通过二进制日志传到从库服务器中,然后再从库上对这些日志重新执行,从而使得从库和主库的数据保持同步mysql支持一台主库同时向多台从库进行复制,从库同时也可以作为其他服务器的主库,实现链状复制2.复制原理master主库在开启二进制日志后会将其,ddl、dml等操作记录在二进制日志中,而slove即从库去读取主库的二进制日志并写入自己的relay log中级日志中,继而执行反应在自己的数据库中从图中可以看出,复制分为3步:mas

2021-09-12 18:45:31 165

原创 mysql日志

MySql日志在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。mysql也不例外,在mysql中有四种不同的日志,分别是错误日志、二进制日志(binlog)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹1.错误日志错误日志是mysql中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志该日志是默认开启的

2021-09-12 18:39:35 80

原创 Mysql如何实现可重复读

首先对于mysql来说相信也并不陌生,mysql默认的事务的隔离级别是3,即可以实现可重复读,那mysql又是怎样实现可重复读的呢?下边进行简单的介绍这里就要提到了mvcc,即多版本并发控制首先先来看一个事务的执行图此时分别有四个事物及其执行顺序事务1,将名字更改为张三并提交事务2,将名字更改为张小三并提交事务3,将名字更改为张老三并提交事物4,进行两次查询,注意图中的查询时机在RR级别:select1=张三 select2=张三在rc级别下:select1=张三 se.

2021-09-10 00:21:54 3952 3

空空如也

空空如也

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

TA关注的人

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