ChatGPT实用技巧与接入ChatGPT
ChatGPT交互单位:TokenToken:这个指的是OpenAI处理文本的基本单位,可以是单词或者字符的片段、一个标点符号或数字。
1个token大约相当于四个字符或者0.75个单词。例如,“hamburger”被分成“ham”、“bur”和“ger”三个Token,而“pear”是一个Token。
一个汉字会被拆成大约Token。
OpenAI的模型有一个固定长度的Token限制。
例如:GPT-3的Davinci模型最多可以处理2049个Token,大约1500个单词。最新Turbo模型大约是4096个Token,大约是3000个单词。
Token限制的计数包含输入和输出的文本。也就是说,比如“输入+输出”总共不能超过3000个英文单词。
训练语料的截至时间ChatGPT、GPT-4的数据仅有2022年1月以前的,如果你问这个时间以后的问题,它就不能提供有效信息了。
AIGC、PGC、UGCAIGC即AI Generate Content,是指利用人工智能技术来生成内容,AIGC也被认为是继PGC(专业生产内容)、UGC(用户生产内容)之后的新型内容生产方式,AI绘画、 ...
SpringCloud实用篇(四)——注册中心
Nacosnacos官方网站:https://nacos.io/
nacos是阿里巴巴的产品,现在是springcloud的一个组件,相比于eureka的功能更加丰富,在国内备受欢迎
nacos的安装下载地址:https://github.com/alibaba/nacos/releases/
启动方式:
1.双击如图所示:
2.cmd指令启动
服务注册到nacos1.引入spring-coloud-alilbaba依赖
12345<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba</artifactId> <version>2.2.5.RELEASE</version></dependency>
2.注释之前在项目上相关的eureka配置
3.在user-service&order-service添加nacos客户端的依赖
1234567< ...
SpringCloud实用篇(三)——Ribbon负载均衡
Ribbon负载均衡负载均衡流程
RestTamplate被@LoadBalanced标记表明要被Ribbon拦截处理
追踪源码:
与黑马课程的源码有所不同
首先进入LoadBalancerAutoConfigration自动装配类,这里可以发现传了一个final LoadBalancerInterceptor loadBalancerInterceptor的参数,通过List集合加入loadBalanceInterceptor,最终restTemplate设置次拦截器,RetryLoadBancerInterceptor又是什么呢?
我们点LoadBalancerInterceptor进去看一下,可以看到他是实现ClientHttpRequestInterceptor的实现类,而ClientHttpRequestInterceptor是拦截我们http请求的拦截器
我们再回到我们的LoadBalancerInterceptor,我们在这里可以看到它实现了Interptor方法
进入我们所打的断点上
这就说明当我们加了服务发现的注解时,我们会被我们的ribbot服务拦截
以上 ...
SpringCloud实用篇(二)——搭建eureka服务
搭建eureka服务搭建EurekaServer注册eureka自己本身1.创建项目,引入spring-cloud-starter-neflix-eureka-server的依赖
12345<!--eureka服务端--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
2.编写启动类,添加@EnableEurekaServer注解
3.添加application.yml文件,编写下面的配置:
123456789server: port: 10086 #服务端口spring: application: name: eurekaservereureka: client: service: defaultZ ...
SpringCloud实用篇(一)
SpringCloud
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
SpringCloud与SpringBoot的版本兼任关系如下:
服务拆分及远程调用拆分注意事项
1.不同微服务,不要重复开发相同业务
2.微服务数据独立,不要访问其他微服务的数据库
3.微服务可以将自己的业务接口暴露为接口,供其他微服务调用
导入服务拆分Demo
1.导入课前资料提供的工程:cloud-demo
链接:https://pan.baidu.com/s/1QueUAbzed1NBUEUdrKskkg?pwd=ksw1提取码:ksw12.项目结构
3.将课前资料准备的sql导入数据库
链接:https://pan.baidu.com/s/1QueUAbzed1NBUEUdrKskkg?pwd=ksw1提取码:ksw1
总结
1.微服务需要根据业务 ...
Ant Design Pro V5项目无法启动问题解决
问题:
今天准备使用一下Ant Design Pro做项目,全程按照官网文档步骤来进行项目搭建,在这里我使用的node.js版本是16.15.0,npm版本是8.5.5,当我第一次ant design pro来做一个属于我自己的管理系统时突然发现ant design竟然运行不了,试n个方法后…,终于找到了解决方案
解决方案1:
删除index.md,把依赖删掉和umi文件夹删除,yarn(yarnpkg代替也行)一下,然后运行
解决方式2:
umi版本选择4(不太建议使⽤ umi 4 了,兼容性不好。可以忽略, 不影响后续的学习)
每次请求sessionId变化
引言:花了一晚上的时间,终于把问题解决了,一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。
当我写完前后端,主页面和获取当前页面信息接口后,配置了cros注解
1@CrossOrigin
我一开始使用接口文档做了后端接口测试,测试发现当访问主页面时前端能成功接受到数据,本以为皆大欢喜了,在当我接入获取当前信息接口时并测试时发现获取不到信息,我又使用apifox进行测试接口能够获取到数据,于是我使用F12进行调试。
登录:
获取当前信息:
浏览器第一次访问时会获得sessionid存在cookie中,后续访问如果有session存着,获取当前信息时会直接用,但是并没有,由上面可以知道后端重新返回了一个sessionId给前端,导致访问后端时由于sessionId不匹配,最终无法获取到登录账号的当前用户信息。
然后又经过多次调试,最终解决了这个问题,下面把方案放上来:
首先是前端,在vue的main.js中加上这个
1axios.defaults.withCredentials = true;
在后端用配置类解决跨域问题
另 ...
WebSocket
什么是消息推送(push)
推送的场景比较多,比如有人关注我的公众号,这时我就会收到一条推送消息,以此来吸引我点击打开应用。
消息推送(push)通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备APP进行的主动消息推送。
消息推送一般又分为web端消息推送和移动端消息推送。
消息推送常见方式短轮询浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器
长轮询浏览器浏览器发出ajax请求,服务器端接收到请求,会阻塞请求直到有数据或者超时才返回
SSE(服务发送事件)
SSE在服务器和客户端之间打开一个单向通道
服务器响应的不再是一次性的数据包,而是text/event-stream类型的数据流消息
服务器有数据变更时将数据流式传输客户端
websocketwebsocket是一种在基于TCP连接上进行全双工通信的协议
全双工:允许数据在两个方向上同时传输。
半双工:允许数据在两个方向上传输,但是同一个时间段内只允许一个方向传输
WebSocketWebSocket介绍Websocket是一种网络通信协议。RFC6455定义它的 ...
JDBC(下)
JDBC连接池原理首先看如下图:
编辑
图片可能有点丑!!!
(注:上面方块是在连接池里的连接资源,下面火柴人是用户)
1、池子中,我们有4个连接的资源 2、我们有5个用户 3、当我们用户需要的时候呢,就把连接给用户,此时图就成这样了
编辑
1、如上图所示,一个用户则用一个连接
2、多出来用户来并没有连接可以用
那么我们有什么好的处理方式呢???
(1)、等其他用户用完,我再用
(2)、或者重新创建一个连接给连接池,连接池再分配给我们的用户(如图)
编辑
#当用户用完之后,会把连接还给连接池,并不关闭
实例 (C3P0连接池)准备工作 : 1.去谷歌搜索JDBC C3P0,下载C3P0连接池的jar包,解压后,在lib目录下可以找到两个jar包
2.同之前导入mysql的jar包类似,将C3P0的这两个jar包拷贝到IDEA中存放jar包的目录下,右键jar包,选择“**Add as Library…**”将jar加入到项目。 加入成功后可以看到jar包下的子目录
传统方法C3P0_Demo1类
123456789101112131 ...
JDBC(中)
自定义JDBCUtil工具前面Jdbc的基本使用使用已经讲得差不多了,但如果我们经常要创建连接,关闭连接的话,那么每次都要写重复的代码,显然这样非常的麻烦,为了避免这种情况,编写了一个JdbcUtil工具类,如下。
1.db.properties文件用于放置驱动名称,连接数据库地址,数据库账号和密码。(db.properties要放在src或者默认会加载的目录下,不要放在包下面了)
12345#MySQL连接配置mysqlDriver=com.mysql.jdbc.DrivermysqlURL=jdbc:mysql://localhost:3306/jdbcstudy?characterEncoding=utf8&useSSL=falsemysqlUser=rootmysqlPwd=123456
2.创建JdbcUtil工具类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import javax.management.RuntimeMBeanE ...