首页 文章 精选 留言 我的

精选列表

搜索[鸿蒙课程],共8033篇文章
优秀的个人博客,低调大师

【小白课程】一文带你初步了解 QML

QML是Qt框架构成中一种多用途语言,能够高效创建视觉效果更为丰富的用户界面。它与Qt的高性能图形功能结合使用,可以直接从QML应用程序中访问Qt的类型和其他功能。 其中,QML由对象声明、属性、绑定、信号和处理程序事件系统构成,如下所示: 上图中,声明了一个Window作为对象,包含Rectangle元素作为子对象,指定了Window对象的width、height、visible、title属性。Rectangle对象的宽度和高度与Window对象的宽度和高度绑定在一起,当改变Window对象宽度时,会发出widthChanged信号,onWidthChanged信号处理程序会在日志中记录新宽度。 1.什么是属性 属性是对象行为的基本方式,属性的数据类型决定了能够容纳的数据类型和可以对数据进行的操作。QML类型中定义了一组属性来作为对象的基本属性。创建对象类型的实例时都会带着为该对象类型定义的属性集。所有QML属性都与数据类型相关联,可以使用下列几种数据类型: 简单值类型,例如int、double、string和bool。 结构化值类型,例如rect和font。 对象类型不仅可以用于声明对象,还可以用作属性的类型。 特殊值类型,例如list、map和var。 2.什么是绑定 QML使用符合标准的JavaScript引擎,绑定可以包含JavaScript表达式或语句。绑定可以访问对象属性、调用方法,并且可以使用内置的Date和Math等内置的JavaScript对象,例如: height:parent.height/2表示该矩形的高度是其父级高度的一半。 height:Math.min(parent.width, parent.height)表示该矩形的高度取决于父级宽度或高度的最小值。 height:parent.height>100?parent.height:parent.height/2表示该矩形父级高度超过100,则高度等于父级高度,否则高度为父级高度的一半。 3.信号和处理机制 QML具有信号及其处理机制,应用程序和用户界面的组件之间需要信号来相互通信。信号是事件,来自对象的通知,代表发生某件事件,比如点击按钮等操作。发出信号时,需要相应的信号处理程序来响应,它是QML引擎调用的回调函数,在信号处理程序中会通过脚本或者其他操作逻辑来实现组件对事件的响应,举个例子: 在这个示例中,处理了MouseArea对象的clicked()信号。当点击该对象时,矩形位置会随机改变。 4.总结 QML语言支持声明式编程,允许声明应用程序的构建块,并使用各种属性对其进行修饰,而无需担心底层实现细节。同时QML也支持命令式编程来处理事件或操作数据,这些特点使得QML可读性强且易于上手,是设计师和开发人员都能使用的通用语言,方便将草图实现为应用程序。 此外,QML还可以扩展组件,支持封装组件来减低复杂性,并具备多平台和设备构建和部署应用程序的能力。

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

课程发布 | 从入门到实践,彻底搞懂 Serverless!

众所周知,我们在开发应用程序并将其部署在服务器上的过程细节上往往要花费很多精力,有没有一种简单的架构模型能够帮助我们解决这个问题呢?答案就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。 Serverless 兴起于 2017 年,在最近两年伴随着云原生概念的推广愈发火爆,很多开发者非常看好,并认为它一定是未来云计算发展的方向。其实,虽然说是 Serverless,但 Server(服务器)是不可能真正消失的,Serverless 里这个 less 更确切的说是开发不用关心的意思。 Serverless 带来的技术红利众多,其中两个最大的贡献即是在一定程度上大大提高了研发交付的速度和降低了运营成本。 高速度研发交付:在无服务器时代,研发人眼无需对服务器进行监控、配置、更新等运维操作,只需要将代码上传

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

06.Beetl标签函数include ---《Beetl视频课程

本期视频实现了评论列表分页; 内容简介:使用了标签函数include完成分页抽取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 标签函数 include include 标签与JSP、freemark等其他的模板引擎类似。 在一个模板中包含另一个模板, 第一个参数时模板路径, 第二个参数是一个json对象,用来向include的模板传递参数。 <%include("/common/page.html",{page:msgPage,action:"detail",condition:"&id="+blog.id!}){}%> 以下是page.html的模板内容 <div class="paging"> <%if(page.pageNumber <= 1){%> <a href="#">首页</i></a> <%}else{%> <a href="${ctxPath}/${action!}?pageNumber=${page.pageNumber-1}${condition!}">上一页</i></a> <%}%> <%if(page.pageNumber >= page.totalPage){%> <a href="#">末尾页</i></a> <%}else{%> <a href="${ctxPath}/${action!}?pageNumber=${page.pageNumber+1}${condition!}">下一页</i></a> <%}%> </div> 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰,视频比较长,可使用倍速看 百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im 在线播放地址:bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=6 博客目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

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

1.kotlin安卓实践课程-构建application

简介 主要会通过安卓实战来讲解kotlin语法和实际应用,本教程设及知识点包括框架模式mvp+mvvm, Databinding(数据绑定框架),Dagger2(依赖注入框架),DeepLink(页面路由框架),Rxjava,RxAndroid(异步操作框架),Retrofit,Okhtttp等,不过本教程重点在kotlin所以这些框架需要了解可自行百度。 针对人群:Android中级以上,kotlin入门 正式开始 都是程序员,直接看代码 /** * create by bigman * 知识点: 继承 ,init ,lateinit */ class App : Application() { //因为kotlin中的类定义同时也是构造函数,这个时候是不能进行操作的, // 所以kotlin增加了一个新的关键字init用来处理类的初始化问题,init模块中的内容可以直接使用构造函数的参数。 init { instance = this } //加入注解,标注这个apiComponent是需要注入的 //lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate() @Inject lateinit var apiComponent: ApiComponent override fun onCreate() { super.onCreate() //使用组件进行构造,component注射器注入 DaggerApiComponent.builder() .apiModule(ApiModule()) .appModule(AppModule(this)) .build() .inject(this) } //Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员 companion object { lateinit var instance: App } } 语法点1:kotlin继承 class App : Application() {} kotlin的继承就是在类名后直接调用父类的构造方法,这里的我的的应用入口对象App继承于父类Application 语法点2:kotlin init函数 //因为kotlin中的类定义同时也是构造函数,这个时候是不能进行操作的, // 所以kotlin增加了一个新的关键字init用来处理类的初始化问题,init模块中的内容可以直接使用构造函数的参数。 init { instance = this } 上面代码注释已经说明,因为kotlin的类在定义的同时调用了主构造函数,这个时候不能进行任何操作,所以增加了一个init方法可以对构造函数传入的一些参数进行一些初始化操作,比如我们这里是把当前对象赋值给了instance变量 语法点3:kotlin lateinit 语法点4:定义常量与变量var,val和变量类型ApiComponent //加入注解,标注这个apiComponent是需要注入的 //lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate() @Inject lateinit var apiComponent: ApiComponent lateinit可以延迟加载变量,对于非空类型在声明的时候不能赋值的,可以用lateinit修饰,这样可以有效避免空指针,对比学习!!这个符号,这个符号表示当变量为空时会强制抛出空指针,这样显然不是我们想见到的,因为用户是不管你空指针的,他们只知道你的程序异常了。 var用于定义变量,val用于定义常量,代码中apiComponent是一个ApiComponent的变量,:这里的冒号和继承区分一下 语法点5:函数声明 override fun onCreate() { super.onCreate() } 函数定义使用关键字 fun,参数格式为:参数 : 类型注意:kotlin语句不需要分号结束 语法点6:新建对象 //使用组件进行构造,component注射器注入 DaggerApiComponent.builder() .apiModule(ApiModule()) .appModule(AppModule(this)) .build() .inject(this) kotlin新建对象不需要像java那样调用new,直接调用构造方法就行,比如这里的ApiModule()和AppModule(this) 语法点7:伴生对象 //Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员 companion object { lateinit var instance: App } Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员,可用来定义一些常量或者工具方法 欢迎一起交流,有问题加群交流 kotlin实战交流群群二维码.png

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

硅谷课程 | 系统设计的基本方法SNAKE原则

冯沁原,BitTiger联合创始人兼联合CEO 前酷我音乐总监,前阿里巴巴高级专家,北京大学博士&微软学者 冯老师开场首先聊了下分享的三种方式 教授版:学校里老师台上讲,学生下面听 实战版:直接技能,如何能够做出来 面试版:哪些地方是考察点,容易出错的 (点击图片可以看大图) 然后分享了下工程师的其中一个成长阶梯 毕业生->初级工程师->高级工程师->经理->高级经理->总监 通过一个4维测评,每个维度0-5分,满分20分这样的一个小测验,看看自己目前是什么样的位置 冯老师强调:系统设计是在公司晋升的核心能力 系统设计是一个定义系统的架构、组件、模块、接口和数据来满足特定需求的过程 通常我们会从Scenario(场景),Necessary(限制),Application(应用),Kilobit(数据),Evolve(

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Sublime Text

Sublime Text

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

WebStorm

WebStorm

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

用户登录
用户注册