广告
广告
广告
前言亲戚朋友来家里做客,难免是要连wifi的,每次都报号码有点麻烦,毕竟有时候也忙其它事去了,所以想着在客厅提供一个扫描连接wifi的二维码,研究了下,写了篇教程,方便有需要的人。通过手机生成二维码进行截图就不说了,我们主要是了解这个二维码是怎么生成的,方便日后自己根据实际情况生成。技术原理WiFi二维码的原理非常简单,它采用的是 WiFi 联盟定义的开放标准格式。只要把你的 WiFi 信息按照下面这个格式排列,任何二维码生成器都能做出来:WIFI:T:<加密类型>;S:<WiFi名称>;P:<WiFi密码>;H:<是否隐藏>;;T (Ty...
前言生活中我们无时无刻不在做选择:如果 明天下雨,就 带伞;否则,就 戴墨镜。在编程中,这种“做选择”的逻辑就是分支语句(也叫条件判断)。在Python中,我们主要使用 if(如果)、else(否则)这两个关键字来实现。⚠️ 写在前面的重要规则:缩进Python 和其他语言最大的不同在于:它靠“缩进”(通常是4个空格或1个Tab)来判断代码属于哪一部分。如果代码缩进了,说明它属于上面那行语句的“下级”。记住: 冒号 : 后面一定要换行并缩进!1. 单分支语句 (if)这是最简单的判断。只有当条件满足(为真)时,才执行代码;如果不满足,就什么都不做,直接跳过。语法结构:if 条件: ...
语句与表达式 (Statements vs. Expressions)这是编程中非常核心的概念,区分它们有助于你理解代码是如何运行的。什么是表达式 (Expression)?表达式是“由于计算而产生值”的代码片段。 简单来说,只要你能把它放在 print() 函数里打印出来的,通常都是表达式。特点:它总会返回一个结果(值)。例子:1 + 1 (计算结果为 2)"Hello World" (字符串本身也是表达式)len("abc") (函数调用返回 3)什么是语句 (Statement)?语句是“执行某种动作”的代码单位。 它像是一个指令,告诉 Py...
前言在 Python 编程中,数据类型决定了“这个数据能做什么”。例如,数字可以相加,字符串可以拼接。但如果你试图把“字符串”和“数字”相加,Python 就会直接报错。为了让代码跑通,我们需要进行数据类型转换。显式类型转换 (强制转换)这是最常用的方式。作为程序员,你必须明确告诉 Python:“把这个数据变成那个类型”。通常使用 Python 的内置函数(类构造器)来实现。1. 基础转换:数字与字符串互转这是处理用户输入(input())和日志输出时必用的技巧。int(x): 转为整数。float(x): 转为浮点数。str(x): 转为字符串。# 场景 1:用户输入的通常是字符串,...
前言在 Python 编程中,输入(Input) 和 输出(Output) 是程序与用户或外部环境进行交互的桥梁。无论是简单的打印“Hello World”,还是复杂的数据处理,都离不开这两个环节。输出函数:print()print() 是 Python 中最常用的函数,用于将数据输出到控制台(标准输出)。基本用法最简单的用法是直接在括号内放入要打印的内容(字符串、数字、变量等)。print("Hello, Python!") print(100) name = "Alice" print(name)print() 函数的参数详解print() 函...
前言在学习 Python 的过程中,你一定会经常看到 None 这个词。它看起来像是一个单词,但它在 Python 编程中有着非常特殊的地位。简单来说,None 是 Python 中表示“空”或“无”的特殊对象。什么是 NoneType?在 Python 中,每样东西都是对象,都有自己的类型(Type)。数字属于 int 或 float 类型字符串属于 str 类型None 属于 NoneType 类型NoneType 只有一个值,那就是 None。它是一个单例对象(Singleton),这意味着无论你在程序的哪个地方使用 None,它引用的都是内存中同一个“空”对象。如何声明和定义声明...
前言在 Python 编程中,布尔类型(bool) 是最基础也是最重要的数据类型之一。这就好比我们生活中的电灯开关,只有“开”和“关”两种状态。在程序的世界里,它们对应着 真(True) 和 假 (False)。掌握布尔类型,是编写程序逻辑(比如“如果……就……”)的关键。什么是布尔值?如何声明?Python 中的布尔值只有两个:True:代表“真”、“对”、“成立”。False:代表“假”、“错”、“不成立”。⚠️ 注意: 在 Python 中,True 和 False 的首字母必须大写。声明方式你可以直接将布尔值赋值给变量,或者通过比较运算产生布尔值。# 1. 直接赋值 is_stu...
前言在 Python 中,字符串(String) 是最常用的数据类型之一。简单来说,只要是用引号括起来的文本,在 Python 眼里都是字符串。无论是名字、一句话,还是一篇长文章,都可以用字符串来表示。声明字符串的几种方式在 Python 中,创建字符串非常灵活。主要有三种方式:使用单引号、双引号和三引号。① 使用单引号 ' '这是最简单的形式。# 使用单引号声明 name = 'Python' message = 'Hello World' print(name) print(message)② 使用双引号 " &...
前言在 Python 编程中,数字是我们最打交道的数据类型。其中,整型 (int) 和 浮点型 (float) 是最基础、最常用的两种。看似简单,但如果不了解底层原理,特别是浮点数的精度问题,很容易在计算金额或科学运算时踩进“深坑”。整型 (int)Python 中的整型用于表示整数(没有小数部分的数字),包括正整数、负整数和零。1. 核心特性:无限精度与 C/Java 等语言不同,Python 3 的 int 类型没有固定的大小限制(不再区分 int 和 long)。只要你的内存够大,Python 就能处理任意大的整数。这使得 Python 非常适合进行大数运算。2. 基础用法与进制表...
什么是变量?(便利贴 vs 盒子)在传统的静态语言(如 C 语言)中,变量通常被比喻为一个盒子:你申请一个盒子,给它贴上名字,然后把数据放进去。但在 Python 中,变量更像是一个便利贴(标签)。对象(Object):是内存中实实在在存储数据的地方(比如数字 10,字符串 "Hello")。变量(Variable):只是一个名字,你把这个名字“贴”到了某个对象上。核心概念: 变量本身不存储数据,它只是指向了存储数据的内存地址。变量的基本用法Python 是动态类型语言,这意味着你不需要显式声明变量的类型(如 int a),直接赋值即可使用。基础赋值# 将 "...
Python 中的注释 (Comments)注释是代码中不会被解释器执行的部分,它们存在的意义是为了让程序员(包括你自己)更好地理解代码逻辑。单行注释Python 中最常用的注释方式是使用井号 #。井号后面的所有内容都会被解释器忽略。独占一行:通常用于解释下方代码块的功能。行末注释:用于解释当前行代码的作用(注意 # 与代码之间应至少保留两个空格)。代码示例:# 这是一个单行注释,用于说明下面的变量 user_age = 25 # 这是一个行末注释,解释变量含义多行注释当注释内容较多,一行写不下时,可以使用多行注释。连续使用 #:这是官方推荐的方式。使用三引号:虽然 '...
官网地址python在顶部导航栏找到Downloads,选择适合你系统的版本下载即可。安装下载完成后,双击安装包进行安装。务必勾选“Add Python to PATH”,这样可以在命令行中直接使用 Python。建议选择“Customize installation”,可以根据需要选择安装组件和路径。一般组件保持默认即可,主要是可以选择安装路径,建议安装在一个简单的路径下,比如 D:\Python。选择好后,点击“Install”开始安装,等待安装完成即可。配置环境变量如果在安装时没有勾选“Add Python to PATH”,需要手动配置环境变量。右键“此电脑”图标,选择“属性”。...
前言在当今的编程世界中,Python 无疑是最受瞩目的语言之一。但要真正掌握它,我们需要跳出语法细节,先从它的设计初衷、发展历史以及它在现代技术栈中的独特生态位说起。一、 意外诞生的“巨蟒”Python 的诞生颇具戏剧性。1989 年圣诞节期间,荷兰程序员 Guido van Rossum(吉多·范罗苏姆,人称“龟叔”)为了打发无聊的假期时间,决定编写一门新的脚本语言。他以自己喜爱的一部电视剧《Monty Python's Flying Circus》(巨蟒之疯狂马戏团)将其命名为 Python。虽然现在我们看到的 Logo 通常是一条大蟒蛇,但这门语言的基因里其实充满了幽默与随性。Py...
前言高级语言(如C、Python)编写的代码,计算机无法直接理解,必须依靠“翻译软件”将其转换为机器指令。根据翻译方式的不同,编程语言分为编译型和解释型两大类,分别对应编译器和解释器一、 核心运行机制对比这两种语言最本质的区别在于:代码是如何被“翻译”并交付给CPU执行的。1. 编译型语言(代表:C、C++、Go)机制:整体翻译,一次生成。流程:源代码通过编译器(Compiler)进行一次性编译,生成一个独立的可执行文件(如Windows下的 .exe)。特点:独立性:生成可执行文件后,源代码即可脱离环境。用户只需运行该文件,无需再次编译。一次编译,多次执行:除非修改代码,否则后续运行无...
前言在开发移动端 H5 项目时,我们经常面临一个棘手的用户体验问题:页面切换时的加载闪烁。当用户在 Tabbar 之间切换时,页面组件通常会重新渲染并触发 API 请求。即使后端响应迅速,用户依然会看到短暂的“白屏”或“骨架屏”,随后内容突然跳出。这种反复的 Loading 状态打断了用户的操作流,体验并不友好。为了解决这一痛点,通常的思路是进行接口缓存。即:将数据缓存在本地,再次进入页面时优先读取缓存。但如果完全依赖缓存,又会导致数据更新不及时。如何在“极速渲染”和“数据新鲜度”之间找到平衡?业界有一个成熟的方案——SWR (Stale-While-Revalidate)。本文将带你在...
前言在使用 Vite + Vue 3 + TypeScript 开发微信 H5 页面时,我们经常遇到一个痛点:TypeScript 报错找不到 WeixinJSBridge。// TS Error: Cannot find name 'WeixinJSBridge'. WeixinJSBridge.invoke('getNetworkType', {}, () => {}); // TS Error: Property 'WeixinJSBridge' does not exist on type 'Windo...
前言最近项目中需要接入用户协议与隐私政策,法务部门提供的是 Word 文档。为了方便维护和在项目中直接渲染,我将文档转换为 Markdown 格式,并通过 Vite 的 unplugin-vue-markdown 插件将其作为 Vue 组件直接引入:<template> <Privacy /> </template> <script lang="ts" setup> import Privacy from "@/locales-other/zh-CN/agreements/privacy.md"...
🚀 前言在 Vue 项目开发中,弹窗(Dialog/Modal/Drawer)是交互的核心载体。然而,随着业务复杂度的攀升,传统的声明式弹窗管理逐渐暴露出“样板代码多”、“状态分散”、“逻辑割裂”等痛点。本文将介绍一种基于 Promise 驱动的命令式弹窗管理方案,它能让你像调用 API 一样从 JS/TS 中直接唤起弹窗,并获取用户操作结果,彻底告别繁琐的 visible 变量。😫 痛点分析:传统模式的“四宗罪”看看这段典型的父组件代码,你是否感到熟悉且头疼?<template> <!-- 满屏的弹窗占位 --> <UserEditDialog v...
前言有时候我们需要将前端项目打包成一个exe文件供人使用,在不考虑性能或者包体大小的情况下,使用Electron来打包项目是一个不错的选择,那么有没有办法从现有的前端项目中加入Electron呢?答案,当然是可以的,这里以我自己的项目为例,我的项目基于Vue3 + TypeScript + Vite,目的是为了实现一个excel文件的格式化处理功能,打包成exe安装包也只是为了减少运维的工作,用户自己安装本地运行就可以了,没必要部署到线上。核心概念:主进程与渲染进程在开始之前,理解 Electron 的两个核心概念至关重要:主进程 (Main Process):每个 Electron 应...
前言之前设置某些域名不进行代理,比如国内的一些站点设置了国外IP不能访问,导致访问失败,我之前一直在【插件设置】-【流量控制】-【绕过指定区域 IPv4 黑名单】里面添加,实际上一点效果都没有,加了个寂寞,网上搜也搜不到什么教程,刚好最近折腾明白了,自己写一篇教程,分享给大家。教程我们需要在OpenClash配置页面中找到:【覆写设置】-【规则设置】-【勾选 自定义规则】,此时会展示两个输入框,第一个是优先匹配,第二个是候选匹配,我们只需要关系第一个优先匹配就行。鼠标移动到第一个输入框中,然后滚动滚轮,找到关键词rules:,我们需要在它的下面添加规则配置,以我自己网站为例,我不希望访问...
前言最近在开发一个较为复杂的表单页面时,我遇到一个场景:页面中包含了一些自定义封装的组件,需要让这些组件的 size 属性(用于控制尺寸)能够自动继承自父级 el-form 组件的设置。我们知道,在 Element Plus 中,只要为 <el-form> 组件设置了 size 属性(如 large 或 small),其内部的 el-input、el-button 等官方组件都能自动继承这个尺寸。 但对于我们自己开发的组件,例如一个自定义的 <Icon> 组件,它默认是无法感知到 el-form 的 size 设置的。那么,如何才能让我们的自定义组件也具备这种“继...
前言在现代前端开发中,规范的版本管理和高效的持续集成/持续部署(CI/CD)是保障项目质量和迭代效率的关键。本文将探讨如何利用 npm(或 pnpm/yarn)对前端项目进行版本号管理,并结合 GitHub Actions 实现标签(tag)触发的自动化发布流程,从而构建一个简洁而强大的 CI/CD 工作流。核心工具:package.json 中的 version 字段所有基于 Node.js 的项目(包括绝大多数前端项目)都通过 package.json 文件来管理元数据,其中 version 字段是记录项目版本号的核心。我们通常遵循语义化版本规范(Semantic Versionin...
前言在使用 Git 提交代码时,我们有时会因为手速过快、疏忽大意或使用 AI 辅助工具时未及时调整,导致提交(Commit)信息不符合规范或包含错误格式。例如:AI 生成的 Commit 信息带有 Markdown 代码块的格式,如下所示,明显是不合适的:``` feat(settings): 重构情绪权重组件并优化交互逻辑 将 EmotionSlider 和 EmotionRadar 组件重构为独立模块,调整其目录结构并增强功能。 ... (省略部分内容) ```为了修复这种情况,我们需要修改已经提交的 Commit 信息。根据要修改提交的数量,Git 提供了不同的解决方案。教程:如何...
前言最近在开发后台管理系统时,我遇到了一个常见的需求:在表格的操作列中,根据数据状态动态显示不同的操作按钮。为了让按钮之间排列整齐并带有分隔符,我使用了 Element Plus 的 el-space 组件。代码如下:<el-space size="16" spacer="|"> <el-button type="primary" text> 修改 </el-button> <el-button v-if="isRecycle" type="succ...
最近评论