【前端知识】手搓微信小程序

微信小程序开发介绍

    • 知识概述
    • 语法解析
      • 一、WXML(WeiXin Markup Language)
      • 二、WXSS(WeiXin Style Sheet)
      • 三、JavaScript
      • 四、JSON
    • WXML 标签
    • 核心JS语法
      • 1. 页面配置与生命周期
      • 2. 数据绑定
      • 3. 事件处理
      • 4. 微信小程序API调用
      • 5. 模块化
      • 6. 全局状态管理
      • 注意事项
    • 核心Api
    • 样例展示
      • 1. 项目结构
      • 2. 全局配置(app.json)
      • 3. 用户列表页(user-list)
        • user-list.wxml
        • user-list.js
        • user-list.wxss
      • 4. 用户编辑页(user-edit)
        • user-edit.wxml
        • user-edit.js
        • user-edit.wxss
      • 注意事项
    • 相关链接

知识概述

微信小程序开发涉及多个方面的知识,以下是详细说明:

一、开发前的准备

  1. 账号注册与开发环境搭建
    • 首先,需要在微信公众平台注册一个小程序账号。这个账号用于管理小程序的基本信息、发布版本等操作。
    • 安装微信开发者工具,它是开发微信小程序的专用工具。可以从微信官方网站下载适合自己操作系统的版本。该工具提供了代码编辑、调试、预览等功能,方便开发者进行小程序开发。
  2. 熟悉开发文档
    • 微信官方提供了详细的小程序开发文档。这些文档涵盖了小程序开发的各个方面,包括框架、组件、API等内容。在开发前,需要仔细阅读并熟悉这些文档,以便更好地利用微信小程序提供的各种功能。

二、小程序框架知识

  1. 架构概述
    • 微信小程序采用了MVVM(Model - View - ViewModel)架构。Model层负责数据存储,View层是用户界面,ViewModel层用于数据绑定和事件处理。这种架构使得数据和视图分离,方便开发者进行维护和更新。
    • 小程序的页面由wxml(类似HTML,用于构建页面结构)、wxss(类似CSS,用于样式设计)和js(用于逻辑处理)文件组成。
  2. 页面路由与生命周期
    • 小程序的页面路由管理着页面之间的跳转。它有多种跳转方式,如navigateTo(保留当前页面,跳转到应用内的某个页面)、redirectTo(关闭当前页面,跳转到应用内的某个页面)等。
    • 每个小程序页面都有自己的生命周期函数,例如onLoad(页面加载时触发)、onShow(页面显示时触发)、onHide(页面隐藏时触发)等。这些生命周期函数可以用于初始化数据、请求网络数据、更新页面状态等操作。

三、小程序组件知识

  1. 常用组件介绍
    • 视图容器组件
      • view:类似于HTML中的div,是一个块级容器,用于布局和包裹其他组件。例如,可以用它来划分页面的不同区域。
      • scroll - view:提供滚动功能,当内容超出容器范围时,可以通过滚动来查看全部内容。常用于长列表或者内容较多的区域。
    • 基础内容组件
      • text:用于显示文本内容,支持长按选中等基本的文本操作。可以通过样式设置文本的颜色、大小等属性。
      • image:用于展示图片。可以设置图片的路径、模式(如缩放模式、裁剪模式)等属性。
  2. 组件属性与事件
    • 每个组件都有自己的属性,这些属性用于控制组件的外观和行为。例如,image组件的src属性用于指定图片的来源路径,width和height属性用于设置图片的尺寸。
    • 组件还可以触发事件,如bindtap事件(当用户点击组件时触发)。开发者可以在js文件中定义事件处理函数,来响应这些事件。例如,当用户点击一个按钮(button组件)时,可以触发一个函数来执行登录、提交表单等操作。

四、小程序API知识

  1. 网络请求API
    • 小程序通过wx.request API来发送网络请求。开发者可以使用这个API向服务器获取数据或者提交数据。例如,可以请求一个接口来获取商品列表信息,或者提交用户的订单信息。在请求时,需要设置请求的URL、请求方法(如GET、POST)、请求头和请求数据等参数。
  2. 用户信息API
    • 小程序可以获取用户的基本信息,如wx.getUserInfo API。不过,由于隐私保护等原因,获取用户信息的方式有所变化。现在需要用户主动授权后,才能获取更详细的信息。这些信息可以用于个性化服务、用户登录等场景。
  3. 本地存储API
    • wx.setStorageSync和wx.getStorageSync等API用于本地存储。可以将一些小型的数据,如用户的设置偏好、登录凭证等存储在本地,方便下次使用。这种本地存储方式类似于浏览器的localStorage,但在小程序中有自己的存储规则和限制。

五、小程序的调试与发布

  1. 调试方法
    • 在微信开发者工具中,可以使用调试器来检查代码中的错误。调试器提供了控制台(可以查看日志信息)、元素检查(查看页面结构和样式)、网络检查(查看网络请求情况)等功能。
    • 还可以在真机上进行调试,通过扫描开发者工具提供的二维码,将小程序安装到手机上进行测试,这样可以更好地发现一些在模拟器中无法发现的问题,如手机性能相关的问题。
  2. 发布流程
    • 当小程序开发完成并经过测试后,需要在微信公众平台提交审核。审核人员会根据微信小程序的相关规则,如内容合规性、功能完整性等进行审核。
    • 审核通过后,就可以将小程序发布到微信小程序商店,供用户搜索和使用。发布后,还可以根据用户反馈和业务需求对小程序进行更新和维护。

语法解析

微信小程序是一套用于构建微信小程序的框架,它包含了一系列的语法和规则,用于描述小程序的结构、样式、行为和配置。以下是对微信小程序语法的详细解析:

一、WXML(WeiXin Markup Language)

WXML是微信小程序的标记语言,类似于HTML,用于描述小程序的结构。它包含标签、属性和事件等元素。

  1. 数据绑定

    • 使用双花括号{{}}进行数据与模板的绑定。例如,<view>{{message}}</view>,其中message是页面数据中的一个变量。
    • 组件属性也可以使用数据绑定。例如,<view id="item-{{id}}"></view>,其中id是页面数据中的一个变量。
  2. 条件渲染

    • 使用wx:ifwx:elifwx:else进行条件渲染。当表达式的值为真时,渲染对应的代码块。例如,<view wx:if="{{condition}}">条件为真时显示的内容</view>
    • 也可以使用hidden属性进行条件渲染,但它是通过控制元素的显示与隐藏来实现的,而不是真正地移除或添加元素。例如,<view hidden="{{condition}}">条件为真时隐藏的内容</view>
  3. 列表渲染

    • 使用wx:for进行列表渲染,通过遍历数组来重复渲染组件。例如,<view wx:for="{{array}}" wx:key="id">{{item.message}}</view>,其中array是页面数据中的一个数组,item是数组中的当前元素,id是元素的唯一标识符。
  4. 事件绑定

    • 使用bind关键字进行事件绑定。例如,<button bindtap="tapHandler">点击我</button>,其中tapHandler是事件处理函数的名称。

二、WXSS(WeiXin Style Sheet)

WXSS是微信小程序的样式表语言,类似于CSS,用于描述小程序的样式。

  1. 尺寸单位

    • WXSS引入了响应式长度单位rpx,可以根据屏幕宽度进行自适应。例如,在iPhone6上,屏幕宽度为375px,共有750个物理像素,则750rpx=375px=750物理像素,即1rpx=0.5px=1物理像素。
  2. 样式导入

    • WXSS支持样式导入功能,可以使用@import语句导入外部样式表。例如,@import "common.wxss";
  3. 选择器

    • WXSS支持多种选择器,如元素选择器、类选择器、ID选择器等。但需要注意的是,小程序不支持通配符*选择器。

三、JavaScript

JavaScript在微信小程序中用于描述小程序的交互逻辑,包括数据处理、事件响应等。

  1. 页面构造器Page

    • 使用Page函数来注册一个页面,并指定页面的初始数据、生命周期回调、事件处理函数等。例如:
Page({data: {message: 'Hello, Mini Program!'},onLoad: function() {// 页面加载时触发},changeMessage: function() {// 修改消息内容this.setData({message: 'New Message'});}
});
  1. 全局数据

    • App函数中定义的全局数据可以在各个页面中通过getApp()函数获取到。例如,appData = getApp(); console.log(appData.globalData);
  2. 事件处理

    • 在WXML中绑定的事件会在对应的JavaScript文件中找到相应的事件处理函数进行处理。例如,<button bindtap="tapHandler">点击我</button>对应的事件处理函数为tapHandler

四、JSON

JSON在微信小程序中用于描述小程序的配置信息,包括页面路径、窗口样式等。

  1. 页面配置
    • app.json文件中配置小程序的页面路径、窗口样式等信息。例如:
{"pages": ["pages/index/index","pages/about/about"],"window": {"navigationBarTitleText": "My Mini Program"}
}
  1. 组件配置
    • 在页面的*.json文件中可以配置该页面的组件信息、样式等。例如,在index.json文件中配置页面的样式信息。

综上所述,微信小程序语法包括WXML、WXSS、JavaScript和JSON四个部分,它们共同构成了微信小程序的结构、样式、交互和配置等方面的内容。

WXML 标签

WXML(WeiXin Markup Language)是微信小程序的标记语言,它类似于HTML,但有一些专为微信小程序设计的特性和标签。WXML主要用于描述微信小程序的页面结构。

以下是一些常见的WXML标签及其用途:

  1. 视图容器标签

    • <view>:一个通用的容器标签,类似于HTML中的<div>
    • <scroll-view>:可滚动的视图容器。
    • <swiper>:滑块视图容器,用于实现轮播图效果。
    • <swiper-item>:仅在<swiper>组件中有效,表示滑块视图容器中的每一项。
  2. 基础内容标签

    • <text>:文本标签,用于显示文本内容。
    • <rich-text>:富文本标签,用于显示富文本内容。
    • <icon>:图标标签,用于显示图标,通常配合type属性使用。
  3. 表单相关标签

    • <input>:输入框标签,用于接收用户输入。
    • <textarea>:多行输入框标签。
    • <button>:按钮标签,用于触发事件。
    • <checkbox>:多选框标签。
    • <radio>:单选框标签。
    • <picker>:选择器标签,用于从预定义的数据集中选择一项。
    • <slider>:滑动选择器标签,用于选择一个范围内的值。
    • <switch>:开关选择器标签,用于表示两种状态之间的切换。
  4. 导航标签

    • <navigator>:页面导航标签,用于跳转到其他页面。
  5. 媒体标签

    • <image>:图片标签,用于显示图片。
    • <video>:视频标签,用于播放视频。
    • <audio>:音频标签,用于播放音频(但在微信小程序中不常用,通常使用<video>组件播放音频)。
  6. 其他标签

    • <canvas>:画布标签,用于绘制图形。
    • <map>:地图标签,用于显示地图。
    • <web-view>:用于显示网页内容的标签(但需要注意,小程序中的<web-view>组件需要在app.json中配置域名白名单)。

WXML标签可以嵌套使用,以构建复杂的页面结构。同时,WXML支持数据绑定和事件处理,这使得开发者可以轻松地实现动态页面和交互功能。

在使用WXML时,开发者需要注意以下几点:

  • 标签名是大小写不敏感的,但推荐使用小写。
  • 标签的属性名是大小写敏感的,必须使用小写。
  • 某些标签具有特定的属性和事件,开发者需要参考微信小程序官方文档来了解这些属性和事件的具体用法。

核心JS语法

微信小程序的核心JavaScript部分主要涉及页面的逻辑处理、数据绑定、事件处理以及与微信小程序的API进行交互。在微信小程序中,每个页面通常都有一个对应的.js文件,该文件包含了页面的逻辑代码。

以下是一些微信小程序核心JavaScript的关键点:

1. 页面配置与生命周期

每个页面的.js文件中,通常会有一个Page函数的调用,用于定义页面的初始数据、生命周期函数、事件处理函数等。

Page({data: {// 页面的初始数据},onLoad: function(options) {// 生命周期函数--监听页面加载// options参数包含了打开当前页面路径中的参数},// 其他生命周期函数,如onReady、onShow、onHide、onUnload等// 事件处理函数// 其他自定义函数
});

2. 数据绑定

页面的数据通过data对象进行定义,然后在WXML模板中使用双大括号{{ }}进行数据绑定。当数据发生变化时,页面会自动更新。

// 在Page的data对象中定义数据
data: {message: 'Hello, World!'
}
<!-- 在WXML模板中使用数据绑定 -->
<text>{{message}}</text>

3. 事件处理

在WXML模板中,可以为组件绑定事件处理函数。当事件发生时,对应的事件处理函数会在页面的JavaScript文件中被调用。

<!-- 在WXML模板中绑定点击事件 -->
<button bindtap="handleTap">Click Me</button>
// 在Page中定义事件处理函数
handleTap: function() {// 处理点击事件的逻辑wx.showToast({title: 'Button Clicked!',icon: 'success'});
}

4. 微信小程序API调用

微信小程序的JavaScript代码可以调用微信提供的API,以实现各种功能,如网络请求、本地存储、用户授权等。

wx.request({url: 'https://example.com/api', // 请求的接口地址data: {// 请求的参数},success: function(res) {// 请求成功的回调函数console.log(res.data);},fail: function(err) {// 请求失败的回调函数console.error(err);}
});

5. 模块化

微信小程序支持使用ES6模块语法进行模块化开发。可以将常用的功能封装成模块,然后在需要的地方引入。

// utils.js - 定义一个模块
function add(a, b) {return a + b;
}module.exports = {add: add
};
// 在其他文件中引入模块
const utils = require('../../utils/utils.js');Page({// ...someFunction: function() {const result = utils.add(1, 2);console.log(result); // 输出3}// ...
});

6. 全局状态管理

对于复杂的应用,可能需要使用全局状态管理来管理应用的状态。微信小程序没有内置的状态管理工具,但可以使用第三方库(如Redux、MobX等)或自己实现一个简单的全局状态管理方案。

注意事项

  • 避免在页面的onLoadonReady等生命周期函数中执行耗时操作,以免影响页面加载性能。
  • 合理使用微信小程序的API,注意API的调用频率和限制。
  • 保持良好的代码风格和结构,有助于提高代码的可读性和可维护性。

核心Api

微信小程序的API非常丰富,涵盖了网络请求、界面交互、用户信息、媒体操作、地理位置、文件操作、数据缓存、WebSocket通信等多个方面。以下是一些常用的微信小程序API,以表格形式展示:

API类别API名称描述
网络请求wx.request发起网络请求
wx.uploadFile上传文件
wx.downloadFile下载文件
界面交互wx.showToast显示消息提示框
wx.showModal显示模态对话框
wx.showLoading显示加载框
wx.hideLoading隐藏加载框
wx.showActionSheet显示操作菜单
wx.setNavigationBarTitle设置导航栏标题
wx.setNavigationBarColor设置导航栏颜色
用户信息wx.login登录
wx.checkSession检查登录态是否过期
wx.getUserInfo获取用户信息
媒体操作wx.chooseImage从相册或相机中选择图片
wx.previewImage预览图片,支持多张图片预览
wx.saveImageToPhotosAlbum保存图片到相册
wx.playVoice播放语音
wx.pauseVoice暂停语音播放
wx.stopVoice停止语音播放
wx.playBackgroundAudio播放背景音乐
wx.pauseBackgroundAudio暂停背景音乐
wx.seekBackgroundAudio控制背景音乐播放进度
wx.stopBackgroundAudio停止背景音乐播放
地理位置wx.getLocation获取当前地理位置
wx.chooseLocation选择地理位置
wx.openLocation打开地图选择位置
文件操作wx.saveFile保存文件到本地
wx.getSavedFileList获取本地已保存的文件列表
wx.getSavedFileInfo获取本地文件的文件信息
wx.removeSavedFile删除本地文件
wx.openDocument打开文档
数据缓存wx.getStorageSync从本地缓存中获取数据
wx.setStorageSync将数据存储到本地缓存中
WebSocket通信wx.connectSocket创建一个WebSocket连接
wx.onSocketOpen监听WebSocket连接打开事件
wx.onSocketMessage监听WebSocket接受到服务器的消息事件
wx.sendSocketMessage通过WebSocket连接发送数据
wx.onSocketError监听WebSocket错误事件
wx.closeSocket关闭WebSocket连接
其他wx.scanCode扫码
wx.getNetworkType获取网络类型
wx.getSystemInfo获取系统信息
wx.getBatteryInfo获取电池信息
wx.makePhoneCall拨打电话
wx.vibrateLong长时间振动
wx.vibrateShort短时间振动
wx.setClipboardData设置剪贴板数据
wx.getClipboardData获取剪贴板数据
wx.onNetworkStatusChange监听网络状态变化事件
wx.onBatteryStatusChange监听电量变化事件
wx.startAccelerometer开始监听加速度数据
wx.stopAccelerometer停止监听加速度数据
wx.startCompass开始监听罗盘数据
wx.stopCompass停止监听罗盘数据

请注意,这个列表并不完整,微信小程序还在不断更新和扩展其API。为了获取最新和最全面的API信息,建议查阅微信官方文档。

样例展示

开发一个微信小程序,其中包含用户列表页和用户数据编辑页,涉及多个文件的编写和配置。以下是一个简化的示例,帮助你理解如何实现这一功能。

1. 项目结构

首先,我们假设你的项目结构如下:

project-root/
├── app.js
├── app.json
├── app.wxss
├── pages/
│   ├── user-list/
│   │   ├── user-list.js
│   │   ├── user-list.json
│   │   ├── user-list.wxml
│   │   └── user-list.wxss
│   └── user-edit/
│       ├── user-edit.js
│       ├── user-edit.json
│       ├── user-edit.wxml
│       └── user-edit.wxss

2. 全局配置(app.json)

app.json中,你需要配置页面路径:

{"pages": ["pages/user-list/user-list","pages/user-edit/user-edit"],"window": {"navigationBarTitleText": "User List"}
}

3. 用户列表页(user-list)

user-list.wxml
<view class="container"><block wx:for="{{users}}" wx:key="id"><navigator url="/pages/user-edit/user-edit?id={{item.id}}"><view class="user-item"><text>{{item.name}}</text></view></navigator></block><button bindtap="navigateToAddUser">Add User</button>
</view>
user-list.js
Page({data: {users: [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' }// 初始用户数据]},navigateToAddUser: function() {wx.navigateTo({url: '/pages/user-edit/user-edit?id=0' // 假设id为0表示添加新用户});},// 可以在这里添加从user-edit页面返回时更新用户列表的逻辑(如果需要)onLoad: function(options) {// 处理从其他页面返回时的数据更新(如果需要)}
});
user-list.wxss
/* 添加你的样式 */

4. 用户编辑页(user-edit)

user-edit.wxml
<view class="container"><input type="text" placeholder="Name" value="{{user.name || ''}}" bindinput="updateName" /><button bindtap="saveUser">Save</button><button bindtap="navigateBack">Cancel</button>
</view>
user-edit.js
Page({data: {user: {}},onLoad: function(options) {const id = parseInt(options.id, 10);if (id > 0) {// 根据id从服务器或本地存储获取用户数据(这里简化处理)this.setData({user: { id, name: `User ${id}` } // 假设根据id获取到的用户数据});}},updateName: function(e) {this.setData({user: {...this.data.user,name: e.detail.value}});},saveUser: function() {const { user } = this.data;// 将用户数据保存到服务器或本地存储(这里简化处理)// 然后返回用户列表页wx.navigateBack();// 如果需要,可以在这里发送事件或调用函数来更新用户列表页的数据},navigateBack: function() {wx.navigateBack();}
});
user-edit.wxss
/* 添加你的样式 */

注意事项

  1. 数据持久化:在实际应用中,用户数据通常存储在服务器或本地存储(如wx.setStorage)中。上面的示例为了简化处理,直接在页面中定义了初始数据。

  2. 页面间通信:如果你需要在保存用户后更新用户列表页的数据,可以考虑使用全局事件总线、页面栈操作或存储机制来实现。

  3. 错误处理:在实际应用中,你需要添加错误处理逻辑,例如网络请求失败时的提示。

  4. 导航:上面的示例使用了wx.navigateTo进行页面导航。如果你需要返回上一级页面并传递数据,可以考虑使用wx.navigateBack配合事件或全局状态管理。

  5. 样式:上面的示例没有包含具体的样式定义。你可以根据自己的需求在.wxss文件中添加样式。

相关链接

微信公众平台
微信开发者工具
小程序开发官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析

策略模式&#xff08;Strategy Pattern&#xff09;核心思想是将算法的实现从使用该算法的类中分离出来&#xff0c;作为独立的对象&#xff0c;通过接口来定义算法家族&#xff0c;这样就可以很容易地改变或扩展算法。通过这种方式&#xff0c;可以避免在客户端代码中使用大量…

如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构

前言 将从如何使用脚手架工具开始&#xff0c;快速搭建一个 Express 项目的基础架构。接着&#xff0c;文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后&#xff0c;我们将讨论如何制定合理的接口规范&#xff0c;以确保 API …

《Opencv》基础操作详解(5)

接上篇&#xff1a;《Opencv》基础操作详解&#xff08;4&#xff09;-CSDN博客 目录 接上篇&#xff1a;《Opencv》基础操作详解&#xff08;4&#xff09;-CSDN博客 25、轮廓近似 简介 接口用法 参数说明 返回值 代码示例 结果展示 26、轮廓最小外接圆 简介 接口用…

Java虚拟机面试题:内存管理(上)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

测试用例颗粒度说明

当我们在编写测试用例时&#xff0c;总是会遇到一个问题&#xff1a;如何确定测试用例的颗粒度&#xff1f;测试用例过于粗糙&#xff0c;可能无法全面覆盖系统的细节&#xff1b;而颗粒度过细&#xff0c;又会导致测试重复、冗余。掌握合适的颗粒度&#xff0c;不仅可以提高测…

【C++】深入解析二维数组初始化与越界问题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题代码背景问题现象 &#x1f4af;初步分析与发现的问题1. 二维数组的初始化问题补充说明 2. 数组越界访问为什么数组越界问题没有直接报错&#xff1f; &#x1f4af;解…

Unity性能优化总结

目录 前言 移动端常见性能优化指标​编辑 包体大小优化 FPS CPU占用率 GPU占用率 内存 发热和耗电量 流量优化 前言 终于有时间了&#xff0c;我将在最近两个项目中进行优化的一些经验进行归纳总结以飨读者。因为我习惯用思维导图&#xff0c;所以归纳的内容主要以图来…

用QT实现 端口扫描工具1

安装在线QT&#xff0c;尽量是完整地自己进行安装&#xff0c;不然会少包 参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 临时存储空间不够。 Windows系统通常会使用C盘来存储临时文件。 修改临时文件存储位置 打开系统属性&#xff1a; 右键点击“此电…

鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能

文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上&#xff0c;经常可以见到多图片合集。它的特点是&#xff1a;由多张…

【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析

文章目录 类的加载器ClassLoader自定义类加载器双亲委派机制概念源码分析优势劣势如何打破Tomcat 沙箱安全机制JDK9 双亲委派机制变化 类的加载器 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoa…

nginx学习之路-nginx配置https服务器

文章目录 1. 生成证书2. 配置证书1. 拷贝证书文件2. 修改conf/nginx.conf文件内容 3. 查看效果1. 重载配置2. 访问 1. 生成证书 在linux系统下执行&#xff0c;使用openssl命令。&#xff08;windows环境也可以使用cmder&#xff09; # 1. 生成私钥 server2025.key(无密码保护…

鸿蒙应用开发搬砖经验之—使用DevTools工具调试前端页面

环境说明&#xff1a; 系统环境&#xff1a;Mac mini M2 14.5 (23F79) 开发IDE&#xff1a;DevEco Studio 5.0.1 Release 配置步骤&#xff1a; 按着官方的指引来慢慢一步一步来&#xff0c;但前提是要配置好SDK的路径&#xff08;没有配置的话&#xff0c;可能先看下面的配…

【NLP高频面题 - 分布式训练篇】ZeRO主要为了解决什么问题?

【NLP高频面题 - 分布式训练篇】ZeRO主要为了解决什么问题&#xff1f; 重要性&#xff1a;★★ 零冗余优化器技术由 DeepSpeed 代码库提出&#xff0c;主要用于解决数据并行中的模型冗余问题&#xff0c;即每张 GPU 均需要复制一份模型参数。 ZeRO的全称是Zero Redundancy …

《探秘计算机视觉与深度学习:开启智能视觉新时代》

《探秘计算机视觉与深度学习&#xff1a;开启智能视觉新时代》 一、追溯起源&#xff1a;从萌芽到崭露头角二、核心技术&#xff1a;解锁智能视觉的密码&#xff08;一&#xff09;卷积神经网络&#xff08;CNN&#xff09;&#xff1a;图像识别的利器&#xff08;二&#xff0…

[paddle] 非线性拟合问题的训练

利用paddlepaddle建立神经网络&#xff0c;模拟有限个数据的非线性拟合 本文仍然考虑 f ( x ) sin ⁡ ( x ) x f(x)\frac{\sin(x)}{x} f(x)xsin(x)​ 函数在区间 [-10,10] 上固定数据的拟合。 import paddle import paddle.nn as nn import numpy as np import matplotlib.…

详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)

GPT-3 FAMILY LARGE LANGUAGE MODELS Information Extraction 自然语言处理信息提取任务&#xff08;NLP-IE&#xff09;&#xff1a;从非结构化文本数据中提取结构化数据&#xff0c;例如提取实体、关系和事件 [164]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…

逆向入门(2)C篇-基础知识

C基础 1、在C中&#xff0c;函数的变量是从右往左传递的&#xff0c;也就是test(x,y)&#xff0c;先传入y&#xff0c;再传x。 2、变量的分类&#xff1a; &#xff08;1&#xff09;全局变量。在编译的时候就已经确定了内存地址和宽度&#xff0c;变量名就是内存地址的别名…

服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复

服务器数据恢复环境&故障&#xff1a; 一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测&#xff0c;基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。 服务器数据恢复环境&#xff1a; 1、将服务器中硬盘…

Echart实现3D饼图示例

在可视化项目中&#xff0c;很多地方会遇见图表&#xff1b;echart是最常见的&#xff1b;这个示例就是用Echart&#xff0c; echart-gl实现3D饼图效果&#xff0c;复制即可用 //需要安装&#xff0c;再引用依赖import * as echarts from "echarts"; import echar…

PostgreSQL学习笔记(一):PostgreSQL介绍和安装

目录 概念 PostgreSQL简介 PostgreSQL的关键特性 1. 标准兼容性 2. 扩展性 3. 数据完整性和可靠性 4. 丰富的数据类型 5. 查询能力 6. 事务和并发控制 7. 扩展和插件 8. 跨平台和多语言支持 9. 高可用性和扩展性 常用场景 安装 Linux apt安装 下载安装包安装 客…