nodemailer极简源码解析与实现原理
前言① 本文只解析基于SMTP协议发送邮件的情况② 本文的解析基于删减学习版—simple-nodemailer③ 关于处理email.content的部分省略一、使用这段跟 官网example 一样://位置:index.jsconst nodemailer=require('./nodemailer')const config=require('./config')async function sendEMail(option){ //根据用户名、密码、qq邮箱smtp地址、...
2024-01-10如何在mac系统下使用clion调试redis源码
clion主要使用的是cmake + make 进行编译。所以对于redis4来说,主要的就是先编写 CMakeLists.txt 文件。 CmakeLists.txt 文件redis4/CMakeLists.txtcmake_minimum_required(VERSION 3.15)project(redis4)set(CMAKE_BUILD_TYPE "Debug")get_filename_component(REDIS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" ABS...
2024-01-10springioc源码分析
Spring源码解析先看看我们的启动代码ClassPathXmlApplicationContext cp = new ClassPathXmlApplicationContext("applicationContext.xml");TextImpl text = (TextImpl) cp.getBean("tt");text.print();1.ClassPathXmlApplicationContext点击ClassPathXmlApplicationContext看看创建对象时发生了什么public...
2024-01-10自定义Android六边形进度条(附源码)
本文实例讲述了Android自定义圆形进度条,分享给大家供大家参考。具体如下:大家也可以参考这两篇文章进行学习: 《自定义Android圆形进度条(附源码)》 《Android带进度的圆形进度条》运行效果截图如下:主要代码:package com.sxc.hexagonprogress;import java.util.Random;import android.content.Context;import and...
2024-01-10ShardingSphere源码解析
根据官网的介绍,SS去连接数据库的时候有2种模式,一种是内存限制模式,一种是连接限制模式内存限制模式:使用此模式的前提是,ShardingSphere对一次操作所耗费的数据库连接数量不做限制。 如果实际执行的SQL需要对某数据库实例中的200张表做操作,则对每张表创建一个新的数据库连接,并通过多...
2024-01-10container_of()宏的源码分析
简介container_of(ptr, type, member)是内核中的经典函数之一。该函数的作用是:根据结构体中一个成员的地址,找到结构体的地址。这个函数是内核实现面向对象的基础设施,且最近在学习中经常见到这个函数,于是笔者在内核中查看了该函数的实现,故在此记录。本文原本是为了展示container_of的实现,但...
2024-01-10SpringCloudRibbon源码解析
专栏目录Spring Cloud OpenFeign 源码解析Spring Cloud Ribbon 源码解析Spring Cloud Alibaba Sentinel 源码解析Spring Cloud Gatway 源码解析Spring Cloud Alibaba Nacos 源码解析代码准备依赖关系+------------+ +------------+| | | || | ...
2024-01-10懂SpringAOP源码
1 主要的接口1.1 Advice 通知本接口定义了切面的增强方式,如:前置增强 BeforeAdvice,后置增强 AfterAdvice,异常增强 ThrowsAdvice 等。下面看两个主要的子接口的源码。public interface MethodBeforeAdvice extends BeforeAdvice { /** * 目标方法 method 开始执行前,AOP 会回调此方法 */ void before(Method method, Object[] a...
2024-01-10ClassLoader类加载源码解析
Java类加载器1、BootClassLoader: 用于加载Android Framework层class文件。2、PathClassLoader: 用于Android应用程序类加载器。可以加载指定的dex,jar、zip、zpk中的classes.dex3、DexClassLoader:加载指定的dex,以及jar、zip、apk中的classes.dex源码解析1.ClassLoader中提供loadClass用于加载指定类//ClassLoader.javapublic Class<?> loadC...
2024-01-10dubbo,Cluster$Adaptive类源码是什么
源码由ExtensionLoader.createAdaptiveExtensionClassCode()方法生成dubbo默认cluster类型为failoverpackage com.alibaba.dubbo.rpc.cluster;import com.alibaba.dubbo.common.extension.ExtensionLoader;public class Cluster$Adaptive implements com.alibaba.dubbo.rpc.cluster.Cluster...
2024-01-10javathreadLocal源码探究
有些人对使用ThreadLocal的使用不是很理解,这里还要从原理讲起。我们可以在其中找到许多方法,ThreadLocal可以加名称后面加入一些方法,然后结合在一起使用,可以把它看成方法的汇集。下面我们就以ThreadLocalMap使用为例,对ThreadLocal源码进行探索和分析。1.ThreadLocal的内部结构ThreadLocal并不维护ThreadLoca...
2024-01-10CoroutineContext源码分析
context,即协程上下文public interface Continuation<in T> { /** * The context of the coroutine that corresponds to this continuation. */ public val context: CoroutineContext /** * Resumes the execution of the corresponding coroutine passing a ...
2024-01-10SpringIOC容器源码分析
人不学不知道Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文...
2024-01-10看SpringCloudEureka源码前懂得这些知识事半功倍
不要把“间歇性踌躇满志,持续性混吃等死”活成一种习惯一、为什么写这篇文章二、基础知识1.寻根问码2.Jersey 框架(熟悉而又陌生的Contoller)3.Google的guava框架(瓜娃子)4.HTTP通信5.EurekaServer的设计思想6.InstanceInfo域值(DTO)三、总结一、为什么写这篇文章因为公司用的是SpringCloud,所以闲暇之余,我尝...
2024-01-10javaArrayBlockingQueue源码探讨
在我们学习了ArrayBlockingQueue的基本内容后,需要进一步的对其源码进行探索,找出其中的一些方法,以及对用法的原理上有更深刻的理解。下面我们就ArrayBlockingQueue类的定义进行解析,找寻其参数、构造方法、同步机制的概念,进一步在其中分析源码。1. 类的定义public class ArrayBlockingQueue<E> extends Abst...
2024-01-10并发编程第六天----LongAdder源码深度解析
简介AtomicLong 通过 CAS 提供了非阻塞的原子性操作,性能比使用同步锁好多了。但是在高并发情况下,大量线程争夺同一个原子变量,只有一个线程的 CAS 能操作成功,其他线程会不停地 CAS 自旋,极度浪费 CPU 资源。为了解决这个问题,JDK8 提供了一个类 LongAdder。把一个变量分成多个变量,让同样多的...
2024-01-10cloudstack源码阅读笔记之cloudclientui模块
该模块属于cloudstack-management该模块只有一个主类,ServerDaemon,主要作用是初始化jetty配置,启动jetty server。重点是web.xml 配置,根据这个分析各个serverlet 的功能。<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ja...
2024-01-10redis5.0.7源码阅读——字典dict
redis中字典相关的文件为:dict.h与dict.c与其说是一个字典,道不如说是一个哈希表。一、数据结构dictEntry 1 typedef struct dictEntry { 2 void *key; 3 union { 4 void *val; 5 uint64_t u64; 6 int64_t s64; 7 double d; 8 } v; 9 struct dictEntry *next;10 }...
2024-01-10Striped64、LongAdder、LongAccumulator源码分析
Striped64、LongAdder、LongAccumulator 源码分析LongAdder 的作者是Doug Lea大神,该类原本在Guava工具包中,后来被Java8吸收,以下源码基于Java8LongAdder 继承自Striped64,并实现了Serializable序列化接口。Striped64 继承自Number,重写了longValue,intValue,floatValue,doubleValueStriped64设计思路该类提供一个Cell数组,和一个base字...
2024-01-10简单总结阻塞队列ArrayBlockingQueue源码
前面Java并发这块的锁、并发工具、原子类、线程池都已经学习完了,接下来是队列的学习。ArrayBlockingQueue总结先直接总结ArrayBlockingQueue相关的特性再根据源码来进行说明,它的主要特性如下:1、他是一个由数组实现的FIFO有界阻塞队列,数组由final修饰;2、ArrayBlockingQueue有界且固定,在构造函数时...
2024-01-10ShardingSphere源码解析(五)---结果归并
归并引擎看起来还是挺复杂的,ShardingSphere支持的结果归并从功能上分为遍历、排序、分组、分页和聚合5种类型,它们是组合而非互斥的关系。 从结构划分,可分为流式归并、内存归并和装饰者归并。流式归并和内存归并是互斥的,装饰者归并可以在流式归并和内存归并之上做进一步的处理。我们...
2024-01-10PHP在线调试执行的实现方法(附demo源码)
本文实例讲述了PHP在线执行的实现方法。分享给大家供大家参考,具体如下:运行效果截图如下:run.php文件如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type...
2024-01-10redis5.0.7源码阅读——动态字符串sds
redis中动态字符串sds相关的文件为:sds.h与sds.c一、数据结构redis中定义了自己的数据类型"sds",用于描述 char*,与一些数据结构 1 typedef char *sds; 2 3 /* Note: sdshdr5 is never used, we just access the flags byte directly. 4 * However is here to document the layout of type 5 SDS strings. */ 5 struct ...
2024-01-10AQS(AbstractQueuedSynchronizer)源码导读:锁的获得与释放
Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues. This class is designed to be a useful basis for most kinds of synchronizers that rely on a single a...
2024-01-10【Java】通俗易懂的JUC源码剖析-LongAdder/LongAccumulator
首页专栏java文章详情0通俗易懂的JUC源码剖析-LongAdder/LongAccumulator小强大人发布于 今天 14:59 一、有AtomicLong为什么还需要LongAdder/LongAccumulator?大家对AtomicLong应该比较熟悉(如果未接触过,请翻看另一篇博客,通俗易懂的AtomicLong源码剖析),但JDK1.8为什么又新增了LongAdder/LongAccumulator2个类?Ato...
2024-01-10