用Python开发“迷你井字棋”小游戏
风亦辰739
Python小游戏pythonpygame开发语言
“井字棋”是一种简单但极具策略性的游戏,玩家通过在3x3的棋盘上布局来形成三连线。本篇文章将介绍如何使用Python和pygame库实现一个互动性的“井字棋”小游戏。一、游戏规则玩家交替落子,分别使用“X”和“O”标记。在任意行、列或对角线形成三连线的玩家获胜。如果棋盘被填满而没有胜者,则游戏以平局结束。二、开发环境开发工具:任意Python编辑器(如PyCharm、VSCode)。依赖库:pyg
【初探数据结构】线性表———顺序表的详解和实现
我想吃余
数据结构篇数据结构
欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习!点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对数据结构感兴趣的朋友文章目录@[toc]线性表——顺序表详解与实现一、线性表概述二、顺序表核心概念2.1基本结构1.静态顺序表(不推荐)2.动态顺序表(推荐)三、动态顺序表实现3.1数据结构定义3.2核心接口说明3.3关键代码实现(部分)初始化与销毁动
高阶C语言|深度剖析数据在内存中的存储
我想吃余
C语言篇c语言开发语言
文章目录重点1.数据类型介绍1.1数据类型的基本分类2.整型在内存中的存储2.1原码、反码、补码2.2大小端字节序2.3判断字节序3.浮点型在内存中的存储3.1IEEE754浮点数标准3.2浮点数与整数的内存存储差异3.3浮点数存储示例4.实战练习总结欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习!点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对
高阶C语言|程序编译与预处理:从源代码到可执行的奥秘
我想吃余
C语言篇c语言服务器开发语言
欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习!点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C语言感兴趣的朋友文章目录引言一、程序的翻译环境与执行环境二、编译与链接的详细过程1.编译的三个阶段2.链接的核心任务三、预处理详解1.预定义符号2.#define的妙用与陷阱3.宏vs函数4.高级技巧:`#`与`##`四、条件编译与文件包含1.条件编
【JAVA-数据结构】枚举
Mr_star_galaxy
数据结构java数据结构开发语言
咱们继续,这篇咱们讲解枚举,跟上一篇联系相对较大,大家可以关联来看。1背景及定义枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式:publicstaticfinalintRED=1;publicstaticfinalintGREEN=2;publicstaticfinalintBLACK=3;但是常量举例有不好的地方,例如:可能碰巧有个数字
Pytorch实现之基于相对平均生成对抗网络的人脸图像超分辨率
这张生成的图像能检测吗
优质GAN模型训练自己的数据集生成对抗网络人工智能神经网络计算机视觉深度学习pythonpytorch
简介简介:改进SRGAN,并使用相对平均生成对抗网络的人脸图像超分辨率训练自己的数据集论文题目:FaceImageSuper-resolutionBasedOnRelativeAverageGenerativeAdversarialNetworks(基于相对平均生成对抗网络的人脸图像超分辨率)会议:20212ndAsiaSymposiumonSignalProcessing(ASSP)摘要:人脸图
为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心
一水鉴天
人工语言智能制造软件智能架构人工智能开发语言
本篇继续讨论通用编程语言。说明:本阶段的所有讨论都是围绕这一主题展开的,但前面的讨论分成了三个大部分(后面列出了这一段的讨论题目的归属关系)-区别distinguish(各别):文化和习俗。知识表征,思维导图及观察者效应,Chance:偶然和适配,符号学芭比等逻辑和平台。视觉及其工作原理,圣灵三角形和Checker,数据及其意义等实体和神经元。智能语义网络,记忆矩阵等。只有“核心技术:Cognit
python入门教学(一):安装python环境
无尘550
python开发语言
一、python下载python下载链接:python官方地址选择合适自己电脑的版本并下载二、python安装打开下载好的安装包,我这里选的是python3.12.1版本打开后大概是如上界面,记住勾选第二个选项,可以省去一个麻烦,若是忘记勾选,最后我会给出解决方法点击Customizeinstallation自定义安装选项,进入如下界面勾选红圈圈出来的,也就是所有选项,安装文档,pip,idle等
【助力快速开发】800套SSM计算机毕业设计源码,助你顺利毕业!
计算机小宇学长+Vhero_fafafa
计算机专业毕业设计选题指导课程设计java毕业设计springmvcmybatisvue.js
文末获取源码联系文末获取源码联系文末获取源码联系重要的事情说三遍!!!精彩专栏推荐订阅不然下次找不到哟SpringBoot项目精品实战案例SSM项目精品实战案例微信小程序项目实战案例更多项目选题SpringBoot项目选题推荐SSM项目选题推荐微信小程序项目选题推荐引言在当今快速发展的软件开发行业中,熟练掌握主流技术框架是每个开发者的必备技能。SSM(Spring,SpringMVC,MyBati
信号处理基础:信号的时域和频域分析_(9).傅里叶变换
kkchenkx
信号处理技术仿真模拟信号处理
傅里叶变换引言傅里叶变换是一种将信号从时域转换到频域的数学工具。通过傅里叶变换,可以将复杂的时域信号分解为一系列简单的基本频率分量,这对于信号的分析、处理和设计具有重要意义。傅里叶变换在信号处理领域有着广泛的应用,包括滤波、频谱分析、通信系统设计等。傅里叶级数连续时间傅里叶级数(CTFS)连续时间傅里叶级数(Continuous-TimeFourierSeries,CTFS)是一种将周期性连续时间
Unity和C++之间的区别
c++
Unity和C++是两种完全不同的技术,它们在开发目标、语言特性、应用场景等方面存在显著区别。以下是它们之间的主要区别:语言特性C++底层语言:C++是一种通用的、静态类型的、自由格式的编程语言,支持过程化编程、面向对象编程和泛型编程。编译型语言:C++代码需要通过编译器编译成机器代码后才能运行,因此执行效率高,但开发周期较长。手动内存管理:C++允许开发者手动管理内存分配和释放,这提供了更高的性
PPT 小黑第29套
荷包蛋大王iovo
powerpoint
对应大猫29组合图弹出来excel表勾选用到的数据(系列三用不到)-更改图表类型-有主次坐标轴之分图形+这里数据标签改成一位小数:选中要改的数字-数字下面类别-数字/百分比小数位数(保留几位写几)折线图数据标记就是折线图上的点数据标签-类别名称和百分比取消标题行的特殊格式:-表设计按住Ctrl画一个正圆,再插入一个太阳,选择窗格按住ctrl同时选中,-合并形状-组合右击图形-大小和位置调位置动画结
Owncast是一个开源的、自托管的、去中心化的、开源直播系统,亲自掌控您的直播视频。开箱即用的流媒体+聊天功能。OBS、Streamlabs、Restream等许多软件都可以与Owncast一起使用
2301_78755287
去中心化音视频区块链开源c语言
一、软件介绍文末提供下载和源程序Owncast是一个开源的、自托管的、去中心化的、单用户直播视频流媒体和聊天服务器,用于运行自己的类似主流选项的直播流。它提供了对您的所有内容、界面、管理和受众的完全控制权。二、使用方法提供一个单一的服务,你可以运行它,并且它可以立即工作。Owncast与任何使用RTMP向远程服务器广播的软件兼容。RTMP是所有主要实时流媒体服务所使用的,因此如果您目前正在使用其中
数据结构之栈
2301_76231794
数据结构与算法数据结构java算法
一、栈的概念跟使用场景栈是一种先进后出的有序列表数据结构,插入和删除元素只能在该线性表的同一端进行,也就是栈顶。栈的使用场景:函数调用时,在操作系统里,会给每一个线程分配一块自己的内存区域,这种内存区域就是栈这一种结构,用来存储函数在调用时候的一些临时变量等等。举个例子,假设有三个方法,分别为A、B、C,A方法中调用了B,B方法中调用了C在主函数中调用了A方法。首先main函数启动,系统为其分配一
Python 制作 AI 井字棋小游戏
壹屋安源
Python小游戏python人工智能pygame井字棋AI
目录项目简介功能实现项目环境和依赖核心代码解析1.初始化和游戏主类2.绘制棋子3.Minimax算法实现AI决策4.游戏主循环运行效果展示总结完整代码获取导语:今天我们一起来用Python和Pygame制作一个带有AI功能的井字棋小游戏。项目代码包含了基础的游戏逻辑、玩家与AI对战的功能,AI的决策基于Minimax算法实现,能够让你的游戏更具挑战性!项目简介井字棋(Tic-Tac-Toe)是一个
前端应用--工程化主题切换功能
xiaobing_hope
CSS3node-js学习javascriptnode.js
随着各个应用平台和网站都开始支持深色模式,相较于传统的页面配色方案,深色模式具有较好的降噪性,也能让用户的眼睛看内容更加舒适。那么对于前端开发来说,如何高效的支持深色模式呢?这里的高效指的是工程化、自动化方案,不需要在开发过程中hardcoding。PostCSS原理及相关插件能力postcss是一款使用JavaScript编写的用于编译css的工具,具有良好的插件性,非常有利于开发者扩展。原理:
Python数据结构——栈
Echo_Wish
数据结构与算法Python笔记Python数据结构1024程序员节python算法数据结构
栈(Stack)是一种基本的数据结构,它遵循“后进先出”(Last-In-First-Out,LIFO)的原则,即最后放入栈的元素最先出栈。栈常用于管理函数调用、表达式求值、括号匹配等问题。本文将详细介绍Python中栈数据结构的使用,并提供示例代码来说明。什么是栈?栈是一种线性数据结构,它由一组元素组成,支持两种主要操作:压入(push)和弹出(pop)。压入操作将元素添加到栈的顶部,而弹出操作
hive-DML语法(超级详细)
研发咨询顾问
核心库-大数据hivehadoop数据仓库
N.0变量使用setwindow_day=50--定义变量select${hiveconf:window_day}--使用变量N.1单表查询语句N.1.1语法
C语言基于ssl的https通信,利用OpenSSL建立SSL安全通信(C/S)
宝之大者
/*******************************************************************************************SSL/TLS客户端程序WIN32版(以demos/cli.cpp为基础)*需要用到动态连接库libeay32.dll,ssleay.dll,*同时在setting中加入ws2_32.liblibeay32.libs
Hive SQL 优化
大数据侠客
大数据相关技术文档总结hivesql性能优化
标题一、HIVESQL执##标题行顺序了解hivesql的执行顺序,有助于写出更高质量的代码。第一步:确定数据源,进行表的查询和加载from(left/right/inner/outner)joinon第二步:过滤数据,进行条件筛选wheregroupbyhaving第三步:查询数据select第四步:显示数据distinctorderbylimitunion/unionallSql:select
华为OD机试真题E卷 - 跳马 (Java/JS/Py/C/C++)
耀耀zz
2025最新华为OD机试题目华为od
题目描述马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或者直者走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称"马走日"字。给定m行n列的棋盘(网格图),棋盘上只有象棋中的棋子“马”,并且每个棋子有等级之分,等级为k的马可以跳1~k步(走的方式与象棋中“马”的规则一样,不可以超出棋盘位置),问是否能将所有马跳到同一位置,如果存在,输出最少需要的总步数(每匹
java上传图片到mysql数据库中_java中如何上传图片到数据库?
Blancbleu
基于layui框架,实现从jsp页面上传图片到数据库,熟悉layui框架才能用。首先如何上传图片。这里为layui的js部分和htmlvaruploadInst=upload.render({elem:'#uploadBtn'//上传按钮的id,accept:'images'//上传文件的类型,auto:false,size:1024*1024*2//上传文件的最大大小这里为2M,choose:f
单片机学习心得
谭宏磊
单片机嵌入式硬件
单片机是作为一种微型计算机系统,在现代电子技术邻域中占着至关重要的地位。自从接触单片机课程以来,我对嵌入式系统产生了浓厚的兴趣。通过一段时间的学习,我逐渐掌握了单片机的编程思路和技巧运用。在此,我想分享一下我的学习心得,希望能对同样热爱单片机的同学们有所帮助。单片机(通常简称为MCU或MC)是指完全独立于单个芯片的非常小的微型计算机。如果需要使用更多的基本术语,您可以将单片机定义成一台非常简化的计
蓝桥杯单片机竞赛学习计划(七)
一支兔子
蓝桥杯单片机学习
蓝桥杯单片机学习计划之AT24C02目录前言一、存储器介绍1.随机存储器(RAM)2.只读存储器(ROM)二、AT24C02介绍1.引脚介绍2.通信方式三、代码总结前言之前的章节我们把单片机外围最基础的一些外设如流水灯、数码管以及内部资源定时器和中断都学习完了,那么这一节开始我们学习比较重要的几个模块,今天先来学习存储模块AT24C02。一、存储器介绍存储器,通俗点讲就是能够存储数据的器件,我们都
java责任链模式
3213213333332132
java责任链模式村民告县长
责任链模式,通常就是一个请求从最低级开始往上层层的请求,当在某一层满足条件时,请求将被处理,当请求到最高层仍未满足时,则请求不会被处理。
就是一个请求在这个链条的责任范围内,会被相应的处理,如果超出链条的责任范围外,请求不会被相应的处理。
下面代码模拟这样的效果:
创建一个政府抽象类,方便所有的具体政府部门继承它。
package 责任链模式;
/**
*
linux、mysql、nginx、tomcat 性能参数优化
ronin47
一、linux 系统内核参数
/etc/sysctl.conf文件常用参数 net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目
net.core.rmem_max = 8388608 #SOCKET读缓存区大小
net.core.wmem_max = 8388608 #SOCKET写缓存区大
php命令行界面
dcj3sjt126com
PHPcli
常用选项
php -v
php -i PHP安装的有关信息
php -h 访问帮助文件
php -m 列出编译到当前PHP安装的所有模块
执行一段代码
php -r 'echo "hello, world!";'
php -r 'echo "Hello, World!\n";'
php -r '$ts = filemtime("
Filter&Session
171815164
session
Filter
HttpServletRequest requ = (HttpServletRequest) req;
HttpSession session = requ.getSession();
if (session.getAttribute("admin") == null) {
PrintWriter out = res.ge
连接池与Spring,Hibernate结合
g21121
Hibernate
前几篇关于Java连接池的介绍都是基于Java应用的,而我们常用的场景是与Spring和ORM框架结合,下面就利用实例学习一下这方面的配置。
1.下载相关内容: &nb
[简单]mybatis判断数字类型
53873039oycg
mybatis
昨天同事反馈mybatis保存不了int类型的属性,一直报错,错误信息如下:
Caused by: java.lang.NumberFormatException: For input string: "null"
at sun.mis
项目启动时或者启动后ava.lang.OutOfMemoryError: PermGen space
程序员是怎么炼成的
eclipsejvmtomcatcatalina.sheclipse.ini
在启动比较大的项目时,因为存在大量的jsp页面,所以在编译的时候会生成很多的.class文件,.class文件是都会被加载到jvm的方法区中,如果要加载的class文件很多,就会出现方法区溢出异常 java.lang.OutOfMemoryError: PermGen space.
解决办法是点击eclipse里的tomcat,在
我的crm小结
aijuans
crm
各种原因吧,crm今天才完了。主要是接触了几个新技术:
Struts2、poi、ibatis这几个都是以前的项目中用过的。
Jsf、tapestry是这次新接触的,都是界面层的框架,用起来也不难。思路和struts不太一样,传说比较简单方便。不过个人感觉还是struts用着顺手啊,当然springmvc也很顺手,不知道是因为习惯还是什么。jsf和tapestry应用的时候需要知道他们的标签、主
spring里配置使用hibernate的二级缓存几步
antonyup_2006
javaspringHibernatexmlcache
.在spring的配置文件中 applicationContent.xml,hibernate部分加入
xml 代码
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hi
JAVA基础面试题
百合不是茶
抽象实现接口String类接口继承抽象类继承实体类自定义异常
/* * 栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、 *int、long、 float、double、boolean)和对象的引用,数据可以共享,速度仅次于 * 寄存器(register),快于堆。堆(heap):用于存储对象。 */ &
让sqlmap文件 "继承" 起来
bijian1013
javaibatissqlmap
多个项目中使用ibatis , 和数据库表对应的 sqlmap文件(增删改查等基本语句),dao, pojo 都是由工具自动生成的, 现在将这些自动生成的文件放在一个单独的工程中,其它项目工程中通过jar包来引用 ,并通过"继承"为基础的sqlmap文件,dao,pojo 添加新的方法来满足项
精通Oracle10编程SQL(13)开发触发器
bijian1013
oracle数据库plsql
/*
*开发触发器
*/
--得到日期是周几
select to_char(sysdate+4,'DY','nls_date_language=AMERICAN') from dual;
select to_char(sysdate,'DY','nls_date_language=AMERICAN') from dual;
--建立BEFORE语句触发器
CREATE O
【EhCache三】EhCache查询
bit1129
ehcache
本文介绍EhCache查询缓存中数据,EhCache提供了类似Hibernate的查询API,可以按照给定的条件进行查询。
要对EhCache进行查询,需要在ehcache.xml中设定要查询的属性
数据准备
@Before
public void setUp() {
//加载EhCache配置文件
Inpu
CXF框架入门实例
白糖_
springWeb框架webserviceservlet
CXF是apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。
它提供了JAX-WS的全面支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用,同时它能与spring进行完美结合。
在apache cxf官网提供
angular.equals
boyitech
AngularJSAngularJS APIAnguarJS 中文APIangular.equals
angular.equals
描述:
比较两个值或者两个对象是不是 相等。还支持值的类型,正则表达式和数组的比较。 两个值或对象被认为是 相等的前提条件是以下的情况至少能满足一项:
两个值或者对象能通过=== (恒等) 的比较
两个值或者对象是同样类型,并且他们的属性都能通过angular
java-腾讯暑期实习生-输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]
bylijinnan
java
这道题的具体思路请参看 何海涛的微博:http://weibo.com/zhedahht
import java.math.BigInteger;
import java.util.Arrays;
public class CreateBFromATencent {
/**
* 题目:输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A
FastDFS 的安装和配置 修订版
Chen.H
linuxfastDFS分布式文件系统
FastDFS Home:http://code.google.com/p/fastdfs/
1. 安装
http://code.google.com/p/fastdfs/wiki/Setup http://hi.baidu.com/leolance/blog/item/3c273327978ae55f93580703.html
安装libevent (对libevent的版本要求为1.4.
[强人工智能]拓扑扫描与自适应构造器
comsci
人工智能
当我们面对一个有限拓扑网络的时候,在对已知的拓扑结构进行分析之后,发现在连通点之后,还存在若干个子网络,且这些网络的结构是未知的,数据库中并未存在这些网络的拓扑结构数据....这个时候,我们该怎么办呢?
那么,现在我们必须设计新的模块和代码包来处理上面的问题
oracle merge into的用法
daizj
oraclesqlmerget into
Oracle中merge into的使用
http://blog.csdn.net/yuzhic/article/details/1896878
http://blog.csdn.net/macle2010/article/details/5980965
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSE
不适合使用Hadoop的场景
datamachine
hadoop
转自:http://dev.yesky.com/296/35381296.shtml。
Hadoop通常被认定是能够帮助你解决所有问题的唯一方案。 当人们提到“大数据”或是“数据分析”等相关问题的时候,会听到脱口而出的回答:Hadoop! 实际上Hadoop被设计和建造出来,是用来解决一系列特定问题的。对某些问题来说,Hadoop至多算是一个不好的选择,对另一些问题来说,选择Ha
YII findAll的用法
dcj3sjt126com
yii
看文档比较糊涂,其实挺简单的:
$predictions=Prediction::model()->findAll("uid=:uid",array(":uid"=>10));
第一个参数是选择条件:”uid=10″。其中:uid是一个占位符,在后面的array(“:uid”=>10)对齐进行了赋值;
更完善的查询需要
vim 常用 NERDTree 快捷键
dcj3sjt126com
vim
下面给大家整理了一些vim NERDTree的常用快捷键了,这里几乎包括了所有的快捷键了,希望文章对各位会带来帮助。
切换工作台和目录
ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w + r 移动当前窗口的布局位置
o 在已有窗口中打开文件、目录或书签,并跳
Java把目录下的文件打印出来
蕃薯耀
列出目录下的文件文件夹下面的文件目录下的文件
Java把目录下的文件打印出来
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月11日 11:02:
linux远程桌面----VNCServer与rdesktop
hanqunfeng
Desktop
windows远程桌面到linux,需要在linux上安装vncserver,并开启vnc服务,同时需要在windows下使用vnc-viewer访问Linux。vncserver同时支持linux远程桌面到linux。
linux远程桌面到windows,需要在linux上安装rdesktop,同时开启windows的远程桌面访问。
下面分别介绍,以windo
guava中的join和split功能
jackyrong
java
guava库中,包含了很好的join和split的功能,例子如下:
1) 将LIST转换为使用字符串连接的字符串
List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom");
Web开发技术十年发展历程
lampcy
androidWeb浏览器html5
回顾web开发技术这十年发展历程:
Ajax
03年的时候我上六年级,那时候网吧刚在小县城的角落萌生。传奇,大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号。
彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,”您填写的信息有误,请重填”。然后跳转回注册页面,以此循环。我现在时常想,如果当时a
架构师之mima-----------------mina的非NIO控制IOBuffer(说得比较好)
nannan408
buffer
1.前言。
如题。
2.代码。
IoService
IoService是一个接口,有两种实现:IoAcceptor和IoConnector;其中IoAcceptor是针对Server端的实现,IoConnector是针对Client端的实现;IoService的职责包括:
1、监听器管理
2、IoHandler
3、IoSession
ORA-00054:resource busy and acquire with NOWAIT specified
Everyday都不同
oraclesessionLock
[Oracle]
今天对一个数据量很大的表进行操作时,出现如题所示的异常。此时表明数据库的事务处于“忙”的状态,而且被lock了,所以必须先关闭占用的session。
step1,查看被lock的session:
select t2.username, t2.sid, t2.serial#, t2.logon_time
from v$locked_obj
javascript学习笔记
tntxia
JavaScript
javascript里面有6种基本类型的值:number、string、boolean、object、function和undefined。number:就是数字值,包括整数、小数、NaN、正负无穷。string:字符串类型、单双引号引起来的内容。boolean:true、false object:表示所有的javascript对象,不用多说function:我们熟悉的方法,也就是
Java enum的用法详解
xieke90
enum枚举
Java中枚举实现的分析:
示例:
public static enum SEVERITY{
INFO,WARN,ERROR
}
enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类 (java.l