自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 问答 (1)
  • 收藏
  • 关注

原创 VO、PO、DTO的区别

值对象,用于视图层,它的作用是把某个指定页面(或组件)的所有数据封装起来。:持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。:数据传输对象,这个概念来源于的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。

2024-05-12 20:03:11 137 1

原创 什么是分库分表

分表就是对单表的数据进行拆分,可以是垂直拆分,也可以是水平拆分。垂直分表是对数据表列的拆分,把一张列比较多的表拆分为多张表。举个例子:我们可以将用户信息表中的一些列单独抽出来作为一个表。水平分表是对数据表行的拆分,把一张行比较多的表拆分为多张表,可以解决单一表数据量过大的问题。举个例子:我们可以将用户信息表拆分成多个用户信息表,这样就可以避免单一表数据量过大对性能造成影响。水平拆分只能解决单表数据量大的问题,为了提升性能,我们通常会选择将拆分后的多张表放在不同的数据库中。

2024-05-12 16:22:36 810

原创 什么是读写分离?

读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会进行数据同步,以保证从库中数据的准确性。这样的架构实现起来比较简单,并且也符合系统的写少读多的特点。

2024-05-11 11:27:26 550

原创 乐观锁、悲观锁、互斥锁、读写锁

乐观锁和悲观锁是两种不同的锁机制,用于在多线程环境下解决资源竞争问题。互斥锁和读写锁是两种常见的锁类型,它们都可以用来实现乐观锁或悲观锁。

2024-05-10 19:50:52 447

原创 Spring AOP浅谈

AOP技术利用一种称为“横切”的技术,解剖封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,这样就能减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。

2024-05-10 16:51:25 251 1

原创 Spring框架中的单例Bean是线程安全的吗?

但是,在多线程操作中如果需要对Bean中的成员变量进行数据更新操作,这样的Bean称之为有状态Bean,所以,有状态的单例Bean就可能存在线程安全问题。因此,Spring容器中的Bean其实都是根据我们自己写的类来创建的实例。3、在类中定义 ThreadLocal 的成员变量,并将需要的可变成员变量保存在 ThreadLocal 中,ThreadLocal 本身就具备线程隔离的特性,这就相当于为每个线程提供了一个独立的变量副本,每个线程只需要操作自己的线程副本变量,从而解决线程安全问题。

2024-05-10 11:06:05 401

原创 java泛型浅谈

Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。

2024-05-09 19:12:11 453

原创 内网穿透使用教程

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

2024-05-08 10:45:42 279

原创 Shiro + JWT 进行登录验证

Shiro是一个关于java的安全框架,可以实现用户的认证和授权,简单易用。首先导入依赖在 doGetAuthenticationInfo 方法中,使用 jwtUtil.isVerify(jwt) 方法做验证处理。这是一个自定义的 Filter 在 onAccessDenied 获取 request 请求的 token 入参信息,之后调用 getSubject 进行验证处理。这部分是一个设置过滤器和拦截处理,把 jwt 的过滤器设置上,之后拦截指定的 /verify 方法。

2024-05-07 19:11:55 247

原创 RateLimiter 限流 —— 通过切面对单个用户进行限流和黑名单处理

关于登录的安全性管理有较多的手段,包括;设备信息、IP信息、绑定的信息、验证码登各类方式。不过在一些网页版的登录中,如果有人想办法把你的验证码给我,我就可以登录你的账户,查看你的数据。对于一些不法分子通过让你进入某些应用的录屏会议后(XXX退货返现),就能拿到你的验证码,并做登录操作。还有一些是完全流氓式做法,就玩命的一些快递📦手机号+验证码频繁的撞接口,也是有概率成功登录的。因此,为了避免这种情况,我们还需要思考如何防范。

2024-05-04 16:21:31 235 1

原创 java注解浅述

Java 5之后可以在源代码中嵌入一些补充信息,这种补充信息称为注解(Annotation)。注解并不能改变程序运行的结果,不会影响程序运行的性能。有些注解可以在编译时给用户提示或警告,有的注解可以在运行时读写字节码文件信息。无论是哪一种注解,本质上都是一种数据类型,或者一种接口类型。到Java 8为止Java SE提供11种内置注解。其中有 5 个是基本注解,它们来自于java.lang包。

2024-05-04 15:53:41 454

原创 订单支付异常情况处理

正常情况下我们选择商品然后购买,完成支付后就发货了,但是因为大多采用的是http协议,如果出现了网络异常等情况就会掉单之类的,比如顾客付完钱了但是订单状态并没有改变,还有就是支付成功后回调失败,导致没有发货。对于真正的服务,这些异常情况我们也得考虑进去。那么,这些就都是可能出现的异常流程。虽然概率很低,但随着使用规模的增加,很低概率的问题,也会产生较大规模的客诉问题。1. 掉单补偿,检测未接收到或未正确处理的支付回调通知(即用户已经扫码支付成功但是订单状态没有改变)因此,我们通过使用定时任务完成补偿。

2024-05-03 19:43:51 335

原创 统一异常处理

我们需要定义服务中可能抛出的自定义异常类。这些异常类可以继承自,并携带有关异常的相关信息。即可理解为局部异常,用于特定的业务处理中异常。手动埋点抛出。super();

2024-05-02 17:07:19 225

原创 Apollo Dreamview+之播放离线数据包

您可以通过包管理和源码两种方式快速体验离线数据包播放操作。其中进入 docker 环境和启动 dreamview+ 的命令有所区别,请您按照命令进行操作。启动 Dreamview+ 之后,进入 Dreamview+ 界面,您可以选择默认模式,也可以选择其他模式播放数据包。您可以通过包管理或源码方式启动 Dreamview+,请您选择一种方式按照相应命令启动 Dreamview+。完成 Dreamview+ 插件安装,参见 Studio 插件安装。中先下载需要的数据包。在 Dreamview+ 中。

2024-04-30 15:28:34 344 1

原创 Apollo Dreamview+之Studio插件安装

进入 Dreamview+,刷新页面,左下角出现头像和资源中心按钮,即插件同步成功,可以开始资源下载了。之后在您的 docker 环境中运行该指令,插件同步(Dreamview+的登录)就完成了。,选择 Apollo 最新版本,并单击。

2024-04-30 15:23:15 165 1

原创 Apollo应用实践之Dreamview +快速使用

Dreamview+ 是 Apollo 内置的一个 web 应用程序,为开发者提供各个自动驾驶模块的可视化输出界面,如规划路径、定位信息、底盘状态等。在自动驾驶车辆行进过程中,通过 Dreamview+ 可以对车辆硬件、各自动驾驶模块的状态进行实时监测,利用人机交互接口对车辆及各模块进行启停等控制操作,使用 PnC 监视器等调试工具定位问题,帮助开发者对自动驾驶过程有更加全面的掌控。本实验将使用 Dreamview+ 播放并分析自动驾驶离线数据包。

2024-04-30 11:38:16 478

原创 Apollo安装之包管理安装方式完全版教程

Apollo某些模块需要GPU的支持才能够编译、运行(例如感知模块),如果您需要使用此类模块,需要安装Nvidia显卡驱动以及Nvidia container toolkit以获取GPU支持。显卡驱动和CUDA版本兼容性,由于nvidia的硬件更新的很快,因此会遇到显卡驱动和CUDA版本不兼容的情况,以下为我们测试的畅通链路。本小节以默认模式为例。‍注意:如果您想要循环播放数据包,添加 -l,如果不循环播放数据包,则不需要添加 -l。的配置,可以直接删除,宿主机上的apollo源配置仅用于安 装。

2024-04-30 11:14:59 857

原创 Apollo安装之源码安装

Apollo某些模块需要GPU的支持才能够编译、运行(例如感知模块),如果您需要使用此类模块,需要安装Nvidia显卡驱动以及Nvidia container toolkit以获取GPU支持。显卡驱动和CUDA版本兼容性,由于nvidia的硬件更新的很快,因此会遇到显卡驱动和CUDA版本不兼容的情况,以下为我们测试的畅通链路。进入 Dreamview+ 界面,您可以选择默认模式,也可以选择其他模式播放数据包。‍注意:如果您想要循环播放数据包,添加 -l,如果不循环播放数据包,则不需要添加 -l。

2024-04-30 10:52:36 473

原创 Apollo 自动驾驶开放平台

Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套 属于自己的自动驾驶系统。开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、成熟、安全的自动驾驶技术和数据开 放给业界,旨在建立一个以合作为中心的生态体系,发挥百度在人工智能领域的技术优势,为合作伙伴赋能,共同促进自动驾驶产业的发 展和创新。

2024-04-30 10:11:53 333

原创 DDD架构浅谈

DDD 是领域驱动设计(Domain-Driven Design)的缩写,这是一种主要软件开发方法,由 Eric Evans 在他的书《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)中首次提出。

2024-04-29 22:26:51 294 1

原创 MVC架构简述

MVC 是一种非常常见且常用的分层架构,主要包括;M - mode 对象层,封装到 domain 里。V - view 展示层,但因为目前都是前后端分离的项目,几乎不会在后端项目里写 JSP 文件了。C - Controller 控制层,对外提供接口实现类。DAO 算是单独拿出来用户处理数据库操作的层。1. 耦合性低2. 重用性高3. 生命周期成本低。

2024-04-29 21:15:54 318 1

原创 单点登录简述

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。如下图,用户只需要认证一次,便可以在多个拥有访问权限的系统中访问。

2024-04-28 11:36:14 576

原创 应用监控(Prometheus + Grafana)

可用于应用监控的系统有很多,有的需要埋点(切面)、有的需要配置Agent(字节码增强)。现在使用另外一个监控系统 —— Grafana。这套监控主要用到了 SpringBoot Actuator + Prometheus + Grafana 三个模块组合的起来使用的监控。非常轻量好扩展使用。Actuator - 数据上报、Prometheus - 数据采集、Grafana - 数据展示本章节的内容主要为代码中的配置和监控的配置。

2024-04-27 23:00:33 1159 3

原创 为网站添加百度统计

网站做完上线了,那么怎么看网站有多少的 PV、UV、IP、跳出率、访问时长,以及访问网站的来源和入口呢。因为只有我们能看到这些数据,才能更好的管理和运营自己的站点,并且你后续所有的扩容评估、峰值预估也都会依赖于一个网站的 PV、UV 等数据。在layout 的 head 中,添加 script 脚本。也就是把百度统计的代码,放到这里。你在使用的时候,只需要替换js后面的唯一ID即可。百度统计、友盟统计,还有谷歌的工具,都是可以的。我们需要复制这里的信息,并在 chatgpt-web 工程中配置上。

2024-04-27 15:28:20 427

原创 MySQL事务简述

举个例子:假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作,这两个操作必须都成功或者都失败。事务会把这两个操作就可以看成逻辑上的一个整体,这个整体包含的操作要么都成功,要么都要失败。这样就不会出现小明余额减少而小红的余额却并没有增加的情况。

2024-04-25 15:35:42 705

原创 MySQL索引详解

索引是存储引擎实现的,不同索引的存储引擎不一定相同。优点:查询效率高,磁盘I/O次数低(B+树IO次数只有3~4次);每行数据索引唯一;联合、分组、排序查询效率高;缺点:创建索引耗费时间;维护索引耗费时间,每次增删改时要维护索引;索引占用磁盘空间,索引文件可能比数据文件更占空间。例如innoDB的1个聚簇索引和多个非聚簇索引加起来肯定比原数据文件占的内存多。索引存在磁盘,可以分段加载数据页到内层。联合索引查询时,没有遵循最左前缀原则将会导致索引不起作用,从而出现严重的性能问题。

2024-04-25 11:36:32 785

原创 mysql索引失效的原因以及解决办法

mysql索引失效的原因以及解决方法

2024-04-23 21:42:56 141

原创 微信扫码登录后续

参考接口规范中“请求获取授权码” 定义接收微信下发的授权码接口,@Slf4jlog.debug("微信扫码回调,code:{},state:{}",code,state);//请求微信申请令牌,拿到令牌查询用户信息,将用户信息写入本项目数据库//暂时硬编写,目的是调试环境定义微信认证的service/*** @description 微信扫码认证*/@Slf4j@Autowired@Override//账号//返回空表示用户不存在。

2024-04-23 15:17:47 691

原创 java实现chatGPT SDK

搭建一个 ChatGPT-SDK 组件工程,专门用于封装对 OpenAI 接口的使用。由于 OpenAI 接口本身较多,并有各类配置的设置,所以开发一个共用的 SDK 组件,更合适我们在各类工程中扩展使用整个流程为:以会话模型为出口,,驱动整个服务的调用链路。并对外提供会话工厂的创建和使用。通过工厂模式,开启一个使用okhttp3封装的OpenAi会话服务,进行流程的调用。同时这里还包括请求拦截的处理,因为我们需要对http请求设置一些必要的参数信息,如:apiKey、token。

2024-04-19 19:49:14 1067 1

原创 java调用讯飞星火认知模型

前往讯飞开发平台选择产品,获取appId、apiKey、APISecret,这里我选择的是v3.0模型。

2024-04-19 17:21:21 415

原创 python入门指南

Python是一种流行的编程语言,易于学习且功能强大。

2024-04-17 23:04:54 376

原创 nginx安装在linux上

nginx主要用于反向代理和负载均衡,现在简单的说说如何在linux操作系统上安装nginx。在sbin文件夹下,cd /usr/local/nginx/sbin。第二步:便于管理,创建文件夹保存,/root/java。配置nginx:./configure。第二步: 下载nginx,访问官网,第二步:解压包,tar ...运行nginx,./nginx。第六步:编译安装nginx。第八步:查看nginx状态。第七步:运行nginx。出现下面画面表示成功。

2024-04-17 22:15:43 292

原创 stable diffusion本地部署教程

Stable Diffusion是一种生成模型,用于根据给定的文本输入生成图像。从GitHub或其他可靠来源下载预训练的Stable Diffusion模型文件(.pth或.pt)。将模型文件放在一个方便访问的目录中。替换为您想要生成的图像的描述。例如,要生成一张描绘“一只猫坐在沙发上”的图像,您可以使用。您可以根据需要调整输出图像的宽度、高度和比例。4. 运行代码 在命令行中,导航到包含。然后,使用以下命令运行代码,将。2. 获取预训练模型。这将在当前目录下生成一个名为。

2024-04-15 22:55:02 504 2

原创 文心一言VSchatGPT4

GPT-4似乎更具优势。在一项测试中,文心一言生成的代码运行结果是错误的,而GPT-3.5和GPT-4都给出了正确的答案。此外,GPT-4在计算耗时上也比文心一言更短。,例如在故事的完整度和情节吸引力方面,文心一言表现得更加符合指令,情节更吸引人。这可能得益于其模型在训练时对中文语境的深入理解和优化。文心一言和GPT-4各有优势,具体表现在不同的测试场景下。

2024-04-14 22:34:48 958 1

原创 docker入门

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Mac、Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。总之它加快构建、共享和运行现代应用程序的速度。

2024-04-08 20:42:54 423 1

原创 【无标题】

以上是一些常用的开发工具,选择适合自己项目需求和工作流程的工具是非常重要的。

2024-04-05 22:02:01 448 1

原创 spring和springboot的区别

而 Spring Boot 使用了快速启动器(starter)的概念,可以根据项目类型和需求选择相应的启动器,它会自动处理依赖关系和版本管理。配置:在 Spring 中,需要进行大量的 XML 配置,尤其是在配置数据源、事务管理等方面。而 Spring Boot 采用了约定优于配置的原则,通过注解和默认配置,大大减少了项目的配置工作,提供了一种快速启动和运行的方式。而 Spring Boot 提供了一些自动化的监控和管理功能,可以通过简单的配置启用,例如 Spring Boot Actuator。

2024-03-27 23:06:09 963 5

原创 微信扫码登录之接入规范

为了提高用户体验,很多网站有扫码登录的功能,如:微信扫码登录、QQ扫码登录等。扫码登录的好处是用户不用输入账号和密码,操作简便,另外一个好处就是有利于用户信息的共享,互联网的优势就是资源共享,用户也是一种资源,对于一个新网站如果让用户去注册是很困难的,如果提供了微信扫码登录将省去用户注册的成本,是一种非常有效的推广手段。微信扫码登录其中的原理正是使用了第三方认证,如下图:下面以学成在线为例子学习微信扫码登录。

2024-03-25 21:50:33 960 4

原创 支付宝支付

想对接支付,就需要申请对应的支付渠道。否则你只能模拟一个支付和支付成功,来走完自己的流程。目前国内主要有微信支付和支付宝支付两种主流支付方式,但是微信支付不支持个体户,因此这里选择支付宝的沙箱支付。其实支付流程基本如下图所示:现在可以先去支付宝开发平台申请资质,https://open.alipay.com/develop/manage然后直接下载手机版沙箱支付宝。

2024-03-24 19:07:46 461 18

原创 RabbitMQ使用教程

RabbitMQ 是一个可靠且成熟的消息传递和流代理,易于部署在云环境、本地和本地计算机上。它目前被全球数百万人使用。通过确认消息传递和跨集群复制消息的功能,您可以使用 RabbitMQ 确保您的消息是安全的。

2024-03-23 15:34:11 636 17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除