自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zwb的博客

欢迎灌水

  • 博客(127)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java对接企业微信审批功能,看这一篇就够了

一句话简述就是,后台自动发起员工猪小明的审批申请,领导就可以在企业微信中收到猪小明的审批申请进行审批,可以配置领导审批后企业微信回调我们的服务,我们也可以在后台查询审批流程的详细状态,大体流程就是这样,当然企业微信还提供了其他可能用到的功能,如查询用户信息,用户假期信息等。设置模板内容,企微提供了文本、多行文本、单选、多选、附件等控件,添加后每个小控件都有一个ID,后续根据这个ID给他赋值。URL:回调的接口,需要提供GET、POST请求方式各一个接口。如果缺少依赖,可以引入这个依赖。,如下图,比较简单。

2022-07-06 17:01:41 6095 13

原创 分布式锁实现方案

分布式锁服务之间的共享资源,如何保证线程安全单体,一个jvm,使用synchronized关键字或者lock加锁同步分布式,多个jvm,使用分布式锁分布式锁的实现方案?

2021-04-16 09:51:07 187 1

原创 分布式事务

分布式事务-解决分布式系统的数据一致性问题单体应用:service层加事务,基于AOP实现,基于数据库本身的事务机制,保证数据的原子性。分布式环境:刚性事务和柔性事务两种处理方式刚性事务,依然保持要么一起成功,要么一起失败;柔性事务,追求的是数据的最终一致性,允许存在中间状态,符合BASE理论,基于MQ的方式来实现。...

2021-04-16 09:43:17 123

原创 9、Spring之推断构造方法源码解析

总结:源码思路autowireConstructor() 为什么分越少优先级越高?@Bean的情况

2023-09-17 12:12:13 222

原创 8、Spring之循环依赖底层源码解析

很简单,就是A对象依赖了B对象,B对象依赖了A对象。// A依赖了Bclass A{public B b;// B依赖了Aclass B{public A a;那么循环依赖是个问题吗?如果不考虑Spring,循环依赖并不是问题,因为对象之间相互依赖是很正常的事情。比如a.b = b;b.a = a;这样,A,B就依赖上了。但是,在Spring中循环依赖就是一个问题了,为什么?因为,在Spring中,一个对象并不是简单new出来了,而是会经过一系列的Bean的生命周期,就是因为。

2023-09-17 11:38:10 256 1

原创 7、Spring之依赖注入源码解析(下)

findAutowireCandidates()实现关于依赖注入中泛型注入的实现@Qualifier的使用@Resource源码部分方法属性注入inject方法

2023-09-10 14:21:18 229

原创 6、Spring之依赖注入源码解析(上)

Spring中到底有几种依赖注入的方式?手动注入自动注入XML的autowire自动注入 @Autowired注解的自动注入寻找注入点static的字段或方法为什么不支持桥接方法注入点进行注入字段注入Set方法注入源码部分总体流程

2023-09-10 14:13:38 308 1

原创 5、Spring之Bean生命周期源码解析(销毁)

在Bean创建过程中,在最后(初始化之后),有一个步骤会去判断当前创建的Bean是不是DisposableBean:当前Bean是否实现了DisposableBean接口或者,当前Bean是否实现了AutoCloseable接口BeanDefinition中是否指定了destroyMethod调用DestructionAwareBeanPostProcessor.requiresDestruction(bean)进行判断

2023-09-02 19:49:44 282

原创 4、Spring之Bean生命周期源码解析(创建)

1. 生成BeanDefinition2. 合并BeanDefinition3. 加载类 4. 实例化前5. 实例化6. BeanDefinition的后置处理7. 实例化后8. 自动注入9. 处理属性10. 执行Aware11. 初始化前12. 初始化13. 初始化后总结BeanPostProcessor

2023-08-27 14:13:07 303

原创 3、Spring之底层架构核心概念解析

BeanDefinition、BeanDefinitionReader、BeanFactory、ApplicationContext、类型转换、OrderComparator、BeanPostProcessor、BeanFactoryPostProcessor、FactoryBean、ExcludeFilter和IncludeFilter、MetadataReader、ClassMetadata、AnnotationMetadata

2023-08-20 11:06:43 352

原创 2、手写模拟Spring底层原理

手写模拟Spring底层原理

2023-08-19 14:11:29 194

原创 1、Spring底层核心原理解析

1.入门案例2.spring中是如何创建一个对象?3.bean的创建过程?bean创建的生命周期3.1 推断构造方法3.2 aop大致流程4. spring事务

2023-08-16 08:46:13 309

原创 Spring源码编译教程

1. Spring版本是5.3.102. 下载gradle依赖3.Gitee下载Spring源码4. 修改IDEA的gradle配置5. 运行代码

2023-08-15 11:26:52 82

原创 微信公众号二维码扫码登录(SpringBoot Java实现)

用户扫描公众号的二维码,实现登录当前平台。若未关注公众号,则关注后触发登录;若已关注,则直接登录。登录时通过union_id判断用户是否在系统注册,若未注册则跳转到注册页面或提示未注册。

2023-06-28 15:10:09 2511 1

原创 linux安装Redis,设置远程连接(mac和windows操作)

linux安装Redis,设置远程连接,mac和windows下安装都可以参考

2023-03-25 15:00:29 398 1

原创 redis高可用方案

redis 主从这种复杂的部署架构,尽量在测试环境和生产环境,都进行充足的测试和演练。master node 是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举,即。gossip 协议,用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间。集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。Redis实例像单服务器一样运行,非常容易线性扩展,系统的灵活性很强。通过哈希的方式,将数据分片,每个节点均分存储一定哈希槽。主从的部署架构,是不保证数据零丢失的,只能保证。

2023-02-14 15:17:19 72

原创 RabbitMQ常见面试题

RabbitMQ 架构设计 交换器类型 如何确保消息发送接收 事务消息 死信队列 延时队列 持久化机制 保证消息的可靠性传输 普通集群原理 镜像队列原理

2023-02-13 16:14:20 537

原创 springcloud核心组件及其作用

Zuul还提供了一套过滤器机制,开发者可以自己指定哪些规则的请求需要执行校验逻辑,只有通过校验逻辑的请求才会被路由到具体服务实例上,否则返回错误提示。发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,通过统计接口超时次数返回默认值,实现服务熔断和降级。eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单。http请求,来进行的调用,只不过是通过调用服务名的地址来实现的。登记自己提供服务的元数据,包括服务的。

2023-02-10 17:18:48 147

原创 限流降级方案

统计线程数是为了保护业务线程数不被耗尽,例如,在zuul网关的场景下,zuul转发用户的请求,如果下游某个服务因为某种原因出现延迟或者响应慢的情况,这时候如果用户请求持续进入,就会出现zuul线程池资源被大量占用,极端情况导致线程资源耗尽出现拒绝服务。慢调用比例:就是针对慢调用请求的比例,在单位时间内,慢调用的请求大于最小请求数,且比例大于阈值,就会触发熔断,在第一个熔断时长后,会开启监测状态,如果服务恢复,熔断器关闭,如果服务未恢复,接着触发一个熔断时长。​​​​​​​建议官网查询。

2023-02-10 15:30:38 580

原创 什么是Hystrix?简述Hystrix实现机制

HystrixObservableCommand 将所有的外部系统(或者称为依赖)包装起来,整个包装对象是单独运行在一个线程之中(这是典型的命令模式)。降级:编写好调用失败的补救逻辑,然后对服务直接停止运行,这样这些接口就无法正常调用,但又不至于直接报错,只是服务水平下降。打开断路器可以在一段时间内停止对特定服务的所有请求,如果服务的错误百分比通过阈值,手动或自动的关闭断路器。如果它变满了,那么依赖关系的请求将立即被拒绝,而不是排队等待。统计成功,失败(由客户端抛出的异常),超时和线程拒绝。

2023-02-10 14:59:57 206

原创 接口的幂等性的实现

唯一id。每次操作,都根据操作和内容生成唯一的id,在执行之前先判断id是否存在,如果不存在则执行后续操作,并且保存到数据库或者redis等。服务端提供发送token的接口,业务调用接口前先获取token,然后调用业务接口请求时,把token携带过去,务器判断token是否存在redis中,存在表示第一次请求,可以继续执行业务,执行业务完成后,最后需要把redis中的token删除建去重表。将业务中有唯一标识的字段保存到去重表,如果表中存在,则表示已经处理过了版本控制。增加版本号,当版本号符合时

2023-02-07 14:45:25 114

原创 分布式id生成方案,雪花算法,如何实现分库分表

UUID数据库自增序列雪花算法基于redis、mongodb、zk等中间件生成Leaf-segment如何实现分库分表

2023-02-07 14:35:10 777

原创 Redis常见题目整理

RDB 和 AOF 机制;Redis的过期键的删除策略;Redis线程模型、单线程快的原因;简述Redis事务实现;redis 主从复制的核心原理;缓存穿透、缓存击穿、缓存雪崩;如何保证数据库与缓存的一致性?布隆过滤器原理,优缺点?

2023-02-01 14:45:22 168

原创 MySQL锁的类型 事务的基本特性和隔离级别 ACID靠什么保证 什么是MVCC 主从同步原理 MyISAM和InnoDB的区别 索引类型及影响 执行计划怎么看 慢查询优化

MySQL锁的类型 事务的基本特性和隔离级别 ACID靠什么保证 什么是MVCC 主从同步原理 MyISAM和InnoDB的区别 索引类型及影响 执行计划怎么看 慢查询优化

2023-01-17 16:28:55 237

原创 MySQL索引基本原理 聚簇和非聚簇区别 数据结构 设计原则

MySQL索引基本原理 聚簇和非聚簇区别 数据结构 设计原则

2023-01-17 14:21:40 468

原创 如何实现一个IOC容器

1. 配置文件配置包扫描路径 2. 递归包扫描获取.class文件 3. 反射、确定需要交给IOC管理的类 4. 对需要注入的类进行依赖注入

2023-01-07 19:53:57 142

原创 什么是字节码?采用字节码的好处是什么?

Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。

2023-01-02 15:59:44 584

原创 MySQL事务日志

MySQL事务日志,rodo log 和 undo log详解,DML操作的执行过程。

2022-11-26 21:59:26 226

原创 mysql开启bin log 并查看bin log日志(linux)

mysql开启bin log 并查看bin log日志(linux)

2022-11-26 21:54:40 10901

原创 MySQL事务基础知识

MySQL事务基础知识笔记整理。事务的特性,事务的状态变化?如何使用事务?事务的隔离级别?各个隔离级别使用距离。

2022-11-20 21:04:00 339

原创 docker安装es+mac安装Kibana工具+es查询语法笔记

ES使用java语言并基于lucene编写的搜索引擎框架,提供了分布式的全文搜索功能,提供了基于restful风格的web接口,只需要发送一个web请求,根据请求方式不同,携带不同的参数执行。Lucene本身就是一个搜索框架的底层。ES主要是突出他的横向扩展能力,分布式的。1、Slor在查询死数据的时候更快一些,但是如果数据是实时变化的是咯人效率下降,ES没有影响。2、solr搭建 集群需要 zookeeper,而es本身就支持集群的搭建 不需要第三方的额外介入。

2022-11-16 22:48:46 2096

原创 MySql学习之慢SQL优化和慢SQL案例

慢查询日志记录慢SQLexplain查看分析SQL的执行计划profile分析执行耗时Optimizer Trace分析详情确定慢SQL问题并采用相应的方案隐式转换、最左匹配、深分页问题、in元素过多、order by 走文件排序、索引字段上使用(!= 或者 < >)索引字段上使用is null, is not null,索引可能失效、左右连接,关联的字段的编码格式不一样 、group by使用临时表、delete + in子查询不走索引、其它索引失效场景,如like '%xxx'

2022-11-12 22:31:50 1726

原创 Linux下安装rabbitMQ

在官网上下载 https://www.rabbitmq.com/community-plugins.html,下载rabbitmq_delayed_message_exchange 插件,然后解压放置到 RabbitMQ 的插件目录。进入 RabbitMQ 的安装目录下的 plgins 目录,执行下面命令让该插件生效,然后重启 RabbitMQ。用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限。添加开机启动 RabbitMQ 服务。

2022-09-12 21:24:51 164

原创 谈谈你对AQS的理解。AQS如何实现可重 入锁?

aqs

2022-05-15 17:14:55 1338

原创 linux云服务器下mysql5.7被被攻击,删表,被勒索怎么办

清明小长假打算登上我的腾讯云服务器搞点事,结果发现我的项目数据库貌似连不上了?what?拿出了我的Navicat用root用户,密码123456访问我的mysql,发现报,难道输错密码了?接连试了所有的密码,全部失败。登陆服务器查看mysql进程;结果如下图,并没有mysql的进程。报1045 (28000)发现并没有root用户,也被删了!这时候也查到root用户了。

2022-04-04 12:18:20 8191

原创 Spring 框架中用到了哪些设计模式

代理模式-------在 AOP 和 remoting 中被用的比较多。单例模式-------在 spring 配置文件中定义的 bean 默认为单例模式。模板方法-------用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。工厂模式-------BeanFactory 用来创建对象的实例。简单工厂:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。工厂方法:单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点.

2021-05-08 10:24:01 323

原创 为什么用线程池?解释下线程池参数?线程池处理流程?阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理?

为什么用线程池?解释下线程池参数?1、降低资源消耗;提高线程利用率,降低创建和销毁线程的消耗。2、提高响应速度;任务来了,直接有线程可用可执行,而不是先创建线程,再执行。3、提高线程的可管理性;线程是稀缺资源,使用线程池可以统一分配调优监控。corePoolSize 代表核心线程数,也就是正常情况下创建工作的线程数,这些线程创建后并不会消除,而是一种常驻线程maxinumPoolSize 代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多,将核心线程数都用

2021-05-04 13:36:10 675

原创 java中静态变量和成员变量的区别 static修饰符

java中静态变量和成员变量的区别1、静态变量。由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。2、成员变量研究一个事物(类),其有: 属性:外在特征;例如人的身高,体重,(对应class成员变量)行为:能够做什么;例如人有说话,打球等行为。(成员函数)3、成员变量和静态变量的区别1、两个变量的生命周期不同成员变量随着对象的创建而存在,随着对象被回收而释放。静

2021-04-26 20:59:30 4207

原创 emptyFileException异常

emptyFileException poi空文件异常org.apache.poi.EmptyFileException: The supplied file was empty (zero bytes long)空文件异常原因:读的流没有关 写的流开始写注意在try()-with-resource中读操作和写操作的顺序,关闭读操作之后再进行写操作...

2021-04-21 21:09:40 6433 2

原创 JUC笔记 比较杂乱

JUC并发编程线程,继承Thread类,实现Runnable、Callable接口Runnable无返回值,效率比Callable较低进程,如QQ.exe,一个进程包含多个线程,线程是CPU调度的基本单位Java默认两个线程,main线程和GC线程Java真的能开启线程吗?不能 start方法源码里面调用start0方法是个native本地方法 C++ 无法直接操作硬件并发VS并行并发:多线程同时操作一个资源并行:多线程执行 多核CPU 并发编程本质充分利用CPU资源线程的几个状态 源码

2021-04-17 23:06:38 171 1

分布式面试题.docx

JAVA分布式面试题

2021-04-17

java面试题资料-基础

java面试题资料

2021-04-17

空空如也

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

TA关注的人

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