SpringBoot整合Nacos做配置中心 文章目录 SpringBoot整合Nacos做配置中心一、在Nacos中预置配置文件1.1 创建命名空间1.2 创建分组 二、目录结构三、pom依赖四、配置Nacos五、提供服务5.1 编写Controller接口5.2 启动项目 六、验证6.1 验证基本功能6.2 验证动态刷新配置 一、在Nacos中预置配置文件 1.1 创建命名空间 命名空间可以被视为一个项目,通常一个项目占用一个命名空间,在这里我们创建一个NACOS_TEST的命名空间。
1.2 创建分组 开发中会有分支的概念,一般而言会有dev(开发)、pro(生产)、test(测试)三个分支。
分支对应到Nacos中就是Group的概念,接下来创建三个Group:
(1)选择对应命名空间
选择刚刚创建好的命名空间:
(2)创建配置文件
注意:这里创建的配置文件,要求和后面创建的项目名称(spring.application.name)是相同的。
(3)克隆配置文件
(4)查看结果
二、目录结构 三、pom依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> 四、配置Nacos 创建bootstrap.yaml(注意:bootstrap.yaml的加载优先级是最高的),并编辑该配置文件内容:
spring: application: # 与Nacos中配置文件名称相同 name: nacos-separate-client-provider cloud: nacos: config: # 配置文件地址 server-addr: 192.168.189.41:8848,192.168.189.42:8848,192.168.189.43:8848 # 已经创建好的命名空间,会有一个id namespace: ae3c836e-931e-4def-b288-cac8278ca947 # 配置文件所在的group group: dev # 配置文件的文件类型 file-extension: properties 注意:配置文件的ID是{spring.
首先 npm install mqtt --save 一,.第一种方法 (相对比较容易看懂) 使用场景跟MQTTX 类似的测试调试订阅接收信息的工具 (参数都是可配置的)
1.1 新建 mqtt.js import * as mqtt from "mqtt/dist/mqtt.min"; import { ElMessage } from 'element-plus' class MQTT { url = '';// mqtt地址 topic = ''; // clientId = ''; username = ''; password = '';//密码 qos = 0; // 初始化类实例 constructor(params) { this.topic = params.topic; this.url = params.url; // 虽然是mqtt但是在客户端这里必须采用websock的链接方式 this.clientId = params.clientId; this.username = params.username; this.password = params.password; this.
一、 Comparator 类 Comparator 类常作为 sorted() 方法的参数传递给 sorted 方法,用来解决给集合排序,自定义排序规则的问题 。
那从这个角度看,这个类肯定很常用了,一般都不喜欢自己写排序方法,而且自己写的肯定还有性能优化问题,我们直接用 jdk 帮我们封装好的,就即简洁,又易于阅读 。
二、使用 1. 对 Array 数组类型进行排序 下面是 Arrays 类暴露给我们的排序方法 —— sorted
Stream<T> sorted(Comparator<? super T> comparator); Comparator 接口暴露给我们以下方法给我们实现:
int compare(T o1, T o2); (1)情况一 : 直接 new Comparator 对象,然后实现其 compare 方法进行排序 这种情况可以在 compare 内部定义好排序规则,看起来非常直观,通过在 compare 中写好逻辑代码,可以实现多种排序规则 。
这种方式只能用于包装类型的数组,如果数组是基本数据类型,必须转成包装类才能使用实现 compare 方法进行定义排序
public static void test(){ // 对包装类型的数组进行排序 Integer[] a = {1, 2, 3, 0}; // 直接对 a 排序 Arrays.
文章目录 前言什么是SRA从SRA检索数据在线检索关键词数据的 ACCESSION IDs小练习 高级检索 获取 Run Accessions SRR# 标识符A. SRA Search Results 【例子】B. SRA Run SelectorC. 命令行工具直接安装 (E-utilities) 下载 SRA 数据文件**使用 SRA ToolKit** :使用 Linux 命令行使用 Aspera Connect 一个现成的例子 前言 事情是这样的,最近啊,在研究拟南芥叶片的数据,需要下载一批数据,之前整理过Sra-ToolKit的安装使用,这次干脆整理一下我知道的NCBI数据搜索和下载的方式😑
什么是SRA 全称:Sequence Read Archive,是一个公开可访问的存储和共享高通量测序数据的中心资源库。它由美国国家生物技术信息中心(NCBI)维护,该中心是美国国家医学图书馆(NLM)的一部分。
SRA数据库:https://www.ncbi.nlm.nih.gov/sra 专注于存储来自各种平台(如Illumina、Ion Torrent、PacBio等)生成的测序数据。这些测序技术生成大量的原始序列数据,通常被称为 reads,可用于各种生物学和生物医学研究目的。SRA数据库提供了一个全面的基础设施来组织、存储和检索测序数据。它支持数据压缩技术以优化存储空间同时保持数据完整性。存储的数据带有重要的元数据注释,包括:实验详细信息,样本信息,测序平台,文库制备方法。确定了所需的数据集,用户可以下载原始测序数据,使用喜欢的生物信息学工具和 pipeline 进行分析。
从SRA检索数据 用户可以通过NCBI网站或通过应用程序接口(APIs)访问SRA数据库。这两种方法都提供了强大的搜索功能,用户可以根据关键词、访问号、研究详情、生物信息或实验属性等找到特定数据集。
在线检索 SRA数据库提供灵活的搜索功能,包括但不限于:关键词,数据访问标识、高级搜索构建器。确保用户可以高效地找到研究所需数据集。
关键词 用户可以在SRA数据库主页的搜索框中输入关键词⤴。可以包括基因、物种、疾病、实验条件或任何其他相关信息。数据库将返回与提供关键词匹配的结果。例如,搜索:bumble bee worker
如果要缩小搜索结果范围,可以利用搜索结果页面右侧和左侧的各种过滤器。
数据的 ACCESSION IDs 如果,已经知道要查找的数据集具体的 ACCESSION IDs 或研究名称,可以直接输入这些标识符到搜索框中。这样可以快速检索所需的数据集,无需进行大量的关键字搜索。
Note
STUDY,以SRP#、ERP#、DRP#开头SAMPLE,以SRS#、ERS#、DRS#开头EXPERIMENT,以SRX#、ERX#、DRX#开头RUN,以SRR#、ERR#、DRR#开头PROJECT,以PRJNA#、GSE#开头的标识符 ACCESSION IDs 的第一个字母表示数据库源 - 分别为SRA、EBI或DDBJ
例如,刚读了个文章,挺有意思的,想下载它的数据,文章里写着,可以在项目PRJNA730495下获得数据,那么:
这一次,搜索结果显示与该 Project 相关的所有项目。在页面顶部,还会显示相关的数据集等等
0. 前言 GitHub Copilot,俗称“副驾驶”,是GitHub携手OpenAI共同打造的一款革命性的人工智能代码辅助工具。通过将其插件化集成至编辑器(如VS Code),Copilot能够为用户提供强大的代码自动补全功能,并根据用户输入的注释快速生成相应代码。此外,它还能协助解释代码逻辑,自动生成测试代码,以及为代码片段添加注释,从而极大地提升了开发者的编程效率与代码质量。
<!-- more -->
OnlyFans 订阅教程移步:【保姆级】2024年最新Onlyfans订阅教程
Midjourney 订阅教程移步: 【一看就会】五分钟完成MidJourney订阅
GPT-4.0 升级教程移步:五分钟开通GPT4.0
如果你需要使用Wildcard开通GPT4、Midjourney或是Onlyfans的话,请点击:WildCard使用教程
1. GitHub Copilot的优点 相比于ChatGPT,GitHub Copilot有以下的优点:
GitHub Copilot完美融入VS Code编辑器,让您在编写代码的过程中无需切换界面,即可直接提问、处理并生成代码。这一功能极大地简化了将问题或GPT回答来回粘贴的繁琐步骤,使您的编程体验更加流畅高效。
GitHub Copilot生成的代码与项目紧密贴合,因为它是以项目当前的代码上下文为基础进行智能生成的。这种特性使得Copilot能够产生与当前项目代码风格高度一致的代码,不仅提升了代码的可读性和一致性,也增强了代码的可移植性,让您的项目更加稳健和高效。
2. 如何安装GitHub Copilot? 以下是详细的安装步骤:
2.1、安装 Visual Studio Code 如果您尚未安装 Visual Studio Code,您可以从 官方网站 下载并安装最新版本。
2.2、安装 GitHub Copilot 扩展 启动VSCode,点击界面左侧的扩展视图(Extensions),在搜索栏中输入"GitHub Copilot",在搜索结果中找到“GitHub Copilot”和“GitHub Copilot Chat”并点击安装(Install)。
安装完成界面里有这个图标代表安装完成了
插件安装完成之后需要重启一下VSCode并注册登录,登录方式是通过github账号授权登录。
注意登录之前请确保您在浏览器中已经登录到 GitHub 帐户。
登录步骤:按照图示步骤 点击右下角图标 >> 点击「Sign in to GitHub」按钮,在弹出的界面中点击「允许(Allow)」打开浏览器获取Github账号授权。
点击「Authorize Visual-Studio-Code」按钮确认授权。
3. 使用GitHub Copilot 3.1 试用/订阅Copilot服务 GitHub Copilot提供30天免费试用,订阅费用是10美元一个月,按年是100美元,在到期之前可以选择退订,或者可以选择更换订阅方式。
Git 下载与安装 对于 Flutter 3.19,Git 版本需要 2.27 及以上
Git 下载:
Git 官网:https://git-scm.com/Git 下载淘宝镜像:https://registry.npmmirror.com/binary.html?path=git-for-windows/ 对于 Git 的安装教程,可以参考 https://blog.csdn.net/mukes/article/details/115693833,该文章中写的是真的详细
Flutter SDK 下载 在 https://flutter.cn/docs/get-started/install/windows/mobile?tab=download#install-the-flutter-sdk 中下载 Flutter SDK 稳定版本的压缩包
Flutter SDK 的安装 在电脑中选择合适的位置对下载的压缩包进行解压,把压缩包的 flutter 目录解压出来,解压完成即安装完成
我习惯对 SDK 的根目录添加 SDK 的版本,以便不同版本的区分
在系统环境变量中配置 Flutter 相关的环境变量 我的电脑=>鼠标右键=>属性=>高级系统设置=>环境变量=>系统变量=>Path=>新建
将 FLutter SDK 中 bin 目录添加到系统环境变量中,以便其中的可执行文件在任何位置都可以执行
flutter.bat:执行 flutter 相关命令dart.bat:执行 dart 相关命令 检查 Flutter 所需的开发环境是否配置完整 在系统环境变量中配置完成 Flutter 相关的环境变量后,我们就可以在命令行终端中使用如下命令检查 Flutter 所需的环境是否完整
如果出现执行如下命令长时间未响应,可以参考 https://www.yuque.com/u27599042/rwe4wi/sncif8ep6ecws0sc 进行解决
flutter doctor 安装 Android Studio (解决 Android Studio (not installed) 与 Android toolchain - develop for Android devices Unable to locate Android SDK.
一、C#发送邮件概述 在C#中,发送邮件是一项常见的任务,通常用于实现自动化通知、报警和与用户进行交互等场景。C#提供了多种发送邮件的方式,主要方式包括SMTP协议、POP3协议、IMAP协议、Exchange服务器等。使用这些方式,开发人员可以灵活地发送和接收邮件,满足各种应用场景的需求。
下表是SMTP、POP3、IMAP和Exchange的功能特性对比:
功能特性SMTPPOP3IMAPExchange发送邮件是否否是接收邮件否是是是读取收件箱否是是是删除邮件否是是是标记邮件否可通过其他方式实现是是移动邮件否可通过其他方式实现是是搜索邮件否是是是附件处理是是是是支持加密是是是是安全认证是是是是访问邮件夹否是是是同步邮件夹否是是是会话状态无无有有支持文件夹操作无无是是 SMTP协议常用于发送邮件,POP3和IMAP协议用于接收邮件,而Exchange服务器则提供了更多的功能,包括邮件的发送、接收、管理等。Exchange是一个综合的邮件解决方案,可以提供SMTP、POP3、IMAP等多种协议的支持,而SMTP、POP3和IMAP通常用于与邮件服务器进行通信的底层协议。通过C#中丰富的API和工具,开发人员可以轻松地集成邮件功能到他们的应用程序中,实现高效的邮件通信。
二、C#发送邮件的代码实现 1、SMTP协议 SMTP(Simple Mail Transfer Protocol)是一种标准的网络邮件传输协议,用于在网络上传输电子邮件。在C#中,使用SMTP协议发送邮件是一种常见的方式。
① 发送邮件 使用SMTP协议发送邮件是一种常见的方式。通过指定SMTP服务器和端口,以及提供发件人和收件人的信息,可以发送电子邮件。
以下是使用C#发送邮件的SMTP代码示例:
using System; using System.Net; using System.Net.Mail; class Program { static void Main(string[] args) { try { // 设置发送者的电子邮件地址和密码 string senderEmail = "your-email@example.com"; string senderPassword = "your-password"; // 设置收件人的电子邮件地址 string receiverEmail = "recipient@example.com"; // 创建邮件对象 MailMessage mail = new MailMessage(senderEmail, receiverEmail); mail.Subject = "邮件主题"; mail.Body = "邮件内容"; // 创建SMTP客户端 SmtpClient smtpClient = new SmtpClient("smtp.example.com"); smtpClient.Port = 587; smtpClient.
本文主要介绍了 MySQL 数据库中如何新增列。对于需求变更或系统扩展而需要对数据库表中新增列的情况,我们可以通过 ALTER TABLE 语句的方式来实现。本文从多方面进行了详细阐述,包括新增列名、MySQL 表添加一列、MySQL 增加一列数据、MySQL 新增列并赋值、MySQL 新增和更新、MySQL 新增列指定、MySQL 新增列默认值历史数据、MySQL 新增列 SQL 语句等。在正文部分,我们分别从语法规则、应用场景、使用注意事项等方面进行了详尽的阐述。
一、引言
对于需要使用 MySQL 数据库的开发者,在进行表设计时,如果未能做到考虑到所有的场景和需求的话,那么就可能会发生设计不足的情况,这样就需要对 MySQL 数据库表进行修改,其中最常见的就是新增列。新增列的操作需要通过 ALTER TABLE 语句来完成,可以指定新增列名、数据类型、默认值等信息。在本文中,我们将从多个方面对 MySQL 中新增列的操作进行详细的介绍。
二、MySQL 新增列名
MySQL 新增列名是指在 ALTER TABLE 语句中指定要新增的列的名称。在 ALTER TABLE 语句中,使用 ADD COLUMN 来指定要添加的列,语法如下:
```
ALTER TABLEADD COLUMN;
```
在语法中,`` 表示要添加列的表名,`` 表示要添加的列名称,`` 表示列的数据类型。具体的类型可以根据业务需求来确定,例如 INT、VARCHAR、DATE 等。需要注意的是,列名在表中必须是唯一的。如果在新增列时指定了已存在的列名,MySQL 将会抛出错误提示。
三、MySQL 表添加一列
MySQL 表添加一列指的是在已有的 MySQL 数据库表中增加新的一列。在进行数据库表的修改时,需要先选择要修改的表,然后进行新增列的操作。在 ALTER TABLE 语句中,使用 ADD COLUMN 关键字来新增列。语法如下:
```
ALTER TABLEADD COLUMN;
```
例如,在表 TestTable 中新增一列 Gender,数据类型为 VARCHAR(10),可以使用以下 SQL 语句:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> <!-- 替换为最新版本 --> </dependency> Java 实现字符串String转换json(JSON格式)
package com.cn; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class Main { public static void main(String[] args) { try { // 读取 JSON 文件内容为字符串 String jsonString = new String(Files.readAllBytes(Paths.get("example.json"))); // 将 JSON 字符串解析为 JSONObject 对象 JSONObject jsonObject = JSON.parseObject(jsonString); // 从 JSONObject 中获取数据 String name = jsonObject.getString("name"); int age = jsonObject.getInteger("age"); // 打印数据 System.out.println("Name: " + name); System.
🔥个人主页: Quitecoder
🔥专栏:数据结构与算法
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:腾讯云
欢迎来到排序的第二个部分:选择排序与快速排序!
目录 1.选择排序1.1复杂度分析 2.快速排序的层层实现2.1分区操作2.2相遇位置小于枢轴元素2.3递归实现整个函数2.4复杂度分析2.5 代码优化:三数取中法选key2.6挖坑法实现快排2.7前后指针实现快排 1.选择排序 选择排序是一种简单直观的比较排序算法。该算法的基本思想是在每一轮中选出当前未排序部分的最小(或最大)元素,然后将其放置到未排序序列的起始位置,这个过程一直重复直至整个数组被排序。
选择排序的具体步骤如下:
从数组的当前未排序部分选择最小(或最大)的一个元素将这个最小(或最大)元素与未排序序列的第一个元素交换位置然后从剩余未排序的元素中继续这个过程,将每一次找到的最小(或最大)元素放到未排序序列的开始这个过程一直进行到整个数组的所有元素都被排为有序状态 在这里我们可以遍历一次同时找到最小元素和最大元素,对应放到相应的位置,
基本代码如下:
void SelectSort(int* a, int n) { int begin = 0; int end = n - 1; while (begin < end) { int minn = begin; int maxn = begin; for (int i = begin + 1; i <= end; i++) { if (a[i] < a[minn]) { minn = i; } if (a[i] > a[maxn]) { maxn = i; } } Swap(&a[begin], &a[minn]); Swap(&a[end], &a[maxn]); begin++; end--; } } 首先初始化两个索引begin和end,分别代表当前未排序序列的开始和结束位置进入一个循环,条件是begin < end,确保在数组中还有未排序的元素遍历一遍序列,找到最大元素和最小元素的下标将最小元素与序列的始端交换,最大元素与序列的尾端交换更新begin与end Swap函数如下:
👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦!
👀 大模型近期重大进展:百川、讯飞、智源发布新模型,GLM-4、DeepSeek上线开放平台,Google Bard 反超,Mixtral medium 泄露,真的很热闹… www.baichuan-ai.com/
1月29日,百川智能发布超千亿参数的大语言模型 Baichuan 3。根据官方消息,Baichuan 3 在多个权威通用能力评测如中表现出色:在中文任务上更是超越了 GPT-4,在数学和代码专项评测同样表现不错 ⋙ 点击了解详情
xinghuo.xfyun.cn/
1月30日,科大讯飞举行星火认知大模型 V3.5 升级发布会。本次正式发布了首个基于全国产算力训练的讯飞星火 V3.5,七大核心能力全面提升,数学、语言理解、语音交互能力超 GPT-4 Turbo。此外,还正式发布了星火语音大模型,首批 37 个主流语种效果超过 OpenAI Whisper V3 ⋙ 点击了解详情
huggingface.co/BAAI/bge-m3
1月30日,智源发布了 BGE 家族新成员「通用语义向量模型BGE-M3」,支持超过 100 种语言,具备领先的多语言、跨语言检索能力。据官方介绍,BGE-M3 能够全面且高质量地支撑「句子」「段落」「篇章」「文档」等不同粒度的输入文本,最大输入长度为 8192,并且一站式集成了稠密检索、稀疏检索、多向量检索三种检索功能,在多个评测基准中达到最优水平 ⋙ 点击了解详情
open.bigmodel.cn/dev/api#glm…
1月30日,智谱宣布 GLM-4 模型开放 API 正式上线。开发者可以通过「智谱AI开放平台」接入 GLM-4 模型开放API,体验到智谱新一代基座大模型的强大能力 ⋙ 点击了解详情 👉 此前的1月16日,智谱正式推出了新一代基座大模型 GLM-4,并宣布了一系列产品升级 ⋙ 点击了解详情
platform.deepseek.com
1月31日,DeepSeek (深度探索) 宣布开放平台上线 API 内测。注册即赠送 1000 万 Tokens,而且兼容 OpenAl API 接囗,Chat / Coder双模型可以调用 ⋙ 点击了解详情 👉 此前的1月11日,DeepSeek 宣布开源国内首个 MoE 大模型 DeepSeekMoE,全新架构,支持中英,免费商用 ⋙ 点击了解详情
在Python中,__init__.py文件用于将一个目录标记为Python的包。这个机制允许Python进行模块导入和组织代码的分层结构。尽管在Python 3.3及以上版本中,引入了隐式的命名空间包,这意味着在某些情况下即使没有__init__.py文件,目录也可以被视为包,但__init__.py文件仍然有其独特的作用和用途。
__init__.py的主要作用和用途包括: 将目录标记为Python包:这是__init__.py最基本的作用,它使得Python解释器知道该目录及其包含的文件应该被视为一个包。
初始化包:__init__.py可以包含包级别的初始化代码。这意味着当包被导入时,__init__.py中的代码将被执行。这对于设置包所需的全局状态或者执行仅需在包首次导入时运行的代码很有用。
控制包的导入:通过在__init__.py文件中导入子模块或包内其他模块,你可以定制from package import *时哪些模块被导入的行为。虽然这种做法不推荐(因为显式导入通常更清晰),但它可以用来简化客户端代码的导入语句。
包的命名空间管理:__init__.py文件可以用来组织包的命名空间。通过在这个文件中导入函数、类或其他模块,你可以提供一个经过精心设计的对外接口,使得包的结构对用户更加透明。
示例 假设我们有如下的目录结构:
my_package/ │ ├── __init__.py ├── submodule1.py └── submodule2.py 在my_package/__init__.py中,我们可以初始化包或者导入特定的模块以简化用户的导入语句:
# my_package/__init__.py from .submodule1 import ClassA from .submodule2 import functionB 这样,当用户导入包时:
from my_package import ClassA, functionB 他们实际上是通过__init__.py文件间接导入了ClassA和functionB,而无需关心这些对象位于哪个子模块中。
尽管__init__.py的作用可能在某些情况下看起来不那么明显,它仍然是Python包结构和命名空间管理的重要组成部分。
目录
前言
一、问题的由来
1、创建网页框架
2、创建map对象
3、构建点位,生成路线
二、Turf.js平滑曲线改造
1、官网方法介绍
2、0.4弯曲度曲线
3、0.85弯曲度曲线
4、0.1度弯曲曲线
5、综合对比 总结
前言 在很多的关于路线的gis应用中,我们经常会有展示路线的需求,比如采集关键点位的经纬度,最后连接成一条轨迹线。不知道各位朋友有没有遇到这种需求,如果只是在地图上采集一些关键点,得到的线经常是比较生硬的,尤其是在拐点的时候,展示效果更加的明显。形如下面的这种效果。
那么有没有什么办法能让这些拐点练成的曲线实际效果看上去更加平滑呢?有的小伙会说,可以在数据采集阶段尽可能多的采集多的点位信息,通过更多点位的采集,形成一条更加平滑的曲线。从技术的角度来说,这种方式是可以的,只要将点采集的更多,那么练成的曲线一定是更加平滑的。但是这样会增加采集的工作量。有没有办法在现有的成果之上来进行数据的平滑处理呢?
本博客给出一种解决方案,熟悉webgis开发的朋友一定知道多种解决方案。那么本文分享一款webgis的解决方案,基于Turf.js组件来动态生成平滑曲线,然后在webgis框架中进行展示。对于不熟悉或者没用过turf.js的小伙伴起到抛砖引玉的作用。对于想在Webgis中开发类似应用的小伙伴来说,可以看看这篇博客。
一、问题的由来 众所周知,线对象是由多个点对象组合而来,把多个点两两相连即可连成一条线。因此,这里我们首先模拟构造一条虚拟的游览线路。然后使用turf.js组件生成不同程度的平滑曲线。
为了展示最原始的线对象,我们采用Leaflet作为地图展示组件,再一起回顾一下Leaflet当中如何进行地图展示,以及集成Turf.js组件。
1、创建网页框架 首先创建一个html页面。在页面中我们需要引入Leaflet.css和Leaflet.js两个基础组件,同时引入Turf.js这个组件。关键代码如下:
<!DOCTYPE html> <html> <head> <title>基于Leaflet和Turf生成平滑曲线实践</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" /> <link rel="stylesheet" href="/2d/leaflet/leaflet.css" /> <script src="/2d/leaflet/leaflet.js?v=1.0.0"></script> <!-- 使用unpkg --> <script src="https://unpkg.com/@turf/turf/turf.min.js"></script> <style> #map { margin: 0; padding: 0; position: absolute; width: 99%; height: 98%; } </style> </head> <body> <div id="
目录
Whisper的安装
Whisper的基本使用
识别结果转简体中文
断句
Whisper的安装 Whisper是OpenAI的一个强大的语音识别库,支持离线的语音识别。在使用之前,需要先安装它的库:
pip install openai-whisper 使用whisper,还需安装setuptools-rust:
pip install setuptools-rust 但是,whisper安装时,自带的pytorch可能有些bug,因此需要卸载重装:
卸载:
pip uninstall torch 重装:
pip install torch 另外,需要通过choco安装ffmpeg库。先通过管理员权限的PowerShell安装choco:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 然后,在管理员权限的PowerShell安装ffmpeg:
choco install ffmpeg 完成这些步骤之后,我们就可以使用啦!
Whisper的基本使用 whisper的基本代码如下:
import whisper model = whisper.load_model("base") result = model.transcribe("zh.wav") print(result['text']) 其中,zh.wav可以换成你自己的音频。我的控制台输出:
我們說,40月2日混淩土不能與引力長相互攪拌不然會因為愛銀斯坦的相對論而引發雜串的食品安全問題這是嚴重的金融危機 可以看到,它的识别结果还行(因为我的音频是AI合成的,识别会有一定误差),但是输出的是繁体中文,我们需要把他变成简体中文。
识别结果转简体中文 可以通过opencc库实现转化,先安装:
pip install opencc 然后修改代码:
import whisper import opencc model = whisper.load_model("base") result = model.
django的安装 在pycharm中安装即可
创建django项目 django项目会有一些默认的文件和文件夹
1. 在终端创建 (不测试了)
2. 在Pycharm中创建项目(不能是社区版pycharm) 新建项目,选型django项目
默认项目文件的介绍
3. APP 在Pycharm中创建app 使用pycharm中的terminal
创建新app01后的各文件功能 运行django 激活App01 1. 在django的项目文件夹中,打开setting.py文件,找到下图所示位置:
2.在App01文件夹中,打开 apps.py文件,找到Class的名称:(本示例)App01Config
3. 如上图所示,在列表最后加上'app01.apps.App01Config'
编写URL和视图函数对应关系 [urls.py]
编写URL和视图函数对应关系 1. 在项目文件urls.py中编写对应关系,
2. from app01 import views
这是从app01中,导入views文件(函数编写在该文件中)
3. path('index/', views.index),
这里是在对应url和函数。如果访问www.xxx.com/url,就会执行后面对应的函数(views.index)
启动django 命令行启动 在pycharm的命令框中
python manage.py runserver
Pycharm 启动
点击程序的运行按钮
url与返回页面的逻辑 1. 先在url.py中写url地址
2. 在views.py写对应关系
模板和静态文件 加载模板的方式,参照图片中的 def user_list(request)
加载图片的方式
1. 在app目录下创建static文件夹
2. 用static方法引入css和js的方法
模板语法 本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理
case: 建tpl网页,及内容,并访问views中的列表 访问字典中的内容 列表里面套字典,访问的方式 请求和响应 重定向的返回方式 是Django将网页返回给浏览器,浏览器自己访问web页面。不是Django访问了web页面再返回给浏览器
一,下载安装 1.简介 Redis是一种快速、高效的NoSQL数据库,广泛用于缓存、会话管理、消息队列等领域。为了更方便地管理Redis实例、监控Redis性能、执行Redis命令、查看Redis数据,许多开发者使用可视化管理工具。而其中,Another Redis Desktop Manager 是一款备受推崇的Redis可视化管理工具。本文将介绍ARMD的安装和使用方法。
兼容Windows、Mac、Linux更快、更好、更稳定的Redis桌面(GUI)管理客户端支持加载海量的key 2.下载 下载地址:AnotherRedisDesktopManager 发行版 - Gitee.com
下载完成后安装
3.安装 3.1,双击运行安装包 如果双击无法运行安装包,则以管理员身份运行下载的安装包,选择运行
3.2,选择是为所有用户还是当前用户安装 3.3,选择安装位置,点击安装进行安装 3.4,等待安装完成 3.5,点击"完成" 二,使用 1,新建链接 点击 新建连接 创建新的连接
2,填写链接信息 1,新建redis链接 2,新建哨兵链接(下面port应该填26379,少了个2) 一般只需要填一下几个内容:
地址:redis地址 (哨兵地址)哨兵端口:redis默认 6379 (哨兵默认 26379)Redis Node Password:设置的Redis密码Master Group Name: master 别名连接名称:所新建连接的名称,不填会根据地址和端口自动生成 3,设置 有需要的可以选择设置背景和语言
4,redis的基本信息 5,新增数据 5.1,填写key和数据类型 5.2,填写value内容 6,多个链接的颜色标记 标记后的结果展示
这样更易于分辨
前言 题目链接
移除链表元素
链表的中间结点
反转链表
分割链表
环形链表的约瑟夫问题
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
移除链表元素 题述
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点
思路1:直接删除原链表中不符合的节点 遍历原链表,遇到val就执行删除操作
执行删除操作修改指针的指向有点麻烦,还有其他办法
思路2:满足要求的节点放在新链表上 定义新链表,利用pcur遍历原链表,找不为val的节点,尾插在新链表中
新链表:newHead newTail
要考虑链表是否为空
链表为空:插入进来的节点就是链表的头节点和尾节点
链表不为空,插入进来的节点就是链表的新的尾节点
代码实现思路2 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ typedef struct ListNode ListNode; struct ListNode* removeElements(struct ListNode* head, int val) { //定义新链表的头尾指针 ListNode* newHead,* newTail; newHead=newTail=NULL; ListNode* pcur=head; while(pcur) { //不是val,尾插到新链表 if(pcur->val!
在Java编程中,我们经常需要获取不同数据类型的长度信息,比如字符串(String)、数组(Array)和集合(Collection)等。针对这些常见数据类型,Java提供了不同的方法和属性来获取它们的长度。下面是每个数据类型获取长度的方式和底层原理的介绍。
1. 字符串(String)类型
字符串是Java中的一个内置数据类型,用于表示一串字符序列。要获取字符串的长度,我们可以使用字符串对象的 length() 方法。这个方法返回字符串中字符的数量,即字符串的长度。例如:
String str = "Hello"; int length = str.length(); // length 的值为 5 在Java中,字符串实际上是一个类,内部实现是一个字符数组(char[])。调用字符串对象的 length() 方法时,实际上是在返回该字符数组的长度,也就是字符的数量。这个长度在字符串对象创建时就确定了,因此可以通过 length() 方法快速获取字符串的长度。
2. 数组(Array)类型
数组是一种容器,可以存储多个相同类型的元素。在Java中,数组是一个对象,具有一个名为 length 的属性,用于获取数组的长度。数组的长度是数组中元素的数量。例如:
int[] arr = {1, 2, 3, 4, 5}; int length = arr.length; // length 的值为 5 在Java中,数组也是一个对象,内部也是一个特定类型的数组。数组对象具有一个名为 length 的属性,存储了数组中元素的数量。数组的长度在创建数组时确定,因此可以通过访问数组对象的 length 属性来获取数组的长度。
3. 集合(Collection)类型
Java中的集合类(如List、Set、Map等)提供了丰富的API用于操作数据集合。对于集合类,通常使用集合对象的 size() 方法来获取集合的大小,即集合中元素的数量。例如,对于List集合:
List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); int size = list.size(); // size 的值为 2 集合类的 size() 方法是用来获取集合中元素的数量。底层实现会根据具体的集合类型来遍历集合中的元素并计算数量,从而返回集合的大小。
前提要求:① 虚拟机防火墙已关闭,且运行了SSH服务正常运行;
② 之前可以连接,IP地址、端口(默认为22)、用户名和密码都是正确的;
③ 无其他可能影响连接的外部影响,只是FinalShell这种Linux远程连接的工具与虚拟机之间的操作。
问题原因 原本之前就配置好了FinalShell可以正常连接虚拟机,突然修改了某些IP或有一天重新连接却连接不上了,出现Session.connect: java.net.SocketException: Connection reset :连接重置的错误信息。(如下图)
甚至有时出现Session.connect: java.net.SocketException: Connection reset by peer :对等方重置连接的错误信息。
即使再三确定了
① VMware的虚拟网络编辑器中IP配置与电脑网卡的虚拟网卡VMware Virtual Ethernet Adapter for VMnet8配置一致;(如下图)
② FinalShell的配置与虚拟机网络配置配置一致。(如下图)
③ 并且自己ping这些ip也ping得通。(如下图)
有时候改来改去突然又连接上了,最后重复尝试,即使连接上了还特意制造同样情况的错误,终于知道是因为在连接断开后的读和写操作引起的。
1、Connect reset by peer:如果一端的Socket被关闭(或主动关闭,或因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常。(Socket默认连接60秒,60秒之内没有进行心跳交互,即读写数据,就会自动关闭连接。)
2、Connection reset:一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常。
解决办法 就是改动电脑网卡的虚拟网卡VMware Virtual Ethernet Adapter for VMnet8和FinalShell的配置尝试连接后再按原来的改回来。
步骤一 修改电脑网卡的虚拟网卡VMware Virtual Ethernet Adapter for VMnet8的IP,数字随意。(如下图,以Win11为例)(点击网络和Internet后在最下面找到高级网络设置,才进入网络适配器)
步骤二 特意改错FinalShell的配置,并尝试连接出现连接超时错误后,再改回正确的IP,即可重新连接。(下图为错误的)
下图为正确的
二、uniapp分包小程序
App默认为整包。兼容小程序的分包配置。其目的不用于下载提速,而用于首页是vue时的启动提速。
这是我分包小程序之后的目录结构
components:公共组件(供主包引用)
page_后跟拼音的都是分包
分包里的components是单个分包自己的组件目录,分包vue页面的引用只能是在自己page_zhaoshang分包目录下才可以引用
pages是主包,里面都是启动页面/TabBar 页面
static里放的是公共静态资源,图片类
分包步骤:
=====
1.配置manifest.json
“mp-weixin”: {
“optimization”:{“subPackages”:true}
}
优化分包:
在对应平台的配置(manifest.json)下添加"optimization":{"subPackages":true}开启分包优化
目前只支持mp-weixin、mp-qq、mp-baidu的分包优化
静态文件:分包下支持 static 等静态资源拷贝,即分包目录内放置的静态资源不会被打包到主包中,也不可在主包中使用
js文件:当某个 js 仅被一个分包引用时,该 js 会被打包到该分包内,否则仍打到主包(即被主包引用,或被超过 1 个分包引用)
自定义组件:若某个自定义组件仅被一个分包引用时,且未放入到分包内,编译时会输出提示信息
2.配置pages.json
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
《前端开发四大模块核心知识笔记》
最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。