- 博客(12)
- 收藏
- 关注
原创 一分钟了解静态代理
假设现在有一个用户类 People,需要调用买苹果 BuyApple这个类的方法,但是 People 类不能直接调用到BuyApple类。这个时候就可以找来一个中间人(商家,商家去农民手里进货再卖给People),一切的操作先在中间人之内完成,再把结果返回给People。但是这种写法,当需要使用到的业务类太多的时候,不可能创建这么多的类,这就得用到动态代理了。此处代理可以增强功能,也避免了对原来业务的修改等等。静态代理其实很好理解。
2024-06-16 19:16:42
216
原创 java中的反射机制
Java 的反射机制指的是在运行时检查、获取和修改类的属性、方法、构造方法等信息的能力。它允许程序在运行时动态获取类的信息并操作类的成员。
2024-06-16 16:01:36
939
原创 入门jdk动态代理
时,底层是代理对象执行 ServiceProxy 中的 invoke 方法,并且会把调用的方法和方法参数传给 invoke方法,后者的 method.invoke(object,args) 是利用反射机制调用object的方法,参数是args,此操作返回值是操作对象方法的返回值。生成的代理对象类是 jdk.proxy1.$Proxy0,代理调用getUser的时候就会进入到 ServiceProxy 的invoke方法之中。2)Method 类:表示方法的,目标类中的方法。2、jdk动态代理的实现。
2024-06-16 09:57:56
343
原创 简单了解类的加载顺序
静态代码块 :静态代码块在类加载时执行,且仅执行一次。在 HelloA 和 HelloB 类中,静态代码块分别是 HelloA static 和 HelloB static,它们会在类加载时按照代码顺序执行。非静态代码块:非静态代码块在每次创建实例时都会执行,并且在构造方法之前执行。在 HelloA 类中,非静态代码块是 HelloA 1,在 HelloB 类中,非静态代码块是 HelloB 1。在 HelloA 类中,构造方法输出 HelloA,在 HelloB 类中,构造方法输出 HelloB。
2024-06-16 09:00:12
222
原创 里氏代换原则
我们运行一下这段代码就会发现,假如我们把一个普通长方形作为参数传入resize方法,就会看到长方形宽度逐渐增长的效果,当宽度大于长度,代码就会停止,这种行为的结果符合我们的预期;因此,Square类和Rectangle类之间的继承关系违反了里氏代换原则,它们之间的继承关系不成立,正方形不是长方形。类RectangleDemo是我们的软件系统中的一个组件,它有一个resize方法依赖基类Rectangle,resize方法是RectandleDemo类中的一个方法,用来实现宽度逐渐增长的效果。
2024-04-04 23:45:03
582
原创 C++ 类构造函数 & 析构函数
** 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念: #include <iostream> using namespace std; class Line { public: void setLength( double len ); double ge
2022-03-25 21:22:33
20
1
原创 C语言:对称菱形
#include<stdio.h> #include<math.h> int main() { int i,j,n = 4; for(i = -n + 1;i < n;i++) { for(j = -n + 1;j < n;j++) { putchar(abs(j) < n - abs(i) ? '*':' '); } putchar('\n'); } return 0; } * *** ***** *******
2021-12-03 11:44:06
161
原创 C语言:球落回弹问题
#include<stdio.h> int main() { double num = 0,h = 100; for(int i = 0;i < 10;i++) { num += h*2 - h/2; h = h/2; } printf("第十次落地时共经过%lf米,第十次反弹%lf米。\n",num - h,h); return 0; } 第十次落地时共经过299.609375米,第十次反弹0.097656米。 ...
2021-12-03 11:42:48
363
原创 猴子吃桃问题
问:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子? #include<stdio.h> int main() { int n = 1; for(int i = 1;i < 10;i++) { n = (n + 1) * 2; //前一天剩的桃子等于后一天剩的桃子*2 } printf("第一天一共摘了%
2021-12-03 11:41:18
73
原创 C语言:牛顿迭代法解方程
#include<stdio.h> #include<math.h> double newton_method(int a,int b,int c,int d); double newton_method(int a,int b,int c,int d) { double x1,fx,x0,f; x1 = 1.5; while(fabs(x1 - x0) >= 1e-5) { x0 = x1; fx = a*x0*x0*x0 + b*x0*x0 + c*x0 +
2021-12-03 11:32:53
1131
原创 C语言:二分法解方程
#include<stdio.h> #include<math.h> double dichotomy(int a,int b,int c,int d); double dichotomy(int a,int b,int c,int d) { double x0,x1,x2,fx0,fx1,fx2; do { printf("Enter x1,x2:"); scanf("%lf,%lf",&x1,&x2); fx1 = a*x1*x1*x1 + b*
2021-12-03 11:23:55
546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人