当前位置: 首页 > article >正文

VS Code-i18n Ally国际化插件

前言

  • 本文借鉴:i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件,它能通过可视 - 掘金
  • 本来是没有准备将I18n Ally插件单独写一个博客的,但是了解过后,功能强大,使用方便,解决了很多编码痛点,所以在这里单独写一篇使用的步骤和方法
  • 我这里大概列了如下一些优点
    1. 可以直观的看到真实文案,在组件内即可直接看到,无需取对应语言文件内查看原文!!!
    2. 可以智能检测并定位语言文件内未找到的key,避免漏翻译
    3. 可以直接在VS Code工具中翻译对应的语言,而无需单独去翻译网站搜索,并且会自动生成key名,无需自己起名,并且不仅可以单独翻译词语,还可以翻译整个文件批量翻译、文件夹批量翻译
    4. 还可以统计各个语言的翻译进度
  • 我如下演示是基于pnpm + vue3 + I18n演示(当前最新技术比较流行)
  • Vue I18n官网:Vue I18n

安装

  • 该插件是VS Code的一个插件,在左侧工具栏->扩展里面搜索I18n Ally安装即可

在这里插入图片描述

前置框架搭建

1、新建项目

  • 这里我就不演示了,使用pnpm create vite创建vite项目即可

2、安装引入I18n

2.1、安装

pnpm add vue-i18n@10

2.2、新建目录

  • src->locales目录
  • src->locales->en.ts文件,根据自己项目语言来,文件名可以自行更改,也可以使用json文件
  • src->locales->zh-CH.ts文件,根据自己项目语言来,文件名可以自行更改,也可以使用json文件
  • src->locales->index.ts文件,作为目录主文件,暴露出去配置供main.ts文件引入
  • 注意,上面ts文件最好改成.json文件!!因为这个插件对json、yaml支持可读可写,但是对js、ts只支持读

在这里插入图片描述

index.ts
import en from './en'
import zh from './zh-CN'
import { createI18n } from 'vue-i18n';export default createI18n({locale: 'zh', // 要本地化的 Vue 应用程序的语言fallbackLocale: 'zh', // 语言中找不到翻译 API 中指定的密钥资源时要回退到的语言messages: {en,zh}
})

2.3、main.ts文件引入

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import I18n from '@/locales';const app = createApp(App)
app.use(I18n)app.mount('#app')

2.4、测试

  • 可以自行在src->locales/xx.ts文件中添加字段测试

在这里插入图片描述

在这里插入图片描述

启动项目查看是否打印中文,因为上面配置的locale: 'zh'默认语言是中文

在这里插入图片描述

3、文件名格式

各地区的文件名是有规范的,组件内会默认根据文件名查找文件,所以文件名最好依照如下来

英文 : en
美国 : en_US
中国 : zh_CN
台湾:zh_TW
香港 : zh_HK
日本 : ja_JP
秘鲁 : es_PE
巴拿马 : es_PA
波斯尼亚和黑山共和国 : sr_BA
危地马拉 : es_GT
阿拉伯联合酋长国 : ar_AE
挪威 : no_NO
阿尔巴尼亚 : sq_AL
伊拉克 : ar_IQ
也门 : ar_YE
葡萄牙 : pt_PT
塞浦路斯 : el_CY
卡塔尔 : ar_QA
马其顿王国 : mk_MK
瑞士 : de_CH
芬兰 : fi_FI
马耳他 : en_MT
斯洛文尼亚 : sl_SI
斯洛伐克 : sk_SK
土耳其 : tr_TR
沙特阿拉伯 : ar_SA
英国 : en_GB
塞尔维亚及黑山 : sr_CS
新西兰 : en_NZ
挪威 : no_NO
立陶宛 : lt_LT
尼加拉瓜 : es_NI
爱尔兰 : ga_IE
比利时 : fr_BE
西班牙 : es_ES
黎巴嫩 : ar_LB
加拿大 : fr_CA
爱沙尼亚 : et_EE
科威特 : ar_KW
塞尔维亚 : sr_RS
美国 : es_US
墨西哥 : es_MX
苏丹 : ar_SD
印度尼西亚 : in_ID
乌拉圭 : es_UY
拉脱维亚 : lv_LV
巴西 : pt_BR
叙利亚 : ar_SY
多米尼加共和国 : es_DO
瑞士 : fr_CH
印度 : hi_IN
委内瑞拉 : es_VE
巴林 : ar_BH
菲律宾 : en_PH
突尼斯 : ar_TN
奥地利 : de_AT
荷兰 : nl_NL
厄瓜多尔 : es_EC
台湾地区 : zh_TW
约旦 : ar_JO
冰岛 : is_IS
哥伦比亚 : es_CO
哥斯达黎加 : es_CR
智利 : es_CL
埃及 : ar_EG
南非 : en_ZA
泰国 : th_TH
希腊 : el_GR
意大利 : it_IT
匈牙利 : hu_HU
爱尔兰 : en_IE
乌克兰 : uk_UA
波兰 : pl_PL
卢森堡 : fr_LU
比利时 : nl_BE
印度 : en_IN
西班牙 : ca_ES
摩洛哥 : ar_MA
玻利维亚 : es_BO
澳大利亚 : en_AU
新加坡 : zh_SG
萨尔瓦多 : es_SV
俄罗斯 : ru_RU
韩国 : ko_KR
阿尔及利亚 : ar_DZ
越南 : vi_VN
黑山 : sr_ME
利比亚 : ar_LY
白俄罗斯 : be_BY
以色列 : iw_IL
保加利亚 : bg_BG
马耳他 : mt_MT
巴拉圭 : es_PY
法国 : fr_FR
捷克共和国 : cs_CZ
瑞士 : it_CH
罗马尼亚 : ro_RO
波多黎哥 : es_PR
加拿大 : en_CA
德国 : de_DE
卢森堡 : de_LU
阿根廷 : es_AR
马来西亚 : ms_MY
克罗地亚 : hr_HR
新加坡 : en_SG
阿曼 : ar_OM
泰国 : th_TH
瑞典 : sv_SE
丹麦 : da_DK
洪都拉斯 : es_HN

使用

1、配置

  • 不管你是像上面创建的新项目,还是基于已经包含I18n的项目并且语言文件都已经配置完成了,再使用扩展的。那么安装完扩展以后,VS Code右下角可以能会提示

    在这里插入图片描述

  • 我们只需要进入项目.vscode/settings.json文件,添加如下配置即可,文件内原来有的则进行修改

    {"i18n-ally.localesPaths": ["src/locales" // I18n所有语言 所在目录],"i18n-ally.enabledParsers": ["ts", "json"] // 解析的文件后缀
    }
    

2、文件$t('xxx.xxx')语法自动转换显示

2.1、默认显示en文件

  • 这时候我们打开一个使用到国际化($t('xxx'))vue文件,然后我们就可以看到在使用到的地方会自动转换为在zh-CN.ts配置的内容,将如下显示

  • 在这里插入图片描述

  • 可以发现,我的代码为$t('common'),如果这么看的话,什么也看不出来,开发将增加困难。但是插件会自动去locales目录中找en文件,并且替换显示(只是显示,并不修改代码),这样我们就跟写原来的中/英文一样,没有增加丝毫开发难度

  • 当我们鼠标定位到这一行,它又会转为源代码,让我们继续编辑

    在这里插入图片描述

2.2、修改默认显示中文(zh-CN)文件

  • 我们只需要在.vscode/settings.json中,添加如下内容即可修改默认显示文件

    // 设置当前显示的主体语言: zh-CN/en/zh-TW/..."i18n-ally.displayLanguage": "zh-CN",
    
  • 修改完以后,我们再次打开App.vue文件即可看到展示的为中文

在这里插入图片描述

3、自动翻译

注意:批量翻译的话,要注意Vue3中的 template中使用$t('xxx')<script setup>语法躺中写法不一样,批量的话智能生成一种写法,所以如果vue2的话,会智能在template中使用$t(),在script中使用this.$t(),但是vue3中除非使用选项式API,否则不能使用this关键字

  • 翻译的话,总共需要两步
    • 1.现提取文件内中文到当前显示的zh-CN.json
    • 2.然后再将提取的内容批量翻译到其他语言文件中
  • 由于最终将提取的文案翻译到其他文件中的步骤一模一样,所以我放到3.4里面了,3.1-3.3全部为提取步骤

3.1、单个词语提取文案

  • 注意,我们要将语言文件改为xxx.json格式,因为插件支持如下

    在这里插入图片描述

  • 我这里script中的数据写死了,正常是后端返回的,所以对这块咱们就不翻译了,只翻译template中的中文即可
<template><div class="app"><div>用户信息:</div><div>用户名:{{ user.name }}</div><div>年龄:{{ user.age }}</div><div>性别:{{ user.gender }}</div><div>电话:{{ user.phone }}</div></div>
</template><script setup lang="ts">
import { reactive } from "vue";const user = reactive({name: "张三",age: 18,gender: "男",phone: "1234567890",
});
</script><style scoped></style>

我们这时候先鼠标定位到需要翻译的App.vue内,然后打开左侧菜单栏i18n Ally图标,查看待翻译的中文

在这里插入图片描述

方法一:点击左侧图标即可

在这里插入图片描述

方法二:鼠标放到待翻译的文字上,点击快速修复,提取文案到i18n,即可

在这里插入图片描述

在这里插入图片描述

选择生成的key名称,一般默认使用拼音回车即可

在这里插入图片描述

替换格式,在vue3 + template中,我们一般使用第一个,回车即可

在这里插入图片描述

然后顶部选择存储文件地址

注意:zh-CN的绝对路径,类似C:\A-workSoftWare\code\QianTai\vite-all-01\src\locales\zh-CN.json

在这里插入图片描述

提取效果如下

在这里插入图片描述

3.2、文件批量提取文案

  • 我们要先把光标定位到需要翻译的文件中,然后在左侧菜单栏中右键Hard coded strings [beta],选择Extract all hard-coded strings (experimental)

在这里插入图片描述

然后顶部选择生成文件地址

注意:zh-CN的绝对路径,类似C:\A-workSoftWare\code\QianTai\vite-all-01\src\locales\zh-CN.json

在这里插入图片描述

提取效果,还智能的使用了数组参数方法,并且观察右侧文件显示的内容智能替换了,鼠标定位上去会显示源码

在这里插入图片描述

3.3、目录批量提取文案

  • 我们在components中创建两个测试组件,非常简单
  • 然后右键目录,选择Extract all hard-coded strings (experimental)
  • 你可能没执行过上面选择生成文件名、文件目录配置,有可能会在顶部弹出来让你选择,我这里没有弹框,直接替换的

在这里插入图片描述

在这里插入图片描述

效果如下

在这里插入图片描述

3.4、翻译前申请

  • 由于我们下面使用的是百度翻译API,所以我们要先进入官网,再官网申请api权限,步骤如下

    1. 进入开放平台官网百度翻译开放平台

    2. 往下翻,选择通用文本翻译

      在这里插入图片描述

  1. 选择立即使用

    在这里插入图片描述

  1. 申请完以后,右上角进入选择开发者信息

    在这里插入图片描述

  1. 然后将自己申请信息中的APP ID、密钥,分别粘贴到.vscode->settings.json文件的i18n-ally.translate.baidu.appid、i18n-ally.translate.baidu.apiSecret

    在这里插入图片描述

  1. 修改完上面后,我们点击下面的修改服务信息

    在这里插入图片描述

  1. 翻到下面,将自己要调用api(本地电脑)的外网IP粘贴进来

    在这里插入图片描述

  1. 不知道的话可以访问IP地址查询_本机IP_我的IP,查询

3.5、将文案翻译到其他文件

  • 上面3.4的前置步骤做完以后,我们进入如下配置

  • 组件默认的翻译是google,我们可以修改其他翻译源,以下是可以选择的翻译源

    在这里插入图片描述

  • 注意,也要在.vscode->settings.json中添加如下配置,如果少了哪个,注意添加下

    "i18n-ally.translate.engines": ["baidu"], // 翻译器,第一个不行会尝试后面的
    // 插件将以何种语言作为基准来进行翻译相关的操作,如果你正在开发一个多语言应用,并且原始文案是用英语编写的,你可以将`sourceLanguage`设置为`en`(代表英语)。这样,插件就知道在提取文案进行翻译或者在代码中关联不同语言的文案时,以英语文案为原始参考。
    "i18n-ally.translate.baidu.appid": "你在百度申请的appid", // 翻译器api-appid
    "i18n-ally.translate.baidu.apiSecret": "你在百度申请的appSecret", // 翻译器api-Secret
    "i18n-ally.sourceLanguage": "zh-CN",
    "i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)
    
  • 点击左侧i18n Ally菜单栏->翻译进度,可以看到中文(100%),英文(0%)

  • 然后鼠标放到缺失的文案上面,右侧有个互联网图标,点击图标即可批量翻译,也可以放到单个选项上,右侧也可以进行单个翻译

在这里插入图片描述

  • 由于百度api限制QPS(百度翻译 API 对每秒的请求次数有一定限制。如果你的应用在短时间内发送了大量请求,超过了这个限制,就会触发该错误),所以批量翻译可能会报错,并且翻译成功了一个

    在这里插入图片描述

  • 我这里未认证,所以每秒限制调用1次

    在这里插入图片描述

  • 所以下面案例我们一个一个调用接口翻译

    在这里插入图片描述

在这里插入图片描述

3.5、属性名称生成规则修改

我们可以在.vscode->settings.json中添加如下配置来修改提取文案规则

  • "i18n-ally.extract.keygenStyle" 规则的值有:
    • default/kebab-case;拼音+短横杠,如 ming-cheng

    • snake_case;拼音+下划线,如 ming_cheng

    • camelCase;拼音+驼峰,如 mingCheng

    • PascalCase;拼音+驼峰+首字符大写,如 MingCheng

    • ALL_CAPS;拼音+下划线+全大写,如 MING_CHENG

// ...
// 翻译文案的属性名称策略:slug-拼音、random-随机、empty-需要手动命名
"i18n-ally.extract.keygenStrategy": "slug",
// 属性名称的具体生成规则 驼峰
"i18n-ally.extract.keygenStyle": "camelCase",

在这里插入图片描述

4、快速定位与修改

  • 当我们想要修改某个已经配置过中英文对应的当前语言(中文)的时候,我们不用在cv变量名,打开对应的语言文件,去ctrl + f搜索,然后修改了

  • 我们只需要鼠标放到$t()方法上,然后,就会有如下提示框

    在这里插入图片描述

  • 第一个图标是打开审阅,第二个是编辑文案,第三个是跳转定义

  • 我们直接点击对应语言的第二个笔的图标,然后在顶部输入修改后的内容,即可自动替换到对应文件中

在这里插入图片描述

在这里插入图片描述

5、忽略文案修改

  • 步骤依旧是,鼠标放到中文上,点击快速修复,第一个是在当前文件内忽略这个中文,第二个是全局整个项目忽略

    在这里插入图片描述

  • 点击任意一个后,查看.vscode->setteings.json文件,可以查看忽略的配置

    在这里插入图片描述

  • 忽略完以后,再点击左侧工具栏-> Hard coded strings [beta]就没有这两个需要生成的选项了,对应的组件中,黄色下划线也会消失

    在这里插入图片描述

6、按模块划分-命名空间

6.1、方法一:

  • 所有的内容都放在对象的一层属性中,会显得杂乱,难以查看,那么我们可以文件命名,比如user.yongHuXinXi等,表示下面属性都属于User页面下

  • 那么我们只需要在顶部输入key的时候,在前面加上xxx.即可

  • 注意:.vscode->settings.json文件的这个配置值"i18n-ally.keystyle": "nested"嵌套格式。如果为flat,将会生成如下格式数据

    在这里插入图片描述

在这里插入图片描述

6.2、方法二:

  • 上面是将整个项目放入一个xxx.json文件中,只不过使用子属性区分,优化层次结构
  • 下面这种方式是将每一个模块单独放入一个文件夹中,比如你项目有物流模块、生产模块、系统模块、公共语言(可以共用的)
1.修改配置文件

.vscode->settings.json中添加如下内容

// 使用空间命名
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespace}.json",
2.修改语言文件结构
  • 注意:当在zh-CN目录下新建了一个模块文件(比如common.json),对应的其他语言目录中也要创建文件,内容为{}即可
  • 语言文件结构要修改为如下

在这里插入图片描述

3.测试
  • 比如我在App.vue中添加了三个按钮新增、修改、删除,那么其他页面基本都会用到这个按钮,那么我就把其他页面都能用到的中文,全放入common.json这个模块中。用户信息也可放入系统模块中,我这里就不演示了

    1. 先把文案提取到i18n

      在这里插入图片描述

  1. 剪切掉上方key

    在这里插入图片描述

  1. 可以发现插件会自动检测,并提示

    在这里插入图片描述

  1. 点击提示,并且将原来生成的key名,粘贴上去,然后回车即可

    在这里插入图片描述

  1. 默认选择第一个,或直接回车即可

    在这里插入图片描述

  1. 然后就可以发现,在src/locales/zh-CN/common.json中,添加了一条数据,App.vue中显示也没问题

    在这里插入图片描述

  1. 翻译步骤跟第3步一样,丝毫不影响

    在这里插入图片描述

7、演示的settings.json文件

我这里放入我上面演示用的.vscode->settings.json文件内容,有其他配置可以自行修改

{// 设置当前显示的主体语言: zh-CN/en/zh-TW/..."i18n-ally.displayLanguage": "zh-CN",// 插件将以何种语言作为基准来进行翻译相关的操作,如果你正在开发一个多语言应用,并且原始文案是用英语编写的,你可以将`sourceLanguage`设置为`en`(代表英语)。这样,插件就知道在提取文案进行翻译或者在代码中关联不同语言的文案时,以英语文案为原始参考。"i18n-ally.sourceLanguage": "zh-CN","i18n-ally.localesPaths": [ // 翻译文件夹路径 (相对于项目根目录),你也可以使用Glob匹配模式。"src/locales"],"i18n-ally.translate.engines": ["baidu"], // 指定翻译器"i18n-ally.translate.baidu.appid": "你的appid", // 翻译器api-appid"i18n-ally.translate.baidu.apiSecret": "你的appSecret", // 翻译器api-Secret"i18n-ally.enabledParsers": [ // 指定启用文件格式"json","yaml"],"i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)// ...// 翻译文案的属性名称策略:slug-拼音、random-随机、empty-需要手动命名"i18n-ally.extract.keygenStrategy": "slug",// 属性名称的具体生成规则 驼峰"i18n-ally.extract.keygenStyle": "camelCase","i18n-ally.enabledFrameworks": ["vue"],// 使用空间命名"i18n-ally.namespace": true,"i18n-ally.pathMatcher": "{locale}/{namespace}.json",
}

组件更多配置

  • 有关组件更多配置,可以选择左下角设置->扩展->i18n Ally进行查看

    在这里插入图片描述

  • 或者在如下地方查看

    在这里插入图片描述

相关文章:

VS Code-i18n Ally国际化插件

前言 本文借鉴&#xff1a;i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件&#xff0c;它能通过可视 - 掘金本来是没有准备将I18n Ally插件单独写一个博客的&#xff0c;但是了解过后&#xff0c;功能强大&#xff0c;使用方便&#xff0c;解决…...

YOLO中mode.predict()参数详解

Inference arguments: ArgumentTypeDefaultDescriptionsourcestr‘ultralytics/assets’指定推理的数据源。可以是图像路径、视频文件、目录、URL 或实时源的设备 ID。支持多种格式和数据源&#xff0c;可在不同类型的输入中灵活应用。conffloat0.25设置检测的最小置信度阈值。…...

收敛算法有多少?

收敛算法是指在迭代计算过程中&#xff0c;能够使序列或函数逐渐逼近某个极限值或最优解的算法。常见的收敛算法有以下几种&#xff1a; 梯度下降法&#xff08;Gradient Descent&#xff09; 原理&#xff1a;通过沿着目标函数的负梯度方向更新参数&#xff0c;使得目标函数…...

在亚马逊云科技上使用n8n快速构建个人AI NEWS助理

前言&#xff1a; N8n 是一个强大的工作流自动化工具&#xff0c;它允许您连接不同的应用程序、服务和系统&#xff0c;以创建自动化工作流程&#xff0c;并且采用了开源MIT协议&#xff0c;可以放心使用&#xff0c;他的官方网站也提供了很多的工作流&#xff0c;大家有兴趣的…...

STM32单片机入门学习——第27节: [9-3] USART串口发送串口发送+接收

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.08 STM32开发板学习——第27节: [9-3] USART串口发送&串口发送接收 前言开发板说…...

python 3.9 随机生成 以UTF-8 编码 的随机中文

理论实践 因为python3的默认编码为UTF-8&#xff0c;我们将‘浪’的utf8\u6d6a进行打印测试 print(\u6d6a) >>浪 中文匹配范围有两种 [\u4e00-\u9fa5]和[\u2E80-\u9FFF]&#xff0c;后者包括了日韩地区的汉字 由于utf采用16进制&#xff0c;则需要进行一个进制的变换&a…...

数字电子技术基础(四十)——使用Digital软件和Multisim软件模拟显示译码器

目录 1 使用Digital软件模拟显示译码器 1.1 原理介绍 1.2 器件选择 1.3 电路运行 1.4 结果分析 2 使用Multisim软件模拟显示译码器 2.1 器件选择 2.2 电路运行 1 使用Digital软件模拟显示译码器 1.1 原理介绍 7448常用于驱动7段显示译码器。如下所示为7448驱动BS201A…...

第十四届蓝桥杯大赛软件赛国赛C/C++研究生组

研究生C国赛软件大赛 题一&#xff1a;混乘数字题二&#xff1a;钉板上的正方形题三&#xff1a;整数变换题四&#xff1a;躲炮弹题五&#xff1a;最大区间 题一&#xff1a;混乘数字 有一点像哈希表&#xff1a; 首先定义两个数组&#xff0c;拆分ab和n 然后令n a*b 查看两个…...

innodb如何实现mvcc的

InnoDB 实现 MVCC&#xff08;多版本并发控制&#xff09;的机制主要依赖于 Undo Log&#xff08;回滚日志&#xff09;、Read View&#xff08;读视图&#xff09; 和 隐藏的事务字段。以下是具体实现步骤和原理&#xff1a; 1. 核心数据结构 InnoDB 的每一行数据&#xff08…...

多模态大语言模型arxiv论文略读(四)

A Survey on Multimodal Large Language Models ➡️ 论文标题&#xff1a;A Survey on Multimodal Large Language Models ➡️ 论文作者&#xff1a;Shukang Yin, Chaoyou Fu, Sirui Zhao, Ke Li, Xing Sun, Tong Xu, Enhong Chen ➡️ 研究机构: 中国科学技术大学、腾讯优图…...

空对象模式(Null Object Pattern)在C#中的实现详解

一 、什么是空对象模式 空对象模模是靠”空对孔象式是书丯一种引施丼文行为,行凌,凌万成,个默疤"空象象象象来飞䛿引用用用用电从延盈盈甘仙丿引用用用职从延务在仅代砷易行行 」这种燕式亲如要目的片片 也说媚平父如如 核心思烟 定义一个人 派一个 &#xfffd; 创建…...

在kotlin的安卓项目中使用dagger

在 Kotlin 的 Android 项目中使用 ​​Dagger​​&#xff08;特别是 ​​Dagger Hilt​​&#xff0c;官方推荐的简化版&#xff09;进行依赖注入&#xff08;DI&#xff09;可以大幅提升代码的可测试性和模块化程度。 1. 配置 Dagger Hilt​​ ​​1.1 添加依赖​​ 在 bu…...

(三)链式工作流构建——打造智能对话的强大引擎

上一篇&#xff1a;&#xff08;二&#xff09;输入输出处理——打造智能对话的灵魂 在前两个阶段&#xff0c;我们已经搭建了一个基础的智能对话&#xff0c;并深入探讨了输入输出处理的细节。今天&#xff0c;我们将进入智能对话的高级阶段——链式工作流构建。这一阶段的目…...

python三大库之---pandas(二)

python三大库之—pandas&#xff08;二&#xff09; 文章目录 python三大库之---pandas&#xff08;二&#xff09;六&#xff0c;函数6.1、常用的统计学函数6.2重置索引6.3 遍历6.3.1DataFrame 遍历6.3.2 itertuples()6.3.3 使用属性遍历 6.4 排序6.4.1 sort_index6.4.2 sort_…...

php7.4.3连接MSsql server方法

需要下载安装Microsoft Drivers for PHP for SQL Server驱动&#xff0c; https://download.csdn.net/download/tjsoft/90568178 实操Win2008IISphp7.4.3连接SqlServer2008数据库所有安装包资源-CSDN文库 适用于 SQL Server 的 PHP 的 Microsoft 驱动程序支持与 SQL Server …...

Flask返回文件方法详解

在 Flask 中返回文件可以通过 send_file 或 send_from_directory 方法实现。以下是详细方法和示例: 1. 使用 send_file 返回文件 这是最直接的方法,适用于返回任意路径的文件。 from flask import Flask, send_fileapp = Flask(__name__)@app.route("/download")…...

JS中的Promise对象

基本概念 Promise 是 JavaScript 中用于处理异步操作的对象。它代表一个异步操作的最终完成及其结果值。Promise 提供了一种更优雅的方式来处理异步代码&#xff0c;避免了传统的回调地狱。 Promise 有三种状态 Pending&#xff08;等待中&#xff09;&#xff1a;初始状态&…...

macOS设置定时播放眼保健操

文章目录 1. ✅方法一&#xff1a;直接基于日历2. 方法二&#xff1a;基于脚本2.1 音乐文件获取(ncm转mp3)2.2 创建播放音乐任务2.3 脚本实现定时播放 1. ✅方法一&#xff1a;直接基于日历 左侧新建一个日历&#xff0c;不然会和其他日历混淆&#xff0c;看起来会有点乱 然后…...

Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!

&#x1f9e9; Python 小练习系列 | Vol.14&#xff1a;掌握偏函数 partial&#xff0c;用函数更丝滑&#xff01; 本节的 Python 小练习系列我们将聚焦一个 冷门但高能 的工具 —— functools.partial。它的作用类似于“函数的预设模板”&#xff0c;能帮你写出更加灵活、优雅…...

记录学习的第二十三天

老样子&#xff0c;每日一题开胃。 我一开始还想着暴力解一下试试呢&#xff0c;结果不太行&#x1f602; 接着两道动态规划。 这道题我本来是想用最长递增子序列来做的&#xff0c;不过实在是太麻烦了&#xff0c;实在做不下去了。 然后看了题解&#xff0c;发现可以倒着数。 …...

Web品质 - 重要的HTML元素

Web品质 - 重要的HTML元素 在构建一个优秀的Web页面时,HTML元素的选择和运用至关重要。这些元素不仅影响页面的结构,还直接关系到页面的可用性、可访问性和SEO表现。本文将深入探讨一些关键的HTML元素,并解释它们在提升Web品质方面的重要性。 1. <html> 根元素 HTM…...

SpringBoot整合sa-token,Redis:解决重启项目丢失登录态问题

SpringBoot整合sa-token&#xff0c;Redis&#xff1a;解决重启项目丢失登录态问题 &#x1f525;1. 痛点直击&#xff1a;为什么登录状态会消失&#xff1f;2.实现方案2.1.导入依赖2.2.新增yml配置文件 3.效果图4.结语 &#x1f600;大家好&#xff01;我是向阳&#x1f31e;&…...

Python 字典和集合(子类化UserDict)

本章内容的大纲如下&#xff1a; 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响&#xff08;什么样的数据类型可作为键、不可预知的 顺序&#xff0c;等等&#xff09; 子类化UserDict 就创造自…...

npm fund 命令的作用

运行别人的项目遇到这个问题&#xff1a; npm fund 命令的作用 npm fund 是 npm 提供的命令&#xff0c;用于显示项目依赖中哪些包需要资金支持。这些信息来自包的 package.json 中定义的 funding 字段&#xff0c;目的是帮助开发者了解如何支持开源维护者。 典型场景示例 假…...

ES:账号、索引、ILM

目录 笔记1&#xff1a;账号权限查看、查看账号、创建账号等查看所有用户查看特定用户验证权限修改用户权限删除用户 笔记2&#xff1a;索引状态和内容的查看等查看所有索引查看特定索引内容查看索引映射查看索引设置查看索引统计信息查看ILM策略 笔记1&#xff1a;账号权限查看…...

哈希表(开散列)的实现

目录 引入 开散列的底层实现 哈希表的定义 哈希表的扩容 哈希表的插入 哈希表查找 哈希表的删除 引入 接上一篇&#xff0c;我们使用了闭散列的方法解决了哈希冲突&#xff0c;此篇文章将会使用开散列的方式解决哈希冲突&#xff0c;后面对unordered_set和unordered_map的…...

#在docker中启动mysql之类的容器时,没有挂载的数据...在后期怎么把数据导出外部

如果要导出 Docker 容器内的 整个目录&#xff08;包含所有文件及子目录&#xff09;&#xff0c;可以使用以下几种方法&#xff1a; 方法 1&#xff1a;使用 docker cp 直接复制目录到宿主机 适用场景&#xff1a;容器正在运行或已停止&#xff08;但未删除&#xff09;。 命…...

[蓝桥杯] 挖矿(CC++双语版)

题目链接 P10904 [蓝桥杯 2024 省 C] 挖矿 - 洛谷 题目理解 我们可以将这道题中矿洞的位置理解成为一个坐标轴&#xff0c;以题目样例绘出坐标轴&#xff1a; 样例&#xff1a; 输入的5为矿洞数量&#xff0c;4为可走的步数。第二行输入是5个矿洞的坐标。输出结果为在要求步数…...

Johnson算法 流水线问题 java实现

某印刷厂有 6项加工任务J1&#xff0c;J2&#xff0c;J3&#xff0c;J4&#xff0c;J5&#xff0c;J6&#xff0c;需要在两台机器Mi和M2上完 成。 在机器Mi上各任务所需时间为5,1,8,5,3,4单位; 在机器M2上各任务所需时间为7,2,2,4,7,4单位。 即时间矩阵为&#xff1a; T1 {5, …...

远程监控系统项目里练习

1、项目目标 设备端&#xff1a; &#xff08;1&#xff09;基于stm32mp157开发板&#xff0c;裁剪linux5.10.10&#xff0c;完成ov5640摄像头移植&#xff1b; &#xff08;2&#xff09;完成用户层程序&#xff0c;完成对摄像头的控制及与云端服务的数据交互。 云端&…...