- Visual Studio 编译错误 LNK2038:MTD 和 MDD 的区别及解决方法
A小庞
C++知识个人visualstudiowindowside
在使用VisualStudio进行C++项目开发时,我们经常会遇到一些编译错误。其中,LNK2038错误是一个比较常见的链接器错误,通常与运行时库(RuntimeLibrary)的配置不匹配有关。本文将详细介绍MTD和MDD的区别,以及如何解决因运行时库配置不匹配导致的编译错误。一、错误示例以下是一个典型的LNK2038错误示例:从错误信息中可以看出,链接器检测到了运行时库的不匹配项,具体表现为M
- Python_计算两个省市之间的直线距离_2506
夏天里的肥宅水
PYTHONpythonspring开发语言
更新代码上一版链接importpandasaspdimporttimeimportpickleimportosimportsysfromgeopy.geocodersimportNominatimfromgeopy.distanceimportgeodesicfromtqdmimporttqdm#ConfigurationINPUT_FILE=r"距离.xlsx"#输入文件路径OUTPUT_FIL
- Cline中配置MCP
Alexon Xu
MCP
1、自动安装MCP默认AI生成的配置会报错:spawnnpxENOENTspawnnpxENOENT,然后排查了npx安装都是OK的,需要使用cmd运行npx,配置如下:{"mcpServers":{"sequentialthinking":{"autoApprove":[],"disabled":false,"timeout":60,"command":"cmd.exe","args":["/c
- Unity脚本--01-脚本书写规则-脚本生命周期-脚本调试-常用API
秦果
开发语言
一、脚本书写规则脚本:.cs的文本文件类文件作用:附加到游戏物体中,定义游戏对象行为指令的代码与C#类的区别:脚本只有字段和方法,没有自动属性和构造函数publicintA{get{returna;}set{a=value;}}属性定义了在unity中不会显示publicLifecycle(){Debug.Log("构造函数")//b=Time.time;}不要在脚本中写构造函数,因为不能在子线程
- PillarNet: Real-Time and High-PerformancePillar-based 3D Object Detection
justtoomuchforyou
目标检测人工智能计算机视觉智驾
ECCV2022paper:[2205.07403]PillarNet:Real-TimeandHigh-PerformancePillar-based3DObjectDetectioncode:https://github.com/VISION-SJTU/PillarNet-LTS纯点云基于pillar3D检测模型网络比较SECOND基于voxel,one-stage,基于sparse3Dc
- 【RAG面试题】LLMs已经具备了较强能力,存在哪些不足点?
一叶千舟
AI面试题【RAG】RAG
目录LLMs核心不足点1、知识过时与静态性(LackofReal-Time&DynamicKnowledge):2、幻觉与事实性错误(Hallucinations&FactualInaccuracies):3、领域专业知识深度不足(LimitedDomain-SpecificExpertise):4、缺乏透明度和可追溯性(LackofTransparency&Traceability):5、上下文
- .NET C# async/定时任务的异步线程池调度方案最大线程数 = 处理器核心数 × 250
专注VB编程开发20年
.netc#开发语言
关于.NET中Threading.Timer的线程机制,结合线程池特性和异步协作原理分析如下:一、线程复用机制共享进程级线程池Threading.Timer的回调任务不会每次新建线程,而是提交到.NET进程全局线程池统一调度,该线程池与async/await任务共享同一资源池。线程池维护可复用工作线程队列,避免频繁创建/销毁开销任务优先由空闲线程执行,无空闲线程则进入全局队列等待线程池扩
- 潜入思维的海洋:SoftCoT++如何让语言模型更聪明
步子哥
智能涌现语言模型人工智能自然语言处理
在人工智能的浩瀚星空下,大型语言模型(LLMs)如同一颗颗璀璨的恒星,照亮了从文本生成到复杂推理的广阔领域。然而,这些模型在推理任务中往往像是在迷雾中航行——尽管它们能抵达目的地,却常常因为固定的思维路径而错过更优的航线。2025年5月,一篇题为《SoftCoT++:Test-TimeScalingwithSoftChain-of-ThoughtReasoning》的论文如同一盏明灯,照亮了如何让
- 技术调研:时序数据库(一)
myskybeyond
时序数据库时序数据库数据库
选择时序数据库时,选择当下主流的解决方案。目前主流的开源解决方案有InfluxDB、TDengine和TimescaleDB。下文从多个维度对比分析,最终根据需求做出选型决策。1.核心架构与设计理念数据库架构特点核心优势InfluxDB-专为时序数据设计的分布式数据库-基于时间线(TimeSeries)模型-开源版(OSS)与商业版(Cloud/Enterprise)功能差异大高写入吞吐量、原生支
- uiautomation控制计算器,不动鼠标(界面控制)
alooffox
python用户界面
importosimportuiautomationasautoimportsubprocessimporttimeclassuiautoCalc():"""uiautomation控制计算器(完全后台操作方案)"""def__init__(self):auto.uiautomation.DEBUG_SEARCH_TIME=Trueauto.uiautomation.SetGlobalSearch
- TDengine 技术参数配置大全
TDengine (老段)
TDengine产品设计tdengine涛思数据大数据数据库物联网时序数据库
1.背景TDengine的taos.cfg中配置项及使用SQL命令alter修改的系统变量之间的关系如何,哪些是持久存储项,哪些设置是临时项,这章将详细说明。本文是技术参考资料,请收藏。2.定义1.全局配置参数全局配置参数:作用于集群内所有dnode且在集群内必须保持一致的变量,也称为全局变量、系统变量或全局参数。例如:timezone/charset/countAlwaysReturnValue
- 【Pandas】pandas DataFrame resample
liuweidong0802
DataFramepandas
Pandas2.2DataFrameTimeSeries-related方法描述DataFrame.asfreq(freq[,method,how,…])用于**将时间序列数据转换为指定频率(resampletofrequency)**的方法DataFrame.asof(where[,subset])用于查找时间序列中最接近指定时间点的非NaN值的方法DataFrame.shift([period
- 【Pandas】pandas Series tz_convert
liuweidong0802
PandasSeriespandas
Pandas2.2SeriesTimeSeries-related方法描述Series.asfreq(freq[,method,how,…])用于将时间序列数据转换为指定的频率Series.asof(where[,subset])用于返回时间序列中指定索引位置的最近一个非缺失值Series.shift([periods,freq,axis,…])用于将时间序列数据沿指定轴移动指定的周期数Serie
- 微信小程序封装loading 修改
-嘻嘻哈哈~
微信小程序小程序
1.custom-loading.vue{{text}}{{dots}}exportdefault{props:{visible:Boolean,text:{type:String,default:'加载中'}},data(){return{dots:'',timer:null}},mounted(){this.startAnimation()},beforeDestroy(){clearInte
- vue el-date-picker 直接赋值时控件失效
梓暮
ITvue.js前端elementui
项目场景:前端vueel-date-picker控件无故失效问题描述本人是主打后端,新进的公司要求前后端全干,然后又因为前端做得少,所以经常碰到一些奇怪的问题,比如以下操作,是给vue前端el-date-picker这个时间控件赋值,但是发现,数据是赋值上去了,但是控件失效了,怎么点都没用if(resData.batchEntity.manage_scene_start_time!=null&&r
- el-date-picker时间段赋值
给时间赋值:this.ruleForm.rdDate=[this.timestampToTime(res.data.startTime),this.timestampToTime(res.data.endTime)]
- 【ElementUI】日期选择器时间选择范围限制
前端Joy姐
elementUI
ElementUI是饿了么推出的一套基于vue2.x的一个ui框架。官方文档也很详细,这里做一个element-ui日期插件的补充。官方文档中使用picker-options属性来限制可选择的日期,这里举例子稍做补充。单个输入框的组件代码:情景1:设置选择今天以及今天之后的日期data(){return{pickerOptions0:{disabledDate(time){returntime.g
- element周选择器---设置展示周和日期
GLINLIND
vueelementjavascript前端vue.jshtml5
element周选择器:粘贴可用实现效果:—代码:npminstalldayjs--savemain.jsimportdayjsfrom"dayjs";Vue.prototype.dayjs=dayjs;页面data(){return{value2:"",week:"",//周startTimeStamp:
- 嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
嘉为蓝鲸
可观测嘉为蓝鲸智能运维Gartner可观测
直达原文:嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》2025年5月,国际研究机构Gartner发布了《中国智能IT监控与日志分析工具市场指南》(MarketGuideforIntelligentITMonitoringandLogAnalysisToolsinChina),嘉为蓝鲸全栈智能可观测中心·鲸眼凭借嘉为蓝鲸日志中心与嘉为蓝鲸应用性能观测中心(APM
- 前端編譯 : Babel 基礎入門
林cc
前端babel前端
前端編譯:Babel基礎入門前言正文什麼是Babel?Babel模塊介紹babel-cli從項目中運行BabelCLIbabel-registerbabel-nodebabel-core配置Babel.babelrcbabel-preset-es2015babel-preset-react執行Babel生成的代碼babel-polyfillbabel-runtimepresetsvsplugins
- 使用java语言,计算202503291434距离当前时间,是否大于三天
在下,杨江河
JAVA开发中遇到的问题javapython开发语言
要判断时间戳202503291434(格式为yyyyMMddHHmm)是否距离当前时间超过三天(72小时),可以使用Java的java.timeAPI精确计算时间差。以下是完整解决方案:实现步骤解析时间戳将字符串解析为LocalDateTime对象:DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyyMMddHHmm");Loca
- Python的多线程
Simple十年一剑
Pythonpython多线程
#coding=utf-8#包含threading模块importthreadingfromtimeimportctime,sleepdefmusic(func):foriinrange(2):print"Iwaslisteningto%s.%s"%(func,ctime())sleep(1)defmove(func):foriinrange(2):print"Iwasatthe%s!%s"%(f
- 小公司的实习值得去吗,学到东西的概率大吗?
cpp辅导的阿甘
c++
THELASTTIME初创公司值不值得去,能不能学到东西。其实可以首先对什么样的实习公司,什么样的公司实习排序。然后值不值得,在针对目前自身一个情况进行分析。实习公司分析实习最主要加分的公司无非就是那些大厂、知名厂、以及一些行业的龙头企业。毕竟大家毕业也都是想去这些公司嘛,知名公司可以拿的出手,并且薪资也高。如果这个求职的时候,大家有过一段同等级的公司的实习,面试官会认为你已经被同级水平的公司筛选
- Elasticsearch 根据字段值去重前的个数过滤数据(qbit)
前言本文对Elasticsearch7.17适用假定有个ip类型的字段client_ip,需要根据字段值的个数过滤数据在query中使用script只能通过doc['client_ip']获取到去重后的个数研究发现使用runtime_mappings可以动态新建字段获取到不去重的个数示例创建索引PUTmy_index{"mappings":{"dynamic":false,"properties"
- onnx-web + yolov8n 在视频流里做推理
CHEN_RUI_2200
人工智能YOLO
顺着我上一篇文章使用onnxruntime-web运行yolov8-nano推理继续说,有朋友在问能不能接入视频流动,实时去识别物品。首先使用getUserMedia获取摄像头视频流getUserMediaAPI可以访问设备的摄像头和麦克风。你可以使用这个API获取视频流,并将其显示在页面上的标签中。注意事项:浏览器支持:getUserMedia被现代浏览器大多数支持,但在一些旧版浏览器上可能不兼
- 刚入门3DGS的新手小白能够做的工作
一碗姜汤
计算机视觉3d计算机视觉
作为刚入门3DGaussianSplatting(3DGS)的新手,你可以从以下几个方向入手,逐步掌握核心概念并参与实践:1.基础学习与工具熟悉(1)理解核心概念必读资料原论文:3DGaussianSplattingforReal-TimeRadianceFieldRendering(Kerbletal.,SIGGRAPH2023)。通俗解读:博客或视频教程(如YouTube解析)。关键点:高斯球
- ruoyi-实现表格按照属性排序
javachen__
vue.jsjavascriptelementuiruoyi
......{{parseTime(scope.row.loginTime)}}/**排序触发事件*/handleSortChange(column,prop,order){this.queryParams.orderByColumn=column.prop;this.queryParams.isAsc=column.order;this.getList();},
- PYTHON从入门到实践4-数据类型
定制开发才有价值
python前端服务器
"""【1】字符串【2】f""字符串的使用【3】数,math函数的使用【4】注释#【5】PYTHON的数据类型"""importmathwho="张三"where="合肥"time="2025年6月26日"message=f"{who}在{time}时间点去了{where}游玩!"print(message)#python代替计算器res=math.log2(8)print(res)print(5
- 国产信创电脑如何查看IP地址、网关、DNS等信息
yeliuxiaozi
tcp/ip服务器网络协议
我的是清华同方TF830,可以直接使用命令查看!右击桌面,打开终端,键入命令nmclidevshow文章来自:https://techzhi.com/7.htmsxszf@sxszf-CX-TF830-Series:~/桌面$nmclidevshowGENERAL.设备:enp125s0f1GENERAL.类型:ethernetGENERAL.硬盘:F4:DE:AF:AD:8B:BEGENERAL
- Python爬虫实战:研究TextBlob相关技术
ylfhpy
爬虫项目实战python爬虫开发语言htmlTextBlob
1.引言1.1研究背景与意义随着互联网技术的飞速发展,社交媒体已成为人们获取信息和表达观点的重要平台。每天在社交媒体上产生的海量文本数据蕴含着丰富的情感信息和社会舆情,分析这些文本情感倾向,有助于企业了解消费者对产品和服务的评价,政府部门监测社会舆论动态,研究机构探索公众对热点事件的态度。情感分析(SentimentAnalysis)作为自然语言处理的重要分支,旨在通过计算方法识别和提取文本中的主
- 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