首页 文章 精选 留言 我的

精选列表

搜索[快速],共10000篇文章
优秀的个人博客,低调大师

Sqlbean 安卓版 1.1.9 发布,无需Sqlite语句,助你实现快速开发

Sqlbean For Android 介绍 Sqlbean是一款使用Java面向对象思想来编写并生成Sql语句的工具,在此基础上对Android SQLite实现轻量级插件支持。其中内置大量常用SQL执行的方法,可以非常方便的达到你想要的目的,相对复杂的SQL语句也得以支持,在常规的项目开发几乎做到不写SQL,可以有效的提高项目开发的效率,让开发者更专注于业务代码的编写。 🚀特点: 零入侵, 自动建表, 连表查询, 乐观锁,分页 💻环境: Android 4.0+ Sqlbean-Core与Java-Spring版请移步这里👉gitee,github 简单上手 1.引入Gradle依赖 implementation 'cn.vonce:vonce-sqlbean-android:1.1.9' annotationProcessor 'cn.vonce:vonce-sqlbean-android:1.1.9' 2.标注实体类,实体类与表字段映射 @SqlTable("d_user") public class User { @SqlId(type = IdType.SNOWFLAKE_ID_16) private Long id; private String name; private Integer age; private Integer stature; private Integer gender; private String phone; private Date createTime; /**省略get set方法*/ } 3.获取连接(建议在上一步把所有表字段关系建立好,第一次获取连接时会自动创建表结构) public class MainActivity extends AppCompatActivity { private SqlBeanHelper<Essay, String> essaySqlBeanHelper; //private SqlBeanHelper<User, String> userSqlBeanHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //方式一,单库模式 SQLiteHelper.init(this, "testdb", 1);//建议放在MainActivity或继承的Application essaySqlBeanHelper = SQLiteHelper.db().get(Essay.class); //方式二,多库模式 //essaySqlBeanHelper = SQLiteHelper.db(this, "testdb1", 1).get(Essay.class); //userSqlBeanHelper = SQLiteHelper.db(this, "testdb2", 1).get(User.class); } } 4.CRUD操作 public class MainActivity extends AppCompatActivity { private SqlBeanHelper<Essay, String> sqlBeanHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteHelper.init(this, "testdb", 1); sqlBeanHelper = SQLiteHelper.db().get(Essay.class); } //查询 public void select() { //查询列表 List<User> list = userService.select(); list = sqlBeanHelper.selectBy(Wrapper.where(gt(User$.id, 10)).and(lt(User$.id, 20))); //指定查询 list = sqlBeanHelper.select(new Select().column(User$.id$, User$.name$, User$.phone).where().eq()); //查询一条 User user = userService.selectById(1); user = sqlBeanHelper.selectOneBy(Wrapper.where(eq(User$.id, 1001))); //sql语义化查询《20岁且是女性的用户根据创建时间倒序,获取前10条》 list = sqlBeanHelper.select(new Select().column(User$.id$, User$.name$, User$.phone$).where().eq(User$.age, 22).and().eq(User$.gender, 0).back().orderByDesc(User$.createTime).page(0, 10)); //联表查询《20岁且是女性的用户根据创建时间倒序,查询前10条用户的信息和地址》 Select select = new Select(); select.column(User$.id$, User$.name$, User$.phone$, UserAddress$.province$, UserAddress$.city$, UserAddress$.area$, UserAddress$.details$); select.join(JoinType.INNER_JOIN, UserAddress$._tableName, UserAddress$.user_id, User$.id); select.where().gt(User$.age$, 22).and().eq(User$.gender$, 0); select.orderByDesc(User$.createTime$); select.page(0, 10); //查询Map Map<String, Object> map = sqlBeanHelper.selectMap(select); List<Map<String, Object>> mapList = sqlBeanHelper.selectMapList(select); } //分页 public void getPageList() { // 查询对象 Select select = new Select(); PageHelper<User> pageHelper = new PageHelper<>(0, 10); pageHelper.paging(select, sqlBeanHelper); ResultData<List<Essay>> data = pageHelper.getResultData(); } //更新 public void update(Essay essay) { //根据bean内部id更新 long i = sqlBeanHelper.updateByBeanId(essay); //根据外部id更新 //i = sqlBeanHelper.updateById(essay, 20); //根据条件更新 //i = sqlBeanHelper.updateBy(Wrapper.where(gt(User$.age, 22)).and(eq(User$.gender, 1))); } //删除 public void deleteById(String[] id) { //根据id删除 long i = sqlBeanHelper.deleteById(id); //根据条件删除 //i = sqlBeanHelper.deleteBy(Wrapper.where(gt(User$.age, 22)).and(eq(User$.gender, 1))); } //插入 public void add() { List<Essay> essayList = new ArrayList<>(); for (int i = 0; i < 100; i++) { Essay essay = new Essay(i, "name" + i); essayList.add(essay); } sqlBeanHelper.insert(essayList); } } 本次更新内容: 1:列字段注解名称允许为空; 2:连接表注解支持ON自定义连接条件; 3:修复创建表时默认值的问题; 4:修复排序时如果没有表别名也增加转义的问题; 5:修复单表查询时指定class映射不生效的问题; 6:修复分页克隆的count方法在遇到分组时的bug; 7:优化创建sql语句主键字段加上not null; 8:优化指定类型返回功能; 9:优化内部部分代码和重新实现;

优秀的个人博客,低调大师

AI目标分割能力,无需绿幕即可实现快速视频抠图

绿幕抠图是影视制作过程中常见的技术手段,常用于视频中抠除并替换背景,通过后期加工实现视频剪辑制作的更多可能性。然而,绿幕抠图技术制作成本费时费力,无法应用于日常生活。 华为视频编辑服务近期上线目标分割能力,可通过AI智能抠图精细化分割视频中的目标物体,并且不局限于特定的物体类别,在主体明确、背景相对简单的视频中进行主体和背景的分割,可以取得不错的处理效果。 应用场景 目标分割能力多应用于视频直播、在线教育、论坛会议等场景。比如,在卖货直播的场景中,可以将直播背景替换成商品详情页的轮播画面,便于用户及时了解商品;在线上论坛或者视频会议中,将背景替换成PPT内容或者办公场景,营造学习办公的严肃氛围。同样,目标分割能力也可满足用户日常趣味剪辑,用户可以通过目标分割能力剪辑人像视频,然后将背景切换各国名景,足不出户便能实现“周游世界”。 除了更换视频背景,目标分割能力还可应用于影视播放,通过目标抠图,避免弹幕遮挡剧情主体,优化用户观看体验。结合其他技术能力,还可以将分割后的目标物体进行复制和删除,甚至调整目标物体的动作时间,打造更具创意的视频作品。 实现原理 那么,目标分割能力是怎么实现的呢? 首先,用户需要选择目标物体,然后再进行AI目标分割。通过给定视频第一帧图像需要分割目标物体的对应掩码,AI模型会自动在后续每一帧的视频帧中匹配这个物体并尝试分割出来。并且,模型将会保存中间帧分割效果好的结果掩码与第一帧的掩码信息相结合,在后续视频帧中进行匹配,可以精准勾勒目标物体的边缘细节,进一步提升目标分割的准确度。 DEMO演示 集成方式 1. 开发准备 详细准备步骤可参考华为开发者联盟官网 2. 编辑工程集成 2.1 设置应用的鉴权信息 可以通过api_key或者Access Token来设置应用鉴权信息。 通过setAccessToken方法设置Access Token,在应用启动时初始化设置一次即可,无需多次设置。 MediaApplication.getInstance().setAccessToken("your access token"); 通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。 MediaApplication.getInstance().setApiKey("your ApiKey"); 2.2设置唯一标识ID,即License ID。 License ID是进行管控的有效凭证,您要保证设置License ID的唯一性。 MediaApplication.getInstance().setLicenseId("License ID"); 2.2.1初始化Editor运行环境 创建编辑工程,需要首先创建Editor对象并初始化其运行环境。当离开编辑工程时,应释放Editor实例。 (1) 创建Editor对象 HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext()); (2) 指定预览窗口的布局位置 预览窗口负责视频图像画面的渲染,由视频编辑原子能力SDK内部创建SurfaceView来实现。在创建窗口之前,需要在您的App中指定预览窗口的布局位置。 <LinearLayout android:id="@+id/video_content_layout" android:layout_width="0dp" android:layout_height="0dp" android:background="@color/video_edit_main_bg_color" android:gravity="center" android:orientation="vertical" /> // 指定预览窗口 LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout); // 设置预览窗口承载的布局 editor.setDisplay(mSdkPreviewContainer); (3) 初始化运行环境,如果License鉴权失败,会抛出LicenseException。 当Editor对象创建之后,此时还没有占用实际的系统资源,需要手动选择其环境初始化的时机,此时视频编辑原子能力SDK内部会创建必须的线程和定时器等。 try { editor.initEnvironment(); } catch (LicenseException error) { SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg()); finish(); return; } 3. “目标分割”能力集成 // 初始化目标分割AI引擎 videoAsset.initSegmentationEngine(new HVEAIInitialCallback() { @Override public void onProgress(int progress) { // 初始化进度 } @Override public void onSuccess() { // 初始化成功 } @Override public void onError(int errorCode, String errorMessage) { // 初始化失败 } }); // 初始化成功后,选择需要分割的目标进行分割,返回选择分割目标的的处理结果 // bitmap包含需要分割的目标的视频帧图片;timeStamp为视频帧图片在时间线上的时间戳;points为基于视频帧图片的坐标点集合,左上角为原点坐标,坐标点应位于需要分割的目标内,且个数建议大于等于2,需根据坐标点轨迹来确定选择的目标 int result = videoAsset.selectSegmentationObject(bitmap, timeStamp, points); // 目标分割的处理结果成功后,添加目标分割AI特效 videoAsset.addSegmentationEffect(new HVEAIProcessCallback() { @Override public void onProgress(int progress) { // 目标分割AI特效处理进度 } @Override public void onSuccess() { // 目标分割AI特效处理成功 } @Override public void onError(int errorCode, String errorMessage) { // 目标分割AI特效处理失败 } }); // 中断目标分割AI特效处理 videoAsset.interruptSegmentation(); // 移除目标分割AI特效 videoAsset.removeSegmentationEffect(); // 释放目标分割AI引擎 videoAsset.releaseSegmentationEngine(); 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

优秀的个人博客,低调大师

聊聊怎么做硬件兼容性检测,快速迁移到openEuler?

作为一款免费的企业级 Linux 操作系统,自CentOS 8 宣布停止维护以来(2021年底),就引发行业的广泛关注。究其原因,不仅在于 CentOS 用户群体庞大,还在于迁移 CentOS 并不是简单的系统重新安装,而是需要对操作系统及其上搭载的应用软件和业务系统进行替代、适配、迁移和重构等。因此,如何高效安全且低风险地实现应用迁移,成为用户所关心的核心问题。 国内操作系统迁移方案很多,开源操作系统openEuler也是大家比较热议的话题之一。 openEuler 内核源于 Linux,它支持鲲鹏、X86等多种处理器,可充分释放计算芯片的潜能,广泛适用于数据库、大数据、云计算、人工智能等应用场景。openEuler 同时是兼容 CentOS 的国内主流开源操作系统之一,相较 CentOS ,openEuler对核内关键功能如进程调度、内存管理、IO读写进行了深度优化,同时在核外构筑了容器 iSula、虚拟化 StraitVirt、机密计算 SecGear、毕昇 JDK 等特性。 openEuler生态丰富。2021年11月9日,openEuler 社区捐赠给开放原子开源基金会。这半年多以来,社区已有超过 300+ 伙伴加入,包含Intel、Marvel、新华三等知名企业,汇聚了从处理器、整机、基础软件、应用软件、行业客户等全产业链伙伴。当前已有国内外 14 家主流 OSV(麒麟、统信、麒麟信安、SUSE、普华等)均发布了基于 openEuler 的操作系统商业发行版;且发行产品已经广泛进入了政府、运营商、金融、电力等多个行业的核心系统。 今天,我们以X86硬件兼容性为例,来聊聊怎么将操作系统迁移为openEuler(本篇案例的版本为openEuler 20.03 LTS SP1)。 一 环境说明 硬件如下表: 项目 说明 服务器 2288H V5 CPU Inter(R) Xeon(R) Gold 6266C CPU @ 3.00GHz NIC卡 CX5(CX5网卡是mellanox公司生产的一款网卡) RIAD卡 LTS SAS 3108(3108raid卡是华为生产的一款raid卡) 操作系统如下所示: 项目 说明 Centos Linux 7.9.2009(Core) Kernel 3.10.0 x86_64 检查当前系统版本信息 cat /etc/os-release 二 软件运行和硬件兼容性评估工具:x2openEuler openEuler社区提供了 x2openEuler工具,具有硬件评估、软件评估、系统配置评估的功能,其中硬件评估针对centos系统上正常运行的板卡在openEuler上兼容性,工具采集板卡信息生成html报告,直观快捷展示硬件的兼容性。 下载x2openEuler工具: https://www.openeuler.org/zh/other/migration/ 三 部署工具 cd /opt/ rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm 注意:安装rpm时需要使用root用户,且目前需要网络(用于下载安装依赖) 注意:根据提示安装依赖包如bzip2-devel等。 su x2openEuler x2openEuler redis-db -init 依次录入redis数据库的ip:127.0.0.1 端口:6379 数据库索引号(0-16):0 密码(工具会对密码加密处理):如果redis密码没有设置或者为空时,直接回车即可。 x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz 备注:x2openEuler使用rpm安装完成后会在/opt/x2openEuler目录下带有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz这个默认资源包 需要支持centos8.2到openEuler20.03-LTS-SP1的评估,则需获取对应的静态资源包导入,如对应的资源包为source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,导入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,请示情况选择对应的资源包。 四 硬件兼容性分析 x2openEuler hardware-analyse 返回信息如下: 2021-11-30 09:41:20,865 - INFO - Log save directory: /var/log/x2openEuler 2021-11-30 09:41:20,887 - INFO - x2openEuler hardware-analyse 2021-11-30 09:41:20,888 INFO manager/get_param_config/179: Parameter configuration file loaded. 2021-11-30 09:41:20,905 INFO manager/get_regex_config/218: Regex pattern compiled. 2021-11-30 09:41:20,905 INFO manager/load_parsers/233: All builtin parsers loaded. 2021-11-30 09:41:20,905 INFO manager/load_parsers/236: All custom parsers loaded. 2021-11-30 09:41:21,254 INFO time_utils/wrapper/21: 0.35s taken for running function [get_data] 2021-11-30 09:41:21,269 WARNING list/parse_content/47: no data in ls_dev 2021-11-30 09:41:21,377 INFO time_utils/wrapper/21: 0.12s taken for running function [get_parsed_content] 2021-11-30 09:41:21,377 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/kernel_startup_param.json. 2021-11-30 09:41:21,378 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/syscall_interface.json. 2021-11-30 09:41:21,378 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/path.json. 2021-11-30 09:41:21,379 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/port.json. 2021-11-30 09:41:21,379 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/device_interface.json. 2021-11-30 09:41:21,380 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/linux_command.json. 2021-11-30 09:41:21,387 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/hardware_configure.json. 2021-11-30 09:41:21,396 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/proc.json. 2021-11-30 09:41:21,404 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/system_configure.json. 2021-11-30 09:41:21,408 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/system_service.json. 2021-11-30 09:41:21,412 INFO manager/write_res/135: write to /opt/x2openEuler/_tmp_18ambppj_/run/9e81f536-517e-11ec-ae65-a01c8dfeddfa/sysconf/kernel_configure.json. 2021-11-30 09:41:21,426 - INFO - Producing report... 2021-11-30 09:41:21,427 - INFO - Generate Success! The results are saved: /opt/x2openEuler/output/hw_compat_report-20211130094121.html 返回信息中,“/opt/x2openEuler/output/hw_compat_report-20211130094121.html“为评估报告文件。 硬件评估结果分析 硬件兼容性评估报告可直接展示每项板卡是否兼容以及整机是否兼容,有任意一项不在兼容清单里的则需要适配。 通过VID、DID、SVID、SSID四元组值可确定唯一一种板卡。从上面的截图可以看到,每一项板卡都可以在南向兼容性清单查询到,因此该硬件服务器从centos迁移到openEuler 20.03 LTS SP1可以实施。 原文链接: https://www.openeuler.org/zh/blog/randy1568/X86%20hardware%20compatibility%20assessment%20migration%20guide.html 参考材料: https://www.openeuler.org/zh/other/migration/

优秀的个人博客,低调大师

Pear Admin Boot 2.0.0 发布,开箱即用的 Spring Boot 快速开发平台

更新内容: [重构] 多模块 为 单体 架构 (大道至简)[完成] [新增] 运行时 数据源管理 [完成] [新增] Excel 导入导出 [完成] [新增] 限流 组件 [完成] [新增] 角色粒度 的数据权限支持 [完成] [新增] spring validation 参数验证支持 [完成] [新增] Druid 数据监控页面 [完成] [修复] Security 无法获取用户信息 [完成] [修复] Long类型作为主键时序列化到js中精度丢失问题 [完成] [升级] spring boot 2.6.7 [完成] [升级] mysql 8.0.28 [完成] [升级] security themeleaf 3.1.0.m1 [完成] [优化] 使用 icon 组件替换 iconPicker 组件 [完成] [优化] mybatis-plus 默认字段填充 [完成] [优化] 核心模块的前端必填验证,email, phone 格式校监 [完成] [优化] 代码生成模板由 mybatis 原生实现替换为 mybatis plus [完成]

优秀的个人博客,低调大师

音视频开发者的福音,快速集成AI配音能力

音视频内容创作者对剪辑应用中的AI配音需求与日俱增。它的优点很多,不光可以解决雇佣人力配音的成本以及创作者本身的口音、语言等限制,还可以大幅提升生产效率。比如,短视频的播放时间短的几十秒,长的vlog类型视频有4-5分钟,使用AI配音功能可以在短时间内实现多个剪辑需求。 HMS Core音频编辑服务(Audio Editor Kit)提供AI配音服务,帮助开发者在应用中轻松构建语音合成功能,一键输出文字即可转换语音。它支持乖萌童声,亲切女声,阳光男声,英文男声、女声等多种风格音色,还可以定制自己想要的音色。音色自然流畅,情感丰富,满足有声阅读、音频内容制作、剪辑等多种开发者关注的热门场景。 开发实战 1.开发准备 详细准备步骤可参考华为开发者联盟官网: https://developer.huawei.com/consumer/cn/doc/development/Media-Guides/config-agc-0000001154009063?ha_source=hms1 2.编辑工程集成 2.1设置应用的鉴权信息 开发者需要通过api_key或者Access Token来设置应用鉴权信息。 (推荐)通过setAccessToken方法设置Access Token,在应用启动时初始化设置 HAEApplication.getInstance().setAccessToken("your access token"); 通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。 HAEApplication.getInstance().setApiKey("your ApiKey"); 2.2初始化环境 初始化音频编辑管理类、创建时间线以及需要的泳道。 // 创建音频编辑管理类 HuaweiAudioEditor mEditor = HuaweiAudioEditor.create(mContext); // 初始化Editor的运行环境 mEditor.initEnvironment(); // 创建时间线 HAETimeLine mTimeLine = mEditor.getTimeLine(); // 创建泳道 HAEAudioLane audioLane = mTimeLine.appendAudioLane(); 导入音乐。 // 泳道末尾添加音频资源 HAEAudioAsset audioAsset = audioLane.appendAudioAsset("/sdcard/download/test.mp3", mTimeLine.getCurrentTime()); 3. AI配音功能集成 调用HAEAiDubbingEngine实现AI配音功能。 // 通过此配置类来对AI配音引擎进行配置 HAEAiDubbingConfig haeAiDubbingConfig = new HAEAiDubbingConfig() // 设置音量 .setVolume(volumeVal) // 设置音速 .setSpeed(speedVal) // 设置发音人 .setType(defaultSpeakerType); // 单个AI配音任务回调 HAEAiDubbingCallback callback = new HAEAiDubbingCallback() { @Override public void onError(String taskId, HAEAiDubbingError err) { // error处理 } @Override public void onWarn(String taskId, HAEAiDubbingWarn warn) {} @Override public void onRangeStart(String taskId, int start, int end) {} @Override public void onAudioAvailable(String taskId, HAEAiDubbingAudioInfo haeAiDubbingAudioFragment, int i, Pair<Integer, Integer> pair, Bundle bundle) { // 开始接收文件,保存成文件 } @Override public void onEvent(String taskId, int eventID, Bundle bundle) { // The synthesis is complete. if (eventID == HAEAiDubbingConstants.EVENT_SYNTHESIS_COMPLETE) { // AI配音任务处理结束,即合成的音频数据全部处理完毕 } } @Override public void onSpeakerUpdate(List<HAEAiDubbingSpeaker> speakerList, List<String> lanList, List<String> lanDescList) { } }; // AI配音引擎 HAEAiDubbingEngine mHAEAiDubbingEngine = new HAEAiDubbingEngine(haeAiDubbingConfig); // 设置AI配音任务播放过程侦听 mHAEAiDubbingEngine.setAiDubbingCallback(callback); // 实时AI配音并播放API,text传入待转语音的文本,modeAI配音任务播放模式 String taskId = mHAEAiDubbingEngine.speak(text, mode); // 暂停播放 mHAEAiDubbingEngine.pause(); // 恢复播放 mHAEAiDubbingEngine.resume(); // 关闭合成 mHAEAiDubbingEngine.stop(); Demo演示 <很高兴见到你> 更多华为音频编辑服务详情,请参考: 服务官网:https://developer.huawei.com/consumer/cn/hms/huawei-audio-editor/?ha_source=hms1 获取指导文档:https://developer.huawei.com/consumer/cn/doc/development/Media-Guides/client-dev-0000001107465102?ha_source=hms1 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

优秀的个人博客,低调大师

技术干货 | 一文带你快速拆解云智慧前端技术架构

主讲人:王海虎,云智慧/智能研究院/算法工程经理 讲师简介:6年开发经验,主攻可视化方向、3d引擎、视野分析方向。18年开始做可视化方向,从前端工程师做到开发经理;开源项目FlyFish的负责人(荣获21年优秀开源项目奖);清华Thulab的DWF项目开发者之一;AntV贡献者之一。 通过本篇内容你可获得: 前端体系都有哪些技术栈? 它们的关系是什么? 都有什么用途? 云智慧的前端技术架构? 云智慧在产品中用到了哪些前端体系框架? 常用技术体系概览 常用的技术体系可以从这几个方面进行分类: 浏览器、可视化、Node、UI框架、数据流、代码质量、基础语言、基础工具等等,如下图: 云智慧的前端架构 云智慧前端技术框架介绍 云智慧常用技术框架有React、Redux和Webpack。 React React起源于Facebook的内部项目,当时市场上的MVC框架均不能满足Facebook的需求,于是决定自己写一套用来建设Instagram的网站,React被做出来之后发现很好用,并于2013年5月正式开源。 React是一个用于构建用户界面的JavaScript库,主要用于构建UI,很多人认为React是MVC中的V(视图),React拥有较高的性能,代码逻辑简单,现在已经成为最火的前端吗框架,大厂最爱。 React的优点: React具有声明式开发、组件化、单向数据流、虚拟IDOM、JSX等功能特点 Redux redux是由Dan Abramov在2015年创建的科技术语,受2014年Facebok的Flux架构以及函数式编程语言Elm启发。很快,Redux因其简单易学体积小在短时间内成为最热门的前端架构。 Redux对于JavaScript应用而言是一个可预测状态的容器,它是一个应用数据流框架,Redux最主要是用作应用状态的管理,解决复杂组件通信。 Redux的适用于复杂通信情况下,比如说这些情形: 组件之间复杂的交互 某个状态需要在全局任何地方可以拿得到 频繁交互、通信 对于简单的交互项目,使用redux的话,反而会变得更加复杂,所以当交互拥有一定的复杂程度,使用redux才能最高效的解决问题。 Redux帮云智慧做了什么? 将共用的变量进行提升,可以使得每一个组件都去访问共用的变量 Webpack webpack是一个前端资源加载/打包工具,它将根据模块的依赖关系进行静态分析,然后将这些模块按照知识的规则生成对应的静态资源。 webpack可以帮助我们模块化打包、处理静态文件、代码转译、解决兼容等等.... 云智慧前端常用技术库介绍 Ant Design antd是由蚂蚁金服体技术部维护的一套UI框架,基于Ant Design设计体系的React UI组件库,开箱即用的高质量React组件,目前与阿里、美团、滴滴、简书都已采用,是目前较优秀的一套UI框架。 它的优势是开箱即用的高质量组件、统一UI组件、多主题、支持多端、社区广泛 Echarts Echarts是一个使用JS实现的开源可视化库,支持pc、移动、底层依赖矢量图形库ZRender,交互丰富,可高度个性化定制的数据可视化图表。 它的优势就是你能想到的任何东西,都是可以去更改的。 antV/G6 antV是阿里开源的,包含的内容很多,G6是其中的一个小模块。G6是一个前端图可视化引擎,它提供了图的绘制、布局、分析、交互、动画等基础的图可视化能力,旨在让关系变得透明、简单,让用户获得关系数据的insight。 G6的优势是支持自定义的,可以支持多色,支持图片,API很全面,可以很快实现我们的需求。和SVG相比,是只支持单色的,如果想做下图这样的色彩不一样,是做不到的。 以下是我们在一些产品和项目中的应用,感兴趣的朋友可以详细看下。 Three Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。不过,这款引擎还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏)three.js的代码托管在github上面。 Mapbox Mapbox公司于2010年6月01日在美国成立。http://Mapbox.com是一个很棒的地图制作及分享网站,用户可以使用Mapbox Studio创建一个自定义、交互式的地图,然后可以将这些自定义的地图和数据服务你自己的网站(Web)或移动应用程序(MobileWeb/Android/IOS)上。 Cesium Cesium 是一个跨平台、跨浏览器的展示三维地球和地图的 javascript 库,使用WebGL 来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL,Cesium是基于Apache2.0 许可的开源程序。它可以免费的用于商业和非商业用途。支持2D,2.5D,3D 形式的地图展示。可以绘制各种几何图形、高亮区域,支持导入图片,甚至3D模型等多种数据可视化展示。可用于动态数据可视化并提供良好的触摸支持,支持绝大多数的浏览器和mobile。Cesium还支持基于时间轴的动态数据展示。 写在最后 以上就是关于云智慧前端体系的分享,同时在前端技术的支持下,云智慧开源了一款可视化大屏编排平台——FlyFish来回馈社区,而本次内容的贡献者王海虎也是FlyFish项目负责人。 飞鱼提供丰富的组件和应用模板库,可通过拖拉拽的形式完成数据可视化开发,零开发背景的用户也可完成数据可视化开发工作。同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置,面向复杂需求场景能够保证高效开发与交付。 值得一提的是,FlyFish在开源两周斩获中国开源云联盟2021优秀开源项目奖,同时也成为了Gitee的最有价值开源的GVP项目。 欢迎大家使用飞鱼,期望与广大开发者一起建设FlyFish! 飞鱼介绍:https://my.oschina.net/yunzhihui/blog/5286932 Github地址: https://github.com/CloudWise-OpenSource/FlyFish Gitee地址: https://gitee.com/CloudWise/fly-fish Demo地址: https://www.cloudwise.ai/flyFish.html#/

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册