自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java静态代理和动态代理(代理模式)详解

1、代理模式代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。代理模式有静态代理和动态代理两种实现方式。2、静态代理静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理

2022-05-12 22:26:37 3610

原创 Java反射机制分析

反射1、反射机制的概念指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能操作它的任意一个方法和属性。这种动态获取信息,以及动态调用对象方法的功能叫Java语言的反射机制。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。2、反射的原理为了彻底理解反射的原理,可以先理解一下虚拟机的工作机制。通常,java在编译之后,会将Java代码生成为class源文件,JVM启动时,将会载入所有的源文件,并将类型信息存放

2022-05-12 17:44:57 429

原创 Java中的I/O流、序列化分析

1、序列化和反序列化如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。简单来说:序列化: 将数据结构或对象转换成二进制字节流的过程 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class)2、Java 序列化中如果有些字段不想进行序列化,怎么办?对于不想进行序列化的变量,使用tr.

2022-05-11 22:06:04 206

原创 Java异常机制

Java 异常类层次结构图概览 :Exception 和 Error 有什么区别?在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 `Throwable`类。`Throwable`类有两个重要的子类:- **`Exception`** :程序本身可以处理的异常,可以通过`catch`来进行捕获。`Exception`又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。..

2022-05-11 17:19:05 582

原创 Java接口和抽象类的异同

1、接口概念:接口是对行为的抽象,也可以说是对类局部(行为)的抽象。说明:接口中可以含有变量和方法,但是,接口中的变量会被隐式地指定为public static final。而方法会被隐式地指定为public abstract方法且只能是public abstract方法interface interfaceA { // 接口中的变量必须进行初始化 // 因为接口中的变量会被隐式地指定为public static final // 实现类中有,但是不能访问 in

2022-05-10 10:30:16 1965

原创 Java静态分派和动态分派

动态类型和静态类型动态类型和静态类型发生在继承和多态中,在创建对象时,同一个对象有动态类型和静态类型之分,等号左侧的是静态类型,等号右侧new出来的类型是动态类型。动态分派和静态分派静态分派是在编译期发生,动态分派在运行期发生。静态分派和动态分派涉及到对象的动态类型和静态类型。方法执行时,方法传参进去,不管参数的动态类型是什么,都按照静态类型执行。静态分派确定参数静态类型,动态分派决定执行者的类型。class Father { void eat(Father fat

2022-05-09 19:39:43 492

原创 Java包装类型缓存机制、自动拆/装箱

缓存机制Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。Byte,Short,Integer,Long这 4 种包装类默认创建了数值[-128,127]的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据,Boolean直接返回TrueorFalse。如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡。两种浮点数类型的包装类 Float,Double并没有实现缓存机制。Integer缓存源码...

2022-05-09 18:00:14 146

原创 Java中局部变量、成员变量、静态变量区分

1、位置不一样局部变量:在方法的内部成员变量:在方法的外部、直接写在类当中静态变量:在方法的外部、直接写在类当中2、作用范围不一样(作用域)局部变量:只有方法当中可用,出了方法就不可用成员变量:整个类都可用静态变量:整个类都可用3、默认值不一样局部变量:没有默认值,使用前必须手动赋值成员变量:如果没有赋值,会有默认值,赋值规则和数组一样4、内存的位置不一样局部变量:位于栈内存成员变量:位于堆内存静态变量:方法区中的静态区5、生命周期不一样局部变

2022-05-09 17:12:02 652

原创 PTA基础编程题目集 7-38 数列求和-加强版

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1,N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3结尾无空行输出样例:123结尾无空行#include <iostream>#include <vector>using namespace std;int main().

2021-09-05 22:26:54 319

原创 C++代码实现求两个数的最大公因数,化简分数

#include <iostream>using namespace std;int main(){ int fenzi, fenmu; cin >> fenzi >> fenmu; int A = fenzi, B = fenmu, r;//保留分子,分母,定义余数r while (B) { r = A % B; A = B; B = r; }//求两数的最大公约数 cout << A; return.

2021-09-05 21:48:41 368

原创 C++创建自定义长度数组小技巧

大家都知道C++如果直接创建数组,必须要指定数组的长度,而有时候所需要数组的长度不是固定的,比如我需要从控制台输入一个数,创建这个数的长度的数组,那该怎么办呢?这里教大家一个小技巧,话不多说直接上代码。#include<iostream>using namespace std;int main(){ int N; cin >> N; //一般情况下我们想这样创建 //int a[N]; //int b[N]; //这样会报错,数组长度

2021-09-05 20:08:16 9512 5

原创 PTA基础编程题目集 7-28 猴子选大王(约瑟夫问题)

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?输入格式:输入在一行中给一个正整数N(≤1000)。输出格式:在一行中输出当选猴王的编号。输入样例:11注意:结尾无空行输出样例:7注意:结尾无空行代码:#include <iostr

2021-09-01 17:20:58 339

空空如也

空空如也

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

TA关注的人

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