- 博客(315)
- 资源 (72)
- 收藏
- 关注

原创 老猿说说-AbstractQueuedSynchronizer(2)
本章我们主要聊下如何释放锁和同步队列两大部分。1 释放锁释放锁的触发时机就是我们常用的 Lock.unLock () 方法,目的就是让线程释放对资源的访问权(流程见整体架构图紫色路线)。释放锁也是分为两类,一类是排它锁的释放,一类是共享锁的释放,我们分别来看下。1.1 释放排它锁 release排它锁的释放就比较简单了,从队头开始,找它的下一个节点,如果下一个节点是空的,就会从尾开始,一直找到状态不是取消的节点,然后释放该节点,源码如下:// unlock 的基础方法public final
2020-10-14 09:45:34
87634
1

原创 老猿说说-AbstractQueuedSynchronizer(1)
引导AbstractQueuedSynchronizer中文翻译叫做同步器,简称AQS,是各种各样锁的基础,比如说 ReentrantLock、CountDownLatch等等,这些我们经常用的锁底层实现都是AQS,所以学好AQS对于后面理解锁的实现是非常重要的。锁章节的内容是这么安排的:AQS源码非常多,我们会分成两个小节来说,先把底层原理弄清楚;我们平时用不到AQS,只会接触到ReentrantLock、CountDownLatch这些锁,我们以两个锁为例子,讲解下源码,因为AQS只要弄
2020-10-13 14:40:59
138971

原创 老猿说说-ConcurrentHashMap
1 类注释我们从类注释上大概可以得到如下信息:所有的操作都是线程安全的,我们在使用时,无需再加锁;多个线程同时进行put、remove等操作时并不会阻塞,可以同时进行,和HashTable不同,HashTable在操作时,会锁住整个Map;迭代过程中,即使Map结构被修改,也不会抛ConcurrentModificationException异常;除了数组+链表+红黑树的基本结构外,新增了转移节点,是为了保证扩容时的线程安全的节点;提供了很多Stream流式方法,比如说:forEach、sea
2020-10-12 11:36:13
38891

原创 老猿说说-ArrayList
1 概述ArrayList 整体架构比较简单,就是一个数组结构比如:长度为10的数组,从1开始计数,index表示数组的下标,从0开始计数,elementData表示数组本身,源码中除了这两个概念,还有以下三个基本概念:DEFAULT_CAPACITY表示数组的初始大小,默认是10,这个数字要记住;size表示当前数组的大小,类型int,没有使用volatile修饰,非线程安全的;modCount统计当前数组被修改的版本次数,数组结构有变动,就会+1。类注释看源码,首先要看类注释,我们看
2020-10-09 11:37:04
39676
7

转载 Mac变卡顿,优化性能
当调整窗口大小,同时按住“Option”键,可以从中央调整大小同时按住“Shift”键时,可以按比例调整大小。同时按住这两个键,那么既成比例,又从中央调整大小1.关闭无用动画最小化效果:选缩放 而不是神奇效果放大选项也取消2.开启减少透明度在辅助功能的显示器选项中选择减少透明度以提高系统流畅度。3.清空浏览器垃圾4.升级内存5.善用活动监视器Mac ...
2019-08-14 11:33:21
8552

转载 UML类图
UML类图与类的关系详解虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association...
2019-06-04 14:22:44
7776

转载 dubbo2.7.x
自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的Incubator Dubbo。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache ...
2019-06-04 09:21:56
1126

转载 python lambda
lambda函数的语法只包含一个语句,如下:lambdaarg1,arg2,.....argn:expression(主要是看下面的例子)代码示例:#-*- coding:utf-8 -*-#__author__ = "www.iplaypy.com" # 普通python函数def func(a,b,c): return a+b+c print func...
2019-05-23 17:09:55
4880
1

转载 mac系统终端sudo免输入密码技能get
mac系统终端sudo免输入密码技能get1.需要在/etc/sudoers中配置。这个文件的权限是r/r/n,配置之前需要加写权限。 1 sudochmodu-w/etc/sudoers 2.打开命令窗口sudo visudo 或者 sudo vi /etc/sudoers按i(insert)开启插入编辑模式将 #%adm...
2019-05-22 17:43:45
13235
1

转载 /bin/java: No such file or directory
This answer is applicable for Hadoop version 2.6.0 and earlier. Disabling SIP and creating a symbolic link does provide a workaround. A better solution is to fix the hadoop-config.sh so it picks up yo...
2019-05-13 20:31:47
13231

转载 python3-多线程
一、threading模块multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性。1.开启线程的两种方式(同Process)方法一from threading import Threadimport timedef sayhi(name): time.sleep(2) print('%s say hello' ...
2019-02-16 16:30:33
5141
原创 Koordinator-Metric查询
以CollectAllPodMetricsLast()举例,看看koordinator怎样使用tsdb进行查询。
2025-03-29 18:14:11
315
原创 Koordinator-QOSManager
构建opt,包含cgroupReader、statesInformer、metric缓存、eventRecorder、k8s客户端、驱逐版本、Qos配置、metricAdvisor配置。初始化eventRecord、cgroupReader、evictor。构建context,包含evictor和策略map。
2025-03-29 12:37:23
233
原创 Koordinator-NodeMetricInformer
核心方法collectMetrics(),采集nodeMetricInfo, podMetricInfo, prod。把采集的数据放入nodeMetricStatus,node对应的更新NodeMetric CR。nodeMetricInformer也在这里进行了Start()继续往下看,stateInformer启动plugin。一开始的时候作为一个Plugin进行了初始化。nodeMetricInformer在。再看下nodeMetric的数据结构。
2025-03-29 12:36:32
232
原创 Koordinator-Predict
遍历所有的pair,最大检查个数和间隔时间判断下,然后调用model的SaveToCheckpointer方法。目前只看到了怎样把数据放入到model中,还没有看到怎样去使用model数据。获取node最近cpu/mem使用率,更新nodeid model。不存在对应model则设置一下model,调用AddSample()遍历所有的model,若上次更新信息大于配置的过期时长,则删除。更新node priority class model。接下来去找下哪里使用了model。遍历所有的model。
2025-03-29 12:35:39
381
原创 版本号后面的字母含义
RC:版本 (Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本。Release是发行、发布的意思。Release.Candidate.就是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错!GA版本在很多软件下载的时候,你会发觉标识为GA或者CRx等。比如MySQL和JBoss都采用这种标识。那什么是GA呢。GA是GenerallyAvailable的缩写,意思.
2021-02-18 17:37:36
2999
原创 线程池面试题
#md#1 面试题1.1 创建子线程时,子线程是得不到父线程的 ThreadLocal,有什么办法可以解决这个问题?答:这道题主要考察线程的属性和创建过程,可以这么回答。可以使用 InheritableThreadLocal 来代替 ThreadLocal,ThreadLocal 和 InheritableThreadLocal 都是线程的属性,所以可以做到线程之间的数据隔离,在多线程环境下我们经常使用,但在有子线程被创建的情况下,父线程 ThreadLocal 是无法传递给子线程的,但 Inhe
2020-12-22 09:43:44
47633
原创 Future、ExecutorService
1 整体架构画了一个关于线程 API 之间关系的依赖图,如下:在上一章节,我们说了 Thread 和 Runnable,本小节我们按照这个图把剩下的几个 API 也说完,然后把 API 之间的关系理清楚。为了方便大家更好的理解,我们首先看一个 demo,这个场景说的是我们往线程池里面提交一个有返回值的线程,代码如下:// 首先我们创建了一个线程池ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 3, 0L, TimeUnit.MILL
2020-12-22 09:36:47
46914
原创 kudu坑1
坑1: Caused by: org.apache.kudu.client.NoLeaderFoundExceptionCaused by: org.apache.kudu.client.NoLeaderFoundException: Master config (192.168.1.117:7051) has no leader.Exceptions received: org.apache.kudu.client.RecoverableException:[peer master-192.1..
2020-11-25 15:05:36
844
转载 TIME_WAIT、CLOSE_WAIT原因,危害,如何避免
前言请说说你对TCP连接中time_wait状态的理解解答:先上TCP的状态变迁图这幅图来自《TCP IP详解卷1:协议 原书第2版中文》13.5 TCP状态转换图这幅图来自《UNIX网络编程,卷1:套接字联网API》2.6.4 TCP状态转换图1. time_wait状态如何产生?由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一个ACK之后会进入time_wait的状态,也就说该发送方会保持2MSL时间之后才会回到初始状态。MSL值得是数据包在...
2020-11-24 17:50:44
1667
原创 老猿说说-Thread
引导语从本章开始我们开始学习线程的知识,线程是非常有趣的一个章节,大多数同学对于线程 API,属于不用就忘,到用时需要百度的情况,希望通过本小节的源码阅读,能够加深对线程的印象。本小节主要三章,本章主要说线程的基本概念、使用姿势、Thread 和 Runnable 的源码;Future、ExecutorService 源码解析章节主要说异步线程执行;押宝线程源码面试题章节主要说说常遇到的源码面试题。由于线程的概念很多,所以本章会先介绍很多线程的基本概念,说清楚后再解析源码,不然有些同学会看不懂,大家见
2020-11-24 10:12:11
45931
原创 队列面试题
1 面试题1.1 说说你对队列的理解,队列和集合的区别。答:对队列的理解:首先队列本身也是个容器,底层也会有不同的数据结构,比如 LinkedBlockingQueue 是底层是链表结构,所以可以维持先入先出的顺序,比如 DelayQueue 底层可以是队列或堆栈,所以可以保证先入先出,或者先入后出的顺序等等,底层的数据结构不同,也造成了操作实现不同;部分队列(比如 LinkedBlockingQueue )提供了暂时存储的功能,我们可以往队列里面放数据,同时也可以从队列里面拿数据,两者可以同时进
2020-11-24 10:03:49
46404
原创 rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
解决办法:在rpm 语句后面加上 --force --nodeps就可以了。例如sudo rpm -ivh python3-libs-3.6.8-13.el7.x86_64.rpm --force --nodeps
2020-11-23 19:05:15
11517
原创 老猿说说-SynchronousQueue
引导语SynchronousQueue 是比较独特的队列,其本身是没有容量大小,比如我放一个数据到队列中,我是不能够立马返回的,我必须等待别人把我放进去的数据消费掉了,才能够返回。SynchronousQueue 在消息队列技术中间件中被大量使用,本文就来从底层实现来看下 SynchronousQueue 到底是如何做到的。1 整体架构SynchronousQueue 的整体设计比较抽象,在内部抽象出了两种算法实现,一种是先入先出的队列,一种是后入先出的堆栈,两种算法被两个内部类实现,而直接对外的
2020-11-19 10:06:56
122649
5
原创 老猿说说-LinkedBlockingQueue
引导语说到队列,大家的反应可能是我从来都没有用过,应该是不重要的 API 吧。如果这么想,那就大错特错了,我们平时使用到的线程池、读写锁、消息队列等等技术和框架,底层原理都是队列,所以我们万万不可轻视队列,队列是很多高级 API 的基础,学好队列,对自己深入 Java 学习非常重要。本文主要以 LinkedBlockingQueue 队列为例,详细描述一下底层具体的实现。1 整体架构LinkedBlockingQueue 中文叫做链表阻塞队列,这个命名很好,从命名上就知道其底层数据结构是链表,并且
2020-11-19 09:21:10
51467
原创 vue中v-on支持的事件总结
资源事件事件名称 何时触发 error 资源加载失败时。 abort 正在加载资源已经被中止时。 load 资源及其相关资源已完成加载。 beforeunload window,document 及其资源即将被卸载。 unload 文档或一个依赖资源正在被卸载。 网络事件事件名称 何时触发 online 浏览器已获得网络访问。 offline 浏览器已失去网络访问。 焦点事件事件名称 何时触发...
2020-11-17 16:19:29
1627
原创 老猿说说-CopyOnWriteArrayList
引导语在 ArrayList 的类注释上,JDK 就提醒了我们,如果要把 ArrayList 作为共享变量的话,是线程不安全的,推荐我们自己加锁或者使用 Collections.synchronizedList 方法,其实 JDK 还提供了另外一种线程安全的 List,叫做 CopyOnWriteArrayList,这个 List 具有以下特征:线程安全的,多线程环境下可以直接使用,无需加锁;通过锁 + 数组拷贝 + volatile 关键字保证了线程安全;每次数组操作,都会把数组拷贝一份出来,在新
2020-11-17 11:04:25
73291
原创 并发List/Map面试题
#md#1 CopyOnWriteArrayList 相关1.1 和 ArrayList 相比有哪些相同点和不同点?答:相同点:底层的数据结构是相同的,都是数组的数据结构,提供出来的 API 都是对数组结构进行操作,让我们更好的使用。不同点:后者是线程安全的,在多线程环境下使用,无需加锁,可直接使用。1.2 CopyOnWriteArrayList 通过哪些手段实现了线程安全?答:主要有:1. 数组容器被 volatile 关键字修饰,保证了数组内存地址被任意线程修改后,都会通知到其他线程;对
2020-11-17 10:41:31
38065
原创 老猿说说-ArrayBlockingQueue
#md#引导语本小节我们来介绍本章最后一个队列:ArrayBlockingQueue。按照字面翻译,中文叫做数组阻塞队列,从名称上看,我们就比较清楚此阻塞队列底层使用的是数组。一说到数组,大家可能会想到 ArrayList 和 HashMap,举新增场景来说 ArrayList 通过 size ++ 找到新增的数组下标位置,HashMap 通过 hash 算法计算出下标位置,那么 ArrayBlockingQueue 是不是也是这两种方法呢?都不是,ArrayBlockingQueue 使用的是一种非常
2020-11-16 09:51:12
41072
转载 基于 Flink SQL CDC 的实时数据同步方案
Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的数据同步方案,基于 Flink CDC 同步的解决方案以及更多的应用场景和 CDC 未来开发规划等方面进行介绍和演示。1、传统数据同步方案2、基于 Flink SQL CDC 的数据同步方案(Demo)3、Flink SQL CDC 的更多应用场景4、Flink SQL CDC 的未来规划传统的数据同步
2020-11-10 17:56:42
1278
1
原创 kafka0.8-socketserver
class SocketServer(val brokerId: Int, val host: String, val port: Int, val numProcessorThreads: Int, val maxQueuedRequests: ...
2020-11-10 13:11:33
153
原创 句柄自动释放问题
FileChannel没有自动释放!!!!其他的垃圾回收会自动释放import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ch...
2020-11-10 13:11:05
667
原创 kafka源码环境
本文主要讲述的是如何搭建Kafka的源码环境,主要针对的Windows操作系统下IntelliJ IDEA编译器,其余操作系统或者IDE可以类推。1.安装和配置JDK确认JDK版本至少为1.7,最好是1.8及以上。使用java -version命令来查看当前JDK的版本,示例如下: C:\Users\hidden> java -versionjava versio...
2020-11-10 13:10:51
266
原创 hadoop日常运维
日常运维 升级 问题处理方法日常运维进程管理由于配置文件的更改,需要重启生效,或者是进程自己因某种致命原因终止,或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动,或者是增删节点过程中的需要,进程的关闭与启动,使用hadoop-daemon.sh start|stop datanode/namenode/journalnode/zkfcyarn-da...
2020-11-10 13:10:38
463
原创 hive1.2.2安装
Hive是Hadoop组态中的数据仓库,本质是将sql语句转换为MapReduce任务,所以Hive只是一个解析引擎,它的数据存储在hdfs上,元数据信息依托mysql数据库。在这里有一个小问题,为什么需要mysql关系数据库,因为hdfs存储的只是数据信息,而建表的时候是需要列名来查询的,因此要用mysql来建立表信息,当然也可以用其他的关系型数据库。在这里依托mysql数据库搭建Hive组件。...
2020-11-10 13:10:29
188
原创 gc配置
JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如2013-05-04T21:53:59.234+0800)-XX:+PrintH...
2020-11-10 13:10:14
179
原创 yarn配置
下面配置的是两个队列default和etl,default队列分配20%的处理能力, etl队列分配80%的处理能力,用户dba只能向default队列提交作业,用户etl只能向etl队列提交作业,dba用户组只能向default队列提交任务:yarn.scheduler.capacity.maximum-am-resource-percent=0.2 --AM可以占用资源队列的最大百分比...
2020-11-10 13:10:04
219
原创 dmesg
一、适用场景:如果发现自己的java进程悄无声息的消失了,几乎没有留下任何线索,那么dmesg一发,很有可能有你想要的。二、具体操作sudo dmesg|grep -i kill | less1去找关键字oom_killer,找到的结果类似如下:[6710782.021013] java invoked oom-killer: gfp_mask=0xd0, order=0,...
2020-11-10 13:09:43
233
原创 Spring Cloud Gateway路由规则
概念解释:Route(路由):路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发Predicate(谓语、断言):路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等Filter(过滤器):过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容Spring Cloud GateWay 工作流程如下所示:客户端向Spring Clou
2020-11-06 10:47:26
2907
HashMap.md
2020-10-12
ArrayList.md
2020-10-12
Spark快速大数据分析PDF
2017-03-28
Nginx模块开发与架构解析
2015-07-24
Go语言·云动力
2015-07-24
Go语言编程
2015-07-24
ADT-21.1.0.zip(eclipse安卓插件)
2015-05-14
ADT15.0.0.zip(安卓开发工具)
2015-05-14
Spark大型集群上的快速和通用数据处理架构(翻译版)
2015-04-29
Storm分布式实时计算模式.pdf(中文)
2015-04-29
实用负载均衡技术:网站性能优化攻略
2015-04-08
Cassandra权威指南
2015-04-08
HTML5高级程序设计(完整版)
2015-04-08
HTTP权威指南(中文版).part2
2015-04-08
HTTP权威指南(中文版)
2015-04-08
protobuf-2.5.0.tar
2015-03-22
axis2-eclipse-codegen-plugin-1.6.2.zip
2014-12-22
axis2-eclipse-service-plugin-1.6.2.zip
2014-12-22
疯狂JAVA讲义+源码.李刚.rar
2014-12-22
jQuery实战中文版+源码
2014-12-01
Hive编程指南.pdf
2014-10-29
storm实时数据处理
2014-10-29
深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)
2014-10-25
apache-solr-3.5.0.jar
2014-10-16
Oracle DBA培训教程:从实践中学习Oracle数据库管理与维护(第2版).part1
2014-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人