设计模式的七原则

设计模式的原则:设计模式为什么这样做的依据单一职责一个类值负责一项职责不一定是类级别的单一职责,也可以是方法级别来遵从单一职责核心思想:降低类的复杂度作用:提高类的可读性与可维护性;降低变更的风险;只有代码足够简单,才能违反单一职责接口隔离当一个接口的很多实现类,它们需要实现该接口的所有方法,但是这些实现类的很多方法不会被使用,那么这些方法就没有任何意义了这个时候,就有必要拆分接口了最小接口:实现类的方法都会被使用的接口定义:依赖倒转父类不能依赖子类,二者
分类: 其他 发布时间: 11-18 09:12 阅读次数: 0

关于uml类图

UML类图名称:统一建模语言rational rose,画图,也有插件可以进行交流的时候,用uml图画图就很好类图是uml中的一种,是比较核心的类图中的关系依赖类中用到了对方类的成员属性方法的返回类型方法接收的参数方法中使用到基本上所有关系都是以依赖的特例泛化(继承)实际就是继承,是依赖的特例实现实现了接口也是依赖的特例关联是成员属性的一种依赖具有导航型,如单向关系,双向关系有多重性,1-n,1-1很像数据库中两个实体的对应关系聚合
分类: 其他 发布时间: 11-18 09:12 阅读次数: 0

单例模式的8种实现方式 优缺点分析

何为单例模式保证在整个软件的系统中,对整个类只能存在一个对象实例,并且提供一个取得该对象的方法(一般是静态)有多种方式实现静态常量饿汉式构造器私有化本类内部创建对象实例(final static)提供一个公有的静态方法,返回对象实例优点: 简单,在类加载的时候就完成实例化,避免了线程同步问题缺点: 没有实现懒加载,可能造成未使用,但已经加载了,则造成内存浪费静态代码块饿汉式和上面那个没什么区别。。。还不如上面呢,代码行数增加了,国企狂喜线程不安全的懒..
分类: 其他 发布时间: 11-18 09:12 阅读次数: 0

spark shuffle过程详解,相关优化

Spark中的shuffle过程与Mapreduce的Shuffle过程很多概念都很类似。在spakr中,如果发生了宽依赖,前一个stage 的 ShuffleMapTask 进行 shuffle write, 把数据存储在 blockManager 上面, 并且把数据位置元信息上报到 driver 的 mapOutTrack 组件中, 下一个 stage 根据数据位置元信息, 进行 shuffle read, 拉取上个stage 的输出数据。在spark目前的版本中,主要有两种shuffle:Has
分类: 其他 发布时间: 11-18 09:12 阅读次数: 0

docker镜像相关原理,镜像构建,Dockerfile常用命令

docker镜像实际上一层一层的文件系统组成,称为unionFS(联合文件系统)。bootfs主要包含bootloader和kernel,bootloader加载kernel,Linux系统启动的时候会加载bootfs文件系统,docker镜像的最底层就是bootfs。这一层与我们典型的Linux系统是一样的,包含boot加载器和内核,当boot加载完之后,整个内核都在内存中了,此时内存的使用权由bootfs转交给内核,系统也会在此时卸载bootfs。rootfs,在bootfs之上,包含典型的linu
分类: 其他 发布时间: 11-18 09:11 阅读次数: 0

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
分类: 其他 发布时间: 11-18 09:11 阅读次数: 0

springboot redis Template使用,数据乱码解决

springboot提供了redis客户端,可以很方便的和springboot进行集成,一般在pom中引入:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependenc
分类: 其他 发布时间: 11-18 09:11 阅读次数: 0

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
分类: 其他 发布时间: 11-18 09:11 阅读次数: 0

消息中间件选型,kafka和rabbitmq如何选择

在我们程序设计中,经常会涉及到消息消息中间件MQ的使用,市面上比较常用的一般有kafka和rabbitmq,那么这两者如何选择呢 ?
分类: 其他 发布时间: 11-18 09:10 阅读次数: 0

HDFS架构原理和读写流程分析,数据完整性,HA,fsimage,editlog

HDFS全称为Hadoop Distributed File System,是hadoop分布式文件系统的简称,也是hadoop的核心。数据最小存储粒度按照块存储。在HDFS中主要有如下几个角色: NameNode,DataNode,SecondaryNameNode,Client
分类: 其他 发布时间: 11-18 09:10 阅读次数: 0

TCP三次握手详解,滑动窗口,拥塞窗口,网络包路由过程,全连接队列,半连接队列

众所周知,网络分层有传统的OSI七层模型和后来的基于TCP/IP的四层模型,这里面各层的作用如下:那么在一次网络的传输过程中具体的流程是怎么样的,我们先从一个数据包的传输说起(以TCP为例):TCP协议根据上层应用提供的信息生成TCP报文TCP报文在交由下面的IP层(网络层)进行处理,委托IP模块将TCP报文封装成网络包发送给对应的接收端:IP协议里需要有源IP和目标IP,这个在整个的传输过程中都是不变的对于源IP来说,就是发送者的IP,但是对于一台服务器来说,可能存在多个网卡,即存在多
分类: 其他 发布时间: 11-18 09:10 阅读次数: 0

springboot源码研究actuator,自定义actuator路径

我们知道,当我们在springboot项目中引入了actuator模块之后,可以通过暴露的端口来获取系统相关信息: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>如
分类: 其他 发布时间: 11-18 09:10 阅读次数: 0

spring cloud config实现原理,刷新

我们在使用spring cloud config的时候或者相关类似配置中心,都很想知道客户端是怎么实现将配置中心的配置注入到当前spring的上线文的。本文分析的spring clod版本是2.1.11开始之前,先回顾以下之前写的这篇文章Spring cloud读取bootstrap配置过程应该知道在spring中,是将所有的配置,抽象成了一个Enviroment类来承载这些配置的,所谓的配置中心其实都是在ApplicationContext实例化之后,将第三方的配置加载导入到environment中然
分类: 其他 发布时间: 11-18 09:09 阅读次数: 0

Linux常用网络相关命令

ifconfignetstattcpdumppingcurlwget
分类: 其他 发布时间: 11-18 09:09 阅读次数: 0

java中类加载器ClassLoader,双亲加载机制,启动类加载器,应用类加载器,线程上下文类加载器

spring cloud中当配置中心刷新时,可以不停止应用而
分类: 其他 发布时间: 11-18 09:09 阅读次数: 0

docker网络原理,k8s网络原理

Docker中网络相关研究
分类: 其他 发布时间: 11-18 09:09 阅读次数: 0

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
分类: 其他 发布时间: 11-18 09:08 阅读次数: 0

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:...
分类: 其他 发布时间: 11-18 09:08 阅读次数: 0

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
分类: 其他 发布时间: 11-18 09:08 阅读次数: 0

私有镜像仓库harbor镜像缓存proxy cache功能使用

在harbor 2.1开始,提供了镜像缓存的功能,当需要一些常用的公用镜像时但本地私有镜像没有时,可以通过proxy cache功能去公有的镜像仓库下载到本地然后使用,具体配置使用如下:登录私有harbor进行配置:这样在harbor端就配置完成,然后是使用。当我们需要一个公有镜像但是本地没有的时候,我们可以通过如下方式访问:docker pull ${harbor_server_name}/${proxy_project}/google/pause:latest如果是官方镜像或者单
分类: 其他 发布时间: 11-18 09:08 阅读次数: 0