- 博客(49)
- 收藏
- 关注
原创 Celery分布式任务队列
Celery是一个分布式任务队列框架,支持异步任务、定时任务和大规模并发处理。其核心组件包括消息中间件Broker(如Kafka)、执行单元Worker、结果存储Backend(如Redis)和定时调度器Celery Beat。
2025-08-10 21:33:20
1482
3
原创 启发式算法-模拟退火算法
模拟退火算法是一种基于概率的启发式优化算法,用于解决大规模组合优化问题,其灵感来源于金属退火过程中的物理现象。其基本原理是从一个初始解开始,然后在当前解的邻域内随机生成一个新解,如果新解的目标函数值优于当前解,那么就将新解作为当前解,如果新解的目标函数值比当前解差,那么以一定的概率选择新解,这个概率随着算法的进行而逐渐降低,类似于退火过程中温度逐渐降低,物质逐渐趋于稳定状态,通过这种方式算法可以在一定程度上避免陷入局部最优解,搜索到全局最优解。
2025-05-06 23:56:10
1245
原创 启发式算法-禁忌搜索算法
禁忌搜索是一种可以用于解决组合优化问题的启发式算法,通过引入记忆机制跳出局部最优,避免重复搜索。该算法从一个初始解开始,通过邻域搜索策略来寻找当前解的邻域解,并在邻域解中选择一个最优解作为下一次迭代的当前解,为了避免算法陷入局部最优,引入禁忌表来记录已经访问过的操作,禁止算法在一定迭代次数内再次选择这些被禁忌的操作,另外算法可以设置一些特赦条件,使得被禁忌的操作可以解除禁忌,从而探索更优的解空间。
2025-05-05 22:37:38
720
原创 启发式算法-遗传算法
遗传算法是一种受达尔文生物进化论和孟德尔遗传学说启发的启发式优化算法,通过模拟生物进化过程,在复杂搜索空间中寻找最优解或近似最优解。遗传算法的核心是将问题的解编码为染色体,每个染色体代表一个候选解,通过模拟生物进化中的选择、交叉、变异等操作,将适应度高的染色体保留并繁殖,同时引入新的基因多样性,逐代优化种群,最终逼近最优解。
2025-05-04 22:44:11
461
原创 启发式算法-蚁群算法
蚁群算法是模拟蚂蚁觅食行为的仿生优化算法,原理是信息素的正反馈机制,蚂蚁通过释放信息素来引导同伴找到最短路径。把问题的元素抽象为多条路径,每次迭代时为每只蚂蚁构建一个解决方案,该解决方案对应一条完整的路径,每次迭代后对所有路径上的信息素按一定比例模拟自然蒸发,避免局部最优,然后找出当前的最优路径进行信息素增强,在之后的迭代中蚂蚁就会倾向于选择信息素浓度高的路径,经过多次迭代后,找出全局的最优路径。该算法通常用于解决旅行商等NP难问题,算法性能依赖参数,有一定的玄学。
2025-05-03 23:54:59
699
原创 kubernetes(三)
Pod是k8s中最小的可部署和可管理的计算单元,每个Pod中包含一个或者多个容器,这些容器能够划分为两类:一类是用户程序的容器,其数量不固定,可根据实际需求进行调整,另一类则是Pause容器,它是每个Pod中存在的根容器,Pause容器主要有两个作用
2025-02-05 01:27:23
1143
1
原创 kubernetes(二)
在Kubernetes系统中,Namespace是一种至关重要的资源类型,其主要功能在于实现多套环境的资源隔离或者多租户的资源隔离,默认情况下所有的Pod都能够相互访问,但如果不想让两个Pod之间存在互相访问,就可以把这两个Pod分别划分到不同的Namespace当中,Kubernetes可以把集群内部的资源分配至不同的Namespace,在逻辑上构建出一个个组,从而能够对不同组的资源进行隔离式的使用和管理。
2025-02-03 23:33:49
1517
原创 Kubernetes(一)
Kubernetes(简称K8s)是一个开源的容器编排平台,已经成为现代云原生应用的核心技术,主要应用于对容器化应用程序的自动化部署、扩展以及管理。k8s配备了一组核心组件以及一系列功能,这些组件能够实现容器的调度、负载均衡、服务发现以及故障恢复等功能。
2025-01-29 00:29:51
1114
原创 JWT令牌
JSON Web Token,简称JWT,是一种开放标准,以JSON对象为载体,用于在通信双方之间安全地传输信息,通常被用于身份验证和授权认证。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
2025-01-24 01:10:51
1272
原创 prometheus&grafana实现监控告警
Prometheus负责集群数据的监控和采集,然后传递给grafana进行可视化,集成睿象云可实现监控报警,为了方便操作,可以通过iframe嵌套grafana到指定的页面。
2024-12-07 22:00:22
2039
原创 Netty进阶
Netty中的黏包与半包问题是由于TCP协议本身的特性导致的。在TCP协议中,数据是以字节流的形式进行传输的,没有明确的消息边界,因此在使用Netty进行网络编程时,可能会遇到黏包和半包问题。在 基于Netty的RPC框架 中已经实现了自定义消息协议的设计与解析,协议要素主要包含以下成分。
2024-11-17 14:40:16
1296
原创 Flink算子
flink算子,包含以下类别:map,filter,flatMap,keyBy,aggregations,reduce,物理分区算子,富函数,分流算子split和side output,合流算子union(联合)和connect(连接)。
2024-11-14 00:10:29
1335
原创 Hadoop(YARN)
YARN是Hadoop集群的资源管理和调度系统,它负责为各种分布式计算任务分配和管理资源,包含以下组件:ResourceManager,NodeManager,ApplicationMaster, Container。
2024-11-12 01:08:29
2109
原创 Netty入门二
Netty的核心组件包括以下几种:EventLoop,Channel,Future 与 Promise,Handler与Pipeline,ByteBuf等。
2024-11-10 12:10:04
1123
原创 Hadoop(HDFS)
Hadoop是一个开源的分布式系统架构,旨在解决海量数据的存储和计算问题,Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)、MapReduce编程模型和YARN资源管理器,最近需求需要用到HDFS和YARN。
2024-11-09 00:12:28
1648
原创 Flink消费Kafka实时写入Doris
通过FileBeat采集日志信息到Kafka,再通过Flink消费Kafka实时写入Doris。
2024-10-15 02:18:19
4532
2
原创 Spring源码二IOC容器源码
ApplicationContext 是 Spring 的核心接口,表示 Spring 的 IOC 容器,以下三个类是ApplicationContext 接口的常用实现类:ClassPathXmlApplicationContext,AnnotationConfigApplicationContext,FileSystemXmlApplicationContext。
2024-10-08 00:50:20
1328
原创 ReentrantLock 实现原理
在Java中,synchronized 和 ReentrantLock 都是用于确保线程同步的锁,都属于`可重入锁。`ReentrantLock 相对于 synchronized 具有以下特点:`等待可中断,可以设置超时时间,可以设置为公平锁,支持多个条件变量。
2024-10-06 19:04:35
1541
原创 (Kafka源码五)Kafka服务端处理消息
Kafka 服务端(Broker)采用 Reactor 的架构思想,通过1 个 Acceptor,N 个 Processor(N默认为3),M 个 KafkaRequestHandler(M默认为8),来处理客户端请求,这种模式结合了多线程和事件驱动的设计,优点是能够有效地利用系统资源,可以实现高效地处理请求,无需为每个连接或请求创建新的线程,减少了线程上下文切换的开销,以实现高并发和高吞吐量。
2024-10-01 15:57:47
2509
2
原创 Flink CDC实时同步MySQL到Doris
Apache Flink CDC(Change Data Capture)是一个用于捕获和跟踪数据库更改的技术,它能够实时地从数据库中获取数据变更,并将这些变更流式传输到其他系统进行处理和分析。Flink CDC 提供了对多种数据库的支持,包括 MySQL、Doris、MongoDB 等,Flink CDC 在大数据中主要用于实时数据同步、实时数据分析、实时监控和告警、日志和审计记录、流式ETL、实时事件处理等方面。
2024-09-28 14:47:19
3970
原创 Dubbo SPI源码
Dubbo 的 SPI(Service Provider Interface)机制是一种强大的扩展机制,它允许开发者在运行时动态地替换或增加框架的功能。Dubbo 的 SPI 机制与 Java 原生的 SPI 机制有所不同,它提供了更多的灵活性和功能。
2024-09-15 20:42:57
1331
原创 Java SPI机制源码
Java的SPI(Service Provider Interface)机制允许第三方为应用程序提供插件式的扩展,而不需要修改应用程序本身的代码,从而实现了解耦。Java标准库本身就提供了SPI机制,通常是通过在META-INF/services目录下放置文件来实现的。SPI机制的核心组件包括:服务接口:这是一个Java接口,定义了服务提供者需要实现的方法,应用程序将使用这个接口与具体的服务实现进行交互。服务实现:这是实现了服务接口的具体类,第三方可以为服务接口提供多个实现。
2024-09-04 22:12:31
972
原创 LRU缓存
LRU缓存,LRU缓存(Least Recently Used,最近最少使用)是一种数据缓存机制,旨在解决计算机内存中数据的替换问题。当缓存空间不足时,LRU缓存会淘汰最近最久未被使用的数据,以确保缓存中始终存储着最新和最频繁使用的数据。
2024-08-24 23:38:15
377
原创 基于Netty的RPC框架
基于Netty的RPC框架,RPC远程过程调用(Remote Procedure Call)是一种通信协议,它允许程序调用位于不同地址空间(通常是网络上的另一台机器)的方法,而无需程序员显式编码这个远程调用的细节。这种技术隐藏了底层的通讯细节,使得调用远程服务就像调用本地函数一样简单。
2024-08-24 23:34:57
1615
原创 python通过Gurobi求解线性规划
Gurobi是一款强大的商业数学规划求解器,用于解决线性规划(LP)、整数规划(IP)、混合整数规划(MIP)、二次规划(QP)、非线性规划(NLP)等各种优化问题。它具有高效的求解算法、丰富的功能和友好的用户界面,被广泛应用于学术界和工业界。Gurobi采用了最先进的优化算法和技术,具有出色的求解速度和效率。它能够处理大规模、复杂的数学规划问题,并在较短的时间内找到最优解或接近最优解。Gurobi中Model.addVar()用到的变量类型 vtype主要有以下三种。
2024-04-28 23:08:16
2812
原创 BIO、NIO与AIO
I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:**BIO、NIO、AIO** 1 每当接收到一个Socket连接就会创建一个新的线程,线程的竞争以及上下文切换会影响性能;2 每个线程都会占用栈空间和CPU资源;3 并不是每个socket都进行IO操作,无意义的线程处理(即使客户端没有消息,服务端的线程也会阻塞等待);
2024-04-27 22:35:00
1630
1
原创 Mysql主从复制实战(1主3从)
MySQL主从复制是一种数据库复制技术,它允许一个MySQL数据库服务器将数据更新操作(增删改)自动复制到一个或多个其他从数据库服务器。这种技术可以提高数据库的可用性、扩展性和性能。
2024-04-04 23:50:56
1381
1
原创 ThreadLocal源码
ThreadLocal用来解决多线程的并发问题,ThreadLocal是线程局部变量,它的作用是为每一个使用变量的线程都提供一个变量值的副本,使得每一个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突,从线程的角度看,就好像每一个线程都完全拥有该变量,从而达到了线程隔离的效果。
2024-03-20 21:53:36
730
1
原创 (Kafka源码四)生产者发送消息到broker
本文主要从源码角度讲解了消息的发送条件,生产者对broker发送回来的响应处理,生产者对于超时/异常/长时间未处理的消息批次是怎么处理的,以及kafka对于粘包拆包问题的解决方法。下章将从源码角度分析服务端的整体架构。
2024-03-17 21:30:47
1580
1
原创 (Kafka源码三)Kafka的缓存机制
本文主要讲解了线程添加消息(append()方法源码)到RecordAccumulator的源码流程,以及在添加的过程中所涉及到内存的申请与释放的源码分析,最后介绍了RecordAccumulator通过CopyOnWriteMap实现的batches,从而实现了读写分离与高并发读的能力。下一章将从源码角度详细介绍Broker是如何处理生产者发送过来的消息。
2024-03-15 21:48:05
1700
1
原创 Spring源码一代理模式
Cglib动态代理会根据被代理类的信息以及设置的回调对象动态的生成代理类,可以看出代理类继承了目标类,当调用代理类的目标方法时,会根据是否设置了回调对象执行不同的操作,若设置了回调,则会调用methodInterceptor接口的实现类中的intercept方法,然后在该方法里面通过invokeSuper()方法调用目标类的pay()方法,若没有设置回调,则直接调用父类,也就是目标类的pay()方法。如果接口增加一个方法,静态代理模式除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。
2024-03-04 23:09:32
961
1
原创 Leetcode第 385 场周赛
这题主要进行模拟即可,先记录8个方向的信息,使用哈希表存储每个质数的出现次数,首先遍历图中的每一个坐标分别从8个方向进行延伸,同时更新最新值num并判断该值是否是质数,若哈希表中已存在该数,说明该数是质数,不需要在再判断是否是质数,最后比较哈希表中出现次数最大并且最大的质数,返回该质数。:这题还是前缀树的应用,先将数组1中的每个元素添加到前缀树中,再遍历字符串2中的每个元素,查找前缀树中每个元素的前缀长度并记录最大长度,最后返回最大长度。:这题和第一题的解法一样,区别在于数据范围变大了。
2024-02-29 20:25:03
319
原创 排序算法总结
冒泡排序优缺点:优点:比较简单,空间复杂度较低,是稳定的;缺点:时间复杂度太高,效率慢;选择排序优缺点:优点:一轮比较只需要换一次位置;缺点:效率慢,不稳定(举个例子6,8,6,2, 9 第一遍选择元素2和第一个6交换,那么原序列中2个6的相对位置前后顺序就破坏了)。
2024-02-28 22:43:37
474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅