- 博客(57)
- 问答 (3)
- 收藏
- 关注
原创 系统架构设计师教材:数据库设计基础知识
数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。按照不同的数据模型,可以将数据库的发展历史分为3个阶段。
2025-03-06 09:56:32
921
原创 cursor使用经验分享(java后端服务开发向)
cursor的大部分功能被集中在了左侧,具体如图所示**资源管理器:**项目文件,没啥说的。**搜索:**这个就是全局搜索,可以在这里搜整个项目的关键字。选中关键字,右键点击也有搜索选项。**源代码管理:**这个就是git的可视化工具我们也可以通过点击左下角的分支信息,来进行一些分支类的操作,其中刷新按钮就是同步远程分支。扩展:这里就是查看我们下载的插件,以及搜索插件的地方。运行和调试:这里可以运行我们的代码,并且进行断点调试。
2025-03-05 14:52:40
3604
9
原创 Hadoop架构详解
Hadoop 是一个开源的分布式计算框架,用于存储和处理大规模数据集。Hadoop 主要由HDFS(Hadoop Distributed File System)、MapReduce、Yarn(Jobtracker,TaskTracker)三大核心组件组成。其中HDFS是分布式文件系统,用于存储文件,MapReducer是计算框架,可以分为Map和Reduce两部分,简单来说就是先分组,后计算,而Yarn则是对主机资源的协调,辅助计算的顺利进行。
2025-02-27 16:59:33
1640
原创 如何快速在项目中集成AI功能:AI信箱工具使用
AI信箱gitee地址:https://gitee.com/du-xiuhuan/ai-mailbox如果感觉好用,麻烦点一个star;如果在使用中遇到什么问题,可以在当前帖子进行评论,或在gitee中提出issue,问题会尽量在一周内解决;
2025-02-18 22:00:29
1144
1
原创 系统架构设计师教材:信息系统及信息安全
信息系统的5个基本功能:输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段,即产生阶段、开发阶段、运行阶段和消亡阶段。
2025-01-25 23:11:10
1615
原创 系统架构设计师教材笔记:计算机基础
解决相对复杂的需求分析问题;解决非功能属性在系统占据重要位置的设计问题;解决生命周期长、扩展性需求高的系统整体结构问题;解决系统基于组件需要的集成问题;解决业务流程再造难的问题。系统架构设计师是项目开发活动中的众多角色之一,它可以是一个人或一个小组,也可以是一个团队。掌握业务领域知识:对某一行业有深刻的见解当架构设计师理解软件开发但不理解业务模型时,可能会开发出一个不能满足用户需求而只能反映该架构设计师所熟悉内容的解决方案;掌握技术知识:一个架构设计师应该拥有一定程度的技术水平。
2024-12-24 16:05:30
1441
原创 JVM详解:垃圾回收机制
java作为大型服务开发的主流语言,其运行会占用大量的内存空间,那么合理的使用有限的服务器资源至关重要。和大多数翻译性语言一样,java的运行环境jvm也内置垃圾回收机制,其通过一些合理的算法组合,定时来对堆中保存的不可达的临时实例进行清除,来保证运行环境的内存空间。首先我们要清楚,一切的垃圾回收都是针对于堆内存的,堆内存的作用是存储所有的临时对象(即使其可能存活时间较长),而垃圾回收则是查看这些临时对象时候到了可以被清除的时候。
2024-11-26 23:51:06
1116
原创 JVM详解:类的加载过程
JVM中类的加载主要分为三个部分,分别为加载(loading),链接(linking),初始化(initing)。其中加载负责的主要是讲类文件加载到内存中变为类对象,不过此时只有基本结构,没有实际数据。
2024-11-14 23:45:31
1037
原创 Elasticsearch基本概念及使用
,},},},实例中,我们在setting.analysis属性中,定义了字符过滤器mapping_filter,分词器whitespace_tokenizer,分词过滤器lowercase_filter和english_stop_filter。并将三者在analyzer中共同组合成了一个新的自定义分析器my_custom_analyzer。像html_strip这种功能固定,无需配置的,可以直接放入自定义分析器中。
2024-11-14 16:45:52
1242
原创 JVM详解:JVM的系统架构
计算机语言大致可以分为两类,一直是编译性语言,典型的如C++,他会先有编译器编译成可执行文件(操作系统可读,不同的操作系统需要编译成不同的可执行文件),而另一种则是翻译性语言,这种语言本身不被编译,而是由另一个已经被编译成可执行文件开启进程,在这个进程中对此计算机语言逐行的翻译执行,典型的如javaScript,其可以在node环境或浏览器环境(本质是都是v8引擎)下执行,这种语言通常都可以跨操作系统,因为操作系统的差异,其运行环境已经适应完了。
2024-11-13 21:30:33
872
原创 Elasticsearch集群和Kibana部署流程
如交换区就是划分一块磁盘区域作为交换区,对于不常用的内存页(操作系统对于内存的管理是基于分页存储,也就是说在操作系统的眼里,内存是一个一个的内存页),操作系统会将其存入磁盘,待使用时,在进行读取。而磁盘映射则是划分一块硬盘区域交给操作系统管理,并将普通磁盘区域中的文件或设备映射到操作系统管理的特殊区域,这样操作系统就能知道整个文件或设备全部的地址,不需要读取到内存中在进行使用,而是直接根据地址寻找到自己需要的内容。完成了以上的准备工作,就可以通过如下命令启动所有节点,开启集群了。
2024-11-11 13:24:44
1458
原创 Docker精讲:基本安装,简单命令及核心概念
容器化通过将被部署的应用程序,放入包含其依赖的所有环境的容器中。通过操作系统提供的某些能力,让容器环境同外部实现环境隔离,可以在一台主机中,独立于其他服务,部署在一个独立的虚拟环境中。什么是容器?我们可以把容器想象成一个虚拟机,其外在表现和虚拟机极其相似,比如说,容器通常由其自己的文件系统,有其自己的虚拟网卡,虚拟网卡和真实网卡之间通过网桥连接(类似于虚拟机NAT模式)。其部署环境也独立于真实环境之外。
2024-09-28 14:54:42
1602
原创 Kerberos:更安全的网络认证协议
Kerberos 是一种网络认证协议,主要用于特定的场景下,代替传统的token方式,以一种更繁琐,但更安全的方式来认证用户信息。它通过机制,确保用户在网络中与服务之间进行加密通信,并且避免了密码在网络中传输。Kerberos 的设计目标是通过可信的第三方(即)管理用户身份,提供单点登录 (SSO) 和安全的认证方式。
2024-09-10 22:39:05
2088
原创 Nginx快速入门:编译及常用配置
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,也是一个 IMAP/POP3 邮件代理服务器。它以其高并发处理能力和低资源消耗而闻名,能够同时处理数千个连接。:Nginx 可以担任静态资源服务器的角色,高效地提供静态内容,如 HTML、图片、视频等,因其采用事件驱动架构,能够比传统服务器处理更多的并发请求。:Nginx 可以作为反向代理服务器,将客户端请求分发到后端多个服务器上,从而实现负载均衡。它支持多种负载均衡算法,如轮询、IP 哈希等。
2024-08-31 22:11:21
1158
原创 RocketMQ集群搭建,及RocketMQ-Dashboard部署(前RocketMQ-Console)
RocketMQ不支持单主机搭建主从结构集群,当从节点启动时,即使和主节点设置不同的监听端口,他也要去监听主节点端口,也就是说正常启动的从节点会监听四个端口。原因未知,现象后面会列举出来。
2024-08-29 18:08:45
1656
3
原创 Webpack性能优化:代码分包,CDN内容分发网络,摇树,代码压缩
webpack作为前端代码的打包工具,本身不会影响前端代码在生产环境下的代码执行过程,不过前端代码通常作为静态资源传输,尽可能减小前端代码的体积可以加快浏览器请求前端代码的速度,提高单页面应用切换及首评渲染的速度,而webpack作为代码的打包工具,则可以通过配置尽可能减少代码大小,实现性能优化。
2024-08-28 13:58:35
1038
原创 操作系统:内存管理策略
当应用程序启动时,由操作系统负责给该应用程序分配其内存空间,假设此时启动了三个应用程序,操作系统分别给其分配了100m,10m和50m的内存,内存情况如下图此时如果程序B下线,程序A和程序C之间便会空出10m内存,此时如果没有10m以下的应用启动来填充这部分内存,那么这部分内存资源便会被浪费。
2024-08-21 23:30:56
943
原创 Kafka快速入门:Kafka驱动JavaApi的使用
Kafka的事务机制是一项强大的功能,旨在确保消息的原子性写入以及提供"Exactly Once"语义(EOS),特别适用于需要高度可靠性的数据流处理和分布式系统。
2024-08-20 13:48:29
979
原创 Kafka运行机制(二):消息确认,消息日志的存储和回收,生产者消息分区
生产者端,客户端在通过生产者生产消息时,需要知道消息是否发送成功,防止消息丢失或进行其他操作。消费者端,消费者也需要确认自己在消费数据后,提交偏移量是否成功,防止重复消费。
2024-08-19 23:13:59
1227
原创 Kafka集群搭建的两种方式
在2.8.0版本以前,Kafka集群的搭建依赖于Zookeeper环境,需要将kafka集群节点ip及主题等Kafka相关的元数据存入Zookeeper服务中。所以搭建Kafka集群前,需要先搭建Zookeeper集群。zookeeper多主机集群搭建。
2024-08-17 19:52:53
2104
2
原创 Kafka基本概念
Kafka是消息中间件的一种,相较于其他消息中间件,其以极高的吞吐量闻名,常用于构建实时数据管道和流应用,能够处理高吞吐量的数据流。
2024-08-16 23:50:11
1388
原创 Zookeeper集群如何实现强一致性和高可用,集群数据同步过程
在分布式环境下,多个节点需要协同工作,确保多个服务之间数据的一致性以及系统的可靠性。:在分布式系统中,多个节点可能需要同时访问共享资源,为了防止竞争条件和数据不一致,需要引入分布式锁机制。:在分布式系统中,多个节点需要共享某些配置或数据,并且这些配置需要动态更新。:在分布式系统中,节点之间需要互相发现,以便进行通信和协作,尤其是在动态扩展或缩减节点时。:在分布式环境下,单个节点可能会发生故障,因此系统需要具有一定的容错机制,以保证整体系统的可用性。
2024-08-16 18:21:48
1508
原创 Zookeeper服务注册及心跳机制详解
ZooKeeper提供了一种类似于文件目录的结构来保存key值,其提供了四种key类型,分别是持久节点,临时节点,持久有序节点,临时有序节点。其中临时节点的特性是当创建此节点的会话断开时,节点也会被删除。这一特性非常适合服务注册,可以通过维护一个长期的会话保证临时节点存活,当服务下线时,会话也会关闭,此时节点也会被删除。了解更多Zookeeper的相关知识可以看下面这篇文章,可以让你快速掌握Zookeeper常用知识。Zookeeper使用快速入门:基础命令,wacth监控,权限控制。
2024-08-14 13:48:38
1127
原创 分布式锁:Mysql实现,Redis实现,Zookeeper实现
通过自己定义一个锁表,并且定义一个不可重复的列,然后多个线程通过插入同一个数据来判断是否获取到锁,而释放锁的操作则是删除这条数据,通过自己实现这一过程,可以实现更灵活的分布式锁机制。
2024-08-14 00:17:24
1799
原创 Zookeeper使用快速入门:基础命令,wacth监控,权限控制
Zookeeper多主机集群搭建搭建完zookeeper集群后,就可以通过bin目录下的zkCli.sh可执行文件连接Zookeeper客户端执行下面的指令了。
2024-08-11 16:21:25
1191
原创 zookeeper集群启动过程和故障恢复
ZooKeeper 是一个分布式协调服务,广泛应用于分布式系统中,虽然其配置中心及服务注册中心功能逐渐被Nacos取代,不过其能够实现分布式锁的特性使其在对于数据有强一致性的要求下,依然发挥着不可或缺的作用。ZooKeeper 通过集群(由多个节点组成)来提供高可用性和一致性。以下使其集群启动过程及故障恢复过程。
2024-08-11 01:50:51
1079
原创 zookeeper多主机集群搭建
查看所有端口是否正常监听,在每台主机执行如下命令。正常打印端口监听信息则证明没问题。: 在ZooKeeper解压目录的。文件,其中包含该服务器的编号(与。zoo.cfg前准备。输出信息中可以看到是。
2024-08-09 09:48:17
1330
原创 从源码看 Redis:深入理解 redisDb 和 redisObject
Redis 是一个广泛使用的内存数据库,以其高性能和丰富的数据结构而闻名。不同于磁盘数据库,磁盘数据库将数据读取到文件中维护,而内存数据库将数据存储在内存中,意味着其想要维护数据,必须在代码中维护一个保存数据的结构,而redis由c语言编写,对应的其一定是通过结构体来保存数据的结构。
2024-08-01 15:41:16
1193
原创 redis持久化存储,rdb快照文件,aof文件
redis作为内存数据库,在内存中进行读写操作,将读写操作从毫秒级别降为纳秒级别,得到极大的性能提升,与此同时,作为内存数据库其也有致命缺陷,一旦redis发生意外宕机,那么内存中的数据将全部消失,无法找回,为了防止这种情况,redis提供了两种持久化存储的方式,分别是rdb文件,以及aof文件。
2024-08-01 10:54:46
853
原创 Redis五种数据类型,底层存储数据结构,以及相关命令
redis提供了五种数据类型供使用者使用,分别是string类型,hash类型(类似于对象结构),list类型,set类型,以及zset类型(有序set),redis在底层对这些数据进行保存时使用了SDS(Simple Dynamic String),压缩列表,双向链表,快速列表,整数集合,hash表以及跳表,其中hash表在redis中使用最为广泛,具体如下。
2024-07-31 15:34:56
1188
原创 redis集群搭建,哨兵集群搭建
修改哨兵配置不需要主动声明集群,只需要多个节点监听同一节点则就是集群结构,一个节点也能监听多个主机,只需要配置时多配置一个sentinel monitor即可(主机名不能重复),具体配置如下,如果看不懂注释可以看我的另一篇文章。三、创建多个配置文件(我这里用一台机器搭配集群,所以需要创建多个端口的redis服务,如果是多台机器搭建集群则不需要)通过redis-cli链接一个redis服务,使用cluster nodes命令查看,发现三个节点,集群搭建成功。四、启动所有服务,启动集群。
2024-07-30 17:43:23
745
原创 JAVA:创建线程,线程安全,线程锁,线程的生命周期,线程池
前两种书写简单,较好理解,都是通过实现run方法,再通过调用线程实力的start方法在新线程上执行run方法,不同的是第二种是实现的接口,而实现接口意味着它可以实现很多接口,并且继承其他类,有更好的扩展性(实际上也不常用),而第三种则比较复杂,传来传去,最终还要通过调用get方法获取线程的返回值,那他是怎么做到的呢?轻量级锁和重量级锁:当一个进程获取锁失败时,会重新获取,这个过程叫自旋,整个状态叫轻量级锁。同步方法用于同步整个方法,非静态方法的锁则是这个实例本身,而静态方法的锁则是这个类对象。
2024-07-25 00:24:08
717
原创 操作系统如何高效处理网络请求:IO多路复用技术
的文件描述符信息,其中文件描述符是非负整数,如果是几,就将第几位变成1,这是缺陷之一,由于设计较早,最高只能保存1024,这在如今是完全不够用的,那么什么是文件描述符信息呢?文件描述符信息是一个进程当前使用的资源(计算机的内存和硬盘都叫资源)的标识符,是一个非负整数。
2024-07-23 21:46:36
780
原创 查找二叉树,AVL树,234树,红黑树详解
但与众不同的是他不会向下排布,而是上提,也就是说分类出来的父元素和当前节点的父元素合并为一个二元素节点,而分裂出的两个子节点为这个二元素节点的字节元,这就是说为什么时拥有n个元素的节点被允许拥有n+1个字节点,如下图。来折叠节点,来防止这种情况,当左侧节点过深右侧节点过浅时,AVL树会找到左右两侧中间的节点(可以将当前节点左侧所有节点和右侧所有节点连起来看成一个链表,然后拿到中间的节点),然后以此节点旋转来作为父节点,如果折叠后的中间节点原来有右侧子节点,那么则将右侧子节点挂到中间节点的新的右侧字节点。
2024-07-22 09:26:41
1082
原创 HashMap原理详解,HashMap源码解析
HashMap是一个数组链表和红黑树的结合体 HashMap的第一层表现是数组,HashMap默认创建一个长度为十六的数组来储存数据,但不同的是,它并非是先放在第0个索引,然后第一个索引那么放置,而是通过key获取对应的32位hash值,然后高十六位和低十六位进行异或操作,然后用结果的后四位和15的二进制(也就是1111)进行与操作,得到一个0-15之间的值来匹配索引位置。
2024-07-20 19:26:35
907
原创 redis 缓存一致性,缓存穿透,缓存雪崩,缓存击穿
1.缓存一致性:缓存一致性就是通过各种方法保证缓存与数据库信息一种,其中最多的办法就是想尽一切办法对过期key进行清除,以保证redis和数据库信息一只,其中就包括了中提到的内存淘汰策略,过期key的清除等等,当然也包括在代码中进行手动清除过期key,不过手动清除时需要注意要保证数据库的更新和redis的清除都成功完成,可以使用的方法包括,使用事务,使用相关服务将redis和数据库进行整合,或者只操作redis,再由redis操作数据库等等。
2024-05-04 23:30:41
1039
空空如也
zookeeper单服务器集群搭建,2888和2890端口没有监听
2024-08-06
删除mysql服务,重启时失败cmd报错
2022-07-05
vue组件内代码输入多余空格报错,无法编译
2022-06-09
vue代理配置完运行项目报错,如何解决?
2022-06-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人