单例模式的8种实现方式 优缺点分析
何为单例模式保证在整个软件的系统中,对整个类只能存在一个对象实例,并且提供一个取得该对象的方法(一般是静态)有多种方式实现静态常量饿汉式构造器私有化本类内部创建对象实例(final static)提供一个公有的静态方法,返回对象实例优点: 简单,在类加载的时候就完成实例化,避免了线程同步问题缺点: 没有实现懒加载,可能造成未使用,但已经加载了,则造成内存浪费静态代码块饿汉式和上面那个没什么区别。。。还不如上面呢,代码行数增加了,国企狂喜线程不安全的懒..
spark shuffle过程详解,相关优化
Spark中的shuffle过程与Mapreduce的Shuffle过程很多概念都很类似。在spakr中,如果发生了宽依赖,前一个stage 的 ShuffleMapTask 进行 shuffle write, 把数据存储在 blockManager 上面, 并且把数据位置元信息上报到 driver 的 mapOutTrack 组件中, 下一个 stage 根据数据位置元信息, 进行 shuffle read, 拉取上个stage 的输出数据。在spark目前的版本中,主要有两种shuffle:Has
docker镜像相关原理,镜像构建,Dockerfile常用命令
docker镜像实际上一层一层的文件系统组成,称为unionFS(联合文件系统)。bootfs主要包含bootloader和kernel,bootloader加载kernel,Linux系统启动的时候会加载bootfs文件系统,docker镜像的最底层就是bootfs。这一层与我们典型的Linux系统是一样的,包含boot加载器和内核,当boot加载完之后,整个内核都在内存中了,此时内存的使用权由bootfs转交给内核,系统也会在此时卸载bootfs。rootfs,在bootfs之上,包含典型的linu
impala中常用SQL操作,建表,增加分区,增加统计信息,增加字段,修改字段信息,impala-shell使用
impala中常用SQL操作:建表并创建分区,指定存储类型create EXTRENAL table IF NOT EXISTS testDB.testTable(a INT,b BIGINT,c STRING,d FLOAT,e DOUBLE,f BOOLEAN) PARTITIONED BY (year INT,month INT,day INT)stored as parquet从指定位置导入表:CREATE table testDB.testTable(a I
springboot redis Template使用,数据乱码解决
springboot提供了redis客户端,可以很方便的和springboot进行集成,一般在pom中引入:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependenc
java8中stream().collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator)说明
java8中提供了Lambda表达式,常用的操作如下:list.stream().collect()来进行操作,collect中传入的参数如下:<R> R collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner);Supplier 提供容器,供后续ac
HDFS架构原理和读写流程分析,数据完整性,HA,fsimage,editlog
HDFS全称为Hadoop Distributed File System,是hadoop分布式文件系统的简称,也是hadoop的核心。数据最小存储粒度按照块存储。在HDFS中主要有如下几个角色: NameNode,DataNode,SecondaryNameNode,Client
TCP三次握手详解,滑动窗口,拥塞窗口,网络包路由过程,全连接队列,半连接队列
众所周知,网络分层有传统的OSI七层模型和后来的基于TCP/IP的四层模型,这里面各层的作用如下:那么在一次网络的传输过程中具体的流程是怎么样的,我们先从一个数据包的传输说起(以TCP为例):TCP协议根据上层应用提供的信息生成TCP报文TCP报文在交由下面的IP层(网络层)进行处理,委托IP模块将TCP报文封装成网络包发送给对应的接收端:IP协议里需要有源IP和目标IP,这个在整个的传输过程中都是不变的对于源IP来说,就是发送者的IP,但是对于一台服务器来说,可能存在多个网卡,即存在多
springboot源码研究actuator,自定义actuator路径
我们知道,当我们在springboot项目中引入了actuator模块之后,可以通过暴露的端口来获取系统相关信息: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>如
spring cloud config实现原理,刷新
我们在使用spring cloud config的时候或者相关类似配置中心,都很想知道客户端是怎么实现将配置中心的配置注入到当前spring的上线文的。本文分析的spring clod版本是2.1.11开始之前,先回顾以下之前写的这篇文章Spring cloud读取bootstrap配置过程应该知道在spring中,是将所有的配置,抽象成了一个Enviroment类来承载这些配置的,所谓的配置中心其实都是在ApplicationContext实例化之后,将第三方的配置加载导入到environment中然
centos离线二进制安装kubernetes和docker
本文记录自己在centos7下离线安装kubernetes1.18.20,有需要的人可以参考。首先下载相关rpm包:wget https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/16f7bea4bddbf51e2f5582bce368bf09d4d1ed98a82ca1e930e9fe183351a653-kubectl-1.18.20-0.x86_64.rpm -O kubectl-1.18.20
kubernetes集群中pod显示STATUS为Terminating
在创建deployment后,发现部分pod状态为Terminating:kubectl get pods:进行如下操作,强制删除Terminating状态的pod:kubectl delete pod nginx-deployment-d595bf646-9tqpj --force --grace-period=0 -n default再次查看:kubectl get pds:...
centos离线安装Harbor
本文记录自己在centos7上离线安装Harbor过程,其中借鉴了不少网上的资源,如有重复拷贝请联系。现在机器上安装docker,如果不知道请看: centos离线二进制安装kubernetes和docker安装环境如下:组件版本docker19.03.9docker-compose1.28.6harbor2.1.6首先下载安装docker-composewget https://github.com/docker/compose/releases/dow
私有镜像仓库harbor镜像缓存proxy cache功能使用
在harbor 2.1开始,提供了镜像缓存的功能,当需要一些常用的公用镜像时但本地私有镜像没有时,可以通过proxy cache功能去公有的镜像仓库下载到本地然后使用,具体配置使用如下:登录私有harbor进行配置:这样在harbor端就配置完成,然后是使用。当我们需要一个公有镜像但是本地没有的时候,我们可以通过如下方式访问:docker pull ${harbor_server_name}/${proxy_project}/google/pause:latest如果是官方镜像或者单
今日推荐
周排行