HarmonyOS元服务开发实战—端云一体化开发
还记得我第一次接触arkui还是在22年的9月份,当时arkui还在一个比较初试的阶段。时隔一年再见方舟框架,它已经发生了令人瞩目的变化,不得不说华为方舟框架在更新迭代的速度已经遥遥领先。新的功能和性能优化让这个框架更加强大和灵活,为开发者提供了更多的工具和可能性。让我们一起探索这些激动人心的变化,看看它如何重新定义了移动应用开发的标准。
本文我将从元服务、ArkTS语言以及DevEco Studio开发工具的端云一体化开发和低代码开发等方面来详细撰写本文带大家实战体验学习!
一.再识 DevEco Studio开发工具
下载地址:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者
在过去的一年里,DevEco Studio经历了一系列的升级和改进。当我再了解它时,我发现DevEco Studio更新了俩个十分惊艳的功能——端云一体化开发和低代码开发功能。
1.1 HarmonyOS低代码开发
HarmonyOS低代码,有丰富的UI界面编辑功能,例如基于图形化的自由拖拽、数据的参数化配置等,通过可视化界面开发方式快速构建布局,可有效降低用户的时间成本和提升用户构建UI界面的效率。(注:DevEco Studio V2.2 Beta1及更高版本中支持)我们来一起体验一下:
1.没有安装DevEco Studio的用户,需要去官网安装一下DevEco Studio。
2.创建一个新的项目如下:

3.启用超级视觉(低代码开发)如下,名称需要英文即可创建项目,我这里用了我的CSDN(一见已难忘)名作为演示。

4.等待项目成功创建,下载安装必要依赖,成功创建项目如下:

我们观察上部的index.ets,他的代码现在是这样的:
@Entry
@Component
struct Index {@State message: string = '这里是一见已难忘低代码'/*** In low-code mode, do not add anything to the build function, as it will be* overwritten by the content generated by the .visual file in the build phase.*/build() {}
}
5.然后我们对其继续一个可视化的拖拽组件:很容易就完成了一个简单的页面。

6.点击生成我们这个页面的代码:

7.然后我们就得到了这个页面的样式代码了,是不是很简单快捷。
@Entry
@Component
struct Index {@State message: string = '这里是一见已难忘低代码'build() {Column() {Image("")Column() {Button("这是一个按钮").width("180vp").height("80vp").offset({ x: "4.35vp", y: "438.04vp" }).opacity(0.92).enabled(true)Text(`${this.message}`).width("300vp").height("60vp").offset({ x: "-6.39vp", y: "252.76vp" }).textAlign(TextAlign.Center).fontSize("25fp").fontWeight(FontWeight.Bold)DatePicker().width("200vp").height("200vp").offset({ x: "10.1vp", y: "-14.97vp" })} .width("100%").height("100%").offset({ x: "0vp", y: "11.95vp" }).justifyContent(FlexAlign.Center)} .width("100%").height("100%")}
}
1.2 HarmonyOS端云一体化开发
端云一体化开发是DevEco Studio的一个新特性,它允许开发者在本地和云端之间无缝地开发和调试应用程序。通过端云一体化开发,开发者可以更加高效地使用云计算资源,同时也可以在本地快速测试和调试代码。让我们一起体验一下端云一体化开发的魅力。
端云一体化开发基本流程如下:
创建云函数->调试云函数->云函数与应用程序的通信
1.创建云函数:在DevEco Studio中,开发者可以轻松地创建和管理云函数。云函数是一段运行在云端的代码,它可以与应用程序进行通信,执行一些需要在云端完成的任务。通过创建云函数,开发者可以利用云计算的强大能力,同时也可以在本地快速测试和调试代码。
2.调试云函数:在DevEco Studio中,开发者可以使用调试器来调试云函数。调试器允许开发者在本地模拟云函数的运行环境,并在代码中加入断点来进行调试。这使得开发者可以更加轻松地发现和解决问题,提高了开发效率。
3.云函数与应用程序的通信:在端云一体化开发中,云函数与应用程序之间的通信是非常重要的。DevEco Studio提供了一些工具来帮助开发者实现这种通信。例如,开发者可以使用HTTP或WebSocket协议来与云函数进行通信,也可以使用华为提供的云服务SDK来进行更高级的通信操作。这些工具使得开发者可以更加轻松地实现云函数与应用程序之间的交互,提高了开发效率。
端云一体化开发相比大家在学习生涯中都有听说,下面就是 HarmonyOS端云一体化开发相比传统开发的优势,大家对比观看就可以发现其优势巨大。集成端云一体化组件后,进行简单配置即可向应用用户提供登录、支付等多种功能。

下面我们就来一起体验一下端云一体化开发吧。
1.我们到DevEco Studio 创建一个新的工程,点击Template Market ,里面有很多的云端模板,我们下载一个到本地环境里使用。

2.填写配置工程的基本信息如下:

3.我们点击下一步,但是由于我们是第一次接触,我们必然是没有对应的云端的对应配置内容。我们需要到官网注册配置。
官网地址:AppGallery Connect (huawei.com)

4.创建项目名称为:Harmony-myapplication(这是我的案例名称,按照华为包命名规范自行起名即可)。
配置数据处理位置等相关配置好之后,点击开通即可。

5.创建应用
填写对应的参数要求,并且添加到刚刚创建的项目中去。

完成上面该有的配置之后,我们再返回到 DevEco Studio,就可以看到我们刚刚创建的。

点击finsh之后我们创建项目,耐心等待配置和自动下载所需资源包即可。
6.我们的设置SDK也是无需手动配置的,我们的云端一体化创建会帮我们自动的创建好所需的文件和配置,为我们节省了大量的步骤,这里要给我们的系统点一个赞。

7.我们现在在previewer里就可以看到我们最新的代码样式了。如下图所示:

1.2.1 登录组件集成使用
集成端云一体化组件后,只需进行简单配置即可向应用用户提供登录、支付等众多功能。这是我们的端云一体化开发模式的一大特点:
1.首先要保证我们项目里的oh-package.json5里有登录的依赖:
"@ohos/agconnect-auth-component": "^1.0.5"

2.引入组件方法(在页面顶部引入)
import {Login, AuthMode} from "@ohos/agconnect-auth-component";
代码如下:
import Logger from '@ohos.hilog';
import { GoodsList, SearchContainer } from '../../components';
import { GoodModel } from '../../model';
import { Request, RequestType, Triggers } from '../../api';
import { domain, searchText, Constants } from '../../constants';
import {Login, AuthMode} from "@ohos/agconnect-auth-component";
const TAG = new String($r('app.string.Home')).toString();@Component
export struct Home {@State recommendHint: string = searchText;@State searchInput: string = '';@Link token: string;@Link @Watch("onSearchChanged") isSearching: boolean;@State searchResult: Array<GoodModel> = [];private controller: SearchController = new SearchController();onSearchChanged() {Logger.info(domain, TAG, "search state changed " + this.isSearching);}async getSearchResult(keyword) {let params = {"keyword": keyword};let res = await Request.invokeWithToken(Triggers.Commodity, this.token, RequestType.Search, params);//展示搜索列表this.isSearching = true;this.searchResult = res;}build() {Column() {Login({modes: [AuthMode.PASSWORD, AuthMode.PHONE_VERIFY_CODE, AuthMode.MAIL_VERIFY_CODE],onSuccess: (user) => {AlertDialog.show({title: 'authInfo',message: JSON.stringify(user)})}}){Text('Login').decoration({ type: TextDecorationType.Underline });}}.backgroundColor($r('app.color.page_background'))}
}
换成按钮可能会好一点:
Button('Login').fontColor(Color.White);
渲染页面如下:

集成组件代码另附如下:
Column() {Login({modes: [AuthMode.PASSWORD, AuthMode.PHONE_VERIFY_CODE, AuthMode.MAIL_VERIFY_CODE],onSuccess: (user) => {AlertDialog.show({title: 'authInfo',message: JSON.stringify(user)})}}){Text('Login').decoration({ type: TextDecorationType.Underline });}
}
1.2.2 登录组件效果展示
我们在完成上文几处简单的代码配置调用后,就完成了我们的登录组件的撰写,效果还是非常不错的,效果如下:





只有我们实际的操作下来才能感受到他的便利,虽然现在的组件还比较少,但是随着我们框架遥遥领先的迭代速度,我相信在不就的将来,组件库会越来越丰富,到了那个时候鸿蒙开发者的开发应用效率会大幅度的提高。
2.1 探索ArkTS语言的新特性
ArkTS语言也得到了许多更新和改进,它的变化可以说是改头换面的更新,还记得一年前我初始ets(之前ArkTS叫ets)还十分的笨重,很多地方都不完善,相比其他语言(TS,JS)相比会出现很多意想不到的bug,让人摸不着头脑。但是经过一年的迭代更新,其功能现在已经十分强大。让开发者能够更高效地编写和开发应用程序。
比如说:
- 类型推导和类型检查:ArkTS语言现在支持更加智能的类型推导和类型检查。开发者可以更加轻松地编写类型安全的代码,而无需显式地指定每个变量的类型。此外,ArkTS还提供了更加严格的类型检查,以确保开发者在编写代码时遵循正确的类型规则。
- 异步编程:ArkTS语言现在支持更加灵活的异步编程模型。开发者可以使用async/await语法来编写异步代码,使代码更加简洁和易于理解。此外,ArkTS还提供了一些新的异步函数和操作符,使开发者能够更轻松地处理异步任务。
- 模块化编程:ArkTS语言现在支持更加模块化的编程模型。开发者可以将代码划分为多个模块,每个模块都具有独立的作用域和命名空间。这使得代码更加清晰和易于维护,同时也方便了开发者之间的协作。
在使用ArkTS语言开发应用时,状态管理是一个重要的概念。状态管理是指管理应用中的各种状态,包括组件状态、全局状态等。状态管理可以帮助开发者更好地组织和管理应用中的数据,使得应用更加稳定和高效。
ArkTS提供了多维度的状态管理机制,可以在ArkUI开发框架中使用。和UI相关联的数据,不仅可以在组件内使用,还可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,也可以是应用全局范围内的传递。
2.1.2 ArkTS开发Demo实战:在线状态切换
1.引入组件:
const TAG = new String($r('app.string.Home')).toString();
2.这是一个装饰器,用于标记这个结构(struct)作为一个ArkTS组件。@Link 装饰器用于定义组件的链接属性。在这里,token 是一个字符串类型的链接属性是从外部传入的令牌值。每次点击就会切换boolean的值。
import Logger from '@ohos.hilog';
import { GoodsList, SearchContainer } from '../../components';
import { GoodModel } from '../../model';
import { Request, RequestType, Triggers } from '../../api';
import { domain, searchText, Constants } from '../../constants';
import {Login, AuthMode} from "@ohos/agconnect-auth-component";
const TAG = new String($r('app.string.Home')).toString();@Component
export struct Home {@State isSearching: boolean = false;@Link token: string;build() {Column() {Button('一见已难忘:点击切换状态').fontColor(Color.White).onClick(() => {this.isSearching = !this.isSearching;});Text(`现在的状态: ${this.isSearching ? '上线' : '下线'}`).fontSize(18).margin(20);// Text(`Token: ${this.token || 'N/A'}`)// .fontSize(18)// .margin(20);}.backgroundColor($r('app.color.page_background'))}
}
onClick的作用是切换 isSearching 属性。
效果展示:

点击一见已难忘:点击切换状态 按钮在线状态转换,效果如下:

2.1.3 ArkTS开发Demo实战:粉丝计数器实现
粉丝计数器实现的实现非常简单,我们需要先引入依赖:
const TAG = new String($r('app.string.Home')).toString();
设定变量:
@State clickCount: number = 0;@Link isSearching: boolean;@Link token: string;
具体实现代码如下:
import Logger from '@ohos.hilog';
import { GoodsList, SearchContainer } from '../../components';
import { GoodModel } from '../../model';
import { Request, RequestType, Triggers } from '../../api';
import { domain, searchText, Constants } from '../../constants';
import {Login, AuthMode} from "@ohos/agconnect-auth-component";
const TAG = new String($r('app.string.Home')).toString();@Component
export struct Home {@State clickCount: number = 0;@Link isSearching: boolean;@Link token: string;build() {Column() {Text(`一见已难忘计数器Demo`).fontSize(18).margin(20);Button('增加一个粉丝').fontColor(Color.White).onClick(() => {this.clickCount++;});Button('减少一个粉丝').fontColor(Color.White).onClick(() => {this.clickCount--;});Text(`目前的粉丝量: ${this.clickCount}`).fontSize(18).margin(20);}.backgroundColor($r('app.color.page_background'))}
}
上述代码解释:
@State clickCount: number = 0;: 这是一个带有状态的属性,表示点击计数器的值,初始值为0。@Link isSearching: boolean;: 这是一个链接属性,用于跟踪用户是否正在进行搜索操作,它的类型为布尔值。@Link token: string;: 这是另一个链接属性,用于存储某种令牌或身份验证凭据,它的类型为字符串。build() {...}: 这是一个构建方法,用于创建用户界面元素。它包括一个Column,其中包含一些文本标签和按钮,用于增加或减少点击计数器的值,并显示当前计数器的值。Text(一见已难忘计数器Demo): 这是一个文本元素,显示一个标题。Button('增加一个粉丝')和Button('减少一个粉丝'): 这是两个按钮元素,分别用于增加和减少点击计数器的值。这些按钮具有点击事件处理程序,点击按钮时会更新clickCount属性的值。Text(目前的粉丝量: ${this.clickCount}): 这是另一个文本元素,用于显示当前点击计数器的值。
效果展示:

我们点击增加一个粉丝10次:

我们点击增加一个减少粉丝5次:

2.1.4 ArkTS开发Demo实战:待办事项列表
实例代码如下:
主页面:
import { ToItem } from './ToItem'
@Entry
@Component
struct Index {totalTasks: Array<string> = ["CSDN写文章","完成今日开发任务","撰写工作日报","学习ArkTs","放松休息"]build() {Row() {Column() {Text('一见已难忘的待办').fontSize(28).fontWeight(FontWeight.Bold).margin({top:30,bottom: 20}).width("80%")ForEach(this.totalTasks, (item) => {ToItem({content: item})})}.height("100%").width("100%").backgroundColor("#efefef")}.justifyContent(FlexAlign.End)}
}
上述代码解释:
totalTasks: Array<string> = [...]: 这是一个名为totalTasks的数组,包含了一组字符串,每个字符串代表一个待办事项的文本内容。build() {...}: 这是一个构建方法,用于创建主页面的用户界面元素。它包括一个Row,其中包含一个Column,在Column中,首先有一个文本标题(“一见已难忘的待办”),然后使用ForEach循环迭代totalTasks数组,并为每个待办事项创建一个ToItem组件,并传递相应的内容。Text('一见已难忘的待办'): 这是一个文本元素,显示在页面的顶部,可能是一个标题。ForEach(this.totalTasks, (item) => { ToItem({content: item}) }): 这个循环迭代totalTasks数组中的每个元素,对于每个元素,它创建了一个ToItem组件,并将待办事项的内容传递给组件。
这段代码定义了一个主页面(Index 组件),该页面包含一个标题和一组待办事项,每个待办事项都由 ToItem 组件表示。
ToItem页面:
@Component
export struct ToItem{private content:string;@State isComplete: boolean = false;@Builder labelIcon(icon) {Image(icon).width(20)}build(){Row(){if(this.isComplete){// this.labelIcon($r('app.media.radio_on'))}else {// this.labelIcon($r('app.media.radio_off'))}Text(this.content).fontSize(20).margin({left:15}).opacity(this.isComplete ? 0.4 : 1).decoration({type: this.isComplete ? TextDecorationType.Overline : TextDecorationType.None})}.backgroundColor("#fff").borderRadius(24).padding(25).margin(10).width("93%").onClick(() => {this.isComplete = !this.isComplete})}
}
上述代码解释:
private content: string;: 这是一个私有属性,用于存储待办事项的文本内容。@State isComplete: boolean = false;: 这是一个带有状态的属性,表示待办事项是否已完成。初始值为false,但可以通过用户交互改变。@Builder labelIcon(icon) {...}: 这是一个构建器方法,根据传入的icon参数构建一个图像,并应用一些属性,设置图像的宽度。build() {...}: 这是一个构建方法,用于创建待办事项的用户界面元素。它包括一个Row,其中包含一个图标(具体图标取决于isComplete的值)和文本内容。这个方法还设置了一些样式属性,例如背景颜色、圆角、边距、宽度,并添加了点击事件处理程序,以在用户单击时切换isComplete的值。
这段代码定义了一个用户界面组件,用于显示待办事项的文本和一个可点击的图标,用户可以单击以标记待办事项是否已完成。
效果展示:

点击事件后效果如下:(点击完成的事件置灰表示事件已完成)

3.1 深度体验元服务轻量化、信息外显
3.1.1什么是HarmonyOS元服务?
首先,让我们明确一下HarmonyOS元服务的概念。元服务是一种基于HarmonyOS API的全新服务提供方式,它以鸿蒙万能卡片等多种呈现形态,向用户提供更轻量化的服务。这一概念的核心在于将服务提供的方式变得更加灵活和适应性更强,同时为开发者和用户提供了更好的体验。
3.1.2 Hello World 入门案例
1.在创建之前,我们需要保证自己的应用里有元服务的应用,如没有需要自己进行创建。

2.创建一个元服务项目,如下所示:后续的页面选择arkts,继续创建项目。

3.进入项目如下图所示。

到这里我们需要安装真机,具体步骤较为简单,只需要下载安装即可,可以自行查看网络教程。配置好如下图:

调试运行:菜单选择“File > Project Structure”,选择“Signing Configs”,勾选“Automatically generate signatue”。如果未登录,先点击“Sign In”进行登录。

基本的配置完毕之后,我们点击右上的运行按钮,运行结果如下图:

3.1.3 元服务实战:在线状态切换
在线状态切换代码如下:
@Entry
@Component
struct Index {@State message: string = 'Hello World'@State isSearching: boolean = false;build() {Row() {Column() {Button('一见已难忘:点击切换状态').fontColor(Color.White).onClick(() => {this.isSearching = !this.isSearching;});Text(`现在的状态: ${this.isSearching ? '上线' : '下线'}`).fontSize(18).margin(20);}.width('100%')}.height('100%')}
}
运行到真机如下:

点击状态切换:

3.1.4 元服务实战:粉丝计数器实现
元服务实战:粉丝计数器实现代码实现如下:
@Entry
@Component
struct Index {@State message: string = 'Hello World'@State isSearching: boolean = false;@State clickCount: number = 0;build() {Row() {Column() {Text(`一见已难忘计数器Demo`).fontSize(18).margin(20);Button('增加一个粉丝').fontColor(Color.White).onClick(() => {this.clickCount++;});Button('减少一个粉丝').fontColor(Color.White).onClick(() => {this.clickCount--;});Text(`目前的粉丝量: ${this.clickCount}`).fontSize(18).margin(20);}.width('100%')}.height('100%')}
}
运行到真机如下:
初始粉丝数为0,点击6次增加粉丝数效果如下:

点击3次减少粉丝数效果如下:

3.1.5 元服务实战:待办事项列表
元服务实战待办事项列表代码如下:
import { ToItem } from './ToItem'
@Entry
@Component
struct Index {totalTasks: Array<string> = ["CSDN写文章","完成今日开发任务","撰写工作日报","学习ArkTs","放松休息"]build() {Row() {Column() {Text('一见已难忘的待办').fontSize(28).fontWeight(FontWeight.Bold).margin({top:30,bottom: 20}).width("80%")ForEach(this.totalTasks, (item) => {ToItem({content: item})})}.height("100%").width("100%").backgroundColor("#efefef")}.justifyContent(FlexAlign.End)}
}
ToItem实例代码如下:
@Component
export struct ToItem{private content:string;@State isComplete: boolean = false;@Builder labelIcon(icon) {Image(icon).width(20)}build(){Row(){if(this.isComplete){// this.labelIcon($r('app.media.radio_on'))}else {// this.labelIcon($r('app.media.radio_off'))}Text(this.content).fontSize(20).margin({left:15}).opacity(this.isComplete ? 0.4 : 1).decoration({type: this.isComplete ? TextDecorationType.Overline : TextDecorationType.None})}.backgroundColor("#fff").borderRadius(24).padding(25).margin(10).width("93%").onClick(() => {this.isComplete = !this.isComplete})}
}
运行到真机如下:

点击效果如下:

4.1 总结
我是在2021年10月份第一次接触到ArkUI,时隔一年,感触颇深,本文侧重的撰写了元服务,ArkTS语言,DevEco Studio开发工具等在这一年中的巨大更新和迭代的功能深度体验。
- 元服务:这是HarmonyOS提供的一种新型服务模式,它以鸿蒙万能卡片等多种形态呈现,更加轻量化,便于向用户提供服务。
- ArkTS语言:华为自主研发的一种开发语言,基于TypeScript并与之匹配的ArkUI框架,扩展了声明式UI和状态管理等功能,使开发者能够更简洁、更自然地开发跨端应用。
- DevEco Studio开发工具:该工具支持端云一体化开发和低代码开发。在创建工程时选择云开发模板,可以在DevEco Studio内同时完成HarmonyOS应用/服务的端侧与云侧开发,实现端云一体化协同开发。此外,它还支持低代码开发,具有丰富的UI界面编辑功能,如基于图形化的自由拖拽和数据参数化配置等,遵循HarmonyOS JS开发规范,通过可视化界面开发方式快速构建布局,有效降低用户的时间成本并提升构建UI界面的效率。
在本文,我们深入探讨了HarmonyOS元服务、ArkTS语言和DevEco Studio开发工具。通过这些工具的应用,华为为开发者提供了更便捷、高效的开发体验,为用户提供了更丰富、高质量的应用程序。
HarmonyOS元服务不仅是华为技术的创新,也是整个科技行业的一大进步。它代表了未来智能生活的可能性,使得设备之间的互联变得更加便捷和灵活。这一技术也鼓励了更多的开发者加入到鸿蒙生态系统中,共同构建一个繁荣的生态系统。
华为技术有着遥遥领先的迭代速度和庞大的用户量,我相信HarmonyOS将会发展的越来越快,让我们一起加入,成为一名HarmonyOS开发者吧。无论是开发者还是普通用户,都将受益于这一创新浪潮,走向更加智能化的明天。让我们一起期待并迎接这个美好的未来!
相关文章:
HarmonyOS元服务开发实战—端云一体化开发
还记得我第一次接触arkui还是在22年的9月份,当时arkui还在一个比较初试的阶段。时隔一年再见方舟框架,它已经发生了令人瞩目的变化,不得不说华为方舟框架在更新迭代的速度已经遥遥领先。新的功能和性能优化让这个框架更加强大和灵活ÿ…...
【搭环境】装Python3.8 open3d
先装Python3.8 方法一试了找不到Python3.8的库,所以用方法二装上了。 Python3加入环境变量 更改Python默认指向 open3d需要Python3.6以上,最好用Ubuntu18版本,我用的16版本。。...
【C语言】深入解开指针(四)
🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…...
AMEYA360:瑞萨面向高端工业传感器系统推出高精度模拟前端的32位RX MCU
全球半导体解决方案供应商瑞萨电子(TSE:6723)宣布面向高端工业传感器系统推出一款全新RX产品——RX23E-B,扩展32位微控制器(MCU)产品线。新产品作为广受欢迎的RX产品家族的一员,具有高精度模拟前…...
切面Aspect + 策略模式实现待办提醒功能
1.背景 产品需要实现一个待办提醒功能,就是核心业务发生变更即提醒业务员去处理相关业务。譬如:订单上传了支付凭证,那么就会提醒相关业务员去待办列表操办。 2.表设计 其实表设计主要是两张表sys_todo、sys_todo_detail 一张是待办核心表…...
SAP 调取http的x-www-form-urlencoded形式的接口
一、了解下x-www-form-urlencoded形式对于SAP来说有啥区别 简单来说, 1.raw格式就是标准的json格式:{“Name”:“John Smith”,“Age”: 23} 2.x-www格式是要转化一下的:NameJohnSmith&Age23 字段与字段相互连接要用 & 符…...
thingsboard3.6的mailConfigTemplateController错误
1、bug内容 使用3.6版本的tb代码进行打包生成boot的jar包,在启动的时候会报错mailConfigTemplateController bean初始化找不到文件路径。 Error creating bean with name mailConfigTemplateController defined in URL [jar:file:/D:/yuxinwei/AE/thingsboard/thingsboard-3…...
Go语言中获取IP
简介 在net包中提供了获取所有网卡的ip,一般不会用127.0.0.1,::1这样的本地回环地址,可以过滤掉,如果想要获取当前真正在使用的地址,得通过net.Dail去连一下才知道 获取ip地址 func main() {fmt.Println(getIpv4())fmt.Println…...
【Computer Vision Foundation】全球计算机视觉基金会论文网
计算机视觉基金会(Computer Vision Foundation,简称CVF)是一个致力于推动计算机视觉领域研究和发展的组织。以下是关于计算机视觉基金会的一些基本信息: 成立目的: CVF成立的目的是促进计算机视觉领域的学术研究、技术…...
计网(复习自用)
计算机网络 1.概述 1.1概念 含义 计算机网络:是一个将分散的。具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 简单点说,计算机网络是互联的,自治的计算机集…...
安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市
信创是数字中国建设的重要组成部分,也是数字经济发展的关键推动力量。作为云基础软件企业,云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施,ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级,是其中唯一兼容四种…...
【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 6
1、明明买了一个扫地机器人,可以通过以下指令控制机器人运动: F:向前走 10 个单位长度 L:原地左转 90 度 R:原地右转 90 度 机器人初始方向向右,需要按顺序执行以下那条指令,才能打扫完下图中的道路 A、F-L-F-R-F-F-R-F-L-F B、F-R-F-L-F-F…...
nuxt3项目修改端口号
nuxt的默认端口号是3000 一、修改开发环境端口号 方式一:使用环境变量配置,设置(PORT 或 NUXT_PORT) # .env PORT3001 #http://localhost:3001/ NITRO_PORT3001 #http://localhost:3001/ 方式二:nuxt.config.ts里配置…...
c语言中使用openssl对rsa私钥解密
单次加密数据的最大长度(block_len),由RSA秘钥模长RSA_size()和填充模式有关 填充模式:RSA_PKCS1_PADDING, block_lenRSA_size() - 11填充模式:RSA_PKCS1_OAEP_PADDING,block_lenRSA_size() - 4…...
mysql中数据是如何被用B+树查询到的
innoDB是按照页为单位读写的 那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高了增删的效率,但是查询效率低。所以实际上对页中的行数据进行了优化,能以二分的方式进行查…...
Redisson 分布式锁的最佳实践
Redisson 分布式锁的最佳实践 第一、添加依赖第二、添加redisson配置类第三、添加测试类测试结果扩展知识redisson锁中lock方法和tryLock方法有什么区别锁续约 注意事项 引言 在现代分布式系统中,处理并发问题是至关重要的。分布式锁是解决这类问题的关键工具之一。…...
ArkTS声明式开发范式
装饰器 用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 Entry 、 Component 、 State 都是装饰器。 Component 表示这是个自定义组件; Entry 则表示这是个入口组件; State 表示组件中的状态变量,…...
史诗级云故障敲响警钟,应用保障不能没有“连续键”!
近日,知名云服务商出现一次史诗级的云故障:全球所有区域/所有服务同时异常,故障持续长达3小时之多,云上众多应用受到极大影响。 如今,在一个充满不确定性和复杂性的数字化时代,哪怕是顶级云服务商亦不能避…...
SSH连接远程服务器报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决方法
一.错误描述 报错信息里提示了路径信息/root/.ssh/known_hosts:20 二.解决方案 方法一 输入以下指令: ssh-keygen -R XXX(需要连接远程服务器的ip) 按照我的例子ip:10.165.7.136,会返回以下信息: 重新尝试连接: 输…...
数据库——查询连续的月份
一、GP或PGSQL with recursive t(n) as (select date(2023-01-01) union all select n1 from t where n < now()) select to_char(n, yyyy-mm) as ny from t group by ny order by ny 二、Hive select add_months(FROM_UNIXTIME(unix_timestamp(SUBSTR(start_date, 1, 7…...
零基础入门Godot游戏开发:GDScript交互式学习指南
1. 从零到一:为什么选择《Learn GDScript From Zero》作为你的编程起点? 如果你对游戏开发充满好奇,尤其是被《原神》、《哈迪斯》这类独立或商业游戏所吸引,梦想着有一天能亲手创造自己的世界,那么你很可能已经听说过…...
Translumo:打破语言壁垒的实时屏幕翻译助手,3个场景让你重新认识它
Translumo:打破语言壁垒的实时屏幕翻译助手,3个场景让你重新认识它 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr…...
AI神话Mythos:5亿美元的黑市标价与失控的AI安全
一个能发现零日漏洞的AI模型,在发布两周内就被非授权获取——这不是电影,这是2026年的现实。01 4月7日,Anthropic在red.anthropic.com悄悄挂出一份技术报告。 标题平平无奇,内容却像一颗炸弹: 他们新发布的Claude Myth…...
PIM技术:从内存计算原理到AI加速实践
1. PIM技术发展史:从实验室概念到商业落地的演进之路1969年,当William Kautz在《IEEE Transactions on Computers》发表关于"内存中的蜂窝逻辑"论文时,恐怕不会想到这个概念会在50多年后成为突破"内存墙"的关键技术。作为…...
别再手动配路由了!用Apisix数据编辑器YAML文件5分钟搞定API网关转发
用YAML重构API网关:Apisix数据编辑器的效率革命 如果你还在Apisix的Web界面里逐个填写表单配置路由,现在该试试更极客的方式了。想象一下:将复杂的路由规则、插件配置和上游服务定义全部封装在几行YAML代码里,像版本控制代码一样…...
MyTV-Android:如何打造一款极致流畅的电视直播应用终极指南
MyTV-Android:如何打造一款极致流畅的电视直播应用终极指南 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/myt/mytv-android MyTV-Android是一款专为Android设备设计的开源电视直播软件&#…...
NVIDIA Jetson AGX Thor:边缘AI性能优化与量化技术实战
1. NVIDIA Jetson AGX Thor:边缘生成式AI性能的7倍跃升NVIDIA Jetson AGX Thor的发布标志着边缘计算领域的一次重大突破。作为长期从事边缘AI部署的工程师,我亲历了从Jetson Xavier到Orin再到Thor的迭代过程。Thor平台最令人振奋的不仅是其硬件规格的提升…...
5分钟终极指南:如何用DS4Windows让PS手柄在PC上完美运行
5分钟终极指南:如何用DS4Windows让PS手柄在PC上完美运行 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 还在为PlayStation手柄在Windows电脑上无法正常使用而烦恼吗ÿ…...
XUnity.AutoTranslator:为Unity游戏打破语言障碍的智能翻译解决方案
XUnity.AutoTranslator:为Unity游戏打破语言障碍的智能翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在全球化游戏体验日益重要的今天,语言差异往往成为玩家享受优秀…...
AI伦理官2026认证路线:软件测试从业者的专业转型指南
在人工智能技术飞速发展的2026年,AI伦理官已成为全球科技领域的关键角色,负责确保算法决策的公平性、透明性和合规性。随着各国监管框架(如欧盟AI法案和中国《人工智能科技伦理审查与服务办法》)的强制执行,企业对AI伦…...
