展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 如何利用Java工具类生成测试数据进行联调?

如何利用Java工具类生成测试数据进行联调?

java联调生成测试数据工具类在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。当然对于简单的数据类型完全可以通过JDK自带的Random类来实现。但是参数的格式有特殊要求的时候,临时处理比较麻烦,这个时候就需要借助一些现存的工具类生成测试数据。代码importjava.math.BigDecimal;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importja

本文目录

      java联调生成测试数据工具类

      在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。

      当然对于简单的数据类型完全可以通过 JDK 自带的 Random 类来实现。

      但是参数的格式有特殊要求的时候,临时处理比较麻烦,这个时候就需要借助一些现存的工具类生成测试数据。

      代码

      import java.math.BigDecimal;
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.util.Random;
      
      
      public class TestDataUtils {
      
          //复姓出现的几率(0--100)
          private static int surnameProbability = 5;
          private static Random random = new Random();
          private static String familyOneName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任" +
                  "袁柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞熊纪舒屈项祝董粱杜阮" +
                  "席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸左石崔吉龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴" +
                  "松井富乌焦巴弓牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步都耿满弘" +
                  "国文东殴沃曾关红游盖益桓公晋楚闫";
      
          private static String familyTwoName = "欧阳太史端木上官司马东方独孤南宫万俟闻人夏侯诸葛尉迟公羊赫连澹台皇甫宗政濮阳公冶太叔申屠公孙慕容仲孙钟离长孙宇" +
                  "文司徒鲜于司空闾丘子车亓官司寇巫马公西颛孙壤驷公良漆雕乐正宰父谷梁拓跋夹谷轩辕令狐段干百里呼延东郭南门羊舌微生公户公玉公仪梁丘公仲公上" +
                  "公门公山公坚左丘公伯西门公祖第五公乘贯丘公皙南荣东里东宫仲长子书子桑即墨达奚褚师吴铭";
      
          private static String boyName = "伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达" +
                  "安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽" +
                  "晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘";
      
          private static String girlName = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧" +
                  "璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥" +
                  "筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";
      
          private static String phoneTwoNum = "3578";
      
      
          private static String[] province = {"河北省", "山西省", "辽宁省", "吉林省", "黑龙江省", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "海南省", "四川省", "贵州省", "云南省", "陕西省", "甘肃省", "青海省", "台湾省",};
          private static String[] city = {"安康市", "安庆市", "安顺市", "安阳市", "鞍山市", "巴彦淖尔市", "巴中市", "白城市", "白山市", "白银市", "百色市", "蚌埠市", "包头市", "宝鸡市", "保定市", "保山市", "北海市", "本溪市", "滨州市", "沧州市", "昌都地区", "长春市", "长沙市", "长治市", "常德市", "常州市", "巢湖市", "朝阳市", "潮州市", "郴州市", "成都市", "承德市", "池州市", "赤峰市", "崇左市", "滁州市", "达州市", "大连市", "大庆市", "大同市", "丹东市", "德阳市", "德州市", "定西市", "东莞市", "东营市", "鄂尔多斯市", "鄂州市", "防城港市", "佛山市", "福州市", "抚顺市", "抚州市", "阜新市", "阜阳市", "甘南州", "赣州市", "固原市", "广安市", "广元市", "广州市", "贵港市", "贵阳市", "桂林市", "哈尔滨市", "哈密地区", "海北藏族自治州", "海东地区", "海口市", "邯郸市", "汉中市", "杭州市", "毫州市", "合肥市", "河池市", "河源市", "菏泽市", "贺州市", "鹤壁市", "鹤岗市", "黑河市", "衡水市", "衡阳市", "呼和浩特市", "呼伦贝尔市", "湖州市", "葫芦岛市", "怀化市", "淮安市", "淮北市", "淮南市", "黄冈市", "黄山市", "黄石市", "惠州市", "鸡西市", "吉安市", "吉林市", "济南市", "济宁市", "佳木斯市", "嘉兴市", "嘉峪关市", "江门市", "焦作市", "揭阳市", "金昌市", "金华市", "锦州市", "晋城市", "晋中市", "荆门市", "荆州市", "景德镇市", "九江市", "酒泉市", "开封市", "克拉玛依市", "昆明市", "拉萨市", "来宾市", "莱芜市", "兰州市", "廊坊市", "乐山市", "丽江市", "丽水市", "连云港市", "辽阳市", "辽源市", "聊城市", "临沧市", "临汾市", "临沂市", "柳州市", "六安市", "六盘水市", "龙岩市", "陇南市", "娄底市", "泸州市", "吕梁市", "洛阳市", "漯河市", "马鞍山市", "茂名市", "眉山市", "梅州市", "绵阳市", "牡丹江市", "内江市", "南昌市", "南充市", "南京市", "南宁市", "南平市", "南通市", "南阳市", "宁波市", "宁德市", "攀枝花市", "盘锦市", "平顶山市", "平凉市", "萍乡市", "莆田市", "濮阳市", "普洱市", "七台河市", "齐齐哈尔市", "钦州市", "秦皇岛市", "青岛市", "清远市", "庆阳市", "曲靖市", "衢州市", "泉州市", "日照市", "三门峡市", "三明市", "三亚市", "汕头市", "汕尾市", "商洛市", "商丘市", "上饶市", "韶关市", "邵阳市", "绍兴市", "深圳市", "沈阳市", "十堰市", "石家庄市", "石嘴山市", "双鸭山市", "朔州市", "四平市", "松原市", "苏州市", "宿迁市", "宿州市", "绥化市", "随州市", "遂宁市", "台州市", "太原市", "泰安市", "泰州市", "唐山市", "天水市", "铁岭市", "通化市", "通辽市", "铜川市", "铜陵市", "铜仁市", "吐鲁番地区", "威海市", "潍坊市", "渭南市", "温州市", "乌海市", "乌兰察布市", "乌鲁木齐市", "无锡市", "吴忠市", "芜湖市", "梧州市", "武汉市", "武威市", "西安市", "西宁市", "锡林郭勒盟", "厦门市", "咸宁市", "咸阳市", "湘潭市", "襄樊市", "孝感市", "忻州市", "新乡市", "新余市", "信阳市", "兴安盟", "邢台市", "徐州市", "许昌市", "宣城市", "雅安市", "烟台市", "延安市", "盐城市", "扬州市", "阳江市", "阳泉市", "伊春市", "伊犁哈萨克自治州", "宜宾市", "宜昌市", "宜春市", "益阳市", "银川市", "鹰潭市", "营口市", "永州市", "榆林市", "玉林市", "玉溪市", "岳阳市", "云浮市", "运城市", "枣庄市", "湛江市", "张家界市", "张家口市", "张掖市", "漳州市", "昭通市", "肇庆市", "镇江市", "郑州市", "中山市", "中卫市", "舟山市", "周口市", "株洲市", "珠海市", "驻马店市", "资阳市", "淄博市", "自贡市", "遵义市",};
          private static String[] area = {"伊春区", "带岭区", "南岔区", "金山屯区", "西林区", "美溪区", "乌马河区", "翠峦区", "友好区", "新青区", "上甘岭区", "五营区", "红星区", "汤旺河区", "乌伊岭区", "榆次区"};
          private static String[] road = {"黄河路", "中原路", "安波路", "新四路", "安汾路", "安福路", "安国路", "安化路", "安澜路", "安龙路", "安仁路", "安顺路", "安亭路", "安图路", "安业路", "安义路", "安远路", "鞍山路", "鞍山支路", "澳门路", "八一路", "巴林路", "白城路", "白城南路", "白渡路", "白渡桥", "白兰路", "白水路", "白玉路", "百安路(方泰镇)", "百官街", "百花街", "百色路", "板泉路", "半淞园路", "包头路", "包头南路", "宝安公路", "宝安路", "宝昌路", "宝联路", "宝林路", "宝祁路", "宝山路", "宝通路", "宝杨路", "宝源路", "保德路", "保定路", "保屯路", "保屯路", "北艾路",};
          private static String[] home = {"金色家园", "耀江花园", "阳光翠竹苑", "东新大厦", "溢盈河畔别墅", "真新六街坊", "和亭佳苑", "协通公寓", "博泰新苑", "菊园五街坊", "住友嘉馨名园", "复华城市花园", "爱里舍花园"};
      
          private static String passwordForm = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+{}|<>?";
      
          /**
           * 生成随机数
           */
          public static int randomInt() {
              return random.nextInt();
          }
      
          /**
           * 生成随机数(最大值限制)
           */
          public static int randomInt(int maxNum) {
              return random.nextInt(maxNum);
          }
      
          /**
           * 获取随机男生姓名
           */
          public static String getRandomBoyName() {
              int bodNameIndexOne = randomInt(boyName.length());
              int bodNameIndexTwo = randomInt(boyName.length());
              return getNameStr(bodNameIndexOne, bodNameIndexTwo, boyName);
          }
      
      
          /**
           * 获取随机女生姓名
           */
          public static String getRandomGirlName() {
              int bodNameIndexOne = randomInt(girlName.length());
              int bodNameIndexTwo = randomInt(girlName.length());
              return getNameStr(bodNameIndexOne, bodNameIndexTwo, girlName);
          }
      
          /**
           * 获取随机手机号
           */
          public static String getRandomPhone() {
              int phoneTwoRandomIndex = randomInt(4);
              return "1" + phoneTwoNum.substring(phoneTwoRandomIndex, phoneTwoRandomIndex + 1) + (100000000 + randomInt(899999999));
          }
      
          /**
           * 获取随机qq邮箱
           */
          public static String getRandomQQEmail() {
              return ("" + random.nextLong()).substring(10) + "@qq.com";
          }
      
          /**
           * 获取随机性别
           */
          public static String getRandomSex() {
              return randomInt(2) % 2 == 0 ? "男" : "女";
          }
      
          /**
           * 获取随机年龄
           *
           * @param min 最小年龄
           * @param max 最大年龄
           * @return
           */
          public static int getRandomAge(int min, int max) {
              return min + random.nextInt(max - min);
          }
      
          /**
           * 获取随机金额
           */
          public static Double getRandomMoney(int min, int max) {
              int randomAge = getRandomAge(min, max);
              double v = random.nextDouble();
              return randomAge + v;
          }
      
          /**
           * 获取随机金额
           */
          public static BigDecimal getRandomDecimal(Integer min, Integer max) {
              return getRandomRedPacket(min, max, BigDecimal.ROUND_DOWN);
          }
      
          /**
           * 获取金额
           *
           * @param min
           * @param max
           * @return
           */
          public static BigDecimal getRandomRedPacket(Integer min, Integer max, int roundingMode) {
              float minF = min.floatValue();
              float maxF = max.floatValue();
              //生成随机数
              BigDecimal db = new BigDecimal(Math.random() * (maxF - minF) + minF);
              //返回保留两位小数的随机数。不进行四舍五入
              return db.setScale(2, roundingMode);
          }
      
          /**
           * 获取随机住址
           */
          public static String getRandomAddress() {
              return province[randomInt(province.length)] +
                      city[randomInt(city.length)] +
                      area[randomInt(area.length)] +
                      road[randomInt(road.length)] +
                      home[randomInt(home.length)];
          }
      
          /**
           * 获取随机时间
           */
          public static Date getRandonTime() {
              Random rndYear = new Random();
              int year = rndYear.nextInt(18) + 2000;  //生成[2000,2017]的整数;年
              Random rndMonth = new Random();
              int month = rndMonth.nextInt(12) + 1;   //生成[1,12]的整数;月
              Random rndDay = new Random();
              int Day = rndDay.nextInt(30) + 1;       //生成[1,30)的整数;日
              Random rndHour = new Random();
              int hour = rndHour.nextInt(23);       //生成[0,23)的整数;小时
              Random rndMinute = new Random();
              int minute = rndMinute.nextInt(60);   //生成分钟
              Random rndSecond = new Random();
              int second = rndSecond.nextInt(60);   //秒
              String dateStr = year + "-" + month + "-" + Day + "  " + hour + ":" + minute + ":" + second;
      
              return dateTime(YYYY_MM_DD_HH_MM_SS, dateStr);
          }
      
          /**
           * 获取随机密码(指定长度)
           */
          public static String getRandomPassword(int length) {
              StringBuilder springBuilder = new StringBuilder();
              for (int i = 0; i < length; i++) {
                  int index = randomInt(passwordForm.length());
                  springBuilder.append(passwordForm.substring(index, index + 1));
              }
              return springBuilder.toString();
          }
      
          /**
           * 获取随机密码(指定长度)
           */
          public static String getRandomPassword() {
              return getRandomPassword(12);
          }
      
          public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
      
          public static String toSeconds(Date date) {
              return format(date, YYYY_MM_DD_HH_MM_SS);
          }
      
          public static String format(Date date, String format) {
              SimpleDateFormat sdf = new SimpleDateFormat(format);
              return date == null ? "" : sdf.format(date);
          }
      
          public static final Date dateTime(final String format, final String ts) {
              try {
                  return new SimpleDateFormat(format).parse(ts);
              } catch (ParseException e) {
                  throw new RuntimeException(e);
              }
          }
      
          private static String getNameStr(int bodNameIndexOne, int bodNameIndexTwo, String nameType) {
              if (randomInt(100) > surnameProbability) {
                  int familyOneNameIndex = randomInt(familyOneName.length());
                  return familyOneName.substring(familyOneNameIndex, familyOneNameIndex + 1) +
                          nameType.substring(bodNameIndexOne, bodNameIndexOne + 1) +
                          nameType.substring(bodNameIndexTwo, bodNameIndexTwo + 1);
              } else {
                  int familyTwoNameIndex = randomInt(familyTwoName.length());
                  familyTwoNameIndex = familyTwoNameIndex % 2 == 0 ? familyTwoNameIndex : familyTwoNameIndex - 1;
                  return familyTwoName.substring(familyTwoNameIndex, familyTwoNameIndex + 2) +
                          nameType.substring(bodNameIndexOne, bodNameIndexOne + 1) +
                          nameType.substring(bodNameIndexTwo, bodNameIndexTwo + 1);
              }
          }
      
      
          public static void main(String[] args) {
              int randomInt = randomInt(); // 获取随机数
              System.out.println("randomInt = " + randomInt);
              int randomInt2 = randomInt(8); // 获取随机数
              System.out.println("randomInt2 = " + randomInt2);
              String randomBoyName = getRandomBoyName(); // 获取男士姓名
              System.out.println("randomBoyName = " + randomBoyName);
              String randomGirlName = getRandomGirlName(); // 获取女士姓名
              System.out.println("randomGirlName = " + randomGirlName);
              String randomPhone = getRandomPhone(); // 获取手机号码
              System.out.println("randomPhone = " + randomPhone);
              String randomQQEmail = getRandomQQEmail(); // 获取qq邮箱
              System.out.println("randomQQEmail = " + randomQQEmail);
              String randomSex = getRandomSex(); // 获取性别
              System.out.println("randomSex = " + randomSex);
              int randomAge = getRandomAge(0, 100); // 获取年龄
              System.out.println("randomAge = " + randomAge);
              Double randomMoney = getRandomMoney(0, 100); // 获取金额double
              System.out.println("randomMoney = " + randomMoney);
              BigDecimal randomDecimal = getRandomDecimal(0, 200); // 获取金额保留两位小数decimal
              System.out.println("randomDecimal = " + randomDecimal);
              String randomAddress = getRandomAddress(); // 获取地址
              System.out.println("randomAddress = " + randomAddress);
              Date randonTime = getRandonTime(); // 获取时间
              System.out.println("randonTime = " + randonTime);
              String format = toSeconds(randonTime); // 获取时间
              System.out.println("format = " + format);
              String randomPassword = getRandomPassword(); // 获取密码
              System.out.println("randomPassword = " + randomPassword);
              String randomPassword1 = getRandomPassword(10); // 获取密码(10位)
              System.out.println("randomPassword1 = " + randomPassword1);
          }
      
      }

      java druid工具类及测试

      import com.alibaba.druid.pool.DruidDataSourceFactory;
      
      import javax.sql.DataSource;
      import java.io.FileInputStream;
      import java.sql.Connection;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.sql.Statement;
      import java.util.Properties;
      
      /**
       * 基于druid数据库连接池的工具类
       */
      public class JDBCUtilsByDruid {
      
          private static DataSource ds;
      
          //在静态代码块完成ds初始化
          static {
              Properties properties = new Properties();
              try {
                  properties.load(new FileInputStream("src\\druid.properties"));
                  ds = DruidDataSourceFactory.createDataSource(properties);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      
          //编写getConnection方法
          public static Connection getConnection() throws SQLException {
              return ds.getConnection();
          }
      
          //关闭连接,注意:在数据库连接池技术中,close不是真的断掉连接
          //而是把使用的Connection对象放回连接池
          public static void close(ResultSet resultSet, Statement statement, Connection connection) {
      
              try {
                  if(resultSet != null) {
                      resultSet.close();
                  }
                  if(statement != null) {
                      statement.close();
                  }
                  if(connection != null) {
                      connection.close();
                  }
              } catch (SQLException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      import com.hspedu.jdbc.utils.JDBCUtils;
      import org.junit.Test;
      
      import java.sql.*;
      
      public class JDBCUtilsByDruid_Use {
      
          @Test
          public void testSelect() {
      
              System.out.println("使用druid方式完成");
              //1.得到连接
              Connection connection = null;
      
              //2.组织一个sql
              String sql = "select * from actor where id = ?";
      
              //3.创建PreparedStatement对象
              PreparedStatement preparedStatement = null;
              ResultSet resultSet = null;
              try {
                  connection = JDBCUtilsByDruid.getConnection();
                  System.out.println(connection.getClass());  //运行类型 class com.alibaba.druid.pool.DruidPooledConnection
                  preparedStatement = connection.prepareStatement(sql);
                  //给占位符赋值
                  preparedStatement.setInt(1, 1);
                  //执行
                  resultSet = preparedStatement.executeQuery();
                  //遍历该结果集
                  while (resultSet.next()) {
                      int id = resultSet.getInt("id");
                      String name = resultSet.getString("name");
                      String sex = resultSet.getString("sex");
                      Date borndate = resultSet.getDate("borndate");
                      String phone = resultSet.getString("phone");
                      System.out.println(name + "\t" + sex + "\t" + borndate + "\t" + phone);
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              } finally {
                  //关闭资源
                  JDBCUtilsByDruid.close(resultSet, preparedStatement, connection);
              }
          }
      }
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Java
      相关文章 更多
      精品专题 更多
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      macOS软件

      正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

      IOS软件

      正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

      AI

      正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      立刻MV 网页版
      立刻MV 网页版

      立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

      蛙蛙写作 网页版
      蛙蛙写作 网页版

      蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

      超级简历WonderCV 网页版
      超级简历WonderCV 网页版

      超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

      音述AI 网页版
      音述AI 网页版

      音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

      AionClaw macOS版
      AionClaw macOS版

      AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

      Loomy macOS版
      Loomy macOS版

      Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

      AirBuddy 3 macOS版
      AirBuddy 3 macOS版

      AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

      AirServer macOS版
      AirServer macOS版

      AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

      AnyDesk macOS版
      AnyDesk macOS版

      AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

      讯飞绘文 网页版
      讯飞绘文 网页版

      讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

      Maya(Autodesk Maya) Windows版
      Maya(Autodesk Maya) Windows版

      Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

      Aperty Windows版
      Aperty Windows版

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      立刻MV 网页版
      立刻MV 网页版

      立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

      蛙蛙写作 网页版
      蛙蛙写作 网页版

      蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

      超级简历WonderCV 网页版
      超级简历WonderCV 网页版

      超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

      音述AI 网页版
      音述AI 网页版

      音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

      AionClaw Windows版
      AionClaw Windows版

      AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

      Loomy Windows版
      Loomy Windows版

      Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。