自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 大数据技术实战---项目中遇到的问题及项目经验

Namenode有一个工作线程池,用来处理与datanode的心跳(报告自身的健康状况和文件恢复请求)和元数据请求 dfs.namenode.handler.count=20 * log2(Cluster Size)4)编辑日志存储路径dfs.namenode.edits.dir设置与镜像文件存储路径dfs.namenode.name.dir尽量分开,达到最低写入延迟(提高写入的吞吐量)批次拉取数据过少(拉取数据/处理时间<生产速度),使处理的数据小于生产的数据,也会造成数据积压。

2024-04-18 13:44:29 350

原创 离线和实时大数据开发实战

战略性的数据探查是构建数据平台前首先要进行的任务,不合格的数据源头必须尽快剔除,如果到了后期才发现数据源头不合格,将会对数据平台的构建造成重大影响。离线数据平台产出数据的周期一般是天,也就是说,今天看到的是昨天的数据,对于大部分的分析和“看”数据的场景来说,这种 「T+1」 的离线数据可以满足业务分析的需求,但是随着业务运营日渐精细化,对数据的时效性要求越来越高,越来越多的业务场景需要马上看到业务效果,尤其是在业务促销活动等(典型的如双 11 大促、 618 大促等)场景下。

2024-04-18 10:40:55 445

原创 全网最全的redis深入解析

插入过程:跳跃表插入节点的时候,首先需要通过score找到自己的位置,也就是需要先走一步查找过程,找到新节点所处的位置的时候就创建一个新节点,并对新节点分配一个层数(这里层数的分配redis采用的是random随机机制,分配层数从1开始,每次晋升为上一层的概率为0.25),层数分配完了之后将前后指针进行赋值将新节点与旧节点串起来,如果层数大于当前的level还需要进行level的更新操作。故障节点变为客观下线后,如果下线节点是持有槽的主节点则需要在它的从节点中选出一个替换它,从而保证集群的高可用。

2024-04-17 11:39:47 312

原创 实际项目中redis的解决方法

第一种方法比较好理解,就是当数据库中查不到数据的时候,我缓存一个空对象,然后给这个空对象的缓存设置一个过期时间,这样下次再查询该数据的时候,就可以直接从缓存中拿到,从而达到了减小数据库压力的目的。将缓存失效时间分散开,比如每个key的过期时间是随机,防止同一时间大量数据过期现象发生,这样不会出现同一时间全部请求都落在数据库层,如果缓存数据库是分布式部署,将热点数据均匀分布在不同Redis和数据库中,有效分担压力。需要缓存层提供更多的内存空间来缓存这些空对象,当这种空对象很多的时候,就会浪费更多的内存;

2024-04-17 11:38:47 374

原创 java项目引入aigc 原创

在Java项目中引入AIGC(Artificial Intelligence Graph Computing)是为了使用该开源图计算框架来处理项目中的大规模图数据。以上代码将项目中的pom.xml文件添加了spark-graphx依赖,该依赖是AIGC所基于的图计算框架Spark GraphX。通过以上步骤,我们可以在Java项目中成功引入AIGC,并利用其提供的功能进行图计算。创建Java项目:首先需要创建一个Java项目,可以使用任何Java开发工具,如Eclipse、IntelliJ IDEA等。

2024-04-12 16:17:51 328

原创 Python从零开始进行AIGC大模型训练与推理

(2)《AI图片生成Stable Diffusion参数及使用方式详细介绍_Coding的叶子的博客-CSDN博客》,地址为“AI图片生成Stable Diffusion参数及使用方式详细介绍_Coding的叶子的博客-CSDN博客”。(1)《GPT2环境配置与模型训练—GPT系列训练与部署》,地址为“GPT系列训练与部署——GPT2环境配置与模型训练_Coding的叶子的博客-CSDN博客”。8 Stable Diffusion原理介绍、训练、推理、部署。4 GPT2原理介绍、训练、推理、部署。

2024-04-12 16:16:29 321

原创 全网最清楚容易理解描述 IO模型(阻塞、非阻塞、多路复用与异步)

epoll库是Nginx服务器支持的高性能事件之一,它是公认的非常优秀的时间驱动模型,和poll和select有很大的不同,属于poll库的一个变种,他们的处理方式都是创建一个待处理事件列表,然后把这个事件列表发送给内核,返回的时候,再去轮询检查这个列表,以判断事件是否发生。如果这样的描述符在比较多的应用中,效率就显得低下了,epoll是描述符列表的管理交给内核负责,一旦某种事件发生,内核会把发生事件的描述符列表通知给进程,这样就避免了轮询整个描述符列表,epoll库得到事件列表,就开始进行事件处理了。

2024-04-12 11:23:55 339 1

原创 redis缓存淘汰算法

比如我现在要进行LRU,那么首先拿到当前的全局时钟,然后再找到内部时钟与全局时钟距离时间最久的(差最大)进行淘汰,这里值得注意的是全局时钟只有24位,按秒为单位来表示才能存储194天,所以可能会出现key的时钟大于全局时钟的情况,如果这种情况出现那么就两个相加而不是相减来求最久的key。当字典的某个元素被访问时,它在链表中的位置会被移动到表头。它的全称是Least Frequently Used,它的核心思想是根据key的最近被访问的频率进行淘汰,很少被访问的优先被淘汰,被访问的多的则被留下来。

2024-04-11 14:00:57 243 1

转载 (转载)Redis分布式锁底层原理和持久化

Redlock 只有建立在「时钟正确」的前提下,才能正常工作,如果你可以保证这个前提,那么可以拿来使用。但是时钟偏移在现实中是存在的:第一,从硬件角度来说,时钟发生偏移是时有发生,无法避免。例如,CPU 温度、机器负载、芯片材料都是有可能导致时钟发生偏移的。第二,人为错误也是很难完全避免的。所以,Redlock尽量不用它,而且它的性能不如单机版 Redis,部署成本也高,优先考虑使用主从+ 哨兵的模式实现分布式锁(只会有很小的记录发生主从切换时的锁丢失问题)。

2024-04-11 13:58:39 13 1

原创 谈谈分布式事务的3种解决方案

我们可以引入X/Open DTP模型提供的XA协议,基于2阶段提交或者3阶段提交的方式去实现,但是如果全局事务管理器中的多个节点,任意一个节点在进行事务提交确认的时候,由于网络通信延迟导致了阻塞,就会影响到所有节点的事务提交,而这个阻塞过程呢,也会影响到用户的请求线程,这对于用户体验以及整体的性能影响非常大。分布式事务是指事务的参与者和支持事务的服务器、资源服务器以及事务管理器,分别位于分布式系统的不同节点上,保证不同数据的一致性。因此,本质上来说,分布式事务就是为了保证不同数据库数据的一致性。

2024-04-09 13:40:26 280

原创 如何系统学习Redis(可以类推其他技术框架)

首先,从系统维度上说,你需要了解 Redis 的各项关键技术的设计原理,这些能够为你判断和推理问题打下坚实的基础,而且,你还能从中掌握一些优雅的系统设计规范,例如 run-to-complete 模型、epoll 网络模型,这些可以应用到你后续的系统开发实践中。这些年,在和国内大厂的合作过程中,我发现,很多技术人都有一个误区,那就是,只关注零散的技术点,没有建立起一套完整的知识框架,缺乏系统观,但是,系统观其实是至关重要的。你看,这样,你就有了一个结构化的知识体系。你可以想一下,如果是你,你会怎么做呢?

2024-04-09 11:30:30 776

原创 (电商项目里)任意URL跳转漏洞修复与JDK中getHost()方法之间的坑

在这个示例中,isTrustedRedirectURL()方法接受目标URL和受信任域名作为参数,并返回一个布尔值,指示是否允许重定向到该目标URL。在方法中,我们先尝试将目标URL转换为URL对象,然后提取其主机部分,并检查该主机部分是否以指定的受信任域名结尾。因此,在修复URL跳转漏洞时,可以结合使用java.net.URL类的getHost()方法来验证目标URL的主机部分。这样,通过使用java.net.URL类的getHost()方法,结合适当的异常处理,可以帮助修复URL跳转漏洞。

2024-04-09 09:51:37 360

原创 sentinel精选

sentinel精选。

2024-04-09 09:48:02 96

原创 改造Sentinel-dashboard源码

由于sentinel-dashboard的原始jar包,数据是存储在内存中,服务重启会导致配置的规则丢失,所以面临的第一个问题就是,需要将数据的保存逻辑,从保存到内存修改到保存到其他的数据源,这里选用的是nacos。本文主要是对sentinel-dashboard源码进行改造,分为两块,一块是普通流控规则的改造,一个是网关流控规则的改造,完整的修改过的源码见文章最后源码下载,可以直接使用,修改Nacos配置就可以。3、其他的规则的接口也是同理修改,修改过的完整的源码见文章结尾。2.4 给出修改逻辑和位置。

2024-04-09 09:42:25 411

原创 Sentinel源码改造,实现Nacos双向通信

然而,默认情况下,Sentinel 和数据源之间的关系是单向数据通讯的,也就是只能先在数据源中配置规则,然后数据源会被规则推送至 Sentinel Dashboard 和 Sentinel 客户端,但是在 Sentinel Dashboard 中修改规则或新增规则是不能反向同步到数据源中的,这就是单向通讯。Sentinel 同步规则至数据源,例如将 Sentinel 的规则,同步规则至 Nacos 数据源的改造步骤很多,但整体实现难度不大,下面我们一起来看吧。

2024-04-09 09:41:10 418

原创 如何写出更优雅的并行程序

综上所述,实现优雅的并行程序需要在设计阶段考虑并行性,并在编码、调试、测试等阶段严格控制各个方面,以保证程序的正确性、高效性和稳定性。使用适当的同步机制,如互斥锁(Mutex)、信号量(Semaphore)、条件变量等,确保多个线程或进程访问共享资源的安全性。考虑使用并行编程框架和库,如OpenMP、MPI、CUDA等,简化并行程序的开发和调试。合理调度任务,确保各个任务在不同处理器上均衡执行,避免资源浪费。进行并行程序的模拟和验证,确保在不同条件下程序的正确性和稳定性。

2024-04-09 09:23:06 240

原创 缓存和数据库双写不一致

一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,那最好不要上述的串行化的这个方案,因为读请求和写请求串行化,串到一个内存队列里去,这样是可以保证一定不会出现不一致的情况。这样的话,一个数据变更的操作,先执行删除缓存,然后再去更新数据库,但是还没完成更新的时候,如果此时一个读请求过来,读到了空的缓存,那么可以先将缓存更新的请求发送到队列中,此时会在队列中积压,排在刚才更新库的操作之后,然后同步等待缓存更新完成,再读库。实际上不是,因为没有这么简单。

2024-04-08 16:02:04 420

原创 ABAP会过时吗

考虑到全球在 ABAP 平台上运行软件的庞大客户群(其中相当一部分是 SAP 旗舰级产 S/4HANA),以及本文介绍的 SAP 在 ABAP 方面的创新事实证明,ABAP 是一个充满活力的环境,总能找到合适的方案来整合市场最新需求和创新。如今的 ABAP 开发人员眼中被视为天经地义的 ABAP 应用服务器三层架构,即 Presentation,Application 和 Database 的三层设计,在 SAP R/1 里都合并在同一台物理服务器上,这也是 SAP R/1 中 1 的含义。

2023-08-02 16:20:59 116

原创 仿真学习笔记

一个仿真系统,通常由“实体(Entity)”、“事件(Event)”、“活动(Activity)”、“进程(Process)”、“仿真时钟(Simulation Clock)”、“统计计数器(Statistic Counter)”组成,这也叫做仿真系统的基本要素。比如在一个通信基站的仿真中,手机等移动终端就是“临时实体”,它们只在基站信号覆盖范围内短暂的停留,而通信基站则是“永久实体”,它不可移动,永久存在于系统中的固定位置。还比如道路交通仿真,车辆和行人是“临时实体”,道路和红绿灯是“永久实体”,等等。

2023-07-10 15:40:48 198 1

原创 【无标题】

冲冲冲

2022-06-22 22:52:20 59

原创 关于smm整合时test测试一直转圈问题 保姆级详细教程

smm框架整合时出现的Test一直转圈问题 大家还有什么问题可以一起交流

2022-06-22 22:43:06 428

原创 一个初入it的个人感悟《出路篇》纯手打(这篇要是火了我就发 下一篇 <怨夫日记>《我的异地女友》)

出路选择的个人感悟把,个人随便写的 要喷就喷把

2022-04-08 21:59:30 103

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

TA关注的人

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