Java中的反射
类加载器
(1)类的加载
当我们的程序在运行后,第一次使用某个类的时候,会将此类的class文件读取到内存,并将此类
的所有信息存储到一个Class对象中。
说明:
a.图中的Class对象是指:java.lang.Class类的对象,此类由Java类库提供,专门用于存储类的信息。
b.我们程序中可以通过:"类名.class",或者"对象.getClass()"方法获取这个Class对象
(2)类的加载时机
a.创建类的实例。
b.调用类的静态变量,或者为静态变量赋值。
c.调用类的静态方法。
d.使用反射方式来强制创建某个类或接口对应的java.lang.Class对象。
e.初始化某个类的子类。
f.直接使用java.exe命令来运行某个主类。
以上六种情况的任何一种,都可以导致JVM将一个类加载到方法区。
(3)类加载器
类加载器:是负责将磁盘上的某个class文件读取到内存并生成Class的对象。
Java中有三种类加载器,它们分别用于加载不同种类的class:
a.启动类加载器(Bootstrap ClassLoader):用于加载系统类库<JAVA_HOME>\bin目录下的class,例如:rt.jar。
b.扩展类加载器(Extension ClassLoader):用于加载扩展类库<JAVA_HOME>\lib\ext目录下的class。
c.应用程序类加载器(Application ClassLoader):用于加载我们自定义类的加载器。
public class Test{ public static void main(String[] args) {System.out.println(Test.class.getClassLoader());//sun.misc.Launcher$AppClassLoaderSystem.out.println(String.class.getClassLoader());//null(API中说明:一些实现 可能使用null来表示引导类加载器。 如果此类由引导类加载器加载,则此方法将在此类实现中返回null。 )}
}
(4)双亲委派机制
上图展示了"类加载器"的层次关系,这种关系称为类加载器的"双亲委派模型":
a."双亲委派模型"中,除了顶层的启动类加载器外,其余的类加载器都应当有自己的"父级类加载器"。
b.这种关系不是通过"继承"实现的,通常是通过"组合"实现的。通过"组合"来表示父级类加载器。
c."双亲委派模型"的工作过程:
i. 某个"类加载器"收到类加载的请求,它首先不会尝试自己去加载这个类,而是把请求交给父
级类加载器。
ii.因此,所有的类加载的请求最终都会传送到顶层的"启动类加载器"中。
iii.如果"父级类加载器"无法加载这个类,然后子级类加载器再去加载。
(5)双亲委派机制的好处
双亲委派机制的一个显而易见的好处是:Java的类随着它的类加载器一起具备了一种带有优先级的层次
关系。例如:java.lang.Object。它存放在rt.jar中。无论哪一个类加载器要加载这个类,最终都是委派
给处于顶端的"启动类加载器"进行加载,因此java.lang.Object类在程序的各种类加载器环境中都是同一
个类。
相反,如果没有"双亲委派机制",如果用户自己编写了一个java.lang.Object,那么当我们编写其它类
时,这种隐式的继承使用的将会是用户自己编写的java.lang.Object类,那将变得一片混乱。
反射的概述
(1)反射的引入
问题:IDEA中的对象是怎么知道类有哪些属性,哪些方法的呢?
答:通过反射技术对象类进行了解剖得到了类的所有成员。
(2)反射的概念
反射是一种机制,利用该机制可以在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方 法,构造方法)。
(3)使用反射操作类成员的前提
要获得该类字节码文件对象,就是Class对象。
(4)反射在实际开发中的应用
a.开发IDEA(集成开发环境),比如IDEA,Eclipse
b.各种框架的设计和学习 比如Spring,Mybaits....
Class对象的获取方式
(1)三种获取方式
方式1: 通过类名.class获得
方式2:通过对象名.getClass()方法获得
方式3:通过Class类的静态方法获得: static Class forName("类全名")
每一个类的Class对象都只有一个。
示例代码:
package com.test.code.reflex;public class Student {
}public class Demo01 {public static void main(String[] args) throws ClassNotFoundException {// 获得Student类对应的Class对象Class<Student> c1 = Student.class;// 创建学生对象Student stu = new Student();Class<? extends Student> c2 = stu.getClass();System.out.println(c1 == c2);// 通过Class类的静态方法获得: static Class forName("类全名")Class<?> c3 = Class.forName("com.test.code.reflex.Student");System.out.println(c1 == c3);System.out.println(c2 == c3);}
}
Demo01运行结果:
(2)Class类常用方法
String getSimpleName(); 获得类名字符串:类名
String getName(); 获得类全名:包名+类名
T newInstance() ; 创建Class对象关联类的对象
示例代码:
public class Demo02 {public static void main(String[] args) throws IllegalAccessException, InstantiationException {// 获得Class对象Class<Student> c = Student.class;// 获得类名字符串:类名System.out.println(c.getSimpleName());// 获得类全名:包名 + 类名System.out.println(c.getName());// 创建对象Student stu = (Student)c.newInstance();System.out.println(stu);}
}
Demo02运行结果:
4.反射之操作构造方法
(1)Constructor类概述
反射之操作构造方法的目的:获得Constructor对象来创建类的对象。
Constructor类概述:类中的每一个构造方法都是一个Constructor类的对象
(2)Class类中与Constructor相关的方法
1. Constructor getConstructor(Class... parameterTypes)
* 根据参数类型获得对应的Constructor对象。
* 只能获得public修饰的构造方法
2. Constructor getDeclaredConstructor(Class... parameterTypes)
* 根据参数类型获得对应的Constructor对象
* 可以是public、protected、(默认)、private修饰符的构造方法。
3. Constructor[] getConstructors()
* 获得类中的所有构造方法对象,只能获得public的
4. Constructor[] getDeclaredConstructors()
* 获得类中的所有构造方法对象
* 可以是public、protected、(默认)、private修饰符的构造方法。
(3)Constructor对象常用方法
1. T newInstance(Object... initargs)"—— 根据指定的参数创建对象
2. void setAccessible(true) 设置"暴力反射"——是否取消权限检查,true取消权限检查,false表示不取消
示例代码:
public class Student {private String name;private String sex;private int age;//公有构造方法public Student(String name, String sex, int age) {this.name = name;this.sex = sex;this.age = age;}//私有构造方法private Student(String name, String sex) {this.name = name;this.sex = sex;}}
public class Demo03 {/*** Constructor[] getConstructors()* 获得类中的所有构造方法对象,只能获得public的* Constructor[] getDeclaredConstructors()* 获得类中的所有构造方法,包括private修饰的*/@Testpublic void test03(){// 获得Class对象Class<Student> c = Student.class;// 获得类中的所有构造方法对象,只能是public修饰的Constructor<?>[] cons_one = c.getConstructors();for (Constructor<?> con : cons_one) {System.out.println(con);}System.out.println("--------------------------------");// 获取类中所有的构造方法,包括public、protected、(默认)、private的Constructor<?>[] cons_two = c.getDeclaredConstructors();for (Constructor<?> con : cons_two) {System.out.println(con);}}/*** Constructor getDeclaredConstructor(Class... parameterTypes)* 根据参数类型获得对应的Constructor对象*/@Testpublic void test02() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 获得两个参数构造方法对象Constructor<Student> con = c.getDeclaredConstructor(String.class, String.class);// 取消权限检查(暴力反射)con.setAccessible(true);// 根据构造方法创建对象Student stu = con.newInstance("liuyifei", "女");System.out.println(stu);}/*** Constructor getConstructor(Class... parameterTypes)* 根据参数类型获得对应的Constructor对象*/@Testpublic void test01() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 获得无参数构造方法对象 注意:记得在Student类中加无参构造方法,不然会报错Constructor<Student> con = c.getConstructor();// 根据构造方法创建对象Student student = con.newInstance();System.out.println(student);// 获得有参数的构造方法对象Constructor<Student> con2 = c.getConstructor(String.class, String.class, int.class);// 创建对象Student stu2 = con2.newInstance("jack", "男", 18);System.out.println(stu2);}}
5.反射之操作成员方法
(1)Method类概述
反射之操作成员方法的目的:操作Method对象来调用成员方法
Method类概述:每一个成员方法都是一个Method类的对象。
(2)Class类中与Method相关的方法
* Method getMethod(String name,Class...args);
根据方法名和参数类型获得对应的构造方法对象,只能获得public的
* Method getDeclaredMethod(String name,Class...args);
根据方法名和参数类型获得对应的构造方法对象,包括public、protected、(默认)、private的
* Method[] getMethods();
获得类中的所有成员方法对象,返回数组,只能获得public修饰的且包含父类的
* Method[] getDeclaredMethods();
获得类中的所有成员方法对象,返回数组,只获得本类的,包括public、protected、(默认)、 private的
(3)Method对象常用方法
* Object invoke(Object obj, Object... args)
调用指定对象obj的该方法
args:调用方法时传递的参数
* void setAccessible(true)
设置"暴力访问"——是否取消权限检查,true取消权限检查,false表示不取消
示例代码:
public class Demo04 {/*** Method[] getMethods();* 获得类中的所有成员方法对象,返回数组,只能获得public修饰的且包含父类的* Method[] getDeclaredMethods();* 获得类中的所有成员方法对象,返回数组,只获得本类的,包含private修饰的*/@Testpublic void test03() {// 获得Class对象Class<Student> c = Student.class;// 获得类中的所有成员方法对象,返回数据,只能获得public修饰的且包含父类的// Method[] methods = c.getMethods();// 获得类中的所有成员方法对象,返回数组,只获得本类的,包含private修饰的Method[] methods = c.getDeclaredMethods();for (Method method : methods) {System.out.println(method);}}/*** Method getDeclaredMethod(String name,Class...args);* 根据方法名和参数类型获得对应的构造方法对象,*/@Testpublic void test02() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 根据Class对象创建学生对象Student stu = c.newInstance();// 获得sleep方法对应的Method对象Method m = c.getDeclaredMethod("sleep");// 暴力反射m.setAccessible(true);// 通过m对象执行sleep方法m.invoke(stu);}/*** Method getMethod(String name,Class...args);* 根据方法名和参数类型获得对应的构造方法对象,*/@Testpublic void test01() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 根据Class对象创建学生对象Student stu = c.newInstance();// // 获得study方法对应的Method对象
// Method m = c.getMethod("study");
// // 通过m对象执行study方法
// m.invoke(stu);// 获得study方法对应的Method对象Method m2 = c.getMethod("study", int.class);// 通过m2对象执行study方法m2.invoke(stu, 8);}}
6.反射之操作成员变量
(1)Field类概述
反射之操作成员变量的目的 :通过Field对象给对应的成员变量赋值和取值
Field类概述: 每一个成员变量都是一个Field类的对象。
(2)Class类中与Field相关的方法
Field getField(String name);
根据成员变量名获得对应Field对象,只能获得public修饰
Field getDeclaredField(String name);
根据成员变量名获得对应Field对象,包括public、protected、(默认)、private的
Field[] getFields();
获得所有的成员变量对应的Field对象,只能获得public的
Field[] getDeclaredFields();
获得所有的成员变量对应的Field对象,包括public、protected、(默认)、private的
(3)Field对象常用方法
void set(Object obj, Object value)
void setInt(Object obj, int i)
void setLong(Object obj, long l)
void setBoolean(Object obj, boolean z)
void setDouble(Object obj, double d)
Object get(Object obj)
int getInt(Object obj)
long getLong(Object obj)
boolean getBoolean(Object ob)
double getDouble(Object obj)
void setAccessible(true); // 暴力反射,设置为可以直接访问私有类型的属性。
Class getType(); // 获取属性的类型,返回Class对象。
setXxx方法都是给对象obj的属性设置使用,针对不同的类型选取不同的方法。
getXxx方法是获取对象obj对应的属性值的,针对不同的类型选取不同的方法。
示例代码:
public class Student {public String name;private String gender;public String toString() {return "Student [name = " + name + " , gender = " + gender + "]";}}
public class Demo05 {/*** Field[] getFields();* 获得所有的成员变量对应的Field对象,只能获得public的* Field[] getDeclaredFields();* 获得所有的成员变量对应的Field对象,包含private的*/@Testpublic void test02(){// 获得Class对象Class<Student> c = Student.class;// 获得所有的成员变量对应的Field对象// Field[] fields = c.getFields();// 获得所有的成员变量对应的Field对象,包括privateField[] fields = c.getDeclaredFields();for (Field field : fields) {System.out.println(field);}}/*** Field getField(String name);* 根据成员变量名获得对应Field对象,只能获得public修饰* Field getDeclaredField(String name);* 根据成员变量名获得对应Field对象,包含private修饰的*/@Testpublic void test01() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 创建对象Student stu = c.newInstance();// 获得成员变量name对应的Field对象Field f = c.getField("name");// 给成员变量name赋值// 给指定对象stu的name属性赋值为jackf.set(stu,"jack");// 获得指定对象stu成员变量name的值System.out.println(f.get(stu)); // jack// 获得成员变量的名字System.out.println(f.getName()); //name// 给成员变量gender赋值// 获得成员变量gender对应的Field对象Field f1 = c.getDeclaredField("gender");// 暴力反射f1.setAccessible(true);// 给指定对象stu的gender属性赋值为男f1.set(stu,"男");System.out.println(stu);}}
wx 搜索“自律的西瓜L”
相关文章:
Java中的反射
类加载器(1)类的加载当我们的程序在运行后,第一次使用某个类的时候,会将此类的class文件读取到内存,并将此类的所有信息存储到一个Class对象中。说明:a.图中的Class对象是指:java.lang.Class类的…...
STM32入门笔记(03):STM32F103C8T6定时器的输入捕获模式和编码器模式(SPL库函数版)
目录1.定时器的输入捕获模式定时器输入捕获实验代码实现程序说明实现思路实现效果知识要点2.定时器的编码器模式定时器编码器实验代码实现实验思路知识要点参考资料先导知识 [1] STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)…...
《网络安全》零基础教程-适合小白科普
《网络安全》零基础教程 目录 目录 《网络安全》零基础教程 第1章 网络安全基础 什么是网络安全 常见的网络安全威胁 网络安全的三个基本要素 网络安全的保障措施 第2章 网络攻击类型 病毒、蠕虫、木马、后门 DoS、DDoS攻击 SQL注入、XSS攻击 …...
微信小程序语言与web开发语言的区别
WXML与HTML的区别def:WXML是小程序框架设计的一套标签语言,用来构建小程序页面的结构,作用类似于web开发中的HTML区别:标签名称的不同如HTML中的div,span,img,a分别对应wxml中的view,…...
【2022-09-14】米哈游秋招笔试三道编程题
第一题:最短子串 题目描述 米小游拿到了一个字符串,她想截取一个连续子串,使得该子串中包含至少k个连续的“mihoyo”。 你可以帮米小游求出最短的子串长度,以及对应的子串位置吗? 输入描述 第一行输入两个正整数n…...
云监控能力介绍
传统监控介绍 监控系统必要性 监控系统的能力清单 市面上常见商业及开源监控工具集 传统监控体系的不足 云监控介绍 云监控(CloudMonitor)是一项针对云资源和互联网应用进行监控的服务。 云监控为云上用户提供开箱即用的企业级开放型一站式监控解决方…...
HTML 文档类型
<!DOCTYPE> 声明帮助浏览器正确地显示网页。 <!DOCTYPE> 声明 Web 世界中存在许多不同的文档。只有了解文档的类型,浏览器才能正确地显示文档。 HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完…...
【UML】软件设计说明书 (完结)
目录一. 🦁 前言1.1 编写目的1.2 背景1.3 定义1.4 参考资料二. 🦁 总体设计2.1需求规定2.1.1 系统描述2.1.2 系统用例图2.2 运行环境2.2.1 设备2.2.2 支持软件2.2.3 接口2.2.4 控制2.3 基本设计概念2.4 系统结构三. 🦁 用例分析与设计3.1 用户…...
MATLAB——FFT(快速傅里叶变换)
基础知识 FFT即快速傅里叶变换,利用周期性和可约性,减少了DFT的运算量。常见的有按时间抽取的基2算法(DIT-FFT)按频率抽取的基2算法(DIF-FFT)。 1.利用自带函数fft进行快速傅里叶变换 若已知序列x[4,3,2,6…...
力扣-进店却未进行过交易的顾客
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1581. 进店却未进行过交易的顾客二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行…...
一文解决vscode中借助CMake配置使用Opencv过程中的所有问题
vscode中借助CMake配置使用opencv过程中的问题 vscode编译工程的完整过程 编写好CMakeLists.txtvscode中 ctrlshiftp 选择cmake configurevscode中 ctrlshiftp 选择cmake build CMake问题 1. set OpenCV_FOUND to FALSE so package “OpenCV” is considered to be NOT FOU…...
Golang每日一练(leetDay0004)
10. 正则表达式匹配 Regular Expression Matching 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分…...
手机忘记密码解锁的 6 大软件方法
您可能想要解锁手机的原因有很多。也许您正在海外旅行并想使用当地的 SIM 卡,或者您可能刚买了一部二手手机并且需要删除之前所有者的个人数据。您可能想知道如何获得可以免费解锁任何手机的软件。Android 用户可以使用他们的指纹、面部识别或 PIN。您也可以通过快速…...
MySQL数据库的基础语法总结(1)
MySql一.数据库,数据表的基本操作1.数据库的基本操作2. 数据表的基本操作2.1 数据库的数据类型2.1.1 整数类型2.1.2 浮点数类型和定点数类型2.1.3 字符串类型2.1.4 日期与时间类型2.2 数据表的基本操作2.2.1 创建一个数据表2.2.2 查看数据表2.2.3 查看表的基本信息的MySQL指令2…...
Linux之进程创建
本节目录1.fork函数初识2.fork函数返回值3.写时拷贝1.fork函数初识 在Linux中,fork函数是一个非常重要的函数,它从已存在的进程中创建一个新进程。新进程叫做子进程,而原进程叫做父进程。 #include <unistd.h> pid_t fork(void); 返回…...
DCL 管理用户与权限控制
目录 DCL 查询用户 案例 权限控制 案例 DCL DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 查询用户 1、查询用户 select * from mysql.user; 2、创建用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码;…...
如何使用 Python 检测和识别车牌(附 Python 代码)
文章目录创建Python环境如何在您的计算机上安装Tesseract OCR?技术提升磨砺您的Python技能车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。…...
[Python题解] CodeForces 1804 D. Accommodation
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...
【设计模式】访问者模式
访问者模式 访问者模式被称为是最复杂的设计模式,比较难理解并且使用频率不高。 在 GoF 的《设计模式》⼀书中,访问者者模式(Visitor Design Pattern)是这么定义的: Allows for one or more operation to be applied to a set o…...
蓝桥杯刷题冲刺 | 倒计时27天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.递增序列2.等差素数列3.七段码4.亲戚5.连通块中点的数量1.递增序列 题目 链接:&am…...
RV1126_python人脸识别Retinaface+MobilefaceNet
RV1126_python人脸识别Retinaface+MobilefaceNet RV1126 具备RKNN 模块支持大部分如Pytorch、MXNet、Caffe、tensorflow、keras、onnx等常见框架,而且量化部署使用RKNN-toolkit非常方便。以下介绍通过RV1126实现的人脸识别过程。 首先人脸识别需要先做人脸检测>>人脸校正…...
HBase---HBase基础语法
HBase基础语法 文章目录HBase基础语法基本操作进入 HBase 客户端命令行查看命名空间查看命名空间下的表创建命名空间创建表查看表描述禁用/启用删除表新增列族删除列族更改列族存储版本的限制put 增加数据get 查看数据get条件查询删除指定列族下的指定列删除指定行全表扫描全表…...
2023年,PMP有多少含金量呢?
其实围绕以PMP含金量为中心的这个类似的小问题我好像也已经写了不少文章了。首先我肯定PMP的含金量,不管有多少质疑,这的确是事实。因为就是看中了他的价值考的,并且在项目的执行上收获了很多。 具体的可以看我接下来谈的PMP的价值&#x…...
vue动态路由
import Vue from vue import Router from vue-router import layout from ../components/layout Vue.use(Router) // 动态路由 export const asyncRouterMap = [ { path: /home, component: layout, name: home, meta: { title: 首页, icon: el-ic…...
被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...
职场的套路防不胜防,一不留神就会掉坑,一位网友就被“骗”进了外包公司,他说公司非常隐蔽,入职一个月才发现是外包,但已经有了社保记录,简历污了,不知道对以后面试有影响吗?楼主说&a…...
华为OD机试 -租车骑绿岛(Java) | 机试题+算法思路+考点+代码解析 【2023】
租车骑绿岛 题目 部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入 第一行两个数字m、n,自行车限重m,代表部门总人数n。 第二行,n个数字,代表每个人的体重。体重都…...
【Java|基础篇】用思维导图理解逻辑控制
文章目录顺序结构分支结构if单分支语句if else双分支语句if else if else多分支语句switch语句循环语句for循环while循环do while循环continuebreak总结顺序结构 顺序结构是指代码按照从上往下的顺序依次执行 分支结构 选择语句是条件成立时,才会执行的语句.共有三种.分为是if…...
Go单元测试基础
Go单元测试基础1.go test工具2.单元测试函数3.go test -v/go test -run4.跳过某些测试用例5.子测试6.表格驱动测试7.并行测试8.使用工具生成测试代码9.测试覆盖率1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需…...
华为OD机试 -执行时长(Java) | 机试题+算法思路+考点+代码解析 【2023】
执行时长 题目 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成 输入描述: 第一个…...
互联网检测服务器
互联网检测服务器 1. 题目要求2. 试题解析1. 题目要求 题目: 为了模拟 Internet 访问测试,请搭建网卡互联网检测服务。 2. 试题解析 根据windows的官方文档,互联网检测服务有专门的域名,通过注册表可以找到检测域名字符串的写法(字符串为www.msftconnecttest.com),具体位…...
微博营销案例/seo网站自动推广
刚开始开发项目的时候,我一直都在用火狐,因为它有一个fireBug插件,特别好用(目前已不支持),也不知道什么时候,就一直用起来Chrome浏览器了,可能是因为它有强大的插件作为后盾吧。开发了这么多年,…...
郑州做网站建设/湖南正规seo优化
66666666666666666转载于:https://www.cnblogs.com/tudousi1/p/5891039.html...
如何开发网站/怎样给自己的网站做优化
udp通信协议,相信大家都知道这个。由于是无连接的协议,所有udp的传输效率比tcp高。但是udp协议传输较大的数据文件得分包 最近写了个分包组包的方法,拿来和大家分享,如果有什么不妥的地方,欢迎点评 分包的方法 1 //每…...
找阿里巴巴购买做网站的软件/关于进一步优化落实疫情防控措施
图是要求的输出范例程序要求输入一个大于等于5的奇数n然后输出一个和示例图类似的特殊蛇形矩阵 中心是0然后向外展开要求是不能用数组和stdio.h以外的lib已经想了整整一下午了 完全没有任何思路.求大神帮帮忙想一下思路,不用写代码,帮忙想想思路就行.P.S. 若覺得我的答案不佳或…...
没网站做cpa/seo诊断的网络问题
最近更新的博客 华为OD机试 - 招聘(Python) | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 热点网络统计 | 备考思路,刷题要点,答疑 【新解法】华为OD机试 - 路灯照明 | 备考思路,刷题要点,答疑 【新解…...
公司网站做优化/新浪舆情通官网
action是什么?action是获得form表单数据 再去处理的类为什么要有action?因为在servlet中往往会出现使用一个servlet处理多个功能,比如登陆功能,注册功能,浏览功能等,这样action就是必不可少的了怎么去使用a…...