Spring Data与多数据源配置

Spring Data与多数据源配置 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何在Spring Data中配置和使用多个数据源。 在现代应用程序中,处理多个数据源变得越来越常见。可能因为不同的数据存储需求,例如读写分离、跨系统数据访问,或者集成多个数据库系统。本文将详细讲解如何在Spring Boot中使用Spring Data配置多个数据源,并提供具体的Java代码示例。 一、项目依赖 首先,我们需要在pom.xml中添加Spring Boot、Spring Data JPA以及数据库驱动的依赖。 <dependencies> <!-- Spring Boot Starter Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- H2 Database --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <!-- MySQL Database --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> 二、配置多数据源 我们将配置两个数据源:一个用于H2数据库,另一个用于MySQL数据库。 1. 配置文件 在application.yml中配置数据源信息。 spring: datasource: h2: url: jdbc:h2:mem:testdb driver-class-name: org.h2.Driver username: sa password: password mysql: url: jdbc:mysql://localhost:3306/testdb driver-class-name: com.mysql.cj.jdbc.Driver username: root password: password jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: dialect: org.

中电金信:银行业私有云何去何从

2009年,云计算开始从概念走向实践。在这一年,Gartner在预测2010十大发展趋势中,将云计算列在榜首。在这之后,谷歌、亚马逊、IBM等科技巨头纷纷加码对云计算的研发投入。2010年正式迎来云计算时代,这一年也被定为“云元年”。 2013年4月,2013中国国际云计算技术和应用展览会(Cloud China 2013)在北京举办。此次展会的主题是"云成就未来",会上不仅展示了云计算技术的最新进展,更正式拉开了国内云计算实践的帷幕。 01|银行业私有云演进 1.1 从虚拟化到私有云的演进 随着银行业数据大集中的推进,银行业IT正式进入了IOE时代,随之开始对虚拟化进行了广泛应用。虚拟化最早的应用是计算虚拟化,但随着其应用的不断拓展,银行业逐渐实现了从虚拟化到私有云的演进。这一演进过程主要带来了两方面的提升,一是网络虚拟化,提升了网络的管理效率、使用效率及安全性;二是简化了基础资源管控,从而提升了基础资源的管控效率和便利性。 虚拟化是实现私有云的重要技术,正是这一技术的引入,使得私有云有效提升了虚拟化后资源的调度能力、高可用能力,同时简化了虚拟化管理。可以说,虚拟化技术是私有云的基础,但同样的,私有云也离不开虚拟化的底层支撑。 1.2 银行业私有云的快速发展 2015年,银行业在国家“十三五”发展规划基础上,推出了《中国银行业信息科技“十三五”发展规划监管指导意见》,并在意见中明确了银行业私有云规划、建设、应用迁移的具体发展战略。在指导意见的指引下,银行业私有云建设得到了快速推进和发展。 1.3 私有云在发展中演进 私有云的演进,先后经历了资源交付、服务交付、应用交付等阶段。伴随云原生的发展,私有云已成为银行业不可或缺的基础平台。 ■ 狭义云计算 私有云在2010-2013年进入银行业,这个阶段为狭义云计算阶段,主要以IaaS为主。在这个阶段云计算主要职能是资源交付,为应用提供基础支持,与应用关系并不紧密。 ■ 广义云计算 随着分布式、微服务等应用架构的革新,需要支持应用的中间件、数据库日益增多,环境安装部署配置日益复杂,为更好、快速支撑应用迭代和发布,将中间件和数据库形成平台云服务,云计算进入了IaaS+PaaS阶段。这个阶段为广义云计算阶段,基础设施与应用关系变得紧密,云计算主要职能为服务交付。 在广义云计算发展的同时,以持续集成、DevOps、容器等为核心的云原生技术被大力推广,有效促进了应用上云。银行业私有云也由此得到了快速发展。 ■ 容器云的应用 为简化应用及应用环境部署,更进一步提高资源弹性,容器技术得到了广泛的推广和应用。容器技术诞生之初,是与虚拟化技术并行发展的两条技术路线,但由于虚拟化技术更广泛地应用于银行业,所以在容器技术推向市场时,经常会面临一种质疑——能否在虚拟机中顺利进行部署。 2013年,出现了众多以容器技术为主题的创业公司,容器云(即CaaS)这一概念随即被推向市场。由于这些创业公司对容器技术的积极推广,加之随后信创与云原技术生的双重助力,容器技术迅速获得了大多数银行的认可与应用。同时,以容器技术为核心的云原生技术,与应用之间的关系也变得更加紧密。随着云原生技术的推广和发展,银行业私有云逐步演进到应用交付阶段。 问题探讨 容器云究竟是属于私有云的一部分,还是属于私有云的其中一种类型?以及企业只建立容器云能否满足基础平台的发展需求?这些是非常值得评估和探讨的问题。 ● 观点一:从虚拟化与容器技术的诞生和应用视角来看,虚拟化与容器都是基础资源供给方式之一。虚拟化更偏重于基础资源供给,容器除了基础资源供给之外,与应用关系更加紧密。虚拟化与容器都是私有云所使用的技术,两者也可以结合起来共同为应用服务。 ● 观点二:无论是基于虚拟化技术的私有云,还是基于容器技术的私有云,二者都属于私有云。 ● 观点三:当企业所有应用都进行了云原生改造后,只建设基于容器技术的容器(私有)云,完全可以满足企业基础平台需求。只是每个企业在较长时间内,都会同时存在多种形态应用,一定程度上离不开虚拟化技术,所以只建设基于容器技术的私有云是不行的。 1.4 信创助力私有云快速发展 信创建设是当前阶段银行IT建设的重点工作。然而,信创单品在性能、稳定性方面所面临的瓶颈与挑战也是业界所熟知的。想要解决此类问题必须依靠资源集群化、资源横向扩展、双活、多地多活等架构革新策略。无论是应用架构还是基础架构,都需要满足高并发、高可用、灵活扩展的特性,这些特性正是云原生天然具备的,而云原生实现又需要私有云的支持,所以信创的推进让私有云得到快速发展。 截至2022年,CNCF云原⽣计算基金会已经有175个开源项⽬,其中有40+来⾃中国。自2018年上海⾸次举办KubeCon+ CloudNativeCon大会后,每年都会有数⼗家中国企业成为CNCF云原⽣计算基⾦会的会员。从信通院2023年云原生大会报告、Gartner云原生相关技术成熟度曲线对比来看,云原生技术在国内发展速度远远大于国外,其中非常重要的原因就是国内信创建设的推进。所以,私有云建设不仅要满足信创需求,而且还要满足云原生需求。 02|银行业私有云建设目标 2.1 满足全行业务发展、支撑全行业务上云 基础资源云化是大势所趋,所建设云平台需要从全行业务视角规划,明确技术路线和技术栈,明确全行业务上云路线。 2.2 规避供应链风险、逐步实现自主可控 通过多云建设、云平台分层解耦,减少对单一云厂商依赖,引入多厂商、构建自研队伍,增强议价能力,逐步实现自主可控。 2.3 增强与应用关系,从资源供给型转向应用供应型 基于应用视角构建开发运维一体化能力,满足应用快速迭代和发布需求,实现基础资源和环境快速供给、实现配置自动化。 2.4 构建全链路可观测,提升云原生架构下应急能力 纵向资源打穿、横向交易链路打穿,基于业务视角构建全链路可观测能力,实现云原生私有云下问题快速发现和定位。 03|银行业私有云建设思路 3.1 基础架构统一规划 在IOE时代,基础架构经过多年、多行业、全球性验证,各银行可以完全复用或照搬已经成熟的基础架构。而目前面向信创、云原生等技术下的基础架构,各银行进展不一致、应用架构存在较大差异性,同业间复用或照搬基础架构可行性不高。但自行搭建一套基础架构,在稳定性、可用性方面又难以保障,更无法适用于全行级业务应用。所以对于银行而言,亟需要启动基础架构统一规划,通过规划指导全行级基础平台建设,支撑全行级业务发展和应用上云。 遵循横向分层、纵向分域思想,梳理应用架构,规划完整技术路线,建设满足全行业务的私有云。通过基础架构统一规划,满足全行业务发展、支撑全行业务上云。 从横向视角,分为设施层、IaaS层、CaaS层、PaaS层。其中设施层包括机房与IT硬件,IaaS层与CaaS层通常称为基础平台,PaaS层称为技术平台。从纵向视角,分为每个平台的管理与各平台一体化管理,应用在各平台如何部署,平台运维与安全等能力构建。 各层规划重点如下: ■ 设施层规划:需要考虑几地几中心、每个机房的承载容量、业务及应用定位,多机房间多活设计,基础平台与技术平台在每个机房的部署架构等内容。 ■ IaaS层规划:大中型银行具备持续性投入能力,可考虑建设两朵IaaS云,规避供应链风险。对于具备平台级自研能力的银行,可以基于云源代码进行延续性开发,满足私有云个性管控需求。对于中小型银行,特别是小型银行,可以考虑基于开放架构,融合不同厂商IaaS组件及管理平台,构建开放融合私有云。 ■ CaaS层规划:从基础资源供给视角,CaaS与IaaS属于同一层次,都是向上层供给基础资源。从云服务供给视角,CaaS不局限于构建在IaaS或物理机,向下可以屏蔽异构基础资源,向上满足应用快速部署、资源弹性、故障自愈等需求,与应用和运维结合更紧密。 ■ PaaS层规划:以支撑全行应用上云视角,规划PaaS平台整体能力,将能力细化为组件,规划组件的部署策略,全域部署或应用私有部署。对于大中型银行,还需要考虑PaaS平台从开发态、运行态、管理态等视角的解耦规划。 ■ 云管理规划:对于多朵云或多技术路线,需要规划多朵云统一管控能力构建,实现基础资源及环境的统一供给、自动化供给。对于有条件的银行,可以考虑云管理、应用上云、云运维等能力的统一管理规划。

websocket (@ServerEndpoint)基本使用指南

概述 websocket 介绍 WebSocket 是一种通信协议,通过单个 TCP 连接提供全双工通信通道。它允许客户端和服务器之间进行双向通信、实时交互,比如在线聊天、实时数据展示等。 与传统的 HTTP 协议不同,WebSocket 连接是持久的,可以在服务器和客户端之间发送实时数据。 WebSocket的 一些关键特点: 全双工通信: WebSocket 支持全双工通信,允许服务器和客户端同时发送和接收数据,而无需等待对方的响应。持久连接: 一旦建立 WebSocket 连接,它可以保持打开状态,允许实时数据的即时传输,而无需为每个通信步骤重新建立连接。低延迟: WebSocket 连接通常比传统的 HTTP 请求-响应模型更具有低延迟。这使得它非常适合实时应用程序,如在线游戏、聊天应用和股票市场数据更新。简单握手过程: WebSocket 连接的建立通过简单的握手过程进行,使用 HTTP 协议进行初始握手后,连接就升级为WebSocket 连接。协议标准: WebSocket 定义了一个标准的通信协议,包括数据帧格式、握手过程和关闭连接的规范。适用于各种应用: WebSocket 广泛用于各种实时应用程序,包括在线聊天、协作工具、实时通知、在线游戏和金融应用等。 基本工作原理: 握手过程: 客户端发起一个 HTTP 请求,表明希望升级为 WebSocket 连接。服务器接受请求后,进行握手过程,确认协议升级。数据帧传输: 一旦握手成功,双方可以通过发送数据帧进行通信。数据帧可以包含文本、二进制数据等。保持连接: WebSocket 连接是持久的,保持打开状态,直到一方发起关闭握手。关闭连接: 任何一方都可以发起关闭握手,双方会交换关闭帧,最终关闭连接。 Java 实现 websocket 服务端的方式 主要有两种: Tomcat 7 的 @ServerEndpoint 注解方式springboot 集成 websocket 方式 @ServerEndpoint 注解方式 @ServerEndpoint 注解 介绍 @ServerEndpoint 注解是 tomcat 7 中新增加的一个注解,用于标识一个类为 WebSocket 服务端点 WebSocket 服务端点监听客户端的 WebSocket 连接,并将连接管理起来,供客户端和服务端进行实时通信

前端安全——最新:lodash原型漏洞从发现到修复全过程

人生的精彩就在于你永远不知道惊喜和意外谁先来,又是一个平平无奇的早晨,我收到了一份意外的惊喜——前端某项目出现lodash依赖原型污染漏洞。咋一听,很新奇。再仔细一看,呕吼,更加好奇了~然后就是了解和修补漏洞之旅。 最后的最后,却发现其实这个漏洞修复起来很简单。但是我的整个过程却是充满曲折和离奇。特此记录一下。 1. 漏洞复现 现在很多系统的前端都是基于vue和react框架的,所以就肯定少不了引入各种依赖了额,而lodash 作为一款非常流行的npm库,每月的下载量超过8000万次。可以说是使用的十分广泛了。所以可以想象,当lodash这个漏洞出现时,标志着有多少项目会存在被攻击的风险。而检测的方法也很简单,在你的前端控制台,输入下面代码。 const payload = '{"constructor": {"prototype": {"lodash": true}}}' _.defaultsDeep({}, JSON.parse(payload)) if({}.lodash === true){ alert("Bad news :(\nYou're (still) vulnerable to Prototype Pollution") } else { alert("All Good! :)\nYou're NOT vulnerable (anymore) to Prototype Pollution") } 如果出现如下弹窗,就说明没有漏洞。lodash版本是最新的,已经把漏洞修复了。如果不是,那么恭喜你,中奖了~继续往下看吧。 2. 漏洞原理解析 通俗来讲:攻击者可以通过 Lodash 的函数覆盖或污染JavaScript 对象的原型(prototype) 例如:通过 **Lodash **库中的函数 defaultsDeep 可以修改 Object.prototype 的属性。JavaScript 在读取对象中的某个属性时,如果查找不到就会去其原型链上查找。试想一下,如果被修改的属性是 toString 方法,例如: const payload = '{"constructor": {"prototype": {"toString": true}}}' _.defaultsDeep({}, JSON.parse(payload)) payload 又为用户输入的数据,那么,在调用Object.prototype.toString 时就会非常不安全了。 lodash原型污染漏洞出现在Lodash:4.17.12 版本以下,我们可以来看下,依赖源码出现漏洞的地方:

24 年程序员各岗位薪资待遇汇总(最新)

大家好,我是程序员鱼皮。今天分享 24 年 6 月最新的程序员各岗位薪资待遇汇总。 数据是从哪儿来的呢?其实很简单,BOSS 直聘上有一个免费的薪酬查询工具,只要认证成为招聘者就能直接看,便于招聘者了解市场,设置合适的薪资。 由于程序员相关的岗位太多,本文只整理了热门岗位,包括:后端、前端、测试、运维、嵌入式、人工智能算法。 注意,薪酬查询数据来源于 BOSS 用户提供的职位薪酬数据,可用于分析岗位的现状和发展趋势,仅供参考。 Java 岗位 全国 Java 岗位年薪 注意,样本数据偏重参考固定薪资,对浮动薪资,例如绩效/提成/年终奖,借鉴较少。 统计了全行业近一年共 25008713 份样本。先不区分从业经验和城市,行业内 50% 的人薪资低于 124,532: 再看看从业 1 年以下(应届生)的薪资,行业内 50% 的人薪资低于 73,966: 一线城市 Java 岗位年薪 以鱼皮现居的城市上海为例, 统计了全行业近一年共 3727328 份样本。先不区分从业经验,行业内 50% 的人薪资低于 212,160: 再看看从业 1 年以下(上海应届生)的薪资,行业内 50% 的人薪资低于 145,134。粗略估计,平均月薪过万是没问题的。 二线城市 Java 岗位年薪 二线城市很多,鱼皮就以自己的家乡徐州为例, 统计了全行业近一年共 16360 份样本。 先不区分从业经验,行业内 50% 的人薪资低于 79,839,是上海的一半都不到: 再看看从业 1 年以下(徐州应届生)的薪资,行业内 50% 的人薪资低于 64,065,差不多月薪 5k+ 的样子。 因为我从大学起就在上海,从出生起就在徐州,对这两个地方的物价和居住成本还是比较了解的。老实说,在这么明显的薪资差距的情况下,在上海性价比还是更高的,只不过生活节奏更快、压力也会更大一些。 Java 岗位任职年龄分布 如图,大多数都在 25 - 29 岁区间,35 岁以上寥寥无几。

使用 Mybatis 时,调用 DAO接口时是怎么调用到 SQL 的?

Mybatis 是一个流行的 Java 持久层框架,它提供了一种半自动的 SQL 映射方式,允许开发者在 Java 代码中以一种更加直观和灵活的方式来操作数据库。当你使用 Mybatis 调用 DAO 接口时,背后的工作流程大致如下: 接口定义:首先,你需要定义一个 DAO 接口,这个接口中会包含一些方法,这些方法对应于你想要执行的数据库操作。 Mapper XML:对于 DAO 接口中的每一个方法,你需要在 Mybatis 的映射文件(通常是一个 XML 文件)中定义一个 <mapper> 标签,里面包含一个 <select>、<insert>、<update> 或 <delete> 标签,对应于你想要执行的 SQL 语句。 配置文件:在 Mybatis 的配置文件(通常是 mybatis-config.xml)中,你需要指定你的 Mapper XML 文件的位置,这样 Mybatis 才能找到并加载它们。 SqlSessionFactory:Mybatis 使用 SqlSessionFactory 来创建 SqlSession 对象。SqlSessionFactory 是通过配置文件和映射文件构建的,它包含了所有必要的信息来执行 SQL 语句。 SqlSession:SqlSession 是 Mybatis 中执行 SQL 语句的主要对象。它提供了执行 SQL 语句的方法,例如 selectOne、selectList、insert、update 和 delete 等。 调用 DAO 接口:当你调用 DAO 接口中的方法时,实际上是 Mybatis 的动态代理机制在起作用。Mybatis 会为 DAO 接口创建一个代理对象,当调用接口中的方法时,代理对象会拦截这些调用,然后根据方法名找到对应的 SQL 映射语句,并执行。

跨境电商内卷时代,亚马逊卖家如何低成本提升产品曝光与销量?

在跨境电商领域,随着市场的日益饱和和竞争的加剧,卖家们普遍面临着一个共同的挑战:流量稀缺,转化率低。为了在这个“内卷”严重的环境中脱颖而出,许多卖家不惜投入大量资金和资源,尝试各种站内和站外推广手段,但往往因为缺乏成熟的运营策略,导致投入与回报不成正比。 针对这一困境,我们需要重新审视并优化产品推广的策略。首先,要认识到广告虽然能够引入流量,但产品本身的质量才是吸引和留住消费者的关键。因此,在优化Listing时,卖家应确保关键词、产品主图、产品卖点等信息的高度一致性,以便提高关键词的转化率。同时,在广告运行过程中,灵活调整关键词的匹配形式,也是提升转化率的有效手段。 除此之外,提升产品权重也是增加曝光和转化的重要途径。平台往往更倾向于将那些受到消费者喜爱和认可的产品推向更高的排名和曝光位置。因此,卖家应通过优质的产品和服务,吸引消费者的关注和购买。具体来说,新品如果能迅速积累一定的购买量和加购量,将有助于提升产品在平台上的权重,从而获得更多的曝光和转化机会。 同时,消费者对于产品的评价和反馈也至关重要。良好的评价不仅可以提升产品的转化率,还能增强消费者对产品的信任度和购买意愿。因此,对于新品进行测评补单是非常必要的。通过测评补单,卖家可以快速提升产品权重,改善产品评价,进而提升整体销量。 然而,在寻找测评补单服务时,卖家需要格外谨慎。目前市场上的测评服务参差不齐,很多服务商存在账号质量差、恶意退款、产品难送测、评论不及时等问题。为了避免踩坑,卖家可以考虑自己搭建测评环境,培养一批买家号来进行自养号测评补单。这样做不仅可以降低成本,还能确保账号质量和评价的真实性。 自养号测评优点: 1灵活性高:卖家可以根据自己的时间安排和店铺需求,随时进行测评,不受外界限制。 2成本低廉:相比于其他推广方式,自养号的成本非常低。注册账号的费用很少,且账号可以长期使用,大大降低了长期推广成本。 3风险控制:使用自养号进行测评,可以有效避免恶意退款或使用非法手段(如h卡)下单的风险。 4可扩展性强:一台设备可以支持多个账号的测评操作,这种模式容易复制和扩展,为开设专业测评工作室提供了可能。 当然,自养号测评补单并非易事,需要卖家具备一定的技术门槛和养号经验。但只要我们掌握了正确的方法和策略,就能够在竞争激烈的市场中脱颖而出,实现销量和曝光的快速增长。 总之,在跨境电商领域,流量和转化是卖家们最为关注的两个指标。通过优化产品、提升权重、积累好评以及合理选择测评补单方式等手段,我们可以有效提高产品的曝光和转化效果,从而在激烈的市场竞争中占据一席之地。 

GaussDB关键技术原理:高性能(三)

GaussDB关键技术原理:高性能(二)从查询处理综述对GaussDB的高性能技术进行了解读,本篇将从查询重写RBO、物理优化CBO、分布式优化器、布式执行框架、轻量全局事务管理GTM-lite等五方面对高性能关键技术进行分享。 目录 3 高性能关键技术 3.1 查询重写RBO 3.2 物理优化CBO 3.3 分布式优化器 3.4 分布式执行框架 3.5 轻量全局事务管理GTM-lite 3 高性能关键技术 内容概要:本章节介绍GaussDB中实现的高性能关键技术,内容涉及优化器、执行器、分布式数据库、存储引擎等多个方面。 目的:通过对GaussDB数据库关键高性能技术的学习,能够让读者更加清晰的理解数据库内核哪些优化是性能关键点同时也为类似的应用系统实现提供方法论和最佳实践。 3.1 查询重写RBO 在数据库里RBO基于规则的优化一般指查询重写技术,按照一系列关系代数表达式的等价规则,对查询的关系代数表达式进行等价转换,从逻辑上减少执行的总量从而提高查询执行效率,例如,通过条件的推导得出非必要的表扫描、避免非必要的计算表示等。 查询重写RBO优化是非常重要的一种逻辑优化手段,通常应用和实施在查询优化过程的前端,将一些肯定能够优化的场景进行优化,RBO优化结束后进行物理优化,以下以常用的几种重写优化进行介绍: Example 1:谓词化简优化Predicate Simplification 使用谓词查询条件的可满足性Satisfiability (SAT)&可传递性Transitive Closure(TC)对查询进行化简,a.w.k SAT-TC,假设有t1,t2表,他们的定义分别为:T1(c1 int, c2 int);,T2(c1 int, c2 int check (c2 < 30));,则原查询: SELECT t1.c1,t1.c2, t2.c1, t2.c2 FROM t1 JOIN t2 ON t1.c2 = t2.c2 WHERE t1.c2 > 20 可优化为: SELECT dt1.c1,dt1.c2, dt2.c1, dt2.c2 FROM (select c1,c2 from t1 where t1.c2 between 20 and 30) as dt1, (select c1,c2 from t2 where t2.

Oracle连接mysql

oracle使用的11g,在一台windows服务器;mysql使用的是5.7版本,在另一台windows服务器,这两个服务器之间的网络是互通的。做BI时,要获取不同数据源的数据,这些数据源可能是Oracle,也可能是sqlserver、mysql。当使用Oracle作为数仓归集数据时,可以使用专门的ETL工具,从其他类型的数据源获取数据,也可以直接使用Oracle的网关技术+dblink,直连这些非oracle的关系型数据库。 注意:使用这种方式时,会因为个别数据类型不兼容、oracle对标识长度限制等而报错,可以在mysql中建立视图转换解决。 准备 环境 oracle服务器环境:windows server 2012R2 x64、oracle 11.2.0.4 mysql服务器环境: oracle网关 oracle通过dblink访问非oracle数据库,需要使用oracle的gateway组件。oracle数据库的gateway提供了一种能力,能够从oracle环境透明无障碍地访问在非oracle数据库中的数据。 gateway技术是由两部分组件组成:组件一,使用通用的技术连接非oracle数据库,对于所有非oracle数据库而言,都一样,称之为多样化服务(Heterogeneous Services);组件二,因oracle gateway连接的非oracle数据库的不同而不同。详见下图。使用gateway与odbc驱动,可以访问非oracle数据库,该驱动必须和gateway在同一台机器上。 下载 gateway网关 已被包含在oracle的安装包之中。 odbc驱动 mysql的版本5.7.40,下载对应的ODBC。 https://downloads.mysql.com/archives/c-odbc/ 配置 ODBC 如上所示,目前没有mysql odbc驱动,安装下载的odbc即可。 安装odbc时,可以使用默认设置,一直下一步,直至安装完成。 安装完后,沿着之前的路径,打开odbc配置界面 测试成功,保存。 gateway 检查确认是否已经安装gateway,cmd启动命令行,输入db4odbc或hsodbc,查看是否已经安装。如下图所示,说明已经安装。 按照路径E:\app\Administrator\product\11.2.0\dbhome_2\hs\admin,找到initdg4odbc.ora文件,将该文件复制出来,改名为initodbc_ ,本实验中是initdg4odbc_bpm.ora。 注意:每个使用dg4odbc的实例,都必须单独一个”init*.ora”文件,文件命名规则:init+<网关sid>+.ora HS_FDS_CONNECT_INFO = ODBC数据源管理中的DSN名称【本实验为bpmds】HS_FDS_TRACE_LEVEL = OFF 【追踪级别参数,出于性能影响一般不配置或者配置为"OFF",若遇到网关问题需要跟踪日志,则配置为"Debug",跟踪日志文件存放在"ORACLE_HOME\hs\trace"目录下】 在路径:E:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN,找到监听文件,并调整。 重启监听 提示:监听是动态注册,稍后就能看到orcl 创建dblink,测试。mysql用户密码必须双引号,host是oracle服务器ip,port是oracle端口。 测试效果

大模型综述:万字长文详解AI大模型的原理、应用与未来趋势(非常详细)零基础入门到精通,收藏这一篇就够了

1. 引言 在自然语言处理(NLP)和人工智能(AI)的浩瀚星空中,大语言模型(Large Language Models, LLMs)如同一颗璀璨的新星,正在改变我们与语言、与机器交互的方式。本章将带您踏上一段探索之旅,揭示大语言模型的发展历程、独特魅力及其在现实世界中的多彩应用。 1.1 语言模型的进化史 语言模型的发展犹如一部精彩的进化史诗。最初,我们有了统计语言模型(Statistical Language Models, SLMs)。想象一下,你正在玩一个猜词游戏。统计语言模型就像一个经验丰富的玩家,它根据之前出现的词来猜测下一个可能出现的词。例如,在"我喜欢吃苹果"这句话中,如果模型已经看到了"我喜欢吃",它会根据统计数据预测下一个词很可能是一种食物,比如"苹果"。这种方法简单直接,但往往难以捕捉长距离的语义关系。 随着时间的推移,神经语言模型(Neural Language Models, NLMs)应运而生。如果说统计模型是一个熟练的棋手,那么神经模型就像是一个天才棋手,不仅记住了大量的棋谱,还能理解每步棋背后的深层策略。神经语言模型通过学习词的分布式表示(也称为词嵌入),能够更好地理解词与词之间的语义关系。例如,它能够理解"国王"之于"王后",就像"男人"之于"女人",捕捉到词之间的微妙关系。 接下来,预训练语言模型(Pre-trained Language Models, PLMs)登上了舞台。这就像是让我们的天才棋手在正式比赛前,先在全世界的棋局中学习和磨练技艺。预训练模型首先在大规模的文本数据上进行训练,学习语言的一般性知识,然后再针对特定任务进行微调。这种方法大大提高了模型的泛化能力。例如,BERT(Bidirectional Encoder Representations from Transformers)模型在理解问题、完成各种NLP任务方面表现出色,仿佛一位博学多才的语言专家。 最后,我们来到了大语言模型(Large Language Models, LLMs)的时代。这些模型就像是具有超级大脑的AI实体,拥有数十亿甚至数千亿的参数。它们不仅规模庞大,更令人惊叹的是它们表现出的"涌现能力"——一些在训练时并未明确指定的能力自然而然地出现了。例如,GPT-4不仅能生成流畅的文本,还能理解和执行复杂的指令,甚至能够进行简单的编程。 1.2 大语言模型的独特魅力 大语言模型的独特魅力主要体现在以下五个方面: 强大的上下文理解和生成能力 惊人的少样本学习能力 多模态融合的能力 出色的推理和问题解决能力 持续学习和适应的潜力 大语言模型最引人注目的特点之一是其强大的上下文理解和生成能力。想象一下,你正在阅读一本错综复杂的小说,每个字、每个句子都与整个故事紧密相连。大语言模型就像一个超级读者,不仅能理解眼前的文字,还能将其与之前的内容联系起来,甚至预测接下来可能发生的情节。这种能力使得它们能够生成连贯、有逻辑的长文本,或者在对话中保持上下文的一致性。 大语言模型的魅力不仅在于其庞大的规模。它们强大的上下文学习能力。想象一下,你正在教一个孩子理解一个新概念。通常,你需要反复解释,给出多个例子。但大语言模型就像一个天才学生,只需要很少的例子,甚至只需一个简单的指令,就能快速理解并完成新的任务。这种能力被称为"少样本学习"或"零样本学习"。 另一个引人注目的特点是大语言模型的多模态融合能力。它们不再局限于纯文本,而是能够理解和生成包括图像、音频在内的多种类型的数据。例如,GPT-4不仅能理解文字,还能"看懂"图片,并基于图片内容进行对话或完成任务。这就像是培养出了一位全能型的AI助手,能够在各种场景下为我们提供帮助。 大语言模型还表现出了令人惊讶的推理能力。它们不仅能回答简单的问题,还能进行复杂的逻辑推理。例如,当被问到"如果所有的A都是B,所有的B都是C,那么所有的A是不是C?"这样的问题时,大语言模型能够给出正确的回答,并解释推理过程。这种能力让我们看到了通向通用人工智能的曙光。 同时,大语言模型还展现出了持续学习和适应的潜力。虽然它们的基本知识来自于预训练数据,但通过fine-tuning和few-shot learning,这些模型能够快速适应新的领域和任务。这种灵活性使得它们能够在快速变化的环境中保持先进行、相关性,并不断拓展其应用范围。 1.3 大语言模型的实际应用 大语言模型的应用范围之广,堪称AI领域的"瑞士军刀"。在日常生活中,你可能已经不知不觉地享受到了它们带来的便利。例如,当你使用智能手机上的输入法时,那个能准确预测你下一个要输入的词的功能,很可能就是由大语言模型驱动的。 在工作场景中,大语言模型正在成为得力助手。假设你是一名程序员,正在为一个复杂的问题苦恼。你可以向基于大语言模型的AI编程助手描述你的需求,它不仅能为你生成代码,还能解释代码的工作原理,甚至指出潜在的bug。这就像拥有了一个24/7待命的编程导师。 在教育领域,大语言模型正在革新学习方式。一个学生在学习物理时遇到了困难,他可以向AI助教提问,不仅能得到答案,还能获得详细的解释和相关的例子。AI助教甚至可以根据学生的反应调整解释的方式,提供个性化的学习体验。 在创意写作方面,大语言模型也大显身手。它们可以根据简单的提示生成诗歌、故事,甚至是剧本。虽然这些生成的内容可能还无法完全替代人类创作,但已经成为许多创作者的灵感来源和创作辅助工具。 在商业世界,大语言模型正在改变客户服务的面貌。许多公司已经开始使用基于大语言模型的聊天机器人。这些AI助手能够理解客户的各种问询,提供准确的信息,甚至处理复杂的投诉。它们不知疲倦,全天候工作,大大提高了客户服务的效率和质量。 下面是一个简单的Python代码示例,展示了如何使用Hugging Face的transformers库来实现一个基于大语言模型的简单对话系统: from transformers import AutoModelForCausalLM, AutoTokenizer import torch # 加载预训练模型和分词器 model_name = "gpt3" # 这里使用GPT-3作为示例 model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.

并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化

一、引言 1、数据库管理系统DBMS的事务处理技术实现的另一个主要功能部分是并发控制机制。并发控制机制完成的功能就是对并发执行的事务进行控制,保证事务的隔离性,从而进一步保持数据库的一致性。 2、事务的并发控制就是对并发执行的不同事务中的数据库的交错执行进行调度,解决并发事务的非串行调度带来的数据不一致问题,使非串行调度可串行化 二、事务的调度 1、事务的调度是指多个并发执行的事务中的并发操作按照它们的执行时间顺序形成的一个操作序列 在调度中,某个事务中的操作执行顺序与单个事务执行时的操作顺序应该是相同的但并发事务中的操作可以交错执行 2、在调度中,若每个事务中的操作都是连续执行的,不存在不同事务中的操作的交错执行,则称该调度为串行调度,否则称为非串行调度 (1)对于这里给出的两个事务T1和T2,我们仍用对缓冲区数据的读写来表达对数据库的读写操作,变量t、s分别是事务中的局部变量,不是数据库中的数据,数据X、Y为数据库中的数据在内存缓冲区中的值而不一定是他们在磁盘上的值,同时为了更清晰地表达对数据库的并发操作,后续我们省略掉事务定义语句 (2)则这两个事务的串行调度,可以是T1中的所有操作都在T2中的所有操作前执行,也可以是T1中的所有操作都在T2的所有操作后执行。 (3)如果两个调度中X和Y的初值一样,如X=100,Y=50,则两个串行调度的结果一样,均为X=150,Y=100。 (4)若与事务T1并发执行的事务是事务T3,则这两个事务的串行调度,当两个调度中X、Y的初值一致,假设X=100,Y=50,则结果分别为X=100,Y=100和X=150,Y=100,可见对于并发执行的事务,不同的串行调度的结果并不一样。但不管结果如何,多个并发事务的串行调度结果会与该多个事务的串行执行的一个结果相同。 若数据库初始时处于一致性状态,且所有的事务具有一致性,则事务的串行执行将保持数据库的一致性。所以多个并发事务的串行调度也会保持数据库的一致性 3、但并发事务中的并发操作更多地进行交错执行,构成非串行调度 这里给出了事务T1和T2的两个不同的非串行调度。当并发事务非串行调度中的操作读或写缓冲区中同一数据库对象时,就可能会产生数据不一致性问题,主要体现在更新丢失(Lost Update)、脏读(Dirty Read)和不可重复读(Non_Repeatable Read)等方面 三、数据不一致性问题 1、更新丢失(Lost Update) 更新丢失是指在并发执行的非串行调度中,来自不同事务的操作,先后读取同一数据对象并对其进行更新,一个事务对某数据对象的更新结果覆盖了另一个事务对该数据对象的更新结果,导致先写的数据更新结果丢失 比如在事务T1和T2的非串行调度中,事务T1读取了缓冲区中数据对象X之后将X值减少50,但将X值写入缓冲区之前,事务T2也读取了缓冲区中的数据对象X,将X增加了100,又在事务T1将X值写入缓冲区之后,也将X值写入缓冲区。假设X初值为100,这样缓冲区中的数据X的最终结果就是200,只增加了100而没有减少50,不是串行调度的结果150。事务T1对X的更新结果丢失 2、脏读(Dirty Read) 脏读是指在并发事务的非串行调度中,一个事务读取了另一个还没有提交的事务所写的中间结果数据(脏数据)。脏读也就是对脏数据的读取。 比如在事务T1和T2的非串行调度中,事务T1读取了缓冲区中数据对象X之后,将X值减少50并将X值写入缓冲区,假设X的初值为100,此时缓冲区中的数据X的结果就是50,随后事务T2读取了事务T1对X的更新结果并进行计算,即事务T2读取的X值为50,但事务T1在完成之前发生了故障,事务T1撤销回滚,将X的值恢复为事务T1开始时的初值,即100,这样事务T2读取的是夭折事务T1对X的中间更新结果值50,是脏数据,并在此基础上对X进行了更新,使数据库处于不一致状态, 3、不可重复读(Non_Repeatable Read) 不可重复度是指在并发事务的非串行调度中,同一事务对同一数据对象进行多次读取得到不同的结果。 比如在事务T1和T2的非串行调度中,事务T1读取数据对象X,假设此时X的值为100,随后事务T2执行了对数据库对象X的更新操作,X值增加100,当事务T1再次读取数据对象X时,X值为200,无法再现前一次读取的结果,事务T1产生了不可重复读现象。 还比如事务T1每次读取X后,又读取数据Y,并对X和Y进行求和,在两次操作之间,事务T2对数据X进行了更新,则事务T1两次的求和结果不同,用户会感觉得到了一个错误的求和结果,这也是一种不可重复读现象 4、产生上述不一致问题的主要原因是并发事务的非串行调度的执行,使并发的事务之间互相干扰,破坏了事务之间的隔离性 5、为解决这些问题,需要对并发执行的事务进行控制,使得一个事务的执行不受其他事务的干扰,从而避免数据的不一致性。由于多个并发事务的串行调度不会破坏数据库的一致性,如果通过控制,将并发事务的非串行调度的执行效果与这些并发事务的串行调度的执行效果相同,则仍可保持数据库的一致性 因此,并发控制要实现的就是并发事务的非串行调度的可串行化 四、非串行调度的可串行化 1、如果n个并发事务的一个非串行调度S的执行效果等价于这n个事务的某个串行调度的执行效果,那我们就称这n个事务的该非串行调度S是可串行化的调度 2、这里的等价是指对于任意的数据库初始状态,调度S和 的执行效果都相同 这里给出两个事务的非串行调度,其中左边的这个调度就是可串行化的,在这个调度中,从任何一个一致的数据库状态开始,其结果都与先执行T1再执行T2的串行调度的结果一样,而右边的这个调度确是一个非可串行化的调度,其结果并不总与T1、T2的任一串行调度的结果相同。虽然可能存在某一算数的巧合,使得其结果相同,但仍是非可串行化的调度,可自行设定初始状态进行验证 3、对于并发事务的非串行调度,当且仅当是可串行化的,才能保持事务的隔离性 4、因此,我们把“可串行化”作为对并发事务进行并发控制的目标 5、而大多数DBMS实现的是一个更强的要求,实现的是并发事务的非串行调度的冲突可串行化 6、冲突是指并发事务非串行调度中一对连续的操作(读操作或写操作),操作应来自不同的事务,如果它们的执行顺序交换后,操作所在的事务中至少有一个的后续操作结果会改变,则这对操作就是冲突的 7、因此,不同事务对不同数据对象的读写操作显然是不冲突的 8、不同事务对同一数据对象的读操作也是不冲突的 9、但不同事务对同一数据对象的读写操作是冲突的。下面我们用ri(X)和wi(X)分别表示某事务Ti从缓冲区读数据X和往缓冲区写数据X。 则不同事务对同一数据对象的写操作,即wi(X)和wj(X)是冲突的,因为事务Ti和Tj的写入值可能不同,交换操作的顺序,最终缓冲区中的X值是不同的,丢失的将是不同事务的更新结果 不同事务对同一数据对象的读写操作或或写读操作,即ri(X)和wj(X)是冲突的,交换读写操作的顺序会影响到读操作所读到的数据不同,如果将写操作从读操作后移到读操作前,读操作读入的值将是新写入的值,而不是交换前应读到的值,可能会引起读操作所在事务出现不可重复读或脏读现象 10、如果并发事务非串行调度中的相邻操作是非冲突的,则这两个操作是可以交换的,不会影响相关事务的执行效果 11、因此将一事务的非串行调度中相邻的非冲突操作通过一系列的交换后,得到的调度与交换前的调度是等价的,我们称这两个调度是冲突等价的 12、而如果一个非串行调度冲突等价于一个串行调度,也就是将该非串行调度中相邻的非冲突操作进行一系列变换后可转换为一个串行调度,则称该非串行调度是冲突可串行化的 比如,这里给出两个并发事务的一个非串行调度,只列出事务对缓冲区数据的读写操作,忽略了事务读取数据后在内存中的计算,因这些操作的先后不影响调度的执行结果,下面我们来判断一下这个调度是否是冲突可串行化的 经过这一系列的相邻的非冲突操作的交换,得到的新调度序列等价于事务1先执行事务T2再执行大的一个串行调度,因此这里给出的这个非串行调度是冲突可串行化的 13、冲突可串行化是可串行化的一个充分条件,即冲突可串行化调度是可串行化调度 比如对于这里给出的这三个事务,它们各自为B写入一个值,事务T1和T2在为B写入值之前还都为A写入值,其并发执行的一个非串行调度S1,最受使B具有事务T3写入的值,而A具有事务T2写入的值,该调度的执行结果与事务T1、T2和T3依次执行的串行调度S2的执行结果相同,因此非串行调度S1是可串行化的调度,但由于该调度没有可交换的非冲突操作,不能冲突等价于一个串行调度,所以非串行调度S1不是冲突可串行化调度 五、小结 1、DBMS的并发控制机制需采用一定的技术来保证并发事务非串行调度是可串行化的 2、目前常用的并发控制技术有 封锁(实现冲突可串行化)时间戳有效确认 3、虽然冲突可串行化不是可串行化的必要条件,但商用DBMS通常实现的是冲突可串行化 

「网站开发必备」8款免费 React Gallery, Lightbox, 和 Photo Viewer开发库

大家好,今天给大家分8款免费 React Gallery, Lightbox, 和 Photo Viewer开发库。 在不断发展的网络开发世界中,开源库提供了大量创新和效率的机会。本文将带您了解一些用于Gallery, Lightbox, 和 Photo Viewer的最好的开源 React 库,为您的下一个项目提供宝贵的资源。 这些库可以与基于 React 的框架(例如 Next.js)一起使用,或者与Astro 框架一起使用。 1. React lightbox component React lightbox component是一个开源免费的React 库组件,使开发人员能够向任何 React 应用程序添加响应式多功能 Lightbox 效果。 其当前功能包括缩放、旋转、流畅动画和可自定义的缩略图。 安装 npm install react-lightbox-component 简单使用 import Lightbox from 'react-lightbox-component'; const App = () => ( <div> <Lightbox images={ [ { src: 'some image url', title: 'image title', description: 'image description' } ] }/> </div> ); 2. React Spring Lightbox React-spring-lightbox 是一个灵活的图像库灯箱,具有原生感觉的触摸手势和流畅的动画。

Vue中的axios深度探索:从基础安装到高级功能应用的全面指南

文章目录 前言一、axios 请求1. axios的概念2. axios的安装3. axiso请求方式介绍4. axios请求本地数据5. axios跨域6. axios全局注册7. axios支持的请求类型1)get请求2)post请求3)put请求4)patch请求5)delete请求 二、axios 进阶1. 设置axios拦截器什么是拦截器拦截器的作用和使用 2. axios 封装 前言 在Vue项目中,高效的前后端通信是构建丰富用户体验的关键。axios作为前端与后端沟通的桥梁,其重要性不言而喻。本文将带您领略axios的魅力,从基本概念、安装方法,到高级应用技巧,助您快速掌握在Vue中利用axios进行HTTP请求的精髓。我们不仅会探讨axios的基础用法,如GET、POST请求,还将深入探索跨域配置、全局注册以及设置拦截器等高级功能,助您轻松实现优雅的前后端通信。 一、axios 请求 1. axios的概念 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端。简单的理解就是ajax的封。 它本身具有以下特征: 从浏览器中创建 XMLHttpRequest从 node.js 发出 http 请求支持 Promise API拦截请求和响应转换请求和响应数据取消请求自动转换JSON数据客户端支持防止 CSRF/XSRF 2. axios的安装 npm install axios --save 3. axiso请求方式介绍 使用格式: axios.提交方式("请求接口路径").then(箭头函数).catch(箭头函数) - 提交方式有get post delete put 等, - .then() 请求成功后执行then方法 - .catch()请求失败后执行catch方法 例如:get具体使用方法如下: //使用axios发送ajax请求,获取所有新闻信息 fnSerachNews(){ // result是服务端对我们发起请求的响应,请求成功执行then方法 this.$axios.get("http://localhost:8000/news/").then((result) => { //通过response获取具体数据,赋值给data中定义的newslist this.

【Elasticsearch】Elasticsearch索引创建与管理详解

文章目录 📑引言一、Elasticsearch 索引的基础概念二、创建索引2.1 使用默认设置创建索引2.2 自定义设置创建索引2.3 创建索引并设置映射 三、索引模板3.1 创建索引模板3.2 使用索引模板创建索引 四、管理索引4.1 查看索引4.2 更新索引设置4.3 删除索引 五、索引别名5.1 创建索引别名5.2 使用别名查询5.3 更新索引别名 六、分片和副本管理6.1 分片6.2 副本 七、索引性能优化7.1 分片数量的选择7.2 动态调整副本7.3 索引刷新间隔 八、索引模板的高级应用九、索引管理工具9.1 Kibana9.2 Curator 📑引言 Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎,具有分布式、近实时、RESTful API 等特点。索引是 Elasticsearch 的核心概念之一,索引的创建和管理是使用 Elasticsearch 的基础技能。本文将详细介绍 Elasticsearch 索引的创建与管理,包括索引的基础概念、创建索引、索引模板、映射和索引别名等内容。 一、Elasticsearch 索引的基础概念 在 Elasticsearch 中,索引类似于传统数据库中的数据库。一个索引包含了多个文档,而每个文档都包含了多个字段。以下是一些关键概念: 文档(Document):Elasticsearch 中的数据单位,类似于数据库中的一行数据。索引(Index):包含多个文档,类似于数据库中的数据库。类型(Type):在较早版本的 Elasticsearch 中,索引中的一种逻辑划分,现已弃用。分片(Shard):索引可以分为多个分片,以实现水平扩展和高可用性。副本(Replica):分片的备份,以提高数据的容错能力。 二、创建索引 2.1 使用默认设置创建索引 Elasticsearch 提供了简单的创建索引的方法,只需发送一个 HTTP 请求即可。 PUT /my_index 这个命令将在 Elasticsearch 中创建一个名为 my_index 的索引,使用默认的设置和映射。 2.2 自定义设置创建索引 可以在创建索引时自定义分片、副本和其他设置。 PUT /my_index { "

kafka分区重建

创建kafka的topic: ./bin/kafka-topics.sh --create --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --replication-factor 3 --partitions 3 --topic test01 列举kafka的topic: ./bin/kafka-topics.sh --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --list kafka 修改topic分区数据: ./bin/kafka-topics.sh --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 -alter --partitions 3 --topic test01 数据均衡: vi sjzn_spark_binlog_order_topic.json 生成主题分配方案: ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --topics-to-move-json-file sjzn_spark_binlog_order_topic.json --broker-list "0,1,2" --generate Current partition replica assignment 拷贝分配方案到新的json文件中 vi expand-cluster-reassignment.json 执行分配: ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --reassignment-json-file expand-cluster-reassignment.json --execute Current partition replica assignment 查看分区状态: ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --reassignment-json-file expand-cluster-reassignment.json --verify 单独查看topic分区状态: ./bin/kafka-topics.sh --describe --zookeeper 192.168.70.212:2181,192.168.70.213:2181,192.168.70.214:2181 --topic dwd_all_metric

神秘大招终结幻觉问题!讯飞星火 V4.0 首秀地表最强 AI 语音助手,74 个语种方言“自由对话”...

作者 | 王启隆 责编 | 唐小引 出品丨AI 科技大本营(ID:rgznai100) 北京时间 6 月 27 日,科大讯飞于北京国家会议中心正式发布讯飞星火大模型V4.0,以及在医疗、教育、商业等多个领域的人工智能应用。讯飞星火 V4.0 七大核心能力全面升级,不仅在 8 个国际主流测试集中排名第一,领先国内大模型,并在文本生成、语言理解、知识问答、逻辑推理、数学能力等方面实现对 GPT-4 Turbo 的整体超越。 讯飞星火 V4.0 在图文识别能力上也是进一步升级,在科研、金融、医疗、司法、办公等场景的应用效果已领先多模态能力更强的 GPT-4o。此外,星火长文本能力也全新升级,并针对长文档知识问答的幻觉问题,业界首发溯源功能(后文会重点介绍)。 所谓超越,不止体现在纸面的数据。这次发布会上的现场演示,直接将我的记忆拉回了 5 月份 OpenAI 的春季发布会:当时是“ChatGPT 之母” Mira Murati 和两位工程总监共同演示了 GPT-4o 的多模态、语音识别、语音打断、情绪感知等功能,可谓惊技四座。 然而 GPT-4o 上述的这些功能,讯飞星火 V4.0 不仅全都有,演示效果还更加震撼。 比方说,多语言识别功能。现场演示在讯飞输入法上进行了多种方言(安徽话、上海话、四川话、粤语等)+汉语/英语/法语混杂的输入。 对比之下,OpenAI 曾经在春季发布会让 Mira 讲意大利语,演示过 GPT-4o 进行意大利语和英语的无缝切换;此外还曾在欧洲科技盛会 VivaTech 上演示过法语和英语的切换 —— 讯飞的优势相当明显,不仅同样能做意大利语、英语和法语等外语,且他们在汉语语音识别方面更有经验,并具备外国厂商难以掌握的中文方言识别,更适用于广大的中国用户。 按照官方说法,星火语音大模型实际具备了国际领先的多语种多方言免切换语音识别能力,可支持 37 个语种、37 种方言“自由对话”。其中,37 个语种识别效果领先 OpenAI whisper-V3,37 个方言识别效果平均提升 30%。 强干扰/极复杂环境下的语音识别 & 转写。官方演示了两个例子,一个是电影《寒战》中郭富城和梁家辉两位主演的“港普”吵架,激烈的唇枪舌剑配合难以分辨的口音,同时交错的声音几乎无法用人耳识别,星火却可以做到。 第二个例子则进一步加码难度,在「放背景音乐」+「嘈杂的会场」环境下,让基于星火语音大模型的讯飞听见同时识别三位讯飞研究员的声音,并对发言人进行标注。即使在三人混叠说话场景,也能实现 86% 的语音识别准确率。 语音打断和情绪识别。讯飞输入法和讯飞听见都是大家熟悉的应用,而现场还直接放了一辆奇瑞汽车,演示了最新的讯飞智能驾舱。主驾上是中国人,副驾上是外国人,两人可以用不同的语言甚至方言和汽车无缝交互,AI 可以准确切换语言语种,并在每句话的开头识别出说话人是主驾还是副驾。 在过程中,两人演示了许多次“打断”的效果 —— 这也是 GPT-4o 每一次演示都会特意体现的功能,是目前顶尖水平的多情感、多模态 AI 的特征之一 —— 能够接受人类交谈中的打断习惯,及时停顿并给出无缝回复,并且保持对上下文的记忆。

基于人脸68特征点识别的美颜算法(一) 大眼算法 C++

1、加载一张原图,并识别人脸的68个特征点 cv::Mat img = cv::imread("5.jpg"); // 人脸68特征点的识别函数 vector<Point2f> points_vec = dectectFace68(img); // 大眼效果函数 Mat dst0 = on_BigEye(800, img, points_vec); 2、函数 vector<Point2f> dectectFace68(Mat src) { vector<Point2f> points_vec; int* pResults = NULL; //在检测函数中使用了pBuffer。 //如果你调用多个线程中的函数,请为每个线程创建一个缓冲区! unsigned char* pBuffer = (unsigned char*)malloc(DETECT_BUFFER_SIZE); if (!pBuffer) { fprintf(stderr, "Can not alloc buffer.\n"); //return 100; } Mat gray; cvtColor(src, gray, CV_BGR2GRAY); int doLandmark = 1;// do landmark detection pResults = facedetect_multiview_reinforce(pBuffer, (unsigned char*)(gray.ptr(0)), gray.cols, gray.rows, (int)gray.step, 1.

AI音乐革命:创新的门槛降低与产业未来的挑战

文章目录 每日一句正能量前言整体介绍人机合作AI在音乐创作中的辅助作用人机共同创作的模式实现人机共同创作的可能性伦理和法律考量 伦理道德AI与人类创造力的关系技术发展与人类创造力的平衡社会和文化影响结论 后记AI与音乐的未来交响创新的双刃剑版权与伦理的探讨人机合作的新模式面向未来的思考结语 每日一句正能量 这个社会是现实的,你没有实力的时候,人家首先看你外表。当你没有外表的时候,那就努力增强实力,当你既没外表既没实力的时候,人家只会跟你说:拜拜。 前言 在音乐的世界中,人工智能(AI)技术的介入引发了一场前所未有的讨论。随着最近一个月内一系列音乐大模型的陆续推出,我们见证了一个令人兴奋的现象:AI将音乐创作的门槛降低到了前所未有的水平,让音乐制作变得触手可及,即使是没有专业背景的普通人也能创作出属于自己的旋律。然而,这种技术的普及也带来了一系列问题和挑战,包括但不限于版权归属、创意产业的未来发展等。本文将探讨AI在音乐领域的双重作用:一方面,它如何推动音乐创作的民主化和创新;另一方面,它又如何对传统的音乐产业构成潜在的威胁。我们将深入分析AI音乐产品背后的法律、伦理和文化问题,以及音乐产业如何在AI时代寻找新的增长点和发展方向。 随着技术的进步,AI已经成为音乐创作领域的一个重要参与者。它的能力不仅仅局限于模仿已有的音乐风格,更在于能够创造出全新的音乐作品。然而,这种创新是否意味着对传统音乐产业的颠覆?AI音乐产品的版权归属问题又将如何界定?创意产业在AI的冲击下如何保持其独特性和生命力?这些问题都需要我们以更加理性和深入的视角来审视。在本文中,我们将一起探索AI在音乐创作中的角色,评估它对音乐产业的长远影响,并思考如何在AI时代维护音乐的原创性和多样性。 整体介绍 在AI生成音乐的领域,一些创新型的创业公司(精英创企)已经开始在这一领域取得突破,而大型科技公司(大厂)也紧随其后,积极参与到音乐大模型的研发和应用中。以下是对目前国内外音乐大模型的基本情况、市场份额和商业模式的介绍: 基本情况:AI音乐大模型利用深度学习技术,通过训练大量音乐数据,能够生成各种风格的音乐作品。这些模型不仅能够生成旋律和和弦,还能进行音乐风格、节奏和结构的创新。 市场份额:AI音乐生成服务市场正在快速增长。据市场研究,2023年全球AI音乐生成服务市场销售额达到了566亿元人民币,预计到2030年将达到1124亿元人民币,年复合增长率(CAGR)为10.3%(2024-2030)。 商业模式:AI音乐大模型的商业模式主要包括订阅服务、按需付费和版权授权。用户可以通过订阅服务享受无限量的AI生成音乐,按需购买特定的AI生成音乐作品,或者通过版权授权使用音乐大模型生成的作品,并支付相应的版权费用。 国内外发展:国际上,诸如OpenAI的MuseNet、谷歌的MusicLM以及Meta的MusicGen等AI音乐项目已经引起了业界广泛关注。在国内,腾讯音乐和阿里音乐等公司也在积极开发和推广自己的音乐大模型。 技术应用:一些公司如腾讯推出的“琴乐大模型”,能够根据用户提供的中英文关键词、描述性语句或音频输入,智能生成音乐和详细的乐谱,支持自动编辑和音频文本对齐,提高了创作的灵活性和效率。 开源与合作:昆仑万维发布的「天工3.0」开源MOE大模型,以及基于此打造的「天工SkyMusic」AI音乐生成大模型,展示了国内在音乐大模型领域的开源合作和技术创新。 整体来看,AI音乐大模型正逐渐成为音乐产业的一股新兴力量,其发展不仅为音乐创作带来了便利和创新,也对传统的音乐产业模式提出了挑战和机遇。 人机合作 人机合作在音乐创作领域是一个日益增长的趋势,人工智能(AI)与音乐人的结合为音乐产业带来了新的可能性和创新路径。以下是对AI与音乐人合作模式的探讨,以及AI在音乐创作中的辅助作用和实现人机共同创作的方法: AI在音乐创作中的辅助作用 灵感生成:AI能够分析大量音乐作品,识别旋律、和弦进行和节奏模式,为音乐人提供新的创作灵感。风格模拟:AI可以学习特定艺术家或流派的风格,帮助音乐人创作具有特定风格特征的作品。和声与旋律建议:在音乐人创作过程中,AI可以提供和声进行和旋律发展的可能性,辅助音乐人快速尝试不同的音乐构思。效率提升:AI可以自动化一些重复性的音乐创作任务,如生成伴奏模式或基础旋律线,让音乐人有更多时间专注于创意和情感表达。 人机共同创作的模式 AI辅助创作:音乐人利用AI生成的旋律和和弦进行二次创作和加工,结合自己的艺术感觉和审美进行调整和完善。AI与人类共同创作:在某些项目中,AI和音乐人可以共同参与创作过程,AI提供技术支持和灵感,而音乐人则负责艺术表达和情感传递。AI独立创作后的人机协作:AI可以独立生成完整的音乐作品,然后由音乐人进行后期制作和修饰,如混音、母带处理等,以确保作品的专业品质。 实现人机共同创作的可能性 技术接口的优化:开发更直观、易用的音乐AI工具,让音乐人能够无障碍地与AI进行交互和合作。个性化定制:AI系统可以根据音乐人的创作习惯和风格偏好进行个性化定制,提供更加贴合的辅助创作服务。情感和表达的学习:通过深度学习,AI可以更好地理解和模拟人类情感,使得AI生成的音乐作品更加富有表现力。反馈循环:建立有效的反馈机制,让音乐人的评价和反馈帮助AI系统进行学习和优化,不断提升合作创作的质量。 伦理和法律考量 版权归属:明确AI生成作品的版权归属,确保音乐人的合法权益得到保护。透明度:提高AI创作过程的透明度,让音乐人和听众都能理解AI在创作中的角色和贡献。道德责任:探讨AI在音乐创作中可能引发的道德责任问题,确保技术的使用符合社会伦理标准。 通过上述探讨,我们可以看到,人机合作在音乐创作领域具有巨大的潜力,它不仅能够提升创作效率,还能够推动音乐艺术的创新发展。然而,这也需要我们在技术、法律和伦理等多个层面进行深入思考和合理规划。 伦理道德 人工智能(AI)在创意产业中的应用,特别是音乐创作领域,引发了广泛的伦理和道德讨论。以下是对AI在创意产业中引发的伦理道德问题的一些探讨: AI与人类创造力的关系 原创性与版权问题:AI生成的音乐作品引发版权归属的争议。如果AI创作的作品被广泛使用,那么原创性的界定和版权归属问题需要明确。 艺术表达的深度:音乐不仅是技术的展示,更是情感和经验的传达。AI虽然能创作出符合音乐理论的作品,但是否能真正表达人类的情感深度仍是一个问题。 人类角色的取代:随着AI技术的发展,人们担心AI可能取代人类艺术家的角色。这不仅关系到艺术家的生计,也关系到艺术的本质和价值。 技术发展与人类创造力的平衡 技术与艺术的融合:通过人机合作,实现技术与艺术的有机结合。AI可以作为工具辅助人类艺术家,提供新的创作手段和表现形式,而不是取代人类的创造力。 版权和法律保护:建立和完善版权法律,确保AI生成作品的版权归属明确,保护原创艺术家的合法权益。 教育和培训:加强对音乐人的教育和培训,提高他们对AI技术的理解和应用能力,使他们能更好地利用AI进行创作。 伦理指导原则:制定AI在创意产业应用的伦理指导原则,确保技术的使用不损害人类的利益和价值观。 社会和文化影响 文化多样性的保护:AI在音乐创作中可能会倾向于生成那些在训练数据中占主导地位的风格,这可能会对文化多样性产生负面影响。 艺术价值的重新定义:随着AI的介入,艺术价值可能需要重新定义,以包含由AI辅助或创作的作品。 公众接受度:社会需要对AI创作艺术的接受程度进行讨论,以确保技术的发展不会削弱艺术的社会和文化意义。 结论 AI在音乐创作中的应用是一个双刃剑,它既带来了创新和便利,也带来了伦理和道德上的挑战。为了平衡技术发展与人类创造力的关系,我们需要在技术创新的同时,考虑艺术的人文价值和社会影响。通过制定合理的法律、伦理指导原则和教育措施,我们可以确保AI技术在促进创意产业发展的同时,也能尊重和保护人类的创造力和艺术表达。 后记 AI与音乐的未来交响 随着AI音乐大模型的涌现,我们站在了一个音乐创新的十字路口。这些模型不仅降低了音乐创作的门槛,让更多人得以表达自己的音乐梦想,同时也引发了关于创意产业未来的深刻思考。 创新的双刃剑 AI在音乐创作中的角色仿佛是一把双刃剑。一方面,它为音乐的民主化和多样性开辟了新天地,让素人也能享受到创作的乐趣。另一方面,它也带来了对传统音乐产业的冲击,包括版权归属的争议和对人类艺术家角色的挑战。 版权与伦理的探讨 AI音乐作品的版权归属问题,以及它们对人类艺术家生计的影响,是我们必须面对的现实问题。这要求我们建立更加完善的法律框架和伦理指导原则,以确保创意产业的健康发展。 人机合作的新模式 人机合作提供了一种新的创作模式,其中AI作为辅助工具,而人类艺术家则提供情感和灵魂。这种合作模式有望推动音乐创作的新浪潮,创造出既具有技术精度又富有人类情感的作品。 面向未来的思考 在AI的阴影下,创意产业的生长需要我们更多的理性审视和积极应对。我们需要思考如何在尊重人类创造力的同时,利用AI技术推动艺术的发展。 结语 AI在音乐领域的应用,最终是创造还是毁掉音乐,这取决于我们如何使用这项技术。通过合理的规范、创新的教育和开放的心态,我们可以引导AI成为音乐创作的伙伴,而非替代者。让我们共同期待,在AI的辅助下,音乐能够绽放出更加绚丽多彩的未来。 转载自:https://blog.csdn.net/u014727709/article/details/140092594 欢迎 👍点赞✍评论⭐收藏,欢迎指正

基于大数据+爬虫颈椎病预防交流与数据可视化分析平台设计和实现(源码+LW+部署讲解)

博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅ Java项目精品实战案例《100套》 Java微信小程序项目实战《100套》 Python项目实战《100套》 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人​ 系统介绍: 程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。 ​ 程序操作流程图 首先前端通过Vue和axios发送HTTP请求到后端的登录接口。在后端接收登录请求的Controller会使用`@RequestParam Map<String, Object> params`来接收前端传递的用户参数,用户名和密码。然后后端根据接收到的参数创建一个查询条件封装对象MyBatis的EntityWrapper用于构建查询条件。接着在业务层,调用相应的service方法来查询数据库中是否存在匹配的用户信息。这个查询方法Login()会将前端传递的对象参数传递到后台的DAO层,进行数据库的交互操作。如果存在符合条件的用户,则会返回相关的用户信息。最后在后端控制器中将查询结果封装成响应体,通过`return R.ok().put("data", userService.selecView(ew))`将用户信息返回给前端。前端收到响应后,可以通过调用Vue、ElementUI等组件来渲染登录结果,例如显示用户信息或者跳转到相应的页面。 详细视频演示 请联系我获取更详细的演示视频 功能截图: 在系统前台首页,调用`$route(newValue)`方法监听路由变化,根据当前的路由地址来确定活动菜单的索引,并且根据路由的哈希部分(即URL的`#`后面的部分)来判断是否需要滚动页面到顶部或者某个特定元素的位置。如果不是首页,会将页面滚动到指定元素处,否则滚动到页面顶部。另外通过`headportrait()`方法用于更新组件渲染点前用户头像。在用户登录后,后端返回了新的用户信息,需要及时更新页面上的用户头像信息。 论文参考: 1 绪 论 1.1研究背景与意义 1.2系统研究现状 1.3 论文主要工作内容 2 系统关键技术 2.1 java简介 2.2 MySQL数据库 2.3 B/S结构 2.4 SpringBoot框架 2.5 VUE框架 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1.4 法律可行性 3.2 系统性能分析 3.3 系统功能分析 3.4 系统流程分析 3.4.1 数据开发流程 3.4.2 用户登录流程 3.4.3 系统操作流程 3.

基于SpringBoot+数据可视化+协同过滤算法的非遗推荐系统设计和实现(源码+LW+部署讲解)

博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅ Java项目精品实战案例《100套》 Java微信小程序项目实战《100套》 Python项目实战《100套》 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人​ 系统介绍: 本研究旨在开发一套基于协同过滤算法的非遗推荐系统,以促进非遗文化的传播和保护。系统通过分析用户的历史行为和偏好,智能推荐具有相似特征或主题的非遗内容。采用改进的协同过滤技术,提高了推荐精度并解决了传统算法中冷启动和稀疏性问题。该系统不仅增强了用户体验,也为非遗传承人与作品提供了更广阔的展示平台。实际应用结果表明,该系统有效地提升了非遗项目的关注度和影响力,对非遗保护工作起到了积极的推动作用。 本文通过采用B/S架构,springboot框架以及MySQL数据库技术,结合国内非遗推荐管理系统现状,开发了一个基于协同过滤的非遗推荐系统。通过系统测试,实现了系统设计目标,相对于人工管理方式,本系统有效的减少了非遗推荐管理的经济投入,并且大幅度提升了非遗推荐管理的效率。 程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。 ​ 程序操作流程图 首先前端通过Vue和axios发送HTTP请求到后端的登录接口。在后端接收登录请求的Controller会使用`@RequestParam Map<String, Object> params`来接收前端传递的用户参数,用户名和密码。然后后端根据接收到的参数创建一个查询条件封装对象MyBatis的EntityWrapper用于构建查询条件。接着在业务层,调用相应的service方法来查询数据库中是否存在匹配的用户信息。这个查询方法Login()会将前端传递的对象参数传递到后台的DAO层,进行数据库的交互操作。如果存在符合条件的用户,则会返回相关的用户信息。最后在后端控制器中将查询结果封装成响应体,通过`return R.ok().put("data", userService.selecView(ew))`将用户信息返回给前端。前端收到响应后,可以通过调用Vue、ElementUI等组件来渲染登录结果,例如显示用户信息或者跳转到相应的页面。 详细视频演示 请联系我获取更详细的演示视频 功能截图: 在系统前台首页,调用`$route(newValue)`方法监听路由变化,根据当前的路由地址来确定活动菜单的索引,并且根据路由的哈希部分(即URL的`#`后面的部分)来判断是否需要滚动页面到顶部或者某个特定元素的位置。如果不是首页,会将页面滚动到指定元素处,否则滚动到页面顶部。另外通过`headportrait()`方法用于更新组件渲染点前用户头像。在用户登录后,后端返回了新的用户信息,需要及时更新页面上的用户头像信息。 论文参考: 1 绪 论 1.1研究背景与意义 1.2系统研究现状 1.3 论文主要工作内容 2 系统关键技术 2.1 java简介 2.2 MySQL数据库 2.3 B/S结构 2.4 SpringBoot框架 2.5 VUE框架 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1.4 法律可行性 3.2 系统性能分析 3.3 系统功能分析 3.4 系统流程分析 3.4.1 数据开发流程 3.4.2 用户登录流程 3.