2 wenyixicodedog

尚未进行身份认证

我要认证

文一西路代码狗

等级
TA的排名 6w+

Dubbo源码 之 序列化hessian源码分析

待更新

2020-07-04 02:11:22

Dubbo源码 之 Activate源码分析

待更新

2020-07-04 02:08:51

Dubbo源码 之 服务发现源码分析

待续

2020-07-03 21:12:15

Dubbo源码 之 服务暴露源码分析

Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于Spring 的 Schema 扩展进行加载。

2020-07-03 21:11:06

Dubbo源码 之 SPI动态适配源码分析

前言:SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。 ...

2020-07-02 20:26:26

Spring Bean生命周期——基础篇

前言:IoC 全称为Inversion of Control,翻译为 “控制反转”,从字面意思来说就是以反转的方式控制对象创建的整个生命周期,SpringIOC作为控制反转思想的优秀实现,在容器启动时读取应用程序提供的Bean配置信息,然后实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。本文章从Spring Bean生命周期的角度一探Spring的运作原理。Bean生命周期:这里我用的是AnnotationConfigApplicationContext.

2020-06-28 23:31:21

为什么Redis Cluster中至少应该有三个结点?

①、对于RedisCluster中为什么Node至少是三个个人理解RedisCluster在使用gossip协议进行通信的时候,也就是交换的数据信息(消息体和消息头组成)。在消息体中,会携带一定数量的其他节点信息用于交换。其他节点的信息约为集群总节点数量的1/10,但至少携带3个节点的信息。②、对于Redis集群节点数量为什么要是奇数个?1、防止由脑裂造成的集群不可用(可用节点数量 > 总节点数量/2)。2、在容错能力相同的情况下,奇数台更节省资源(3个节点的集群,允许有一个节点宕机,

2020-06-25 13:16:41

Spring AOP 动态代理源码分析——基础篇

1、Spring Aop是什么及实现原理概述简单来说spring aop就是面向切面编程,对切面执行前置、后置等回调逻辑,实现功能增强。Spring AOP的实现对于接口来说使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。2、问题情景在我自己的spring源码aop demo中创建了一个类然后是aspect对类方法拦截,如下:config类配置开启aop,proxyTargetClass这里我没有配置,其实从spring5开始默认使用的是jdk的动态代理

2020-06-24 01:16:36

MySQL锁底层实现原理

innodb是一个多线程并发的存储引擎,内部的读写都是用多线程来实现的,所以innodb内部实现了一个比较高效的并发同步机制。innodb并没有直接使用系统提供的锁(latch)同步结构,而是对其进行自己的封装和实现优化,但是也兼容系统的锁。Semaphore operations in operating systems are slow: Solaris on a 1993 Sparctakes 3 microseconds (us) for a lock-unlock pair and Wind.

2020-06-09 22:09:47

MySQL锁的类型,以及加锁的原理

# 表锁和行锁我们首先来了解一下表锁和行锁:表锁是指对一整张表加锁,一般是 DDL 处理时使用;而行锁则是锁定某一行或者某几行,或者行与行之间的间隙。表锁由 MySQL Server 实现,行锁则是存储引擎实现,不同的引擎实现的不同。在 MySQL 的常用引擎中 InnoDB 支持行锁,而 MyISAM 则只能使用 MySQL Server 提供的表锁。# 表锁表锁由 MySQL Server 实现,一般在执行 DDL 语句时会对整个表进行加锁,比如说 ALTER TABLE 等操.

2020-06-06 13:31:24

三角形最小路径和(贪心算法)--leecode

public int minimumTotalGreed(List<List<Integer>> triangle) { int sum = triangle.get(0).get(0); int m = 0, n = 0; for (int i = 1; i < triangle.size(); i++) { int bottom = triangle.get(m + 1).get(n); ...

2020-05-16 21:45:04

最大子数组之和--动态规划( O(n))

/** * 利用动态规划解题:该方法时间复杂度为:o(n),但是额外使用了两个数组空间,其空间复杂度为:o(n) * 解题思路:对于一个数组,求最大子数组之和,我们可以分为三部分: * 我们以最后一个元素array[n-1]为例子: * 1:array[n-1]自己构成最大的子数组 * 2:包含array[n-1]的最大子数组,即以array[n-1]结尾,我们用End[n-1]表示 * 3:不包含array[n-1]的最大子数组,那么求arra.

2020-05-15 22:46:51

最大子数组之和--优化的动态规划(舍弃All数组)

/** * 优化的动态规划(舍弃All数组) */ private static void getSumOfSubArray05(int array[]) { int n = array.length; int End[] = new int[n]; //初始化:当数组中只有一个元素时 End[0] = array[0]; End[n - 1] = array[n - 1]; ...

2020-05-15 22:46:41

最大子数组之和--进一步优化的动态规划

/** * 进一步优化的动态规划 * 为了进一步降低空间复杂度,我们可以定义两个变量用来保存方法三中的 * End[i-1]和All[i-1] */ private static void getSumOfSubArray04(int array[]) { int n = array.length; int nEnd = array[0]; //前i个元素的最大子数组之和 int nAll = array[0].

2020-05-15 22:46:31

最大子数组之和--分治法( O(nlogn))

/** * @Date: 2020-03-24 * @Description: 最大子数组问题算法(分治法 、 无左右下标) */ public static int maxSubArraySort(int a[], int low, int high) { if (low > high) { return 0; } if (low == high) { return.

2020-05-15 22:46:21

最大子数组之和(蛮力法 O(n^3))

/** * 最大子数组问题算法(蛮力法 O(n^3)) */ private static void getSumOfSubArray01(int array[]) { int n = array.length; int thisSum, maxSum = Integer.MIN_VALUE, k, i, j; for (i = 0; i < n; i++) { for (j = i; j < .

2020-05-15 22:46:13

最大子数组之和--优化的蛮力枚举( O(n^2))

/** * 最大子数组问题算法(优化的蛮力法)(重复利用已经计算的子数组和,相比较方法一,时间复杂度为:O(n^2)) */ private static void getSumOfSubArray02(int array[]) { int n = array.length; int thisSum, maxSum = Integer.MIN_VALUE, i, j; for (i = 0; i < n; i++) { .

2020-05-15 22:46:03

快速排序算法--随机主元( O(nlogn))

/** * @Date: 2020-03-24 * @Description: 快速排序算法(随机选取一个数为基数 , 比他大的总是在右边 , 小的总是在左边) * @Description: 时间复杂度为O(nlogn) */ public static void quickSortRandom(int a[], int low, int high) { if (low >= high) { return; .

2020-05-15 22:45:49

快速排序算法--固定主元( O(n) - O(n ^ 2))

/** * @Date: 2020-03-24 * @Description: 快速排序算法(选取一个数为基数 , 比他大的总是在右边 , 小的总是在左边) * @Description: 时间复杂度好的情况下为O(n), 坏的情况下为O(n ^ 2) */ public static void quickSort(int a[], int low, int high) { if (low >= high) { .

2020-05-15 22:45:40

归并排序算法

public static int[] mergeSort(int a[], int low, int high) { int mid = (low + high) / 2; if (low < high) { mergeSort(a, low, mid); mergeSort(a, mid + 1, high); merge(a, low, mid, high); } ...

2020-05-14 00:50:43

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。