一.创建web api项目
1.1、项目创建
MVC架构的话,它会有view-model-control三层,在web api中它的前端和后端是分离的,所以只在项目中存在model-control两层
1.2、修改路由
打开App_Start文件夹下,WebApiConfig.cs ,修改路由,加上{action}/ ,这样就可以在api接口中通过接口函数名,来导向我们希望调用的api函数,否则,只能通过controller来导向,就可能会造成有相同参数的不同名函数,冲突。其中,{id}是api接口函数中的参数。
默认路由配置信息为:【默认路由模板无法满足针对一种资源一种请求方式的多种操作。】
WebApi的默认路由是通过http的方法(get/post/put/delete)去匹配对应的action,也就是说webapi的默认路由并不需要指定action的名称
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace WebAPI { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", //修改路由,加上{action}/ ,这样就可以在api接口中通过接口函数名,来导向我们希望调用的api函数, //否则,只能通过controller来导向,就可能会造成有相同参数的不同名函数,冲突。其中,{id}是api接口函数中的参数 routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } } 二.测试案例
写一个测试的api函数,并开始执行(不调试)
2.1、我们在model文件夹中添加一个类movie
using System; using System.Collections.Generic; using System.
启动Spring项目报错
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 这个问题伴随了我挺久,最开始没太在意,因为我只要是把 Navicat 启动起来以后,就没有这个问题了,后面我决定 ! 直面这个问题
本地环境 先描述一下我本地的环境 mysql 5.6 和 mysql 8.0.32 同时部署, 5.6是3306 端口 8.0.32 是3307端口
RSA加密 非对称加密算法,两个且不同的Key,一个公开,一个私密,公开加密,私密解密。
特点:
原文短,加密后密文长
生成相对较慢
安全性超强
生成公钥、私钥 我们使用.net进行生成公钥、私钥。
使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥,方法中接收一个参数,true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥,需要注意的是这里生成的是XML格式。
RSACryptoServiceProvider rSA = new(); string pubKey = rSA.ToXmlString(false);//公钥 string priKey = rSA.ToXmlString(true);//私钥 后端使用 在后端加密解密需要引入RSACryptoServiceProvider 类,该类提供了对RSA算法的实现执行非对称加密和解密,同时,该类是不可被继承的。
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); RSA加密 加密调用Encrypt(Byte[], Boolean)方法,第一个参数为需要加密的数据,是一个byte[]格式,返回同样为一个byte[]格式。
byte[] cipherbytes; rsa.FromXmlString(pubKey); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), false); var b = Convert.ToBase64String(cipherbytes); RSA解密 解密调用Decrypt(Byte[], Boolean)方法,第一个参数为要解密的数据,是一个byte[]格式,返回同样为一个byte[]格式。
rsa.FromXmlString(priKey); byte[] cipherbytex; cipherbytex = rsa.Decrypt(Convert.FromBase64String(b), false); var c = Encoding.UTF8.GetString(cipherbytex); 前端vue使用后端传递的公钥加密 我这里使用的加密库为JSEncrypt库,安装JSEncrypt库。
npm install jsencrypt -D
在页面中对其引用。
文章目录 八大排序算法(含时间复杂度、空间复杂度、算法稳定性)1、(直接)插入排序1.1、算法思想1.2、排序过程图解1.3、排序代码 2、希尔排序3、冒泡排序3.1、算法思想3.2、排序过程图解3.3、排序代码 4、(简单)选择排序4.1、算法思想4.2、排序过程图解4.3、排序代码 5、堆排序6、快速排序7、归并排序8、计数排序8.1、算法思想8.2、排序过程图解8.3、排序代码 八大排序算法(含时间复杂度、空间复杂度、算法稳定性) 下列算法默认都是对数组进行升序
1、(直接)插入排序 1.1、算法思想 插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序的具体步骤如下:
从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤2~5。 1.2、排序过程图解 从第一个元素开始,该元素可以认为已经被排序,取出下一个元素并记录到临时变量tmp中,在已经排序的元素序列中从后向前扫描(end--),如果该元素(已排序)大于新元素,将该元素移到下一位置,如果该元素小于等于新元素,则直接在这个元素的后面把新元素放进来。
这里仅演示部分过程,其他过程自行考虑(和上述过程类似)。 1.3、排序代码 end指向当前要插入元素的前一个位置(end+1指向当前要插入元素的位置),tmp保存当前要插入的元素,在已经排序的元素序列中从后向前扫描,找到比新元素小的元素的时候(因为有序,这个位置前面的元素比这个元素更小),直接把新元素插入到这个位置的后面。
//插入排序 void InsertSort(int *arr, int n) { for (int i = 0; i < n - 1; ++i) { //一趟 int end = i; int tmp = arr[end + 1]; while (end >= 0) { if (tmp < arr[end]) { arr[end + 1] = arr[end]; } else { break; } --end; } arr[end + 1] = tmp; } } 时间复杂度计算:
今年年初chatgpt大火,国产gpt文心一言也提供了内测服务,大家可以去访问官网申请体验。文心一言APP上的功能更加强大,可以看这个测评文章。作为程序猿的我们,想接入文心一言的能力,比如开发一个聊天机器人,要怎么做呢?百度在其开发者平台开放了大模型服务,下面就跟我一起来对接API吧。
下面我先放出几张图,是我对接完的效果图,一个智能回复机器人。
接下来几章,我会逐步教大家如何对接。全系列链接如下:
手把手教你搭建微信聊天机器人系列(一):文心一言(百度千帆ERNIE-Bot大模型)API测试
手把手教你搭建微信聊天机器人系列(二):eggjs+wechaty搭建一个简单的微信聊天机器人
手把手教你搭建微信聊天机器人系列(三):搭建对接文心一言(ERNIE-Bot大模型)接口的微信聊天机器人
手把手教你搭建微信聊天机器人系列(四):多轮对话支持
创建应用 首先,我们访问百度智能云,注册一个开发者账号。
然后访问控制台,点击侧边栏的大模型服务-应用接入-创建应用。
填写一下基本信息,然后点击创建。
在刚才的页面会出现一条刚刚创建的应用,这里的API Key和Secret Key后面调用接口会用到。
现在开始研究API文档,入口在此
我们选择ERNIE-Bot模型,然后点击后面的创建chat跳转到对应文档。注:我一开始对接了ERNIE-Bot-turbo模型,结果发现有些问题回答错误,体验比较差。后面改回ERNIE-Bot,回答基本都正确。
从接口文档上看,对话接口需要传入access token,我们继续研究一下access token获取的方法。
access token获取 我们使用postman来测试接口,GET请求方式,Params下面添加三个参数,grant_type 参数值为client_credentials,client_id参数值为API Key对应的值,client_secret参数值为Secret Key对应的值。
请求后发现返回结果有个access_token,这个就是后续调用对话接口要用的。
对话接口请求 我们再配置一个POST请求,Params下面添加一个参数access_token,值为上面返回的。
然后还要再配置一下Body选项卡
选择raw,格式JSON,请求体为
{ "messages": [ { "role": "user", "content": "介绍一下你自己" } ] } 请求后,发现成功返回了对话信息。
刚才只是实现了一次对话的效果,从文档上看,接口是支持上下文语境的,要实现这种效果,需要我们把几次历史对话的内容全部传过去。
多轮对话 我们继续配置两个POST请求,来看看他是否能支持多轮对话。第一个请求,请求体为:
{ "messages": [ { "role": "user", "content": "1加1等于几" } ] } 第二个请求,我们把上次接口返回的内容result参数值【1加1等于2。】加入请求。注意:role的值为【assistant】。请求体为:
{ "messages": [ { "role": "user", "content": "1加1等于几" }, { "role": "assistant", "
Redis Desktop Manager 是一个可视化的 Redis 数据库管理工具,可以方便地查看和操作 Redis 数据库。使用 Redis Desktop Manager 可以大大提高 Redis 数据库的管理效率。
RDM的安装和配置
首先,您需要下载和安装Redis Desktop Manager。
安装完成后,运行RDM并打开主界面。在主界面中,您可以看到左侧的服务器列表面板。单击“添加服务器”按钮,并填写Redis服务器的连接信息,例如主机名、端口号、密码等。然后单击“连接”按钮以连接到Redis服务器。
RDM Mac使用方法
您之后安装 RDM第一需要,以开始使用它创建连接到你的Redis服务器来做。在主屏幕上,按“ 连接到Redis服务器”按钮。
连接到本地或公共redis服务器在“连接设置”的第一个选项卡上,输入有关您正在创建的连接的常规信
名称 - 新连接的名称(例如:my_local_redis)
主机 - redis-server主机(例如:localhost)
端口 - redis-server端口(例如:6379)
Auth - redis-server身份验证密码
使用SSL连接到公共redis-server
如果要使用SSL连接到redis-server,则需要在第二个选项卡上启用SSL并提供PEM格式的公钥。您可以找到特定云服务的说明。
Windows Azure Redis缓存1.使用所有请求的信息创建连接
2.确保已启用“使用SSL协议”复选框3.您的Azure Redis连接已准备就绪
Redis Labs
要使用SSL / TLS加密连接Redis Labs实例,请执行以下步骤:
1.确保在Redis Labs仪表板中为Redis实例启用了SSL。
2.garantia_credentials.zip从Redis Labs仪表板下载并解压缩
3.选择garantia_user.crt在“公钥”字段
4.选择garantia_user_private.key在“私钥”字段
5.garantia_ca.pem在“权限”字段中选择
通过SSH隧道连接到私有redis-server
基本的SSH隧道
SSH选项卡应该允许您使用SSH隧道。如果您的redis-server无法通过网络公开访问,这将非常有用。要使用SSH隧道,请选中“使用SSH隧道”复选框。有不同的安全选项:您可以使用普通密码或OpenSSH私钥。
对于Windows用户:
您的私钥必须是.pem格式。
高级SSH隧道如果您需要高级SSH隧道,则应手动设置SSH隧道并通过localhost连接:
ssh SSH_HOST -L 7000:localhost:6379
如何通过EC2连接到Redis ElastiCache
=========================================================================
相关代码gitee自取:
C语言学习日记: 加油努力 (gitee.com)
=========================================================================
接上期:
【数据结构初阶】七、非线性表里的二叉树(堆的实现 -- C语言顺序结构)-CSDN博客
=========================================================================
回顾 二叉树的概念及结构: 二叉树的概念 一棵二叉树是节点的一个有限集合,该集合满足以下条件:
或者为空或者由一个根节点加上两棵别称为左子树和右子树的二叉树组成 二叉树的结构 二叉树不存在度大于2的节点
(所以节点的度可能是 0 即空树,也可能是 1 或 2 )
二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树
这次使用C语言链式结构实现二叉树,
要会把二叉树分为 根、左子树 和 右子树 ,
把 左子树(右子树)看成一个新的二叉树,再把其分为 根、左子树 和 右子树 ,
依次分类下去…… 图示: 注意 对于任意二叉树,都是由以下几种情况复合而成:
二叉树的存储结构(补充) 二叉树一般可以使用两种结构存储,
一种顺序结构,一种链式结构
链式结构 二叉树的链式存储结构,是指用链表来表示一棵二叉树,
即用链来表示元素的逻辑关系
通常的方法是:链表中每个节点由三个域组成,数据域和左右指针域,
左右指针分别用来给出该节点左孩子和右孩子所在的链节点的存储地址 链式结构又分为二叉链和三叉链,
初阶数据结构一般都是二叉链,高阶数据结构如红黑树等会用到三叉链 图示: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二叉树的遍历 递归结构遍历 二叉树遍历(Traversal)是按照某种特定的规则,
依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次。
访问节点所做的操作依赖于具体的应用问题。
遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础。
引入一个概念 -- 深度优先遍历(DFS)
简单理解就是从某个位置开始遍历,往“深处”遍历到无路可退再往回遍历,
严格来说,在深度优先遍历时是先访问再往“深处”走,一般配合递归使用
(这里前序递归遍历是最符合深度优先遍历的)
有三种递归遍历方式:前序(先序)/ 中序 / 后序 如果按照递归的逻辑来说,这三种递归遍历方式都算是一种深度优先遍历,
VAD(Voice Activity Detection)算法的作用是检测语音,在远场语音交互场景中,VAD面临着两个难题:
1. 如何成功检测到最低能量的语音(灵敏度)。
2. 如何在多噪环境下成功检测(漏检率和虚检率)。
漏检反应的是原本是语音但是没有检测出来,而虚检率反应的是不是语音信号而被检测成语音信号的概率。相对而言漏检是不可接受的,而虚检可以通过后端的ASR和NLP算法进一步过滤,但是虚检会带来系统资源利用率上升,随之系统的功耗和发热会进一步增加,而这会上升为可移动和随声携带设备的一个难题。
本文基于WebRTC的AEC算法,WebRTC的VAD模型采用了高斯模型,这一模型应用极其广泛。
高斯分布 高斯分布又称为正态分布(Normal distribution/Gaussian distribution)。
若随机变量X服从一个数学期望为μ,标准差为σ^2的高斯分布,则:
X~N(μ,σ^2)
其概率密度函数为:
f(x)=1/(√2π σ) e^(-〖(x-u)〗^2/(2σ^2 ))
高斯在 WebRTC中的使用:
f(x_k |Z,r_k)=1/√2π e^(-(x_k-u_z )^2/(2σ^2 ))
x_k是选取的特征向量,webRTC中指x_k是六个子带的能量(子带是80~250Hz,250~500Hz,500Hz~1K, 1~2K,2~3K,3~4KHz,变量feature_vector存放的就是子带能量序列),r_k是均值u_z和方差σ的参数结合,这两个参数决定了高斯分布的概率。Z=0情况是计算噪声的概率,Z=1是计算是语音的概率。
这里采用最高频率是4KHz的原因是,webRTC中程序将输入(48KHz,32HKz,16KHz)都下采样到8KHz,这样根据奎斯特频率定理,有用的频谱就是4KHz以下。
当然也可以采用8KHz截止频率,这样就需要自己训练和修改高斯模型的参数了,这个算法我试过,要比基于DNN的方法好用,灵活性大些,体现在参数自适应更新上,举例来说,在夜晚安静家庭场景中,噪声的均值就比较低的,白天周边环境噪声多了时,噪声特征的均值也会随之调整,针对DNN的方法,参数一旦训练完毕,那么适用的场景的就定了,如果要增大适用场景,首先要收集目标场景的数据,标注好的数据重新训练(通常要增加参数数量),这样的过程会导致1.数据收集成本高,2.参数过多计算代价大(VAD一般是一直工作的)。
Webrtc采用的是GMM模型 等待视频链接地址。
WebRTC算法流程 1. 设置VAD激进模式 共四种模式,用数字0~3来区分,激进程度与数值大小正相关。
0: Normal,1:low Bitrate, 2:Aggressive;3:Very Aggressive
这些激进模式是和以下参数是息息相关的。
[cpp] view plain copy
<comman_audio/vad/vad_core.c> // Mode 0, Quality. static const int16_t kOverHangMax1Q[3] = { 8, 4, 3 }; static const int16_t kOverHangMax2Q[3] = { 14, 7, 5 }; static const int16_t kLocalThresholdQ[3] = { 24, 21, 24 }; static const int16_t kGlobalThresholdQ[3] = { 57, 48, 57 }; // Mode 1, Low bitrate.
MongoDB简单介绍 MongoDB是所有非关系型数据库中最像关系型数据库的一种存储技术,MongoDB中的数据结构是类似于JSON的BSON(Binary Json),这篇文章就详细介绍如何安装和使用MongoDB。
MongoDB和MySQL中的概念对应关系
MongoDBMySQL数据库数据库表/集合表索引索引文档表的行数据 一、下载MongoDB 在MongoDB官网下载对应的MongoDB版本,可以点击以下链接快速跳转到下载页面:
https://www.mongodb.com/try/download/communityhttps://www.mongodb.com/try/download/community如图,页面往下滚动,点击选择安装包
然后根据情况选择对应的选项,博主的Ubuntu操作系统是ubuntu-22.04.3版本,所以下载的是对应最新的Ubuntu 22.04 x64的安装包。
注意:Ubuntu 22.04版本的操作系统有一点小问题,不建议使用,安装Ubuntu 22.03的就行了。
下载完成后,通过finalshell上传到虚拟机上,比如usr目录,然后解压:
tar -zxvf mongodb-linux-x86_64-ubuntu2204-6.0.11.tgz 至此,Ubuntu上MongoDB的安装工作就完成了。
二、启动MongoDB 准备工作 首先,创建MongoDB要使用的目录和文件
mkdir -p /etc/mongodb/data /etc/mongodb/log /etc/mongodb/conf touch /etc/mongodb/conf/mongodb.conf 启动方式一 通过以下命令启动
bin/mongod --port=27017 --dbpath=/etc/mongodb/data --logpath=/etc/mongodb/log/mongodb.log --bind_ip=0.0.0.0 --fork 启动参数说明
--dbpath: 指定数据文件存放目录 --logpath: 指定日志文件,注意是指定文件不是目录 --logappend: 使用追加的方式记录日志 --port: 指定端口,默认为 27017 --bind_ip: 默认只监听 localhost 网卡 --fork: 后台启动 启动方式二 通过配置文件启动,修改/etc/mongodb/conf/mongodb.conf的内容
systemLog: destination: file path: /etc/mongodb/log/mongodb.log logAppend: true storage: dbPath: /etc/mongodb/data engine: wiredTiger journal: enabled: true net: bindIp: 0.
Java Excel转PDF itextpdf,即取即用 工具方法一、使用方式1、本地转换2、网络下载 二、pom依赖引入三、工具方法三、引文 本篇主要为工具方法整理,参考学习其他博主文章做了整理,方便使用。
工具方法 一、使用方式 1、本地转换 导入依赖创建工具方法传入输入输出流或文档地址即可。 2、网络下载 通过POI或者easyExcel生成或填充,再由后端转换PDF响应前端
思路:将网络下载拆分为本地转换,再响应前端即可。
现在服务器创建临时文件目录(临时目录可在每次下载请求开始先进行清空);将生成的Excel写入本地临时文件;获取Excel文件输入流,获取响应的输出流(response.getOutputStream(););调取公共方法传入输入输出流即可。 二、pom依赖引入 <!-- pom相关依赖 --> <poi.version>4.1.1</poi.version> <itextpdf.version>5.5.13.2</itextpdf.version> <!-- POI Excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <!-- iText PDF --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>${itextpdf.version}</version> </dependency> 三、工具方法 package com.xxx.tool.util; import cn.hutool.core.collection.CollUtil; import com.itextpdf.text.*; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import lombok.experimental.UtilityClass; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.*; import java.io.IOException; import java.
本文章是以vs2022来创建的,对内容进行了补充和丰富。如果想看2019的,可以参考。Visual Studio 2019创建 WebServiceCSDN 1.编写接口 打开VS2022,新建项目,这里我选择的是 “ASP.NET Web应用程序(.NET Framework)”。
在这里有一个注意点:如果你的vs中不存在“ASP.NET Web应用程序(.NET Framework)“的选项,你需要重新添加一下对应的引用。VS2022新建项目时没有ASP.NET Web应用程序 (.NET Framework)
填写好项目名称、选择项目位置以及所使用的框架,这里我用的是“.NET Framework 4.7.2”框架,然后点击创建。
打开解决方案资源管理器-右键创建的web项目-添加-新建项-添加 web 服务(AMSX)。
默认的是HelloWorld方法,自己可以添加几个方法。
然后我们启动项目。在上面我们可以看到我们所写的五个方法,我选择其中一个点进去,点击调用后我们可以看到输出了“7”。
在这里需要注意的是如果本地启动以后报localhost的被拦截。需要注意一下创建项目时是否开启了高级中的https,如果不记得也没有关系,直接打开项目的属性,修改Web中的项目URL,将https改为http,重新启动项目即可。
2.发布接口 右键项目,选择发布,选择文件夹,点击下一步,选择发布的文件夹位置,这里可以自己选择,但是一定要记住你选择的位置。点击完成,然后我们点击发布即可。
注:这里有个小细节,当我们更新Web服务里面的内容的时候,再次发布的时候我们需要注意。
打开项目所在的位置,这里面的内容即为我们所发布的内容。
然后我们打开IIS管理器(搭建自己本地的IIS服务器)。
注意:这个时候我们发现打开的网站出现了错误,
404.3错误,这个问题的原因是没有配置IIS服务,最简单粗暴的方案就是安装IIS,步骤如下:
控制面板-》打开或关闭windows功能-》Internet信息服务-》万维网服务-》应用程序开发功能,勾选上“.net扩展性”和“ASP.NET”,保存后,重启IIS服务器即可。
403.14错误,我们只需要将目录浏览启用即可。
至此,我们发布网站的步骤进行完毕,接来了我们将在程序中调用我们说发布的方法并获取到相应的值。
3.调用接口 右键项目-添加-服务引用,打开刚刚启动的网站,复制这个地址粘贴到服务引用中。
接下来点击高级,添加Web 引用(W)-在打开的界面中的URL中输入刚刚复制的网址-点击蓝色箭头-添加引用,即可在解决方案资源管理器中看到我们所添加的服务引用。
接下来我们简单的添加一个控制应用台项目来实现方法的调用。新建console程序,右键控制图应用程序中的引用,在再程序中使用引用。
这样我们就完成了一个web服务的创建、发布、使用.
刚刚过去的8月,百度WAVE SUMMIT 深度学习开发者大会上,重磅发布文心一言的五个原生插件:百度搜索、览卷文档(基于文档的交互)、E 言易图(数据洞察图表生成)、说图解画(基于图片的交互)、一镜流影(文字转视频)。
我们知道大模型的训练过程一般都需要比较长的时间,强如ChatGPT4用到的最新数据也只是21年的。但是一般案例中的问题都需要用到最新的数据,百度搜索以插件的形式为文心大模型提供了实时的数据。对于开发者来说,便可以将自身拥有的实效性很强的数据资源同样以插件的形式提供给文心大模型,例如股票数据、电影票房数据等。
一、文心一言Plugin实战 插件生态都来了,还是得动手实操一下!这里我们就试试使用文心一言插件从0到1进行一个简单的应用开发,实现一个【旅游攻略助手】,一起感受下官方原生插件的惊艳之处和AI原生应用的魅力之处!
开发准备工作 案例介绍: 在放假休闲期间,我们常常想要出去旅游,但又苦于没有优质的导游可以帮自己做旅游规划。
借助文心一言的能力,你只需要给出你希望出行的地点和游玩时间等信息,即可为你规划好路线,并分析出早中晚各自游玩的景点,一目了然!
安装官方SDK 目前支持 Python >= 3.7版本,官方文档地址:SDK安装及使用流程 - 千帆大模型平台 | 百度智能云文档
创建应用 登录百度智能云千帆控制台 ,创建应用。
创建应用后,获取API Key、Secret Key。
模型选择 百度智能云千帆大模型平台包含 ERNIE-Bot、 ERNIE-Bot-turbo、 BLOOMZ-7B、 Qianfan-BLOOMZ-7B-compresse、 Llama-2-7b-chat 等热门大模型,我们使用 ERNIE-Bot 进行应用开发即可。
模型参数配置 Temperature:1.00
TOP_P:0.80
上传数据库进行检索训练 这里我们提前准备了2组训练数据,直接创建即可。
主要代码如下: 第一步,导入模型,收集用户出游信息
Python
import paddlehub as hub
# 加载旅游攻略模型
strategy_model = hub.Module(name="tourism_strategy")
# 加载景点推荐模型
recommend_model = hub.Module(name="tourism_recommendation")
# 用户输入出行地点和游玩时间等
destination = input("请输入您希望出行的地点:")
duration = input("请输入您计划游玩的天数:")
# 使用旅游攻略模型规划路线
strategy_result = strategy_model.
我在搭建数据仓库的时候,安装hive包初始化元数据库失败。在网上找了几种方法都没解决成功,然后我又重新看了一下问题,问题当中还显示了:无法使用MySQL以‘root‘@‘localhost‘。
原因分析:
1、权限问题:mysql版本的驱动包不对应,一般linux系统下的jar为后缀
2、密码问题:当密码错误时,服务器拒绝访问。应该可能是hive文件配置问题
解决办法:
1、查看驱动包是否安装正确
查看了版本是正确的,所以不是这个问题,只能是密码问题,然后我查看了一下配置文件
2、检查用户名和密码是否正确
查看我的配置hive的文件,输入以下代码进入文件里面修改
起初没有想通,认真看了一下发现password的密码可能有两种情况,一种是我配置mysql文件的密码也有可能是我虚拟机主机的密码,在想一下问题的解释,告诉我的是root用户密码拒绝我的服务访问,所以我试着修改成我的root机子的密码,于是就可以了
、
初始化成功后,我就进入到我的hive中配置检验我是否成功,输入show databases回车弹出可进行正在的文件,在输入 exit 有出现 Bye 等代表成功完成进入
出现schemaTool completed 代表着 hive,mysql无任何问题,安全成功!
学习笔记 1.namenode的存储机制2.datanode的存储机制3.修改namenode,datanode的存放位置(1)根据官网 获得配置代码(2)nodepad++中找到自己路径下的hadoop/etc/hadoop/hdfs-site.xml(3)core-site.xml和hdfs-site.xml配置代码(3)关闭namenode和datanode(4)删除原来格式化文件(5)重新格式化namenode(6)重新启动namenode和datanode(7)网页中namenode的存储地址已经修改 4.Notepad++ 连接配置(1)NppFTP插件安装(2)nodepad++ 与虚拟机连接 5.hdfs文件的操作文件夹操作(1)指定文件夹路径----mkdir(2)多层级文件夹的创建----mkdir -p(3)移动文件夹----mv(4)文件夹改名----mv(5)删除文件夹----rm -r 文件操作(1) 将本地文件上传到hdfs中----put(2)下载文件----get(3)文件复制----cp(4)文件改名----mv(5)文件的移动----mv(6)文件列表的查看----ls(7)文件内容的查看----cat(8)空文件创建----touch(9)文件内容拼接----appendToFile(10)文件删除 块池 怎么把文件放到hdfs上? 首先就是需要将hdfs相关程序启动起来----namenode和datanode namendoe->相当于目录,不进行文件信息的存储
datanode->真正数据存放的位置
但namenode的默认存放位置在tmp文件下,tmp又是临时文件,随时可能被系统清除,我们存放在hdfs上的数据并不安全,所以我们需要修改一下namenode和datanode的存放位置
1.namenode的存储机制 fsimage:第一次namenode格式化->在硬盘上生成镜像文件fsimage(持久化存储)->进行元数据的存储
edits:以后进行hdfs文件的存取等文件操作->就会再生成一个文件edits(这是一个编辑文件 用于进行文件操作的记录)
只要进行namenode格式化,就会生成fsimage和edits这两个文件,两者结合使用,进行数据存储,防止数据丢失
edits_inprogress_0000000000000000003在形成新的edits文件前,数据就在这个文件中进行预存储(防止数据丢失)
但是会生成很多的fsimage和edits文件,我们要怎么读取呢?secondarynamenode->将fsimage和edits文件进行合并->合并之后就是一个fsimage镜像文件->在下一次启动时,直接加载fsimage中的内容 2.datanode的存储机制 namenode和datanode之间,会有一个心跳一致检查,来确保数据存储到对应的datanode中
3.修改namenode,datanode的存放位置 namenode自己的存储机制 目的是防止数据丢失->可是namenode的默认存放位置在tmp文件夹下,tmp文件是系统文件,并且每隔一段时间都会自我清除,那么namenode的存储机制就没有用了->所以我们需要把namenode的存放位置进行更改 (1)根据官网 获得配置代码 (2)nodepad++中找到自己路径下的hadoop/etc/hadoop/hdfs-site.xml (3)core-site.xml和hdfs-site.xml配置代码 虚拟机中创建自己想要存放namenode和datanode位置的文件夹
- 注:nodepad++ 打完代码后记得ctrl+s保存一下
(官网)
(3)关闭namenode和datanode (4)删除原来格式化文件 只有把原来格式化文件删掉,才能重新格式化,不然namenode肯定起不来
rm -rf hadoop-root/ (5)重新格式化namenode hadoop namenode -format 格式化成功----(在最后几行可以找到如下图的代码)
(6)重新启动namenode和datanode //在自己路径下的hadoop的sbin下 //我的是 cd /opt/soft/hadoop/sbin ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start datanode (7)网页中namenode的存储地址已经修改 4.Notepad++ 连接配置 (1)NppFTP插件安装 (2)nodepad++ 与虚拟机连接 连接成功
5.hdfs文件的操作 文件夹操作 (1)指定文件夹路径----mkdir //在根目录中创建 名为a的文件夹 hdfs dfs -mkdir /a (2)多层级文件夹的创建----mkdir -p //在根目录下创建a文件夹,在a下创建b,b下创建c,c下创建d hdfs dfs -mkdir -p /a/b/c/d (3)移动文件夹----mv //把d文件夹 移动到 /(根目录)下 hdfs dfs -mv /a/b/c/d / (4)文件夹改名----mv //把d文件夹的名称 改为 dd hdfs dfs -mv /d /dd (5)删除文件夹----rm -r -R标识—>当前的路径表示是文件夹
一、源数据 二、SPSS因子分析 2.1.导入数据 2.2.标准化处理 由于指标的量纲不同(单位不一致),因此,需要对数据进行标准化处理
2.3.因子分析 点击“确定”后,再回到“总方差解释”表格,以“旋转载荷平方和”中的各成分因子贡献率为权重,对因子得分做加权平均处理,可计算出综合得分
即:综合得分=(0.72283 * FAC1_1+0.19629 * FAC2_1) / 0.91912
其中,FAC1_1是成分1因子得分,FAC2_1是成分2因子得分,0.72283是成分1方差百分比(成分1因子贡献率),0.19629是成分2方差百分比(成分2因子贡献率),0.91912是累积方差百分比(累计因子贡献率)
2.4.输出结果 皮尔逊相关性矩阵:
通过计算指标之间的线性相关性,了解指标之间的相关性强弱,有助于确定因子个数和处理可能存在的共线性问题,如果相关性矩阵中大部分相关系数小于0.3且未通过充分性检验,则不适用于因子分析
充分性检验(KMO和Bartlett检验):
KMO检验:KMO值介于0和1之间,如果全部变量间相关系数平方和远大于偏相关系数平方和则KMO值接近1,KMO值越接近1越适合作因子分析。一般情况下,当KMO值大于0.6(严格一点就以0.7为阈值进行判断)时,表示指标之间的相关性较强,偏相关性较弱,适合做因子分析
Bartlett检验:原假设相关系数矩阵为单位阵,若得到的概率值小于规定的显著性水平(一般取0.05,严格一点就以0.01为阈值进行判断)则拒绝原假设,认为数据适合做因子分析,通俗来讲,即显著性水平越趋近于0则越适合做因子分析,反之则不能拒绝原假设,即数据不适合做因子分析
公因子方差:
从公因子方差可以看出各原始指标变量间的共同度,即各原始指标变量能被提取出的程度,由图可知,所有指标变量的共同度都在0.6以上,大部分指标变量的共同度在0.95以上,说明因子能解释指标变量中的大部分信息,适合进行因子分析
总方差解释:
在总方差解释表中,可以看出提取2个成分因子时,其累计贡献率即可达到91.912%,说明选取2个成分因子就足以代替原来6个指标变量,能够解释原来6个指标变量所涵盖的大部分信息
碎石图:
在碎石图中,可以看出第一个因子的特征值最高,方差贡献最大,第二个因子其次,第三个因子之后的特征值都较低了,对原来6个指标变量的解释程度也就较低,可以忽略,因此,提取2个成分因子是比较合适的
成分矩阵:
由成分矩阵可知,成分因子1主要解释人均GDP、财政总收入、全体常住居民人均可支配收入、金融机构人民币贷款余额、全社会能耗等5个指标变量的信息,可定义为综合发展因子F1,成分因子2主要解释供应土地这一个指标变量的信息,可定义为资源因子F2
旋转后的成分矩阵:
在旋转之前,原始因子的载荷矩阵通常会产生一些问题,即一些变量与多个因子之间的载荷值都很高,而其他变量则没有明显的载荷值,在这种情况下,因子以及它们的载荷解释可能会变得模糊不清,难以解释或者解释力度不够,旋转后的成分矩阵则是能够更清晰地解释变量与因子之间的关系,从而提高了因子模型的可解释性
成分转换矩阵:
用来说明旋转前后成分因子间的系数对应关系
旋转后的空间中的组件图:
由图可知,人均GDP、财政总收入、全体常住居民人均可支配收入、金融机构人民币贷款余额、全社会能耗等5个指标变量基本是在同一个维度上的(横轴),这与综合发展因子F1是对应的,而供应土地这一个指标变量则是在另一个维度(纵轴),这则是与资源因子F2是对应的,说明提取2个因子是合理的,具有一定的可解释性
成分得分系数矩阵:
综合发展因子F1得分:
资源因子F2得分:
成分得分协方差矩阵:
因子得分:
FAC1_1是成分1因子得分,即综合发展因子F1得分,FAC2_1是成分2因子得分,即资源因子F2得分,具体计算公式在“成分得分系数矩阵”已作说明
综合得分:
综合得分=(0.72283 * 综合发展因子F1得分+0.19629 * 资源因子F2得分) / 0.91912
三、Python因子分析 3.1.导入第三方库 # 导入第三方库 import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler from factor_analyzer import FactorAnalyzer,calculate_kmo,calculate_bartlett_sphericity import matplotlib.
博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
基于Java+SpringBoot+Vue仓库管理系统
2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
java项目精品实战案例《100套》https://blog.csdn.net/weixin_39709134/category_11128297.html?spm=1001.2014.3001.5482
Java微信小程序项目实战《100套》https://blog.csdn.net/weixin_39709134/category_12022111.html
目录
一、前言介绍:
1.1 项目摘要 1.2 目的意义:
二、主要技术: 2.1 Spring Boot框架:
2.2 MySQL:
2.3 Springboot
三、系统设计:
3.1 系统功能设计:
3.2 登录流程设计:
3.3 登录时序图设计:
四、功能截图: 4.1 登录注册:
4.2 系统首页:
4.3 基础数据类型:
4.4 公告管理:
4.5 物资管理:
4.6 物资类型统计
4.7 物资申请管理
4.8 用户管理: 五、部分数据设计: 六、代码参考 七、项目总结: 八、源码获取:
一、前言介绍: 1.1 项目摘要 信息内容数据从传统到当今,一直在改变,忽然互联网技术让传统信息内容管理见到划时代的黎明,由于传统信息内容管理从时效性、安全系数、可执行性等多个方面,碰到互联网时代发觉弥补了从古至今的缺陷,有效提升管理效率工作能力。在传统的管理模式中,时间越长,管理具体内容越大,需要更多人梳理数据,数据归纳查看高效率非常低,数据安全性从来不会确保安全系数。融合数据具体内容管理的缺陷,在互联网时代能够得到很好的填补。融合前沿的大数据技术,开发设计满足要求的软件,使数据具体内容管理可以最大程度地提升准确率,管理更科学便捷,不论是输入时效性、查询的时效性或是梳理总结的时效性。
仓库管理系统进行了字典管理、公告管理、老师管理、物资供应管理、物资申请管理、学生管理、等服务。设备采用关联数据库里的MySQL做为全面的数据库,合理存放数据,合理备份数据,确保数据稳定性。除此之外,程序流程还具备程序流程所需要的所有功能,大大提升了实际操作安全度,使库房管理系统软件从概念迈向实际,真真正正提升了信息资源管理效率。
1.2 目的意义: 仓库管理系统的开发不但涉及到页面设计和功能分析,还涉及到数据库系统和计算机语言。针对已经毕业的学生而言,一是夯实有关专业知识;二是让学生懂得如何将基础理论知识用于具体软件的开发全过程;三是让学生明白知识是无边无际的,我们应该时时刻刻了解学无止境的精髓,让学生培养时时刻刻学习的好习惯。与此同时,大家也要相信,通过这些流程的开发,学生对专业知识的理解软件开发水平的提升会有很大帮助。
二、主要技术: 2.1 Spring Boot框架: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
近期在工作中遇到一个问题,记录一下,在项目上线之后,遇到一个问题,即缩放到90%时,页面字体比默认的100%字体大,一开始毫无头绪,经过一番的Google...Google...Google....,终于找到了解决方法,这是因为大多数笔记本电脑默认的缩放比例为125%或者是150%,所以就出现了在本身台式电脑(默认100%)上开发出来的页面都是按照100%比例来开发的,之后在笔记本电脑上打开缩放比例的时候会出现字体大小显示不合理的问题,这种问题主要是因为device-pixel-ratio导致的。 解决办法:
1)新建一个js文件
// detectZoom.js export const detectZoom = () => { let ratio = 0 const screen = window.screen const ua = navigator.userAgent.toLowerCase() if (window.devicePixelRatio !== undefined) { ratio = window.devicePixelRatio } else if (~ua.indexOf('msie')) { if (screen.deviceXDPI && screen.logicalXDPI) { ratio = screen.deviceXDPI / screen.logicalXDPI } } else if ( window.outerWidth !== undefined && window.innerWidth !== undefined ) { ratio = window.outerWidth / window.innerWidth } if (ratio) { ratio = Math.
首先打开百度,搜索sql server,找到图示词条,点击进去。
一般版本是需要付费的,正常开发可以使用免费版本【Express】,点击下载
下载完成后打开下载的文件。三个选项,我们选自定义方式。
选择语言和位置,点击安装。此时的位置尽量不用C盘。
安装好就是这样的页面,然后点击第一项全新SQL Server独立安装或向现有安装添加功能。点击后暂不关闭此页面,后面要用。
然后就正式进入安装页面,许可选同意,下一步。
这里不推荐选择更新,一般当前版本就够用了,下一步。
然后就会自动执行检查,检查完成后就是这样,防火墙警告是正常的,略过,下一步。
去掉勾选,这个一般不用。下一步
此时注意,空间充足的话可以向我这样选,一般只需要数据库引擎服务就可以,空间紧张就去掉下边两项的勾选,影响不大,根据个人情况改下路径,下一步
选择默认实例。下一步
此时注意,因为sql服务一般比较占内存,所以这里建议勾选为手动,下一步
这里选混合模式,并且根据个人情况输入密码,个人开发者为了方便密码不建议设置太复杂。然后切换到数据目录页签。
根据个人情况改下路径,下一步
等待安装完成,关闭。
到此时,sql服务就安装完成了,接下来安装连接工具。
回到安装中心页面,点击安装SQL Server管理工具,即自动到浏览器打开了下载页面。
点击下载
下载完成后打开文件,根据个人情况修改下安装位置,点击安装。
完成
此时已经完全安装完成,可以正常使用了!
接下来打开连接测试下
之后右键系统任务栏,打开任务管理器,找到服务,打开服务页面。
在服务列表找到SQL服务,右键启动。
在开始菜单找到刚刚安装的SSMS连接工具打开。
可以看到需要填写连接信息
如果按照刚刚的流程下来的,服务器名称可以填你的计算机名称或者英文符号【.】,然后选择身份认证,名称是sa,密码是刚刚安装的时候设置的密码,点击连接。
到这个页面就可以了
好啦,这就正常安装完成啦。
目录 引言1. 简单队列模型(Simple Queue Model)优缺点及适用场景代码示例 2. 工作队列模型(Work Queue Model)优缺点及适用场景代码示例 3. 发布/订阅模型(Publish/Subscribe Model)优缺点及适用场景代码示例 4. 路由模型(Routing Model)优缺点及适用场景代码示例 5. 主题模型(Topic Model)优缺点及适用场景代码示例 引言 RabbitMQ是一个流行的消息队列中间件,它确保了不同应用程序之间的可靠消息传递。由于其高性能、轻量级和灵活性,RabbitMQ在许多应用程序中被广泛使用,例如异步任务处理、负载均衡、事件通知 等。在RabbitMQ中,消息的生产和消费是通过一系列的消费模型来管理的。每个消费模型都有不同的特点和应用场景,可以帮助开发人员构建高效的消息传递系统。本文将深入介绍RabbitMQ的五种常见消费模型,包括简单队列模型、工作队列模型、发布/订阅模型、路由模型和主题模型,删除线格式 并探讨它们各自的优缺点和适用场景。希望此文能帮助你更好地理解RabbitMQ消费模型并在实践中达到更好的效果。
1. 简单队列模型(Simple Queue Model) 简单队列模型是最基础的RabbitMQ模型。它包括单个生产者和单个消费者。生产者将消息发送到一个队列中,然后消费者从队列中读取消息并处理。这种模式不适用于多个消费者或消息广播,因为一旦消息被一个消费者接收,它就会从队列中删除。
优缺点及适用场景 优点: 实现简单,易于理解和部署。
可以提供一些基本的可靠性保证,例如消息确认和持久化。
缺点: 不支持并发消费。
不支持多个消费者共同消费一个队列。
适用场景: 单生产者和单消费者之间的点对点通信。
系统中只有一个进程或线程可以处理消息。
例如,一个后端服务向另一个后端服务发送消息,或者一个客户端将任务发送给服务器
代码示例 Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); // 声明队列 String queueName = "simpleQueue"; channel.queueDeclare(queueName, false, false, false, null); // 发送消息 String message = "Hello, RabbitMQ!"; channel.basicPublish("", queueName, null, message.getBytes("UTF-8")); System.
随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干净在升级的时候会出现各种问题,所以整理如何完全卸载python环境,并且升级系统python环境。
1 查看已安装好的python解释器的版本 python3 --version
以python3.9为例
2 确定已安装好的Python解释器的安装路径 which python
可以查看到安装路径为/Library/Frameworks/Python.framework/Versions 3 开始卸载 3.1 卸载/删除python框架 进入python解释器的安装路径下进一步确认要卸载的Python解释器
ls -l /Library/Frameworks/Python.framework/Versions 卸载/删除命令
sudo rm -rf /Library/Frameworks/Python.framework/Versions/python3.9
查看python框架是否删除完成
ls -l /Library/Frameworks/Python.framework/Versions
3.2 卸载/删除python应用目录 应用目录/Applications
进入到应用目录,并且查看应用目录内容
cd /Applications ls
卸载/删除python应用目录
sudo rm -rf python 3.9
查看应用目录内容,确认是否已经删除
3.3 删除/usr/local/bin目录下指向的python 进入到/usr/local/bin目录下
cd /usr/local/bin
查看应用目录内容
ls
卸载/删除python3.9相关文件和链接(需要自行确认)
方法一 sudo rm -rf python3*
方法二 rm python3*
其他:
mac bash切换
zsh模式下输入: chsh -s /bin/bash
bash模式下输入: chsh -s /bin/zsh