Jiang's blog

Jiang's blog

Jiang 的个人博客

动态代理源码解析(基于jdk8)
什么是动态代理?动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比如用来包装 RPC 调用、面向切面的编程(AOP)。 动态代理的实现方式动态代理实现的方式有很多,我这里主要了解了两种最常见的方式 JDK 自身提供的动态代理,就是主要利用了反射机制。 利用更高性能的字节码操作机制,类似 ASM、cglib(基于 ASM)、Javassist 等。 由静态代理到动态代理 代理就是可以认为在不修改已有代码的前提下,在目标对象基础上增加额外的功能。 首先定义一个UserService接口,表示被代理的接口 12345package com...
java8之重新认识HashMap(转自美团技术团队)
java8之重新认识HashMap(转自美团技术团队) java8之重新认识HashMap HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMa...
力扣习题分类之----动态规划 DP
动态规划 DP最长回文子串 (+)力扣第5题: https://leetcode-cn.com/problems/longest-palindromic-substring/ 最大子序和 (+++)力扣第53题: https://leetcode-cn.com/problems/maximum-subarray/submissions/ 不同路径 (++)力扣第62题: https://leetcode-cn.com/problems/unique-paths/ 不同路径 II (+)力扣第63题: https://leetcode-cn.com/problems/unique-path...
力扣习题分类之----DFS深度优先搜索
DFS深度优先搜索对称二叉树(+++++)力扣第101题: https://leetcode-cn.com/problems/symmetric-tree/ 二叉树的最大深度(+++)力扣第104题: https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ 从前序与中序遍历序列构造二叉树(++)力扣第105题: https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 从中序与后序遍历序列构造二...
力扣习题分类之----回溯算法
回溯算法1.电话号码的字母组合(+++)力扣第17题: https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 2. 括号生成(++)力扣第22题: https://leetcode-cn.com/problems/generate-parentheses/ 3.组合总和(+++++)力扣第39题: https://leetcode-cn.com/problems/combination-sum/ 4. 组合总和 II(+++++)力扣第40题: https://leetcode-cn.com/pro...
每日一道算法之--前缀和总结
前缀和总结昨天刷到力扣每一一题 第1371题《每个元音包含偶数次的最长子字符串》时,想了很久搜没有思路,于是我去看了题解,发觉这道题考察的知识点还挺多的,位运算,前缀和,哈希表的优化,状态压缩等,前缀和这一个知识点我尤其的好奇,因为我印象中就刷过两道,当时我记得那两道都不是用前缀和写的,也没去多在意,今天就好好总结一下前缀和这一东西. 1. 和为K的子数组力扣第560题: https://leetcode-cn.com/problems/subarray-sum-equals-k/ 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:...
每日一道算法之--求众数II
求众数II力扣第229题: https://leetcode-cn.com/problems/majority-element-ii/ 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。 示例 1: 输入: [3,2,3]输出: [3] 示例 2: 输入: [1,1,1,3,3,2,2,2]输出: [1,2] 1. 排序 + 统计这道题的问题找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。换个说法,就是求长度超过 ⌊ n/3 ⌋的含有相同元素的子数组. 先对数组排序,这样相同元素就排并...
每日一道算法之--Pow(x, n)
快速幂 快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 一篇关于快速幂的好文章. 作者:jyd链接:https://leetcode-cn.com/problems/powx-n/solution/50-powx-n-kuai-su-mi-qing-xi-tu-jie-by-jyd/ 关于快速幂的题目Pow(x, n)力扣第50题: https://leetcode-cn.com/problems/powx-n/ 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10输出:...
每日一道算法之--在 D 天内送达包裹的能力
在 D 天内送达包裹的能力力扣第1011题 : https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。 示例 1: 输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载...
avatar
Jiang
witness me
FRIENDS
friendA friendB