自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringBoot+Spring AI Alibaba接入RAG应用实践笔记

SpringBoot+Spring AI Alibaba接入RAG应用实践笔记

2025-03-21 11:18:41 401

原创 一文读懂Java线程池之线程池优点、使用方法、参数含义及线程池运转机制

如果满了,则把任务放到阻塞队列中,等待有空闲的核心线程来执行任务。注意到构建线程池的参数中有keepAliveTime+时间单位这两个参数,这两个参数正是用于回收非核心线程用的,当非核心线程没任务了,空闲时间达到keepAliveTime配置的值后将会被线程池销毁以回收一些系统资源。线程池就是为了解决上述问题出现的,解决问题的思路很清晰,就是创建好一定数量的线程,有任务来了就用这些线程来执行任务,任务过多把池里面的线程都占用了就放队列排队等候其他任务执行,一旦有空闲线程就可以从队列里面取出任务并执行。

2024-07-17 09:23:36 1219

原创 一文读懂Java并发编程基础知识

并发是指在某个时间段内,多任务交替处理的能力。比如说,你有一台单核心CPU电脑,注意必须是以单核心来理解下面的例子才是正确的。你可以利用电脑边听音乐,边写PPT,还能随时斗上一盘地主。这些事情表面上看起来就是同一时刻在执行多个任务。在同一应用上又可以做多个事情,比如你玩斗地主,程序在播音乐,在处理各个玩家的出牌,还要处理玩家有聊天界面上相互骂娘的任务。在单核CPU电脑上能“同时”处理多个事情,这个叫并发。假设你是多核心电脑,你在电脑时同时进行多个任务,此时叫并行。

2024-07-16 10:07:19 950

原创 Java并发编程之如何正确的停止线程

本文主要介绍在Java中如何通过通知与协作来正确的停止线程,错误的停止线程方法会导致数据损坏、数据不一致等严重情况。

2024-07-16 10:05:38 1070

原创 代理设计模式之JDK动态代理&CGLIB动态代理原理与源码剖析

代理设计模式简介,JDK动态代理简介,原理,CGlib动态代理简单原理与源码剖析

2024-07-15 10:58:53 1509

原创 一文读懂Java线程池之线程复用原理

在Java中,我们正常创建线程执行任务,一般都是一条线程绑定一个Runnable执行任务。而Runnable实际只是一个普通接口,真正要执行,则还是利用了Thread类的run方法。这个rurn方法由native本地方法start0进行调用。我们看Thread类的run方法实现/*** */@Overrideif (target!= null) {很明显,Thread类的run方法就是使用构造Thread类传入来的Runnable对象,执行Runnable的run方法。

2024-07-15 10:57:53 1645

原创 一文读懂Java多线程并发之内存模型

Java内存模型(Java Memory Model)描述了Java编程语言中的线程如何与内存进行交互,是和多线程相关的一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。有了这些规范,即便同一个程序在不同操作系统的虚拟机上运行,得到的程序结果也是一致的。如果没有这些规范,不同操作系统的虚拟机对相同关键字的解释不一致,这是不可接受的。JMM旨在解决 CPU 多级缓存、处理器优化、指令重排等导致的结果不可预期的问题。

2024-07-13 11:16:43 736

原创 一文读懂Java线程安全

Java Concurrency In Practice》对线程安全的定义如下:当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步及在调用方代码不作其他的协调,这个类的行为仍是正确的,那么称这个类是线程安全的。简单理解就是,多线程环境下访问这个对象,我们不必考虑对象里面方法间协调的问题,对象的行为依然正确。通常这些类自己已经做好了同步等工作,比如,并发访问对象的共享变量时加上锁等同步机制。

2024-07-13 11:16:24 923

原创 一文读懂Java多线程优点与代价

本文主要介绍多线程的优点与缺点

2024-07-13 11:14:08 678

原创 Java并发编程之多线程实现方法

本文探讨Java实现多线程的各种方式及其原理源码探索。

2024-07-13 09:59:35 438

原创 一文读懂Java线程池之自定义线程池、设置合适的线程数量、线程池阻塞队列、线程拒绝策略

在上篇我们学习了线程池各个参数的含义,线程池任务处理流程,使用线程池的好处等内容,本篇我们学习如何创建一个适合我们业务的线程池。为此,我们有必要先学习一下如何大概确定我们线程池核心线程数、怎么设置阻塞队列的类型与大小、当线程池没有能力处理任务了该如何使用拒绝策略等内容。

2024-07-12 11:33:09 2262

原创 一文学会用RKE部署高可用Kubernetes集群

RKE全称Rancher Kubernetes Engine,是一个快速的,多功能的 Kubernetes 安装工具。通过RKE,我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统,包括 MacOS、Linux 和 Windows。K8S原生安装需要的先决条件较多,比如说需要预安装kubeadm,kubectl,配置网络等一系列繁琐的工作。而使用RKE安装k8s,基本上只要docker版本是当前RKE版本支持的即可

2024-07-12 09:30:07 1414

原创 一文学会用Helm部署rancher 高可用集群

Helm部署rancher 高可用集群,使用自签SSL证书方式和使用官方cert-manager两种高可用搭建方式

2024-07-12 09:29:49 1909

原创 Apache Hadoop完全分布式集群搭建指南

本文主要使用centos7搭建apache hadoop完全分布式集群,详细介绍了Hadoop集群搭建、配置,Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置。另外介绍了hadoop集群单节点启动或集群批量启动脚本的使用。搭建完毕将启动HDFS的3节点DataNode、一节点NameNode、一节点SecondaryNameNode。而Yarn集群将启动三节点NodeManager、一节点ResourceManager。最后,文章给出了上传下载、分布式计算测

2024-07-11 10:22:38 1930

原创 Harbor企业docker私服安装及SSL安全访问配置

详细介绍harbor docker私服的搭建及SSL安全访问配置。

2024-07-10 10:36:32 1451 9

原创 Apache Hadoop之历史服务器&日志聚集配置

介绍了Apache Hadoop的分布式集群环境搭建,并测试了MapReduce分布式计算案例。但集群历史做了哪些任务,任务执行日志等信息还需要配置历史服务器和日志聚集才能更好的查看。

2024-07-10 09:27:44 606

原创 Redis数据结构-整数集合

整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。举个例子, 如果我们创建一个只包含五个元素的集合键, 并且集合中的所有元素都是整数值, 那么这个集合键的底层实现就会是整数集合:​"intset"在这一章, 我们将对整数集合及其相关操作的实现原理进行介绍。

2024-07-08 10:13:31 959

原创 Maven Nexus3 私服搭建、配置、项目发布指南

用nexus搭建与配置maven私服指南

2024-07-08 10:10:41 1257 1

原创 Redis数据结构-字典的实现

字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中, 一个键(key)可以和一个值(value)进行关联(或者说将键映射为值), 这些关联的键和值就被称为键值对。字典中的每个键都是独一无二的, 程序可以在字典中根据键查找与之关联的值, 或者通过键来更新值, 又或者根据键来删除整个键值对, 等等。

2024-07-05 13:25:37 816

原创 Redis数据结构-链表实现

链表提供了高效的节点重排能力, 以及顺序性的节点访问方式, 并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构, 链表内置在很多高级的编程语言里面, 因为 Redis 使用的 C 语言并没有内置这种数据结构, 所以 Redis 构建了自己的链表实现。链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现。

2024-07-05 13:23:27 854

原创 Apache Hadoop文件上传、下载、分布式计算案例初体验

通过上篇,我们搭建了完整的Hadoop集群,此篇我们简单通过集群上传和下载文件,同时测试分布式worldCount案例。后续的篇章再对分布式计算、分布式存储作更深的理解。

2024-07-04 10:03:11 607

原创 计算机基础-原码、反码、补码

计算机世界里只有0和1,进位时逢二进一,借位时借一当二,称之为二进制。其物理表现形式可能是三极管的通电与断电、也可能是CPU的低电平与高电平。一个数在计算机中的二进制表示形式称之为机器数,机器数是带符号的,最高位表示符号,0为正数,1为负数。通过二进制转换为十进制的数为真值。

2024-07-03 09:42:34 1162

原创 Redis数据结构-字符串对象(SDS)

Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。

2024-07-03 09:40:20 891

原创 Helm部署mysql k8s主从集群

helm是k8s的包管理器,使用helm部署能简化部署过程中需要编写的Yaml文件,本文使用bitnami的helm仓库部署mysql一主二从集群。

2024-07-01 13:56:44 2888

原创 Helm部署高可用rabbitmq k8s 镜像集群

使用helm部署rbbitmq k8s 高可用镜像集群,镜像集群可以对rabbitmq服务进行服务和数据的容灾。随意连接一个节点,创建队列和交互机,把数据发送到队列,所有节点将同步队列的数据,避免在消费数据前数据丢失的风险。然后,如果有消费者对数据进行消费,所有节点对应的数据也将被清理。

2024-07-01 13:55:38 2530 3

原创 k8s部署mongodb副本高可用集群

mongodb集群部署分两种情况,一是只部署副本机制,不使用分片,另一种情况是使用分片集群。使用分片的情况下会略复杂,但基本部署方法和只部署副本的方法是差不多的,只不过是多了一些角色。这里只介绍部署副本集群到k8s集群。

2024-06-29 08:58:41 1805 2

原创 Helm部署高可用redis k8s分片集群

使用helm部署redis分片高可用k8s集群,介绍redis分片集群搭建过程及服务暴露、客户端使用等内容

2024-06-29 08:55:38 634

原创 虚拟机类加载机制之双亲委派机制

本文主要介绍JVM的类与类加载器、双亲委派机制、自定义类加载器,破坏双亲委派机制等内容。

2024-06-28 16:59:04 827

原创 虚拟机类加载机制之类加载过程

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。

2024-06-28 16:55:21 753

原创 虚拟机字节码执行引擎之运行时栈帧结构

执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。在《Java虚拟机规范》中制定了Java虚拟机字节码执行引擎的概念模型,这个概念模型成为各大发行商的Java虚拟机执行引擎的统一外观(Facade)。

2024-06-27 09:37:09 842

原创 一文读懂Oauth2四种客户端授权模式

Oauth是一个关于授权(authorization)的开放网络工业标准,允许用户授权第三方应用访问用户存储在其它应用上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本。本文主要介绍Oauth2四种授权模式,包括授权码模式、简化模式、密码模式、客户端模式。

2024-06-27 09:33:39 2874

原创 mysql事务型存储引擎之InnoDB的ACID模型

ACID模型是一套重视业务数据和关键应用的可靠性的数据库设计原则。Mysql的InnoDB存储引擎严格遵循ACID模型,这样数据不会因软件崩溃和硬件故障等异常情况导致损坏。当你依赖于ACID特性时,你不需要重新发明一致性检查和故障恢复机制的轮子。如果你有额外的软件保障措施、超可靠的硬件,或者能够容忍少量数据丢失或不一致的应用程序,你可以调整mysql设置,以交换一些ACID的可靠性更大的性能或吞吐量。: atomicity,原子性: consistency,一致性isolation,隔离性。

2024-06-26 09:53:54 600

原创 多维度mysql性能优化手段实践

本文主要介绍mysql数据库四种维度的优化手段:硬件升级、系统配置、表结构设计、SQL语句及索引优化。通过实例与原理分析探讨mysql性能优化。

2024-06-26 09:50:07 1725

原创 JVM垃圾判定算法与垃圾收集算法

垃圾回收主要需要考虑几件事:哪些内存需要回收?什么时候回收?如何回收?

2024-06-25 09:31:53 1040

原创 一文读懂Redis数据结构之跳跃表

跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。

2024-06-25 09:28:35 1173

原创 一文读懂一致性Hash算法

一致性哈希算法在1997年由[麻省理工学院](https://baike.baidu.com/item/麻省理工学院/117999)提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式[哈希表](https://baike.baidu.com/item/哈希表/5981869)( Distributed Hash Table,DHT) 中存在的动态伸缩等问题。

2024-06-20 11:18:04 1152

原创 一文读懂分布式系统CAP理论与BASE理论概念

本文主要描述分布式系统中的可用性、一致性、分区容错性, 基本可用、软状态、最终一致性等分布式系统中的概念。

2024-06-20 11:15:30 1157

原创 一文读懂Java线程状态转换

线程可以拥有自己的操作栈、程序计数器、局部变量表等资源,它与同一进程内的其他线程共享该进程的所有资源。Java的线程有自己的生命周期,在 Java 中线程的生命周期中一共有 6 种状态

2024-06-19 11:20:38 1087

原创 一文学会消息中间件的基础知识

介绍消息队列、生产者与消费者模式、消息中间件优缺点、消息中间件 的应用场景和中间件选型相关知识

2024-06-14 11:03:15 677

原创 一文学会Raft分布式一致性算法原理

在上面的描述中,当集群选举出节点后,主节点会通过广播心跳到其它节点以保住自己的Leader地位,在这个过程,Leader的心跳包会携带Append Entries,这个Append Entries通常只是作心跳保持使用,但当主节点出现数据变化时,主节点在下一次的心跳中,将数据变化写到Append Entries,其它节点收到后先写到节点日志中,但数据处于uncommit状态,当然,此时主节点的数据也是uncommit,直到收到所有节点的响应,主节点的数据直接转成commit状态。这个就是分布式共识问题。

2024-06-14 10:56:46 915

阿里巴巴Java开发手册(终极版)

阿里巴巴Java开发手册终极版1.3.0。首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。

2017-12-20

空空如也

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

TA关注的人

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