摘要: 解读源码本来就是一件极其枯燥乏味的事情 希望你坚持住 过了这道坎 你会看到不一样的风景; 在解读源码之前我们来讨论一下源码解读的技巧: 跑不起来的源码不读 解决问题就好-目的性 一条线索到底 无关细节略过 1、跑不起来的源码不读 因为大部分源码都会用到好多的设计模式,这就促使如果源码跑不起来,单纯的 阅读全文
posted @ 2020-07-28 01:27 AmourLee 阅读(252) 评论(0) 推荐(0) 编辑
摘要: CAS操作号称无锁优化,也叫作自旋;对于一些常见的操作需要加锁,然后jdk就提供了一些以Atomic开头的类,这些类内部自动带了锁,当然这里的锁并非是用synchronized来实现的,而是通过CAS操作来实现的; 一、下面是 AtomicInteger 的使用: package com.desig 阅读全文
posted @ 2020-07-21 10:37 AmourLee 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要使用synchronized关键字? 1、使用synchronized关键字的原因:在并发编程问题中存在着共享数据,在多线程操作共享数据时,要保证同一时刻只有一个线程在执行某个方法或某个代码块; synchronized既保证了原子性,又保证了可见性,所以可以使用synchronized 阅读全文
posted @ 2020-07-17 17:05 AmourLee 阅读(1827) 评论(0) 推荐(0) 编辑
摘要: 常见的垃圾回收器: Serial Serial Old Parallel Scavenge Parallel Old ParNew CMS G1 ZGC Shenandoah Epsilon 下图已经列出来了这,其中Epsilon是debug使用的,不用过分关注;最常见的组合有:Serial +Se 阅读全文
posted @ 2020-07-13 15:44 AmourLee 阅读(1446) 评论(0) 推荐(0) 编辑
摘要: 一、首先什么是垃圾(garbage)? 没有引用指向的一个或多个对象叫做垃圾; 二、如何找到这些垃圾 一般有两种方法: 引用计数 根可达算法 1、第一种叫做引用计数法(reference count),有一个引用指向一个对象,计数就加1 ,直到这个数为0,就会被当作垃圾。 2、引用计数 不能解决一个 阅读全文
posted @ 2020-07-12 07:16 AmourLee 阅读(2565) 评论(0) 推荐(0) 编辑
摘要: 一、对象的创建过程 1、创建对象主要分一下几个步骤: class loading class linking(verification preparation resolution) class innitializing 申请对象内存 成员变量赋默认值 调用构造方法(1.成员变量赋初始值 2.执行 阅读全文
posted @ 2020-07-10 14:57 AmourLee 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 消息重试框架 Spring-Retry 和 Guava-Retry 一重试框架之Spring-Retry Spring Retry 为 Spring 应用程序提供了声明性重试支持。它主要是针对可能抛出异常的一些调用操作,进行有策略的重试。 1. Spring-Retry的普通使用方式 1.准备工作 阅读全文
posted @ 2023-02-10 10:02 AmourLee 阅读(143) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ基本介绍 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),RabbitMQ服务器是用Erlang语言编写的。 RabitMQ官方网站: https://www.rabbitmq.com/ 1.点对点(简单)的队列 2.工作(公平性)队列 阅读全文
posted @ 2023-02-07 16:59 AmourLee 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 学过 Netty 的都知道,Netty 对 NIO 进行了很好的封装,简单的 API,庞大的开源社区。深受广大程序员喜爱。基于此本文分享一下基础的 netty 使用。 maven集成 <!-- https://mvnrepository.com/artifact/io.netty/netty-all 阅读全文
posted @ 2023-02-07 16:57 AmourLee 阅读(863) 评论(0) 推荐(0) 编辑
摘要: 简介 Java 图形验证码,支持 Gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目。 效果展 集成项目 maven 方式引入: <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha 阅读全文
posted @ 2023-02-07 10:08 AmourLee 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 设计模式-策略模式(服务定位器模式) 前言: 正文开始前先抛出一个问题,项目开发中如果让你设计支付模块,目前有支付宝、微信、各大银行的部分,你会如何设计支付这块的代码?在调用的客户端一般都是用if else去做判断,比如类型等于ALIPAY,我就用支付宝的实现逻辑处理,那如果新加一种支付方式,是不是 阅读全文
posted @ 2023-02-06 16:08 AmourLee 阅读(235) 评论(0) 推荐(0) 编辑
摘要: SpringBoot 如何快速过滤出一次请求的所有日志? SLF4J日志框架提供了一个MDC(Mapped Diagnostic Contexts)工具类,谷歌翻译为映射的诊断上下文。 public class Main { private static final String KEY = "requestId"; private static fina 阅读全文
posted @ 2023-02-04 14:26 AmourLee 阅读(66) 评论(0) 推荐(0) 编辑
摘要: MQ架构设计原理 什么是消息中间件 消息中间件基于队列模型实现异步/同步传输数据 作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合度。 传统的http请求存在那些缺点 1.Http请求基于请求与响应的模型,在高并发的情况下,客户端发送大量的请求达到 服务器端有可能会导致我们服务器端处理请求堆积 阅读全文
posted @ 2022-01-18 18:11 AmourLee 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 腾讯会议API接入 最近项目需要对接腾讯会议,所以提前预研一下腾讯会议的API的接入方式。 一、 产品购买 进入页面https://meeting.tencent.com/buy.html(腾讯云会议购买页面) 腾讯云会议分为:个人版、商业版、企业版。这里介绍企业版的接入。 如果需要云会议室,可以同时购买腾讯会议 Ro 阅读全文
posted @ 2022-01-05 10:52 AmourLee 阅读(4384) 评论(1) 推荐(0) 编辑
摘要: 一、前言 最近在对接腾讯会议API接口,在鉴权完成后开始调用对方的接口,在此过程中出现调用报错:javax.net.ssl.SSLHandshakeException。 二、出现原因 当你在进行https请求时,JDK中不存在三方服务的信任证书,导致出现错误javax.net.ssl.SSLHand 阅读全文
posted @ 2021-11-23 18:43 AmourLee 阅读(5412) 评论(0) 推荐(1) 编辑
摘要: 一、前言 从架构的一个整体性来看,redis产生击穿、穿透、雪崩的情况的前提条件都是redis做缓存使用,并且产生了高并发,正常情况下我们利用关系型数据库(mysql、oracle等等)作为数据存储,如果并发量不大的情况完全可以hold住客户端的请求,如果高并发产生关系型数据库I/O就会成为瓶颈,这 阅读全文
posted @ 2021-09-26 13:51 AmourLee 阅读(1056) 评论(0) 推荐(0) 编辑