- springboot整合Logback
m0_74825634
面试学习路线阿里巴巴springbootlogback后端
Logback介绍描述Logback是由log4j创始人设计的另外一种开源日志组件,性能比log4j要好。相对是一个可靠、通用、快速而又灵活的Java日志框架。Logback主要分三个模块1、logback-core:其他两个模块的基础模块2、logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j。API,可以很方便地更换成其它日志系统,如log4j或JDK14L
- springboot中aop的写法
coderzjy
springbootjavaspring
自定义注解注解用于标识需要进行代码增强的方法@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceAutoFill{OperationTypevalue();}target注解标识注解生效类型,retention指定注解的保留周期,OperationType为枚举类型,指定属性值的类型,value
- kotlin单例
yufumatou
kotlinkotlin单例单例
一、饿汉模式(1)类加载是线程安全的,静态变量是在类加载的时候进行赋值,所以该模式是线程安全的。(2)无法懒加载(此处只是伪概念,一般我们使用单例类的时候都需要单例对象。只有当声明了其他的静态方法,在不调用获取单例对象的方法前调用静态方法,才会体现出相对懒汉模式无法懒加载的特性,但实际使用中一般不会在单例类中再声明其他静态方法)(3)无法给构造函数传参//Java实现publicclassSing
- flask+layui学生信息管理系统
元宇宙中的程序员
flasklayuipython
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、数据库建模1、创建数据模型classStudentORM(db.Model):stu_id=d
- Servlet 总结
SAFE20242034
#二JavaWebservlet
Servlet总结Servlet是JavaEE(JakartaEE)技术中的一个核心组件,用于开发基于服务器的动态Web应用程序。它是运行在支持Java的Web服务器或应用服务器上的Java类,能够处理客户端请求并生成响应。Servlet的核心特点:平台无关性:Servlet是基于Java的,具有跨平台特性。高效性:Servlet在服务器端运行,可以在同一进程中处理多个请求,减少了性能开销。生命周
- 《Kotlin核心编程》中篇
张云瀚
kotlinkotlin核心编程
类型系统null的问题及解决方案1.null问题在传统编程语言如Java中,null引用是一个常见的错误根源,容易引发空指针异常(NullPointerException),这类错误往往难以在编译期发现,常在运行时出现,增加了调试成本。2.解决方案可空类型声明:Kotlin通过在类型后加?来表示可空类型,如String?。这使开发者在代码中明确标记可能为null的变量,增强代码的安全性与可读性。例
- 2021 React面试题知识点很全面
尘之微识
react.js面试
一,什么是虚拟DOM?虚拟DOM(VDOM)它是真实DOM的内存表示,一种编程概念,一种模式。它会和真实的DOM同步,比如通过ReactDOM这种库,这个同步的过程叫做调和(reconcilation)。虚拟DOM更多是一种模式,不是一种特定的技术。二,类组件和函数组件之间有什么区别?类组件(Classcomponents)无论是使用函数或是类来声明一个组件,它决不能修改它自己的props。所有R
- 2024年Python最全用Python制作一个自动抢票脚本_python抢票脚本,Python面试项目全代码
Android失眠夜
程序员python学习面试
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!classConcert:def__init__(
- android studio flutter代理设置问题classpath 'com.android.tools.build:gradle:3.2.1'
同名公众号 - 人生代码
androidstudio安卓开发androidstudio
前提初次安装flutter,通过代理设置加快速度安装首次更新数据,但在添加设备并开始打包编译时出现classpath找不到的情况1.在初次启动IDE的时候会提示更新各种SDK包,此时一般会直接设置代理,我的系统时Ubuntu18.04,所以直接代理了本地,127.0.0.1端口10802.在编译打包的时候出现了找不到相关的包,原因是flutter三个默认配置的地方采用了Google路径的包切换ma
- ffmpeg把视频文件转码为MP4格式
卷土重来…
工具ffmpeg
windows系统需要下载ffmpeg软件,并在代码中指定路径centos系统需要安装ffmepg是可执行的命令packagecom.xkj.utils;importlombok.extern.slf4j.Slf4j;importjava.io.*;importjava.util.ArrayList;importjava.util.List;@Slf4jpublicclassConvertVide
- Flask-SQLAlchemy 根据数据库中已有的表建立Model对象
nico2333
Web
官方文档配置信息classConfig(object):"""配置参数"""#sqlalchemy的配置参数连接到数据库SQLALCHEMY_DATABASE_URI="[1数据库类型]://[2用户名]:[3密码]@[4数据库所在IP]:[5端口号]/[6数据库名]"#设置sqlalchemy自动跟踪数据库SQLALCHEMY_TRACK_MODIFICATIONS=Trueapp.config
- sqlalchemy动态生成model模型
killersdz
python数据库
因业务需要从不同时期的sqlite数据库中取数据,不同时期的数据库字段是不同的,但是以往用sqlalchemy管理数据库时的model是写死的,就会导致有些字段错误而报错,这时我们就要根据版本动态生成model众所周知python里的type()函数是可以查看一个实例的class类型,但其实type()也可以用来创建一个class类,我们可以利用这一点动态创建model,下面放出例子#model.
- 概念一: python 中列表 ,数组, 集合,字典;
ZhengXinTang
#python数据结构pythonlist
1.python基本数据类型首先python3中自带的有六个标准的数据结构类型:Number(数字)String(字符串)Tuple(元组)List(列表)Set(集合)Dictionary(字典)不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。2.数据类型各自的特点2.1数组与
- python-leetcode-合并两个有序链表
Joyner2018
leetcode链表算法
21.合并两个有序链表-力扣(LeetCode)#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defmergeTwoLists(self,list1:Optional[ListNode],list2
- Python下3种文字识别工具的源码和效果比较
eybk
python开发语言
1.pytesseractimportpytesseractfromPILimportImageim=Image.open(r'C:/Users/YBK/Pictures/35005.jpg')string=pytesseract.image_to_string(im,lang='chi_sim')print(string)2.paddleocrfrompaddleocrimportPaddleO
- 观察者模式
有趣的我
#设计模式观察者模式python开发语言
代码实现(Python版本):classObserver:defupdate(self,message):raiseNotImplementedError("Youshouldimplementthismethod.")classSubject:def__init__(self):self._observers=[]defattach(self,observer):"""附加观察者"""self.
- Shiro框架源码学习笔记
a88729845
shiro
文章目录介绍认证术语如何使用Shiro的认证1.手机认证主体和凭据2.提交认证主体和凭据到认证系统3.允许访问,重新认证,或阻止访问"RememberMeSupport"RememberedvsAuthenticated登出授权授权三要素权限权限的粒度角色隐式的角色显式的角色(推荐)用户Shiro如何执行授权编程式授权角色检查权限检查实现`Permission`接口的方式使用`String`表示一
- 【Java】Java 中泛型嵌套设置
Mxin5
Javajava
*测试一下泛型嵌套*创建两个泛型类*1.classGenericNest*2.classGenericNest1packagegeneric;/***测试一下泛型嵌套*创建两个泛型类*1.classGenericNest*2.classGenericNest1*@authorMixi**///泛型类1classGenericNest{//成员变量privateTname;privateT1addr
- python日志库
Happinessคิดถึง
Python学习python开发语言
更新时间:2023-03-10官方提供的logging封装成以日期命名。参考:logging和logurulogging封装类使用importosimportloggingimportreimporttimefromlogging.handlersimportTimedRotatingFileHandler#logspathdefault:/logs/classsetup_log:def__ini
- 【数据结构基础C++】图论04-深度优先遍历,图的连通分量个数
新时代&农民
数据结构C++图论深度优先数据结构
单独写一个连通分量的类代码#pragmaonce#includeusingnamespacestd;templateclasscomponent{private:Graph&G;bool*visited;intccount;int*connected;//将深度优先遍历写在私有里voiddfs(intv){visited[v]=true;//记录该点被访问connected[v]=ccount;/
- 随笔十七、eth0单网卡绑定双ip的问题
单片机社区
立创泰山派随笔智能路由器网络协议udp嵌入式硬件网络
在调试语音对讲过程中遇到过一个“奇怪”问题:泰山派作为一端,可以收到对方发来的语音,而对方不能收到泰山派发出的语音。用wireshark抓包UDP发现,泰山派发送的地址是192.168.1.30,而给泰山派实际设置的静态地址是192.168.1.99。由于接收端有地址识别,只接收99,因此30的数据应该是被丢弃了,导致不能播放音频。vi/etc/network/interfacesautoloif
- TypeScript 学习 -类型 - 8
草明
TypeScripttypescript学习javascript
交叉类型与联合类型交叉类型interfaceDogInterface{run():void;}interfaceCatInterface{jump():void;}letpet:DogInterface&CatInterface={run(){},jump(){},};联合类型只能访问公共的方法约束不可以漏处理某个类型typeShape=Square|Rectangle|Circle;//约束不可
- TypeScript 学习 -类型 - 9
草明
TypeScripttypescript学习javascript
声明合并成员变量合并:成员变量会合并,但类型必须一致。成员函数合并:如果函数签名不同,合并后的函数会是签名的联合类型。接口声明顺序:在同一个接口内按顺序合并;不同接口时,后声明的会覆盖前声明的。函数字面量优先级:如果有函数字面量,它们会优先合并。interfacePerson{name:string;}interfacePerson{age:number;}interfacePerson{age:
- 【STL笔记】字符串
Flower#
算法学习笔记c++笔记
字符串下标从0开始,常规用法不再赘述,持续更新中…1.substr(pos,len):返回从位置pos开始,长度为len的子串。(len默认为npos)std::stringstr="Hello,World!";std::stringsub1=str.substr(7,5);//提取从索引7开始,长度为5的子串std::stringsub2=str.substr(7);//提取从索引7开始直到字符
- 深入浅出解析Stable Diffusion中U-Net网络
2301_78234743
java
题解|#数组中出现次数超过一半的数字#importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,24秋招腾讯QQ浏览器提前批一面一面(35分钟)先做个自我介绍你应该学过操作系统和计算机网络进程和线程UDP和TCP的区别UDP和TCP如何实现拥塞控制什么情况下用UDP,什么情况下用TCP题解|#牛牛学说话之-浮点数##incl
- 每日一道算法题 移除元素
BraveOxCow
算法题算法数据结构
题目27.移除元素-力扣(LeetCode)PythonclassSolution:defremoveElement(self,nums:List[int],val:int)->int:whilevalinnums:fornuminnums:ifnum==val:nums.remove(num)breakreturnlen(nums)classSolution:defremoveElement(s
- 每日一道算法题 组合
BraveOxCow
算法题算法数据结构
题目77.组合-力扣(LeetCode)Python体会一下Python的高开发效率classSolution:defcombine(self,n:int,k:int)->List[List[int]]:fromitertoolsimportcombinationsreturnlist(combinations(range(1,n+1),k))第二种解法如下:classSolution:defco
- Java虚拟机组成
全干攻城狮12138
jvmjava开发语言jvm
1.组成部分字节码文件类加载器ClassLoader运行时数据区域(JVM管理的内存)执行引擎(即时编译器、解释器、垃圾回收器等)本地接口(调用本地已经编译的方法,比如虚拟机中提供的c/c++方法)2.字节码文件组成基础信息:魔数、字节码文件对应的Java版本号、访问标识(publicfinal等)、父类和接口魔数:由于文件后缀名可以改,因此无法通过后缀名判断文件类型,所以通过文件头(前几个字节)
- 深入理解 Python 中的 `@classmethod` 和 `@staticmethod` 装饰器
蜗牛沐雨
Pythonpython开发语言
在Python的面向对象编程中,装饰器为我们提供了灵活的函数和方法定义方式。其中,@classmethod和@staticmethod是两个常用的装饰器,它们的主要作用是改变方法的调用方式,使方法能够在类的层面上使用,而不是依赖具体的实例。什么是@classmethod?@classmethod是Python的内置装饰器,用于将一个方法标记为类方法。类方法的第一个参数通常命名为cls,代表类本身。
- Codeforces Round 925 (Div. 3)
louisdlee.
AtCoderCF题解算法
CodeforcesRound925(Div.3)文章目录CodeforcesRound925(Div.3)A.RecoveringaSmallStringB.MakeEqualC.MakeEqualAgainD.DivisiblePairsE.AnnaandtheValentine'sDayGiftA.RecoveringaSmallString暴搜一共就三个字母,我们只要每次从第一个字母开始,
- 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