Hello World
关于本站本站是本人的私人博客,所有的博客都是经过自己学习总结得出的。可能内容质量比较差,也许您有疑惑,或者说是博客哪里写的有问题,希望各位能够谅解!!!
如果您方便,也可以添加我的qq(1326507725)或微信(https://wclspace.xyz/comment/)指出我的不足。
最近更新少说明前期写博客主要的目的是为了总结所学知识,更加偏向于学习笔记。
现在由于时间的原因,还有更重要的一点是想要输出更有质量的文章,所以更新将会不定期。我会尽量将自己的所学清晰明了,通俗易懂的展现给大家。
3-4月面试, 所以没有太多精力更新。
分享一些话
无人扶我青云志,我自踏雪至山巅。倘若命中无此运,孤身亦可登昆仑
喧闹任其喧闹,自有我自为之。我自风情万种,与世无争。别人对你的打分是他对你的看法,他不了解你到时候,你又何必去在乎他的打分呢?关键的是你给你自己打几分。
这世上的事,认真不对,不认真也不对,执着不对,一切视为空气也不对。平平常常自自然然,如上山拜佛,见了佛像就磕头,磕了头,佛像还是佛像,你还是你,生活之累,就该少下来了
在这人世间,有些路是非得单独一个人去面对,单 ...
商品下单对接支付宝/微信支付
需求描述之前我们实现了ChatGPT项目的核心问答业务, 接着为了实现项目的商业化服务和引流, 对接微信公众号实现用户扫码关注、获取验证码登录等一系列的用户引入公众号进行登录。 这样的实现让我们的项目接入微信的广大用户群体,对于以后项目的商业化发展奠定了基调。接着, 为了项目不让有心人恶意利用以及我们自己的apiKey的额度也是有限的, 所以进行了一系列的规则过滤操作。 这样的规则过滤让我们的项目向商业化的道路上又迈进了一步。但是, 虽然我们做了用户限流限频的操作,但是还是相当于免费的产品 。这可不是一个商业化产品应该具有的操作。 如果用户后续还想使用我们的产品, 那当然免不了给钱咯。 所以, 本章节我们通过对于ChatGPT核心业务的扩展,实现了用户支付下单的操作。 并且, 基于DDD架构, 让我们的项目变得可拓展性非常好。我们都知道ChatGPT的更新迭代是非常快的, 所以项目的可拓展性变得至关重要了。 所以使用DDD架构的优点就体现的一览无余。
项目支付领域逻辑
用户下单支付用户选择商品下单,之后生成一个支付URL,用户扫码支付。再接收到支付成功回调后,把用户购买的订单发货【额度 ...
实战抽象工厂模式
抽象工厂模式和工厂方法模式虽然主要的目的都是为了解决接口选择问题。 但是在实现上, 抽象工厂是一个中心工厂, 它能够创建其他的工厂。
业务背景介绍
随着业务超过预期的快速发展,系统的负载能力也要随着跟上。原有的单机 Redis 已经满足不了系统需求。这时候就需要更换为更为健壮的Redis集群服务,虽然需要修改但是不能影响目前系统的运行,还要平滑过渡过去。随着这次的升级,可以预见的问题会有;
很多服务用到了Redis需要一起升级到集群。
需要兼容集群A和集群B,便于后续的灾备。
两套集群提供的接口和方法各有差异,需要做适配。
不能影响到目前正常运行的系统。
单机的Redis服务操作1234567891011121314151617181920212223242526272829303132/** * 单机Redis服务操作 */public class RedisUtils { private Logger logger = LoggerFactory.getLogger(RedisUtils.class); private Map<String, St ...
策略模式+工厂服务实现规则过滤
策略模式是干什么的 、怎么用 ?定义策略模式(Strategy Pattern)是一种行为设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户,从而达到算法的变化不会影响到客户。这种模式涉及到三个角色:
上下文(Context):持有一个策略类的引用,最终给客户端调用。
策略(Strategy):定义所有支持的算法的公共接口。Context使用这个接口来调用某个Concrete Strategy定义的算法。
具体策略(Concrete Strategy):实现Strategy接口的具体算法。
使用场景
当你想让一个对象有多种行为,而且想避免使用大量的条件语句时,可以使用策略模式。它提供了一种用条件语句以外的另一种选择,当你需要根据不同条件执行不同行为时特别有用。比如,一个排序的类,它支持多种排序算法,如冒泡排序、选择排序等,可以通过策略模式来实现这些算法的互换。
还有就是模拟多种营销类型的时候可以使用策略模式
营销类型实现的策略模式的简图
实现步骤以下是使用Java实现策略模式的基本步骤:
定义策略接口:这个接口声明了算法的方法 ...
浅谈SpringMVC
浅识SpringIOC
小小了解一下 Spring 家族
官网地址:spring.io/
项目列表:spring.io/projects
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首 次在 Apache 2.0 许可下发布。
Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应 用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践
通过上面的粗略介绍 ,我们可以简单的了解一下Spring家族的厉害之处下面就是我们今天学习的重点
Spring IOC( Inversion of Control )反转控制
First : ...
Kubernetes RUSH
基本概述Kubernetes是容器集群管理系统(简单来说就是一个开源的、用于管理云平台中多个主机的容器化应用),是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。(docker compose管理的是单机的, 并不是容器化的)
K8S的目标是: 让部署容器化的应用简单并且高效。k8s提供了应用部署、规划、更新、维护的一种机制。
几种不同时代的部署方式![image.png]/images/1710744258125-9bc0cf2f-ac2b-4da2-b0b1-1b63a0816fc4.png)
传统的部署方式是直接部署在操作系统上, 就像我们现在开发阶段一样, 直接将项目在操作系统上进行运行。 (但是存在的问题就是环境不隔离, 导致多个应用同时使用系统中的共享资源而发生的冲突问题。)
接着就进入了虚拟化的部署方式, 虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机(VM)。 虚拟化能使应用程序在不同 VM 之间被彼此隔离,且能提供一定程度的安全性, 因为一个应用程序的信息不能被另一应用程序随意访问。
每个 VM 是一 ...
缓存穿透、雪崩、击穿三者如何解决
业务场景: 生活点评项目的商品缓存项目地址: https://github.com/Ray2310/Evaluate-System
商品缓存在客户端与数据库之间加上一个Redis缓存,先从Redis中查询,如果没有查到,再去MySQL中查询,同时查询完毕之后,将查询到的数据也存入Redis,这样当下一个用户来进行查询的时候,就可以直接从Redis中获取到数据
缓存模型和思路标准的操作方式就是查询数据库之前先查询缓存,如果缓存数据存在,则直接从缓存中返回,如果缓存数据不存在,再查询数据库,然后将数据存入Redis。
缓存的更新策略三种策略的比较
场景**低一致性需求: **使用内存淘汰机制,例如店铺类型的查询缓存高一致性需求: 主动更新,并且使用超时剔除作为兜底方案。例如店铺的详情查询
数据库和缓存不一致带来的问题
由于我们的缓存数据源来自数据库,而数据库的数据是会发生变化的,因此,如果当数据库中数据发生变化,而缓存却没有同步,此时就会有一致性问题存在,其后果是
用户使用缓存中的过时数据,就会产生类似多线程数据安全问题,从而影响业务,产品口碑等
那么如何解决这个问题呢?有如下 ...
ChatGPT模型请求参数学习
请求响应参数详情:
如果刚开始进行开发, 只用对必须携带的参数进行测试, 等项目熟练了之后再将所有的参数都进行测
查看可用的请求正文 : curl https://api.openai.com/v1/models \ -H “Authorization: Bearer $OPENAI_API_KEY”
请求正文参数(ChatCompletionRequest)请求url: POST https://api.openai.com/v1/chat/completions
messages (array,**必须)**:到目前为止对话中的消息列表。
12345有不同的消息对象, 一般的对话消息: 可以有三个参数,System、User、暂时只研究了Tool、Assistant、Function- content (string,必需):系统消息的内容。- role (string,必需):消息作者的角色,在这种情况下是system。- name (string,可选):参与者的可选名称。为模型提供区分相同角色参与者的信息。如果有其他的模型,
model (string,必须):要使 ...
初识Nginx
正向代理和反向代理的区别
简而言之,正向代理隐藏的是客户端,服务于客户端,而反向代理隐藏的是服务器,服务于服务器。
正向代理
服务对象:正向代理的服务对象是客户端。它允许客户端通过代理来访问互联网上的资源。正向代理代表客户端去获取信息。
使用场景:常用于客户端绕过网络限制(比如访问地理上受限的网站)、进行匿名访问、或在客户端和互联网之间提供缓存服务。
工作方式:客户端配置代理服务器,当客户端发送请求时,请求首先发送到正向代理服务器,然后代理服务器代表客户端向目标服务器发送请求,获取资源后再转发给客户端。
反向代理
服务对象:反向代理的服务对象是服务端。它接收互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端。
使用场景:常用于负载均衡、加密和SSL加速、缓存静态内容、压缩内容、减少服务器直接暴露在外的安全风险等。
工作方式:客户端对某个网站发起请求,反向代理服务器接收请求后,将请求转发到内部服务器,并将服务器的响应结果返回给客户端。对于客户端来说,它感觉就像是直接与反向代理服务器进行通信一样。
Nginx的常用功能Ng ...
2023,我这一年
写在前面
大家好 ,我是Rayce。
这篇文章是我对于自己在2023这一年经历的事,包括学习、生活上的一些事情的回忆和总结。
关于学习
关于写博客我想说
转眼2023年已经到年底了, 从开始正式的使用hexo来搭建博客网站到现在的写博客, 正好一年。 还记得当初最开始的时候 ,年初1.1号, 先是从自己曾经的CSDN和稀土掘金上的内容搬到这里, 然后再进行修改。接着就是总结每日的学习总结, 干了什么就写什么, 虽然内容看着很多, 但是我知道内容质量很低, 所以我就将自己在CSDN和稀土掘金上发布的文章全部删除, 因为我认为自己的水平并没有达到能够输出文章让别人阅读的地步。当然还有一个最重要的原因就是我认为自己在那种网站上写文章之后自己的心态完全发生了变化, 已经完全不是为了学习, 而是关注每天的文章阅读量、点赞量、转发量、收藏数等等。 这种虚荣心作祟的感觉让我不在沉醉于技术, 而是“妄想成名”。意识到这点之后我立马将里面的内容删除,账号注销, 内容全部搬到这里, 所以能够看到这篇文章的人应该是很少数的,我并未有过任何想要宣传的想法和行动。“花香蝶自来”这句话时刻指明着我前进的 ...