- 博客(784)
- 收藏
- 关注
转载 深入理解 AbstractQueuedSynchronizer(AQS)【源码分析】
3,队列,CHL队列,存放node节点,线程未获取资源,会重试一段时间,然后放入队列中,解决了线程无限自旋问题。1,state,用于标识资源是否被其他线程占用,0表示,无,大于0表示已经被占用。2,node,线程未获取资源,会放入队列中,一个线程代表一个node。
2024-09-27 17:01:43 37
转载 【Servlet】图解HTTP请求Tomcat服务器实现前后端交互
这就需要去理解一个接口的思想,后端Servlet通过注解的形式去为前端提供一个访问的接口,前端只需要通过这个找到对应的服务器接口,Tomcat服务器就会将HTTP请求解析为request对象,以此很好地在内部通过Servlet来处理这个对象,再构造出response对象由返回给Tomcat,最后由Tomcat继续解析为HTTP响应返回给浏览器。不过呢,这和我们上面缩写的可不太一样。因为在body中是【json】格式的数据,因此我们无法直接通过某种方法来精准获取里面的内容,那就只有一个办法:全部读出来!
2024-09-18 15:09:53 341
转载 java 客户端一个请求对应一个线程 spring一个请求是一个线程吗
在连接中获取请求的数据,生成request;早期的Http是只能请求完毕后关闭tcp,下次重新连接的,那是Http1.0,而现在使用的是Http1.1,也就是同一个Tcp连接能够发送多个request,不需要请求完毕就关掉,这样就不用反复的进行TCP的连接,更加的方便快捷。自己设计的服务器当然可以不考虑这些,但是现在的类似于Tomcat的web容器,是需要考虑这种超级多的连接的,因为会有企业使用这种开源的web容器,所以对性能有更加严苛的要求,这也是我认为不应该使用“一个TCP连接一个线程”的原因。
2024-09-18 09:26:27 197
转载 Redisson解决并发问题
如果,你在使用 lock/tryLock 方法时,没有指定超时自动删除时间,那么,就完全依靠你的手动删除( unlock 方法 ),那么,这种情况下你会遇到一个问题:如果你有意或无意中忘记了 unlock 释放锁,那么锁背后的键值对将会在 Redis 中长期存在!因为代表这锁的键值对的键中含有线程 ID ,因此,当你执行上锁操作时,Redisson 会判断你是否是锁的持有者,即,当前线程的 ID 是否和键值对中的线程 ID 一样。当两个不同的线程对同一个锁进行 lock 时,第二个线程的上锁操作会失败。
2024-09-13 17:11:12 117
转载 Redis 篇-深入了解分布式锁 Redisson 原理(可重入原理、可重试原理、主从一致性原理、解决超时锁失效)
那么先判断锁的过期时间 ttl 与 剩余时间 time ,如果 ttl < time ,则类似订阅方法一样的思路,选择等待 ttl 锁的过期时间,当 ttl 过期之后,就会订阅该锁;在之前的基于 setnx 实现的分布式锁是不支持可重入锁,举个例子:线程一来获取锁,使用 setnx 来设置,当设置成功,则获取锁成功了,线程一在获取锁成功之后,再想来获取相同的锁时,则再次执行 setnx 命令,那一定是不可能成功获取,因为 setxn 已经存在了,这就是基于 setnx 来实现分布式锁不可重入锁的核心原因。
2024-09-13 16:32:25 192
转载 谈谈我对java接口方面多线程的理解
这就让我搞不懂了我写的接口又没用多线程,为什么大量请求的时候会有多线程?后来问了AI了解了请求的概念才知道,多线程的并不是自己写的java接口,而是web服务器。2、web服务(tomcat)收到url,创建线程/或用之前的线程,调用java的接口。2、web服务为什么会有多线程,他多线程和我的程序有什么关系?之前一直不理解为什么会有多线程,为什么大批量请求时会出现多线程的情况?既然理解了什么时请求时的多线程,那么就可以跟一些大神的博客/视频,学习。1、为什么大量请求到一个接口会出现并发/多线程?
2024-09-13 10:51:08 64
原创 公司来了个大佬,把FullGC 40次/天优化为10天1次,太秀了~!
这次优化过程让我们深刻认识到,FullGC频繁触发往往与内存泄漏、JVM参数设置不当等问题密切相关。通过逐步排查、dump内存、分析日志等手段,我们最终定位并解决了问题。同时,这次经历也提醒我们,日常运维中应时常关注服务器的GC情况,以便及早发现问题并进行优化。通过这次优化,我们不仅提升了系统性能,还增强了团队的技术实力和协作能力。未来,我们将继续深入学习JVM垃圾回收机制,不断优化系统配置,确保业务稳定运行。
2024-09-02 13:04:38 853
原创 DolphinScheduler 与 DataX优缺点,及技术选型
DolphinScheduler:主要任务调度与任务流管理。DataX:数据迁移与同步。
2024-08-29 08:52:35 284
转载 一文带你看懂DataX离线同步工具(图文并茂,看完就懂)
例如 Channel 中会有一个 Buffer,作为临时的数据交换的缓冲区,而在部分 Reader 和 Writer 的中,也会存在一些 Buffer,为了防止 OOM 等错误,需调大JVM的堆内存。此外,还介绍了DataX的并发控制和调度策略。通常情况下,离线数据同步任务需要每日定时重复执行,故 HDFS上的目标路径通常会包含一层日期,以对每日同步的数据加以区分,也就是说每日同步数据的目标路径不是固定不变的,因此 DataX 配置文件中 HDFS Writer 的path参数的值应该是动态的。
2024-08-27 14:02:12 279
原创 DataX
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
2024-08-27 11:18:18 1195
转载 Hadoop数仓建设之数据同步
阿里数据仓库的数据同步的特点之一是数据来源的多样性。TimeTunnel 高效、稳定地支持阿里巴巴实时数据的同步,每天处理的日志类数据多达几百TB,数据库 binlog解析的实时增量数据同步也有几百TB,在天猫“双 ll”大促活动中,在峰值为每秒十几万笔交易量的极端情况下延迟控制在 3s 以内,有效保障了各种场景的实时数据应用。当前市场上的数据库系统种类很多 ,有行存储的和列存储的,有开 源的和非开源的,每一种数据库的数据类型都略有不同,而数据仓库系统则是集成各类数据源的地方,所以数据类型是统一的。
2024-08-26 09:31:04 55
原创 Hive 记录
1,不管内部表还是外部表,默认存储路径都是 hive/warehouse/xx.db/表名的目录下。1,元数据:Hive将元数据存储在数据库中(meatestore),目前只支持mysql。1,使用HDFS dfs -put '本地数据' 'hive表对应的HDFS目录下'元数据包含什么:表的名字,表的列和分区及其属性,表的数据所在目录。Hive是SQL解析引擎,将SQL转译成MR,在Hadoop上执行。Hive表就是HDFS的目录,数据存储在Hadoop HDFS。2,真实数据,存在在HDFS。
2024-08-20 13:16:53 523
原创 Spark
分布式并行计算框架Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架,借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。
2024-08-15 14:25:57 657
原创 flatMap使用场景
2,处理List<List<Object>> list嵌套,取Object中某熟悉。门店商品对应多个库存地点,匹配库存地点,如果匹配多个,取第一个。1,java8 把多个list合并为一个list。
2024-08-13 17:01:57 267
转载 从ODS到ADS,详解数仓分层!
数据仓库的用途整合公司所有业务数据,建立统一的数据中心产生业务报表,用于作出决策为网站运营提供运营上的数据支持可以作为各个业务的数据源,形成业务数据互相反馈的良性循环分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果开发数据产品,直接或间接地为公司盈利数仓运行简图数据集市与数仓的区别数据集市(Data Market):是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。本文介绍的是如何理解数据仓库中各个分层的作用。
2024-08-06 11:27:29 68
原创 CompletableFuture thenAccept thenApply 区别
thenAccept返回,表示处理结果后不返回新的结果;而thenApply返回,其中U是计算函数的返回类型,表示处理结果后返回新的计算结果。thenAccept适合于处理结果但不需要返回任何新的计算结果的场景;而thenApply则适合于处理结果,并且需要返回一个新的计算结果供后续操作使用。
2024-07-25 17:01:41 566
原创 java new 对象是一个bean吗,可以自动装配吗
关键字创建的对象通常不被称为“bean”,因为它们没有经过Spring或其他IoC容器的管理和配置。如果要享受Spring框架提供的依赖注入和自动装配功能,需要使用Spring容器管理的bean,这些bean需要按照Spring的规范进行定义和配置,而不是简单地通过。:自动装配是IoC容器(如Spring)提供的一种机制,它可以自动地将一个bean依赖的其他bean注入到它中去,而不需要显式配置每一个依赖关系。这种对象的创建和生命周期完全由你的代码控制,而不涉及Spring的IoC容器。
2024-07-21 11:02:42 392
原创 如何评价《沧浪之水》这本书?
3、在圈子里呆久了,我形成了一种看人看事的眼光,这就是从利益关系去分析一个人对某件事情的态度,这是最可靠的,而友谊人格和道德的眼光都不太牢靠。人活着要解决那一大堆问题,解决问题就要钱,这是怎么也绕不过去的硬道理,比合金钢还硬,这实在是没有办法的事情。这么多年的事实证明了,自己按心愿去做的事,一定不是什么好事,只有使自己难受了,别扭了,才是希望所在。1、我一辈子的经验就是不要做瞎子,要把事情看清楚,也不能做聋子,该听到的信息要听到,但是要做哑巴,看到了听到了心中有数就行了,可千万别张口说什么。
2024-07-11 14:01:00 314
转载 bean三级缓存
一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式。我们看一个简单的 Demo,对标“情况 2”。@Service@Autowired@Service@Autowired这是一个经典的循环依赖,它能正常运行,后面我们会通过源码的角度,解读整体的执行流程。我们再回顾一下 3 级缓存的作用:为“Spring 的单例属性”而生,就是个单例池,用来存放已经初始化完成的单例 Bean;为“解决 AOP”而生,存放的是半成品的 AOP 的单例 Bean;
2024-07-08 11:28:43 112
转载 [Spring Cloud系列]Consul实验篇
当应用服务处于critical状态持续时间health-check-critical-timeout,服务会被迫下线,也就是说health-check-critical-timeout属性是对Consul服务端有用的,对与应用服务来说没有什么用。服务Consul服务重启,应用服务不需要重新注册。TTL方式健康检查,当服务处于critical状态时间超过了health-check-critical-timeout设置的值,则应用服务会被迫下线,并且不可再进行状态的维护。并且应用服务无法再更新自身状态到。
2024-07-04 17:07:44 92
转载 ThreadPoolTaskExecutor @Async
ThreadPoolTaskExecutor 是Spring 中封装的一个类,spring boot中常用 ThreadPoolTaskExecutor 创建线程池,并把它注入到 IOC 容器中,从而可以全局进行使用。如下为使用 ThreadPoolTaskExecutor 创建的自定义配置的 线程池类:// 返回可用处理器的Java虚拟机的数量// 核心池大小// 最大线程数// 队列程度// 线程空闲时间// 线程名字前缀。
2024-07-01 15:00:40 137
转载 Spring Bean生命周期,好像人的一生。。
到这,这篇Bean的生命周期文章就走向destory了,自定义destory方法——回顾一下这篇文章的“一生”。Bean的生命周期大致可以分为四个阶段:实例化、属性赋值、初始化、销毁,对应人生的出生、登记、成长、离世。Bean生命周期中可以有很多扩展,就像人生的走向,会受很多影响,社会的环境、自身的选择、自己的努力。
2024-06-20 16:40:12 54
转载 搞定mysql的 行转列(7种方法) 和 列转行
比较抽象,难以理解。(2)IF(subject=‘语文’,score,0) 作为条件,即对所有subject='语文’的记录的score字段进行SUM()、MAX()、MIN()、AVG()操作,如果score没有值则默认为0。INSERT INTO tb_score(userid,subject,score) VALUES ('001','语文',90);INSERT INTO tb_score(userid,subject,score) VALUES ('003','语文',70);
2024-06-14 14:02:57 1814
转载 5 种注册中心
服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。服务消费者(RPC Client):在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。服务注册中心(Registry)
2024-06-11 15:51:10 389
原创 企业微信token有效期每次都是7200秒,难道不刷新么?困扰我很久了?
如题,企业微信的access_token获取结果不同于微信公众号。即:微信公众号每次获取后,之前的token就会自动失效。而企业微信不同,它获取之后,在有效期内(同微信公众号一样,也是7200秒),再次获取时还是这个token值。那么问题来了,如果每次过期前(比如7100秒时)就刷新一下,又延长了2个小时的有效期,这样的话这个token值就会永远不变么?显然又不是这样,有时获取的时还会随时变化。所以这和获取之后的“”值又相矛盾,求解惑。
2024-06-07 16:53:58 471 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人