首页 文章 精选 留言 我的

精选列表

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

企业级快速开发框架 nbsaas-boot 1.0.14-2023 发布

<parent> <groupId>com.nbsaas.boot</groupId> <artifactId>nbsaas-boot</artifactId> <version>1.0.14-2023</version> </parent> 在这个重要的更新中,我们带来了一系列的功能优化和 bug 修复,旨在提高用户体验并增强框架的稳定性。以下是本次更新的详细内容: 代码生成器优化:我们增加了 BeanExt 和 FormExtField 等注解,以方便扩展 Simple 对象和 Response 对象。这将使得开发者在生成代码时更加灵活,可以根据自己的需求进行扩展。 树形结构类保存时的层级数量问题:我们修复了在此前的版本中,树形结构类的层级数量始终保持为1的 bug。现在,树形结构类的层级数量将正确地根据开发者需要进行保存和显示。 单项目代码生成模块命名混乱问题:我们针对此问题进行了一系列的优化,使得单项目代码生成模块的命名更加规范和清晰,降低开发者在项目中出现命名冲突的概率。 nbsaas-admin 模块功能优化:我们对 nbsaas-admin 模块的部分功能进行了优化,包括但不限于界面交互、性能提升以及用户体验的优化。 nbsaas-boot-starter 模块增加微信支付功能:为了满足更多开发者的需求,我们在基础功能模块 nbsaas-boot-starter 中增加了微信支付功能。现在,开发者只需在项目中引入相应的依赖,即可轻松地使用微信支付功能。 nbsaas-admin-vue3 视图页面优化:我们对 nbsaas-admin-vue3 的视图页面进行了优化,以提供更流畅、更直观的用户体验。包括页面加载速度的提升、界面布局的优化以及交互效果的改进。 boot-nbsaas 具有以下特点: 自动建表:boot-nbsaas 提供了自动建表功能,根据用户定义的数据模型自动生成数据库表结构,减少手动操作,提高开发效率。 开发规范:boot-nbsaas 提供一套开发规范,包括代码风格、命名规范、注释规范等,使团队开发更加规范化和高效化。 代码生成器:boot-nbsaas 提供代码生成器,根据数据模型自动生成前端和后端代码,提高开发效率和代码质量。 多租户支持:boot-nbsaas 支持多租户,为不同客户提供独立的数据存储空间和访问权限,保证数据安全性和隔离性 通过 Command 处理复杂的业务 InputRequestObject context = new InputRequestObject(); context.setConfig(config); context.setFormBean(formBean); new DomainCommand() .after(new ApiCommand()) .after(new ConvertCommand()) .after(new ControllerFrontCommand()) .after(new RestCommand()) .after(new ExtApiCommand()) .after(new RepositoryCommand()) .after(new FieldCommand()) .after(new FinishCommand()).execute(context); 模型构建 @CatalogClass @FormAnnotation(title = "组织架构管理", model = "组织架构", menu = "1,27,88") @Data @Entity @Table(name = "sys_structure") public class Structure extends CatalogEntity { @FormField(title = "父分类名称") @Comment("父分id") @FieldName @FieldConvert(classType = "Integer") @ManyToOne(fetch = FetchType.LAZY) private Structure parent; @OneToMany(fetch = FetchType.LAZY, mappedBy = "parent") private List<Structure> children; } 通过模型数据提取,然后通过代码生成器生成后端代码 + vue3 后端管理代码 基础功能项目 https://gitee.com/cng1985/nbsaas-boot-starter 项目脚手架 https://gitee.com/cng1985/nbsaas-admin vue3 后台管理脚手架 https://gitee.com/cng1985/nbsaas-admin-vue3

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

潦草手写体也能轻松识别,快速提取文字不用愁

基于文本识别(OCR)技术的成熟与应用,日常生活中的大部分“印刷体识别”需求都能被满足,替代了人工信息录入与检测等操作,大大降低输入成本。 而对于复杂的手写体识别需求,业界识别质量却参差不齐。大部分手写体存在字迹潦草,排版不固定,背景复杂,且不同的字体风格各异等问题,给手写体识别带来极大的挑战,不过华为HMS Core机器学习服务的OCR文字识别技术可以帮助解决识别问题。 华为HMS Core 机器学习服务基于OCR识别技术推出最新手写体识别能力,使用拍照设备将纸质信息转化为图片,对图片中横排的手写中文、英文、阿拉伯数字等符号进行检测和识别,支持印刷体识别、手写体识别、行间混排等,可以精准返回手写体和印刷体的类别。同时,对字迹潦草、连笔等情况和试卷、书信等场景进行专项优化,识别准确率可达95%以上。 效果演示: 应用场景: 由于手写体字迹的随意性很大,如背景繁杂、字体大小不一、角度倾斜等,这些问题都有可能直接影响到字符的识别准确率。 基于此,HMS Core 机器学习服务通过海量样本集训练来提升其鲁棒性,不管是浅色背景、田字格、米字格、四方格,还是在有下划线的情况下,识别准确率均可达95%以上,同时支持45°倾斜字体的识别。 手写体识别具有很强的实用性,可广泛应用于试卷批改、笔记电子化、大规模的数据统计如人口普查、信息登记等场景中。 1.智能批改 使用手写体识别技术,对学生日常作业、考试试卷中的手写内容进行自动识别,实现学生作业、考卷的线上批改,大幅提升教师的工作效率和质量。 2.笔记电子化 针对纸质手写文档、手写笔记等内容,同时支持墨水屏识别,实现对手写文字内容的扫描及存储。 开发者只需集成手写体识别服务,就可以将手写纸质文档、笔记、发票等图片中的文字转换成文本格式,供文字处理软件进一步编辑加工。有了它,即使是潦草、模糊的手写信息也能够识别,可以有效解决人工录入速度慢、易出错的问题,从而大大节约时间成本,提高录入效率。 总之,不管是印刷体,还是手写体,HMS Core机器学习服务都能准确识别,开发者们可以根据自己的业务需求自主选择。 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

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

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 [完成]

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册