跳至主要内容

AndSever 隐藏返回字段

AndSever 隐藏返回字段

model 的定义

这块代码中也顺带演示了在 Android Room 中如何定义多个外键,定义多个索引。

package com.example.zdhtserver.mvvm.room.PeoplePhoto;  
  
import androidx.room.ColumnInfo;  
import androidx.room.Entity;  
import androidx.room.ForeignKey;  
import androidx.room.Index;  
import androidx.room.PrimaryKey;  
  
import com.example.zdhtserver.mvvm.room.FaceLibrary.FLRoom;  
import com.example.zdhtserver.mvvm.room.People.PRoom;  
  
import static androidx.room.ForeignKey.CASCADE;  
  
// 人员照片模型  
@Entity(  
  foreignKeys = {  
  @ForeignKey(entity = FLRoom.class,  
  parentColumns = "faceSetId",  
  childColumns = "faceSetId",  
  onDelete = CASCADE,  
  onUpdate = CASCADE),  
  @ForeignKey(entity = PRoom.class,  
  parentColumns = "classId",  
  childColumns = "classId",  
  onDelete = CASCADE,  
  onUpdate = CASCADE),  
  
 },  indices = {  
  @Index(value = {"faceSetId", "classId"}, unique = true),  
  @Index(value = {"classId"}),  
  @Index(value = {"faceSetId"}),  
  @Index(value = {"faceFeature"}),  
 })  
public class PPRoom {  
  //—————————————————————内部约束——————————————————————————//  
  @PrimaryKey(autoGenerate = true)  
  private int keyId;  
  
  //—————————————————————内部约束——————————————————————————//  
 //—————————————————————对外字段——————————————————————————//  
 //人脸库ID  
  @ColumnInfo(name = "faceSetId")  
  private long faceSetId;  
  
  //人员ID  
  @ColumnInfo(name = "classId")  
  private String classId;  
  
  //照片名称  
  @ColumnInfo(name = "name")  
  private String name = "默认照片";  
  
  // 照片编码——主要是给业务系统集成试用  
  @ColumnInfo(name = "code")  
  private String code = "无照片编码";  
  
  // 人脸主体区域,应对一张图片中多张人脸的情况,
  // 指定后,只使用该区域的人脸  
  @ColumnInfo(name = "faceArea")  
  private String faceArea = "0,0,0,0";  
  
  // 图片文件的地址 
  @ColumnInfo(name = "imagePath")  
  private String imagePath;  
  
  // 图片文件的唯一UUID  
  @ColumnInfo(name = "imageId")  
  private String imageID;  
  
  
  // 人脸特征值  
  @ColumnInfo(name = "faceFeature")  
  private String faceFeature;  
  
  public String getImageID() {  
  return imageID;  
 }  
  public void setImageID(String imageID) {  
  this.imageID = imageID;  
 }  
  // 省略 Get/Set 方法...
  //—————————————————————对外字段——————————————————————————//  
}


去掉字段(成员属性)

比如 FaceFeature 字段,一共有 2048 个字符串,查看调用结果时会很不舒服。

现在我想要去掉这个字段只要设置这个字段为空即可,注意不能设置""

我在想在这个 Web 框架有没有更好的解决方案?比如注解?

这需要看框架源代码了。。。

接口代码部分

/**  
 * 列出所有人员照片  
  *  
 * @return 人员照片集合  
  */  
@PostMapping("/list")  
public List<PPRoom> list() {  
  List<PPRoom> ppRooms = PeoplePhotoModel.getInstance().listSync();  
  for (int i = 0; i < ppRooms.size(); i++) {  
  ppRooms.get(i).setFaceFeature(null);  
 }  return ppRooms;  
}

评论

此博客中的热门博文

Lambda can be replaced with method reference

Lambda can be replaced with method referenceAndroid开发的时候提示 Lambda can be replaced with method reference只需要按下 Alt + Enter 即可效果如下参考资料How to change Runnable to lambda expression in Java with IntelliJ shortcut

ffmpeg 音频淡出淡出并调整音量

ffmpeg 音频淡出淡出并调整音量1 淡出淡入ffmpeg -i 青花瓷.aac -filter_complex "[0:a]afade=t=in:ss=0:d=5[a1]; [a1]afade=t=out:st=60:d=5[a2]; [a2]volume=0.1" t.mp3 青花瓷.aac 是第0个输入文件
[0:a] 代表是处理第0个输入文件的(Audio)音频文件[0:a]afade=t=in:ss=0:d=5[a1] 处理 [0:a] 资源从第 0 秒开始淡入,持续5秒 ,并标记这个过滤器名为 [a1]
过滤器名字可以随便取,但要符合命名规范,请自行查询 ffmpeg 过滤器命令规范。[a1]afade=t=out:st=60:d=5[a2] 处理 [a1] 的资源,从第60秒开始淡出,持续5秒。注意:淡出结束后,后面的音频将全部静音[a2]volume=0.1 2 处理音频处理 [a2] 资源的音量,为原来的 0.1 倍音量。t.mp3 为输出的音频

ffmpeg-filter 使用指南

ffmpeg-filter 使用指南说明只是一份备份。查看原文作者:hguoFilter 思想filter 架构思想中第一个概念是 Graph,一般翻译为画布,如果 Graph 看做是桌子的话,那 filters 们就是桌子上的“悲剧”。所以先要有 Graph,然后再将 filter 摆在上面, filter是身上有 pin 接口, pin 的作用是统一数据接口,然后还需要一个 link 的动作, link 的作用是将指定的 2 个 filter 通过其 pin 接口连接起来,这样就形成了一个完整的 filter graph或是叫 filter link list。List item如果只有 filter graph 的存在,它只是一堆参数数据和代码,并不能运行,需要一个动力泵或是动力引擎将整个过程驱动起来,这就像人还缺一颗心脏一样,那人的血液就是filter graph 的数据流。这样 FFmpeg 就把驱动的能力交给了 filter 框架外面来做,通过向 filter graph 的首个 filter 推数据和从 filter graph 的末尾 filter 拉数据从而驱动整个 filter graph 的数据流动。命令行使用命令ffmpeg -i file_copy.ts -i logo.png -filter_complex " [1:v]scale=100:100[logo]; [0:v][logo]overlay=x=main_w-100:y=main_h-100" output.mp4 参数简记-filter_complex:滤镜必选参数,后面跟滤镜命令[1:v] :输入pin,表示视频的第1路scale=100:100 :对[1:v]输入pin的处理,缩放成100:100[logo] :输出pin; 每个滤镜分割0:v :两个输入,第一个视频,上一个滤镜的输出overlay=x=main_w-100:y=main_h-100 :滤镜动作