- Android 音视频编解码 -- MediaCodec
消失的旧时光-1943
音视频android视频编解码
引言如果我们只是简单玩一下音频、视频播放,那么使用MediaPlayer+SurfaceView播放就可以了,但如果想加个水印,加点其他特效什么的,那就不行了;学习Android自带的硬件码类–MediaCodec。MediaCodec介绍MediaCodec是从API16后引入的处理音视频编解码的类,它可以直接访问Android底层的多媒体编解码器,通常与MediaExtractor,Media
- Android SurfaceTexture和GLSurfaceView做Camera预览
小小攻城师
AndroidSurfaceTextureGLSurfaceViewSurfaceTextureopenGopenGL
GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力、痛不欲生时就只有使用GLSurfaceView了,它能够真正做到让Camera的数据和显示分离,所以搞明白了这个,像Camera只开预览不显示这都是小菜,妥妥的。Android4.0的自带Camera源码是用SurfaceView
- 4-2.Android Camera 之预览图像编码模板(SurfaceView)
我命由我12345
Android-简化编程androidjavajava-eeandroid-studioandroidstudio视频
一、CameraCamera用于捕获图像和视频在Android开发的早期阶段,Android提供android.hardware.CameraAPI,开发者用它来访问和控制设备的摄像头硬件然而,随着Android系统的发展,从Android5.0(API级别21)开始,Android引入了一个新的Camera2API,以提供更强大和灵活的控制功能二、Camera预览图像1、UtilMyCamera
- Android Camera系列(三):GLSurfaceView+Camera
如果可以003
AndroidCameraandroidCameraGLSurfaceView
人类的悲欢并不相通—鲁迅AndroidCamera系列(一):SurfaceView+CameraAndroidCamera系列(二):TextureView+CameraAndroidCamera系列(三):GLSurfaceView+Camera本系列主要讲述Android开发中Camera的相关操作、预览方式、视频录制等,项目结构代码耦合性低,旨在帮助大家能从中有所收获(方便copy:)),
- Android 音视频三种方式绘制图片
Android小码
在Android平台绘制一张图片,使用至少3种不同的API,ImageView,SurfaceView,自定义View。1.ImageView绘制图片这个想必做过Android开发的都知道如何去绘制了。很简单:Bitmapbitmap=BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath()+File.
- Android使用OpenGL渲染ffmpeg解码的YUV视频数据
FlyerGo
在《安卓使用SurfaceView绘制ffmpeg解码的视频数据》虽然我们成功地实现了视频的渲染,但是在YUV转换成RGB的时候,我们调用了ffmpeg内部的转换函数,这里面包含大量的计算转换,所以是很耗费CPU性能的。今天我们来学习一下如何将YUV转换RGB的功能转换到GPU中去执行,减少CPU的计算工作量,达到性能优化的目的。解决方案是使用OpenGL渲染,将YUV转换RGB的功能交由着色器去
- Android MediaCodec 简明教程(四):使用 MediaCodec 将视频解码到 Surface,并使用 SurfaceView 播放视频
芥末的无奈
android音视频
系列文章目录AndroidMediaCodec简明教程(一):使用MediaCodecList查询Codec信息,并创建MediaCodec编解码器AndroidMediaCodec简明教程(二):使用MediaCodecInfo.CodecCapabilities查询Codec支持的宽高,颜色空间等能力AndroidMediaCodec简明教程(三):详解如何在同步与异步模式下,使用MediaC
- android camera系列(Camera1、Camera2、CameraX)的使用以及输出的图像格式
余生爱静
Android基础jnicameracamera2libyuv
一、Camera1.1、结合SurfaceView实现预览1.1.1、布局1.1.2、实现预览mBinding.preview.getHolder().addCallback(newSurfaceHolder.Callback2(){@OverridepublicvoidsurfaceRedrawNeeded(@NonNullSurfaceHolderholder){mCamera=Camera.
- android 自定义相机,Android自定义相机Camera基础
奔跑的楠子
android自定义相机
创建自定义相机界面调用Camera来实现拍照功能。如左图:上方是一个CAPTURE按钮,下方是用来实时显示摄像头预览画面的SurfaceView,通过点击CAPTURE按钮进行拍照,并将拍摄的图片显示到一个新的活动界面,新的活动界面如右图:上方是一个TextView,下方是一个ImageView显示拍摄好的照片。拍摄界面的活动代码如下:CustomCamera.javapublicclassCus
- Android 自定义视频播放器
leverge2009
由于录像之后,原先选用的腾讯VOD点播播放器显示出来竖屏都变横屏了,虽然选中了现在的腾讯VOD点播,还是把Android视频播放器了解了一番。Android自定义视频播放器有以下三种:一、MediaPlayer与SurfaceView相结合//为SurfaceHolder添加回调mSurfaceView.getHolder().addCallback(callback);//4.0版本之下需要设置
- android最新相机打不开,相机出错
横戈
android最新相机打不开
照相机出错!自己做了一个简单的照相机预览的功能,插在程序中,运行出错,大概提示:Causedby:android.view.InflateException:BinaryXMLfileline#86:Errorinflatingclasssurfaceview还有:Causedby:java.lang.ClassNotFoundException:android.view.surfaceview和
- Android 自定义播放器旋转角度及手势调整声音亮度
田一一一
AndroidAndroid视频播放手势控制自定义旋转角度
最近项目中用到了自定义播放器,大概要求是这样的:控制台会自动消失点击屏幕又会自动弹出,视频角度需要旋转,手势控制亮度跟音量.一般在Android中,播放视频如果要求不高的话我都是用的videoView,这样最简单,但是如果项目对播放视频要求比较多一般推荐用自定义的,如:surfaceView+mediaPlayer,但是如果视频角度要旋转,这样suefaceView就行不通了,就得用texture
- android基础_音频播放API + 视频播放API +SurfaceView介绍
zengk562
VideoViewSurfaceView
播放音频的APIMediaPlayerMediaPlayer状态图解:播放本地音乐:publicvoidplay(Viewv){Stringpath=et_path.getText().toString();//1.判空操作,2,判断是否真的存在这个文件,有可能用户输入的是非法的文件路径try{//1,创建一个多媒体播放器mediaPlayer=newMediaPlayer();//2.设置播放资
- SurfaceView和TextureView理解相关
Eason风云
java开发语言
一、为什么要使用SurfaceView我们知道View是通过刷新来重绘视图,系统通过发出VSSYNC信号来进行屏幕的重绘,刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成,则没有任何问题,如果我们绘制过程逻辑很复杂,并且我们的界面更新还非常频繁,这时候就会造成界面的卡顿,影响用户体验,为此Android提供了SurfaceView来解决这一问题View和SurfaceView的区
- UVCAndroid,安卓UVC相机通用开发库(支持多预览和多摄像头)
kanseei
androidUVCuvcandroid安卓
文章目录简介主要功能如何使用1.添加依赖到本地工程2.获取权限3.初始化UVC业务类,设置UVC摄像头状态回调,设置TextureView或者SurfaceView的Surface监听回调4.释放UVC业务类(包含取消UVC摄像头状态回调,停止Camera预览,关闭Camera等操作)5.图片抓拍6.录制视频7.改变摄像机预览参数(包括帧格式、宽度、高度、FPS)8.调整对比度、亮度、色调、饱和度
- Android studio SurefaceView 视频播放器应用设计
colin工作室
androidandroidstudioandroidide
一、新建EmptyActivity项目:二、xml布局文件设计:添加SurfaceView控件三、MainActivity实现activity:MediaPlayer.OnBufferingUpdateListener,MediaPlayer.OnCompletionListener,SurfaceHolder.Callback,MediaController.MediaPlayerControl
- Android跨进程渲染
我是黄大仙
android
文章目录背景实现步骤服务端客户端参考代码背景2024年第一篇博客,希望所有看到这篇博客的同学都能财务自由,早日退休!跨进程渲染就是在服务端进程渲染,在客户端进程显示。在一些3d的应用场景,当多个应用需要显示时,就可以使用跨进程渲染,这样做的好处就是,客户端进程比较轻量,无需每个客户端都引入3d引擎,减少包大小,减少内存占用。实现步骤Android里面的跨进程渲染主要是通过Surfaceview和S
- Android音视频(一):绘制图片的三种方式
沉默的阿迪
1、ImageView显示图片Bitmapbitmap=BitmapFactory.decodeFile(imgPath+"/123.jpg");iv.setImageBitmap(bitmap);2、SurfaceView绘制图片SurfaceViewsv=findViewById(R.id.sv);sv.getHolder().addCallback(newSurfaceHolder.Call
- Android SurfaceView简例
zhangphil
Androidandroid
AndroidSurfaceView简例Android中各的SurfaceView和View有很大的不同,两者应用场景不同。大多数View能做的事情SurfaceView也可以,但是SurfaceView效率更高。Android的View绘制过程由Android系统控制,刷新机制开发者比较难以控制。而SurfaceView支持高频、多线程绘制。SurfaceView不存在是否在AndroidUI主
- .NoSuchMethodException: [class android.content.Context, interface and
世道无情
1.报错在我们自定义View时候,有时候会报错,如下图所示:自定义SurfaceView报错.png2.报错原因与解决方案错误原因一及解决方案:在自定义View时候,没有写含有(Contextcontext,AttributeSetattrs)的构造方法导致的,自己在自定义SurfaceView时候,没有写其构造方法导致这个错误,添加其构造方法即可解决,代码如下:publicDemoSurface
- Android系列-SurfaceView和View
lostfish123
Androidandroid
1.SurfaceView为什么可以在线程绘制SurfaceView之所以能够在独立的线程中进行绘制,是因为它的内部设计允许绘制操作在一个单独的后台线程中执行,而不会阻塞主线程。关键原因包括:Surface和Canvas分离:SurfaceView包含一个底层的Surface对象,而Surface可以被不同的线程锁定(lockCanvas)和解锁(unlockCanvasAndPost)。这使得绘
- android系列-SurfaceView和View的区别
lostfish123
Androidandroid
(来自chatgpt的回答)SurfaceView和View是Android中两种不同的视图组件,它们在渲染和刷新机制上有一些区别。1.绘制方式View:View的绘制是在UI线程中进行的,即主线程。如果进行复杂的绘制操作,可能会导致主线程阻塞,影响界面的响应性能。SurfaceView:SurfaceView允许在一个独立的线程中进行绘制操作,即后台线程。这样可以避免在主线程中进行复杂的绘制操作
- Android将自定义的SurfaceView保存为bitmap
唐诺
androidSurfaceViewBitmap
正常将View保存为Bitmap的方法:privateBitmapgetViewToBitmap(Viewview){//layoutView(view);//创建Bitmap,最后一个参数代表图片的质量.Bitmapbitmap=Bitmap.createBitmap(view.getWidth(),view.getHeight(),Bitmap.Config.ARGB_8888);if(bit
- 基于 FFmpeg 的跨平台视频播放器简明教程(十二):Android SurfaceView 显示图片和播放视频
芥末的无奈
音视频ffmpegffmpeg音视频android
系列文章目录基于FFmpeg的跨平台视频播放器简明教程(一):FFMPEG+Conan环境集成基于FFmpeg的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于FFmpeg的跨平台视频播放器简明教程(三):视频解码基于FFmpeg的跨平台视频播放器简明教程(四):像素格式与格式转换基于FFmpeg的跨平台视频播放器简明教程(五):使用SDL播放视频基于FFmpeg的跨平台视频播放
- Android Camera 摄像头 预览时 水平镜像
小康师兄
AndroidandroidjavacamerasurfaceViewmatrix
一、效果图废话不多说,直接看效果二、关键代码Matrixmatrix=surfaceView.getMatrix();matrix.setScale(-1,1,surfaceView.getWidth()/2,0);surfaceView.setTransform(matrix);Log.e(TAG,"width="+surfaceView.getWidth());三、全部代码activity_m
- Android共享元素动画
菠萝加点糖
android
示例在两个Activity之间实现共享元素动画首先,在布局文件中定义两个界面的SurfaceView,并为它们设置相同的android:transitionName属性在源Activity中,当用户启动目标Activity,并设置共享元素动画valintent=Intent(this,TargetActivity::class.java)valoptions=ActivityOptionsComp
- SurfaceView技术点总结及源码解析
ModestStorm
我们知道,当在view绘制时进行耗时操作或者复杂的动画,会出现丢帧或卡顿现象,用户体验极为不好。Android系统每隔16ms就会发出一次VSYNC信号触发对UI进行渲染,如果这16ms内我们没有完成对视图的绘制,那么就会出现丢帧的情况。之所以这样是因为,人眼与大脑之间的协作无法感知超过60fps的画面更新。60帧每秒就意味着:16ms=1000/60Hz。Android提供了SurfaceVie
- 谨慎使用android.view.SurfaceView.setVisibility方法
帅气好男人_Jack
bug分析android
谨慎使用android.view.SurfaceView.setVisibility方法why?原因就是此方法会导致native的内存暴增,前提条件你使用surfaceview去绘制一些复杂的3D图形,绘制复杂、业务复杂的场景;setVisibility方法会调用surfaceView的updateSurface,而此方法内部就可能会分配大量的native内存分析查看updateSurface源码
- FFmpeg+SDL实现播放器
Windra6
音视频ffmpegsdl
一、序言:之前做嵌入式移动端设备播放都是基于Android平台的(SurfaceView显示+AudioTrack播放声音),要么是linux系统直接ffmpeg解码音视频数据后用framebuffer显示和tinyalsa播放声音,做好音视频同步。鉴于本文是用于学习入门ffmpeg的所以选择Ubuntu系统平台,省去大家去搭建Android或嵌入式linux开发环境。这三种平台都是大同小异的。二
- [2021.12.5]使用MediaRecorder录制音频和视频(Camera1)
vimer-hz
3.1.2《Android从入门到精通》cameraMediaRecorderandroid
1概述MediaRecorder类用于录制音频和视频。步骤如下:(1)实例化MediaRecorder对象(2)设置声音来源和图像来源(3)设置视频分辨率(4)设置录制视频文件的保存路径(5)设置使用哪个SurfaceView(6)准备录制视频(7)开始录制视频(8)停止录制,释放资源2代码CameraRecord:https://github.com/hanyuhang-hz/android-d
- ztree设置禁用节点
3213213333332132
JavaScriptztreejsonsetDisabledNodeAjax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
- JVM patch by Taobao
bookjovi
javaHotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
- 将session存储到数据库中
dcj3sjt126com
sqlPHPsession
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
- Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
- 各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
- [简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
- struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
- IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
- String,int,Integer,char 几个类型常见转换
antonyup_2006
htmlsql.net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
- PL/SQL的游标类型
百合不是茶
显示游标(静态游标)隐式游标游标的更新和删除%rowtyperef游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
- JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
- 精通Oracle10编程SQL(12)开发包
bijian1013
oracle数据库plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
- 【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
javaeclipsespringtomcatWeb
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
- angular.element
boyitech
AngularJSAngularJS APIangular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
- java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
- sftp 异常,有遇到的吗?求解
Chen.H
javajcraftauthjschjschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
- [生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
- 通过LAC和CID获取经纬度信息
dai_lm
laccid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
- JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
- 小学5年级英语单词背诵第二课
dcj3sjt126com
englishword
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
- linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
- Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环Map迭代Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
- Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
- Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
- 学习编程那点事
lampcy
编程androidPHPhtml5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
- 架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
- org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$转义el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
- 用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
- 探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str