什么是动态代理?动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比如用来包装 RPC 调用、面向切面的编程(AOP)。
动态代理的实现方式动态代理实现的方式有很多,我这里主要了解了两种最常见的方式
JDK 自身提供的动态代理,就是主要利用了反射机制。
利用更高性能的字节码操作机制,类似 ASM、cglib(基于 ASM)、Javassist 等。
由静态代理到动态代理
代理就是可以认为在不修改已有代码的前提下,在目标对象基础上增加额外的功能。
首先定义一个UserService接口,表示被代理的接口
12345package com...
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最长回文子串 (+)力扣第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深度优先搜索对称二叉树(+++++)力扣第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力扣第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 ⌋的含有相同元素的子数组.
先对数组排序,这样相同元素就排并...
快速幂
快速幂就是快速算底数的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 天内送达包裹的能力力扣第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解释:船舶最低载...