- 博客(206)
- 收藏
- 关注
原创 浅谈TCP的三次握手和四次挥手
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,三次握手用于建立连接,四次挥手用于关闭连接,下面详细解释为什么需要这样的过程。
2025-02-10 14:34:46
993
原创 hdfs文件读写过程
HDFS 的文件读写过程涉及客户端、NameNode和DataNode的协作。在文件写入时,通过NameNode的元数据管理和DataNode的数据块存储管道实现高效的数据复制和存储。在文件读取时,利用数据本地性和NameNode的元数据信息,确保高效的数据读取。同时,代码示例展示了如何在 Java 中使用 HDFS 的 API 进行文件的读写操作,这些代码可以在 Hadoop 环境中运行,帮助你更好地理解文件读写的实现。
2025-01-12 19:32:35
681
原创 actor模型
它通过消息传递的方式来解决共享状态、同步以及竞争条件问题,从而提供了强大的并发能力和可扩展性。(Actor Model)是一种用于并发计算的数学模型和编程概念,它最早由计算机科学家 Carl Hewitt 等人提出,用于简化对多线程或并发系统的设计和实现。是一种最小的计算单元,它可以看作是一个“独立的个体”或“并发的原子”,具有独立的状态和行为。通过这种消息传递机制,每个 Actor 可以专注于处理自己接收到的任务,这样的设计使得系统更具可扩展性、并且容易维护和测试。,它们之间可以通过消息传递来协同工作。
2024-10-26 19:17:29
451
原创 如何设置MySQL分布式架构主键ID,为什么不能使用自增ID或者UUID做主键?
MySQL分布式架构主键ID的设置方法基于数据库的全局唯一ID生成器原理:利用数据库的特性来生成唯一ID。例如,在MySQL中可以创建一个专门用于生成ID的表,表中只有一个字段(如id字段),每次需要生成ID时,通过对这个表进行插入操作(插入一条空记录),然后获取这个新插入记录的自增ID值,再将这个记录删除。这样就可以得到一个全局唯一的ID。优点:简单直接,能保证唯一性。缺点:性能较差,因为涉及到数据库的插入和删除操作,并且需要频繁访问数据库,不适合高并发场景。不能使用自增ID的
2024-09-29 11:55:37
1327
原创 string为什么存储在堆里
在 Java 中,字符串对象存储在堆内存中而不是栈内存中,这是由于 Java 的内存管理和对象生命周期的特性决定的。
2024-09-29 11:27:00
643
原创 cassandra指定配置文件的docker启动方法
安装 Docker(已完成)创建 Docker 网络(已完成)准备数据存储目录(已完成)拉取 Cassandra 镜像(已完成)准备自定义配置文件运行 Cassandra 容器并挂载配置文件配置多节点集群(如果需要)要自定义 Cassandra 的配置,您需要准备一个或多个配置文件,并将它们挂载到容器内的相应目录。通过上述步骤,您可以在 Docker 容器中部署和配置多个 Cassandra 节点,确保它们能够作为一个集群协同工作。创建和编辑自定义的。
2024-09-18 15:42:53
1156
原创 神经网络VS决策树
神经网络(Neural Networks)和决策树(Decision Trees)是两种不同的机器学习算法,各自具有独特的优点和适用场景。
2024-09-09 16:02:22
731
原创 关于Lombok
Lombok 是一个Java库,可以自动生成样板代码,简化Java类的编写。通过使用注解,Lombok 能够自动生成getter、setter、构造函数、equals、hashCode、toString等方法,从而减少手动编写这些方法的时间和错误。
2024-07-29 20:23:49
531
原创 springboot之自动装配
Spring Boot 通过一系列注解和条件配置实现了自动装配机制,使得开发者无需手动配置大量的 XML 文件或 Java 配置类。自动配置机制利用文件中的自动配置类,并结合条件注解和组件扫描,实现了灵活且强大的自动装配功能。这样,开发者可以专注于业务逻辑的实现,而无需处理繁琐的配置细节。
2024-07-23 21:37:49
765
原创 关于Autowired
Autowired是 Spring 依赖注入机制的核心注解之一,提供了多种灵活的注入方式,包括字段注入、构造函数注入、setter 方法注入和任意方法注入。通过结合使用@Qualifier和@Nullable等注解,可以更细粒度地控制依赖注入的行为。
2024-07-02 11:53:07
410
原创 关于TreeMap
TreeMap是 Java 集合框架中的一个类,它实现了接口,并且基于红黑树的实现。它存储的键值对是有序的,默认情况下按键的自然顺序(如数字的从小到大,字符串的字母顺序)排序。TreeMapTreeMap是一个强大的集合类,提供了按键排序存储数据的能力。它适用于需要按自然顺序或自定义顺序访问键值对的场景。理解和熟练使用TreeMap可以大大提高处理有序数据的效率。
2024-06-12 21:11:58
916
2
原创 多线程交替打印
对象锁的线程能进入同步块。这是确保两个线程不会同时执行同步块内代码的关键,从而实现交替打印。通过这种方式,这段代码实现了两个线程交替打印不同的字符,直到达到预定的次数为止。对象,分别传入不同的字符,然后启动这些线程,它们开始执行。这样,两个线程就可以交替执行。在这个例子中,一个线程打印字符后,会调用。方法中,定义了这个线程应该执行的任务。会使当前线程等待,直到另一个线程调用。接口,这意味着它可以被线程(唤醒另一个线程,然后自己调用。确保了在任何时刻,只有持有。
2024-04-13 00:02:15
292
1
原创 rabbitmq之direct交换机
Direct交换机是RabbitMQ中的一种交换机类型,它根据消息的路由键(Routing Key)来处理消息。在Direct交换机中,队列会根据绑定时指定的路由键来接收消息。如果一个队列绑定到Direct交换机上要求路由键为“green”,那么只有路由键为“green”的消息才会被该队列接收。这种类型的交换机提供了一种点对点的消息路由方式,其中消息的路由键需要与队列的路由键完全匹配⁴⁵。这使得Direct交换机非常适合于处理精确匹配路由键的场景。
2024-03-31 22:31:33
173
原创 rabbitmq之fanout交换机
是的,Fanout交换机是RabbitMQ中的一种交换机类型,它的工作方式是将接收到的消息广播到所有绑定到该交换机的队列。这意味着,如果一个Fanout交换机有多个队列绑定到它,那么当它接收到一个消息时,这个消息会被复制并发送给所有绑定的队列¹²⁴⁵⁶。因此,Fanout交换机非常适合于发布/订阅模式,其中生产者发送的消息需要被多个消费者接收。
2024-03-31 22:26:17
474
原创 rabbitmq消息处理模式
默认情况下,RabbitMQ 使用的是 push 模式,只要消息推送到消费者就会自动 ack,然后 RabbitMQ 删除队列中的消息¹。比如,如果消费者处理消息的速度赶不上生产者发送消息的速度,或者消费者在处理消息时出现异常,那么就可能会导致消息丢失¹。这种模式下,消费者只要启动后,就相当于使用了订阅模式,只要生产者不断推送信息,消费者就会持续接收信息⁵。总的来说,RabbitMQ 的消费者是否会在处理完一条消息之前接收新的消息,取决于你选择的消息处理模式和是否启用了手动应答机制。
2024-03-31 21:50:00
809
原创 关于rabbitmq的prefetch机制
消息预取机制(Prefetch Mechanism)是RabbitMQ中用于控制消息传递给消费者的一种机制。它定义了在一个信道上,消费者允许的最大未确认的消息数量。一旦未确认的消息数量达到了设置的预取值,RabbitMQ就会停止向该消费者发送更多消息,直到至少有一条未完成的消息得到了确认。这个值指定了该信道上未确认传递的消息的最大数量。例如,如果预取值设置为5,那么消费者在没有确认当前消息之前,不会收到超过5条消息。这样,RabbitMQ才能跟踪哪些消息已经被处理,并根据预取值来调整消息的传递¹。
2024-03-31 21:45:17
4432
原创 关于小批量梯度下降
小批量梯度下降(Mini-Batch Gradient Descent,MBGD)是一种优化算法,它在批量梯度下降(Batch Gradient Descent,BGD)和随机梯度下降(Stochastic Gradient Descent,SGD)之间取得平衡。在实际应用中,小批量梯度下降是深度学习训练中最常用的方法之一¹²。(1) 批量梯度下降(BGD)、随机梯度下降(SGD)、小批量梯度下降(MBGD) - 知乎. https://zhuanlan.zhihu.com/p/72929546.
2024-03-22 16:57:55
373
原创 关于%和/
运算符的行为也可能会根据操作数的符号和使用的编程语言有所不同。因此,当你在编程时使用这两个运算符,最好查阅你正在使用的编程语言的文档,以确保你了解它们的行为。请注意,这两个运算符的行为可能会根据你使用的编程语言和操作数的类型(整数或浮点数)有所不同。运算符执行的是真正的除法,即使两个操作数都是整数,结果也可能是浮点数。而在其他一些语言中,比如 Java 和 C,如果两个操作数都是整数,那么。:这是一个在编程中常见的运算符,用于获取两个数相除后的余数。运算符执行的是整数除法,结果也是整数,小数部分会被舍去。
2024-03-17 11:05:51
1496
原创 java中的queue
新元素插入到队列的尾部,队列检索操作则是从队列头部开始检索元素。接口,提供了队列操作。作为一个双向链表,它允许在列表的头部和尾部进行高效的元素插入和移除操作,因此非常适合用作队列。接口本身定义了进行队列操作的方法,如插入、移除和检查元素,但它是一个接口,因此需要具体的实现来完成这些操作。在没有容量限制的情况下通常有更高的性能,因为它避免了节点对象的创建和垃圾收集。例如,如果你需要一个简单的FIFO队列,并且关注于元素的插入和移除性能,接口,Java提供了几种具体的实现,每种实现都有其特定的用途和性能特点。
2024-03-04 20:10:18
492
原创 机器学习中的回归树
回归树(Regression Tree)是决策树(Decision Tree)的一种,用于解决回归问题,即预测一个连续值的输出,而不是进行分类。与分类树(用于预测离散标签)相比,回归树的目标是预测出一个具体的数值。回归树的工作原理与分类树类似,但在决策节点处使用的是数值型数据,而非类别数据。在构建树的过程中,它会根据输入特征对数据集进行分割,使得每个分割(或叶节点)中的数据具有相似的响应变量值。
2024-03-03 19:21:25
721
原创 什么是独热编码?嵌入编码?
在独热编码中,每个类别值被转换成一个二进制向量,这个向量的长度等于类别的数量,其中只有一个位置的值为1,表示当前的类别,其余位置的值都为0。但是,这种方法也有缺点,主要是如果类别的数量非常多,那么独热编码会产生非常高维的数据,这可能会导致模型训练效率低下,这种情况下可能需要考虑其他的编码方法,比如嵌入编码(Embedding)。例如,在自然语言处理任务中,每个单词可以被嵌入到一个低维空间(如100维到300维)中,相较于可能包含成千上万个单词的独热编码向量,嵌入向量的维度显著降低。
2024-03-03 18:43:05
834
原创 关于BT站
BT站,全称BitTorrent站点,是一种基于BitTorrent协议的P2P(点对点)文件共享网站。BitTorrent是一种分布式文件共享协议,允许用户直接在彼此之间传输文件,而不需要依赖于中央服务器。BT站提供种子文件(.torrent文件),这些文件包含了网络上分布式存储的文件的元数据以及用于文件传输的tracker服务器的地址信息。
2024-03-03 17:22:17
1137
原创 关于gossip协议
Gossip协议,也称为流言协议,是一种在分布式系统中用于节点之间通信和数据同步的算法。它的设计灵感来自于人类社交中的流言传播机制:一个人告诉几个人某个消息,这几个人再各自告诉其他几个人,如此反复,最终使得大多数人都得知这个消息。
2024-03-02 21:33:37
525
原创 关于决策树模型
决策树模型是一种常用的数据挖掘方法,它通过模拟人类决策过程来对数据进行分类或回归分析。决策树由节点和边组成,其中每个内部节点代表一个属性上的测试,每个分支代表测试的一个结果,而每个叶节点(树的末端)代表一个类别(在分类树中)或一个连续值(在回归树中)。决策树的构建过程基于特征选择,目标是创建一个简洁的树结构,能够准确地对实例进行分类或预测。
2024-03-02 21:29:39
505
原创 正则化,偏差,方差,以及他们之间的关系
正则化、偏差和方差是机器学习和统计学中的重要概念,它们之间存在着紧密的关联。理解这些概念及其相互之间的关系对于构建有效的预测模型至关重要。
2024-03-01 19:13:52
693
原创 Adam优化算法
Adam算法(Adaptive Moment Estimation)是一种用于深度学习模型优化的算法,它结合了动量(Momentum)和RMSprop(Root Mean Square Propagation)的概念。Adam算法自2015年提出以来,因其高效和适用于大多数情况而广泛流行。下面简要介绍Adam算法的基本原理和特点。
2024-03-01 13:35:18
712
原创 Softmax
给定一个实数向量 (Z),其中包含了(n)个类别的得分(也称为逻辑回归),Softmax函数可以定义为:其中,(Z_i) 是向量 (Z) 中第 (i) 个元素(对应第 (i) 类的得分),分母是所有 (e^{Z_j}) 的总和,确保了所有输出概率的总和为1。
2024-02-29 21:39:25
514
原创 为什么模型需要激活函数?
如果没有激活函数,优化过程可能会变得非常困难,因为模型的输出将仅仅是输入的线性组合,这限制了模型学习的能力。例如,使用Sigmoid或ReLU激活函数的网络可以学习非线性的决策边界,这比简单的线性分类器能解决更复杂的分类问题。:通过引入非线性激活函数,神经网络可以学习到更加复杂的函数映射,提高了模型对数据的拟合能力。:某些激活函数(如ReLU)还有助于控制网络中信息的流动,通过在某些情况下“关闭”神经元的激活,可以帮助网络专注于更重要的特征,提高了模型的稀疏性和效率。
2024-02-29 20:56:00
628
原创 如何选择激活函数?
选择神经网络的激活函数是一个重要的决策,因为激活函数的选择会影响到网络的收敛速度以及能否有效地训练。不同的激活函数适用于不同的任务和网络架构。
2024-02-29 20:00:06
983
原创 什么是RPC?谈谈你对RPC的理解
过拟合是机器学习中一个常见的问题,指的是模型在训练数据集上学到了过多的细节和噪声,以至于它在新数据上的泛化能力下降。过拟合的模型捕捉到了训练数据中的随机波动(即噪声),而不仅仅是真实的信号,导致模型在面对新的、未知的数据时表现不佳。在机器学习中,正则化通过向模型的损失函数(代价函数)中添加一个额外的项来实施,这个额外的项是模型权重的函数,用于惩罚模型权重的大值。正则化通过惩罚大的权重值来限制模型的复杂度,使得模型不能完美地拟合训练数据中的每一个细节,从而提高模型在未见过的数据上的泛化能力。
2024-02-29 15:00:35
846
原创 正则化是什么意思?为什么能够解决过拟合问题?过拟合是什么意思?
过拟合是机器学习中一个常见的问题,指的是模型在训练数据集上学到了过多的细节和噪声,以至于它在新数据上的泛化能力下降。过拟合的模型捕捉到了训练数据中的随机波动(即噪声),而不仅仅是真实的信号,导致模型在面对新的、未知的数据时表现不佳。在机器学习中,正则化通过向模型的损失函数(代价函数)中添加一个额外的项来实施,这个额外的项是模型权重的函数,用于惩罚模型权重的大值。正则化通过惩罚大的权重值来限制模型的复杂度,使得模型不能完美地拟合训练数据中的每一个细节,从而提高模型在未见过的数据上的泛化能力。
2024-02-28 20:34:43
668
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人