欢迎 Llama 3:Meta 的新一代开源大语言模型

介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本,现已在 Hugging Face 平台发布。看到 Meta 持续致力于开放 AI 领域的发展令人振奋,我们也非常高兴地全力支持此次发布,并实现了与 Hugging Face 生态系统的深度集成。 Llama 3 提供两个版本:8B 版本适合在消费级 GPU 上高效部署和开发;70B 版本则专为大规模 AI 应用设计。每个版本都包括基础和指令调优两种形式。此外,基于 Llama 3 8B 微调后的 Llama Guard 新版本也已作为 Llama Guard 2 (安全微调版本) 发布。 我们与 Meta 密切合作,确保其产品能够无缝集成进 Hugging Face 的生态系统。在 Hub 上,您可以找到这五个开放获取的模型 (包括两个基础模型、两个微调模型以及 Llama Guard) 。 本次发布的主要特性和集成功能包括: Hub 上的模型并提供了模型卡片和许可证信息https://hf.co/meta-llama 🤗 Transformers 的集成 针对 Meta Llama 3 70B 的 Hugging Chat 集成https://hf.co/chat/models/meta-llama/Meta-Llama-3-70B-instruct 推理功能集成到推理端点、Google Cloud 和 Amazon SageMaker

【Flutter】多语言方案一:flutter_localizations 与 GetX 配合版

介绍 多语言方案:flutter_localizations 与 GetX 配合版,好处:命令行生成多语言字符串的引用常量类,缺点:切换语言以后,主界面需要手动触发setState,重绘将最新的Locale数据设置给GetMaterialApp。 目录 介绍运行效果一、安装二、使用1.lib文件夹中新建文件夹l10n/arb,并在其中创建app_en.arb 、app_zh.arb、app_zh_HK.arb文件2.项目的根目录中添加l10n.yaml,配置如下3.添加完成之后,执行命令`flutter gen-l10n`,执行命令`flutter run`,.dart_tools会自动生成相关的文件4.MaterialApp改成GetMaterialApp配置国际化字段5.调用6.多语言切换 运行效果 一、安装 dependencies: flutter_localizations: sdk: flutter intl: any get: ^4.6.6 flutter: uses-material-design: true generate: true 二、使用 1.lib文件夹中新建文件夹l10n/arb,并在其中创建app_en.arb 、app_zh.arb、app_zh_HK.arb文件 app_en.arb类 { "@@locale": "en", "appName": "BraveComponent", "@appName": { "description": "备注" }, "helloWorld": "HelloWorld", "followerSystemLanguage": "FollowerSystemLanguage", "simplifiedChinese": "SimplifiedChinese", "traditionalChinese": "TraditionalChinese", "english": "English", "setting": "Setting", "multiLanguage": "MultiLanguage", "theme": "Theme" } app_zh.arb类 { "@@locale": "zh", "appName": "BraveComponent", "@appName": { "description": "备注" }, "helloWorld": "你好,世界", "

DataGrip无法连接Hive 【已解决】

·问题: 1.Ubuntu上的配置:Hadoop3.1.3 Hive3.1.3 JDK1.0.8_401 本地Mysql8.0.36 2.DataGrip无法连接Hive:报错无法连接hadoop102:10000 connection refused ·解决方案: 1.排除DataGrip中驱动问题; 2.关闭安全模式(如果是): hdfs dfsadmin -safemode leave 3. 开启mysql服务 && 开启hadoop集群: systemctl start mysql; myhadoop.sh start; 4.开启hiveservice2和metastore: hive --service hiveserver2 & hive --service metastore & 5.此时DataGrip就可以连接了:

Java:怎么获取当前时间、怎么计算程序运行时间 (源码详解 超详细!!!)

目录 一、使用 System.currentTimeMillis() 1、获取当前时间 2、计算程序运行时间 二、使用 import java.util.Date 1、获取当前时间 2、计算程序运行时间 三、Calendar 类 获取当前时间 四、Date/Time API 1、LocalDate 2、LocalTime 3、LocalDateTime 4、ZonedDateTime 一、使用 System.currentTimeMillis() 这个方法的返回值为 long ,所以需要用 long 类型的变量来接受。此方法优势是不受时区的影响,但是得到结果是时间戳的格式。 1、获取当前时间 public class Main{ public static void main(String[] args) { long time = System.currentTimeMillis(); System.out.println(time); //打印出来的是时间戳 } } 我们可以通过代码将其转换成平时我们看到的时间格式: import java.text.SimpleDateFormat; import java.util.Date; public class Main{ public static void main(String[] args) { long time = System.currentTimeMillis(); SimpleDateFormat s = new SimpleDateFormat(); Date date = new Date(); System.

3D地图大屏 附源码(Three.js + Vue3)

目录 👋 前言 🚀 项目包 ⚒️ 字体制作 🌐 地图制作 💡 参考视频 & 项目 开源项目(Vue3+ts+Windcss+Echart+Three.js大屏案例) 开源(教程) UI风格学习( www.shuzixs.com ) 💎知名的Three.js的项目Orillusion:https://space.bilibili.com/1006136755(打造完全开源WebGPU轻量级渲染引擎)VIS-THREE衍生:https://space.bilibili.com/3048588【零代码编辑器(Web3D编辑器)】 👋 前言 效果图: 因为做大屏需要,所以搞了一个3D地图的效果我本人对Three.js根本不熟,就靠着GPT和百度,磨出来的感谢大佬们的开源和案例(我会把参考项目的链接放在最后) 🚀 项目包 my-datiew-3D-map.zip - 蓝奏云文件大小:74.4 M|https://wwm.lanzout.com/iUEoE1vq153i启动项目:(node版本大于等于 16.20.2) npm run dev 不用下载包了,因为我把第三方包都打包在里面了 ⚒️ 字体制作 导出的.ttf文件转成json格式 转换工具:http://gero3.github.io/facetype.js/ 注意:这些资源,得放在public这里面! 🌐 地图制作 DataV.GeoAtlas地理小工具系列由阿里云DataV数据可视化团队出品,多年深耕数据可视化领域,数据大屏业务开拓者和领航者。致力用震撼而清晰的视觉语言,让更多人读懂大数据,受惠数据驱动的决策方式。http://datav.aliyun.com/portal/school/atlas/area_selector 获取全部数据:https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json 获取边界线:https://geo.datav.aliyun.com/areas_v3/bound/100000.json 在绘制中心点的时候,有些时候,解析中心点的时候,有些偏差,得自己手动修改 💡 参考视频 & 项目 开源项目(Vue3+ts+Windcss+Echart+Three.js大屏案例) PublicbigScreenPage: 公开3d大屏PublicbigScreenPagehttps://gitee.com/shaohqfspace/PublicbigScreenPage?_from=gitee_search 开源(教程) 【开源】用 three.js 制作你的第一个 3D 地图吧!_哔哩哔哩_bilibilireact-three-fiber 真的会帮你节省很多精力!在线预览地址(或许需科学上网):https://3d-geo-map.vercel.app/ github 项目地址:https://github.com/xiaogua-bushigua/3d-geoMap阿里地图小工具:https://datav.aliyun.com/portal/school/atlas/area_selector, 视频播放量 8944、弹幕量 3、点赞数 233、投硬币枚数 148、收藏人数 639、转发人数 46, 视频作者 小瓜不是瓜h, 作者简介 我不做抽奖号啦,相关视频:我的第一个three.

Modbus通讯协议——Java通过Jlibmodbus实现Modbus Master(主机)TCP/RTU的Read;Slave(从机)TCP/RTU的Write

一、首先了解一下Java实现Modbus的三种jar包 只做参考,有能力的话还是建议根据需求自行编写协议工具类 1. modbus4: 支持Modbus-RTU、 Modbus-ASCl.Modbus-TCP三种协议,支持Modbus-RTU over Senal, Modbus.RTU over TCPUDP、 Modbus-ASCl over sera 和 Modbus-TCP over TCP/UDP。但是该工具是同步的不支持异步,实时性要求不强可以使用。 2. ililbmodbus:支持Modbus-RTU和Modbus-TCP两种协议,支持Modbus-RTU over Serial、Modbus-RTU over TCP Modbus-TCP over TCP,Modbus-TCP内部通 过socket实现支持异步。Modbus-RTU Serial通过RXTX实现。 modbus-master-tcp:支持Modbus-TCP一种协议,支持Modbus-TCP over TCP,内部通过netty实现支持异步。 可以执行扩展使其支持Modbus-RTU over TCP和Moc bus-RTU over Serial 以上三个工具包的所有连接都没有断线重连功能,所以使用时需要自行解决断线重 二、主要针对Jlibmodbus实现Modbus的主机与从机’ 1、导入依赖 另附Maven仓库地址:https://mvnrepository.com/ <!-- https://mvnrepository.com/artifact/com.intelligt.modbus/jlibmodbus --> <dependency> <groupId>com.intelligt.modbus</groupId> <artifactId>jlibmodbus</artifactId> <version>1.2.9.10</version> </dependency> 2、Master主机模式: 1)、Modbus-TCP import com.intelligt.modbus.jlibmodbus.Modbus; import com.intelligt.modbus.jlibmodbus.master.ModbusMaster; import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory; import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters; import java.math.BigDecimal; import java.math.BigInteger; import java.net.InetAddress; public class JlibmodbusMasterTcpReader { public static void main(String[] args) throws Exception { TcpParameters tcpParameters = new TcpParameters(); tcpParameters.

一文搞懂Midjourney的所有指令

大家好 我是野生的树下老师,今天分享midjourney有哪些指令,都是怎么用的呢? 跟着我的脚步走起~ 指令释义/imagine通过提示词生成图片/settings查看当前MJ机器人默认设置/ask获取问题答案/relax切换到放松模式/fast切换到快速模式/blend将多个图片混合/pre remix切换到混合模式/help查看帮助信息/info查看基本信息,订阅状况,工作模式等/stealth切换到隐身模式/public切换到公共模式/subscribe管理订阅/prefer option set创建自定义变量/pre suffix制定要添加每个提示末尾的后缀/prefer option list列出之前设置的所有变量/show结合任务ID生成原图片/description根据长传图片,生成四种可能的提示词/shorten分析提示词汇总关键字 /imagine:通过提示词生成图片或者通过垫图和提示词生成图片 最基本的指令,用于生成图片,prompt后面加描述词 该指令还可以用来实现垫图功能,可以使用制指定图像作为提示的一部分来影响出图的构图,风格和颜色 所谓的垫图就是找到一张合适的图片作为参考底图,配上文字描述,得到与图文相符合的图像,可以快速高效的得到想要的效果图 具体垫图操作流程如下: 首先我们点击对话框的“+”图标,上传要作为参考的图片 鼠标停留在对话框,敲回车键(Enter)上传图片,要不图片是没有上传成功的哈 接着输入/iamgine 基础指令,将图片拖拽到对话框里,成功后会显示该图片的链接。图片链接最后,敲空格,再开始敲关键词,完成后发送。 /settings:查看当前MidJourney机器人默认设置 下拉框里面是midjourney里面包含的所有版本 目前最新的版本就是V6,增强了较强输入的提示词的准确性,改进的连贯性和知识以及高级图像提示和重新混合功能。 RAW Mode:可以实现更多摄影或更真实的效果 Stylize Low,Stylize Med,Stylize High,Stylize Very High;影响生成图片的艺术色彩,构图和形式。风格越高生成的图像也就会更加艺术,但是与提示词的联系较少。风格越低,生成图像与提示词会非常匹配,但是艺术性较差。 Public mode:指您可以在公共模式下制作图片,所有人都可以看到你生成的图片 Remix mode:混音模式,使用此模式可以更改提示词,参数,模型版本或变体之间的纵横比,可以局部调整风格 High Variation Mode,Low Variation Mode:默认是High Variation Mode,当我们后续在调用v1 v2 v3 v4的时候,会影响创建生成图像的微妙或强烈变化 Sticky Style:粘性风格,粘滞样式会保存您个人后缀中使用的最后一个–style 参数代码,因此您不必再以后的提示词中重复该代码,通过使用新的–style或取消选择粘滞样式来更改代码 Turbo mode,Fast mode,Relax Mode: 影响出图时间的快慢,Turbo 最快,Fast次之,Relax最慢 /ask:获取问题答案 过程中有不懂的问题,可以通过/ask指令的方式进行提问 /relax:切换到放松模式(慢模式) 此模式生成图的时候比较慢,相反是/fast快速模式 /fast:切换到快速模式 生成图的速度比较快,但是有时间限制 /blend:将多个图片混合 将多张(两张到五张)图片混合在一起,变成一个新的图片 注意:此命令不适用于添加提示词。如果想要新合成的图片想要获得最好效果,需要让上传的几张图片长宽比相同 混合图像的默认宽高比例为1:1,但也可以使用可选的dimensions字段,选择 square(方形)1:1 portrait(竖版)2:3 scape(横版)3:2 landscape(横版)3:2 /prefer remix:切换到混合模式

Java中如何实现minio文件上传

前面已经在docker中部署了minio服务,那么该如何在Java代码中使用? 这篇说下minio在Java中的配置跟使用。 Docker部署Minio(详细步骤) 文章目录 一、导入minio依赖二、添加配置application.ymlMinIOConfigMinIOConfigProperties 三、导入工具类ServiceServiceImpl 四、使用工具类上传文件并返回url注意事项(问题解决):1、桶的权限问题2、url路径问题 一、导入minio依赖 这里还要导入lombok是因为在MinIOConfig类中使用了@Data注解,正常来说导入minio依赖就够了 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency> 二、添加配置 application.yml 这些配置都是在创建minio的docker容器的时候就已经定好的,按照自己的配置去改一改就可以了。需要自定义的就一个桶名称bucket minio: # MinIO服务器地址 endpoint: http://192.168.200.128:9000 # MinIO服务器访问凭据 accessKey: minio secretKey: minio123 # MinIO桶名称 bucket: test # MinIO读取路径前缀 readPath: http://192.168.200.128:9000 MinIOConfig 通过读取配置创建minioClient对象 package com.ruoyi.minio.config; import com.ruoyi.minio.service.FileStorageService; import io.minio.MinioClient; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Data @Configuration @EnableConfigurationProperties({MinIOConfigProperties.class}) //当引入FileStorageService接口时 @ConditionalOnClass(FileStorageService.class) public class MinIOConfig { @Autowired private MinIOConfigProperties minIOConfigProperties; @Bean public MinioClient buildMinioClient() { return MinioClient .

即插即用的涨点模块之注意力机制(CBAMAttention)详解及代码,可应用于检测、分割、分类等各种算法领域

目录 前言 一、CBAM结构 二、CBAM计算流程 三、CBAM参数 四、代码详解 前言 CE模块通常只注意了通道特征,但在视觉任务中,空间任务通常更为重要,是不可忽略的,因此CBAM将通道注意力机制与空间注意力机制进行串联,充分关注特征信息。 什么是空间特征?在深度学习中,空间特征是指描述输入数据在空间维度上的特征信息。对于图像数据而言,空间特征可以涵盖多种信息,包括边缘、角点、纹理、颜色等。这些特征信息可以帮助模型理解图像中不同区域的内容和结构,从而实现诸如目标检测、图像分割、图像分类等任务。在深度学习模型中,通常通过卷积神经网络(CNN)等结构来提取和学习空间特征,这些特征对于模型的表现和性能具有重要的影响。 什么是空间注意力机制?空间注意力机制是一种注意力机制,用于在深度学习模型中对输入数据的不同空间位置进行加权,以便模型能够更加关注重要的空间位置,从而提高模型的性能和泛化能力。空间注意力机制通常应用在图像处理或自然语言处理等任务中,能够有效地捕捉输入数据在空间维度上的相关性。 在空间注意力机制中,模型会学习到针对输入数据中不同空间位置的权重,以确定哪些位置对于任务是最重要的。这些权重可以根据输入数据的内容和上下文来自适应地调整,从而实现对不同空间位置的加权组合。通过引入空间注意力机制,模型可以更好地捕捉数据的局部特征和全局结构,从而提高模型的性能和泛化能力。 通道注意力机制 空间注意力机制 关注对象 关注于不同特征通道的重要性 关注于输入数据中不同位置的重要性 操作对象 输入数据的通道维度 输入数据的空间维度 应用范围 处理具有多个特征通道的数据 处理具有空间结构的数据 一、CBAM结构 CBAM 是由Channel Attention Moduel和Spatial Attention Module构成,结构如图1所示。Channel Attention Moduel,结构如图2所示。对输入的特征图分别同时进行最大池化和平均池化,通过对输入形状为(B,C,H,W)的特征图进行最大池化或平均池化操作,将每个通道(C)在空间维度上的信息进行压缩,最终得到形状为(B,C,1,1)的输出,在这个过程中,对于每个通道而言,它的空间信息被最大池化或者平均池化操作压缩为一个单独的值,从而实现了对全局空间信息的压缩和提取。这一步旨在将特征图上的信息集中在通道上,从而更好的在通道上捕捉到输入的特征图的特征信息,利用这两个特征可以大大提高网络的表示能力。共享网络由两个卷积和一个Relu激活函数构成,先降维再升维,这一步旨在减少参数开销,其中MLP中的权重是共享的,所用的输入都用相同的W0和W1权重矩阵进行计算处理,将共享网络应用于每个特征描述子后,使用元素求和(+)来合并输出特征向量,再将输出的特征向量通过sigmoid函数生成权重向量,确保它们的总和为1。Spatial Attention Module,结构如图3所示。对输入的特征图沿通道轴应用平均池化和最大池化,通过平均池化和最大池化操作,可以将输入张量的通道维度(C)压缩为1,从而将全局通道信息整合为一个单一的通道特征图,形状为(B,1,H,W)。在这个过程中,对于每个样本(B),模型会对该样本在通道上的特征进行平均池化,从而实现对全局通道信息的压缩合并。这种操作有助于减少参数数量、减小计算复杂度,同时保留重要的通道特征信息。将获得的两个矩阵在通道上拼接起来(torch.cat),并通过一个卷积层,将通道数再次变成1,使获得的特征信息全部分布在一个通道上,再将通过卷积层的输出通过sigmoid函数生成权重向量。CBAM则是将在Channel Attention Module得到的通道注意力权重乘以输入的原始特征图。这一步用于调整每个通道的特征值,强调重要通道的信息,抑制不重要通道的信息。再将之前在Spatial Attention Module得到的空间注意力权重乘以通过通道注意力机制得到的特征图,最终即得到最终输出结果。(通道和空间注意力机制可以并行或者顺序放置,发现顺序排列比平行排列产生更好结果,我们实验结果表明,通道优先顺序略优于空间优先顺序) 图1 CBAM结构 图2 通道注意力机制 图3 空间注意力机制 精读:CBAM(Convolutional Block Attention Module)是一个集成在卷积神经网络中的注意力模块,目的是增强模型的特征表达能力,通过强调重要的特征并抑制不重要的特征。CBAM 通过两个主要部分工作:Channel Attention Module 和 Spatial Attention Module。下面详细解释这两部分的工作原理及其互动方式。 Channel Attention Module (CAM)的核心目的是强调那些对当前任务更重要的特征通道。它通过以下步骤实现: 1.特征压缩:对输入的特征图X,形状为(B,C,H,W),进行最大池化和平均池化。这两种池化操作都在空间维度H×W 上进行,输出的结果是两个形状为(B,C,1,1)的特征图,即每个通道压缩成一个单独的值,分别代表了该通道的最大值和平均值。通过以下步骤实现: 2.维度转换:通过一个小型神经网络(通常是两层MLP),首先将通道数降维以减少参数量,然后再升维恢复到原始通道数。这个小网络包括两个全连接层和一个ReLU激活函数。 3.特征融合与激活:将最大池化和平均池化得到的两个特征图通过共享的MLP处理后,结果相加并通过sigmoid函数,得到每个通道的权重系数。 Spatial Attention Module (SAM) 的目的是在空间上强调更为关键的区域。它的步骤包括: 1.通道压缩:将处理后的特征图X 进行最大池化和平均池化,但这次是沿着通道轴 C,从而压缩所有通道信息到一个单通道图像中。操作结果是两个形状为(B,1,H,W)的特征图。

初学者必看:AI绘画电脑配置指南

想要深入学习AI绘图,特别是Stable Diffusion和Midjourney这两个工具,配置一台合适的电脑确实至关重要。鉴于您当前对电脑配置有所困惑,为你解析下配置。 如果您有自己训练AI模型的需求,特别是针对Stable Diffusion这个工具,那么确实需要更高配置的电脑来确保训练过程的效率和效果。像我的配置是3080,训练一个Lora模型的时间是30-60分钟左右,想要出来的效果更好或者速度更快的话,则需要更加优质的电脑配置~ Stable Diffusion,由于它是用于生成高质量图像的AI模型,因此需要较高的计算能力和图形处理能力。推荐配置如下: CPU:Intel Core i7或更高性能的处理器,多核心有助于加速计算过程。 内存:至少16GB RAM,如果可能,建议选择32GB或更高,以应对大型模型和数据集。 显卡:NVIDIA或AMD的中高端独立显卡,至少具备4GB显存,以支持高效的图形处理。 存储:至少512GB的固态硬盘(SSD),以提供快速的数据读写速度。 Midjourney,主要是网页端和客户端,对电脑配置的要求相对较低,但为了保证流畅的游戏体验和可能的AI绘图需求,以下是一个推荐的配置: CPU:Intel Core i5或AMD Ryzen 5及以上的处理器。 内存:8GB RAM是基础要求,但考虑到可能的多任务处理和AI计算需求,建议至少升级到16GB。 显卡:NVIDIA GeForce GTX 1050或AMD Radeon RX 560及以上的显卡,以支持游戏的基本图形渲染。 存储:至少256GB的固态硬盘(SSD),如果预算允许,可以考虑更大的容量。 除了上述硬件配置外,还需要注意以下几点: 确保您的电脑操作系统是Windows 10或更高版本,因为许多AI绘图工具和游戏都需要较新的操作系统支持。 考虑升级您的网络连接,因为AI绘图工具和游戏可能需要从互联网上下载大量数据和模型。 如果可能的话,选择一个散热性能良好的机箱和散热器,以确保在高负荷运行时电脑的稳定性和可靠性。 写在最后 感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。 AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。 一、AIGC所有方向的学习路线 AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。 二、AIGC必备工具 工具都帮大家整理好了,安装就可直接上手! 三、最新AIGC学习笔记 当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。 四、AIGC视频教程合集 观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 五、实战案例 纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。 若有侵权,请联系删除

Android 13 WRITE_EXTERNAL_STORAGE , READ_EXTERNAL_STORAGE不弹出的问题

解决Android 13 WRITE_EXTERNAL_STORAGE , READ_EXTERNAL_STORAGE不弹出的问题 在Android 13(API 33)之前,加入了如下代码 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 如果 compileSdk 设置 32 或者以下,那么就没什么问题。当设置33 或者以上,系统就会自动设置无权限。那在 33 及以上的怎么设置呢? 看下面的代码。 在xml中如下设置 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> 动态获取权限的代码如下: if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (checkSelfPermission(REQUESTED_PERMISSIONS[0], PERMISSION_REQ_ID) && checkSelfPermission(REQUESTED_PERMISSIONS[1], PERMISSION_REQ_ID) && checkSelfPermission(REQUESTED_PERMISSIONS[3], PERMISSION_REQ_ID ) && checkSelfPermission(REQUESTED_PERMISSIONS[4], PERMISSION_REQ_ID ) && checkSelfPermission(REQUESTED_PERMISSIONS[5], PERMISSION_REQ_ID )) { // 获取到权限,开始你的代码 } } else { if (checkSelfPermission(REQUESTED_PERMISSIONS[0], PERMISSION_REQ_ID) && checkSelfPermission(REQUESTED_PERMISSIONS[1], PERMISSION_REQ_ID) && checkSelfPermission(REQUESTED_PERMISSIONS[2], PERMISSION_REQ_ID ) ) { // 获取到权限,开始你的代码 } } private boolean checkSelfPermission(String permission, int requestCode) { if (ContextCompat.

孟德尔随机化(三)—— 再也不用担心网络或其他各种报错啦 | 从数据库下载数据到本地的数据处理方法

前几天咱们分享了看完不会来揍我 | 孟德尔随机化万字长文详解(二)—— 代码实操 | 附代码注释 + 结果解读,很多小伙伴们反映在使用代码下载数据时会遇到各种网络或其他报错问题,令人头大的那种!不要慌!从数据库下载数据到本地的数据处理方法这就来啦! 如果小伙伴们有需求的话,可以加入我们的交流群:一定要知道 | 永久免费的环境友好型生信学习交流群又双叒叕来啦!| 伴随不定期群友好物分享!在这里,你可以稍有克制地畅所欲言! 超级建议大家在入群前或入群后可以看一下这个:干货满满 | 给生信小白的入门小建议 | 掏心掏肺版!绝对干货满满!让你不虚此看! 如果有需要个性化定制分析服务的小伙伴,可以看看这里:你要的个性化生信分析服务今天正式开启啦!定制你的专属解决方案!全程1v1答疑!!绝对包你满意! 直接开始! 数据要求 在进行**孟德尔随机化(Mendelian Randomization,MR)**分析时,关于曝露因子的 GWAS 数据,TwoSampleMR需要一个工具变量数据框,要求每行对应一个 SNP,至少需要 4 列最基本信息,包括: SNP - rsID,rsID 是 SNP 的唯一标识符。beta - 效应大小。如果是分类变量,我们就要使用log(OR),详见:看完不会来揍我 | 孟德尔随机化万字长文详解(二)—— 代码实操 | 附代码注释 + 结果解读。se - 效应大小的标准误差effect_allele - 效应等位基因 我们也可以提供以下对 MR 有用的其他信息: other_allele - 非效应等位基因eaf - 效应等位基因频率Phenotype - SNP具有效应的表型名称 我们还可以提供以下额外信息(非必须): chr - SNP 所在的染色体position - SNP 在染色体上的位置samplesize - 用于估计效应大小的样本大小ncase - 病例数量ncontrol - 对照组数量pval - SNP 与曝露因子关联的 P 值units - 以哪种单位呈现效应gene - SNP 的基因或其他注释 注意注意:不同来源的数据可能列名会有些许差异,大家要注意哈!

Python-can库的使用(1)——简介与安装

🙆‍♂️我是纯良思安,爱技术、爱分享,更爱生活🙆‍♂️ 💖喜欢的朋友可以关注一下,下次更新不迷路💖 文章目录 1、简介 1.1 主要功能 1.2 官方库文档描述 2、安装 2.1、GNU/Linux 依赖项 2.2、Windows 依赖项 Kvaser PCAN IXXAT NI-CAN neoVI Vector CANtact CanViewer 在开发模式下安装Python-can 前言 python-can是一个Python库,用于提供Controller Area Network (CAN)接口的支持,允许Python脚本与CAN网络进行交互。它是一个开源库,旨在使得与CAN设备和网络通信变得简单易行。CAN是一种广泛使用的、低成本、高可靠性的网络协议,常见于汽车电子、工业自动化以及其他需要电子设备之间进行可靠通信的领域。 1、简介 1.1 主要功能 发送和接收CAN消息:最基本的功能是能够在CAN网络上发送和接收数据包。python-can提供了简单的API来执行这些操作,无论是简单的消息传递还是更复杂的基于事件的消息处理。 多种硬件支持:python-can支持多种CAN接口硬件,包括但不限于SocketCAN(Linux上的原生CAN驱动)、PCAN、Vector CAN设备等。这意味着你可以使用相同的库代码与不同的硬件通信。 记录和回放CAN消息:python-can可以记录CAN总线上的通信,并将其保存到日志文件中(例如BLF、ASC、CSV格式)。这对于调试、分析通信问题或者测试非常有用。同样,它也支持从这些文件中回放消息到CAN网络。 高级消息过滤:python-can允许对传入的消息进行过滤,这样应用程序只需要处理感兴趣的消息。这对于减少不必要的处理和提高效率非常有帮助。 网络抽象和模拟:除了真实的硬件通信外,python-can还提供了网络抽象层,允许创建虚拟的CAN网络,以便于开发和测试,而不需要实际的硬件设备。 跨平台:尽管某些特定的硬件接口或功能可能依赖于操作系统,但python-can本身旨在跨平台运行,支持Linux、Windows、macOS等。 丰富的文档和社区支持:作为一个活跃的开源项目,python-can拥有详细的文档和一个活跃的社区,这对于解决问题和学习如何有效使用库非常有帮助。 1.2 官方库文档描述 官方python-can库文档链接如下: python-can 4.3.1 documentation 根据文档描述: python can库为python提供控制器局域网支持,为不同的硬件设备提供通用抽象,以及一套用于在can总线上发送和接收消息的实用程序。 python可以在任何python运行的地方运行;从具有商用CAN的高功率计算机到USB设备,再到运行linux的低功率设备,如BeagleBone或RaspberryPi。 被动记录 CAN 总线上发生的情况。 例如,使用 OBD-II 端口监控商用车辆。测试通过 CAN 交互的硬件。 在现代汽车、摩托车、船只甚至轮椅中发现的模块已经使用这个库从 Python 中测试了组件。在回路中对新的硬件模块或软件算法进行原型设计。 轻松与现有总线交互。创建虚拟模块以原型 CAN 总线通信。 下面是一个简单的示例,用于使用python-can发送单帧报文到总线: #!/usr/bin/env python """ This example shows how sending a single message works.

python请求模块requests如何添加代理ip

目录 前言 什么是代理IP 为什么使用代理IP 如何获取代理IP 使用requests模块添加代理IP 总结 前言 Python是一种强大的编程语言,广泛应用于数据获取、数据分析、网络爬虫等领域。requests模块是Python中一个非常常用的网络请求库,提供了简洁易用的API,能够轻松发送HTTP请求并处理响应。 在网络爬虫中,我们经常需要请求目标网站并获取数据。然而,有些网站对爬虫进行限制,例如设置了访问频率限制、验证码验证等。为了绕过这些限制,我们可以使用代理IP。 什么是代理IP 代理服务器是位于用户与目标服务器之间的一台服务器,充当用户与目标服务器之间的中间人。当用户发送请求时,请求会先发送给代理服务器,代理服务器再将请求发送给目标服务器。同样,当目标服务器返回响应时,响应会先发送给代理服务器,代理服务器再将响应传递给用户。 代理IP就是代理服务器的IP地址。使用代理IP时,我们不是直接访问目标服务器,而是先将请求发送给代理服务器,由代理服务器去请求目标服务器。这样,我们可以隐藏真实的IP地址,提高匿名性,同时也可以绕过一些限制。 为什么使用代理IP 在网络爬虫中,使用代理IP有以下几个优势: 隐藏真实IP:在一些需要保护隐私的场景下,我们可以通过使用代理IP来隐藏真实的IP地址。例如,我们爬取一些需要登录的网站时,可以使用代理IP来隐藏自己的IP,避免被追踪。绕过访问限制:有些网站对爬虫进行限制,例如设置了访问频率限制、验证码验证等。我们可以通过使用代理IP来绕过这些限制,降低被封禁的风险。提高请求速度:当我们需要请求多个网站时,可以使用多个代理IP并发发送请求,从而提高请求速度。 如何获取代理IP 获取代理IP有以下几种方式: 免费代理IP网站:有一些网站提供免费的代理IP列表,可以通过爬虫从这些网站上获取代理IP。常见的免费代理IP网站有:蝶鸟IP、开心代理等。付费代理IP服务:有一些公司提供付费的代理IP服务,通过购买这些代理IP,我们可以获取高质量的代理IP。常见的付费代理IP服务有:站大爷代理IP等。自建代理IP池:如果有一定的技术基础,我们也可以自己搭建代理IP池,通过爬虫定期从免费代理IP网站上获取代理IP,并进行验证和管理。 无论是使用免费代理IP还是付费代理IP,我们都需要注意一些问题: 代理IP的可用性:代理IP有时效性,可能在请求时失效。我们需要定期验证代理IP的可用性,并及时剔除无效的代理IP。代理IP的匿名性:代理IP分为透明代理、匿名代理和高匿代理等级。一般来说,我们希望使用高匿代理,以保证自己的匿名性。 使用requests模块添加代理IP requests模块提供了简洁易用的API,可以方便地添加代理IP。下面是一个使用requests模块添加代理IP的示例代码: import requests # 定义代理IP proxies = { 'http': 'http://127.0.0.1:8080', # HTTP代理IP 'https': 'https://127.0.0.1:8080' # HTTPS代理IP } # 发送请求 response = requests.get('https://www.example.com', proxies=proxies) # 处理响应 print(response.text) 上述代码中,首先定义了一个proxies字典,其中包含了代理IP。proxies字典的键分别为'http'和'https',分别表示HTTP请求和HTTPS请求使用的代理IP。 然后,使用requests.get()方法发送请求,并通过参数proxies指定代理IP。 最后,处理响应,这里只是简单地将响应的内容打印出来。实际使用时,我们可以对响应进行解析、提取数据等操作。 需要注意的是,代理IP的格式为'http://ip:port'或'https://ip:port',其中ip为代理服务器的IP地址,port为代理服务器的端口号。 另外,如果代理服务器需要用户名和密码进行身份验证,可以在代理IP中添加用户名和密码,例如'http://username:password@ip:port'。 总结 本文介绍了如何使用requests模块添加代理IP。通过使用代理IP,我们可以隐藏真实的IP地址、绕过访问限制、提高请求速度等。在使用代理IP时,我们可以从免费代理IP网站获取代理IP,也可以购买付费代理IP服务,甚至可以自己搭建代理IP池。使用requests模块添加代理IP非常简单,只需定义一个proxies字典,并通过参数proxies指定代理IP即可。 使用代理IP时,我们需要注意代理IP的可用性和匿名性,以及代理IP的规范格式。另外,代理IP只是一种绕过限制的手段,我们也应该遵守网站的规则和法律法规,不进行恶意爬取和非法操作。 希望本文对您理解和使用requests模块添加代理IP有所帮助,祝您使用愉快!

【Leetcode】string类刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接:917.仅仅反转字母 题目描述: 首先,这道题仅仅需要翻转字母,我们先写一个函数来判断是否为字母 bool Isletter(char ch) { if (ch >= 'a' && ch <= 'z' || ch>='A' && ch <= 'Z') return true; else return false; } 接着,创建两个索引,begin和end,一个从前往后找,找到一个字母停止,另一个从后面找,找到字母停止,然后进行交换,保证begin<end,比较简单,代码如下: class Solution { public: bool Isletter(char ch) { if (ch >= 'a' && ch <= 'z' || ch>='A' && ch <= 'Z') return true; else return false; } string reverseOnlyLetters(string s) { size_t begin1 = 0; size_t end1 = s.

Meta的 Llama-3 在线使用与下载

前言 2024年4月19日,全球社交巨头Meta在他们的官网,正式发布了开源大模型 Llama-3 !! 该版本包括预训练和指令调整的 Llama 3 语言模型的模型权重和起始代码 - 包括 8B 到 70B 参数! 简介 Llama 3 在 24K GPU 集群上训练,使用了 15T 的数据,提供了 8B 和 70B 的预训练和指令微调版本,可以支持广泛的应用。目前得到的信息并不是很多,只知道Meta称Llama-3相比之前模型多使用了掩码和分组查询注意力这两项技术。(不明觉厉~) 在线使用 1.可以直接去官方网站 https://llama.meta.com/llama3/ 2.对于无法科学上网用户,我们可以借助NVIDIA提供在线使用,网址如下 https://www.nvidia.com/en-us/ai/#referrer=ai-subdomain 本地部署文件下载 项目地址 https://github.com/meta-llama/llama3 权重文件 访问以下网站 https://llama.meta.com/llama-downloads/ 填写好信息即可下载

MySQL用命令创建数据库以及创建表

Mysql用命令创建数据库 1. 进入数据库 用命令登录MySQL数据库 #-u[要登录的用户名] #回车后输入对应的密码 mysql -uroot -p #使用show databases;命令可以查看目前的数据库 show databases; 2. 创建数据库 普通方式创建数据库 使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 指定字符集和排序规则 一般创建数据库都会指定数据库的字符集为utf8mb3和排序规则为utf8_general_ci 要在MySQL中创建一个数据库并指定字符集,可以使用以下命令: CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 可以看到数据库创建成功 在图形管理界面(navicat)可以看到显示的字符集和排序规则 Mysql用命令创建表 1. 选择数据库 使用use命令选择数据库,显示Database changed就表示数据库切换成功 2. 创建表 以下是一个具体的实例,创建一个用户表 users: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', username VARCHAR(50) NOT NULL COMMENT '用户名', email VARCHAR(100) NOT NULL COMMENT '邮箱', birthdate DATE COMMENT '生日', is_active BOOLEAN DEFAULT TRUE COMMENT '是否激活' ) COMMENT '用户表'; 创建数据库同时创建表 创建一个school数据库并创建下列表

新时代AI浪潮下,程序员和产品经理如何入局AIGC领域?

近日来,随着一系列自然语言处理模型ChatGPT、文生视频模型Sora的相机爆火,开发出它的OpenAI公司,在短短一两年内的估值甚就至已达1000亿美元,AI大模型工具也借此席卷全球,人人都见证了AI大模型的神奇。在国内,各大企业都看到了商机,争相招揽相应人才,也开始研发起大模型产品,“百模大战”也因此而生。李强总理在访谈中也强调了推动"人工智能+"行动的重要性。"人工智能+"这一概念,不仅仅是技术的革新,更是一场深刻的社会变革。 当下,AIGC大模型技术不仅是程序员必备的技能,产品经理更需要掌握这一技能,来稳固自己的职场地位,提升竞争力。 为了满足这些庞大的市场需求,近屿智能凭借其扎实的理论基础和丰富的实践经验,精心策划并推出了其核心产品——AIGC大模型工程师与产品经理的学习路径图及相关培训项目。该学习路径图为学员提供了一条精确而高效的学习路线,旨在帮助他们在短短三个月内迅速提升至A5级别的技能水平,成长为能够独立操控和微调大型模型的专业工程师。 该学习路径图覆盖了从A1级别到A7级别的全方位技能提升,包括AIGC大模型的核心技术、算力需求分析等关键知识点。无论是AI领域的新手还是已具备一定基础的专家,都能依据这一路线图找到适合自己的发展道路。 部分学习路径图详解 A2阶段: 具备的能力:能够对大型模型进行细致调整(Selective Fine-Tuning),使其在特定领域的任务表现达到商业应用标准。 通俗解释:该阶段可以利用封闭源代码的大型模型API,通过精心设计的提示词(Prompt Engineering)创建一个能够广泛对话的聊天机器人。 学习内容: A2.0 Python之提示工程基础 A2.1大模型提示工程 A2.2 大模型编程 A2.3 大模型的API及Plugins调用 A2.4 远程实践项目+爬梯考试 A2.5大模型的发展历程(选修) A2.6 GPT4-Turbo & Gemini最新解读(选修) 适合对象:掌握如何有效地利用API,以及如何设计用户友好的交互体验;希望提高工作效率,通过API构建简单工具。 学成可胜任的岗位:Prompt 工程师 课程安排:AI直播课+AI录播课+AI在线答疑课+更新AI直播课+远程项目实战 A3阶段: 具备的能力:针对大模型在已有提示词上的性能表现不足的问题,构建面向任务的指令训练语料,对大模型进行有监督的指令微调,提升大模型在应用上的性能。 通俗解释:该阶段能够对大模型进行精调(SFT),让大模型在某一个领域的任务表现可以商用 课程内容: A3.0 Python之大模型微调基础 A3.1 大模型基本原理 A3.2 大模型理论基础A A3.3 大模型理论基础B A3.4 大模型开发工具 A3.5 大模型微调技术 A3.6 大模型微调实战 A3.7 大模型思维链 A3.8 远程实践项目+爬梯考试 A3.9 Stable Diffusion(选修) 适合对象:理解特定领域的需求,基于商业需求,能够调整和优化模型以适应特定的应用场景。 学成可胜任的岗位:AI开发(应用)工程师 上课形式:AI录播课+AI在线答疑课+更新AI直播课+远程项目实战+每月前沿技术更新讲座+工作机会信息速递+OJAC标准会员权益 实践项目:聊天机器人,利用闭源大模型API,如ChatGPT、文心一言等,来实现自然语言理解和生成的功能。基于用户输入的Prompt,机器人能够生成合适的回应。 A4阶段: 具备的能力:能够根据应用需求,借助langchian等大模型应用框架,通过集成领域或场景专业知识、调用智能体等,扩展大模型能力,构建专业的智能问答系统、知识检索系统或多智能体集成系统。 通俗解释:该阶段能让大模型根据我们自己专业/行业的私有知识库,有质量的回答专业问题 课程内容: A4.0 Python之大模型应用开发基础 A4.1 大模型RAG A4.2 LangChain & Semantic Kernel原理

ThinkPad T430 黑苹果Hackintosh 使用OpenCore成功安装macOS 14.3 Sonoma

先放几张图,如果有感兴趣的,点个赞再走呗。 有人想看,我才有动力去慢慢补文字,讲述一下详细过程,写个教程供大家参考。 过去一直以为,老电脑只能黑苹果低版本的macOS。今天成功安装了最新的Sonoma,运行流畅,连超高清的屏幕保护都非常丝滑,感觉不出卡顿。而且,蓝牙、WiFi、隔空投送等,全都正常好用,目前,还没发现有哪儿异常。 这样,旧瓶装上新酒,又安装个Windows11 23H2专业工作站版,双系统,可以当生产力工具了。 教程 写在前面 Work You Body,Work You Mind! 活动活动大脑,预防老年痴呆。 白苹果玩够了,就想玩下黑苹果。 有这个想法,还是两年前,疫情期间在家闲得难受。但看了一些黑苹果教程,一头雾水,完全超过了自己的知识储备。前后有好几个月,没事就研究一下,可还是连门口在哪儿都没摸到,放弃了。 前段时间,家里那台老iMAC,用OCLP安装不被官方支持的Sonoma,已经很熟悉了。又开始折腾女儿上大学时用的那台ThinkPad T430,尝试了Ubuntu、Deepin OS、FydeOS,又在海鲜市场了淘了台经典的ThinkPad X201。到最后,实在没啥可玩的了,又想起了黑苹果,再试试,不信就搞不明白。 应该说,这次是下了很大决心的,没事就在网上看教程,一点一滴地吸收。偶然在CSDN上看到一篇文章,在T530上安装了Ventura(链接在后面)。 感谢这篇文章,给我了很大帮助,也给了我信心。我曾经以为,老电脑黑苹果不可能安装最新的macOS,只能安装一些老版本;而安装一些老版本,常用的软件没法安装,又几乎没什么实用性。现在看到,既然T530能够安装Ventura,那么,T430就一定可以安装Sonoma,一定会成功! 虽然遇到很多坎,最终,还是成功了,很开心! 没想到的是,这10年前的老电脑运行Sonoma竟然非常流畅,连Sonoma高清晰的屏幕保护都很丝滑,几乎感觉不出卡顿。最重要的是:蓝牙、WiFi、隔空投送、光驱、键盘灯,全都好用。目前,还没发现有什么不好用。 这样,旧瓶装新酒,安装了双系统,Windows11 23H2 26016专业工作站版 & macOS 14.3 Sonoma,可以做主力电脑了。 黑苹果,涉及的知识点比较多,有一点没搞明白就走不下去。建议年轻人不要折腾这个,有时间去多琢磨怎么多挣点钱。我是闲得无聊,把这个当做大脑体操的。 前期准备 1、OpenCore:黑苹果很很多种,这是当前最主流的,以下为官方的英文和中文安装指南。我是没看懂多少,只是了解一下基本概念。这个说的是如果来配置EFI文件,多数情况下,只需要找到匹配自己电脑的EFI文件,这个也就省了。没必要在这里花费太多时间,回过头来,再补习这些也不迟。 OpenCore Install Guide (dortania.github.io) OpenCore安装指南 (sumingyd.github.io) 2、知识储备:先看看这个Thinkpad T530黑苹果安装与心得,总体的思路和过程都在这里了。再到黑苹果社区,找点基础文章学习学习。 Thinkpad T530黑苹果安装与心得_csr-active-config-CSDN博客 黑苹果星球-分享Mac的精彩世界 (heipg.cn) 黑苹果社区 _ 黑果魏叔专注于黑苹果系统教程驱动及macOS软件 (imacosx.cn) 3、EFI文件:最关键的,就是找到适合自己电脑的EFI文件。没必须自己从头到尾自己去配置EFI文件,只要找到一个好的适合自己电脑的EFI文件,最难的部分就一下子跳过去了。我在GitHub上找到的这个,可以支持T430安装macOS 10.13 to 14,最新版本为T430 Opencore 0.9.5-v3.0.0。这个页面内容非常多,有很详细的电脑配置方法及安装指导,务必好好看看。 GitHub - jozews321/T430-Hackintosh-Opencore: Preconfigured OpenCore EFI folder to boot and use macOS 10.13 to 14 on the Thinkpad T430https://github.

MySQL 8.0 vs MySQL 5.7: 详细比较

MySQL 8.0 vs MySQL 5.7: 详细比较 MySQL是世界上最流行的开源关系数据库之一,随着技术的进步,每个新版本都带来了许多重要的更新和改进。在本文中,我们将深入探讨MySQL 8.0和5.7两个版本之间的主要差异,涵盖从性能改进、新特性到安全性增强等多个方面。 1. 数据字典 MySQL 8.0 引入了一个内置的数据字典,这是一个重大变革。在早期版本(如 MySQL 5.7)中,MySQL存储元数据信息在多个文件和非事务性表中。而在MySQL 8.0中,元数据存储在一个事务性的数据字典中,这改善了数据的一致性和完整性。数据字典的引入简化了系统表的结构,提高了元数据操作的效率。 2. SQL角色管理 MySQL 8.0引入了SQL标准的角色管理功能,提供了一种新的方法来管理数据库权限。在MySQL 5.7及之前版本中,权限管理是基于单个用户的。通过在MySQL 8.0中使用角色,数据库管理员可以更轻松地对用户分组并分配权限,这有助于简化和集中权限管理。 3. 窗口函数 MySQL 8.0添加了对窗口函数的支持,这是SQL标准的一部分,用于执行数据分析和统计计算,如行号、排名和移动平均等。这使得MySQL 8.0在处理复杂的数据分析时更加强大和灵活。MySQL 5.7及以前的版本不支持窗口函数。 4. 常用表表达式 (CTEs) MySQL 8.0引入了对公共表表达式(CTEs)的支持,包括递归CTEs。这使得编写更复杂的查询变得更简单,尤其是在处理层次或递归数据时。MySQL 5.7不支持CTEs,使用子查询来实现相似的功能可能会更复杂且执行效率较低。 5. Descending Indexes 在MySQL 8.0中,支持了降序索引,允许用户在创建索引时指定升序或降序。这提供了更多的灵活性,在某些查询中可能会提高性能。MySQL 5.7只支持升序索引。 6. 字符集和排序规则 MySQL 8.0将utf8mb4字符集作为默认字符集,支持全新的排序规则utf8mb4_0900_ai_ci,提供更好的性能和更准确的语言排序结果。MySQL 5.7默认使用的是latin1字符集,虽然也支持utf8mb4,但其默认排序规则为utf8mb4_general_ci,在性能和准确性方面不如MySQL 8.0。 7. JSON扩展 虽然MySQL 5.7引入了对JSON数据类型的支持,但MySQL 8.0在JSON处理上进行了大量优化和功能扩展,包括更多的JSON函数、更高效的存储机制和改进的JSON文档验证功能。 8. 性能提升 MySQL 8.0通过对查询执行器和优化器的改进,以及对InnoDB存储引擎的多项改进,提供了比MySQL 5.7更好的性能。例如,MySQL 8.0改进了对DML语句的并行处理能力,并引入了资源组功能,允许数据库管理员更精细地控制CPU和IO资源的使用。 9. 安全性增强 MySQL 8.0增强了安全性,包括密码强度检查、加密的系统表空间以及更安全的默认权限配置。同时,新版本强制使用SSL连接,提高了数据传输的安全性。 结论 MySQL 8.0相对于5.7提供了许多重要的新功能和性能改进。从数据字典、窗口函数、CTEs到性能和安全性的提升,这些更新都极大地扩展了MySQL的应用范围和数据库管理的便利性。无论是应对更复杂的数据需求还是提供更高效的数据操作,升级到MySQL 8.0都是值得考虑的。