- MFC单文档下读取BMP图片显示
勿忘初心91
vs2008机器视觉自动化visualstudio2008bmp
1.建立单文档MFC程序(我用的是VS2008),加入菜单命令,ImageSourse_ImageFromFile2.定义相关变量:CStringImagePath;HBITMAPhBitmap;CBitmapm_Bitmap;BITMAPBitmap;intImageWidth,ImageHeight;CDCMemDC;3.在菜单命令下编辑代码:DeleteObject(&m_Bitmap);M
- 获取PPT中的MSO格式图片报错
♢.*
pptpython
亲爱的小伙伴们,在求知的漫漫旅途中,若你对深度学习的奥秘、Java与Python的奇妙世界,亦或是读研论文的撰写攻略有所探寻,那不妨给我一个小小的关注吧。我会精心筹备,在未来的日子里不定期地为大家呈上这些领域的知识宝藏与实用经验分享。每一个点赞,都如同春日里的一缕阳光,给予我满满的动力与温暖,让我们在学习成长的道路上相伴而行,共同进步✨。期待你的关注与点赞哟!image.ext的报错ValueEr
- 微信小程序上传图片使用compressImage压缩
前端搬砖达人
微信小程序小程序
在上传图片时,如果太大体积得图片,往往会上传很慢,而且还加大服务器的压力,所以在性能考虑方面来说,可以处理上传图片时先压缩再传给后端目前原生小程序开发有两种方式进行压缩(原生方法,不排除有第三方接入,但是我目前没找到第三方插件,有找到的大佬们分享一下)这篇先写官方api压缩compressImage压缩这个是官方api压缩方法,但是偶现兼容问题,仅对jpg图片有效1、选择图片使用wx.choose
- 微信小程序压缩图片到200kb,递归设置压缩质量
八分钟de温暖
微信小程序小程序
一、背景我们有个人脸识别门闸的功能,小程序上上传人脸照片,然后门闸识别人脸开门。图片大小要在在200kb,但是也不能压缩的太小,因为大小有可能识别不到或者要走很近才能识别。所以选择递归的方式实现图片的压缩。二、代码实现toTakePhoto(){wx.chooseMedia({count:1,mediaType:['image'],sourceType:['album','camera'],siz
- 微信小程序开发 图片压缩功能
四时之雨
微信小程序小程序
在微信小程序的开发过程中,为了防止用户在上传图片时出现过大文件的情况,造成后台的加载负担,我们通常会在前台加上大小的限制或在上传时就对图片进行压缩微信小程序官方为我们提供了一个API:wx.compressImage,但仔细查看后我们发现,这个API在iOS端仅支持压缩JPG格式的图片,显然不太符合我们的需求。经过一番查阅后,决定采用canvas绘图的方式来对图片重新进行绘制,从而达到压缩的效果。
- 微信小程序 压缩 图片失真
昊喵喵博士
微信
解决方法为image设置lazy-load懒加载和mode缩放模式
- 微信小程序压缩图片及上传至云存储
视图猿人
小程序canvas小程序
微信小程序压缩图片及上传至云存储目的:将选择的任意图片压缩,给定压缩后的图片高度宽度最大值并保证同比例压缩,最后上传至微信云存储。思路:1使用wx.compressImage函数此函数只对jpg图片有效,其他图片格式不行;2使用canvas组件,先将图片绘制到canvas中:调用canvas.dragImage和canvas.draw函数,然后利用wx.canvasToTempFilePath将c
- 垃圾回收机制
Louis yeap
算法pythongo
系列文章目录文章目录目录系列文章目录文章目录前言一、垃圾回收算法二、golang垃圾回收算法三、python垃圾回收算法前言垃圾回收(GarbageCollection,GC)是一种自动管理内存的技术,用于动态分配内存的编程语言中。当程序运行时,会创建大量的对象和变量,这些对象占用内存。在程序的某些阶段,一些对象不再被需要,或者不再被引用,这些对象占用的内存就可以被释放,以便其他对象使用。垃圾回收
- 【Python百日进阶-数据分析】Day160 - plotly的IO操作
岳涛@泰山医院
Dashpython数据分析plotly
文章目录一、plotly.io.to_image1.1语法1.2参数1.3返回值二、plotly.io.write_image2.1语法2.2参数2.3返回值三、plotly.io.to_json3.1语法3.2参数3.3返回值四、plotly.io.from_json4.1语法4.2参数4.3返回值五、plotly.io.read_json5.1语法5.2参数5.3返回值六、plotly.io.
- 报错——使用cxf时报错:org.apache.cxf.interceptor.Fault: Marshalling Error: XXX is not known to this context
JAVA小摩托不堵车
报错javawebservice接口
文章目录1、场景:2、报错内容:3、解决1、场景:使用定时任务定时调用多个webservice接口,应用cxf框架。2、报错内容:org.apache.cxf.interceptor.Fault:MarshallingError:com.admin.bag.webservice.server.Messageisnotknowntothiscontextatorg.apache.cxf.jaxb.J
- using-aws-s3-buckets-cloudfront-distribution-with-craft-cms
青年夏日科技工作者
aws云计算java
UsingacloudstoragesystemlikeAWSS3withaCDNdistributioncanbeaconvenientandinexpensivewaytostoreyourassets.Here’showtosetitupright.Assetslikeimages,PDFs,andotherfilesareoftenanimportantpartofthe“content”
- Android开发规范,性能优化,kotlin单例类
m0_66264134
程序员架构移动开发android
LayoutView:lvRelativeView:rvTextView:tvImageView:ivImageButton:imButton:btn5.activity中的view变量命名命名模式为:逻辑名称+view缩写建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view6.strings.xml中的id
- docker 19.03构建跨平台的镜像包并推送到私有仓库
水上冰石
树莓派云原生-运维架构docker容器linux
默认的docker构建image镜像是不能跨平台的,如果需要构建跨平台的镜像,需要docker的版本在19.03版本以上,并开启buildx。以下为具体的步骤版本:docker19.03。一.安装/开启buildx1.1.手动开启dockerx开关docker19.3暂默认不开启dockerx,需要手动开启vim/etc/profilesexportDOCKER_CLI_EXPERIMENTAL=
- Vue3在img标签中绑定数据模型中的url图片无法显示问题
fengfeng N
前端javascript开发语言
背景介绍constteachers=[{name:'马云JackMa',company:'阿里巴巴alibaba.com',description:'马云,男,汉族,中共党员,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市谷来镇。',imageUrl:'@/assets/teacher/1.jpg'},{name:'马化腾Pony',company:'腾讯tencent.com',desc
- nedi新型的基于边缘指导的图像插值算法matlab代码,New-edge-directed-interpolationNEDI 新边缘导向算法, 的原理介绍以及实现, 在去马赛克方面的应用 Grap...
weixin_39640265
详细说明:新边缘导向算法,算法的原理介绍以及实现,以及在去马赛克方面的应用-Thispaperproposesanedge-directedinterpolationalgorithmfornaturalimages.Thebasicideaistofirstestimatelocalcovariancecoefficientsalow-resolutionimageandthenusethese
- GEE 训练教程——哨兵2号、Landsat-8以及DEM影像的可视化展示
此星光明
GEE教程训练人工智能geejavascriptLandsatsentineldem可视化
目录简介1.哨兵2号(Sentinel-2)2.Landsat-83.CGIAR/SRTM90_V4函数visualize(bands,gain,bias,min,max,gamma,opacity,palette,forceRgbOutput)Arguments:Returns:Imageexpression(expression,map)Arguments:Returns:Imageee.Te
- python3调用arcpy地理加权回归_混合地理加权回归python实现代码
weixin_39942995
【实例简介】通过python编码实现MGWR、MGWTR模型的求解。能够解决空间非平稳性问题。【实例截图】【核心代码】mgwr-py└──mgwr-master├──CHANGELOG.md├──LICENSE├──MANIFEST.in├──README.md├──doc│├──Makefile│├──_static││├──images│││├──gwr-mgwr.png│││└──pysal
- 数据挖掘常用算法模型简介
大乔乔布斯
数据挖掘线性回归决策树
以下是数据挖掘中常用的算法模型及其简称、英文全称和使用场景的简要介绍:1.决策树(DecisionTree,DT)常用算法:CART:ClassificationandRegressionTreeID3:IterativeDichotomiser3C4.5:基于ID3改进使用场景:分类问题(如信用风险评估、客户分类)回归问题(如预测房价)特点:易解释、适合处理非线性数据。2.随机森林(Random
- python弹窗(tkinter库):在弹窗中放置图片的两种方法
独白不白
python开发语言
我了解到的方法有两种,但无一例外,重点都是将图片转化成PhotoImage的形式,然后才能在弹窗中显示。相当于PhotoImage是tkinter库导出图片的专属格式。方法1基础写法:首先把gif格式的图片转化成PhotoImage形式,再利用Label导出。importtkinterastkroot=tk.Tk()a=tk.Frame(root)a.pack()b=tk.PhotoImage(f
- 深度转点云 点云着色
AI算法网奇
3d渲染3D视觉opencvpython人工智能
目录depthanything生成深度图,转点云着色点云转深度图depthanything生成深度图,转点云着色importnumpyasnpimportcv2importopen3daso3ddefdepth_to_point_cloud(depth_image,rgb_image,camera_intrinsics,camera_extrinsics=np.eye(4),scale=1.0):
- Jquery.Uploadify 图片上传使用
寒冰碧海
Controller@Value("${file.path}")privateStringfilePath;@RequestMapping(value="/uploadImage")@ResponseBodypublicStringuploadImage(MultipartFileimg){StringfileName=UploadUtil.upload(img,filePath);returnf
- 从规则到神经网络:机器翻译技术的演进与未来展望
Echo_Wish
前沿技术人工智能神经网络机器翻译人工智能
从规则到神经网络:机器翻译技术的演进与未来展望引言还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(NeuralMachineTranslation,NMT)能够生成语义流畅、接近人类水平的翻译,我们见证了机器翻译技术的巨大飞跃。但机器翻译技术是如何一步步发展到今天的?未来又将走向何方?本文将
- awtk开发实践——学习篇28: image_animation(图片动画控件)
惺忪牛犊子
#awtkc语言嵌入式
说明: 本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。 QQ群号:513683159【相互学习】内容来源: 官方的手册(免费获取)Pxx=该手册的对应页码xx github-awtk控件说明 关于image_animation_t控件(图片动画控件)介绍,对应书P164。(书中还有更详细内容
- 医学顶会 MICCAI‘24 | LKM-UNet: 大型内核视觉 Mamba UNet 用于医学图像分割
小白学视觉
医学图像处理论文解读MICCAI深度学习医学图像顶会医学图像处理论文解读
本文内容只为星球内部成员学习和学术交流,请勿用作他用本文内容只为星球内部成员学习和学术交流,请勿用作他用论文信息题目:LKM-UNet:LargeKernelVisionMambaUNetforMedicalImageSegmentationLKM-UNet:大型内核视觉MambaUNet用于医学图像分割作者:JinhongWang,JintaiChen,DannyChen,JianWu源码链接:
- JavaCV拉取本地摄像头推送到RTMP
翻晒时光
视频直播JavaCV转码
话不多说,直接上源码packagecom.javacvstudy.javacvstudy;importjavax.swing.JFrame;importorg.bytedeco.javacpp.Loader;importorg.bytedeco.javacpp.avcodec;importorg.bytedeco.javacpp.opencv_core.IplImage;importorg.byt
- 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
- 40条linux命令值得你熟悉/40 Useful Linux Commands for Everyone
江南老画船
linux工具使用linux服务器运维
40UsefulLinuxCommandsforEveryone⇩1.cd.⬘Itstandsfor“changedirectory”.⬙Itchangestheworkingdirectorytothespecifiedone.❯cdimagesSwitchtothe“images”directory❯cd…Switchtothepreviousdirectory❯cdSwitchtothepa
- 使用onnxruntime-web 运行yolov8-nano推理
CHEN_RUI_2200
机器学习YOLO
ONNX(OpenNeuralNetworkExchange)模型具有以下两个特点促成了我们可以使用onnxruntime-web直接在web端上运行推理模型,为了让这个推理更直观,我选择了试验下yolov8识别预览图片:1.跨平台兼容性ONNX是一种开放的格式,可以在不同的深度学习框架之间共享模型,如PyTorch、TensorFlow、MXNet和Caffe2。这使得用户可以在一个框架中训练模
- 启动了容器 但是 docker ps 不显示任何容器信息
杨过姑父
dockerlinux运维
1.镜像存再[root@localhost~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEhello-worldlatest9c7a54a9a43c6monthsago13.3kB2.启动显示成功[root@localhost~]#dockerrunhello-worldHellofromDocker!Thismessageshowsthatyourin
- 渗透测试 - webshell jsp一句话大马 && 蚁剑连接
浩浩测试一下
OWASPTop漏洞web渗透java开发语言网络安全安全系统安全web安全
目录大木马webshell大马连接大木马<%@pageimport="javax.imageio.*"%&g
- 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