欢迎来到《小5讲堂》,大家好,我是全栈小5。
这是《数据库》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
目录 一、传统数据库1.介绍2.分类3.作用4.特点 二、数据库趋势1.数据库存储2.文件系统存储3.内存存储4.分布式存储5.特定格式存储 文章推荐 数据库是用于存储、管理和检索数据的系统。它们在现代计算机科学和信息技术中扮演着至关重要的角色,用于支持各种应用程序和业务需求。以下是关于数据库的介绍、分类、作用和特点的概述:
一、传统数据库 1.介绍 数据库是一种结构化数据的集合,它们被组织成表格、行和列的形式,以便于存储、管理和检索。数据库管理系统(DBMS)是一种软件,用于管理数据库的创建、维护、访问和安全性。
2.分类 数据库可以按照不同的标准进行分类,其中一些常见的分类包括:
按数据模型分类:关系型数据库(如Oracle、MySQL、SQL Server)、非关系型数据库(NoSQL,如MongoDB、Redis)等。按部署方式分类:本地数据库、云数据库、分布式数据库等。按数据处理方式分类:OLTP(联机事务处理)、OLAP(联机分析处理)等。 3.作用 数据库的主要作用包括:
数据存储:保存和组织数据,确保数据的持久性和一致性。数据管理:提供数据的增删改查操作,以及数据的安全性和完整性控制。数据检索:支持灵活的数据查询和分析,以满足各种需求。数据共享:支持多用户同时访问和共享数据,保证数据的一致性和可靠性。 4.特点 数据库的特点可以包括但不限于:
数据独立性:数据库系统将数据与应用程序解耦,使得数据的逻辑结构和物理存储相互独立。数据安全性:提供各种安全功能,包括访问控制、数据加密、身份验证等,以保护数据免受未经授权的访问和恶意攻击。数据一致性:数据库系统确保数据的一致性和完整性,通过事务管理和ACID(原子性、一致性、隔离性、持久性)属性来实现。数据可扩展性:支持大规模数据和高并发请求,具有良好的可扩展性和性能表现。数据备份和恢复:提供数据备份、恢复和故障转移等功能,确保数据库系统的高可用性和容错性。 综上所述,数据库在现代信息技术中扮演着重要的角色,通过有效地管理和利用数据,为各种应用程序和业务需求提供支持和基础。
二、数据库趋势 存储 AI(人工智能)数据通常需要考虑到数据的特殊性和需求,包括数据的结构、规模、处理方式以及对数据的访问速度和安全性等方面。以下是一般情况下 AI 数据存储的一些常见方式和技术:
1.数据库存储 关系型数据库(如Oracle、MySQL、SQL Server):适用于结构化数据的存储和管理,例如训练数据、元数据等。非关系型数据库(NoSQL,如MongoDB、Redis):对于半结构化或非结构化数据,例如图像、音频、文本等,提供更灵活的存储和检索方式。 2.文件系统存储 分布式文件系统(如Hadoop的HDFS、Amazon S3):适用于存储大规模的非结构化数据,例如大型模型参数、原始数据等。对象存储(如Amazon S3、Azure Blob Storage):提供高可用性、可扩展性和低成本的存储解决方案,适用于大规模数据的长期存储和备份。 3.内存存储 内存数据库(如Redis、Memcached):适用于对数据访问速度要求高的场景,例如实时推理、缓存等。 4.分布式存储 分布式数据库系统(如Cassandra、HBase):适用于大规模数据的存储和处理,具有良好的横向扩展性和高可用性。 5.特定格式存储 TensorFlow Serving、ONNX等框架提供了特定的模型格式和存储方式,适用于模型部署和推理。 在选择 AI 数据存储方案时,需要综合考虑数据的类型、规模、访问模式以及系统的性能和成本等因素,并根据实际需求选择合适的存储技术和架构。
文章推荐 【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理
【新星计划回顾】第六篇学习计划-通过自定义函数和存储过程模拟MD5数据
【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点
【Sql Server】Update中的From语句,以及常见更新操作方式
【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录
【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型
总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。
对于必须在Windows电脑和Mac电脑之间来回切换的Mac朋友来说,跨平台不兼容一直是一个巨大的障碍,尤其是当我们需要使用NTFS格式的硬盘在Windows和macOS之间共享文件时。因为Mac默认不支持写入NTFS磁盘。
为了解决这一问题,很多朋友会选择很便捷的方法——使用专业的NTFS for Mac读写应用来读写NTFS硬盘。但也有朋友在下载安装过程中,会有些不知所措,不清楚“如何安装NTFS for Mac”。
今天,我就为大家整理出一份最新的Tuxera NTFS 2023 Mac用教程,帮助大家在Mac上更好地使用Tuxera NTFS 2023 Mac破解版。
Tuxera NTFS 2023 Mac破解版是款适合Mac用户使用的磁盘读写工具。Tuxera NTFS 2023 Mac正式版可以很好的帮助用户在Mac上打开,编辑,复制,移动或删除存储在Windows NTFS格式的USB驱动器上的文件。并且Tuxera NTFS 2023 Mac还可以无阻碍地使用各种文件系统磁盘,还能解决磁盘无法正常显示以及磁盘常规管理。
Tuxera2023新功能介绍 在Mac上读写Windows NTFS文件系统:tuxera ntfs 2016提供完全读写NTFS磁盘功能,并兼容跨越Mac和Windows平台。实现苹果Mac OS X系统读写Microsoft Windows NTFS文件系统,在硬盘、U盘等外接设备中进行全面访问、删除、修改等相关操作。快速全面的数据保护:tuxera ntfs 2016提供了最快的NTFS文件传输速度,同时保护您的数据是最新的智能缓存。超强兼容性:支持所有从OS X 10.4 Tiger开始的Mac平台,包括OS X El Capitan、macOS 10.12 (Sierra)。 同时兼容流行的虚拟化和加密解决方案,包括Parallels Desktop和VMware Fusion。 Tuxera2023下载安装和激活教程 (1)Tuxera2023网盘下载:https://pan.baidu.com/s/1LtLXq4ghs9mfjzGevtAfTg?pwd=g6eb 提取码:g6eb (2)下载完成后,双击开始安装,接下来无脑点击【下一个】或者【继续】按钮即可。
(3)安装完成之后,输入Tuxera NTFS 2023产品密钥(更多产品密钥见文章底部)
DTYQ78-3YT807-FSY0FG-YSEURG-YF8ESY
3D0YTU-NYS78C-TYS478-0EYTFB-8SET0T
(4)输入完之后,会自动激活啦,然后我们回到电脑桌面可以看到Tuxera2023图标了。
(5)然后我们打开它,就会出现如下页面,表示已经永久激活Tuxera2023了。
Tuxera2023下载和产品密钥获取 Tuxera2023网盘下载:https://pan.baidu.com/s/1LtLXq4ghs9mfjzGevtAfTg?pwd=g6eb 提取码:g6eb Tuxera2023更多产品密钥:https://pan.baidu.com/s/1zX3DqXt-wsy510L1lDI7Xg 提取码:3phh
另外也为大家申请了一些优惠码,如果想立即使用永久版的,可以看看!!!
Tuxera2023永久激活官网:https://souurl.cn/0CXGFo。优惠码:LCUU1818
优惠码使用方式如下所示
前言 本篇会讲到Java中接口内容,概念和注意点可能比较多,需要耐心多看几遍,我尽可能的使用经典的例子帮助大家理解~
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
前言
接口
语法
注意
代码理解
接口运用举例
IUSB接口
KeyBoard类
Mouse类
Computer类
多个接口
代码理解(语法层面)
接口解决多继承问题 代码示例
Animal类
IFly、IRunning、ISwimming接口
Fish类
Duck类
再加上一个测试
接口间的继承
代码理解
接口 接口是公共的行为规范标准,在Java中,接口是多个类的公共规范,是一种引用数据类型。
语法 定义格式与类基本相同,将class关键字换成interface关键字接口中的成员变量(习惯上是大写)默认为public static final 修饰的(写的时候可省略public static final),必须被初始化接口中的方法默认只能是public abstract 修饰的(也可省略不写,不写默认也是抽象方法(不能有具体的实现,否则会报错),用其他修饰符会报错)接口中使用default修饰的方法和static修饰的方法是可以有具体的实现的接口中不能有静态代码块、示例代码块和构造方法。接口虽然不是类,但编译完成后也是字节码文件(后缀名是.class)。 注意 创建接口时, 接口的命名一般以大写字母 I 开头接口的命名一般使用 "形容词" 词性的单词.阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性. 代码理解 package demo2inter; public interface ITestInterFace { public static final int a=100; int AGE=10; abstract public void fun1(); void fun2(); default void func(){ System.
文章目录 一、Visual Studio Code 简介二、MAC 安装 Visual Studio Code1、下载 Visual Studio Code2、安装 Visual Studio Code3、安装中文语言包4、编辑 html 并运行 一、Visual Studio Code 简介 Visual Studio Code 简称 VSCode , 是 微软 开发的一款 轻量级 / 跨平台 的代码编辑器 ;
VSCode 支持 Windows、macOS 和 Linux 操作系统 ;
VSCode 支持如下 编程语言 :
JavaScriptTypeScriptNode.jsC++C#JavaPythonPHPGo VSCode 集成了调试器 , 可以调试 上述 多种语言 ;
VSCode 内置了 Git 版本控制插件 , 可以进行 版本控制 和 代码提交 ;
二、MAC 安装 Visual Studio Code 1、下载 Visual Studio Code 进入 Visual Studio Code 官网 https://code.
❣博主主页: 33的博客❣
▶文章专栏分类: Java从入门到精通◀
🚚我的代码仓库: 33的代码仓库🚚
🫵🫵🫵关注我带你学更多数据结构知识
目录 1.前言2.集合架构3.时间和空间复杂度3.1算法效率3.2时间复杂度3.2.1大O的渐进表示3.2.2常见时间复杂度举例 3.3空间复杂度 4.包装类4.1基本数据和对应的包装类:4.2装箱和拆箱 5.泛型5.1引出范型5.2语法5.3泛型类的使用5.4泛型是如何编译5.5泛型的上界5.6泛型方法 6.总结 1.前言 数据结构是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合,从这篇文章开始,我们将一起进入数据结构的学习,那么该如何学好数据结构呢?博主的建议是多写代码,多思考,多画图!
本章重点
掌握数据结构基本知识主要包括集合框架,时间和空间复杂度,算法效率,大O渐进表示,包装类,泛型相关知识。
2.集合架构 Java 集合框架Java Collection Framework ,又被称为容器和其实现类classes 。
类和接口总览:
3.时间和空间复杂度 遇到一个算法,我们怎么衡量一个算法的好坏呢?
3.1算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。
3.2时间复杂度 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。
有些算法的时间复杂度存在最好、平均和最坏情况:
最坏情况:任意输入规模的最大运行次数(上界)当说时间复杂度一般值最坏情况下
平均情况:任意输入规模的期望运行次数
最好情况:任意输入规模的最小运行次数(下界)
3.2.1大O的渐进表示 在计算时间复杂度时,我们不需要计算精确的执行次数,只需要大概的次数,那么我们就剋用大O渐进表示法去掉那些对结果影响不大的项,简明表示执行的次数。
规则:
1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。
3.2.2常见时间复杂度举例 例1.
void func2(int N) { int count = 0; for (int k = 0; k < 2 * N ; k++) { count++; //时间复杂度2N } int M = 10; while ((M--) > 0) { count++; //时间复杂度10 } System.
RabbitMQ3.13.x之二_RabbitMQ所有端口说明及开启后台管理功能 文章目录 RabbitMQ3.13.x之二_RabbitMQ所有端口说明及开启后台管理功能1. RabbitMQ端口说明2. 开启Rabbitmq后台管理功能1. 查看rabbitmq已安装的插件2. 开启rabbitmq后台管理平台插件3. 开启插件后,再次查看插件列表 3. 访问后台管理 1. RabbitMQ端口说明 RabbitMQ 节点绑定到端口(开放服务器 TCP 套接字)以接受客户端和 CLI 工具连接。 其他进程和工具(如 SELinux)可能会阻止 RabbitMQ 绑定到端口。当这种情况发生时, 节点将无法启动。
CLI 工具、客户端库和 RabbitMQ 节点也会打开连接(客户端 TCP 套接字)。 防火墙可以阻止节点和 CLI 工具相互通信。 请确保可访问以下端口:
4369:epmd,RabbitMQ 节点和 CLI 工具使用的对等发现服务5672、5671:由不带 TLS 和带 TLS 的 AMQP 0-9-1 和 AMQP 1.0 客户端使用5552、5551:由不带 TLS 和带 TLS 的 RabbitMQ Stream 协议客户端使用6000 到 6500:用于流复制25672:用于节点间和 CLI 工具通信(Erlang 分发服务器端口) 并从动态范围(默认情况下限制为单个端口, 计算为 AMQP 端口 + 20000)。除非这些端口上的外部连接确实是必要的(例如 群集使用联合身份验证或 CLI 工具在子网外部的计算机上使用) 这些端口不应公开。有关详细信息,请参阅网络指南。35672-35682:CLI 工具(Erlang 发行版客户端端口)用于与节点通信 并从动态范围(计算为服务器分发端口 + 10000 到 服务器分发端口 + 10010)。有关详细信息,请参阅网络指南。15672、15671:HTTP API 客户端、管理 UI 和 rabbitmqadmin,不带 TLS 和带 TLS (仅当启用管理插件时)61613、61614:不带 TLS 和带 TLS 的 STOMP 客户端(仅当启用了 STOMP 插件时)1883、8883:不带 TLS 和带 TLS 的 MQTT 客户端(如果启用了 MQTT 插件)15674:STOMP-over-WebSockets 客户端(仅当启用了 Web STOMP 插件时)15675:MQTT-over-WebSockets 客户端(仅当启用了 Web MQTT 插件时)15692、15691:Prometheus 指标,不带 TLS 和带 TLS(仅当启用了 Prometheus 插件时) 可以将 RabbitMQ 配置为使用不同的端口和特定的网络接口。
目录
一、一般模糊查询
二、利用通配符查询
1. _ 表示任意的单个字符
2. % 表示匹配任意多个任意字符
3. [ ]表示筛选范围
4. 查询包含通配符的字符串
一、一般模糊查询 1. 单条件查询
//查询所有姓名包含“张”的记录 select * from student where name like '张' 2. 多条件查询
//查询所有姓名包含“张”,地址包含四川的记录 select * from student where name like '张' and address like '四川' //查询所有姓名包含“张”,或者地址包含四川的记录 select * from student where name like '张' or address like '四川' 二、利用通配符查询 通配符:_ 、% 、[ ]
1. _ 表示任意的单个字符 //查询所有名字姓张,字长两个字的记录 select * from student where name like '张_' //查询所有名字姓张,字长三个字的记录 select * from student where name like '张__' 2.
| 编辑模式-1 | 编辑模式-2 |
| — | — |
| | |
同时可以注意到两者编辑模式略有不同,在编辑模式-1下,可以做到修改,删除,背景色的设置,闹铃的添加,在编辑模式-2下仅仅能做到修改和删除。
左滑Note条目左滑部分关键代码:
首先需要新建一个滑动view类
public class MyScrollView extends ScrollView {
private ScrollViewListener scrollViewListener = null;
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setOnScrollListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
WPF(Windows Presentation Foundation)是.NET框架的一个部分,用于构建桌面应用程序的用户界面。在WPF中,菜单(Menu)是一种常用的控件,用于提供一组选项或命令,使用户可以根据自己的需要执行特定的操作。
本文将详细介绍WPF中的Menu控件,包括其基本用法、属性和事件。同时,我们将通过一个示例来展示如何在一个简单的应用程序中使用Menu控件。
1、Menu控件的基本概念 在WPF中,Menu控件是由菜单项(MenuItem)组成的,每个菜单项都可以包含一个命令(ICommand)和相关的视觉元素(如文本或图像)。Menu控件的主要作用是提供一种层次结构,以组织相关的命令和选项。
2、Menu控件的属性 WPF中的Menu控件具有许多属性,这些属性可以用来定义菜单的外观和行为。以下是一些常用的属性:
ItemsSource:用于指定菜单项的来源,可以是对象集合、数据模板或其他数据源。DisplayMemberPath:用于指定用于显示菜单项的属性路径。SelectedItem:用于获取或设置当前选中的菜单项。IsSubmenuOpen:用于指示子菜单是否打开。Header:用于设置菜单的标题。 3. Menu控件的事件 WPF中的Menu控件也支持许多事件,这些事件可以在菜单项被选择或子菜单被打开时触发。以下是一些常用的事件:
SelectionChanged:当选中的菜单项发生变化时触发。Opening:当菜单即将打开时触发。Opened:当菜单已经打开时触发。Closing:当菜单即将关闭时触发。Closed:当菜单已经关闭时触发。 4、Menu控件的示例 创建一个简单的菜单 下面我们将通过一个简单的示例来展示如何使用Menu控件。
首先,创建一个新的WPF应用程序项目。
在XAML文件中,添加一个Menu控件及其菜单项。代码如下:
<Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="450" Width="800"> <DockPanel> <Menu DockPanel.Dock="Top"> <MenuItem Header="文件"> <MenuItem Header="新建" /> <MenuItem Header="打开" /> <MenuItem Header="保存" /> </MenuItem> <MenuItem Header="编辑"> <MenuItem Header="复制" /> <MenuItem Header="粘贴" /> <MenuItem Header="删除" /> </MenuItem> </Menu> <!-- 其他UI元素 --> </DockPanel> </Window> 在这个示例中,我们创建了一个包含“文件”和“编辑”两个菜单项的菜单。每个菜单项下都有相关的子菜单项。
定制菜单样式 在WPF中,您可以使用样式来定制菜单的视觉外观。以下是如何自定义菜单的样式的一个示例:
<Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="450" Width="800"> <DockPanel> <Menu DockPanel.
一、 打印 0 到 2 1.1 方式一:0 until 3 /** * 打印 0 到 2 */ fun print0To2M1(){ for (inex in 0 until 3){// 不包含3 print("$inex ") } } 运行结果
1.2 方式二:inex in 0 …2 /** * 打印 0 到 2 */ fun print0To2M2(){ for (inex in 0 ..2){// 包含2 print("$inex ") } } 运行结果
二、打印 2 到 0 使用downTo
/** * 打印 2 到 0 (0 到 2 的 倒序遍历) */ fun print2To0() { for (inex in 2 downTo 0) {// 包含2 print("
目录
运算符重载
主角点类
魔法方法
__getitem__
__setitem__
__iter__
__next__
__len__
__neg__
__pos__
__abs__
__bool__
__call__
重载运算符
比较运算符
相等 ==
不等 !=
大于和小于 >、<
大于等于和小于等于 >=、<=
位运算符
位与 &
位或 |
位异或 ^
位取反 ~ 左位移 <<
右位移 >>
算术运算符
加 +
减 -
乘 *
除 /
幂 **
取模 %
整除 // 右加 +
右幂 **
右整除 //
总结
本篇的主角正是“点”,今天要用运算符重载来,把它玩出“点”花样来!那什么是运算符重载呢?
运算符重载 运算符重载是面向对象编程中的一个概念,它允许程序员为自定义类型(如类或结构体)定义特定的运算符行为,使得这些类的实例可以使用语言中预定义的运算符。在Python等编程语言中,运算符重载是一种强大的特性,它使得我们可以用更加自然和直观的方式处理自定义类型。在实际编程中,我们应该根据需要合理使用这一特性,以提高代码的质量和效率。
主角点类 class Point 这个类很简单,就两个属性:横坐标x和纵坐标y。
class Point: def __init__(self, x=0, y=0): self.
为何升级?除了折腾外,便是享受新版本带给我们的新特性体验。
Webpack5 的新特性
持久化缓存
moduleIds & chunkIds 的优化
更智能的 tree shaking
Module Federation
…
Vue3 的新特性 更小
更快
加强 TypeScript 支持
加强 API 设计一致性
提高自身可维护性
开放更多底层功能
确定项目技术栈 编程语言:TypeScript 4.2.4
构建工具:[Webpack 5.33.2]()
前端框架:Vue 3.0.11
路由工具:Vue Router 4.0.6
状态管理:Vuex 4.0.0
CSS 预编译:Sass / Less
HTTP 工具:Axios
Git Hook 工具:Husky + Lint-staged
代码规范:EditorConfig + Prettier + ESLint
提交规范:Commitlint
构建部署:Travis
3. 项目搭建
此文并不是从零搭建,而是在 createVue@v1.0.0 的基础上修改搭建,如若看不懂,可以先看《Webpack4 搭建 Vue 项目》,跟着一步步搭建,后再看此文升级
创建 createVue 文件夹,进入该文件夹, npm init 初始化项目
全流程演示通过百度AI实现语音识别——将文本转为语音(python实现) 文章目录 全流程演示通过百度AI实现语音识别——将文本转为语音(python实现)一. 前置条件二. 获取资源三. 代码实现 本文详细地梳理及实现了如何通过使用百度AI平台,将输入的文本转换成语音。 一. 前置条件 我们需要使用百度旗下的百度AI开放平台,链接如下:
百度AI开放平台-全球领先的人工智能服务平台 二. 获取资源 首先,我们需要进入百度AI平台,选择开放能力–>语音技术–>短语音识别。
其次,获取资源。
如果是首次使用该平台,可以选择使用免费资源: 按下图所示进行操作,此处我是由于已经选过了所以显示的是已领。 领取完成后点击应用列表–>点击创建项目。 应用名称随意,在接口选择中点击语音技术–>点击全选。 点击个人–>点击创建。(应用描述随意) 回到应用列表,若出现应用1,则第一步成功了。 三. 代码实现 首先需要安装相应的python包(前提需要安装好了python或相应软件),在命令提示符中运行以下代码:
pip install baidu-aip 在python环境中:
从AIP中导入相应的语音模块AipSpeech
from aip import AipSpeech 复制粘贴APPID、AK、SK这3个值并以此初始化对象
"""你的APPID AK SK""" APP_ID='59391449' API_KEY='wmHNwxgshlfghleTdav0tmSH' SECRET_KEY='Z4q63PsTQ90T2SqNdfwjZLVdgD0RU3iu' # 使用上面定义的三个参数来初始化AipSpeech类的一个实例,命名为client。 # 这个实例将用于后续与百度AIP服务的交互。 client=AipSpeech (APP_ID, API_KEY, SECRET_KEY) 三个值的来源为刚刚创建的应用的对应数据,如图:
准备文本及存放路径
Text='八百标兵奔北坡,炮兵并排北边跑,炮兵怕把标兵碰,标兵怕碰炮兵炮。' # 文字部分可以随意拟定 filePath= "D:/PycharmProjects/Visual_project/text/voice/MyVoice.mp3 " #音频文件存放路径,替换为你自己的路径 语音合成
# 调用client的synthesis方法来进行语音合成。参数包括要合成的文本、语言类型(这里是中文'zh')、语音的音量(这里是5)等。 result=client.synthesis (Text,'zh',1, {'vol': 5}) print(result) # 方法的返回值将是一个二进制数据(如果合成成功)或一个字典(如果发生错误)。 识别并正确返回语音二进制代码,错误则返回dict(相应的错误码)
if not isinstance (result, dict): # 如果结果不是字典(即没有错误),则打开指定的文件路径,并将合成的语音数据写入文件。 # 'wb'模式表示以二进制写模式打开文件。 with open (filePath,'wb')as f: # 以写的方式打开MyVoice.
配置JDK版本的步骤如下:
下载JDK安装文件:首先,需要从Oracle官方网站(https://www.oracle.com/java/technologies/javase-jdk8-downloads.html)下载适合您操作系统的JDK版本。
安装JDK:双击下载的安装文件,按照提示完成JDK的安装过程。选择合适的安装路径,一般建议选择默认路径。
配置环境变量:配置JDK的环境变量,以便操作系统能够找到JDK。在Windows上,可以按下 Win + R 打开运行窗口,输入“sysdm.cpl”打开系统属性窗口。在窗口中选择“高级”选项卡,点击“环境变量”按钮。在系统变量中,找到“Path”变量,点击“编辑”按钮,在末尾添加JDK的安装路径(例如C:\Program Files\Java\jdk1.8.0_251\bin),点击确定保存变更。
验证JDK安装:打开命令行终端(在Windows上可以按下 Win + R,输入“cmd”打开),输入“java -version”命令,查看输出的版本信息。如果正确显示JDK的版本信息,则表示安装成功。
以上就是配置JDK版本的一般步骤
在IntelliJ IDEA的Spring Boot项目中更换JDK版本的步骤与普通项目类似。以下是具体的操作步骤:
打开IntelliJ IDEA,打开您的Spring Boot项目。
点击菜单栏中的"File"(文件)选项,选择"Project Structure"(项目结构)。
在Project Structure窗口中,点击左侧的"Project"(项目)选项。
在右侧的"Project SDK"下拉框中,选择您想要更换的JDK版本。如果需要新建一个JDK版本,可以点击右侧的"New"(新建)按钮,然后选择JDK的安装路径。
点击"Apply"(应用)按钮,然后点击"OK"(确定)按钮,保存修改并关闭Project Structure窗口。
如果您的Spring Boot项目使用了Maven作为构建工具,还需要在pom.xml文件中修改JDK版本:
对于Maven项目,打开pom.xml文件,在 <properties>节点下找到maven.compiler.source和maven.compiler.target配置项,将JDK版本号修改为您选择的版本号。
更新项目依赖:打开Gradle工具窗口或Maven工具窗口,点击刷新按钮,使项目重新加载并更新依赖。
现在,您的Spring Boot项目将使用您选择的新的JDK版本进行编译和运行。
请注意,更换JDK版本可能会导致项目中一些依赖库或插件不兼容,如果遇到编译或运行错误,请检查项目配置或相关文档,以解决依赖问题。
希望以上步骤对您有所帮助!
关于在 vite.config.ts 中引入 vite-plugin-eslint 插件,出现如下报错:
无法找到模块 vite-plugin-eslint 插件中的 TS 声明文件,隐式含有 “any” 类型。
Could not find a declaration file for module vite-plugin-eslint. xxxxx/node_modules/vite-plugin-eslint/dist/index.mjs implicitly has an any type. 其实,从报错信息后面的内容中:
There are types at xxxx/node_modules/vite-plugin-eslint/dist/index.d.ts, but this result could not be resolved when respecting package.json exports. The vite-plugin-eslint library may need to update its package.json or typings. 我们可以得到在该插件中是含有 TS 声明文件的,vite-plugin-eslint/dist/index.d.ts,但是由于 TypeScript 的变更,导致新版本的 typescript 与依赖包中 package.json 指明 TS 声明文件位置的 types 配置项不匹配,最终导致新版本的 TypeScript 找不到 vite-plugin-eslint 插件中的 TS 声明文件。
Paragon ntfs 15 for mac 开心版是一个底层的文件系统驱动程序,专门开发用来弥合Windows和Mac OS X之间的不兼容性,通过在Mac OS X系统下提供对任何版本的NTFS文件系统完全的读写访问服务来弥合这种不兼容性。为您轻松解决Mac不能识别Windows NTFS文件难题,让您简单自如读写NTFS外置存储文件。您无法在NTFS分区中创建、删除或者修改文件或文件夹,而仅仅只能读取。通过Paragon的 Mac OS X专用NTFS,您可以在Mac OS X下全读/写访问NTFS的任何分区。
Paragon ntfs for mac 开心版版一直是Mac OS平台上最受欢迎的NTFS硬盘格式读取工具,有了NTFS for Mac,安装了双系统的Mac用户可以在OS X系统下直接读取和写入windows系统下的NTFS硬盘格式,解决了双系统下,硬盘格式互相不兼容的问题。
Paragon NTFS for Mac中文激活图文教程 (1)先下载Pragon,然后下载完成后,开始安装。
(2)Mac可能为了你的电脑安全,弹出一个提醒弹框,我们点击【打开】即可。
(3)开始安装,点击【下一步】
(4)需要输入电脑开机密码。
(5)开始安装中。
(6)点击下一步
(7)点击下一步
(8)第一次安装Paragon呢需要在【系统偏好设定】中允许来自Paragon的系统软件拓展,按照提示我们操作就行。
(9)设定最后一步,我们需要【重新启动】才会生效。
(10)电脑重启后,我们回到电脑桌面,可以多了一个Paragon图标,双击打开。
(11)可以看到已经识别出我的硬盘了,接下来操作如何激活它。
(12)使用Trial Reset.app来重置试用时间,来开心的永远试用下去...
Mac文件损坏处理 打开Mac终端 输入以下代码回车sudo spctl --master-disable(终端是Mac系统的一个系统软件,在实用菜单文件夹中,找不到就用Mac系统搜索"终端"两个字)之后输入电脑密码打开所有来源即可运行!
注:在终端下输入密码不会显示,输入完成直接回车即可,如果输入错误会用英文提示错误请重试,再次输入正确的密码回车即可; Pragon NTFS for Mac 15 破解版下载和激活方法 (1)方法1使用正版激活:
上车正版的时候,不要忘记输入优惠码
Pragon NTFS中文官网:https://souurl.cn/mPStjM。 优惠码:XZCE4786(能减10元)。
(2)Paragon NTFS for Mac 破解百度网盘:https://pan.baidu.com/s/1DsVhuu2sBQOVmgfZcYKbSQ?pwd=uk21 提取码:uk21
一、概述 记录时间 [2024-4-4]
本文讲述的是在Windows系统(Python+PyTorch+Conda+cpu)中YOLOv8模型的简单应用。这里附带上YOLOv8官方文档,里面记载了详细的使用方法,如果觉得看文档比较麻烦的话,可以直接看文章,需要用到的部分已经在文章中进行了摘录。
经过了前几次的尝试,我们不仅能使用CLI的方式运行yolov8n.pt模型,对图像和视频进行目标识别,并得到结果。
参考文章:YOLOv8模型的简单测试,Windows环境下安装部署(Python+PyTorch+Conda+cpu+CLI)
也可以在PyCharm集成开发环境中编写简单的python文件,以python的方式对YOLOv8模型进行简单的测试。
参考文章:YOLOv8模型的简单测试2,PyCharm集成开发环境安装使用(Windows+Python+PyTorch+Conda+cpu)
同时也了解了在Python中使用Flask封装网络接口的方法,能实现文件的上传。
参考文章:API接口简单使用(二):Python中使用Flask(接口封装整理版,含文件上传接口的详细实现)
接下来,本文将介绍在Python中将YOLOv8模型封装成API接口使用的方法,然后通过调用封装好的API接口,我们可以上传自定义的测试图片,并返回识别结果。识别结果有两种:一种是完成识别后的图片;另一种是识别目标的类型,以及它们在图片中的坐标、大小,以文本形式返回。
二、思路整理 想要实现在Python中将YOLOv8模型封装成API接口使用,首先整理下思路:
(服务端)使用Flask框架编写一个简单的测试实例,可以实现文件上传(客户端)通过API接口,以文件形式上传自定义的测试图片(服务端)获取图片名称和类型,然后保存到指定路径(服务端)下载并使用YOLOv8模型进行图片预测/识别(服务端)保存图片目标识别的结果(服务端)返回目标识别的结果(客户端)得到服务端返回的识别结果 三、过程实现 此处主要讲述这个案例的实现过程,想要直接上手的朋友可以在文章下半部分获取详细完整版的测试代码哦。
1. 编写测试实例 (服务端)使用Flask框架编写一个简单的测试实例,可以实现文件上传
简单了解 简单的测试实例如下:
from flask import Flask, request app = Flask(__name__) @app.route('/...') def hanshu(): # 这里是写接口函数的地方 if __name__ == '__main__': app.run() 文件上传功能的网络接口参考这个:(简单看一下即可)
@app.post('/upload') def upload(): # 文件作为参数传递,其 id为 file # 如果没有接收到这个请求,返回 No file part if 'file' not in request.files: return "No file part" # 获取上传的文件 file = request.files['file'] # 获取文件名 if file.
springboot支付宝沙箱支付详细步骤 支付宝沙箱环境配置进入支付宝的开放平台——沙箱支付密钥的生成 spring boot 环境配置导入支付宝支付的依赖到pom.xml中在 application.yml 里面进行配置alipay的java配置:AplipayConfig.java支付接口重要!前端配置!! 接口测试回调接口在上面的Controller中配置内网穿透:https://natapp.cn/ 支付宝沙箱环境配置 进入支付宝的开放平台——沙箱支付 沙箱环境
进入个人沙箱环境
点击进入沙箱环境并用支付宝登陆
沙箱管理界面如图所示:
appid,支付宝网关,自定义密钥等
沙箱账号界面如图所示:
这里是用来支付的账号和密码
密钥的生成 密钥工具下载
这时我们拿到两个密钥,将它们保存,这两个密钥很重要
应用私钥应用公钥 拿到两个密钥后,进行自定义密钥配置
进入最开始的沙箱管理界面,点击自定义密钥,点击设置并查看,我们选择的是公钥模式
在这里将上一步骤生成的应用公钥填进来
得到支付宝公钥这另一个密钥,记住并保存这个支付宝公钥
至此,我们沙箱环境的配置和基本参数都已经获取到。
spring boot 环境配置 导入支付宝支付的依赖到pom.xml中 <!-- 支付宝依赖沙箱支付 --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-easysdk</artifactId> <version>2.2.0</version> </dependency> <!-- 支付宝相关--> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.34.0.ALL</version> 在 application.yml 里面进行配置 alipay: appId: appPrivateKey: alipayPublicKey: notifyUrl: alipay的java配置:AplipayConfig.java package com.kp.config; import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.kernel.Config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Data @Component //读取yml文件中alipay 开头的配置 @ConfigurationProperties(prefix = "
SHAP(SHapley Additive exPlanations)作为一种解释机器学习模型输出的方法,基于Shapley值理论,通过将模型预测结果分解为每个特征的贡献,为模型提供全局和局部的可解释性。
SHAP作为机器学习模型的解释工具,已经是一项重大突破。
在处理医学问题时,我们往往通过构建模型,来寻找病因。此处,会有歧义,谈谈个人见解,此种解释并非因果关系,与Logistic回归的OR值有区别,此种解释不是因果解释,我们不能因为预测变量shap值贡献大,而认为这个变量是结局变量的危险因素。这种关系,只能说明由于变量的贡献,能在多大程度上增加预测模型的准确率。
当前阶段,SHAP实现方法,大多数是基于Python,随着算法的流行,R语言也有了相关的SHAP解释。但是R的SHAP解释,目前应用的包是shapviz,这个包仅能对Xgboost、LightGBM以及H2O模型进行解释,其余的机器学习模型并不适用。
这里通过举例,来展示shap模型的R实现:
通过Xgboost模型来预测结直肠癌肝转移。最后一列是Liver,0代表未转移,1代表肝转移
1.加载相关的包,读入数据
#install.packages("shapviz") library(shapviz) #install.packages("xgboost") library(xgboost) library(caret) library(pROC) library(tibble) library(ROCit) data =read.csv("data.csv",header = T,check.names = F) 2.通过caret包划分训练集和测试集数据
# 划分训练集和测试集 set.seed(123)#设置随机数 inTrain<-createDataPartition(y=data[,"Liver"], p=0.7, list=F)#划分训练集,设置训练集的比例为0.7 traindata<-data[inTrain,]#提取训练集数据 testdata<-data[-inTrain,]#提取验证集数据 3.构建Xgboost模型
model_xgboost = xgboost( data = as.matrix(traindata[,c(1:(ncol(traindata)-1))]),#训练集的自变量矩阵 label = traindata$Liver, max_depth = 3, eta = 1, nthread = 2, nrounds = 10, objective = "binary:logistic") 4.模型的预测结果
#生成预测值 traindata$pred <- predict(model_xgboost, as.matrix(traindata[,c(1:(ncol(traindata)-1))])) #计算AUC ROC_train <- round(auc(response=traindata$Liver,predictor=traindata$pred),4) ROC_train #计算置信区间 CI_train=ci(response=traindata$Liver,predictor=traindata$pred) CI_train #通过那个paste0连接 AUC_CI_train=paste0("
文章目录 前言:一、下载(一).链接(直达JDK21)(二).官网搜索(可选其他版本) 二、安装三、环境变量配置四、验证安装和配置五、常见问题解答 前言: 本文将为您提供关于Java官网下载JDK21版本的详细教程。作为Java开发者,我们知道JDK是开发Java应用程序所必需的关键组件之一。JDK21将是一个新的长期支持(LTS)版本,jdk长期支持的版本有8、11和17,如果是64位操作系统建议下载17或21版本,32位建议下载8版本目前可以从官网下载使用。
一、下载 (一).链接(直达JDK21) 1,在Oracle官网找到JDK21
官网:https://www.oracle.com/java/technologies/downloads/#java21
2,到达下载界面后按照箭头顺序操作
如果嫌麻烦这里有下载好的JDK21的安装包
链接:https://pan.baidu.com/s/1te-P14oPb1VxMHkTAz5n7w
提取码:6666
(二).官网搜索(可选其他版本) 1,先去浏览器搜索:甲骨文官网或者复制网址进去https://www.oracle.com/
2,点击这个 products,中文叫产品
3,下滑,找到 java
4,继续向下滑,找到 Oracle JDK
5,进去之后吗,就可以选择不同的 JDK版本
二、安装 1,下载完成后,找到安装包双击安装
2,这里的安装路径后面要用到最好记一下(可更改),默认为 C:\Program Files\Java\jdk-21
3,看到如下界面则为安装成功,关闭即可
三、环境变量配置 1.找到 jdk21 安装路径(注意是bin文件,并将其复制下来)。
2.在计算机设置中搜索查看高级系统设置中,打开环境变量
3.点击新建系统变量名为"JAVA_HOME",变量值为"%JDK-21%“,此处可以配置多个JDK版本用于以后的开发需求,切换JDK版本时更改"JAVA_HOME"的变量值即可快速切换。
4,再次新建系统变量名为"JDK-21”,变量值指定路径为"D:\jdk-21"(第三步中解压后存放jdk-21的路径)
设置成功后点击确定
5,点击新建系统变量名为"CLASSPATH",变量值为".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib;"
设置成功后点击确定
6,在系统变量中找到Path变量点击进行编辑
7,点击新建输入"%JAVA_HOME%\bin",并再连续点击3个点确定回到桌面即可,环境变量初步设置完成。
四、验证安装和配置 1,键盘同时按住win+R,输入cmd进入命令行窗口(或者随便点开一个文件夹,在地址栏中输入cmd)
2,输入 java 后,点击回车显示如下界面
3,输入 javac 后,点击回车显示如下界面
4,再输入"java -version",点击回车出现JDK21的版本信息则表示JDK已经安装成功
五、常见问题解答 1,问题:我在Java官网上找不到JDK21版本的下载链接在哪里?
解答:确保您访问的是Oracle官方网站(https://www.oracle.com/java/),然后导航到Java SE Downloads页面。在该页面上,您可以选择正确的JDK版本,并点击下载链接以获取JDK21版本的安装程序。
2,问题:我在安装JDK21时遇到了错误消息,如何解决?
解答:在安装过程中,如果遇到错误消息,请确保您已经满足了系统要求,并检查是否有足够的磁盘空间和管理员权限。此外,确保下载的安装程序完整且未损坏。如果问题仍然存在,请检查官方文档或社区论坛以获取针对具体错误的解决方案。
3,问题:我安装了JDK21,但在命令行中无法运行Java命令?
解答:这可能是由于环境变量配置不正确所导致的。请确保您已正确设置JAVA_HOME和PATH环境变量,以便系统能够找到JDK21的安装位置。您可以参考本教程中的环境变量配置部分,按照步骤进行设置。
4,问题:如何验证我是否成功安装和配置了JDK21?
解答:您可以在命令行中运行"java -version"命令,如果成功显示JDK21的版本信息,则表示安装和配置正确。此外,您还可以编写一个简单的Java程序并尝试运行,以验证JDK21是否能够正常编译和执行您的代码。
5,问题:我之前安装了其他版本的JDK,是否需要卸载它们?
解答:通常情况下,您可以同时安装多个版本的JDK,并在需要时切换使用。如果您希望保留其他版本,确保在环境变量配置中选择正确的JDK路径。然而,如果您想要释放磁盘空间或避免混淆,可以考虑卸载不需要的旧版本。