- 深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言开发语言汇编算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
- 哪个瞬间你是发自内心地对服务人员说谢谢?
一杯仙气
几年前冬天,和室友一起去吃饭。上菜的是一个清瘦的妹子,打扮普通,穿着也很朴素。老三私下夸妹子好看,说着要找她要微信,我们都起哄让他现场教学一下怎么撩妹。老三是我们宿舍的情种,因为个子高身材好长得也不差,几年来换下的女朋友估计能组个足球队。他和我们说撩这种女生都是小case。结果再上菜的时候,大家聊都high了,没人看到这妹子,我一不小心撞上了她。她当时正端着一盆汤,估计是一盆刚出锅的汤,白色的热气
- c语言辅音字符怎么表示,C 语言实例 - 判断元音/辅音
吴世宁
c语言辅音字符怎么表示
C语言实例-判断元音/辅音C语言实例C语言实例判断输入的字母是元音,还是辅音。英语有26个字母,元音只包括a、e、i、o、u这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。实例#includeintmain(){charc;intisLowercaseVowel,isUppercaseVowel;printf("输入一个字母:");scanf("%c",&c);//小
- 2023-5-9晨间日记
深海未眠夜未央
今天是什么日子起床:5:30就寝:10:00天气:sunny心情:justsoso纪念日:no任务清单昨日完成的任务,最重要的三件事:改进:Whensomeonesaidsomethingbadtoyou,youcouldbequiet,andbelievedthattimecouldproveeverything.习惯养成:1.readtwoarticles2.savemoney周目标·完成进度
- 一句话读懂Kafka:5W1H带你解锁分布式消息队列的奥密
落霞归雁
AI编程教育电商微信开放平台rabbitmq中间件
一句话读懂Kafka:5W1H带你解锁分布式消息队列的奥秘在当今数字化时代,消息队列(MessageQueue,简称MQ)已经成为分布式系统中不可或缺的组件,而ApacheKafka作为其中的佼佼者,以其卓越的性能和广泛的应用场景脱颖而出。今天,就让我们用一句话读懂Kafka,并通过5W1H(What、Why、Who、When、Where、How)的方式,深入剖析它的核心价值与技术魅力。一句话读懂
- Java异常处理实验
半濠春水
Javajava开发语言
(一)上机并运行下面程序,看看会出现什么问题?packagecase1;classExample1{staticvoidmethod(){inta=0;intb=10/a;}publicstaticvoidmain(String[]args){method();}}分析程序出错的原因?Method函数方法中a的值为零,作为除数时发生异常修改程序使之能够正常运行。packagecase1;class
- 骗局
二十九_29
(一)公元2036年,癌症患病率已高达78%,但却没有有效的治疗方案,据有关人员表示,患者将于48小时内出现相关症状,60天内死亡率达99.9%,同时最令人绝望的是,该癌症已不同于二十年前的患病机理,远不止原癌基因与抑癌基因的突变,而是在人类14号染色体上的Caserα基因片段发生突变,并且遗传性极强,一旦发生突变,无论是四世同堂的大家族,还是一家三口的小家庭,整个家族的火种将从此熄灭。公元203
- 30个高效算法竞赛实战技巧
麦克•柯里昂
c++开发语言
理解题目要求仔细审查题目描述中的所有约束条件,包括输入数据范围、输出格式限制以及特殊规则。例如,某些题目可能要求结果取模1e9+7,忽略这一要求会导致答案错误。使用注释标记关键约束,如://Constraints://1≤N≤1e5//Outputmustbeinlowercase算法复杂度匹配建立常见输入规模与对应算法复杂度的映射表:1e6级别:必须使用O(n)算法1e5级别:允许O(nlogn
- vscode 找不到python解释器,VS Code找不到python 3解释器
miao君
vscode找不到python解释器
IaminstallingPython3.7.2forthefirsttime,andI'musingtheVSCodepythonextension.WhenIrunpython-VIgetPython2.7.10whichisnotcorrect!WhenIselecttheusr/local/bin/python3interpreterinVSCodeIgetthiserrorwhenrun
- 熟悉亚马逊邮件(第九天)
七qi_
电商运营分析学习方法
HellofromAmazonSellingPartnerSupport,Weunderstandyourrequestare-measurementandreimbursementforFBAexcessesfeePleasenotethatwearestillworkingwithourrelevantteamtoreacharesolutiononyourcase.Whileweareuna
- 数据写入因为汉字引发的异常
qq_40841339
sparkhadoophivehivehadoop数据仓库
spark数据写hive表,发生查询分区异常问题异常:251071241926.49ERRORHive:MelaException(message.Exceptionthrownwhenexeculingquey.SELECTDISTINCT‘orgapache.hadop.hivemelastore.modelMpartionAs"NUCLEUSTYPE,AONCREATETIME,AO.LAS
- 外刊双语 | 《毒液》被剪辑坏了……
福州翻译Ivy
素材/纽约时报笔记/知新共学外刊群笔记担当ZoeFilmreview:Venom影评:《毒液:致命守护者》可能被剪辑坏了近期这个电影似乎评价还不错来看看扭腰时报有什么不同的观点Venom/'vɛnəm/:N-MASSThevenomofacreaturesuchasasnakeorspideristhepoisonthatitputsintoyourbodywhenitbitesorstingsy
- 为什么找到对象那么重要,用户场景到底包括什么?
VV体验
我们常说用户场景,可用户场景到底由哪些因素组成呢?用户的需求就是产品所提供的服务,这样才能形成产品为用户提供需求的闭环,我们称之产品在特定的场景下为用户提供了解决方案。解构用户的场景可分为Who(用户)、where(空间)、When(时间)、Why(动机)、Service(服务)这5个组成部分。用户场景围绕用户才能产生,所以用户就是场景中的主角,我们将其定义为Who;场景必须基于一个空间维度,在这
- C语言第 7 天学习笔记:循环控制与数组入门及猜拳游戏实现
我爱学嵌入式
Linxu下C语言学习c语言学习笔记
C语言第07天学习笔记:循环控制与猜拳游戏实现内容提要循环结构break与continue综合案例《猜拳游戏》数组数组的概念一维数组循环控制语句在C语言中,break和continue是控制循环流程的重要关键字,它们可以帮助我们更灵活地控制程序执行流程。break语句功能:用在switch中,用来跳出switch中的case语句;如果case没有break,可能会产生case穿透用在循环中(whi
- LeetCode 5. Longest Palindromic Substring(最长回文子串)
想学会飞行的阿番
思路:有两种1.dpdp[i][j]=1whendp[i+1][j-1]==1&&s[i]==s[j]dp[i][j]=0whendp[i+1][j-1]=0dp[i][i]=1dp[i][i+1]=s[i]==s[j]?1:0;()注意此时要更新start和longestclassSolution{public:/*回环有两种,abba,abaabcd,abc用DP[i][j]=1||0*/st
- Fluent常用TUI梳理
CFD_Tyro
制造能源
Fluent文本命令界面TUI(textuserinterface)用一种类似于命令行的方式,实现了“一次编写,重复使用”,大大简化了复杂算例的设置流程。下表对常用的TUI命令进行梳理。文件读取/file/read-case读取cas文件或msh文件/file/read-data读取dat文件/file/read-case-data读取cas和dat/file/auto-save/root-nam
- 接口自动化测试框架搭建
测试老哥
测试用例软件测试自动化测试python职场和发展测试工具接口测试
点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快一、原理及特点参数放在XML文件中进行管理用httpClient简单封装一个httpUtils工具类测试用例管理使用了testNg管理,使用了TestNG参数化测试,通过xml文件来执行case。测试报告这里用到第三方的包ReportNG项目组织用Maven二、准备使用工具:eclipse,maven用到的第三方jar包:dom4j、re
- kotlin作用域函数let, also, with, apply,run区别(kt面试必问)
xiyangyang8110
作用域函数
ScopeFunctions:作用域函数,Scop是范围,作用域的意思;kotlin中用于简化代码let作为五大作用域函数之一,在调用对象上执行代码块,并返回代码块最后一行结果,常跟it搭配使用,it指的是调用对象例子valstr="a"valresult=str.let{println("Lengthofthestringis${it.length}")it.uppercase()println
- R语言-数据清洗-缺失值处理
刘大帅1
当对数据库中的芯片进行id转换后有许多NA值,这时候需要将这些数据值删掉。缺失值处理包括两个步骤,即缺失数据的识别和缺失值处理。在R语言总缺失值以NA表示,可以使用函数is.na()判断缺失值是否存在,函数complete.cases()可识别样本数据是否完整从而判断缺失情况。缺失值处理常用方法有删除法、替换法、插补法。(1)删除法:可分为删除观测样本与删除变量。删除观测样本通过na.omit()
- EasyExcel 模板导出数据 + 自定义策略(合并单元格)
Java小王子呀
SQL工具Utiljavajavasql
需求:数据库里的主表+明细表,联查出数据并导出Excel,合并主表数据的单元格。代码:controller@PostMapping("export")@ApiOperation(value="导出数据")protectedvoidexport(@ApiParam@Valid@RequestBodyNewWmsExceptionCaseSearchConditionrequest,HttpServl
- 几种基本的逻辑思考方法
Miss亚姐聊职业生涯成长
1.逻辑:提出问题-论据事实1-论据事实2-论据事实3-结论观点2.整体到局部,先水平再垂直3.发现问题-寻找原因-建立实施方案-解决问题4.MECE原则,使遗漏和重复降到最低,在不出现遗漏和重复的情况下把握整体5.逻辑树——从层次和体系上对信息进行把握6.5W2H:验证信息是否有遗漏,制定计划书:What、Why、When、Who、Where+How、Howmuch7.从问题到能力的进展循环(A
- C语言:break、continue、猜拳游戏
橙小花
c语言游戏算法
Day7-C语言流程控制break与continuebreak功能:①用在switch中,用来跳出case语句;无break,switch会执行多条语句,case穿透②在循环中(while…,for…,do…while),提前结束循环说明:①break不能用于循环语句和switch语句之外的任何其他语句中②break只能终止并跳出最近的一层循环结构案例需求:参与考试,及格跳出循环,否则一直考代码#
- nnUNet数据加载
山河百草
python开发语言
nnUNetDataset参数列表classnnUNetDataset(object):def__init__(self,folder:str,case_identifiers:List[str]=None,num_images_properties_loading_threshold:int=0,folder_with_segs_from_previous_stage:str=None):fol
- C语言:深入理解指针(5)
wai歪why
c语言开发语言
1.回调函数回调函数就是⼀个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被用来调⽤其所指向的函数时,被调⽤的函数就是回调函数。在上一讲中我们说过在学习指针函数前我们可以通过switch语句来写这个问题,但是这样case语句中就会有很多冗余的内容,通过回调函数我们就可以解决这个问题,代码和执行结果如下:#includeintadd(intx,inty){re
- wex的Scalers Talk第四轮新概念朗读持续力训练Day92 20190107
秦苌
练习材料:Lesson92AskingfortroubleItmusthavebeenabouttwointhemorningwhenIreturnedhome.Itriedtowakeupmywifebyringingthedoor-bell,butshewasfastasleep,soIgotaladderfromtheshedinthegarden,putitagainstthewall,a
- 2022-2023学年学英语报七年级第8期答案汇总
cmsphp
The6.1mileloopisastandardforcitycyclists进入查看:2022-2023学年学英语报七年级第8期答案汇总以下内容仅作展示,图片上方文字进入查看。WhenitcomestotransportationinNewYorkCity,mostpeoplechooseyellowcabsortheaffordablesubwaysystem.ButI'verealised
- 策略模式
风雅欢乐
概念不同策略分开处理避免出现大量if...else...或者switch...case...(JS中未找到经典应用场景)演示classOrdinaryUser{buy(){console.log('普通用户购买');}}classMemberUser{buy(){console.log('会员用户购买');}}classVIPUser{buy(){console.log('VIP用户购买');}}
- C语言十进制转十六进制
云雾栀子青,
算法c语言学习
十进制转十六进制#includeintmain(){intn,i=0,j;chara[100];scanf("%d",&n);if(n==0)printf("%d",n);else{while(n!=0){switch(n%16){case0:a[i]='0';break;case1:a[i]='1';break;case2:a[i]='2';break;case3:a[i]='3';break;
- 前端开发命名规范
十月不到底
javascript前端
前言优秀的代码往往是最通俗易懂的代码,在于它的易于维护。在开发过程中,变量/方法优秀的命名往往有助于理解该变量/方法的用途,起到命名即注释的作用。而糟糕的命名往往会让人摸不着头脑。为了提高代码的可维护性,我们需要更优雅的命名方式。一.常见命名种类目前收集到的常见的命名方式主要有以下4种:驼峰命名法(camelCase)首字母小写,从第二个单词开始首字母大写,例如:myProjectFolder帕斯
- Oracle转Mysql建表脚本
Dragon online
笔记oraclemysqlandroid
–Oracle转mysql建表脚本SELECTt.column_id,‘edi_’||t.table_nameAStable_name,CASEWHENt1.table_nameISNOTNULLTHENREPLACE(t.ddl_sql,',',');')ELSEt.ddl_sqlENDASddl_sqlFROM(–拼接建表语句SELECTcolumn_id,table_name,lower(C
- jdk tomcat 环境变量配置
Array_06
javajdktomcat
Win7 下如何配置java环境变量
1。准备jdk包,win7系统,tomcat安装包(均上网下载即可)
2。进行对jdk的安装,尽量为默认路径(但要记住啊!!以防以后配置用。。。)
3。分别配置高级环境变量。
电脑-->右击属性-->高级环境变量-->环境变量。
分别配置 :
path
&nbs
- Spring调SDK包报java.lang.NoSuchFieldError错误
bijian1013
javaspring
在工作中调另一个系统的SDK包,出现如下java.lang.NoSuchFieldError错误。
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.l
- LeetCode[位运算] - #136 数组中的单一数
Cwind
java题解位运算LeetCodeAlgorithm
原题链接:#136 Single Number
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进
- qq登陆界面开发
15700786134
qq
今天我们来开发一个qq登陆界面,首先写一个界面程序,一个界面首先是一个Frame对象,即是一个窗体。然后在这个窗体上放置其他组件。代码如下:
public class First { public void initul(){ jf=ne
- Linux的程序包管理器RPM
被触发
linux
在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装。这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程。为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的
- socket通信遇到EOFException
肆无忌惮_
EOFException
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:
- 基于spring的web项目定时操作
知了ing
javaWeb
废话不多说,直接上代码,很简单 配置一下项目启动就行
1,web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="h
- 树形结构的数据库表Schema设计
矮蛋蛋
schema
原文地址:
http://blog.csdn.net/MONKEY_D_MENG/article/details/6647488
程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,
- maven将jar包和源码一起打包到本地仓库
alleni123
maven
http://stackoverflow.com/questions/4031987/how-to-upload-sources-to-local-maven-repository
<project>
...
<build>
<plugins>
<plugin>
<groupI
- java IO操作 与 File 获取文件或文件夹的大小,可读,等属性!!!
百合不是茶
类 File
File是指文件和目录路径名的抽象表示形式。
1,何为文件:
标准文件(txt doc mp3...)
目录文件(文件夹)
虚拟内存文件
2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都
- Spring注入有继承关系的类(2)
bijian1013
javaspring
被注入类的父类有相应的属性,Spring可以直接注入相应的属性,如下所例:1.AClass类
package com.bijian.spring.test4;
public class AClass {
private String a;
private String b;
public String getA() {
retu
- 30岁转型期你能否成为成功人士
bijian1013
成长励志
很多人由于年轻时走了弯路,到了30岁一事无成,这样的例子大有人在。但同样也有一些人,整个职业生涯都发展得很优秀,到了30岁已经成为职场的精英阶层。由于做猎头的原因,我们接触很多30岁左右的经理人,发现他们在职业发展道路上往往有很多致命的问题。在30岁之前,他们的职业生涯表现很优秀,但从30岁到40岁这一段,很多人
- 【Velocity四】Velocity与Java互操作
bit1129
velocity
Velocity出现的目的用于简化基于MVC的web应用开发,用于替代JSP标签技术,那么Velocity如何访问Java代码.本篇继续以Velocity三http://bit1129.iteye.com/blog/2106142中的例子为基础,
POJO
package com.tom.servlets;
public
- 【Hive十一】Hive数据倾斜优化
bit1129
hive
什么是Hive数据倾斜问题
操作:join,group by,count distinct
现象:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;查看未完成的子任务,可以看到本地读写数据量积累非常大,通常超过10GB可以认定为发生数据倾斜。
原因:key分布不均匀
倾斜度衡量:平均记录数超过50w且
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua csrf
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-3.求子数组的最大和
bylijinnan
java
package beautyOfCoding;
public class MaxSubArraySum {
/**
* 3.求子数组的最大和
题目描述:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4,
- Netty源码学习-FileRegion
bylijinnan
javanetty
今天看org.jboss.netty.example.http.file.HttpStaticFileServerHandler.java
可以直接往channel里面写入一个FileRegion对象,而不需要相应的encoder:
//pipeline(没有诸如“FileRegionEncoder”的handler):
public ChannelPipeline ge
- 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题
cngolon
跨浏览器复制到粘贴板Zero Clipboard
Zero Clipboard的实现原理
Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。
Zero Clipboard的安装方法
首先需要下载 Zero Clipboard的压缩包,解压后把文件夹中两个文件:ZeroClipboard.js
- 单例模式
cuishikuan
单例模式
第一种(懒汉,线程不安全):
public class Singleton { 2 private static Singleton instance; 3 pri
- spring+websocket的使用
dalan_123
一、spring配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or
- 细节问题:ZEROFILL的用法范围。
dcj3sjt126com
mysql
1、zerofill把月份中的一位数字比如1,2,3等加前导0
mysql> CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, -> day
- Android开发10——Activity的跳转与传值
dcj3sjt126com
Android开发
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。
一、Activity跳转
方法一Intent intent = new Intent(A.this, B.class); startActivity(intent)
方法二Intent intent = new Intent();intent.setCla
- jdbc 得到表结构、主键
eksliang
jdbc 得到表结构、主键
转自博客:http://blog.csdn.net/ocean1010/article/details/7266042
假设有个con DatabaseMetaData dbmd = con.getMetaData(); rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null); rs.getSt
- Android 应用程序开关GPS
gqdy365
android
要在应用程序中操作GPS开关需要权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
但在配置文件中添加此权限之后会报错,无法再eclipse里面正常编译,怎么办?
1、方法一:将项目放到Android源码中编译;
2、方法二:网上有人说cl
- Windows上调试MapReduce
zhiquanliu
mapreduce
1.下载hadoop2x-eclipse-plugin https://github.com/winghc/hadoop2x-eclipse-plugin.git 把 hadoop2.6.0-eclipse-plugin.jar 放到eclipse plugin 目录中。 2.下载 hadoop2.6_x64_.zip http://dl.iteye.com/topics/download/d2b
- 如何看待一些知名博客推广软文的行为?
justjavac
博客
本文来自我在知乎上的一个回答:http://www.zhihu.com/question/23431810/answer/24588621
互联网上的两种典型心态:
当初求种像条狗,如今撸完嫌人丑
当初搜贴像条犬,如今读完嫌人软
你为啥感觉不舒服呢?
难道非得要作者把自己的劳动成果免费给你用,你才舒服?
就如同 Google 关闭了 Gooled Reader,那是
- sql优化总结
macroli
sql
为了是自己对sql优化有更好的原则性,在这里做一下总结,个人原则如有不对请多多指教。谢谢!
要知道一个简单的sql语句执行效率,就要有查看方式,一遍更好的进行优化。
一、简单的统计语句执行时间
declare @d datetime ---定义一个datetime的变量set @d=getdate() ---获取查询语句开始前的时间select user_id
- Linux Oracle中常遇到的一些问题及命令总结
超声波
oraclelinux
1.linux更改主机名
(1)#hostname oracledb 临时修改主机名
(2) vi /etc/sysconfig/network 修改hostname
(3) vi /etc/hosts 修改IP对应的主机名
2.linux重启oracle实例及监听的各种方法
(注意操作的顺序应该是先监听,后数据库实例)
&nbs
- hive函数大全及使用示例
superlxw1234
hadoophive函数
具体说明及示例参 见附件文档。
文档目录:
目录
一、关系运算: 4
1. 等值比较: = 4
2. 不等值比较: <> 4
3. 小于比较: < 4
4. 小于等于比较: <= 4
5. 大于比较: > 5
6. 大于等于比较: >= 5
7. 空值判断: IS NULL 5
- Spring 4.2新特性-使用@Order调整配置类加载顺序
wiselyman
spring 4
4.1 @Order
Spring 4.2 利用@Order控制配置类的加载顺序
4.2 演示
两个演示bean
package com.wisely.spring4_2.order;
public class Demo1Service {
}
package com.wisely.spring4_2.order;
public class