微信小程序(基本操作)

news2024/11/28 12:42:08

概念:

小程序:就是程序,mini program。现在市面上有微信小程序,百度智能小程序等等。

微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。也体现了“用完即走”的理念,用户不用担心是否安装太多应用的问题。应用将无处不在,随时可用,且又无需安装卸载。

全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。小程序、订阅号、服务号、企业号是并行的体系。

微信小程序的优势及适用场景。

1) 开发角度:

a. 程序框架本身所具有的快速加载和快速渲染能力,加之配套的云能力、运维能力和数据汇总能力,使得开发者不需要去处理琐碎的工作,可以把精力放置在具体的业务逻辑的开发上。

b. 小程序的模式使得微信可以开放更多的数据,开发者可以获取到用户的一些基本信息,甚至能够获取微信群的一些信息,使得小程序的开放能力变得更加强大

c. 运行速度远远高于移动端网页,几乎可与手机APP媲美

d. 项目搭建迅速,适合快速构建需求

e. 短小精悍, 每个app源代码不会超过2MB

f. 无需下载安装,直接使用,触手可及!

g. 小程序整合了所学习的知识

2) 商业角度:

微信小程序的优势可以说至今没有任何软件可以比拟的,将成为商家的一个新营销战场,谁先进入这个战场谁的流量优势就大,更何况它还能给我们提供八大功能。

a. 流量来源多样化:目前小程序入口已经到四十多个,二维码、附近小程序、分享小程序等,流量多种多样。用户可以通过多种多样的方式进入小程序,而微信用户中包括城市用户、农村用户等各种用户群体,用户渗透率特别高,小程序无需担心流量。

b. 利用社交关系传播:店铺里的群体可以将客户导入到微信,利用信任、偏见建立传播聚合等方式,通过尽可能多加好友来进行传播,可以利用个人关系的传播,还可利用网红进行传播,例如生活中常见的好友国外代购以及网红直播卖面膜等等都是社交电商。

c. 搜索广告与公众号嵌入:微信小程序功能的开放与公众号的结合更紧密,高质量的内容+小程序会为商家带来更多的订单量。

准备工作

注册小程序帐号

① 准备一个微信号(你如果还没有微信号,你out了,你是穿越来的吧)

② 申请小程序账号:小程序

获取开发密钥(appId)

在做项目时需要密钥

公众平台登录小程序->开发->开发管理->开发设置->AppID(小程序ID) wx1481c0459dc80dab

安装开发工具

开发工具,可以选择自己喜欢的,也可以选择微信工具,下载微信开发工具,微信开发工具可完成开发,调试,打包,部署的工作

目录结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page

默认的目录结构:

1、全局文件

app开头的文件名是全局文件(文件名不能改),包括app.js、app.json、app.wxss。

app.js:是全局的js文件,里面的变量可以在任何地方使用。

app.json:是对小程序的全局配置。

app.wxss:是全局样式。

2、页面级文件(pages文件夹下)

如:pages/index下。index.js、index.json、index.wxml、index.wxss。这四个文件名必须一样。

index.js:页面js文件,启动后需要先执行【必须有】

index.json:页面配置文件。只能配置窗口项。决定当前窗口表现

index.wxml:页面布局文件,相当于html 【必须有】

index.wxss:页面样式文件。当index.wxss里的样式和全局的app.wxss的样式冲突时,以index.wxss为准。

文件类型

.wxml, .wxss, .json, .js 文件的作用

① WXML(WeiXin Markup Language)文件

wxml模板:跟网页中的html是完成同样的功能。

wxml和HTML的不同之处

A. 标签名不同: wxml把常用的标签进行了封装,如:地图(<map></map>)等等

B. 采用mvvm的模式(如同react和vue一样),js中不直接操作DOM,只操作数据,所以,wxml中就出现了类似于vue中的指令:如:wx:if等

② WXSS文件

和网页开发中的css一样,但是进行了扩展.

wxss在css的基础上扩展了哪些?

1、新增了尺寸单位。在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。

2、提供了全局的样式和局部样式,你可以写一个 app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。

3、此外 WXSS 仅支持部分 CSS 选择器,详细参考:WXSS | 微信开放文档

③ JS文件

JS文件不用解释,就是我们的js文件,完成交互的。

④ JSON文件

配置文件:

App.json:是小程序配置:

小程序代码构成 | 微信开放文档

project.config.json:工具配置

page.json:页面配置

开发文档

框架 组件 API

框架(mina框架)

微信客户端给小程序所提供的环境为宿主环境,小程序的运行环境分成渲染层(webview)和逻辑层(jscore),WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层,小程序的渲染层和逻辑层分别由2个线程管理,这两个线程的通信会经由微信客户端

配置

全局配置

全局配置 | 微信开放文档

app.json,对微信小程序进行全局配置(页面管理,窗口设置,网络请求)

页面配置

页面配置 | 微信开放文档

pagename.json,对本页面的窗口表现进行配置,覆盖全局

项目环境配置

sitemap.jsonproject.config.json

1)、project.config.json是项目开发环境配置, 包括版本、依赖、程序名之类 。

2)、sitemap.json: 配置小程序内的搜索, 当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引 。 用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。 爬虫访问小程序内页面时,会携带特定的 user-agent:mpcrawler 及场景值:1129

如果想全局禁用索引,配置project.config.json,在 setting内部添加checkSiteMap:false,

wxml(官方组件)

视图容器 | 微信开放文档

1、视图容器(View Container) view 视图容器 scroll-view 可滚动视图容器 swiper 可滑动的视频容器

2、基础内容(Basic Content)

icon 图标 ​ text 文字 ​ progress 进度条

3、表单组件(Form)

form 表单

button 按钮 ​ input 输入框 ​ checkbox 多项选择器 ​ radio 单项选择器 ​ picker 列表选择器 ​ slider 滑动选择器 ​ switch 开关选择器 ​ label 标签

4、操作反馈组件(Interaction)

action-sheet 上拉菜单 ​ modal 模态弹框 ​ toast 短通知

5、导航(Navigation)

navigator 应用内跳转

6、多媒体(Media)

audio 音频 ​ image 图片 ​ video 视频

7、地图(Map)

map 地图

wxss(样式)

WXSS | 微信开放文档

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

和CSS 相比,WXSS 扩展的特性有:

尺寸单位

样式导入

1、WXSS尺寸单位

rpx尺寸单位可以根据屏幕宽度进行自适应。

建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准

如:

<view style="width:200rpx;height:160rpx;border:2rpx solid black">ss</view>

<view style="width:100rpx;height:80rpx;border:1px solid black">bb</view>

2、WXSS样式导入

使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

3、WXSS内联样式

框架组件上支持使用 style、class 属性来控制组件的样式。

style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。

4、WXSS选择器

目前支持的选择器有:

5、WXSS全局样式与局部样式

定义在 app.wxss 中的样式为全局样式,作用于所有页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

js(逻辑)

App()和page()

App()是注册小程序的,Page() 是注册页面的,都接受一个 Object 参数,App() 必须在 app.js 中调用,Page()必须出现在页面.js中,必须调用且只能调用一次,都会给当前注册生命周期钩子,和实例成员(方法、属性)

Object 参数

  • data:{} 数据

  • 钩子函数(参数){this 指向当前页面,当前小程序}

  • 自定义函数(){ this 指向当前页面,当前小程序 }

  • 自定义属性:值

页面与主程通讯

pages里面 let app=getApp(), app.实例属性|方法

数据绑定

WXML 中的动态数据均来自对应 Page 的 data。

在WXML里使用双花括号即可。双括号里可以写变量,表达式(包括三元表达式)

1、组件内容绑定使用(双花括号)将变量包起来

2、组件属性(需要在双引号之内,并写上双花括号)

列表渲染

1)、wx:for 指令完成列表渲染。

格式:wx:for="{{数组}}"

默认数组的当前项的下标变量名默认为 index,当前项的变量名默认为 item

如:<组件 wx:for="{{数据}}">{{item}}/{{index}}</组件>

2)、自定义下标名和当前项的名字:

使用 wx:for-item 可以指定数组当前元素的变量名,

使用 wx:for-index 可以指定数组当前下标的变量名:

3)、将 wx:for 用在<block/>标签上,以渲染一个包含多节点的结构块

block 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

条件渲染

1)、wx:if 指令完成条件渲染

<组件 wx:if="{{布尔数据}}"> 惰性渲染 (相当于vue的 v-if)

wx:elif="{{}}"

wx:else

2)、hidden属性

<组件 hidden="{{布尔数据}}" 适合频繁渲染 ,true表示隐藏,false表示显示 (相当于vue的 v-show)

3)、也可以使用 <block>

数据修改和获取

1、获取:

this.data.属性

2、修改

this.setData({key:value}),响应式的显示在view层,数据的修改结果是异步的

注意:

直接修改数据,不会响应式,如:this.data.属性 = 值 修改, view层不实时响应

3、修改全局数据

app.setData({key:value}) 修改的是主程app

事件

基本格式
  • 冒泡方式的绑定事件使用bind

<组件 bindxxx="实例方法"></组件>

xxx==原生移动端事件名(touchstart/touchend/touchcancel/touchmove/tap)

  • 不冒泡方式的绑定事件使用catch

<组件 catchxxx="实例方法"></组件>

事件对象

直接在事件处理函数里声明形参既可以。

如:

 //.wxml
 
 <text bindtap="clickMe" >点我</text>
 
 //.js
 
  clickMe(event){
      console.log(event);
      console.log(event.currentTarget);//就是当前事件源(不是真实的dom,是json对象)
  }
传参

事件处理函数传参时,在组件里写上属性 data-参数名 = "值",在函数里,使用 event.currentTarget.dataset.参数名 获取数据。

<组件 bindxxx="实例方法" data-参数名称="值"></组件>

值: 字符

//实例方法
function(event){
    event.currentTarget.dataset.参数名称;
}

双向绑定

<input value="{{ipt}}" bindinput="checkIpt"></input>

 checkIpt(e){
    this.setData({ipt:e.detail.value});//双向绑定
  },

生命周期钩子函数

小程序生命周期

App(Object object) | 微信开放文档

App(Object object)

注册小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。

App() 必须在 app.js中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

onLaunch(Object object) 小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。 参数:与 wx.getLaunchOptionsSync 一致

onShow(Object object) 小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。 参数:与 wx.onAppShow 一致

onHide() 小程序从前台进入后台时触发。也可以使用 wx.onAppHide 绑定监听。

页面的生命周期

Page(Object object) | 微信开放文档

属性类型默认值必填说明
dataObject页面的初始数据
onLoadfunction生命周期回调—监听页面加载
onShowfunction生命周期回调—监听页面显示
onReadyfunction生命周期回调—监听页面初次渲染完成
onHidefunction生命周期回调—监听页面隐藏
onUnloadfunction生命周期回调—监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottomfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onShareTimelinefunction用户点击右上角转发到朋友圈
onAddToFavoritesfunction用户点击右上角收藏
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTapfunction当前是 tab 页时,点击 tab 时触发

路由

声明式路由

组件:navigator

属性: open-type

值:

  • navigate 只能打开非 tabBar 页面,新+页面栈

  • redirect 只能打开非 tabBar 页面,会替换当前栈

  • switchTab 只能打开 tabBar 页面,目标tabBar页面入栈 关闭其他所有非 tabBar 页面

  • reLaunch 可以打开任意页面,全部出栈,目标页面栈入栈

  • navigateBack 当前页面出栈

  • exit 全部出栈,无进栈 target="miniProgram"时生效

路由传参

url="/pages/xx/xx?a=1&b=2" switchTab 不能传参数

接参

app.js onLaunch(options) options={a:1,b:2}

pages.js onLoad(options) options={a:1,b:2}

编程式路由

1)、wx.redirectTo(object) 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

如:

Wxml文件:
<button bindtap="toOther" >跳到other</button>

Js文件:
toOther(){
    console.log("toOther");
    wx.redirectTo({
        url: "../../pages/other/other",// 注意这个相对路径:朝回返两级,也不能出现在tabBar里
        success: function () {
            console.log("到other了");
        },
        fail: function (e) {
            console.log("失败了,other");
            console.log(e);
        }
    });
},

2)、wx.switchTab(object)

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

注意:只能跳到出现在tabBar的页面里,其它页面不行。

wx.switchTab(Object object) | 微信开放文档

如: App.json里的tabBar的配置:

"tabBar": {
    "list": [
        {
            "pagePath": "pages/index/index",
            "text": "首页"
        },
        {
            "pagePath": "pages/goodslist/goodslist",
            "text": "商品列表"
        }
    ]
}

注意:没有other,有index

goodslist.Wxml文件:

<button bindtap="toIndex" >回到index</button>
<button bindtap="toOther" >跳到other</button>

goodslist.Js文件:

toIndex: function () {
    wx.switchTab({
        url: '../../pages/index/index', //这个能够成功,因为,index在tabBar里的list属性里有。
    })
},
toOther() {
    console.log("toOther");
    wx.switchTab({
        url: "../../pages/other/other", //不能跳转,因为,other没有出现在tabBar的list属性里。
        success: function () {
            console.log("到other了");
        },
        fail: function (e) {
            console.log("失败了,other");
            console.log(e);
        }
    });
},

其它的由各位亲爱的同学们,自己仔细,细心地研究(锻炼自学能力噢……)

人机交互

1)、wx.showToast({})

显示消息提示框

如: Wxml文件:

<button bindtap="regCheck" >注册</button>

Js文件:

regCheck(){
    wx.showToast({
        title: "注册成功",
        icon: "success",
        duration: 500,
        mask: true
    })
},

2)、wx.showModal({})

显示模态对话框

如: Wxml文件:

<button bindtap="deleteInfo" >删除</button>

Js文件:

deleteInfo(){
    wx.showModal({
        title: '微信小程序',
        content: '确认要删除吗',
        success: function (res) {
            if (res.confirm) {
                console.log("你确认了");
            } else if (res.cancel) {
                console.log("你取消了");
            }
        }
    })
},

3)、显示loading提示框

wx.showLoading({})显示等待提示框,需主动调用wx.hideLoading 才能关闭

wx.hideLoading({})隐藏 loading 提示框

如:

wxml代码:

<button bindtap="getData" >获取数据</button>

js代码:

  getData(){
    //显示loading
    wx.showLoading({
      title: 'loading……………………',
    })
    // 发送请求
    setTimeout(function(){
      // 响应回来,隐藏loading
      wx.hideLoading();
    },2000);
​
  },

4)、显示操作菜单 wx.showActionSheet({})显示操作菜单

数据交互

1、请求本地模拟数据

小程序目前是一定要请求https的数据,如果想要请求本地数据需要对数据进行操作。

1).Json数据:

新建.js文件,写json数据

var local_database = [

{数据。。。。。}

]

module.exports = { //数据暴露出去

postList: local_database

}

2).使用json数据:

在需要使用数据的页面js中引用

var postsData=require('../../data/posts-data.js'); //引入

在生命周期的onLoad函数中使用this.setData({})进行数据赋值

2、request数据请求

发起 HTTPS 网络请求。request({参数:值})

1)、request数据请求真实接口数据

每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名与进行网络通信。

否则会出现如下错误:

如何设置: 选中自己的登录头像 选择登录信息 进行合法域名设置

注意:

域名不能使用 IP 地址或 localhost;

域名必须经过 ICP 备案;

2)、request请求mock数据

没有服务器怎么请求数据?那就跳过域名校验。

在微信开发者工具中,可以临时开启 *开发环境不校验请求域名*、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。

如下步骤:

在微信开发工具中 点击设置-》项目设置 就可以正常使用接口

选中:“不校验合法域名、web-view………………”

在代码中就可以使用json-server数据:

onLoad: function () {
    wx.request({
        url: 'http://localhost:3000/goods',
        header: {
            'content-type': 'application/json' // 默认值
        },
        success(res) {
            console.log(res.data)
        }
    })
}

post请求,需要设置请求头

header: { 'content-type': 'application/x-www-form-urlencoded' }

自定义组件

自定义组件 | 微信开放文档

(1) 组件模板和样式

(2) Component 构造器

(3) 组件间通信与事件

(4) 组件生命周期

(5) behaviors

(6) 组件间关系

(7) 数据监听器

(8) 纯数据字段

1、定义

不是创建page,而是创建component,一个小程序组件(wxml,wxss,js,json)

//组件名.js
Component({ //构造一个组件
   //组件的属性列表,相当于vue组件的props
  properties:{
    title:{ //属性名
      type:String,//类型
      value: '默认值'
    }
  },
  //组件数据,内部状态
  data:{ 
    msg:'..'
    num1:1,
    num2:2,
    sum:3
  }
          
  methods:{ //组件方法
    show(){
        console.log(this.data.msg/this.properties.title)
        this.setData({msg:...}) / properties 不可修改
     }
  }
                     
  //组件监听器
  observers: {
    'num1, num2': function(num1, num2) {
      // 在 num1 或者 num2 被设置时,执行这个函数
      this.setData({
        sum: num1 + num2
      })
    }
    
})

2、注册

全局注册

app.json , 到处可用(page,component)

"usingComponents":{
  "使用时的组件名":"components/comp1/comp1"
}
​

局部注册

pagename.json ,当前页面可以

"usingComponents":{....}

组件内注册

当前组件可用

"usingComponents":{....}
"component": true, // 当前组件可以套用组件

3、使用

<comp1 title="{{值}}"></comp1>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法】不懂数学原理也能看得懂的KMP算法

一.KMP算法的作用 举个例子&#xff0c;excel表格大家都用过吧&#xff0c;在表格内按下“CtrlF”可以弹出“查找和替换”功能&#xff0c;输入我们想要查找的关键字&#xff0c;系统就会帮我们定位到具体的位置&#xff0c;没有找到就上报具体的错误信息&#xff0c;KMP算法的…

解释性人工智能(XAI)

引言 解释性人工智能&#xff08;XAI&#xff09;是指一类旨在使人能够理解和解释机器学习模型的方法和技术。XAI的目标是提高AI系统的透明度和可理解性&#xff0c;让人们能够理解机器学习模型的决策过程、推理方式和结果。这对于社会应用和用户信任非常重要&#xff0c;因为A…

Axure 怎么用?一篇文章告诉你

Axure RP 9 该软件是一个非常实用的原型设计工具&#xff0c;了解 Axure、学会使用 Axure&#xff0c;作为产品经理&#xff0c;UI、界面规划等岗位的基本技能。特别是对于产品经理来说&#xff0c;画出优秀的原型可以更好地表达产品需求&#xff0c;提高沟通效率。如何快速入门…

Leetcode第382场周赛

Leetcode第382场周赛 本人水平有限&#xff0c;只做前三道。 一、按键变更的次数 给你一个下标从 0 开始的字符串 s &#xff0c;该字符串由用户输入。按键变更的定义是&#xff1a;使用与上次使用的按键不同的键。例如 s “ab” 表示按键变更一次&#xff0c;而 s “bBBb”…

网络工程师学习笔记——HDLCPPP

继续学习计算机网络技术——HDLC&PPP 一、HDLC HDLC&#xff08; High-Level Data Link Control &#xff09;&#xff1a;高级数据链路控制 HDLC是一种面向比特的链路层协议。 HDLC的作用&#xff1a;接口地址借用&#xff0c;节省IP地址&#xff0c;使地址更加稳定 …

Javaweb实现的学生宿舍管理系统

Javaweb实现的学生宿舍管理系统 文章目录 Javaweb实现的学生宿舍管理系统系统介绍技术选型成果展示源码获取账号地址及其他说明 系统介绍 Javaweb实现的学生宿舍管理系统采用jspservlet技术实现了如下功能模块&#xff0c;分别是宿舍管理员管理、学生管理、宿舍楼管理、缺勤记…

SwiftUI 动画入门之一:路径动画(Path Animations)

概览 在 SwiftUI 的开发中,我们往往需要使用千姿百态的动画把我们的界面元素妆点的更加鲜活灵动。 如上图所示,我们使用路径动画使折线图更加生动了!这是怎么做到的呢? 在本篇博文中,您将学到以下内容: 概览1. 路径与形状(Path and Shape)2. 路径动画的原理3. 让路径…

LeetCode刷题:使用栈解决150. 逆波兰表达式求值

给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式。两个…

程序的内存模型

师从黑马程序员 内存分区模型 内存大方向划分为4个区域 1、代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统管理的 2、全局区&#xff1a;存放全局变量环和静态变量以及常量 3、栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#…

【笔试常见易错选择题01】else、表达式、二维数组、%m.ns、%m.nf、常量指针和指针常量、宏定义、传参、数组越界、位段

1. 下列main()函数执行后的结果为&#xff08;&#xff09; int func(){ int i, j, k 0; for(i 0, j -1;j 0;i, j){ k; } return k; } int main(){cout << (func());return 0; }A. -1 B. 0 C. 1 D. 2 判断为赋值语句&#xff0c;j等于0 0为假不进循环 选B. 2. 下面程…

市场复盘总结 20240201

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 昨日主题投资 连板进级率 6/27 22.2% 二进…

LeetCode刷题:100.相同的树

题目&#xff1a; 解题思路&#xff1a;1.首先要判断根节点的情况&#xff0c;&#xff08;1&#xff09;首先是p为空&#xff0c;q不为空&#xff0c;或者p不为空&#xff0c;q为空则要返回false&#xff08;2&#xff09;p和q都为空则返回true&#xff0c;2.然后判断根节点的…

五、CPU针脚

电脑的两大厂商是Intel、AMD&#xff0c;区分他们两家的CPU&#xff0c;最简单的就是看CPU的针脚。 从形状上也大致能够看出来&#xff0c;AMD的logo占满了CPU的框框&#xff0c;Intel的是没有占满的。 CPU针脚针脚是什么呢&#xff1f; 如下&#xff0c;这一个个和小针一样的东…

【数据结构】 归并排序超详解

1.基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。 将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序…

【操作系统·考研】文件系统

1.概述 文件系统(File System)提供高效和便捷的磁盘访问&#xff0c;以便允许存储、定位、提取数据。 严格来说&#xff0c;VFS并不是一种实际的FS&#xff0c;它只存在于内存中&#xff0c;不存在与任何外存空间中。 VFS在系统启动时建立&#xff0c;在系统关闭时消亡。 2.结…

Mask-Free Video Instance Segmentation

论文地址&#xff1a;[2303.15904] 无掩码视频实例分割 (arxiv.org) 论文代码&#xff1a;https://github.com/SysCV/MaskFreeVis 目录 一、摘要 二、介绍 三、方法 3.1 时间掩码一致性 3.2 时间KNN-patch Loss 3.3 训练MaskFreeVIS 四. 数据集 五.消融实验 六. 结果 七…

统计图表在线配置服务-百度 SugarBI的学习笔记

最近&#xff0c;有个产品要支持统计图表在线可配置&#xff0c;这样&#xff0c;当用户有新增统计指标的需求时&#xff0c;运维人员通过界面化配置&#xff0c;就可以增加统计指标了&#xff0c;不用开发写代码&#xff0c;画页面了。 上网查了下相关的组件&#xff0c;感觉…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextClock组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextClock组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同…

推荐几款便宜雾锁王国(Enshrouded)游戏联机服务器

雾锁王国(Enshrouded)是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;许多玩家会选择自行搭建游戏联机服务器&#xff0c;但是如何挑选价格合适、性能稳定的服务器成为一个难题&#xff0c;本文将为大家推荐几款便宜雾锁王国(Enshrouded)游戏联机服务器。 一…

【大厂AI课学习笔记】1.3 人工智能产业发展(4)——泛在的人工智能

人工智能走向泛在。 泛在&#xff0c;就是广泛存在。&#xff08;下图来自腾讯AI课。&#xff09; 没办法&#xff0c;被百度抛弃了&#xff0c;想学习&#xff0c;课程打不开&#xff0c;只好投想腾讯的怀抱。 之前考过腾讯云的认证&#xff0c;课程做的还是条理很清晰。 主…