自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 【springboot 中集成 knife4j 时,报错 No mapping for GET /doc.html】

​出现这种情况可能是项目中含有继承WebMvcConfigurationSupport的类,这会导致 swagger 配置失效。​

2024-01-10 16:50:17 897 1

原创 HttpClient调用接口获取数据

是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。是一个HTTP通信库、一个工具包,它只提供一个通用浏览器应用程序所期望的功能子集,与浏览器相比是没有界面的。以可扩展的面向对象的结构实现了HTTP全部的方法(GET, POST等7种方法);基于标准、纯净的java语言。实现了HTTP1.0和HTTP1.1;模拟浏览器发送HTTP请求,发送请求参数,并接收响应。通过HTTP代理建立透明的连接。支持HTTPS协议;

2023-11-28 12:46:14 649

原创 【黑马头条之项目部署_持续集成Jenkins】

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官网:Jenkins。Jenkins的特征:开源的 Java语言开发持续集成工具,支持持续集成,持续部署。易于安装部署配置:可通过 yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。

2023-08-31 23:02:50 1165

原创 【请求报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol】

javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

2023-08-30 22:52:31 2852 2

原创 【Docker拉取镜像报错:error pulling image configuration: Get net/http: TLS handshake timeout】

Caused by: com.spotify.docker.client. exceptions.DockerException: error pulling image configuration : Get net/http:TLS handshake timeout

2023-08-30 22:16:09 370

原创 【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】

Jenkins打包服务运行dockerfile里的FROM java:8报错manifest for java : 8 not fourd。这是由于Docker官方已经弃用。

2023-08-30 21:57:17 765

原创 【黑马头条之热点文章kafkaStream】

Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature。它是提供了对存储于Kafka内的数据进行流式处理和分析的功能。Kafka Stream的特点如下:Kafka Stream提供了一个非常简单而轻量的Library,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署除了Kafka外,无任何外部依赖充分利用Kafka分区机制实现水平扩展和顺序性保证。

2023-08-23 18:23:27 1459

原创 【黑马头条之xxl-Job分布式任务调度】

当前软件的架构已经开始向分布式架构转变,将单体结构拆分为若干服务,服务之间通过网络交互来完成业务处理。在分布式架构下,一个服务往往会部署多个实例来运行我们的业务,如果在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。1、并行任务调度并行任务调度实现靠多线程,如果有大量任务需要调度,此时光靠多线程就会有瓶颈了,因为一台计算机CPU的处理能力是有限的。

2023-08-11 16:57:23 470

原创 【黑马头条之app端文章搜索ES-MongoDB】

用户的搜索记录,需要给每一个用户都保存一份,数据量较大,要求加载速度快,通常这样的数据存储到mongodb更合适,不建议直接存储到关系型数据库中

2023-08-07 23:48:52 997

原创 【黑马头条之kafka及异步通知文章上下架】

消息中间件对比特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从)非常高(分布式)非常高(分布式)功能特性成熟的产品、较全的文档、各种协议支持好并发能力强、性能好、延迟低MQ功能比较完善,扩展性佳只支持主要的MQ功能,主要应用于大数据领域消息中间件对比-选择建议消息中间件建议Kafka。

2023-08-02 17:32:05 1639

原创 【黑马头条之redis实现延迟任务】

1.为什么任务需要存储在数据库中?延迟任务是一个通用的服务,任何需要延迟得任务都可以调用该服务,需要考虑数据持久化的问题,存储数据库中是一种数据安全的考虑。2.为什么redis中使用两种数据类型,list和zset?效率问题,算法的时间复杂度3.在添加zset数据的时候,为什么不需要预加载?任务模块是一个通用的模块,项目中任何需要延迟队列的地方,都可以调用这个接口,要考虑到数据量的问题,如果数据量特别大,为了防止阻塞,只需要把未来几分钟要执行的数据存入缓存即可。

2023-07-30 23:15:25 1019

原创 【序列化工具JdkSerialize和Protostuff】

java内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化, ObjectOutputStream的writeObject()方法可序列化对象生成字节数组:google开源的protostuff采用更为紧凑的二进制数组,表现更加优异,然后使用protostuff的编译工具生成pojo类。

2023-07-30 23:01:10 229

原创 【黑马头条之内容安全第三方接口】

内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。目前很多平台都支持内容检测,如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。按照性能和收费来看,黑马头条项目使用的就是阿里云的内容安全接口,使用到了图片和文本的审核。价格计算器 (aliyun.com)

2023-07-27 18:54:15 2309 2

原创 【黑马头条之文章详情-静态文件生成】

文章端创建app相关文章时,生成文章详情静态页上传到MinIO中

2023-07-27 17:10:09 265

原创 【黑马头条之图片识别文字审核敏感词】

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

2023-07-27 16:20:47 493

原创 【黑马头条之自管理敏感词】

DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。存储:一次性的把所有的敏感词存储到了多个map中,就是下图表示这种结构

2023-07-27 16:04:30 289

原创 【黑马头条之对象存储服务MinIO】

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

2023-07-17 18:53:05 477

原创 【黑马头条之freemarker入门】

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。

2023-07-17 17:54:20 397

原创 【SSM项目整合流程】

多个模块时,可以根据不同模块功能拆分开来写(例如:applicationContext-dao.xml和applicationContext-service.xml)数据库信息、文件包名和指定的数据库表要填写准确。执行成功后在对应的目录下自动生成文件。写到同一个spring.xml里。方式2:用html时。

2023-06-23 15:34:02 902

原创 【JUC并发编程】

JUC是Java Util Concurrent的缩写,是Java SE 5.0中新增的一个包,主要提供了在并发编程中使用的工具类和框架。JUC包含了许多用于多线程编程的工具类和接口,如锁、原子变量、线程池、阻塞队列等。这些工具类和接口可以帮助开发者更方便地进行多线程编程,从而提高程序的并发性能和可靠性。JUC包中的工具类和接口都是线程安全的,可以在多线程环境下安全地使用。它们的设计和实现都是基于并发编程的最佳实践和原则,可以有效地避免线程安全问题的发生。

2023-06-19 14:49:25 886

原创 【JVM快速入门篇】

内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)内存整齐度:复制算法=标记压缩算法>标记清除算法内存利用率:标记压缩算法=标记清除算法>复制算法年轻代:存活率低,使用复制算法老年代:区域大,存活率高,使用标记清除+标记压缩混合实现。

2023-06-16 18:45:34 1003

原创 【MySQL高级篇笔记-数据库备份与恢复(下) 】

数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL 数据迁移方案大致可以分为物理迁移和逻辑迁移两类。通常以尽可能自动化。

2023-06-14 11:25:31 1235

原创 【MySQL高级篇笔记-主从复制(下) 】

在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。

2023-06-14 09:49:29 859

原创 【MySQL高级篇笔记-其他数据库日志(下) 】

中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。文件名的格式是:从服务器名 -relay-bin.序号。

2023-06-13 23:26:06 1001

原创 【MySQL高级篇笔记-多版本并发控制MVCC(下) 】

MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。

2023-06-13 22:09:35 598

原创 【MySQL高级篇笔记-锁(下) 】

锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制。

2023-06-13 16:55:45 780

原创 【MySQL高级篇笔记-MySQL事务日志(下) 】

此笔记为篇部分内容那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由 锁机制实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为 重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为 回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。其实不然。REDO和UNDO都可以视为是一种恢厦操作。

2023-06-13 13:18:42 1005

原创 【MySQL高级篇笔记-事务基础知识(中) 】

一组逻辑操作单元,使数据从一种状态变换到另一种状态。保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。3、事务的ACID特性。

2023-06-09 22:31:47 628

原创 【MySQL高级篇笔记-数据库其它调优策略(中) 】

尽可能 节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)合理的结构设计和参数调整,以提高用户操作 响应的速度 。(响应速度更快)减少系统的瓶颈,提高MySQL数据库整体的性能。

2023-06-09 21:54:19 695

原创 【MySQL高级篇笔记-数据库的设计规范(中) 】

在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。规范化 vs 性能1. 为满足某种商业目标 , 数据库性能比规范化数据库更重要2. 在数据规范化的同时 , 要综合考虑数据库的性能3. 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间4. 通过在给定的表中插入计算列,以方便查询。

2023-06-09 16:57:47 3183

原创 【MySQL高级篇笔记-索引优化与查询优化(中) 】

索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键包含 SELECT 到 FROM之间查询的列。

2023-06-06 18:48:48 2437 1

原创 【MySQL高级篇笔记-性能分析工具的使用 (中) 】

官网介绍定位了查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MySQL中有专门负责优化SELECT语句的优化器模块,主要功能: 通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)。

2023-06-03 23:34:37 2792

原创 【MySQL高级篇笔记-索引的创建与设计原则 (中) 】

MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。按照 物理实现方式 ,索引可以分为 2 种:聚簇索引和非聚簇索引。按照 作用字段个数 进行划分,分成单列索引和联合索引。

2023-06-03 13:43:56 730

原创 【MySQL高级篇笔记-InnoDB数据存储结构 (中) 】

页a、页b、页c …页n这些页可以不在 物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用 二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。

2023-06-02 17:17:41 520

原创 【MySQL高级篇笔记-索引的数据结构 (中) 】

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。

2023-05-30 19:57:59 904

原创 【MySQL高级篇笔记 (上) 】

举例: 数据库a , 表b。1、如果表b采用InnoDB,data\a中会产生1个或者2个文件:如果采用模式的,数据信息和索引信息都存储在 ibdata1 中如果采用存储模式,data\a中还会产生 b.ibd 文件(此外:① MySQL5.7 中会在data/a的目录下生成。比如:字符集、比较规则。而MySQL。② MySQL8.0中。如果表b采用MyISAM,data\a中会产生MySQL5.7 中: b.frm :描述表结构文件,字段长度等。

2023-05-23 23:43:54 681

原创 【谷粒商城之秒杀服务】

秒杀具有瞬间高并发的特点,针对这一特点,必须要做限流 + 异步+ 缓存 (页面静态化)+ 独立部署。前端限流,一些高并发的网站直接在前端页面开始限流,例如:小米的验证码设计nginx 限流,直接负载部分请求到错误的静态页面:令牌算法、漏斗算法网关限流,限流的过滤器代码中使用分布式信号量rabbitmq 限流(能者多劳:chanel.basicQos(1)),保证发挥所有服务器的性能秒杀设计秒杀流程。

2023-05-23 18:46:32 1120

原创 【SpringBoot整合JWT】

1.认证方式我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。

2023-05-18 23:42:09 8366 2

原创 【谷粒商城之订单服务-支付】

内网穿透功能可以允许我们使用外网的网址来访问主机;

2023-05-15 23:33:49 733

原创 【谷粒商城之接口幂等性讨论】

接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用;比如说支付场景,用户购买了商品支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...,这就没有保证接口的幂等性。

2023-05-13 10:29:55 288

空空如也

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

TA关注的人

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