electron使用electron-builder macOS windows 打包 签名 更新 上架

0. 前言

0.1 项目工程

看清目录结构,以便您阅读后续内容

0.2 参考资料

(1)macOS开发 证书等配置/打包后导出及上架

https://www.jianshu.com/p/c9c71f2f6eac首先需要为Mac App创建App ID: 填写信息如下—Description为"ProjectNameForMac"、Bundle ID为"com.CompanyName...icon-default.png?t=N7T8https://www.jianshu.com/p/c9c71f2f6eac(2) electron应用提交到Mac App Store(MAS)全流程

https://www.jianshu.com/p/3f4765c319b6icon-default.png?t=N7T8https://www.jianshu.com/p/3f4765c319b6

1. 安装electron-builder

2. macOS

2.1 创建 Certificates, Identifiers & Profiles Devices

在mac上安装xcode,打开xcode,然后按以下步骤操作。

(1) xcode的菜单栏:xcode > settings。登录apple id。

(2) 登录后,点击“Download  Manual Profiles”,再然后点击“Manage Certificates...”

再添加下面4个证书,创建后,该证书会自动在 网页上显示出来。

Sign In - Appleicon-default.png?t=N7T8https://developer.apple.com/account/resources/certificates/list

(3)打开以下网址,就会看到前一步创建的 证书

https://developer.apple.com/account/resources/certificates/list

(4) 创建 Identifiers

(5)创建 Devices(这个自行百度吧)

(6)创建Profiles

2.2 下载 Certificates Profiles 到本地 resource文件中

点击 Certificates 列表中的证书,然后点击“download”

在 Profiles 列表中点击“download”

2.3 检查macOS系统的证书配置情况

在 2.1 的步骤用xcode创建证书后,证书会显示在 钥匙串 中(自行百度打开这个程序)

(1) 登录>我的证书 中会看到以下两个证书(还有一个证书 Mac Developer ID Application的证书让我删除了,没在截图中)

(2) 登录>密钥 中会看到以下四个密钥

(3) 系统>我的证书 中会看到以下一个证书

(4) 系统>证书 中会看到以下两个证书

注意注意注意注意注意:

(1) 在每一张单个截图(不是所有截图,只指单个截图)中,证书不能重复,切记(血的教训,不要问为什么,我也不能给你解释清楚)。

如果重复了,就删除这些证书,然后把 2.2下载的cer后缀的证书 在macOS中双击,则就会安装到 “钥匙串访问”程序中

(2) 如果在 系统>证书 的列表中找到“Apple Worldwide Developer Relations Certification Authority”,则从官网下载,至于下载哪个,我也忘记了,你自己 研究一下,大概是 截图中任意一个即可,呵呵。

(3)以上截图中证书的位置大抵如此,反正我就是这么成功的,我也没空再去研究了。如果你没成功,那可以参考我的截图中证书的位置,至少能成功。

https://www.apple.com/certificateauthority/

2.4 安装 provisionprofile 文件

我也不知道要不要安装,反正我是安装了,干脆你也安装吧。

安装后,在此处 会显示这玩意,貌似“greader_distribution.provisionprofile”装上上

2.4 导出 p12文件,以备后用

导出以下四个文件,导出时要求输入密码,你自己输入吧(假设我设置的密码为 gege123)

四个文件的名字各种对应哪个证书,你自己猜猜看。

2.5 再次查看证书情况

打开shell,输入如下命令

xcrun security find-identity -v -p codesigning

注意:不要他奶奶的切换到 sudo su,就用你的正常 用户

看到没,有4个证书安装成功了,如果不成功,就根据2.3重新来一次。

2.6 创建plist文件,以备后用

我也不知道为啥要搞这些文件,你搞就对了。

(1) entitlements.mas.loginhelper.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
    </dict>
</plist>

(2) entitlements.mas.plist

文件中部分内容替换您自己的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.application-groups</key>
        <array>
            <string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string>
        </array>

        <key>com.apple.application-identifier</key>
        <string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string>
        
        <key>com.apple.security.network.client</key>
        <true/>
        <key>com.apple.security.network.server</key>
        <true/>
        
        <key>com.apple.security.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
        <key>com.apple.security.files.user-selected.read-only</key>
        <true/>
        <key>com.apple.security.files.user-selected.read-write</key>
        <true/>
        <key>com.apple.security.files.downloads.read-write</key>
        <true/>
    </dict>
</plist>

(3)entitlements.mas.inherit.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.inherit</key>
        <true/>
    </dict>
</plist>

2.7 package.json 配置

2.7.1 整体配置

(1)总体配置如下,但是根据不同的包格式,得做简单修改。

(2)在后文我也不解释有啥区别,你自己对比一下就知道了。

{
  "name": "greader",
  "productName": "greader",
  "version": "22.7.8",
  "description": "A reader with transparent window background, arbitrary window size, and auto-hide",
  "author": {
    "name": "youername",
    "email": "youeremail",
    "url": "youer office site"
  },
  "main": "src/bootstrap.js",
  "scripts": {
    "pack": " electron-builder --dir ",
    "win": " electron-builder --win --x64",
    "mac": " electron-builder --mac",
    "postinstall": "electron-builder install-app-deps"
  },
  "keywords": [],
  "license": "MIT",
  "dependencies": {
    "bytenode": "^1.5.0",
    "dayjs": "^1.11.8",
    "electron-log": "^4.4.8",
    "iconv-lite": "^0.6.3",
    "jschardet": "^3.0.0",
    "node-machine-id": "^1.1.12",
    "yarn": "^1.22.21"
  },
  "devDependencies": {
    "electron": "25.3.0",
    "electron-builder": "^24.6.4"
  },
  "build": {
    "appId": "GN5XP7HD2C.cn.rouhuasuan.greader",
    "productName": "Greader",
    "copyright": "Copyright © 2021 Alaso",
    "directories": {
      "buildResources": "build",
      "output": "dist"
    },
    "mac": {
      "category": "public.app-category.utilities",
      "target":["dmg", "pkg", "mas", "mas-dev"],
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "icon":"resource/mac.icns",
      "entitlements": "./resource/entitlements.mas.plist",
      "entitlementsInherit": "./resource/entitlements.mas.inherit.plist",
      "extendInfo": {
        "ElectronTeamID": "GN5XP7HD2C",
        "com.apple.developer.team-identifier": "GN5XP7HD2C",
        "com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader",
        "Bundle name": "Greader",
        "LSHasLocalizedDisplayName": true,
        "ITSAppUsesNonExemptEncryption": "NO"
      }
    },
    "mas": {
      "type": "distribution",
      "identity": "penghui deng (GN5XP7HD2C)",
      "hardenedRuntime" : false,   
      "provisioningProfile": "./resource/greader_distribution.provisionprofile"
    },
    "masDev": {
      "type": "development",
      "identity": "penghui deng (8MUK7LXZQ5)",
      "hardenedRuntime": false,
      "provisioningProfile": "./resource/greader_development.provisionprofile"
    },
    "dmg": {
       
    },
    "pkg": {
      "identity": "penghui deng (GN5XP7HD2C)"
    },
    "win":{
      "target": ["nsis", "msi", "zip"],
      "icon": "resource/win.ico"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true
    },
    "msi": {
      "menuCategory": "bestapp"
    }
  }
}

2.7.2 编译mas-dev

(1)package配置

{
  "name": "greader",
  "productName": "greader",
  "version": "22.7.8",
  "description": "A reader with transparent window background, arbitrary window size, and auto-hide",
  "author": {
    "name": "youername",
    "email": "youeremail",
    "url": "youer office site"
  },
  "main": "src/bootstrap.js",
  "scripts": {
    "pack": " electron-builder --dir ",
    "win": " electron-builder --win --x64",
    "mac": " electron-builder --mac",
    "postinstall": "electron-builder install-app-deps"
  },
  "keywords": [],
  "license": "MIT",
  "dependencies": {
    "bytenode": "^1.5.0",
    "dayjs": "^1.11.8",
    "electron-log": "^4.4.8",
    "iconv-lite": "^0.6.3",
    "jschardet": "^3.0.0",
    "node-machine-id": "^1.1.12",
    "yarn": "^1.22.21"
  },
  "devDependencies": {
    "electron": "25.3.0",
    "electron-builder": "^24.6.4"
  },
  "build": {
    "appId": "GN5XP7HD2C.cn.rouhuasuan.greader",
    "productName": "Greader",
    "copyright": "Copyright © 2021 Alaso",
    "directories": {
      "buildResources": "build",
      "output": "dist"
    },
    "mac": {
      "category": "public.app-category.utilities",
      "target":["mas-dev"],
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "icon":"resource/mac.icns",
      "entitlements": "./resource/entitlements.mas.plist",
      "entitlementsInherit": "./resource/entitlements.mas.inherit.plist",
      "extendInfo": {
        "ElectronTeamID": "GN5XP7HD2C",
        "com.apple.developer.team-identifier": "GN5XP7HD2C",
        "com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader",
        "Bundle name": "Greader",
        "LSHasLocalizedDisplayName": true,
        "ITSAppUsesNonExemptEncryption": "NO"
      }
    },
    "mas": {
      "type": "distribution",
      "identity": "penghui deng (GN5XP7HD2C)",
      "hardenedRuntime" : false,   
      "provisioningProfile": "./resource/greader_distribution.provisionprofile"
    },
    "masDev": {
      "type": "development",
      "identity": "penghui deng (8MUK7LXZQ5)",
      "hardenedRuntime": false,
      "provisioningProfile": "./resource/greader_development.provisionprofile"
    },
    "dmg": {
       
    },
    "pkg": {
      "identity": "penghui deng (GN5XP7HD2C)"
    },
    "win":{
      "target": ["nsis", "msi", "zip"],
      "icon": "resource/win.ico"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true
    },
    "msi": {
      "menuCategory": "bestapp"
    }
  }
}

(2)执行命令

export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdev.p12
export CSC_KEY_PASSWORD=gege123
export CSC_NAME="penghui deng (8MUK7LXZQ5)"
yarn mac


注意:yarn mac 也可以用 npm run mac代替

2.7.3 编译mas

这个是要发布到 mac store的,不能直接运行

(1)package配置

{
  "name": "greader",
  "productName": "greader",
  "version": "22.7.8",
  "description": "A reader with transparent window background, arbitrary window size, and auto-hide",
  "author": {
    "name": "youername",
    "email": "youeremail",
    "url": "youer office site"
  },
  "main": "src/bootstrap.js",
  "scripts": {
    "pack": " electron-builder --dir ",
    "win": " electron-builder --win --x64",
    "mac": " electron-builder --mac",
    "postinstall": "electron-builder install-app-deps"
  },
  "keywords": [],
  "license": "MIT",
  "dependencies": {
    "bytenode": "^1.5.0",
    "dayjs": "^1.11.8",
    "electron-log": "^4.4.8",
    "iconv-lite": "^0.6.3",
    "jschardet": "^3.0.0",
    "node-machine-id": "^1.1.12",
    "yarn": "^1.22.21"
  },
  "devDependencies": {
    "electron": "25.3.0",
    "electron-builder": "^24.6.4"
  },
  "build": {
    "appId": "GN5XP7HD2C.cn.rouhuasuan.greader",
    "productName": "Greader",
    "copyright": "Copyright © 2021 Alaso",
    "directories": {
      "buildResources": "build",
      "output": "dist"
    },
    "mac": {
      "category": "public.app-category.utilities",
      "target":["mas"],
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "icon":"resource/mac.icns",
      "entitlements": "./resource/entitlements.mas.plist",
      "entitlementsInherit": "./resource/entitlements.mas.inherit.plist",
      "extendInfo": {
        "ElectronTeamID": "GN5XP7HD2C",
        "com.apple.developer.team-identifier": "GN5XP7HD2C",
        "com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader",
        "Bundle name": "Greader",
        "LSHasLocalizedDisplayName": true,
        "ITSAppUsesNonExemptEncryption": "NO"
      }
    },
    "mas": {
      "type": "distribution",
      "identity": "penghui deng (GN5XP7HD2C)",
      "hardenedRuntime" : false,   
      "provisioningProfile": "./resource/greader_distribution.provisionprofile"
    },
    "masDev": {
      "type": "development",
      "identity": "penghui deng (8MUK7LXZQ5)",
      "hardenedRuntime": false,
      "provisioningProfile": "./resource/greader_development.provisionprofile"
    },
    "dmg": {
       
    },
    "pkg": {
      "identity": "penghui deng (GN5XP7HD2C)"
    },
    "win":{
      "target": ["nsis", "msi", "zip"],
      "icon": "resource/win.ico"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true
    },
    "msi": {
      "menuCategory": "bestapp"
    }
  }
}

(2)执行命令

export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac

2.7.4 编译dmg、pkg包

(1)package配置

{
  "name": "greader",
  "productName": "greader",
  "version": "22.7.8",
  "description": "A reader with transparent window background, arbitrary window size, and auto-hide",
  "author": {
    "name": "youername",
    "email": "youeremail",
    "url": "youer office site"
  },
  "main": "src/bootstrap.js",
  "scripts": {
    "pack": " electron-builder --dir ",
    "win": " electron-builder --win --x64",
    "mac": " electron-builder --mac",
    "postinstall": "electron-builder install-app-deps"
  },
  "keywords": [],
  "license": "MIT",
  "dependencies": {
    "bytenode": "^1.5.0",
    "dayjs": "^1.11.8",
    "electron-log": "^4.4.8",
    "iconv-lite": "^0.6.3",
    "jschardet": "^3.0.0",
    "node-machine-id": "^1.1.12",
    "yarn": "^1.22.21"
  },
  "devDependencies": {
    "electron": "25.3.0",
    "electron-builder": "^24.6.4"
  },
  "build": {
    "appId": "GN5XP7HD2C.cn.rouhuasuan.greader",
    "productName": "Greader",
    "copyright": "Copyright © 2021 Alaso",
    "directories": {
      "buildResources": "build",
      "output": "dist"
    },
    "mac": {
      "category": "public.app-category.utilities",
      "target":["dmg", "pkg"],
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "icon":"resource/mac.icns",
      "entitlements": "./resource/entitlements.mas.plist",
      "entitlementsInherit": "./resource/entitlements.mas.inherit.plist",
      "extendInfo": {
        "ElectronTeamID": "GN5XP7HD2C",
        "com.apple.developer.team-identifier": "GN5XP7HD2C",
        "com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader",
        "Bundle name": "Greader",
        "LSHasLocalizedDisplayName": true,
        "ITSAppUsesNonExemptEncryption": "NO"
      }
    },
    "mas": {
      "type": "distribution",
      "identity": "penghui deng (GN5XP7HD2C)",
      "hardenedRuntime" : false,   
      "provisioningProfile": "./resource/greader_distribution.provisionprofile"
    },
    "masDev": {
      "type": "development",
      "identity": "penghui deng (8MUK7LXZQ5)",
      "hardenedRuntime": false,
      "provisioningProfile": "./resource/greader_development.provisionprofile"
    },
    "dmg": {
       
    },
    "pkg": {
      "identity": "penghui deng (GN5XP7HD2C)"
    },
    "win":{
      "target": ["nsis", "msi", "zip"],
      "icon": "resource/win.ico"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true
    },
    "msi": {
      "menuCategory": "bestapp"
    }
  }
}

(2)执行命令

export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac

2.7.5 相关异常问题

(1)如果出现什么 timestamp XXXX 的

没有联网,或者网络不好,多次尝试。也不要使用代理,代理可能导致失败。

(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/172764.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十七、SpringAMQP

目录 一、SpringAMQP的介绍&#xff1a; 二、利用SpringAMQP实现HelloWorld中的基础消息队列功能 1、因为publisher和consumer服务都需要amqp依赖&#xff0c;因此这里把依赖直接放到父工程mq-demo中 2、编写yml文件 3、编写测试类&#xff0c;并进行测试 三、在consumer…

申银万国期货通过ZStack Cube信创超融合一体机打造金融信创平台

信创是数字中国建设的重要组成部分&#xff0c;也是数字经济发展的关键推动力量。作为云基础软件企业&#xff0c;云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施&#xff0c;ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级&#xff0c;是其中唯一兼容四种…

音视频开发是不是C++开发中最难的细分方向?

音视频开发是不是C开发中最难的细分方向&#xff1f; 是不是最难不敢说(毕竟数据库、Office、 大型游戏可能更难)&#xff0c;但确实也已经很难 了。至少对我 这种主要搞web前端的人来说&#xff0c;真的有那种力不从心的感觉。最近很多小伙伴找我&#xff0c;说想要一些音视频…

【微服务】SaaS云智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面&#xff0c;多维度数…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大难点分析

数字化时代银行网点厅堂营销存在以下5大难点&#xff1a; 1、识别难。识别有效的客户比较难&#xff0c;传统的厅堂识别主要依据客户的衣着气质等主管感受&#xff0c;判断客户是否为潜在中高端客户&#xff0c;提供相关服务。大堂经理主管识别与智能化系统识别相结合&#xf…

5年经验之谈 —— 性能测试如何定位分析性能瓶颈?

你好&#xff0c;我是小牛&#xff0c;目前在一家准一线互联网大厂做测试开发工程师。 对于一般公司普通测试工程师来说&#xff0c;可能性能测试做的并不是很复杂&#xff0c;可能只是编写下脚本&#xff0c;做个压测&#xff0c;然后输出报告结果&#xff0c;瓶颈分析和调优…

经典双指针算法试题(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、移动零1、题目讲解2、讲解算法原理3、代码实现 二、复写零1、题目讲解2、讲解算法原理3、…

湖科大计网:应用层

一、应用层概述 交互&#xff0c;实现特定问题&#xff01; 二、客户与服务器模型 一、C/S 客户/服务器方式 服务与被服务的关系。 二、P2P方式 对等方式 P2P方式是对等的&#xff0c;没有固定的服务器。 三、DNS域名系统 DNS&#xff08;Domain Name System&#xff09; 一、域…

Linux驱动之设备树

1、 Linux设备树的由来 1、1 为什么会有设备树 在Linux 2.6中&#xff0c;arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码&#xff0c;相当多数的代码只是在描述板级细节&#xff0c;而这些板级细节对于内核来讲&#xff0c;不过是垃圾&#xff0c;如板上的plat…

public private protected区别

北风胡乱刮着&#xff0c;我只想关上窗&#xff0c;煮着茶&#xff0c;在扑哧扑哧的白烟里心安理得地懒着。像郁达夫说得那样&#xff1a;“躲在屋里过活的两三个月的生活&#xff0c;却是一年之中最有劲的一段蛰居异境。”不管门外如何变幻莫测&#xff0c;围炉煮茶&#xff0…

深入解析Windows操作系统——概念和工具

文章目录 Windows操作系统的版本Windows NT和Windows 95基础概念和术语内核调试用户模式调试 Windows操作系统的版本 Windows NT和Windows 95 Windows NT和Windows 95之间的一些结构性差异&#xff0c;以及Windows NT优于Windows 95及其后续版本的一些方面&#xff1a; Wind…

(二)pytest自动化测试框架之添加测试用例步骤(@allure.step())

前言 在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景&#xff0c;一般流程性的测试用例的测试步骤比较多&#xff0c;我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。 allure提供的装饰器allure.step()是allure测试报告框架非常有用的功能&am…

前端环境变量释义import.meta.env.xxx

视频教程 彻底搞懂前端环境变量使用和原理&#xff0c;超清楚_哔哩哔哩_bilibili 添加命令行参数 --modexxxxx 新建.env.xxxx文件,其中.env文件会在所有环境下生效 以VITE_开头&#xff0c;字符串无需加双引号 使用import.meta.env.VITE_xxxxx进行调用

WinEdt 11.1编辑器的尝鲜体验

WinEdt 11.1编辑器的尝鲜体验 2023年5月19日&#xff0c;WinEdt 11.1版本发布了&#xff0c;相比WinEdt 10.3, 最新版更加漂亮&#xff0c;更加友好&#xff0c;更加好用了&#xff01; 最大的改变是WinEdt 11.1 有了自带的WinEdtPDF阅读器&#xff0c;所以不再需要下载第三方…

同星智能完成A+轮超亿元融资,国投招商领投

2023年10月&#xff0c;上海同星智能科技有限公司成功完成超亿元A轮融资。本轮融资由国投招商管理的先进制造产业投资基金二期领投&#xff0c;老股东丰年资本超额跟投。 本轮融资将用于产品研发和全球化市场拓展。 同星智能成立于2017年&#xff0c;一直专注于研发国产自主可控…

java算法学习索引之数组矩阵问题

一 将正方形矩阵顺时针转动90 给定一个NN的矩阵matrix&#xff0c;把这个矩阵调整成顺时针转动90后的形式。 顺时针转动90后为&#xff1a; 【要求】额外空间复杂度为O&#xff08;1&#xff09;。 public void rotate(int[][] matrix) {int tR 0; // 左上角行坐标int tC 0;…

NUCLEO-L552ZE SWD外部接口定义

如果使用ST-LINK调试器对外部MCU编程需要将CN4上的跳线拔下。

MAC地址注册管理最佳实践:安全性、可用性和灵活性

MAC地址注册管理是在网络环境中确保设备身份验证和访问控制的重要步骤。本文将介绍MAC地址注册管理的最佳实践&#xff0c;旨在提高安全性、可用性和灵活性&#xff0c;以满足现代网络的需求。 随着网络规模和复杂性的不断增加&#xff0c;管理和维护设备身份变得至关重要。MAC…

MindSpore基础教程:使用 MindCV和 Gradio 创建一个图像分类应用

MindSpore基础教程&#xff1a;使用 MindCV和 Gradio 创建一个图像分类应用 官方文档教程使用已经弃用的MindVision模块&#xff0c;本文是对官方文档的更新 在这篇博客中&#xff0c;我们将探索如何使用 MindSpore 框架和 Gradio 库来创建一个基于深度学习的图像分类应用。我…

京东优惠券查询API接口接入方案,item_search_coupon - 京东优惠券查询接口演示

要接入京东优惠券查询API接口&#xff08;item_search_coupon&#xff09;&#xff0c;您可以按照以下步骤进行操作&#xff1a; 注册并获取API密钥&#xff1a;首先&#xff0c;您需要在京东开放平台上注册并获取API密钥。这将为您提供唯一的标识符和密钥&#xff0c;用于访问…