JavaEE初阶---properties类+反射+注解
文章目录
- 1.配置文件properities
- 2.快速上手
- 3.常见方法
- 3.1读取配置文件
- 3.2获取k-v值
- 3.3修改k-v值
- 3.4unicode的说明
- 4.反射的引入
- 4.1传统写法
- 4.2反射的写法(初识)
- 4.3反射的介绍
- 4.4获得class类的方法
- 4.5所有类型的class对象
- 4.6类加载过程
- 4.7类初始化的过程
- 4.8类加载过程
- 4.9获取类的运行时结构
- 4.10动态创建对象
- 4.11获取成员属性方法
- 4.12性能测试
- 5.反射的应用
- 5.1操作泛型
- 5.2操作注解
- 6.注解annotation
- 6.1内置注解
- 6.2元注解
- 6.3自定义注解
- 6.3自定义注解
1.配置文件properities
这个properity是一个类:方便实现对于这个项目的相关的属性内容的设置;
例如我们想要使用这个程序对于这个数据库进行操作,我们的这个程序本来是针对于这个数据库01进行操作的,后来修改为这个对于02进行操作,如果我们没有使用这个配置文件,就需要在这个源码上面进行修改,这个不是我们想要看到的,如果我们引入了这个配置文件;
这个时候因为我们的这个程序是从这个配置文件里面读取内容的,因此这个程序的代码不需要进行修改,我们只需要把这个配置文件的这个用户名和密码修改为我们的db02数据库的就可以了;
2.快速上手
下面的这个就是我们的一个包包里面的配置文件:这个配置文件里面的信息就是我们的ip,用户名和密码;
我们在这个java文件里面,需要创建对象读取这个配置文件里面的内容,这个就涉及到了这个路径的指定,是从我们的这个src开始的,根据我们的这个目录结构进行修改即可;
然后我们使用这个while循环不断的从这个对象里面进行内容的读取,这个就会全部打印输出;
在上面的这个方式下,我们的打印输出的结果就是我们的这个配置文件里面的格式:
下面的这个就是另外一个打印输出的方法的展示:就是我们不是直接把这个配置文件里面的信息打印出来,而是按照我们想要的这个格式,使用这个split进行分割处理,进行拼接之后再打印出来;(这个刚开始的时候遇到了bug,就是因为这个配置文件每一行之间加上了空格,这样的话督导第二行没有了然后这个split[1]这个下标就会报错是越界,因此上面的这个配置文件里面的这个内容需进行修改为连续的三行,否则会报错);
但是即使这样,我们想要修改这个文件的用户名和方法还是不容易;因为这个需要我们的代码进行修改;
3.常见方法
3.1读取配置文件
我们首先需要创建一个类,读取我们的这个配置文件内容(new filereader里面的这个参数就是我们的这个配置文件的地址);
最后使用这个list方法把我们的这个读取的文件里面的内容打印到我们的这个对应的设备上面去;
3.2获取k-v值
在上面的这个基础上,我们可以使用这个getProperty方法,根据我们传递进去这个key参数,获得这个对应的value值,这个就是我们根据这个k获取到这个对应的value的一个方法;
3.3修改k-v值
这个表面上写的是修改,实际上是包含了这个添加新的这个k-v的情况的:
我们调用这个里面的serProperties方法对于这个key对应的value进行修改,如果这个key是存在的,这个就是修改对应的value数值;
如果这个key不存在,下面的这个password2就是不存在的,这个时候就是进行新的k-v的添加;
store表示把这个创建的对象存储到我们的这个配置文件里面去,第一个参数就是我们的路径,第二个参数写的是comment(这个是idea自带的)表示的就是注释的意思,我们使用null代替就可以了;
3.4unicode的说明
我们上面修改这个名字是中文,这个时候我们的这个配置文件里面显示的其实是这个unicode编码,并不是我们的中文,我们可以使用这个转换器进行查看结果是否正确;
我们使用这个转换工具就可以看到这个效果:
4.反射的引入
4.1传统写法
我们的这个反射是需要基于上面的这个类的,因此上面相当于就是介绍一下这个类的相关的用法;
下面的是是两个传统方法:
1)直接创建对象,调用这个对象里面的方法;
2)使用文件流读取,获取这个对应的value数值,并且打印出来;
4.2反射的写法(初识)
4.3反射的介绍
下面的这个就是我们自己定义一个实体类:
4.4获得class类的方法
4.5所有类型的class对象
2)元素类型一样,例如这个数组,个数不一样,但是这个类型一样,他们的这个class打印出来的这个hashcode还是一样的;
4.6类加载过程
上面的这个类加载的过程,分为三个步骤:
1)加载:就是生成在这个相关的数据,每一个类里面都是有自己的这个数据的;
2)链接:每一个类生成自己的这个Class对象,进行连接就是检查是不是有错误;
3)初始化:没有错误就会进行初始化,刚开始这个m初始化的是0.然后我们创建这个对象,这个对象就会找到自己的这个类对象,进行这个合并,刚开始是300,后来是100,因此这个最后打印输出的这个结果就是100;
4.7类初始化的过程
1)主动引用一定会发生这个类的初始化:下面的这个new对象和反射就是主动引用的过程;
2)被动引用不会进行类的初始化:下面的这个直接调用子类的这个静态变量,创建数组,以及常量的使用都是属于这个被动引用的范畴的,都是不会执行这个初始化的操作的;
4.8类加载过程
1)类加载的作用:把class文件的字节码的内容加载到我们的这个内存里面去,在这个堆区上面生成一个Class对象,这个对象就是我们的访问入口;
2)类缓存:一旦某一个类加载到了这个类加载器里面去,他就会维持一段时间,不过这个JVM的垃圾回收机制会对于这个Class对象进行处理;
4.9获取类的运行时结构
1)field就是获取这个类加载的时候的相关的属性,加上这个declare修饰就是强制获取,第一个只能获取到这个公共的方法,但是我们加上这个declare修饰之后即使是私有的方法,我们也是可以获取到的;
4.10动态创建对象
下面的这个就是需要有我们的无参数的构造器:
上面的这个是需要我们的这个类里面有无参数的构造方法,如果这个无参数的构造方法没有了,这个时候就会报错,下面的这个就是在原来的这个基础上面,我们自己写一个构造器出来,这样无论是有参数无参数,我们自己写的这个构造器都是可以传参的;
我们的这个构造器里面的参数就是我们的三个成员变量,我们创建对象的时候,就是用我们的这个构造器;
4.11获取成员属性方法
下面的这个就是我们使用无参数的构造器创建对象,setAccessible表示的就是关闭安全检查,即使我们的这个name是私有的,我们使用这个declared版本的还是可以得到的;
set相当于就是传递参数,第一个就是我们的这个对象,第二个参数就是这个对象的属性name具体值;
4.12性能测试
下面的这个是三个不同的方式的一个效率的对比:
1)test01就是普通方法;
2)test02就是反射,但是不关闭这个检测;
3)test03就是2的基础上面关闭这个检测的机制;
可以在自己的这个IDEA上面运行感受一下这个时间的耗费;
public class Test {public static void test01 () {User user = new User();long startTime = System.currentTimeMillis();for (int i = 0; i < 100000000; i++) {user.getName();}long endTime = System.currentTimeMillis();System.out.println("正常运行"+(endTime - startTime)+"ms");}public static void test02 () throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {User user = new User();Class c1=user.getClass();Method getName = c1.getDeclaredMethod("getName",null);//getName.setAccessible(true);long startTime = System.currentTimeMillis();for (int i = 0; i < 100000000; i++) {getName.invoke(user,null);}long endTime = System.currentTimeMillis();System.out.println("反射的方式,不关闭检测:"+(endTime - startTime)+"ms");}public static void test03 () throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {User user = new User();Class c1=user.getClass();Method getName = c1.getDeclaredMethod("getName",null);getName.setAccessible(true);long startTime = System.currentTimeMillis();for (int i = 0; i < 100000000; i++) {getName.invoke(user,null);}long endTime = System.currentTimeMillis();System.out.println("反射的方式,关闭检测:"+(endTime - startTime)+"ms");}public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {test01();test02();test03();}
}class User{String name;int age;int id;public User(String name, int age, int id) {};public User() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", id=" + id +'}';}
}
5.反射的应用
5.1操作泛型
打印结果获取这个泛型的参数类型的相关的信息:
5.2操作注解
下面的这个实际上是基于一个数据库的;
我们可以获取这个方法的注解,以及这个相关的属性的注解
import java.lang.annotation.*;
import java.lang.reflect.Field;public class Test{public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {Class c1 = Class.forName("demo18.Test2");Annotation[] annotations = c1.getAnnotations();for (Annotation annotation : annotations) {System.out.println(annotation);}Tablekuang tablekuang = (Tablekuang)c1.getAnnotation(Tablekuang.class);String value = tablekuang.value();System.out.println(value);Field f = c1.getDeclaredField("name");Fieldkuang annotation = f.getAnnotation(Fieldkuang.class);System.out.println(annotation.columnName());System.out.println(annotation.type());System.out.println(annotation.length());}}
@Tablekuang("db_student")
class Test2 {@Fieldkuang(columnName = "student1",type="int",length=10)private int id;@Fieldkuang(columnName = "student2",type="int",length=10)private int age;@Fieldkuang(columnName = "student3",type="varchar",length=10)private String name;public Test2(){}public Test2(int id, int age, String name) {this.id = id;this.age = age;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Test{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}
}@Target(ElementType.TYPE)
//生命周期
@Retention(RetentionPolicy.RUNTIME)
@interface Tablekuang{//下面的这个就是我们的注解,而不是方法String value();
}//下面的这个是对于属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Fieldkuang{//下面的这个就是我们的注解,而不是方法String columnName();String type();int length();}
下面的这个就是获取我们的属性的注解,这个里面的name是可以进行修改的,如果是name我们获得的就是这个name的注解,如果是其他的成员变量,因为这个除了name还有我们的id和age,其他的两个属性也是可以获得对应的这个注解的,我们可以获取任何的字段的这个注解;
6.注解annotation
@override就是对于方法的重写,这个就是注解,我们经常使用,只是我们没有注意罢了;
下面的这个抑制警告的这个就是内置注解;override也是一个内置的注解;
6.1内置注解
6.2元注解
我们上面的这个注解就是模仿的这个下面的源代码进行书写的,就是定义这个interface,上面的这个target里面的这个参数表示的就是作用的范围;我们上面的这个例子里面的这个是method表示这个注解只能是作用在我们的这个方法的上面,因此上面我们把这个加在test类的外面的时候,这个注解就会报错;
当我们使用下面的这个类似于集合的方式进行表示的时候,这个的意思就是我们的这个注解不仅可以放在这个类上面,也是可以放到这个方法上面的;这个时候我们把这个注解放到这个test的外面,就不会报错了;
我们下面的这个retention表示这个注解生效的时间,也就是这个注解的生命周期,我们可以看到这个参数里面是有三个可选项的:我们一般写作这个runntime让这个注解的生命周期长一些;
下面的这个就是一个比较完整的演示:这个里面的@interface表示的是一个自定义的注解,我们后面还会遇到,其他的就是我们的元注解;
6.3自定义注解
们的这个注解不仅可以放在这个类上面,也是可以放到这个方法上面的;这个时候我们把这个注解放到这个test的外面,就不会报错了;
我们下面的这个retention表示这个注解生效的时间,也就是这个注解的生命周期,我们可以看到这个参数里面是有三个可选项的:我们一般写作这个runntime让这个注解的生命周期长一些;
下面的这个就是一个比较完整的演示:这个里面的@interface表示的是一个自定义的注解,我们后面还会遇到,其他的就是我们的元注解;
6.3自定义注解
相关文章:
JavaEE初阶---properties类+反射+注解
文章目录 1.配置文件properities2.快速上手3.常见方法3.1读取配置文件3.2获取k-v值3.3修改k-v值3.4unicode的说明 4.反射的引入4.1传统写法4.2反射的写法(初识)4.3反射的介绍4.4获得class类的方法4.5所有类型的class对象4.6类加载过程4.7类初始化的过程4…...
HarmonyOS一次开发多端部署三巨头之功能级一多开发和工程级一多开发
功能级一多开发与工程级一多开发 引言功能级一多开发SysCaps机制介绍能力集canlUse接口 工程级一多开发三层架构规范 引言 一次开发多端部署 定义:一套代码工程,一次开发上架,多端按需部署 目标:支撑开发者快速高效的开发多终端设…...
STL常用遍历算法
概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小,只包括几个在序列上面进行简…...
前端开发中常见的ES6技术细节分享一
var、let、const之间有什么区别? var: 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是g…...
行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化
1.大纲分析 针对题目“8.0 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化”的大纲分析,可以从以下几个方面进行展开: 一、引言 简述智慧城市的概念及其重要性。强调智能交通在智慧城市中的核心地位。引出自动驾驶…...
[High Speed Serial ] Xilinx
Xilinx 高速串行数据接口 收发器产品涵盖了当今高速协议的方方面面。GTH 和 GTY 收发器提供要求苛刻的光互连所需的低抖动,并具有世界一流的自适应均衡功能,具有困难的背板操作所需的 PCS 功能。 Versal™ GTY (32.75Gb/s)&…...
Unity学习笔记(3):场景绘制和叠层设置 Tilemap
文章目录 前言开发环境规则瓦片绘制拐角 动态瓦片总结 前言 这里学一下后面的场景绘制和叠层技巧。 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶|4K:https://www.bilibili.com/video/BV1mL411o77x/?spm_id_from333.10…...
不吹不黑,客观理性深入讨论中国信创现状
1. 题记: 随着美国大选尘埃落定,特朗普当选美国新一任总统,参考他之前对中国政策的风格,个人预计他将进一步限制中国半导体产业和信创产业的发展。本篇博文不吹不黑,客观理性深入探讨中国信创现状。文中数据来自权威媒…...
NoSQL大数据存储技术测试(2)NoSQL数据库的基本原理
写在前面:未完成测试的同学,请先完成测试,此博文供大家复习使用,(我的答案)均为正确答案,大家可以放心复习 单项选择题 第1题 NoSQL的主要存储模式不包括 键值对存储模式 列存储模式 文件…...
「QT」几何数据类 之 QPoint 整型点类
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...
植物明星大乱斗5
能帮到你的话,就给个赞吧 😘 文章目录 timer.htimer.cppcamera.hcamera.cppmenuScene.cpp timer.h #pragma once #include <functional>class Timer {public:void reStart();void setTimer(int timerMs);void setIsOneShot(bool isOneShot);void …...
每日算法练习
各位小伙伴们大家好,今天给大家带来几道算法题。 题目一 算法分析 首先,我们应该知道什么是完全二叉树:若一颗二叉树深度为n,那么前n-1层是满二叉树,只有最后一层不确定。 给定我们一棵完全二叉树,我们查看…...
把握鸿蒙生态崛起机遇:开发者如何在全场景操作系统中脱颖而出
把握鸿蒙生态崛起机遇:开发者如何在全场景操作系统中脱颖而出 随着鸿蒙系统的逐步成熟和生态体系的扩展,其与安卓、iOS 形成了全新竞争格局,为智能手机、穿戴设备、车载系统和智能家居等领域带来了广阔的应用前景。作为开发者,如…...
字符串类型排序,通过枚举进行单个维度多个维度排序
字符串类型进行排序通过定义枚举值实现 1.首先创建一个测试类,并实现main方法 2.如果是单个维度的排序,则按照顺序定义一个枚举 public enum Risk {高风险,中风险,一般风险,低风险 } public static void main(String[] args) { }3.main方法里实现如下…...
figma的drop shadow x:0 y:4 blur:6 spread:0 如何写成css样式
figma的drop shadow x:0 y:4 blur:6 spread:0 如何写成css样式 在CSS中,我们可以使用box-shadow属性来模拟Figma中的Drop Shadow效果。box-shadow属性接受的值分别是:横向偏移、纵向偏移、模糊半径、扩展半径和颜色。 但是,Figma的Drop Sha…...
基于Matlab 疲劳驾驶检测
Matlab 疲劳驾驶检测 课题介绍 该课题为基于眼部和嘴部的疲劳驾驶检测。带有一个人机交互界面GUI,通过输入视频,分帧,定位眼睛和嘴巴,通过眼睛和嘴巴的张合度,来判别是否疲劳。 二、操作步骤 第一步:最…...
Linux内核.之 init文件,/init/main.c
想要熟悉内核,看下源码,就非常清晰 Linux内核,head.s,汇编启动cpu相关设置后,启动init文件里的,文件在内核的/init/main.c,看下main函数,做了哪些工作 // SPDX-License-Identifier: …...
CentOS系统中查看内网端口映射的多种方法
在网络管理中,了解和控制内网端口映射是至关重要的。本文将为您详细介绍在CentOS系统中查看内网端口映射的多种方法,助您提升网络管理效率。 使用netstat命令查看端口映射 netstat是一个强大的网络诊断工具。要查看当前的端口映射情况,可以在…...
Mac中禁用系统更新
Mac中禁用系统更新 文章目录 Mac中禁用系统更新1. 修改hosts,屏蔽系统更新检测联网1. 去除系统偏好设置--系统更新已有的小红点标记 1. 修改hosts,屏蔽系统更新检测联网 打开终端,执行命令: sudo vim /etc/hosts127.0.0.1 swdis…...
GoogLeNet-水果分类
GoogLeNet-水果分类 1.数据集 官方下载地址:https://www.kaggle.com/datasets/karimabdulnabi/fruit-classification10-class?resourcedownload 备用下载地址:https://www.123684.com/s/xhlWjv-pRAPh 介绍: 十个类别:苹果、…...
深度学习入门指南:一篇文章全解
目录 0.前言 1.深度学习的背景历史 2.深度学习主要研究的内容 3.深度学习的分支 3.1.卷积神经网络(CNN) 3.2 递归神经网络(RNN) 3. 3长短期记忆网络(LSTM) 4.深度学习的主要应用 4.1计算机视觉 4…...
java ssm 医院病房管理系统 医院管理 医疗病房信息管理 源码 jsp
一、项目简介 本项目是一套基于SSM的医院病房管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 后端技术&#x…...
钩子函数的使用
钩子函数在计算机科学和软件工程中,特别是在编程框架和库中,是一种特殊的函数或方法,它们允许用户在框架或库的特定点插入自定义代码。这些钩子提供了一种扩展框架功能而无需修改其源代码的方式。 在前后端分离的项目中,如使用Dj…...
【Docker】自定义网络:实现容器之间通过域名相互通讯
文章目录 一. 默认网络:docker0网络的问题二. 自定义网络三. nginx容器指之间通过主机名进行内部通讯四. redis集群容器(跳过宿主机)内部网络通讯1. 集群描述2. 基于bitnami镜像的环境变量快速构建redis集群 一. 默认网络:docker0…...
护理陪护系统|护理陪护软件|陪护软件
在当今社会,随着人口老龄化的加剧和生活节奏的加快,护理陪护服务的需求日益增长。为了满足这一需求,开发定制一套高效、专业的护理陪护系统显得尤为重要。在开发过程中,有几个关键方面不能忽视。 一、用户需求分析 护理陪护系统的…...
苍穹外卖-账号被锁定怎么办?
刚刚解决的小问题, 最近在搞黑马程序员的苍穹外卖项目, 在完善开发编辑员工功能的时候, 不知道怎么搞的, 无论是swagger接口测试, 还是前后端联调, 都显示"账号被锁定", 原本想在网上找找解释, 结果我太笨, 搜不到, 那就只能在代码里面排查咯, 既然是登录接口出…...
webpack loader全解析,从入门到精通(10)
webpack 的核心功能是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。更多复杂的功能需要借助 webpack loaders 和 plugins 来完成。 1. 什么是 Loader Loader 本质上是一个函数,它的作用是将某个源码字符串转换成…...
python机器人Agent编程——实现一个本地大模型和爬虫结合的手机号归属地天气查询Agent
目录 一、前言二、准备工作三、Agent结构四、python模块实现4.1 实现手机号归属地查询工具4.2实现天气查询工具4.3定义创建Agent主体4.4创建聊天界面 五、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源ps3.wifi小车控制相关…...
【动态规划】斐波那契数列模型总结
一、第 N 个泰波那契数 题目链接: 第 N 个泰波那契数 题目描述: 题目分析: 1、状态表示: dp[i] 表示:第 i 个斐波那契数的值 2、状态转移方程: 由题意可知第 i 个数等于其前三个数之和 dp[i] dp[i-…...
EasyUI弹出框行编辑,通过下拉框实现内容联动
EasyUI弹出框行编辑,通过下拉框实现内容联动 需求 实现用户支付方式配置,当弹出框加载出来的时候,显示用户现有的支付方式,datagrid的第一列为conbobox,下来选择之后实现后面的数据直接填充; 点击新增:新…...
常熟祥云平台网站建设/google权重查询
音标:英[kəˈnekt]美[kəˈnɛkt]vt.连接,联结;使…有联系;为…接通电话;插入插座vi.连接;建立关系;[体]成功击中网络联系;联络;毗连;贯通行业释义体育1.击中…...
房地产网站建设公司推荐/天津百度快照优化公司
JavaScrip知识点总结一、JavaScript介绍二、JavaScript 和 html 代码的结合方式2.1 第一种方式2.2 第二种方式三、变量四、运算符4.1 关系(比较)运算符4.2 逻辑运算符五、数组六、函数6.1 函数的二种定义方式6.1.1 方式一6.1.2 方式二6.2 函数的 argumen…...
网站开发亿玛酷给力5/自动外链工具
作者:冰雪尘沙(公告声明:本博客中注明 [原创] 的文章,如要转载请注明出处,即作者『冰雪尘沙』和本博客网址。如有任何宝贵意见敬请留言或E-mail给我,我会虚心参考改进,谢谢!) 心情、换季温差一年…...
九江网站推广/附近电脑培训班零基础
2007年4月1号,发现点击公告无法弹出窗口。,参考以下代码<a href"#"onclick"JavaScript:window.open(winamp/winamp/exobud.htm,310,290)"><font color#FF0000>点歌机</font></a>对原有代码进行了修改&#…...
wordpress 用户密码的加密算法/搜索引擎优化英文简称
第1章 C及其开发环境概述一、问答题1.结构化程序设计主要有哪些劣势?【答案】(1)程序的开发效率低下(2)程序的可重用性差(3)程序的维护成本高(4)无法适应信息的快速膨胀和多样化2.面向对象的程序设计有哪些优点?【答案】(1)程序的…...
郑州网站制作咨询/企业管理培训机构排名前十
http://acm.edu.cn/showproblem.php?pid1032 直接用暴力方法竟然不超时...T_T感动cry ps:据说...自己算一下循环不超过10^6就不超时...囧 1 #include<stdio.h>2 int main()3 {4 int a1,b1,a,b,i,j,count,t,s;5 while(scanf("%d%d",&am…...