自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 日拱一卒:Spring三级缓存

earlySingletonObjects:早期单例对象缓存,用于存放已经创建好但是属性还未注入完成的早期单例对象(用于存储在创建Bean早期对创建的原始bean的一个引用,注意这里是原始bean,即使用工厂方法或构造方法创建出来的对象)以此类推,当需要testA的bean使用setter注入testA时,会使用提前暴露的ObjectFactory工厂,返回一个(提前暴露的)创建中的bean testA,完成setter注入。singletonObjects:单例对象缓存,用于存放已经创建好的对象。

2023-04-02 21:36:15 114

原创 日拱一卒:准备创建Bean

Spring配置中存在lookup-method和replace-method,这两个配置的加载是将配置统一存放在BeanDefinition中的methodOverrides属性里,mbdToUse.prepareMethodOverrides()操作就是针对这两个配置的。lookup-method和replace-method的作用是在bean实例化的时候如果检测到存在methodOverrides属性,会动态地为当前bean生成代理并使用对应的拦截器做增强处理(相关逻辑在bean的实例化部分介绍)

2023-03-28 22:50:53 82

原创 日拱一卒:从bean实例中获取对象

getBean方法中,得到bean实例后是调用getObjectForBeanInstance验证正确性,检测当前bean是否是FactoryBean,如果是要调用对应的FactoryBean实例中的getObject()作为返回值。返回的bean如果是单例的,必须保证全局唯一性,同时可以使用缓存提高性能,doGetObjectFromFactoryBean是起作用的代码。将从Factory中解析bean的工作委托给getObjectFromFactoryBean。《Spring源码解析》

2023-03-27 22:18:07 172

原创 日拱一卒:FactoryBean

当配置文件中的bean的class属性的实现类是FactoryBean时,通过getBean方法返回的是FactoryBean#getObject()返回的对象,而不是FactoryBean本身,即FactoryBean#getObject()代理了getBean方法。在某些情况下,在中需要大量的配置信息,采用编码的方式(FactoryBean可以改善)如果用传统的方式,配置Car的bean时,其每个field对应一个元素标签,这是比较痛苦的;《Spring源码深度解析》

2023-03-26 21:18:24 79

原创 剑指 Offer 20. 表示数值的字符串

题目表示数值的字符串C++代码class Solution {public: bool before(string s) { bool res = false, point = false; for(int i = 0; i < s.size(); i++){ if(s[i] == '+' || s[i] == '-'){ if(i != 0) return

2022-01-07 11:29:40 59

原创 剑指 Offer 19. 正则表达式匹配

题目正则表达式匹配C++代码class Solution {public: bool isMatch(string s, string p) { int m = s.size(), n = p.size(); vector<vector<bool>> dp(m + 1, vector<bool>(n + 1, false)); dp[0][0] = true; for(int i = 1; i

2022-01-07 11:28:01 471

原创 剑指 Offer 18. 删除链表的节点

题目删除链表的节点C++代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int val){

2022-01-07 11:13:03 813

原创 剑指 Offer 17. 打印从1到最大的n位数

题目C++代码打印从1到最大的n位数class Solution {public: vector<int> printNumbers(int n){ int end = 1; while(n--){ end *= 10; } vector<int> res; for(int i = 1; i < end; i++){ res.push_

2022-01-07 11:09:44 584

原创 剑指 Offer 15. 二进制中1的个数

题目二进制中1的个数C++代码class Solution {public: int hammingWeight(uint32_t n){ int res = 0; while(n){ res++; n = n & (n - 1); } return res; }};Java代码public class Solution { // you need

2022-01-06 17:12:40 398

原创 剑指 Offer 14- II. 剪绳子 II

题目剪绳子 IIC++代码class Solution {public: int cuttingRope(int n){ if(n <= 1) return -1; if(n == 2) return 1; if(n == 3) return 2; if(n == 4) return 4; long res =

2022-01-06 17:11:48 157

原创 剑指 Offer 14- I. 剪绳子

题目剪绳子C++代码class Solution {public: int cuttingRope(int n){ if(n <= 1) return -1; if(n == 2) return 1; if(n == 3) return 2; if(n == 4) return 4; int res = 1;

2022-01-06 17:02:07 57

原创 剑指 Offer 13. 机器人的运动范围

题目机器人的运动范围C++代码class Solution {public: int dfs(vector<vector<int>>& board, int i, int j, int k){ if(i >= board.size() || j >= board[0].size() || board[i][j] == 1 || (i % 10 + i / 10 + j % 10 + j / 10) > k)

2022-01-05 11:30:21 169

原创 剑指 Offer 12. 矩阵中的路径

题目矩阵中的路径C++代码class Solution {public:bool dfs(vector<vector<char>> &board, int i, int j, string word, int index) { if(i < 0 || i >= board.size() || j < 0 || j >= board[0].size() || board[i][j] == '*' || board[i][j] != wo

2022-01-05 11:28:51 152

原创 剑指 Offer 11. 旋转数组的最小数字

题目旋转数组的最小数字C++代码class Solution {public: int minArray(vector<int>& numbers){ if(numbers.size() == 0) return -1; int left = 0, right = numbers.size() - 1; while(left <= right){ int mid = le

2022-01-05 11:27:16 403

原创 剑指 Offer 10- II. 青蛙跳台阶问题

题目青蛙跳台阶问题C++代码class Solution {public: int numWays(int n){ if(n == 0) return 1; if(n == 1) return 1; if(n == 2) return 2; int a = 1, b = 2; for(int i = 3; i <= n; i++){

2022-01-04 09:56:06 255

原创 剑指 Offer 10- I. 斐波那契数列

题目斐波那契数列C++代码class Solution {public: int fib(int n){ if(n < 1) return 0; if(n == 1) return 1; if(n == 2) return 1; int a = 1, b = 1; for(int i = 3; i <= n; i++){

2022-01-04 09:54:43 161

原创 剑指 Offer 09. 用两个栈实现队列

题目添加链接描述C++代码class CQueue {private: stack<int> left, right;public: CQueue() { } void appendTail(int value) { left.push(value); } int deleteHead() { if(right.empty()){ while(left.size()){

2022-01-04 09:32:57 73

原创 剑指 Offer 06. 从尾到头打印链表

题目从尾到头打印链表C++代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int> reversePrint(ListNode* head){

2021-12-30 21:06:44 588

原创 剑指 Offer 05. 替换空格

题目替换空格C++代码class Solution {public: string replaceSpace(string s){ string res; for(int i = 0; i < s.size(); i++){ if(s[i] == ' '){ res += "%20"; } else{ res += s[

2021-12-30 20:54:54 300

原创 剑指 Offer 04. 二维数组中的查找

题目二维数组中的查找C++代码class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target){ int m = matrix.size(); if(m == 0) return false; int n = matrix[0].size(); int x =

2021-12-29 17:22:39 352

原创 剑指 Offer 03. 数组中重复的数字

题目数组中的重复的数字C++代码class Solution {public: int findRepeatNumber(vector<int>& nums){ set<int> numsSet; for(int i = 0; i < nums.size(); i++){ if(numsSet.find(nums[i]) == numsSet.end()){ nums

2021-12-29 16:52:59 620

原创 Python图片添加噪声

Python图片添加噪声

2021-12-23 19:43:27 5452 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除